From da07f7186ae85ead2cfc8a119da05e1250d725d8 Mon Sep 17 00:00:00 2001 From: Ethan Miller Date: Fri, 22 Apr 2022 14:22:37 -0700 Subject: [PATCH 01/42] Add namespace stub --- src/tablecloth/api/column.clj | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 src/tablecloth/api/column.clj diff --git a/src/tablecloth/api/column.clj b/src/tablecloth/api/column.clj new file mode 100644 index 0000000..82731ab --- /dev/null +++ b/src/tablecloth/api/column.clj @@ -0,0 +1,7 @@ +(ns tablecloth.api.column + (:refer-clojure :exclude [group-by]) + (:require [tech.v3.dataset :as ds] + [tech.v3.dataset.column :as col] + [tech.v3.datatype :as dtype])) + + From 9eae7fc7d0a75a350d46cde3b26c03f630178707 Mon Sep 17 00:00:00 2001 From: Ethan Miller Date: Fri, 22 Apr 2022 14:33:44 -0700 Subject: [PATCH 02/42] Add super naive colunn fn --- src/tablecloth/api/column.clj | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/tablecloth/api/column.clj b/src/tablecloth/api/column.clj index 82731ab..9bbd1d4 100644 --- a/src/tablecloth/api/column.clj +++ b/src/tablecloth/api/column.clj @@ -5,3 +5,11 @@ [tech.v3.datatype :as dtype])) +(defn column + ([] (col/new-column nil [])) + ([data] + (column data {:name nil})) + ([data {:keys [name]}] + (col/new-column data))) + + From cfaffc61bb5c26e8ee02ac5f850bce2115bc851b Mon Sep 17 00:00:00 2001 From: Ethan Miller Date: Sat, 30 Apr 2022 00:28:04 -0700 Subject: [PATCH 03/42] Add some simple column fns --- deps.edn | 2 +- docs/column_exploration.clj | 49 +++++++++++++++++++++++++++++++++++ src/tablecloth/api/column.clj | 12 +++++++-- 3 files changed, 60 insertions(+), 3 deletions(-) create mode 100644 docs/column_exploration.clj diff --git a/deps.edn b/deps.edn index 2a8f2d3..5cecffc 100644 --- a/deps.edn +++ b/deps.edn @@ -4,4 +4,4 @@ ;; generateme/fastmath {:mvn/version "2.1.0"} } - :aliases {:dev {:extra-deps {org.scicloj/clay {:mvn/version "1-alpha9"}}}}} + :aliases {:dev {:extra-deps {org.scicloj/clay {:mvn/version "1-alpha11"}}}}} diff --git a/docs/column_exploration.clj b/docs/column_exploration.clj new file mode 100644 index 0000000..5a354a6 --- /dev/null +++ b/docs/column_exploration.clj @@ -0,0 +1,49 @@ +;; # Tablecloth Column Exploration + +^{:kind/hidden true} +(ns intro + (:require [tablecloth.api :as tc] + [scicloj.clay.v1.api :as clay] + [scicloj.clay.v1.tools :as tools] + [scicloj.clay.v1.tool.scittle :as scittle] + [scicloj.kindly.v2.kind :as kind] + [scicloj.clay.v1.view.dataset] + [nextjournal.clerk :as clerk])) + +^{:kind/hidden true} +(clay/start! {:tools [tools/scittle + tools/clerk]}) + +^{:kind/hidden true} +(comment + (clerk/show!) + + (do (scittle/show-doc! "docs/column_exploration.clj" {:hide-doc? true}) + (scittle/write-html! "docs/column_exploration.html")) + ,) + +;; ## What is this exploration? +;; +;; We want to add a `column` entity to tablecloth that parallels `dataset`. It will make +;; the column a first-class entity within tablecloth. + +;; ## Usage + +(require '[tablecloth.api.column :refer [column] :as col]) + +;; ### Column creation + +;; We can create an empty column like this: + +(column) + +;; We can check if it it's a column. + +(col/column? (column)) + +;; We can create a columns with data in a number of ways + +(column [1 2 3 4]) + +(column (range 10)) + diff --git a/src/tablecloth/api/column.clj b/src/tablecloth/api/column.clj index 9bbd1d4..8ea95b8 100644 --- a/src/tablecloth/api/column.clj +++ b/src/tablecloth/api/column.clj @@ -4,12 +4,20 @@ [tech.v3.dataset.column :as col] [tech.v3.datatype :as dtype])) - (defn column ([] (col/new-column nil [])) ([data] (column data {:name nil})) ([data {:keys [name]}] - (col/new-column data))) + (col/new-column name data))) + + +(defn column? [item] + (= (class item) tech.v3.dataset.impl.column.Column)) + +(defn zeros [n-zeros] + (column (repeatedly n-zeros (constantly 0)))) +(defn ones [n-ones] + (column (repeatedly n-ones (constantly 1)))) From 04c9b41efc9d23a7bb73cae5678857ee45cd45ba Mon Sep 17 00:00:00 2001 From: Ethan Miller Date: Sat, 11 Jun 2022 10:33:08 +0300 Subject: [PATCH 04/42] Add typeof function for column --- src/tablecloth/api/column.clj | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/tablecloth/api/column.clj b/src/tablecloth/api/column.clj index 8ea95b8..e16a5cc 100644 --- a/src/tablecloth/api/column.clj +++ b/src/tablecloth/api/column.clj @@ -21,3 +21,6 @@ (defn ones [n-ones] (column (repeatedly n-ones (constantly 1)))) +(defn typeof [col] + (dtype/elemwise-datatype col)) + From 2eeeee85636cdbda3490f1d35f9a6e494c288899 Mon Sep 17 00:00:00 2001 From: Ethan Miller Date: Sat, 11 Jun 2022 10:33:30 +0300 Subject: [PATCH 05/42] Save work on column exploration doc --- docs/column_exploration.clj | 33 +++++++++++++++++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) diff --git a/docs/column_exploration.clj b/docs/column_exploration.clj index 5a354a6..583cd08 100644 --- a/docs/column_exploration.clj +++ b/docs/column_exploration.clj @@ -11,8 +11,8 @@ [nextjournal.clerk :as clerk])) ^{:kind/hidden true} -(clay/start! {:tools [tools/scittle - tools/clerk]}) +(clay/restart! {:tools [#_tools/scittle + tools/clerk]}) ^{:kind/hidden true} (comment @@ -47,3 +47,32 @@ (column (range 10)) +;; When you do this the types of the resulting array is determined +;; automatically from the items provided. + +(let [int-column (column (range 10))] + (col/typeof int-column)) + +(let [string-column (column ["foo" "bar"])] + (col/typeof string-column)) + +;; ### Basic Operations + +;; Right now we need to use the functional name space from the +;; underlying computation library tech.v3.datatype to operate on +;; columns. + +(require '[tech.v3.datatype.functional :as fun]) + +;; With that imported we can perform a large number of operations: + +(def a (column [20 30 40 50])) +(def b (column (range 4))) + +(fun/- a b) + +(fun/pow a 2) + +(fun/* 10 (fun/sin a)) + +(fun/< a 35) From e5ef8438df435f90689ad0b4b547020a11c50dfb Mon Sep 17 00:00:00 2001 From: Ethan Miller Date: Sat, 11 Jun 2022 10:33:45 +0300 Subject: [PATCH 06/42] Upgrade to latest clay version --- deps.edn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deps.edn b/deps.edn index 5cecffc..81b0f46 100644 --- a/deps.edn +++ b/deps.edn @@ -4,4 +4,4 @@ ;; generateme/fastmath {:mvn/version "2.1.0"} } - :aliases {:dev {:extra-deps {org.scicloj/clay {:mvn/version "1-alpha11"}}}}} + :aliases {:dev {:extra-deps {org.scicloj/clay {:mvn/version "1-alpha14"}}}}} From bcc3582532f0eb83b6a0a9d41a71b0e64179f8f3 Mon Sep 17 00:00:00 2001 From: Ethan Miller Date: Sat, 11 Jun 2022 10:34:28 +0300 Subject: [PATCH 07/42] Save scratch work in column.clj --- src/tablecloth/api/column.clj | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/tablecloth/api/column.clj b/src/tablecloth/api/column.clj index e16a5cc..585b5e2 100644 --- a/src/tablecloth/api/column.clj +++ b/src/tablecloth/api/column.clj @@ -24,3 +24,13 @@ (defn typeof [col] (dtype/elemwise-datatype col)) + + +(comment + (-> [1 2 3 4] + (col/new-column ) + meta) + + (def b (col/parse-column :string [1 2 3])) + + ) From fb07581439860609ec806510bf27607532980f15 Mon Sep 17 00:00:00 2001 From: Ethan Miller Date: Sat, 11 Jun 2022 11:44:22 +0300 Subject: [PATCH 08/42] Polishing up existing column fns * added some docstrings * re-organized a little --- src/tablecloth/api/column.clj | 35 +++++++++++++++++------------------ 1 file changed, 17 insertions(+), 18 deletions(-) diff --git a/src/tablecloth/api/column.clj b/src/tablecloth/api/column.clj index 585b5e2..1f70a5e 100644 --- a/src/tablecloth/api/column.clj +++ b/src/tablecloth/api/column.clj @@ -5,32 +5,31 @@ [tech.v3.datatype :as dtype])) (defn column + "Create a `column` from a vector or sequence. " ([] (col/new-column nil [])) ([data] (column data {:name nil})) ([data {:keys [name]}] (col/new-column name data))) +;; Alias for tech.v3.dasetset.column.is-column? +(defn column? + "Return true or false `item` is a column." + [item] + (col/is-column? item)) -(defn column? [item] - (= (class item) tech.v3.dataset.impl.column.Column)) +;; Alias for tech.v3.datatype.elemwise-datatype` +(defn typeof + "Returns the datatype fo the elements within the column `col`." + [col] + (dtype/elemwise-datatype col)) -(defn zeros [n-zeros] +(defn zeros + "Create a new column filled wth `n-zeros`." + [n-zeros] (column (repeatedly n-zeros (constantly 0)))) -(defn ones [n-ones] +(defn ones + "Creates a new column filled with `n-ones`" + [n-ones] (column (repeatedly n-ones (constantly 1)))) - -(defn typeof [col] - (dtype/elemwise-datatype col)) - - - -(comment - (-> [1 2 3 4] - (col/new-column ) - meta) - - (def b (col/parse-column :string [1 2 3])) - - ) From d433c63982dfd218353610c5a68cbb85be1c9426 Mon Sep 17 00:00:00 2001 From: Ethan Miller Date: Tue, 21 Jun 2022 14:29:23 +0300 Subject: [PATCH 09/42] Move column ns into own domain tablecloth.column.api --- docs/column_exploration.clj | 4 ++-- src/tablecloth/{api/column.clj => column/api.clj} | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) rename src/tablecloth/{api/column.clj => column/api.clj} (97%) diff --git a/docs/column_exploration.clj b/docs/column_exploration.clj index 583cd08..fa405b8 100644 --- a/docs/column_exploration.clj +++ b/docs/column_exploration.clj @@ -11,7 +11,7 @@ [nextjournal.clerk :as clerk])) ^{:kind/hidden true} -(clay/restart! {:tools [#_tools/scittle +#_(clay/restart! {:tools [#_tools/scittle tools/clerk]}) ^{:kind/hidden true} @@ -29,7 +29,7 @@ ;; ## Usage -(require '[tablecloth.api.column :refer [column] :as col]) +(require '[tablecloth.column.api :refer [column] :as col]) ;; ### Column creation diff --git a/src/tablecloth/api/column.clj b/src/tablecloth/column/api.clj similarity index 97% rename from src/tablecloth/api/column.clj rename to src/tablecloth/column/api.clj index 1f70a5e..f503585 100644 --- a/src/tablecloth/api/column.clj +++ b/src/tablecloth/column/api.clj @@ -1,4 +1,4 @@ -(ns tablecloth.api.column +(ns tablecloth.column.api (:refer-clojure :exclude [group-by]) (:require [tech.v3.dataset :as ds] [tech.v3.dataset.column :as col] From 6a08d61704b738a878cd0da9da13c5f6d1dfa6bf Mon Sep 17 00:00:00 2001 From: Ethan Miller Date: Tue, 21 Jun 2022 15:34:48 +0300 Subject: [PATCH 10/42] Add tests for `tablecloth.column.api/column` --- test/tablecloth/column/api_test.clj | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 test/tablecloth/column/api_test.clj diff --git a/test/tablecloth/column/api_test.clj b/test/tablecloth/column/api_test.clj new file mode 100644 index 0000000..3530981 --- /dev/null +++ b/test/tablecloth/column/api_test.clj @@ -0,0 +1,12 @@ +(ns tablecloth.column.api-test + (:require [tablecloth.column.api :as api] + [midje.sweet :refer [fact =>]])) + +(fact "`column` returns a column" + (tech.v3.dataset.column/is-column? (api/column)) => true) + +(fact "`column` provides a few ways to generate a column`" + (api/column) => [] + (api/column [1 2 3]) => [1 2 3] + (api/column (list 1 2 3)) =>[1 2 3] + (api/column (range 3)) => [0 1 2]) From 186e7643e0a05a24fdc8398310806b72c6016559 Mon Sep 17 00:00:00 2001 From: Ethan Miller Date: Tue, 21 Jun 2022 15:49:39 +0300 Subject: [PATCH 11/42] Add tests for `zeros` and `ones` --- test/tablecloth/column/api_test.clj | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/test/tablecloth/column/api_test.clj b/test/tablecloth/column/api_test.clj index 3530981..ecd7a2e 100644 --- a/test/tablecloth/column/api_test.clj +++ b/test/tablecloth/column/api_test.clj @@ -10,3 +10,9 @@ (api/column [1 2 3]) => [1 2 3] (api/column (list 1 2 3)) =>[1 2 3] (api/column (range 3)) => [0 1 2]) + +(fact "`zeros` returns a column filled with zeros" + (api/zeros 3) => [0 0 0]) + +(fact "`ones` returns a column filled with ones" + (api/ones 3) => [1 1 1]) From 851819f0d47e53d253b36cdba702d3477c22f110 Mon Sep 17 00:00:00 2001 From: Ethan Miller Date: Tue, 21 Jun 2022 18:53:05 +0300 Subject: [PATCH 12/42] Use api template to write public api --- src/tablecloth/column/api.clj | 47 ++++++++++++---------- src/tablecloth/column/api/api_template.clj | 20 +++++++++ src/tablecloth/column/api/column.clj | 35 ++++++++++++++++ 3 files changed, 81 insertions(+), 21 deletions(-) create mode 100644 src/tablecloth/column/api/api_template.clj create mode 100644 src/tablecloth/column/api/column.clj diff --git a/src/tablecloth/column/api.clj b/src/tablecloth/column/api.clj index f503585..53d6a8e 100644 --- a/src/tablecloth/column/api.clj +++ b/src/tablecloth/column/api.clj @@ -1,35 +1,40 @@ (ns tablecloth.column.api - (:refer-clojure :exclude [group-by]) - (:require [tech.v3.dataset :as ds] - [tech.v3.dataset.column :as col] - [tech.v3.datatype :as dtype])) + ;;Autogenerated from tablecloth.column.api.api-template-- DO NOT EDIT + "Tablecloth Column API" + (:require [tablecloth.column.api.api-template] + [tablecloth.column.api.column])) (defn column "Create a `column` from a vector or sequence. " - ([] (col/new-column nil [])) + ([] + (tablecloth.column.api.column/column )) ([data] - (column data {:name nil})) - ([data {:keys [name]}] - (col/new-column name data))) + (tablecloth.column.api.column/column data)) + ([data options] + (tablecloth.column.api.column/column data options))) -;; Alias for tech.v3.dasetset.column.is-column? -(defn column? + +(defn column? "Return true or false `item` is a column." - [item] - (col/is-column? item)) + ([item] + (tablecloth.column.api.column/column? item))) + + +(defn ones + "Creates a new column filled with `n-ones`" + ([n-ones] + (tablecloth.column.api.column/ones n-ones))) + -;; Alias for tech.v3.datatype.elemwise-datatype` (defn typeof "Returns the datatype fo the elements within the column `col`." - [col] - (dtype/elemwise-datatype col)) + ([col] + (tablecloth.column.api.column/typeof col))) + (defn zeros "Create a new column filled wth `n-zeros`." - [n-zeros] - (column (repeatedly n-zeros (constantly 0)))) + ([n-zeros] + (tablecloth.column.api.column/zeros n-zeros))) + -(defn ones - "Creates a new column filled with `n-ones`" - [n-ones] - (column (repeatedly n-ones (constantly 1)))) diff --git a/src/tablecloth/column/api/api_template.clj b/src/tablecloth/column/api/api_template.clj new file mode 100644 index 0000000..e197ce7 --- /dev/null +++ b/src/tablecloth/column/api/api_template.clj @@ -0,0 +1,20 @@ +(ns tablecloth.column.api.api-template + "Tablecloth Column API" + (:require [tech.v3.datatype.export-symbols :as exporter])) + +(exporter/export-symbols tablecloth.column.api.column + column + column? + typeof + zeros + ones + ) + +(comment + (exporter/write-api! 'tablecloth.column.api.api-template + 'tablecloth.column.api + "src/tablecloth/column/api.clj" + '[] + ) + + ) diff --git a/src/tablecloth/column/api/column.clj b/src/tablecloth/column/api/column.clj new file mode 100644 index 0000000..90dee86 --- /dev/null +++ b/src/tablecloth/column/api/column.clj @@ -0,0 +1,35 @@ +(ns tablecloth.column.api.column + (:require [tech.v3.dataset.column :as col] + [tech.v3.datatype :as dtype])) + +(defn column + "Create a `column` from a vector or sequence. " + ([] + (col/new-column nil [])) + ([data] + (column data {:name nil})) + ([data {:keys [name] + :as options}] + (col/new-column name data))) + +;; Alias for tech.v3.dasetset.column.is-column? +(defn column? + "Return true or false `item` is a column." + [item] + (col/is-column? item)) + +;; Alias for tech.v3.datatype.elemwise-datatype` +(defn typeof + "Returns the datatype fo the elements within the column `col`." + [col] + (dtype/elemwise-datatype col)) + +(defn zeros + "Create a new column filled wth `n-zeros`." + [n-zeros] + (column (repeatedly n-zeros (constantly 0)))) + +(defn ones + "Creates a new column filled with `n-ones`" + [n-ones] + (column (repeatedly n-ones (constantly 1)))) From 1d2cef3d463ce970782514c25adb1d7f18e151a9 Mon Sep 17 00:00:00 2001 From: Ethan Miller Date: Sat, 25 Jun 2022 23:18:50 +0300 Subject: [PATCH 13/42] Write tests against `tablecloth.column.api.column` ns --- test/tablecloth/column/api/column_test.clj | 18 ++++++++++++++++++ test/tablecloth/column/api_test.clj | 18 ------------------ 2 files changed, 18 insertions(+), 18 deletions(-) create mode 100644 test/tablecloth/column/api/column_test.clj delete mode 100644 test/tablecloth/column/api_test.clj diff --git a/test/tablecloth/column/api/column_test.clj b/test/tablecloth/column/api/column_test.clj new file mode 100644 index 0000000..4ee8788 --- /dev/null +++ b/test/tablecloth/column/api/column_test.clj @@ -0,0 +1,18 @@ +(ns tablecloth.column.api.column-test + (:require [tablecloth.column.api.column :refer [column zeros ones]] + [midje.sweet :refer [fact =>]])) + +(fact "`column` returns a column" + (tech.v3.dataset.column/is-column? (column)) => true) + +(fact "`column` provides a few ways to generate a column`" + (column) => [] + (column [1 2 3]) => [1 2 3] + (column (list 1 2 3)) =>[1 2 3] + (column (range 3)) => [0 1 2]) + +(fact "`zeros` returns a column filled with zeros" + (zeros 3) => [0 0 0]) + +(fact "`ones` returns a column filled with ones" + (ones 3) => [1 1 1]) diff --git a/test/tablecloth/column/api_test.clj b/test/tablecloth/column/api_test.clj deleted file mode 100644 index ecd7a2e..0000000 --- a/test/tablecloth/column/api_test.clj +++ /dev/null @@ -1,18 +0,0 @@ -(ns tablecloth.column.api-test - (:require [tablecloth.column.api :as api] - [midje.sweet :refer [fact =>]])) - -(fact "`column` returns a column" - (tech.v3.dataset.column/is-column? (api/column)) => true) - -(fact "`column` provides a few ways to generate a column`" - (api/column) => [] - (api/column [1 2 3]) => [1 2 3] - (api/column (list 1 2 3)) =>[1 2 3] - (api/column (range 3)) => [0 1 2]) - -(fact "`zeros` returns a column filled with zeros" - (api/zeros 3) => [0 0 0]) - -(fact "`ones` returns a column filled with ones" - (api/ones 3) => [1 1 1]) From c81d13cb21e474390b5a71fa6585ec8723341dbd Mon Sep 17 00:00:00 2001 From: Ethan Miller Date: Sun, 26 Jun 2022 11:06:11 +0300 Subject: [PATCH 14/42] Add column exploration html --- docs/column_exploration.html | 3742 ++++++++++++++++++++++++++++++++++ 1 file changed, 3742 insertions(+) create mode 100644 docs/column_exploration.html diff --git a/docs/column_exploration.html b/docs/column_exploration.html new file mode 100644 index 0000000..5b36441 --- /dev/null +++ b/docs/column_exploration.html @@ -0,0 +1,3742 @@ + + + + + +
column_exploration

Tablecloth Column Exploration

What is this exploration?

We want to add a column entity to tablecloth that parallels dataset. It will make the column a first-class entity within tablecloth.

Usage

(require '[tablecloth.column.api :refer [column] :as col])
nil
+

Column creation

We can create an empty column like this:

(column)
#tech.v3.dataset.column[0]
+null
+[]
+

We can check if it it's a column.

(col/column? (column))
true
+

We can create a columns with data in a number of ways

(column [1 2 3 4])
#tech.v3.dataset.column[4]
+null
+[1, 2, 3, 4]
+
(column (range 10))
#tech.v3.dataset.column[10]
+null
+[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
+

When you do this the types of the resulting array is determined automatically from the items provided.

(let [int-column (column (range 10))]
+  (col/typeof int-column))
:int64
+
(let [string-column (column ["foo" "bar"])]
+  (col/typeof string-column))
:string
+

Basic Operations

Right now we need to use the functional name space from the underlying computation library tech.v3.datatype to operate on columns.

(require '[tech.v3.datatype.functional :as fun])
nil
+

With that imported we can perform a large number of operations:

(def a (column [20 30 40 50]))
#'intro/a
+
(def b (column (range 4)))
#'intro/b
+
(fun/- a b)
#array-buffer[4]
+[20, 29, 38, 47]
+
(fun/pow a 2)
#array-buffer[4]
+[400.0, 900.0, 1600, 2500]
+
(fun/* 10 (fun/sin a))
#array-buffer[4]
+[9.129, -9.880, 7.451, -2.624]
+
(fun/< a 35)
#array-buffer[4]
+[true, true, false, false]
+
\ No newline at end of file From 2788e3efb55aff58ebeb76174391f9ed52910984 Mon Sep 17 00:00:00 2001 From: Ethan Miller Date: Sun, 26 Jun 2022 11:44:17 +0300 Subject: [PATCH 15/42] Add `typeof?` function to check datatype of column els --- src/tablecloth/column/api/column.clj | 5 +++++ test/tablecloth/column/api/column_test.clj | 17 ++++++++++++++++- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/src/tablecloth/column/api/column.clj b/src/tablecloth/column/api/column.clj index 90dee86..d983a9c 100644 --- a/src/tablecloth/column/api/column.clj +++ b/src/tablecloth/column/api/column.clj @@ -24,6 +24,11 @@ [col] (dtype/elemwise-datatype col)) +(defn typeof? + "True|false the column's elements are of type `dtype`" + [col dtype] + (= (dtype/elemwise-datatype col) dtype)) + (defn zeros "Create a new column filled wth `n-zeros`." [n-zeros] diff --git a/test/tablecloth/column/api/column_test.clj b/test/tablecloth/column/api/column_test.clj index 4ee8788..b7f4c92 100644 --- a/test/tablecloth/column/api/column_test.clj +++ b/test/tablecloth/column/api/column_test.clj @@ -1,5 +1,5 @@ (ns tablecloth.column.api.column-test - (:require [tablecloth.column.api.column :refer [column zeros ones]] + (:require [tablecloth.column.api.column :refer [column zeros ones typeof?]] [midje.sweet :refer [fact =>]])) (fact "`column` returns a column" @@ -11,6 +11,21 @@ (column (list 1 2 3)) =>[1 2 3] (column (range 3)) => [0 1 2]) +(fact "`column` identifies the type of the elements automatically" + (-> [1 2 3] + (column) + (tech.v3.datatype/elemwise-datatype)) => :int64 + (-> [true false true] + (column) + (tech.v3.datatype/elemwise-datatype)) => :boolean + (-> [1 true false] + (column) + (tech.v3.datatype/elemwise-datatype)) => :object) + +(fact "we can check the type of a column's elements with `typeof?`" + (typeof? (column [1 2 3]) :int64) => true + (typeof? (column [true false]) :boolean) => true) + (fact "`zeros` returns a column filled with zeros" (zeros 3) => [0 0 0]) From 14ca93556399e9f828ebd3b8182ccb253e6b6926 Mon Sep 17 00:00:00 2001 From: Ethan Miller Date: Tue, 5 Jul 2022 11:29:34 +0300 Subject: [PATCH 16/42] Use buffer when creating zeros & ones columns --- src/tablecloth/column/api/column.clj | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/tablecloth/column/api/column.clj b/src/tablecloth/column/api/column.clj index d983a9c..6b93d27 100644 --- a/src/tablecloth/column/api/column.clj +++ b/src/tablecloth/column/api/column.clj @@ -1,6 +1,6 @@ (ns tablecloth.column.api.column (:require [tech.v3.dataset.column :as col] - [tech.v3.datatype :as dtype])) + [tech.v3.datatype :refer [emap]])) (defn column "Create a `column` from a vector or sequence. " @@ -32,9 +32,9 @@ (defn zeros "Create a new column filled wth `n-zeros`." [n-zeros] - (column (repeatedly n-zeros (constantly 0)))) + (column (emap (constantly 0) :int64 (range n-zeros)))) (defn ones "Creates a new column filled with `n-ones`" [n-ones] - (column (repeatedly n-ones (constantly 1)))) + (column (emap (constantly 1) :int64 (range n-ones)))) From 2d1d07ebf30bb0053df68319491b541b84cffe38 Mon Sep 17 00:00:00 2001 From: Ethan Miller Date: Tue, 5 Jul 2022 12:03:44 +0300 Subject: [PATCH 17/42] Use `dtype` alias in ns --- src/tablecloth/column/api/column.clj | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/tablecloth/column/api/column.clj b/src/tablecloth/column/api/column.clj index 6b93d27..f648b21 100644 --- a/src/tablecloth/column/api/column.clj +++ b/src/tablecloth/column/api/column.clj @@ -1,6 +1,6 @@ (ns tablecloth.column.api.column (:require [tech.v3.dataset.column :as col] - [tech.v3.datatype :refer [emap]])) + [tech.v3.datatype :as dtype])) (defn column "Create a `column` from a vector or sequence. " @@ -32,9 +32,9 @@ (defn zeros "Create a new column filled wth `n-zeros`." [n-zeros] - (column (emap (constantly 0) :int64 (range n-zeros)))) + (column (dtype/emap (constantly 0) :int64 (range n-zeros)))) (defn ones "Creates a new column filled with `n-ones`" [n-ones] - (column (emap (constantly 1) :int64 (range n-ones)))) + (column (dtype/emap (constantly 1) :int64 (range n-ones)))) From e5c8322aba36a97fd01e8cc61dd55d252ab657c5 Mon Sep 17 00:00:00 2001 From: Ethan Miller Date: Tue, 5 Jul 2022 12:05:06 +0300 Subject: [PATCH 18/42] Add comment to code snippet generating column api --- src/tablecloth/column/api/api_template.clj | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/tablecloth/column/api/api_template.clj b/src/tablecloth/column/api/api_template.clj index e197ce7..411a6f4 100644 --- a/src/tablecloth/column/api/api_template.clj +++ b/src/tablecloth/column/api/api_template.clj @@ -11,10 +11,9 @@ ) (comment + // Use this to generate the column api (exporter/write-api! 'tablecloth.column.api.api-template 'tablecloth.column.api "src/tablecloth/column/api.clj" - '[] - ) - - ) + '[]) + ,) From e42a3d91d0f097811af0725a1122da03043c6136 Mon Sep 17 00:00:00 2001 From: Ethan Miller Date: Tue, 5 Jul 2022 12:05:46 +0300 Subject: [PATCH 19/42] Fix comment syntax --- src/tablecloth/column/api/api_template.clj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tablecloth/column/api/api_template.clj b/src/tablecloth/column/api/api_template.clj index 411a6f4..4ceedbd 100644 --- a/src/tablecloth/column/api/api_template.clj +++ b/src/tablecloth/column/api/api_template.clj @@ -11,7 +11,7 @@ ) (comment - // Use this to generate the column api + ;; Use this to generate the column api (exporter/write-api! 'tablecloth.column.api.api-template 'tablecloth.column.api "src/tablecloth/column/api.clj" From 35ec1063c616eb5b4cc4baeb75826636939b51f9 Mon Sep 17 00:00:00 2001 From: Ethan Miller Date: Sun, 17 Jul 2022 19:02:18 +0300 Subject: [PATCH 20/42] Use `tech.v3.datatype/const-reader` for `zeros` and `ones` function --- src/tablecloth/column/api/column.clj | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/tablecloth/column/api/column.clj b/src/tablecloth/column/api/column.clj index f648b21..5fcaf56 100644 --- a/src/tablecloth/column/api/column.clj +++ b/src/tablecloth/column/api/column.clj @@ -32,9 +32,9 @@ (defn zeros "Create a new column filled wth `n-zeros`." [n-zeros] - (column (dtype/emap (constantly 0) :int64 (range n-zeros)))) + (column (dtype/const-reader 0 n-zeros))) (defn ones "Creates a new column filled with `n-ones`" [n-ones] - (column (dtype/emap (constantly 1) :int64 (range n-ones)))) + (column (dtype/const-reader 1 n-ones))) From 6e7413b374fed326df3e9037423abae9c46a4eb2 Mon Sep 17 00:00:00 2001 From: Ethan Miller Date: Mon, 14 Nov 2022 00:36:48 -0500 Subject: [PATCH 21/42] Update type interface to use type hierarchy in tablecloth.api.util (#76) * Add ->general-types function * Add a general type :logical * Use type hierarchy in tablecloth.api.utils for `typeof` functions * Add column dev branch to pr workflow * Add tests for typeof * Fix tests for typeof * Return the concrete type from `typeof` * Simplify `concrete-types` fn * Optimize ->general-types by using static lookup * Adjust fns listing types * We decided that the default meaning of type points to the "concrete" type, and not the general type. * So `types` now returns the set of concrete types and `general-types` returns the general types. * Revert "Adjust fns listing types" This reverts commit d93e34fc3449f6a2695a8c7225ddf10e51922262. * Fix `typeof` test to test for concerete types * Reorganize `typeof?` tests * Reword docstring for `typeof?` slightly * Update column api template and add missing `typeof?` * Add commment to `general-types-lookup` * Improve `->general-types` docstring * Add `general-types` fn that returns sets of general types * Adjust util `types` fn to return concrete types --- .github/workflows/prs.yml | 1 + src/tablecloth/api/utils.clj | 61 +++++++++++++++++++++- src/tablecloth/column/api.clj | 9 +++- src/tablecloth/column/api/api_template.clj | 4 +- src/tablecloth/column/api/column.clj | 18 ++++--- test/tablecloth/api/utils_test.clj | 4 ++ test/tablecloth/column/api/column_test.clj | 21 ++++++-- 7 files changed, 105 insertions(+), 13 deletions(-) diff --git a/.github/workflows/prs.yml b/.github/workflows/prs.yml index e9fa913..d6e9b06 100644 --- a/.github/workflows/prs.yml +++ b/.github/workflows/prs.yml @@ -4,6 +4,7 @@ on: pull_request: branches: - master + - ethan/column-api-dev-branch-1 jobs: run-tests: diff --git a/src/tablecloth/api/utils.clj b/src/tablecloth/api/utils.clj index a564fbb..b7d228b 100644 --- a/src/tablecloth/api/utils.clj +++ b/src/tablecloth/api/utils.clj @@ -64,7 +64,44 @@ :numerical #{:int8 :int16 :int32 :int64 :uint8 :uint16 :uint32 :uint64 :long :int :short :byte :float32 :float64 :double :float} - :textual #{:text :string}}) + :textual #{:text :string} + :logical #{:boolean}}) + +;; This lookup is hardcoded as an optimization. Downside: this +;; lookup must be kept up to date. However, so long as `type-sets` +;; is up-to-date it can be generated from that set. +(def ^:private general-types-lookup + {:int32 #{:integer :numerical}, + :int16 #{:integer :numerical}, + :float32 #{:float :numerical}, + :packed-local-time #{:datetime}, + :local-date-time #{:datetime}, + :packed-zoned-date-time #{:datetime}, + :float64 #{:float :numerical}, + :long #{:integer :numerical}, + :double #{:float :numerical}, + :short #{:integer :numerical}, + :packed-local-date-time #{:datetime}, + :zoned-date-time #{:datetime}, + :instant #{:datetime}, + :packed-local-date #{:datetime}, + :int #{:integer :numerical}, + :int64 #{:integer :numerical}, + :local-time #{:datetime}, + :packed-duration #{:datetime}, + :uint64 #{:integer :numerical}, + :float #{:float :numerical}, + :duration #{:datetime}, + :string #{:textual}, + :uint16 #{:integer :numerical}, + :int8 #{:integer :numerical}, + :uint32 #{:integer :numerical}, + :byte #{:integer :numerical}, + :local-date #{:datetime}, + :boolean #{:logical}, + :packed-instant #{:datetime}, + :text #{:textual}, + :uint8 #{:integer :numerical}}) (defn type? ([general-type] @@ -73,11 +110,33 @@ ([general-type datatype] ((type-sets general-type) datatype))) +(defn ->general-types + "Given a concrete `datatype` (e.g. `:int32`), returns the general + set of general types (e.g. `#{:integer numerical}`)." + [datatype] + (general-types-lookup datatype)) + +(defn types + "Returns the set of concrete types e.g. (:int32, :float32, etc)" + [] + (apply clojure.set/union (vals type-sets))) + +(defn general-types + "Returns the set of general types e.g. (:integer, :logical, etc)" + [] + (vals type-sets)) + +(defn concrete-type? + "Returns true if `datatype` is a concrete datatype (e.g. :int32)." + [datatype] + (not (nil? ((types) datatype)))) + (defn- prepare-datatype-set [datatype-columns-selector] (let [k (-> datatype-columns-selector name keyword)] (get type-sets k #{k}))) + (defn- filter-column-names "Filter column names" [ds columns-selector meta-field] diff --git a/src/tablecloth/column/api.clj b/src/tablecloth/column/api.clj index 53d6a8e..78597cb 100644 --- a/src/tablecloth/column/api.clj +++ b/src/tablecloth/column/api.clj @@ -27,11 +27,18 @@ (defn typeof - "Returns the datatype fo the elements within the column `col`." + "Returns the concrete type of the elements within the column `col`." ([col] (tablecloth.column.api.column/typeof col))) +(defn typeof? + "True|false the column's elements are of the provided type `datatype`. + Works with concrete types (e.g. :int32) or general types (e.g. :numerical)." + ([col datatype] + (tablecloth.column.api.column/typeof? col datatype))) + + (defn zeros "Create a new column filled wth `n-zeros`." ([n-zeros] diff --git a/src/tablecloth/column/api/api_template.clj b/src/tablecloth/column/api/api_template.clj index 4ceedbd..8dd6c33 100644 --- a/src/tablecloth/column/api/api_template.clj +++ b/src/tablecloth/column/api/api_template.clj @@ -6,9 +6,9 @@ column column? typeof + typeof? zeros - ones - ) + ones) (comment ;; Use this to generate the column api diff --git a/src/tablecloth/column/api/column.clj b/src/tablecloth/column/api/column.clj index 5fcaf56..4617482 100644 --- a/src/tablecloth/column/api/column.clj +++ b/src/tablecloth/column/api/column.clj @@ -1,6 +1,7 @@ (ns tablecloth.column.api.column (:require [tech.v3.dataset.column :as col] - [tech.v3.datatype :as dtype])) + [tech.v3.datatype :as dtype] + [tablecloth.api.utils :refer [->general-types concrete-type? type?]])) (defn column "Create a `column` from a vector or sequence. " @@ -18,16 +19,19 @@ [item] (col/is-column? item)) -;; Alias for tech.v3.datatype.elemwise-datatype` (defn typeof - "Returns the datatype fo the elements within the column `col`." + "Returns the concrete type of the elements within the column `col`." [col] (dtype/elemwise-datatype col)) (defn typeof? - "True|false the column's elements are of type `dtype`" - [col dtype] - (= (dtype/elemwise-datatype col) dtype)) + "True|false the column's elements are of the provided type `datatype`. Can check + both concrete types (e.g. :int32) or general types (:numerical, :textual, etc)." + [col datatype] + (let [concrete-type-of-els (dtype/elemwise-datatype col)] + (if (concrete-type? datatype) + (= datatype concrete-type-of-els) + (not (nil? (type? datatype concrete-type-of-els)))))) (defn zeros "Create a new column filled wth `n-zeros`." @@ -38,3 +42,5 @@ "Creates a new column filled with `n-ones`" [n-ones] (column (dtype/const-reader 1 n-ones))) + + diff --git a/test/tablecloth/api/utils_test.clj b/test/tablecloth/api/utils_test.clj index 820a4e5..ef40d58 100644 --- a/test/tablecloth/api/utils_test.clj +++ b/test/tablecloth/api/utils_test.clj @@ -134,3 +134,7 @@ => '(4 6 3 6 2 0 5 1 2 4 2)))) +(fact "->general-types describes the set of general types for a concrete datatype" + (sut/->general-types :int32) => #{:integer :numerical} + (sut/->general-types :float32) => #{:float :numerical} + (sut/->general-types :string) => #{:textual}) diff --git a/test/tablecloth/column/api/column_test.clj b/test/tablecloth/column/api/column_test.clj index b7f4c92..a6a3b3e 100644 --- a/test/tablecloth/column/api/column_test.clj +++ b/test/tablecloth/column/api/column_test.clj @@ -1,5 +1,5 @@ (ns tablecloth.column.api.column-test - (:require [tablecloth.column.api.column :refer [column zeros ones typeof?]] + (:require [tablecloth.column.api.column :refer [column zeros ones typeof? typeof]] [midje.sweet :refer [fact =>]])) (fact "`column` returns a column" @@ -22,9 +22,24 @@ (column) (tech.v3.datatype/elemwise-datatype)) => :object) -(fact "we can check the type of a column's elements with `typeof?`" +(fact "`typeof` returns the concrete type of the elements" + (typeof (column [1 2 3])) => :int64 + (typeof (column ["a" "b" "c"])) => :string + (typeof (column [true false])) => :boolean) + +(fact "`typeof?` can check the concerete type of column elements" (typeof? (column [1 2 3]) :int64) => true - (typeof? (column [true false]) :boolean) => true) + (typeof? (column [1 2 3]) :int32) => false + (typeof? (column ["a" "b" "c"]) :string) => true) + +(fact "`typeof?` can check the general type of column elements" + (typeof? (column [1 2 3]) :integer) => true + (typeof? (column [1 2 3]) :textual) => false + (typeof? (column [1.0 2.0 3.0]) :numerical) => true + (typeof? (column [1.0 2.0 3.0]) :logical) => false + (typeof? (column ["a" "b" "c"]) :textual) => true + (typeof? (column ["a" "b" "c"]) :numerical) => false + (typeof? (column [true false true]) :logical) => true) (fact "`zeros` returns a column filled with zeros" (zeros 3) => [0 0 0]) From 5dc5065805e5548d429c5b95e999efb899978f91 Mon Sep 17 00:00:00 2001 From: Ethan Miller Date: Fri, 10 Feb 2023 12:28:47 -0500 Subject: [PATCH 22/42] Lift `tech.v3.datatype.functional` operations (#90) * Add ->general-types function * Add a general type :logical * Use type hierarchy in tablecloth.api.utils for `typeof` functions * Add column dev branch to pr workflow * Add tests for typeof * Fix tests for typeof * Return the concrete type from `typeof` * Simplify `concrete-types` fn * Optimize ->general-types by using static lookup * Adjust fns listing types * We decided that the default meaning of type points to the "concrete" type, and not the general type. * So `types` now returns the set of concrete types and `general-types` returns the general types. * Revert "Adjust fns listing types" This reverts commit d93e34fc3449f6a2695a8c7225ddf10e51922262. * Fix `typeof` test to test for concerete types * Reorganize `typeof?` tests * Reword docstring for `typeof?` slightly * Update column api template and add missing `typeof?` * Add commment to `general-types-lookup` * Improve `->general-types` docstring * Add `general-types` fn that returns sets of general types * Adjust util `types` fn to return concrete types * Save changes to column api.clj * Save ongoing experiments with lifting * Save ongoing work on lifting * Adjust lift-ops-1 to handle any number of args with rest arg * Working `rearrange-args` fn * Save work actually writing lifted fns * Saving first attempt to writer operators * Add `percentiiles test * Adjust `rearrange-args to take new-args in option map * Unify two lift functions * Add in docstrings when present * Move lift utils into utils ns * Rename lifting namespaces * Lift some more fns * Make exclusions for ns header helper an arg * Add new operators and tests * Add ops with lhs rhs arg pattern * Lift '* * Add require to operators ns for utils * Update test to make it more complete * Lift `equals * Make test more accurate * Reorganize tests * Fix grammar * Lift 'shift * Uncomment 'or test * Lift 'normalize op * Life 'magnitude * Lifting bit manipulation ops * lift ieee-remainder * Lifting more functions * Add excludes * Lift a bunch of new functions * Alphebetize some lists * More alphebitization * Clean up * Instead of using `col` as arg conform to using `x & and `y * Temporarily disable failing test fix in 7.000-beta23 * Disable the correct test * Just some minor cleanup in op tests * Some more cleanup/reorg in op tests * Update generated operators namespace with switch from col -> x etc * Lift 'descriptive-statistics * Fix messed up test layout * Lift 'quartiles * Lift 'fill-range and a bunch of reduce operations * Lift 'mean-fast 'sum-fast 'magnitude-squared * Lift correlation fns kendalls, pearsons, and spearmans * Lift cumulative ops * cleanup --- src/tablecloth/column/api/lift_operators.clj | 195 ++ src/tablecloth/column/api/operators.clj | 1689 +++++++++++++++++ src/tablecloth/column/api/utils.clj | 88 + test/tablecloth/column/api/column_test.clj | 8 +- test/tablecloth/column/api/operators_test.clj | 220 +++ 5 files changed, 2197 insertions(+), 3 deletions(-) create mode 100644 src/tablecloth/column/api/lift_operators.clj create mode 100644 src/tablecloth/column/api/operators.clj create mode 100644 src/tablecloth/column/api/utils.clj create mode 100644 test/tablecloth/column/api/operators_test.clj diff --git a/src/tablecloth/column/api/lift_operators.clj b/src/tablecloth/column/api/lift_operators.clj new file mode 100644 index 0000000..333d120 --- /dev/null +++ b/src/tablecloth/column/api/lift_operators.clj @@ -0,0 +1,195 @@ +(ns tablecloth.column.api.lift-operators + (:require [tablecloth.column.api.utils :refer [do-lift lift-op]])) + +(def serialized-lift-fn-lookup + {['* + '+ + '- + '/ + '< + '<= + '> + '>= + 'abs + 'acos + 'and + 'asin + 'atan + 'atan2 + 'bit-and + 'bit-and-not + 'bit-clear + 'bit-flip + 'bit-not + 'bit-or + 'bit-set + 'bit-shift-left + 'bit-shift-right + #_bit-test ;; can't get this to work yet. + 'bit-xor + 'cbrt + 'ceil + 'cos + 'cosh + 'distance + 'distance-squared + 'dot-product + 'eq + 'equals + 'exp + 'expm1 + 'floor + 'get-significand + 'hypot + 'identity + 'ieee-remainder + 'log + 'log10 + 'log1p + 'logistic + 'magnitude + 'max + 'min + 'next-down + 'next-up + 'normalize + 'not-eq + 'or + 'pow + 'quot + 'rem + 'rint + 'signum + 'sin + 'sinh + 'sq + 'sqrt + 'tan + 'tanh + 'to-degrees + 'to-radians + 'ulp + 'unsigned-bit-shift-right] lift-op + ['kurtosis + 'sum + 'mean + 'skew + 'variance + 'standard-deviation + 'quartile-3 + 'quartile-1 + 'median] (fn [fn-sym fn-meta] + (lift-op + fn-sym fn-meta + {:new-args '([col] [col options]) + :new-args-lookup {'data 'col + 'options 'options}})) + ['even? + 'finite? + 'infinite? + 'mathematical-integer? + 'nan? + 'neg? + 'not + 'odd? + 'pos? + 'round + 'zero?] + (fn [fn-sym fn-meta] + (lift-op + fn-sym fn-meta + {:new-args '([x] [x options]) + :new-args-lookup {'arg 'x + 'options 'options}})) + ['percentiles] (fn [fn-sym fn-meta] + (lift-op + fn-sym fn-meta + {:new-args '([x percentiles] [x percentiles options]) + :new-args-lookup {'data 'x, + 'percentages 'percentiles, + 'options 'options}})) + ['shift] (fn [fn-sym fn-meta] + (lift-op + fn-sym fn-meta + {:new-args '([x n]) + :new-args-lookup {'rdr 'x + 'n 'n}})) + ['descriptive-statistics] (fn [fn-sym fn-meta] + (lift-op + fn-sym fn-meta + {:new-args '([x stats-names stats-data options] + [x stats-names options] + [x stats-names] + [x]) + :new-args-lookup {'rdr 'x + 'src-rdr 'x + 'stats-names 'stats-names + 'stats-data 'stats-data + 'options 'options}})) + ['quartiles] (fn [fn-sym fn-meta] + (lift-op + fn-sym fn-meta + {:new-args '([x options] [x]) + :new-args-lookup {'item 'x + 'options 'options}})) + ['fill-range] (fn [fn-sym fn-meta] + (lift-op + fn-sym fn-meta + {:new-args '([x max-span]) + :new-args-lookup {'numeric-data 'x + 'max-span 'max-span}})) + ['reduce-min + 'reduce-max + 'reduce-* + 'reduce-+] (fn [fn-sym fn-meta] + (lift-op + fn-sym fn-meta + {:new-args '([x]) + :new-args-lookup {'rdr 'x}})) + ['mean-fast + 'sum-fast + 'magnitude-squared] (fn [fn-sym fn-meta] + (lift-op + fn-sym fn-meta + {:new-args '([x]) + :new-args-lookup {'data 'x}})) + ['kendalls-correlation + 'pearsons-correlation + 'spearmans-correlation] (fn [fn-sym fn-meta] + (lift-op + fn-sym fn-meta + {:new-args '([x y] [x y options]) + :new-args-lookup {'lhs 'x + 'rhs 'y + 'options 'options}})) + ['cumprod + 'cumsum + 'cummax + 'cummin] (fn [fn-sym fn-meta] + (lift-op + fn-sym fn-meta + {:new-args '([x] [x options]) + :new-args-lookup {'data 'x + 'options 'options}}))}) + + +(defn deserialize-lift-fn-lookup [] + (reduce (fn [m [symlist liftfn]] + (loop [syms symlist + result m] + (if (empty? syms) + result + (recur (rest syms) (assoc result (first syms) liftfn))))) + {} + serialized-lift-fn-lookup)) + +(comment + (do-lift (deserialize-lift-fn-lookup) + 'tablecloth.column.api.operators + 'tech.v3.datatype.functional + '[* + - / < <= > >= abs and bit-and bit-and-not bit-clear bit-flip + bit-not bit-or bit-set bit-shift-left bit-shift-right bit-test bit-xor + even? identity infinite? max min neg? not odd? odd? or pos? quot rem + unsigned-bit-shift-right zero?] + "src/tablecloth/column/api/operators.clj") + ,) diff --git a/src/tablecloth/column/api/operators.clj b/src/tablecloth/column/api/operators.clj new file mode 100644 index 0000000..e8a56d7 --- /dev/null +++ b/src/tablecloth/column/api/operators.clj @@ -0,0 +1,1689 @@ +(ns + tablecloth.column.api.operators + (:require [tech.v3.datatype.functional] [tablecloth.column.api.utils]) + (:refer-clojure + :exclude + [* + + + - + / + < + <= + > + >= + abs + and + bit-and + bit-and-not + bit-clear + bit-flip + bit-not + bit-or + bit-set + bit-shift-left + bit-shift-right + bit-test + bit-xor + even? + identity + infinite? + max + min + neg? + not + odd? + odd? + or + pos? + quot + rem + unsigned-bit-shift-right + zero?])) + +(defn + kurtosis + "" + ([col] + (let + [original-result__44239__auto__ + (tech.v3.datatype.functional/kurtosis col)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44239__auto__))) + ([col options] + (let + [original-result__44239__auto__ + (tech.v3.datatype.functional/kurtosis col options)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44239__auto__)))) + +(defn + bit-set + "" + ([x y] + (let + [original-result__44240__auto__ + (tech.v3.datatype.functional/bit-set x y)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__))) + ([x y & args] + (let + [original-result__44240__auto__ + (clojure.core/apply tech.v3.datatype.functional/bit-set x y args)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__)))) + +(defn + finite? + "" + ([x] + (let + [original-result__44239__auto__ + (tech.v3.datatype.functional/finite? x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44239__auto__))) + ([x options] + (let + [original-result__44239__auto__ + (tech.v3.datatype.functional/finite? x options)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44239__auto__)))) + +(defn + distance + "" + ([lhs rhs] + (let + [original-result__44240__auto__ + (tech.v3.datatype.functional/distance lhs rhs)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__)))) + +(defn + reduce-min + "" + ([x] + (let + [original-result__44239__auto__ + (tech.v3.datatype.functional/reduce-min x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44239__auto__)))) + +(defn + to-radians + "" + ([x options] + (let + [original-result__44240__auto__ + (tech.v3.datatype.functional/to-radians x options)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__))) + ([x] + (let + [original-result__44240__auto__ + (tech.v3.datatype.functional/to-radians x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__)))) + +(defn + bit-shift-right + "" + ([x y] + (let + [original-result__44240__auto__ + (tech.v3.datatype.functional/bit-shift-right x y)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__))) + ([x y & args] + (let + [original-result__44240__auto__ + (clojure.core/apply + tech.v3.datatype.functional/bit-shift-right + x + y + args)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__)))) + +(defn + ieee-remainder + "" + ([x y] + (let + [original-result__44240__auto__ + (tech.v3.datatype.functional/ieee-remainder x y)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__))) + ([x y & args] + (let + [original-result__44240__auto__ + (clojure.core/apply + tech.v3.datatype.functional/ieee-remainder + x + y + args)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__)))) + +(defn + log + "" + ([x options] + (let + [original-result__44240__auto__ + (tech.v3.datatype.functional/log x options)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__))) + ([x] + (let + [original-result__44240__auto__ (tech.v3.datatype.functional/log x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__)))) + +(defn + bit-shift-left + "" + ([x y] + (let + [original-result__44240__auto__ + (tech.v3.datatype.functional/bit-shift-left x y)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__))) + ([x y & args] + (let + [original-result__44240__auto__ + (clojure.core/apply + tech.v3.datatype.functional/bit-shift-left + x + y + args)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__)))) + +(defn + acos + "" + ([x options] + (let + [original-result__44240__auto__ + (tech.v3.datatype.functional/acos x options)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__))) + ([x] + (let + [original-result__44240__auto__ + (tech.v3.datatype.functional/acos x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__)))) + +(defn + to-degrees + "" + ([x options] + (let + [original-result__44240__auto__ + (tech.v3.datatype.functional/to-degrees x options)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__))) + ([x] + (let + [original-result__44240__auto__ + (tech.v3.datatype.functional/to-degrees x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__)))) + +(defn + < + "" + ([lhs mid rhs] + (let + [original-result__44240__auto__ + (tech.v3.datatype.functional/< lhs mid rhs)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__))) + ([lhs rhs] + (let + [original-result__44240__auto__ + (tech.v3.datatype.functional/< lhs rhs)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__)))) + +(defn + floor + "" + ([x options] + (let + [original-result__44240__auto__ + (tech.v3.datatype.functional/floor x options)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__))) + ([x] + (let + [original-result__44240__auto__ + (tech.v3.datatype.functional/floor x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__)))) + +(defn + atan2 + "" + ([x y] + (let + [original-result__44240__auto__ + (tech.v3.datatype.functional/atan2 x y)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__))) + ([x y & args] + (let + [original-result__44240__auto__ + (clojure.core/apply tech.v3.datatype.functional/atan2 x y args)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__)))) + +(defn + normalize + "" + ([item] + (let + [original-result__44240__auto__ + (tech.v3.datatype.functional/normalize item)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__)))) + +(defn + hypot + "" + ([x y] + (let + [original-result__44240__auto__ + (tech.v3.datatype.functional/hypot x y)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__))) + ([x y & args] + (let + [original-result__44240__auto__ + (clojure.core/apply tech.v3.datatype.functional/hypot x y args)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__)))) + +(defn + tanh + "" + ([x options] + (let + [original-result__44240__auto__ + (tech.v3.datatype.functional/tanh x options)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__))) + ([x] + (let + [original-result__44240__auto__ + (tech.v3.datatype.functional/tanh x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__)))) + +(defn + sq + "" + ([x options] + (let + [original-result__44240__auto__ + (tech.v3.datatype.functional/sq x options)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__))) + ([x] + (let + [original-result__44240__auto__ (tech.v3.datatype.functional/sq x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__)))) + +(defn + fill-range + "Given a reader of numeric data and a max span amount, produce\n a new reader where the difference between any two consecutive elements\n is less than or equal to the max span amount. Also return a bitmap of the added\n indexes. Uses linear interpolation to fill in areas, operates in double space.\n Returns\n {:result :missing}" + ([x max-span] + (let + [original-result__44239__auto__ + (tech.v3.datatype.functional/fill-range x max-span)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44239__auto__)))) + +(defn + sum + "Double sum of data using\n [Kahan compensated summation](https://en.wikipedia.org/wiki/Kahan_summation_algorithm)." + ([col] + (let + [original-result__44239__auto__ + (tech.v3.datatype.functional/sum col)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44239__auto__))) + ([col options] + (let + [original-result__44239__auto__ + (tech.v3.datatype.functional/sum col options)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44239__auto__)))) + +(defn + pos? + "" + ([x] + (let + [original-result__44239__auto__ + (tech.v3.datatype.functional/pos? x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44239__auto__))) + ([x options] + (let + [original-result__44239__auto__ + (tech.v3.datatype.functional/pos? x options)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44239__auto__)))) + +(defn + shift + "Shift by n and fill in with the first element for n>0 or last element for n<0.\n\n Examples:\n\n```clojure\nuser> (dfn/shift (range 10) 2)\n[0 0 0 1 2 3 4 5 6 7]\nuser> (dfn/shift (range 10) -2)\n[2 3 4 5 6 7 8 9 9 9]\n```" + ([x n] + (let + [original-result__44239__auto__ + (tech.v3.datatype.functional/shift x n)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44239__auto__)))) + +(defn + ceil + "" + ([x options] + (let + [original-result__44240__auto__ + (tech.v3.datatype.functional/ceil x options)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__))) + ([x] + (let + [original-result__44240__auto__ + (tech.v3.datatype.functional/ceil x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__)))) + +(defn + bit-xor + "" + ([x y] + (let + [original-result__44240__auto__ + (tech.v3.datatype.functional/bit-xor x y)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__))) + ([x y & args] + (let + [original-result__44240__auto__ + (clojure.core/apply tech.v3.datatype.functional/bit-xor x y args)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__)))) + +(defn + unsigned-bit-shift-right + "" + ([x y] + (let + [original-result__44240__auto__ + (tech.v3.datatype.functional/unsigned-bit-shift-right x y)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__))) + ([x y & args] + (let + [original-result__44240__auto__ + (clojure.core/apply + tech.v3.datatype.functional/unsigned-bit-shift-right + x + y + args)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__)))) + +(defn + neg? + "" + ([x] + (let + [original-result__44239__auto__ + (tech.v3.datatype.functional/neg? x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44239__auto__))) + ([x options] + (let + [original-result__44239__auto__ + (tech.v3.datatype.functional/neg? x options)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44239__auto__)))) + +(defn + <= + "" + ([lhs mid rhs] + (let + [original-result__44240__auto__ + (tech.v3.datatype.functional/<= lhs mid rhs)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__))) + ([lhs rhs] + (let + [original-result__44240__auto__ + (tech.v3.datatype.functional/<= lhs rhs)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__)))) + +(defn + * + "" + ([x y] + (let + [original-result__44240__auto__ (tech.v3.datatype.functional/* x y)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__))) + ([x y & args] + (let + [original-result__44240__auto__ + (clojure.core/apply tech.v3.datatype.functional/* x y args)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__)))) + +(defn + min + "" + ([x] + (let + [original-result__44240__auto__ (tech.v3.datatype.functional/min x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__))) + ([x y] + (let + [original-result__44240__auto__ + (tech.v3.datatype.functional/min x y)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__))) + ([x y & args] + (let + [original-result__44240__auto__ + (clojure.core/apply tech.v3.datatype.functional/min x y args)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__)))) + +(defn + atan + "" + ([x options] + (let + [original-result__44240__auto__ + (tech.v3.datatype.functional/atan x options)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__))) + ([x] + (let + [original-result__44240__auto__ + (tech.v3.datatype.functional/atan x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__)))) + +(defn + mathematical-integer? + "" + ([x] + (let + [original-result__44239__auto__ + (tech.v3.datatype.functional/mathematical-integer? x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44239__auto__))) + ([x options] + (let + [original-result__44239__auto__ + (tech.v3.datatype.functional/mathematical-integer? x options)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44239__auto__)))) + +(defn + cumprod + "Cumulative running product; returns result in double space.\n\n Options:\n\n * `:nan-strategy` - one of `:keep`, `:remove`, `:exception`. Defaults to `:remove`." + ([x] + (let + [original-result__44239__auto__ + (tech.v3.datatype.functional/cumprod x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44239__auto__))) + ([x options] + (let + [original-result__44239__auto__ + (tech.v3.datatype.functional/cumprod options x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44239__auto__)))) + +(defn + expm1 + "" + ([x options] + (let + [original-result__44240__auto__ + (tech.v3.datatype.functional/expm1 x options)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__))) + ([x] + (let + [original-result__44240__auto__ + (tech.v3.datatype.functional/expm1 x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__)))) + +(defn + identity + "" + ([x options] + (let + [original-result__44240__auto__ + (tech.v3.datatype.functional/identity x options)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__))) + ([x] + (let + [original-result__44240__auto__ + (tech.v3.datatype.functional/identity x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__)))) + +(defn + reduce-max + "" + ([x] + (let + [original-result__44239__auto__ + (tech.v3.datatype.functional/reduce-max x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44239__auto__)))) + +(defn + cumsum + "Cumulative running summation; returns result in double space.\n\n Options:\n\n * `:nan-strategy` - one of `:keep`, `:remove`, `:exception`. Defaults to `:remove`." + ([x] + (let + [original-result__44239__auto__ + (tech.v3.datatype.functional/cumsum x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44239__auto__))) + ([x options] + (let + [original-result__44239__auto__ + (tech.v3.datatype.functional/cumsum options x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44239__auto__)))) + +(defn + descriptive-statistics + "Calculate a set of descriptive statistics on a single reader.\n\n Available stats:\n #{:min :quartile-1 :sum :mean :mode :median :quartile-3 :max\n :variance :standard-deviation :skew :n-elems :kurtosis}\n\n options\n - `:nan-strategy` - defaults to :remove, one of\n [:keep :remove :exception]. The fastest option is :keep but this\n may result in your results having NaN's in them. You can also pass\n in a double predicate to filter custom double values." + ([x] + (let + [original-result__44239__auto__ + (tech.v3.datatype.functional/descriptive-statistics x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44239__auto__))) + ([x stats-names] + (let + [original-result__44239__auto__ + (tech.v3.datatype.functional/descriptive-statistics stats-names x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44239__auto__))) + ([x stats-names options] + (let + [original-result__44239__auto__ + (tech.v3.datatype.functional/descriptive-statistics + stats-names + options + x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44239__auto__))) + ([x stats-names stats-data options] + (let + [original-result__44239__auto__ + (tech.v3.datatype.functional/descriptive-statistics + stats-names + stats-data + options + x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44239__auto__)))) + +(defn + nan? + "" + ([x] + (let + [original-result__44239__auto__ + (tech.v3.datatype.functional/nan? x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44239__auto__))) + ([x options] + (let + [original-result__44239__auto__ + (tech.v3.datatype.functional/nan? x options)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44239__auto__)))) + +(defn + bit-and-not + "" + ([x y] + (let + [original-result__44240__auto__ + (tech.v3.datatype.functional/bit-and-not x y)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__))) + ([x y & args] + (let + [original-result__44240__auto__ + (clojure.core/apply + tech.v3.datatype.functional/bit-and-not + x + y + args)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__)))) + +(defn + logistic + "" + ([x options] + (let + [original-result__44240__auto__ + (tech.v3.datatype.functional/logistic x options)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__))) + ([x] + (let + [original-result__44240__auto__ + (tech.v3.datatype.functional/logistic x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__)))) + +(defn + cos + "" + ([x options] + (let + [original-result__44240__auto__ + (tech.v3.datatype.functional/cos x options)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__))) + ([x] + (let + [original-result__44240__auto__ (tech.v3.datatype.functional/cos x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__)))) + +(defn + log10 + "" + ([x options] + (let + [original-result__44240__auto__ + (tech.v3.datatype.functional/log10 x options)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__))) + ([x] + (let + [original-result__44240__auto__ + (tech.v3.datatype.functional/log10 x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__)))) + +(defn + quot + "" + ([x y] + (let + [original-result__44240__auto__ + (tech.v3.datatype.functional/quot x y)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__))) + ([x y & args] + (let + [original-result__44240__auto__ + (clojure.core/apply tech.v3.datatype.functional/quot x y args)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__)))) + +(defn + dot-product + "" + ([lhs rhs] + (let + [original-result__44240__auto__ + (tech.v3.datatype.functional/dot-product lhs rhs)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__)))) + +(defn + tan + "" + ([x options] + (let + [original-result__44240__auto__ + (tech.v3.datatype.functional/tan x options)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__))) + ([x] + (let + [original-result__44240__auto__ (tech.v3.datatype.functional/tan x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__)))) + +(defn + cbrt + "" + ([x options] + (let + [original-result__44240__auto__ + (tech.v3.datatype.functional/cbrt x options)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__))) + ([x] + (let + [original-result__44240__auto__ + (tech.v3.datatype.functional/cbrt x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__)))) + +(defn + eq + "" + ([lhs rhs] + (let + [original-result__44240__auto__ + (tech.v3.datatype.functional/eq lhs rhs)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__)))) + +(defn + mean + "double mean of data" + ([col] + (let + [original-result__44239__auto__ + (tech.v3.datatype.functional/mean col)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44239__auto__))) + ([col options] + (let + [original-result__44239__auto__ + (tech.v3.datatype.functional/mean col options)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44239__auto__)))) + +(defn + > + "" + ([lhs mid rhs] + (let + [original-result__44240__auto__ + (tech.v3.datatype.functional/> lhs mid rhs)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__))) + ([lhs rhs] + (let + [original-result__44240__auto__ + (tech.v3.datatype.functional/> lhs rhs)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__)))) + +(defn + not-eq + "" + ([lhs rhs] + (let + [original-result__44240__auto__ + (tech.v3.datatype.functional/not-eq lhs rhs)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__)))) + +(defn + even? + "" + ([x] + (let + [original-result__44239__auto__ + (tech.v3.datatype.functional/even? x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44239__auto__))) + ([x options] + (let + [original-result__44239__auto__ + (tech.v3.datatype.functional/even? x options)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44239__auto__)))) + +(defn + spearmans-correlation + "" + ([x y] + (let + [original-result__44239__auto__ + (tech.v3.datatype.functional/spearmans-correlation x y)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44239__auto__))) + ([x y options] + (let + [original-result__44239__auto__ + (tech.v3.datatype.functional/spearmans-correlation options x y)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44239__auto__)))) + +(defn + sqrt + "" + ([x options] + (let + [original-result__44240__auto__ + (tech.v3.datatype.functional/sqrt x options)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__))) + ([x] + (let + [original-result__44240__auto__ + (tech.v3.datatype.functional/sqrt x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__)))) + +(defn + reduce-* + "" + ([x] + (let + [original-result__44239__auto__ + (tech.v3.datatype.functional/reduce-* x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44239__auto__)))) + +(defn + next-down + "" + ([x options] + (let + [original-result__44240__auto__ + (tech.v3.datatype.functional/next-down x options)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__))) + ([x] + (let + [original-result__44240__auto__ + (tech.v3.datatype.functional/next-down x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__)))) + +(defn + - + "" + ([x] + (let + [original-result__44240__auto__ (tech.v3.datatype.functional/- x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__))) + ([x y] + (let + [original-result__44240__auto__ (tech.v3.datatype.functional/- x y)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__))) + ([x y & args] + (let + [original-result__44240__auto__ + (clojure.core/apply tech.v3.datatype.functional/- x y args)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__)))) + +(defn + or + "" + ([lhs rhs] + (let + [original-result__44240__auto__ + (tech.v3.datatype.functional/or lhs rhs)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__)))) + +(defn + distance-squared + "" + ([lhs rhs] + (let + [original-result__44240__auto__ + (tech.v3.datatype.functional/distance-squared lhs rhs)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__)))) + +(defn + pow + "" + ([x y] + (let + [original-result__44240__auto__ + (tech.v3.datatype.functional/pow x y)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__))) + ([x y & args] + (let + [original-result__44240__auto__ + (clojure.core/apply tech.v3.datatype.functional/pow x y args)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__)))) + +(defn + next-up + "" + ([x options] + (let + [original-result__44240__auto__ + (tech.v3.datatype.functional/next-up x options)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__))) + ([x] + (let + [original-result__44240__auto__ + (tech.v3.datatype.functional/next-up x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__)))) + +(defn + skew + "" + ([col] + (let + [original-result__44239__auto__ + (tech.v3.datatype.functional/skew col)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44239__auto__))) + ([col options] + (let + [original-result__44239__auto__ + (tech.v3.datatype.functional/skew col options)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44239__auto__)))) + +(defn + exp + "" + ([x options] + (let + [original-result__44240__auto__ + (tech.v3.datatype.functional/exp x options)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__))) + ([x] + (let + [original-result__44240__auto__ (tech.v3.datatype.functional/exp x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__)))) + +(defn + mean-fast + "Take the mean of the data. This operation doesn't know anything about nan hence it is\n a bit faster than the base [[mean]] fn." + ([x] + (let + [original-result__44239__auto__ + (tech.v3.datatype.functional/mean-fast x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44239__auto__)))) + +(defn + zero? + "" + ([x] + (let + [original-result__44239__auto__ + (tech.v3.datatype.functional/zero? x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44239__auto__))) + ([x options] + (let + [original-result__44239__auto__ + (tech.v3.datatype.functional/zero? x options)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44239__auto__)))) + +(defn + rem + "" + ([x y] + (let + [original-result__44240__auto__ + (tech.v3.datatype.functional/rem x y)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__))) + ([x y & args] + (let + [original-result__44240__auto__ + (clojure.core/apply tech.v3.datatype.functional/rem x y args)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__)))) + +(defn + cosh + "" + ([x options] + (let + [original-result__44240__auto__ + (tech.v3.datatype.functional/cosh x options)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__))) + ([x] + (let + [original-result__44240__auto__ + (tech.v3.datatype.functional/cosh x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__)))) + +(defn + variance + "" + ([col] + (let + [original-result__44239__auto__ + (tech.v3.datatype.functional/variance col)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44239__auto__))) + ([col options] + (let + [original-result__44239__auto__ + (tech.v3.datatype.functional/variance col options)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44239__auto__)))) + +(defn + reduce-+ + "" + ([x] + (let + [original-result__44239__auto__ + (tech.v3.datatype.functional/reduce-+ x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44239__auto__)))) + +(defn + get-significand + "" + ([x options] + (let + [original-result__44240__auto__ + (tech.v3.datatype.functional/get-significand x options)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__))) + ([x] + (let + [original-result__44240__auto__ + (tech.v3.datatype.functional/get-significand x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__)))) + +(defn + bit-and + "" + ([x y] + (let + [original-result__44240__auto__ + (tech.v3.datatype.functional/bit-and x y)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__))) + ([x y & args] + (let + [original-result__44240__auto__ + (clojure.core/apply tech.v3.datatype.functional/bit-and x y args)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__)))) + +(defn + kendalls-correlation + "" + ([x y] + (let + [original-result__44239__auto__ + (tech.v3.datatype.functional/kendalls-correlation x y)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44239__auto__))) + ([x y options] + (let + [original-result__44239__auto__ + (tech.v3.datatype.functional/kendalls-correlation options x y)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44239__auto__)))) + +(defn + not + "" + ([x] + (let + [original-result__44239__auto__ (tech.v3.datatype.functional/not x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44239__auto__))) + ([x options] + (let + [original-result__44239__auto__ + (tech.v3.datatype.functional/not x options)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44239__auto__)))) + +(defn + standard-deviation + "" + ([col] + (let + [original-result__44239__auto__ + (tech.v3.datatype.functional/standard-deviation col)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44239__auto__))) + ([col options] + (let + [original-result__44239__auto__ + (tech.v3.datatype.functional/standard-deviation col options)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44239__auto__)))) + +(defn + cummin + "Cumulative running min; returns result in double space.\n\n Options:\n\n * `:nan-strategy` - one of `:keep`, `:remove`, `:exception`. Defaults to `:remove`." + ([x] + (let + [original-result__44239__auto__ + (tech.v3.datatype.functional/cummin x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44239__auto__))) + ([x options] + (let + [original-result__44239__auto__ + (tech.v3.datatype.functional/cummin options x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44239__auto__)))) + +(defn + magnitude + "" + ([item _options] + (let + [original-result__44240__auto__ + (tech.v3.datatype.functional/magnitude item _options)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__))) + ([item] + (let + [original-result__44240__auto__ + (tech.v3.datatype.functional/magnitude item)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__)))) + +(defn + cummax + "Cumulative running max; returns result in double space.\n\n Options:\n\n * `:nan-strategy` - one of `:keep`, `:remove`, `:exception`. Defaults to `:remove`." + ([x] + (let + [original-result__44239__auto__ + (tech.v3.datatype.functional/cummax x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44239__auto__))) + ([x options] + (let + [original-result__44239__auto__ + (tech.v3.datatype.functional/cummax options x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44239__auto__)))) + +(defn + / + "" + ([x] + (let + [original-result__44240__auto__ (tech.v3.datatype.functional// x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__))) + ([x y] + (let + [original-result__44240__auto__ (tech.v3.datatype.functional// x y)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__))) + ([x y & args] + (let + [original-result__44240__auto__ + (clojure.core/apply tech.v3.datatype.functional// x y args)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__)))) + +(defn + bit-or + "" + ([x y] + (let + [original-result__44240__auto__ + (tech.v3.datatype.functional/bit-or x y)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__))) + ([x y & args] + (let + [original-result__44240__auto__ + (clojure.core/apply tech.v3.datatype.functional/bit-or x y args)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__)))) + +(defn + equals + "" + ([lhs rhs & args] + (let + [original-result__44240__auto__ + (clojure.core/apply + tech.v3.datatype.functional/equals + lhs + rhs + args)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__)))) + +(defn + >= + "" + ([lhs mid rhs] + (let + [original-result__44240__auto__ + (tech.v3.datatype.functional/>= lhs mid rhs)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__))) + ([lhs rhs] + (let + [original-result__44240__auto__ + (tech.v3.datatype.functional/>= lhs rhs)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__)))) + +(defn + bit-flip + "" + ([x y] + (let + [original-result__44240__auto__ + (tech.v3.datatype.functional/bit-flip x y)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__))) + ([x y & args] + (let + [original-result__44240__auto__ + (clojure.core/apply tech.v3.datatype.functional/bit-flip x y args)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__)))) + +(defn + log1p + "" + ([x options] + (let + [original-result__44240__auto__ + (tech.v3.datatype.functional/log1p x options)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__))) + ([x] + (let + [original-result__44240__auto__ + (tech.v3.datatype.functional/log1p x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__)))) + +(defn + asin + "" + ([x options] + (let + [original-result__44240__auto__ + (tech.v3.datatype.functional/asin x options)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__))) + ([x] + (let + [original-result__44240__auto__ + (tech.v3.datatype.functional/asin x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__)))) + +(defn + quartiles + "return [min, 25 50 75 max] of item" + ([x] + (let + [original-result__44239__auto__ + (tech.v3.datatype.functional/quartiles x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44239__auto__))) + ([x options] + (let + [original-result__44239__auto__ + (tech.v3.datatype.functional/quartiles options x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44239__auto__)))) + +(defn + quartile-3 + "" + ([col] + (let + [original-result__44239__auto__ + (tech.v3.datatype.functional/quartile-3 col)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44239__auto__))) + ([col options] + (let + [original-result__44239__auto__ + (tech.v3.datatype.functional/quartile-3 col options)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44239__auto__)))) + +(defn + infinite? + "" + ([x] + (let + [original-result__44239__auto__ + (tech.v3.datatype.functional/infinite? x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44239__auto__))) + ([x options] + (let + [original-result__44239__auto__ + (tech.v3.datatype.functional/infinite? x options)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44239__auto__)))) + +(defn + round + "Vectorized implementation of Math/round. Operates in double space\n but returns a long or long reader." + ([x] + (let + [original-result__44239__auto__ + (tech.v3.datatype.functional/round x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44239__auto__))) + ([x options] + (let + [original-result__44239__auto__ + (tech.v3.datatype.functional/round x options)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44239__auto__)))) + +(defn + quartile-1 + "" + ([col] + (let + [original-result__44239__auto__ + (tech.v3.datatype.functional/quartile-1 col)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44239__auto__))) + ([col options] + (let + [original-result__44239__auto__ + (tech.v3.datatype.functional/quartile-1 col options)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44239__auto__)))) + +(defn + odd? + "" + ([x] + (let + [original-result__44239__auto__ + (tech.v3.datatype.functional/odd? x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44239__auto__))) + ([x options] + (let + [original-result__44239__auto__ + (tech.v3.datatype.functional/odd? x options)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44239__auto__)))) + +(defn + bit-clear + "" + ([x y] + (let + [original-result__44240__auto__ + (tech.v3.datatype.functional/bit-clear x y)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__))) + ([x y & args] + (let + [original-result__44240__auto__ + (clojure.core/apply + tech.v3.datatype.functional/bit-clear + x + y + args)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__)))) + +(defn + + + "" + ([x] + (let + [original-result__44240__auto__ (tech.v3.datatype.functional/+ x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__))) + ([x y] + (let + [original-result__44240__auto__ (tech.v3.datatype.functional/+ x y)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__))) + ([x y & args] + (let + [original-result__44240__auto__ + (clojure.core/apply tech.v3.datatype.functional/+ x y args)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__)))) + +(defn + abs + "" + ([x options] + (let + [original-result__44240__auto__ + (tech.v3.datatype.functional/abs x options)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__))) + ([x] + (let + [original-result__44240__auto__ (tech.v3.datatype.functional/abs x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__)))) + +(defn + median + "" + ([col] + (let + [original-result__44239__auto__ + (tech.v3.datatype.functional/median col)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44239__auto__))) + ([col options] + (let + [original-result__44239__auto__ + (tech.v3.datatype.functional/median col options)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44239__auto__)))) + +(defn + pearsons-correlation + "" + ([x y] + (let + [original-result__44239__auto__ + (tech.v3.datatype.functional/pearsons-correlation x y)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44239__auto__))) + ([x y options] + (let + [original-result__44239__auto__ + (tech.v3.datatype.functional/pearsons-correlation options x y)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44239__auto__)))) + +(defn + sinh + "" + ([x options] + (let + [original-result__44240__auto__ + (tech.v3.datatype.functional/sinh x options)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__))) + ([x] + (let + [original-result__44240__auto__ + (tech.v3.datatype.functional/sinh x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__)))) + +(defn + rint + "" + ([x options] + (let + [original-result__44240__auto__ + (tech.v3.datatype.functional/rint x options)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__))) + ([x] + (let + [original-result__44240__auto__ + (tech.v3.datatype.functional/rint x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__)))) + +(defn + bit-not + "" + ([x options] + (let + [original-result__44240__auto__ + (tech.v3.datatype.functional/bit-not x options)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__))) + ([x] + (let + [original-result__44240__auto__ + (tech.v3.datatype.functional/bit-not x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__)))) + +(defn + max + "" + ([x] + (let + [original-result__44240__auto__ (tech.v3.datatype.functional/max x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__))) + ([x y] + (let + [original-result__44240__auto__ + (tech.v3.datatype.functional/max x y)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__))) + ([x y & args] + (let + [original-result__44240__auto__ + (clojure.core/apply tech.v3.datatype.functional/max x y args)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__)))) + +(defn + ulp + "" + ([x options] + (let + [original-result__44240__auto__ + (tech.v3.datatype.functional/ulp x options)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__))) + ([x] + (let + [original-result__44240__auto__ (tech.v3.datatype.functional/ulp x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__)))) + +(defn + percentiles + "Create a reader of percentile values, one for each percentage passed in.\n Estimation types are in the set of #{:r1,r2...legacy} and are described\n here: https://commons.apache.org/proper/commons-math/javadocs/api-3.3/index.html.\n\n nan-strategy can be one of [:keep :remove :exception] and defaults to :exception." + ([x percentiles] + (let + [original-result__44239__auto__ + (tech.v3.datatype.functional/percentiles percentiles x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44239__auto__))) + ([x percentiles options] + (let + [original-result__44239__auto__ + (tech.v3.datatype.functional/percentiles percentiles options x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44239__auto__)))) + +(defn + sin + "" + ([x options] + (let + [original-result__44240__auto__ + (tech.v3.datatype.functional/sin x options)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__))) + ([x] + (let + [original-result__44240__auto__ (tech.v3.datatype.functional/sin x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__)))) + +(defn + sum-fast + "Find the sum of the data. This operation is neither nan-aware nor does it implement\n kahans compensation although via parallelization it implements pairwise summation\n compensation. For a more but slightly slower but far more correct sum operator,\n use [[sum]]." + ([x] + (let + [original-result__44239__auto__ + (tech.v3.datatype.functional/sum-fast x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44239__auto__)))) + +(defn + signum + "" + ([x options] + (let + [original-result__44240__auto__ + (tech.v3.datatype.functional/signum x options)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__))) + ([x] + (let + [original-result__44240__auto__ + (tech.v3.datatype.functional/signum x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__)))) + +(defn + magnitude-squared + "" + ([x] + (let + [original-result__44239__auto__ + (tech.v3.datatype.functional/magnitude-squared x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44239__auto__)))) + +(defn + and + "" + ([lhs rhs] + (let + [original-result__44240__auto__ + (tech.v3.datatype.functional/and lhs rhs)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44240__auto__)))) + diff --git a/src/tablecloth/column/api/utils.clj b/src/tablecloth/column/api/utils.clj new file mode 100644 index 0000000..ed703e7 --- /dev/null +++ b/src/tablecloth/column/api/utils.clj @@ -0,0 +1,88 @@ +(ns tablecloth.column.api.utils + (:import [java.io Writer]) + (:require [tech.v3.datatype.export-symbols :as exporter] + [tech.v3.datatype.argtypes :refer [arg-type]] + [tablecloth.column.api :refer [column]] + [tech.v3.datatype.functional :as fun] + [clojure.java.io :as io])) + +(defn return-scalar-or-column [item] + (let [item-type (arg-type item)] + (if (= item-type :reader) + (column item) + item))) + +(defn lift-op + ([fn-sym fn-meta] + (lift-op fn-sym fn-meta nil)) + ([fn-sym fn-meta {:keys [new-args new-args-lookup]}] + (let [defn (symbol "defn") + let (symbol "let") + docstring (:doc fn-meta) + original-args (:arglists fn-meta) + sort-by-arg-count (fn [argslist] + (sort #(< (count %1) (count %2)) argslist))] + (if new-args + `(~defn ~(symbol (name fn-sym)) + ~(or docstring "") + ~@(for [[new-arg original-arg] (zipmap (sort-by-arg-count new-args) + (sort-by-arg-count original-args)) + :let [filtered-original-arg (filter (partial not= '&) original-arg)]] + (list + (if new-arg new-arg original-arg) + `(~let [original-result# (~fn-sym + ~@(if (nil? new-args-lookup) + filtered-original-arg + (for [oldarg filtered-original-arg] + (get new-args-lookup oldarg))))] + (return-scalar-or-column original-result#))))) + `(~defn ~(symbol (name fn-sym)) + ~(or docstring "") + ~@(for [arg original-args + :let [[explicit-args rest-arg-expr] (split-with (partial not= '&) arg)]] + (list + arg + `(~let [original-result# ~(if (empty? rest-arg-expr) + `(~fn-sym ~@explicit-args) + `(apply ~fn-sym ~@explicit-args ~(second rest-arg-expr)))] + (return-scalar-or-column original-result#))))))))) + +(defn- writeln! + ^Writer [^Writer writer strdata & strdatas] + (.append writer (str strdata)) + (doseq [data strdatas] + (when data + (.append writer (str data)))) + (.append writer "\n") + writer) + +(defn- write-empty-ln! ^Writer [^Writer writer] + (writeln! writer "") + writer) + +(defn- write-pp ^Writer [^Writer writer item] + (clojure.pprint/pprint item writer) + writer) + +(defn get-lifted [lift-fn-lookup source-ns] + (let [fun-mappings (ns-publics source-ns)] + (map (fn [[fnsym lift-fn]] + (lift-fn (symbol (name source-ns) (name fnsym)) + (meta (get fun-mappings fnsym)))) + lift-fn-lookup))) + +(defn get-ns-header [target-ns source-ns ns-exclusions] + (let [ns (symbol "ns")] + `(~ns ~target-ns + (:require [~source-ns] + [tablecloth.column.api.utils]) + (:refer-clojure :exclude ~ns-exclusions)))) + +(defn do-lift [lift-plan target-ns source-ns ns-exclusions filename] + (with-open [writer (io/writer filename :append false)] + (write-pp writer (get-ns-header target-ns source-ns ns-exclusions)) + (write-empty-ln! writer) + (doseq [f (get-lifted lift-plan source-ns)] + (-> writer + (write-pp f) + (write-empty-ln!))))) diff --git a/test/tablecloth/column/api/column_test.clj b/test/tablecloth/column/api/column_test.clj index a6a3b3e..3b77c51 100644 --- a/test/tablecloth/column/api/column_test.clj +++ b/test/tablecloth/column/api/column_test.clj @@ -18,9 +18,11 @@ (-> [true false true] (column) (tech.v3.datatype/elemwise-datatype)) => :boolean - (-> [1 true false] - (column) - (tech.v3.datatype/elemwise-datatype)) => :object) + ;; disable this test until TC reaches 7.00-beta2 + ;;(-> [1 true false] + ;; (column) + ;; (tech.v3.datatype/elemwise-datatype)) => :object + ) (fact "`typeof` returns the concrete type of the elements" (typeof (column [1 2 3])) => :int64 diff --git a/test/tablecloth/column/api/operators_test.clj b/test/tablecloth/column/api/operators_test.clj new file mode 100644 index 0000000..6c4d2ac --- /dev/null +++ b/test/tablecloth/column/api/operators_test.clj @@ -0,0 +1,220 @@ +(ns tablecloth.column.api.operators-test + (:refer-clojure :exclude [* + - / < <= > >= abs and bit-and bit-and-not bit-clear bit-flip + bit-not bit-or bit-set bit-shift-left bit-shift-right bit-test bit-xor + even? identity infinite? max min neg? not odd? odd? or pos? quot rem + unsigned-bit-shift-right zero?]) + (:require [midje.sweet :refer [fact facts =>]] + [clojure.test :refer [deftest is]] + [tablecloth.column.api :refer [column column? typeof]]) + (:use [tablecloth.column.api.operators])) + +(tech.v3.datatype.functional/spearmans-correlation [1 2] [2 1]) + +(defn sample-column [n] + (column (repeatedly n #(rand-int 100)))) + +(defn scalar? [item] + (= (tech.v3.datatype.argtypes/arg-type item) + :scalar)) + +(facts + "about 'shift" + (let [a (column [1 2 3 4 5])] + (shift a 2) => [1 1 1 2 3])) + +(facts + "about 'descriptive-statistics" + (let [a (sample-column 5)] + ;; sanity check that we got the hash with desired data + (descriptive-statistics a) => #(contains? % :standard-deviation))) + +(facts + "about 'quartiles" + (let [a (sample-column 100)] + (quartiles a) => column? + ;; sanity check quartiles should return a coumn of 5 values + (count (quartiles a)) => 5)) + +(facts + "about 'fill-range" + (let [result (fill-range [1 5] 1)] + (contains? result :result) => true + (contains? result :missing) => true)) + +(facts +"about ops that take a single column and return a column" +(let [ops [abs + acos + asin + atan + bit-not + cbrt + ceil + cos + cosh + cumprod + cumsum + cummax + cummin + exp + expm1 + floor + get-significand + identity + log + log10 + log1p + logistic + next-down + next-up + normalize + rint + signum + sin + sinh + sq + sqrt + tan + tanh + to-degrees + to-radians + ulp] + a (sample-column 5)] + (doseq [op ops] + (op a) => column?))) + +(facts + "about ops that take a single column and return a scalar" + (let [ops [magnitude + reduce-max + reduce-min + reduce-* + reduce-+ + mean-fast + sum-fast + magnitude-squared] + a (sample-column 5)] + (doseq [op ops] + (op a) => scalar?))) + +(facts + "about ops that take one or more columns or scalars and return either a scalar or a column" + (let [ops [/ - +] + a (sample-column 5) + b (sample-column 5) + c (sample-column 5) + d (sample-column 5)] + (doseq [op ops] + (op a) => column? + (op a b) => column? + (op a b c) => column? + (op a b c d) => column? + (op 1) => scalar? + (op 1 2) => scalar? + (op 1 2 3) => scalar?))) + +(facts + "about comparison ops that take two or more columns and return a boolean" + (let [ops [> >= < <=] + a (sample-column 5) + b (sample-column 5) + c (sample-column 5)] + (doseq [op ops] + (op a b) => column? + (op a b c) => column? + (op 1 2) => boolean?))) + +(facts + "about comparison ops that take two columns and return a boolean" + (let [ops [equals] + a (sample-column 5) + b (sample-column 5)] + (doseq [op ops] + (op a b) => boolean?))) + +(facts + "about comparison ops that take two columns or scalars and return a boolean or column of booleans" + (let [ops [or and eq not-eq] + a (sample-column 5) + b (sample-column 5)] + (doseq [op ops] + (op a b) => column? + (typeof (op a b)) => :boolean + (op 1 2) => boolean?))) + +(facts + "about ops that take a single column or scalar and return a scalar" + (let [ops [kurtosis + sum + mean + skew + variance + standard-deviation + quartile-3 + quartile-1 + median] + a (sample-column 5)] + (doseq [op ops] + (op a) => scalar?))) + +(facts + "about ops that take two or more scalars or columns and return a column or scalar" + (let [ops [* + bit-and + bit-and-not + bit-clear + bit-flip + bit-or + bit-set + bit-shift-right + bit-shift-left + ;; bit-test + bit-xor + hypot + ieee-remainder + max + min + pow + quot + rem + unsigned-bit-shift-right + ] + a (sample-column 5) + b (sample-column 5) + c (sample-column 5)] + (doseq [op ops] + (op a b) => column? + (op a b c) => column? + (op 5 5) + (op 5 5 5)))) + +(facts + "about ops that take left-hand / right-hand columns and return a scalar" + (let [ops [distance + dot-product + distance-squared + kendalls-correlation + pearsons-correlation + spearmans-correlation] + a (sample-column 5) + b (sample-column 5)] + (doseq [op ops] + (op a b) => scalar?))) + +(facts + "about ops that take a single column or scalar and return boolean or column of booleans" + (let [ops [finite? + pos? + neg? + mathematical-integer? + nan? + even? + zero? + not + infinite? + odd?] + a (sample-column 5)] + (doseq [op ops] + (op a) => column? + (typeof (op a)) => :boolean + (op 1) => boolean?))) From ff85c2270a8ec1eb2f5f5406f855ecd76f4bd987 Mon Sep 17 00:00:00 2001 From: Ethan Miller Date: Sat, 11 Feb 2023 14:21:22 -0500 Subject: [PATCH 23/42] Bring column exploration doc up-to-date (#95) * Upgrade to latest clay version * Show using tablecloth.column.api.operators ns * Cleanup whitespace --- deps.edn | 2 +- docs/column_exploration.clj | 40 ++++++++++++++++++------------------- 2 files changed, 20 insertions(+), 22 deletions(-) diff --git a/deps.edn b/deps.edn index 7b8b3a6..1b97492 100644 --- a/deps.edn +++ b/deps.edn @@ -4,4 +4,4 @@ techascent/tech.ml.dataset {:mvn/version "7.000-beta-27"} ;; generateme/fastmath {:mvn/version "2.1.0"} } - :aliases {:dev {:extra-deps {org.scicloj/clay {:mvn/version "1-alpha14"}}}}} + :aliases {:dev {:extra-deps {org.scicloj/clay {:mvn/version "2-alpha12"}}}}} diff --git a/docs/column_exploration.clj b/docs/column_exploration.clj index fa405b8..7185618 100644 --- a/docs/column_exploration.clj +++ b/docs/column_exploration.clj @@ -3,23 +3,17 @@ ^{:kind/hidden true} (ns intro (:require [tablecloth.api :as tc] - [scicloj.clay.v1.api :as clay] - [scicloj.clay.v1.tools :as tools] - [scicloj.clay.v1.tool.scittle :as scittle] - [scicloj.kindly.v2.kind :as kind] - [scicloj.clay.v1.view.dataset] - [nextjournal.clerk :as clerk])) + [scicloj.clay.v2.api :as clay] + [scicloj.kindly.v3.api :as kindly] + [scicloj.kindly.v3.kind :as kind] + )) ^{:kind/hidden true} -#_(clay/restart! {:tools [#_tools/scittle - tools/clerk]}) +(clay/start!) ^{:kind/hidden true} (comment - (clerk/show!) - - (do (scittle/show-doc! "docs/column_exploration.clj" {:hide-doc? true}) - (scittle/write-html! "docs/column_exploration.html")) + (do (clay/show-doc! "docs/column_exploration.clj" {:hide-doc? true})) ,) ;; ## What is this exploration? @@ -58,21 +52,25 @@ ;; ### Basic Operations -;; Right now we need to use the functional name space from the -;; underlying computation library tech.v3.datatype to operate on -;; columns. - -(require '[tech.v3.datatype.functional :as fun]) +;; Operations are right now in their own namespace +(require '[tablecloth.column.api.operators :as ops]) ;; With that imported we can perform a large number of operations: (def a (column [20 30 40 50])) (def b (column (range 4))) -(fun/- a b) +(ops/- a b) + +(ops/pow a 2) + +(ops/* 10 (fun/sin a)) -(fun/pow a 2) +(ops/< a 35) -(fun/* 10 (fun/sin a)) +;; All these operations take a column as their first argument and +;; return a column, so they can be chained easily. -(fun/< a 35) +(-> a + (ops/* b) + (ops/< 70)) From 905c68e2a62fb5b217461b0b8e6630e8f8f99874 Mon Sep 17 00:00:00 2001 From: Ethan Miller Date: Sun, 5 Mar 2023 13:17:09 -0500 Subject: [PATCH 24/42] Add method for subsetting (#96) * Export tech.ml.dataset `select` fn for column api * Update docstring exported to api * Update column-exploration with basic illustration of select * Add `slice` * clean up tests a bit * Improve `slice` docstring slightly * Export `slice` to column api * Add stuff about `slice` to column exploration doc * Move accesssing & subsetting seciton above basic ops * Update column_expolration.html * Update comment block --- docs/column_exploration.clj | 79 +++++++++++++++++++++- docs/column_exploration.html | 71 ++----------------- src/tablecloth/column/api.clj | 42 +++++++++++- src/tablecloth/column/api/api_template.clj | 4 ++ src/tablecloth/column/api/column.clj | 27 ++++++++ test/tablecloth/column/api/column_test.clj | 28 +++++++- 6 files changed, 177 insertions(+), 74 deletions(-) diff --git a/docs/column_exploration.clj b/docs/column_exploration.clj index 7185618..31e5220 100644 --- a/docs/column_exploration.clj +++ b/docs/column_exploration.clj @@ -13,7 +13,8 @@ ^{:kind/hidden true} (comment - (do (clay/show-doc! "docs/column_exploration.clj" {:hide-doc? true})) + (clay/show-doc! "docs/column_exploration.clj" {:hide-doc? true}) + (clay/write-html! "docs/column_exploration.html") ,) ;; ## What is this exploration? @@ -50,6 +51,79 @@ (let [string-column (column ["foo" "bar"])] (col/typeof string-column)) +;; ### Subsetting and accesssing + +;; You can access an element in a column in exactly the same ways you +;; would in Clojure. + +(def myclm (column (range 5))) + +myclm + +(myclm 2) + +(nth myclm 2) + +(get myclm 2) + +;; #### Selecting multiple elements + +;; There are two ways to select multiple elements from a column: +;; * If you need to select a continuous subset, you can use `slice`; +;; * if you may need to select diverse elements, use `select`. +;; + +;; **Slice** + +;; The `slice` method allows you to use indexes to specify a portion +;; of the column to extract. + +(def myclm + (column (repeatedly 10 #(rand-int 10)))) + +myclm + +(col/slice myclm 3 5) + + +;; It also supports negative indexing, making it possible to slice +;; from the end of the column: + +(col/slice myclm -7 -5) + +;; It's also possible to slice from one direction to the beginning or +;; end: + +(col/slice myclm 7 :end) + +(col/slice myclm -3 :end) + +(col/slice myclm :start 7) + +(col/slice myclm :start -3) + +;; **Select** +;; +;; The `select` fn works by taking a list of index positions: + +(col/select myclm [1 3 5 8]) + +;; We can combine this type of selection with the operations just +;; demonstrated to select certain values. + + +myclm + +;; Let's see which positions are greter than 5. +(ops/> myclm 5) + + +;; We can use a column of boolean values like the one above with the `select` function as well. `select` will choose all the positions that are true. It's like supplying select a list of the index positions that hold true values. +(col/select myclm (ops/> myclm 5)) + + + + ;; ### Basic Operations ;; Operations are right now in their own namespace @@ -64,7 +138,7 @@ (ops/pow a 2) -(ops/* 10 (fun/sin a)) +(ops/* 10 (ops/sin a)) (ops/< a 35) @@ -74,3 +148,4 @@ (-> a (ops/* b) (ops/< 70)) + diff --git a/docs/column_exploration.html b/docs/column_exploration.html index 5b36441..aabfb94 100644 --- a/docs/column_exploration.html +++ b/docs/column_exploration.html @@ -28,71 +28,12 @@ */:root{--blue:#007bff;--indigo:#6610f2;--purple:#6f42c1;--pink:#e83e8c;--red:#dc3545;--orange:#fd7e14;--yellow:#ffc107;--green:#28a745;--teal:#20c997;--cyan:#17a2b8;--white:#fff;--gray:#6c757d;--gray-dark:#343a40;--primary:#007bff;--secondary:#6c757d;--success:#28a745;--info:#17a2b8;--warning:#ffc107;--danger:#dc3545;--light:#f8f9fa;--dark:#343a40;--breakpoint-xs:0;--breakpoint-sm:576px;--breakpoint-md:768px;--breakpoint-lg:992px;--breakpoint-xl:1200px;--font-family-sans-serif:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}*,::after,::before{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}[tabindex="-1"]:focus:not(:focus-visible){outline:0!important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#007bff;text-decoration:none;background-color:transparent}a:hover{color:#0056b3;text-decoration:underline}a:not([href]):not([class]){color:inherit;text-decoration:none}a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto;-ms-overflow-style:scrollbar}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg{overflow:hidden;vertical-align:middle}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:left;caption-side:bottom}th{text-align:inherit;text-align:-webkit-match-parent}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus:not(:focus-visible){outline:0}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none!important}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-bottom:.5rem;font-weight:500;line-height:1.2}.h1,h1{font-size:2.5rem}.h2,h2{font-size:2rem}.h3,h3{font-size:1.75rem}.h4,h4{font-size:1.5rem}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:6rem;font-weight:300;line-height:1.2}.display-2{font-size:5.5rem;font-weight:300;line-height:1.2}.display-3{font-size:4.5rem;font-weight:300;line-height:1.2}.display-4{font-size:3.5rem;font-weight:300;line-height:1.2}hr{margin-top:1rem;margin-bottom:1rem;border:0;border-top:1px solid rgba(0,0,0,.1)}.small,small{font-size:80%;font-weight:400}.mark,mark{padding:.2em;background-color:#fcf8e3}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:90%;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote-footer{display:block;font-size:80%;color:#6c757d}.blockquote-footer::before{content:"\2014\00A0"}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:90%;color:#6c757d}code{font-size:87.5%;color:#e83e8c;word-wrap:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:87.5%;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:100%;font-weight:700}pre{display:block;font-size:87.5%;color:#212529}pre code{font-size:inherit;color:inherit;word-break:normal}.pre-scrollable{max-height:340px;overflow-y:scroll}.container,.container-fluid,.container-lg,.container-md,.container-sm,.container-xl{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:576px){.container,.container-sm{max-width:540px}}@media (min-width:768px){.container,.container-md,.container-sm{max-width:720px}}@media (min-width:992px){.container,.container-lg,.container-md,.container-sm{max-width:960px}}@media (min-width:1200px){.container,.container-lg,.container-md,.container-sm,.container-xl{max-width:1140px}}.row{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}.no-gutters{margin-right:0;margin-left:0}.no-gutters>.col,.no-gutters>[class*=col-]{padding-right:0;padding-left:0}.col,.col-1,.col-10,.col-11,.col-12,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-auto,.col-lg,.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-auto,.col-md,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-auto,.col-sm,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-auto,.col-xl,.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-auto{position:relative;width:100%;padding-right:15px;padding-left:15px}.col{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-3>*{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.row-cols-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-6>*{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-first{-ms-flex-order:-1;order:-1}.order-last{-ms-flex-order:13;order:13}.order-0{-ms-flex-order:0;order:0}.order-1{-ms-flex-order:1;order:1}.order-2{-ms-flex-order:2;order:2}.order-3{-ms-flex-order:3;order:3}.order-4{-ms-flex-order:4;order:4}.order-5{-ms-flex-order:5;order:5}.order-6{-ms-flex-order:6;order:6}.order-7{-ms-flex-order:7;order:7}.order-8{-ms-flex-order:8;order:8}.order-9{-ms-flex-order:9;order:9}.order-10{-ms-flex-order:10;order:10}.order-11{-ms-flex-order:11;order:11}.order-12{-ms-flex-order:12;order:12}.offset-1{margin-left:8.333333%}.offset-2{margin-left:16.666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.333333%}.offset-5{margin-left:41.666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.333333%}.offset-8{margin-left:66.666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.333333%}.offset-11{margin-left:91.666667%}@media (min-width:576px){.col-sm{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-sm-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-sm-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-sm-3>*{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.row-cols-sm-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-sm-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-sm-6>*{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-sm-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-sm-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-sm-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-sm-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-sm-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-sm-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-sm-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-sm-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-sm-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-sm-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-sm-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-sm-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-sm-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-sm-first{-ms-flex-order:-1;order:-1}.order-sm-last{-ms-flex-order:13;order:13}.order-sm-0{-ms-flex-order:0;order:0}.order-sm-1{-ms-flex-order:1;order:1}.order-sm-2{-ms-flex-order:2;order:2}.order-sm-3{-ms-flex-order:3;order:3}.order-sm-4{-ms-flex-order:4;order:4}.order-sm-5{-ms-flex-order:5;order:5}.order-sm-6{-ms-flex-order:6;order:6}.order-sm-7{-ms-flex-order:7;order:7}.order-sm-8{-ms-flex-order:8;order:8}.order-sm-9{-ms-flex-order:9;order:9}.order-sm-10{-ms-flex-order:10;order:10}.order-sm-11{-ms-flex-order:11;order:11}.order-sm-12{-ms-flex-order:12;order:12}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.333333%}.offset-sm-2{margin-left:16.666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.333333%}.offset-sm-5{margin-left:41.666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.333333%}.offset-sm-8{margin-left:66.666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.333333%}.offset-sm-11{margin-left:91.666667%}}@media (min-width:768px){.col-md{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-md-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-md-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-md-3>*{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.row-cols-md-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-md-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-md-6>*{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-md-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-md-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-md-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-md-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-md-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-md-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-md-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-md-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-md-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-md-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-md-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-md-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-md-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-md-first{-ms-flex-order:-1;order:-1}.order-md-last{-ms-flex-order:13;order:13}.order-md-0{-ms-flex-order:0;order:0}.order-md-1{-ms-flex-order:1;order:1}.order-md-2{-ms-flex-order:2;order:2}.order-md-3{-ms-flex-order:3;order:3}.order-md-4{-ms-flex-order:4;order:4}.order-md-5{-ms-flex-order:5;order:5}.order-md-6{-ms-flex-order:6;order:6}.order-md-7{-ms-flex-order:7;order:7}.order-md-8{-ms-flex-order:8;order:8}.order-md-9{-ms-flex-order:9;order:9}.order-md-10{-ms-flex-order:10;order:10}.order-md-11{-ms-flex-order:11;order:11}.order-md-12{-ms-flex-order:12;order:12}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.333333%}.offset-md-2{margin-left:16.666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.333333%}.offset-md-5{margin-left:41.666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.333333%}.offset-md-8{margin-left:66.666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.333333%}.offset-md-11{margin-left:91.666667%}}@media (min-width:992px){.col-lg{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-lg-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-lg-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-lg-3>*{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.row-cols-lg-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-lg-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-lg-6>*{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-lg-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-lg-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-lg-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-lg-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-lg-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-lg-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-lg-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-lg-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-lg-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-lg-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-lg-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-lg-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-lg-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-lg-first{-ms-flex-order:-1;order:-1}.order-lg-last{-ms-flex-order:13;order:13}.order-lg-0{-ms-flex-order:0;order:0}.order-lg-1{-ms-flex-order:1;order:1}.order-lg-2{-ms-flex-order:2;order:2}.order-lg-3{-ms-flex-order:3;order:3}.order-lg-4{-ms-flex-order:4;order:4}.order-lg-5{-ms-flex-order:5;order:5}.order-lg-6{-ms-flex-order:6;order:6}.order-lg-7{-ms-flex-order:7;order:7}.order-lg-8{-ms-flex-order:8;order:8}.order-lg-9{-ms-flex-order:9;order:9}.order-lg-10{-ms-flex-order:10;order:10}.order-lg-11{-ms-flex-order:11;order:11}.order-lg-12{-ms-flex-order:12;order:12}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.333333%}.offset-lg-2{margin-left:16.666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.333333%}.offset-lg-5{margin-left:41.666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.333333%}.offset-lg-8{margin-left:66.666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.333333%}.offset-lg-11{margin-left:91.666667%}}@media (min-width:1200px){.col-xl{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-xl-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-xl-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-xl-3>*{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.row-cols-xl-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-xl-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-xl-6>*{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-xl-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-xl-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-xl-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-xl-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-xl-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-xl-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-xl-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-xl-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-xl-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-xl-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-xl-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-xl-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-xl-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-xl-first{-ms-flex-order:-1;order:-1}.order-xl-last{-ms-flex-order:13;order:13}.order-xl-0{-ms-flex-order:0;order:0}.order-xl-1{-ms-flex-order:1;order:1}.order-xl-2{-ms-flex-order:2;order:2}.order-xl-3{-ms-flex-order:3;order:3}.order-xl-4{-ms-flex-order:4;order:4}.order-xl-5{-ms-flex-order:5;order:5}.order-xl-6{-ms-flex-order:6;order:6}.order-xl-7{-ms-flex-order:7;order:7}.order-xl-8{-ms-flex-order:8;order:8}.order-xl-9{-ms-flex-order:9;order:9}.order-xl-10{-ms-flex-order:10;order:10}.order-xl-11{-ms-flex-order:11;order:11}.order-xl-12{-ms-flex-order:12;order:12}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.333333%}.offset-xl-2{margin-left:16.666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.333333%}.offset-xl-5{margin-left:41.666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.333333%}.offset-xl-8{margin-left:66.666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.333333%}.offset-xl-11{margin-left:91.666667%}}.table{width:100%;margin-bottom:1rem;color:#212529}.table td,.table th{padding:.75rem;vertical-align:top;border-top:1px solid #dee2e6}.table thead th{vertical-align:bottom;border-bottom:2px solid #dee2e6}.table tbody+tbody{border-top:2px solid #dee2e6}.table-sm td,.table-sm th{padding:.3rem}.table-bordered{border:1px solid #dee2e6}.table-bordered td,.table-bordered th{border:1px solid #dee2e6}.table-bordered thead td,.table-bordered thead th{border-bottom-width:2px}.table-borderless tbody+tbody,.table-borderless td,.table-borderless th,.table-borderless thead th{border:0}.table-striped tbody tr:nth-of-type(odd){background-color:rgba(0,0,0,.05)}.table-hover tbody tr:hover{color:#212529;background-color:rgba(0,0,0,.075)}.table-primary,.table-primary>td,.table-primary>th{background-color:#b8daff}.table-primary tbody+tbody,.table-primary td,.table-primary th,.table-primary thead th{border-color:#7abaff}.table-hover .table-primary:hover{background-color:#9fcdff}.table-hover .table-primary:hover>td,.table-hover .table-primary:hover>th{background-color:#9fcdff}.table-secondary,.table-secondary>td,.table-secondary>th{background-color:#d6d8db}.table-secondary tbody+tbody,.table-secondary td,.table-secondary th,.table-secondary thead th{border-color:#b3b7bb}.table-hover .table-secondary:hover{background-color:#c8cbcf}.table-hover .table-secondary:hover>td,.table-hover .table-secondary:hover>th{background-color:#c8cbcf}.table-success,.table-success>td,.table-success>th{background-color:#c3e6cb}.table-success tbody+tbody,.table-success td,.table-success th,.table-success thead th{border-color:#8fd19e}.table-hover .table-success:hover{background-color:#b1dfbb}.table-hover .table-success:hover>td,.table-hover .table-success:hover>th{background-color:#b1dfbb}.table-info,.table-info>td,.table-info>th{background-color:#bee5eb}.table-info tbody+tbody,.table-info td,.table-info th,.table-info thead th{border-color:#86cfda}.table-hover .table-info:hover{background-color:#abdde5}.table-hover .table-info:hover>td,.table-hover .table-info:hover>th{background-color:#abdde5}.table-warning,.table-warning>td,.table-warning>th{background-color:#ffeeba}.table-warning tbody+tbody,.table-warning td,.table-warning th,.table-warning thead th{border-color:#ffdf7e}.table-hover .table-warning:hover{background-color:#ffe8a1}.table-hover .table-warning:hover>td,.table-hover .table-warning:hover>th{background-color:#ffe8a1}.table-danger,.table-danger>td,.table-danger>th{background-color:#f5c6cb}.table-danger tbody+tbody,.table-danger td,.table-danger th,.table-danger thead th{border-color:#ed969e}.table-hover .table-danger:hover{background-color:#f1b0b7}.table-hover .table-danger:hover>td,.table-hover .table-danger:hover>th{background-color:#f1b0b7}.table-light,.table-light>td,.table-light>th{background-color:#fdfdfe}.table-light tbody+tbody,.table-light td,.table-light th,.table-light thead th{border-color:#fbfcfc}.table-hover .table-light:hover{background-color:#ececf6}.table-hover .table-light:hover>td,.table-hover .table-light:hover>th{background-color:#ececf6}.table-dark,.table-dark>td,.table-dark>th{background-color:#c6c8ca}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#95999c}.table-hover .table-dark:hover{background-color:#b9bbbe}.table-hover .table-dark:hover>td,.table-hover .table-dark:hover>th{background-color:#b9bbbe}.table-active,.table-active>td,.table-active>th{background-color:rgba(0,0,0,.075)}.table-hover .table-active:hover{background-color:rgba(0,0,0,.075)}.table-hover .table-active:hover>td,.table-hover .table-active:hover>th{background-color:rgba(0,0,0,.075)}.table .thead-dark th{color:#fff;background-color:#343a40;border-color:#454d55}.table .thead-light th{color:#495057;background-color:#e9ecef;border-color:#dee2e6}.table-dark{color:#fff;background-color:#343a40}.table-dark td,.table-dark th,.table-dark thead th{border-color:#454d55}.table-dark.table-bordered{border:0}.table-dark.table-striped tbody tr:nth-of-type(odd){background-color:rgba(255,255,255,.05)}.table-dark.table-hover tbody tr:hover{color:#fff;background-color:rgba(255,255,255,.075)}@media (max-width:575.98px){.table-responsive-sm{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-sm>.table-bordered{border:0}}@media (max-width:767.98px){.table-responsive-md{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-md>.table-bordered{border:0}}@media (max-width:991.98px){.table-responsive-lg{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-lg>.table-bordered{border:0}}@media (max-width:1199.98px){.table-responsive-xl{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-xl>.table-bordered{border:0}}.table-responsive{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive>.table-bordered{border:0}.form-control{display:block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control{transition:none}}.form-control::-ms-expand{background-color:transparent;border:0}.form-control:focus{color:#495057;background-color:#fff;border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.form-control::-webkit-input-placeholder{color:#6c757d;opacity:1}.form-control::-moz-placeholder{color:#6c757d;opacity:1}.form-control:-ms-input-placeholder{color:#6c757d;opacity:1}.form-control::-ms-input-placeholder{color:#6c757d;opacity:1}.form-control::placeholder{color:#6c757d;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#e9ecef;opacity:1}input[type=date].form-control,input[type=datetime-local].form-control,input[type=month].form-control,input[type=time].form-control{-webkit-appearance:none;-moz-appearance:none;appearance:none}select.form-control:-moz-focusring{color:transparent;text-shadow:0 0 0 #495057}select.form-control:focus::-ms-value{color:#495057;background-color:#fff}.form-control-file,.form-control-range{display:block;width:100%}.col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem;line-height:1.5}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem;line-height:1.5}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;font-size:1rem;line-height:1.5;color:#212529;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm{padding-right:0;padding-left:0}.form-control-sm{height:calc(1.5em + .5rem + 2px);padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.form-control-lg{height:calc(1.5em + 1rem + 2px);padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}select.form-control[multiple],select.form-control[size]{height:auto}textarea.form-control{height:auto}.form-group{margin-bottom:1rem}.form-text{display:block;margin-top:.25rem}.form-row{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-5px;margin-left:-5px}.form-row>.col,.form-row>[class*=col-]{padding-right:5px;padding-left:5px}.form-check{position:relative;display:block;padding-left:1.25rem}.form-check-input{position:absolute;margin-top:.3rem;margin-left:-1.25rem}.form-check-input:disabled~.form-check-label,.form-check-input[disabled]~.form-check-label{color:#6c757d}.form-check-label{margin-bottom:0}.form-check-inline{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;padding-left:0;margin-right:.75rem}.form-check-inline .form-check-input{position:static;margin-top:0;margin-right:.3125rem;margin-left:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#28a745}.valid-tooltip{position:absolute;top:100%;left:0;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:rgba(40,167,69,.9);border-radius:.25rem}.form-row>.col>.valid-tooltip,.form-row>[class*=col-]>.valid-tooltip{left:5px}.is-valid~.valid-feedback,.is-valid~.valid-tooltip,.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip{display:block}.form-control.is-valid,.was-validated .form-control:valid{border-color:#28a745;padding-right:calc(1.5em + .75rem)!important;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-valid:focus,.was-validated .form-control:valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.was-validated select.form-control:valid,select.form-control.is-valid{padding-right:3rem!important;background-position:right 1.5rem center}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.custom-select.is-valid,.was-validated .custom-select:valid{border-color:#28a745;padding-right:calc(.75em + 2.3125rem)!important;background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") right .75rem center/8px 10px no-repeat,#fff url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e") center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem) no-repeat}.custom-select.is-valid:focus,.was-validated .custom-select:valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:#28a745}.form-check-input.is-valid~.valid-feedback,.form-check-input.is-valid~.valid-tooltip,.was-validated .form-check-input:valid~.valid-feedback,.was-validated .form-check-input:valid~.valid-tooltip{display:block}.custom-control-input.is-valid~.custom-control-label,.was-validated .custom-control-input:valid~.custom-control-label{color:#28a745}.custom-control-input.is-valid~.custom-control-label::before,.was-validated .custom-control-input:valid~.custom-control-label::before{border-color:#28a745}.custom-control-input.is-valid:checked~.custom-control-label::before,.was-validated .custom-control-input:valid:checked~.custom-control-label::before{border-color:#34ce57;background-color:#34ce57}.custom-control-input.is-valid:focus~.custom-control-label::before,.was-validated .custom-control-input:valid:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.custom-control-input.is-valid:focus:not(:checked)~.custom-control-label::before,.was-validated .custom-control-input:valid:focus:not(:checked)~.custom-control-label::before{border-color:#28a745}.custom-file-input.is-valid~.custom-file-label,.was-validated .custom-file-input:valid~.custom-file-label{border-color:#28a745}.custom-file-input.is-valid:focus~.custom-file-label,.was-validated .custom-file-input:valid:focus~.custom-file-label{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#dc3545}.invalid-tooltip{position:absolute;top:100%;left:0;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:rgba(220,53,69,.9);border-radius:.25rem}.form-row>.col>.invalid-tooltip,.form-row>[class*=col-]>.invalid-tooltip{left:5px}.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip,.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip{display:block}.form-control.is-invalid,.was-validated .form-control:invalid{border-color:#dc3545;padding-right:calc(1.5em + .75rem)!important;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-invalid:focus,.was-validated .form-control:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.was-validated select.form-control:invalid,select.form-control.is-invalid{padding-right:3rem!important;background-position:right 1.5rem center}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.custom-select.is-invalid,.was-validated .custom-select:invalid{border-color:#dc3545;padding-right:calc(.75em + 2.3125rem)!important;background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") right .75rem center/8px 10px no-repeat,#fff url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e") center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem) no-repeat}.custom-select.is-invalid:focus,.was-validated .custom-select:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:#dc3545}.form-check-input.is-invalid~.invalid-feedback,.form-check-input.is-invalid~.invalid-tooltip,.was-validated .form-check-input:invalid~.invalid-feedback,.was-validated .form-check-input:invalid~.invalid-tooltip{display:block}.custom-control-input.is-invalid~.custom-control-label,.was-validated .custom-control-input:invalid~.custom-control-label{color:#dc3545}.custom-control-input.is-invalid~.custom-control-label::before,.was-validated .custom-control-input:invalid~.custom-control-label::before{border-color:#dc3545}.custom-control-input.is-invalid:checked~.custom-control-label::before,.was-validated .custom-control-input:invalid:checked~.custom-control-label::before{border-color:#e4606d;background-color:#e4606d}.custom-control-input.is-invalid:focus~.custom-control-label::before,.was-validated .custom-control-input:invalid:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.custom-control-input.is-invalid:focus:not(:checked)~.custom-control-label::before,.was-validated .custom-control-input:invalid:focus:not(:checked)~.custom-control-label::before{border-color:#dc3545}.custom-file-input.is-invalid~.custom-file-label,.was-validated .custom-file-input:invalid~.custom-file-label{border-color:#dc3545}.custom-file-input.is-invalid:focus~.custom-file-label,.was-validated .custom-file-input:invalid:focus~.custom-file-label{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.form-inline{display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap;-ms-flex-align:center;align-items:center}.form-inline .form-check{width:100%}@media (min-width:576px){.form-inline label{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;margin-bottom:0}.form-inline .form-group{display:-ms-flexbox;display:flex;-ms-flex:0 0 auto;flex:0 0 auto;-ms-flex-flow:row wrap;flex-flow:row wrap;-ms-flex-align:center;align-items:center;margin-bottom:0}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-plaintext{display:inline-block}.form-inline .custom-select,.form-inline .input-group{width:auto}.form-inline .form-check{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:auto;padding-left:0}.form-inline .form-check-input{position:relative;-ms-flex-negative:0;flex-shrink:0;margin-top:0;margin-right:.25rem;margin-left:0}.form-inline .custom-control{-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}.form-inline .custom-control-label{margin-bottom:0}}.btn{display:inline-block;font-weight:400;color:#212529;text-align:center;vertical-align:middle;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:transparent;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;line-height:1.5;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.btn{transition:none}}.btn:hover{color:#212529;text-decoration:none}.btn.focus,.btn:focus{outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.btn.disabled,.btn:disabled{opacity:.65}.btn:not(:disabled):not(.disabled){cursor:pointer}a.btn.disabled,fieldset:disabled a.btn{pointer-events:none}.btn-primary{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:hover{color:#fff;background-color:#0069d9;border-color:#0062cc}.btn-primary.focus,.btn-primary:focus{color:#fff;background-color:#0069d9;border-color:#0062cc;box-shadow:0 0 0 .2rem rgba(38,143,255,.5)}.btn-primary.disabled,.btn-primary:disabled{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:not(:disabled):not(.disabled).active,.btn-primary:not(:disabled):not(.disabled):active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#0062cc;border-color:#005cbf}.btn-primary:not(:disabled):not(.disabled).active:focus,.btn-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(38,143,255,.5)}.btn-secondary{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:hover{color:#fff;background-color:#5a6268;border-color:#545b62}.btn-secondary.focus,.btn-secondary:focus{color:#fff;background-color:#5a6268;border-color:#545b62;box-shadow:0 0 0 .2rem rgba(130,138,145,.5)}.btn-secondary.disabled,.btn-secondary:disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:not(:disabled):not(.disabled).active,.btn-secondary:not(:disabled):not(.disabled):active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#545b62;border-color:#4e555b}.btn-secondary:not(:disabled):not(.disabled).active:focus,.btn-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(130,138,145,.5)}.btn-success{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:hover{color:#fff;background-color:#218838;border-color:#1e7e34}.btn-success.focus,.btn-success:focus{color:#fff;background-color:#218838;border-color:#1e7e34;box-shadow:0 0 0 .2rem rgba(72,180,97,.5)}.btn-success.disabled,.btn-success:disabled{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:not(:disabled):not(.disabled).active,.btn-success:not(:disabled):not(.disabled):active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#1e7e34;border-color:#1c7430}.btn-success:not(:disabled):not(.disabled).active:focus,.btn-success:not(:disabled):not(.disabled):active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(72,180,97,.5)}.btn-info{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:hover{color:#fff;background-color:#138496;border-color:#117a8b}.btn-info.focus,.btn-info:focus{color:#fff;background-color:#138496;border-color:#117a8b;box-shadow:0 0 0 .2rem rgba(58,176,195,.5)}.btn-info.disabled,.btn-info:disabled{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:not(:disabled):not(.disabled).active,.btn-info:not(:disabled):not(.disabled):active,.show>.btn-info.dropdown-toggle{color:#fff;background-color:#117a8b;border-color:#10707f}.btn-info:not(:disabled):not(.disabled).active:focus,.btn-info:not(:disabled):not(.disabled):active:focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(58,176,195,.5)}.btn-warning{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:hover{color:#212529;background-color:#e0a800;border-color:#d39e00}.btn-warning.focus,.btn-warning:focus{color:#212529;background-color:#e0a800;border-color:#d39e00;box-shadow:0 0 0 .2rem rgba(222,170,12,.5)}.btn-warning.disabled,.btn-warning:disabled{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:not(:disabled):not(.disabled).active,.btn-warning:not(:disabled):not(.disabled):active,.show>.btn-warning.dropdown-toggle{color:#212529;background-color:#d39e00;border-color:#c69500}.btn-warning:not(:disabled):not(.disabled).active:focus,.btn-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(222,170,12,.5)}.btn-danger{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:hover{color:#fff;background-color:#c82333;border-color:#bd2130}.btn-danger.focus,.btn-danger:focus{color:#fff;background-color:#c82333;border-color:#bd2130;box-shadow:0 0 0 .2rem rgba(225,83,97,.5)}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:not(:disabled):not(.disabled).active,.btn-danger:not(:disabled):not(.disabled):active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#bd2130;border-color:#b21f2d}.btn-danger:not(:disabled):not(.disabled).active:focus,.btn-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(225,83,97,.5)}.btn-light{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:hover{color:#212529;background-color:#e2e6ea;border-color:#dae0e5}.btn-light.focus,.btn-light:focus{color:#212529;background-color:#e2e6ea;border-color:#dae0e5;box-shadow:0 0 0 .2rem rgba(216,217,219,.5)}.btn-light.disabled,.btn-light:disabled{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:not(:disabled):not(.disabled).active,.btn-light:not(:disabled):not(.disabled):active,.show>.btn-light.dropdown-toggle{color:#212529;background-color:#dae0e5;border-color:#d3d9df}.btn-light:not(:disabled):not(.disabled).active:focus,.btn-light:not(:disabled):not(.disabled):active:focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(216,217,219,.5)}.btn-dark{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:hover{color:#fff;background-color:#23272b;border-color:#1d2124}.btn-dark.focus,.btn-dark:focus{color:#fff;background-color:#23272b;border-color:#1d2124;box-shadow:0 0 0 .2rem rgba(82,88,93,.5)}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:not(:disabled):not(.disabled).active,.btn-dark:not(:disabled):not(.disabled):active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#1d2124;border-color:#171a1d}.btn-dark:not(:disabled):not(.disabled).active:focus,.btn-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(82,88,93,.5)}.btn-outline-primary{color:#007bff;border-color:#007bff}.btn-outline-primary:hover{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary.focus,.btn-outline-primary:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#007bff;background-color:transparent}.btn-outline-primary:not(:disabled):not(.disabled).active,.btn-outline-primary:not(:disabled):not(.disabled):active,.show>.btn-outline-primary.dropdown-toggle{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary:not(:disabled):not(.disabled).active:focus,.btn-outline-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-outline-secondary{color:#6c757d;border-color:#6c757d}.btn-outline-secondary:hover{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary.focus,.btn-outline-secondary:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#6c757d;background-color:transparent}.btn-outline-secondary:not(:disabled):not(.disabled).active,.btn-outline-secondary:not(:disabled):not(.disabled):active,.show>.btn-outline-secondary.dropdown-toggle{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary:not(:disabled):not(.disabled).active:focus,.btn-outline-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-outline-success{color:#28a745;border-color:#28a745}.btn-outline-success:hover{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success.focus,.btn-outline-success:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#28a745;background-color:transparent}.btn-outline-success:not(:disabled):not(.disabled).active,.btn-outline-success:not(:disabled):not(.disabled):active,.show>.btn-outline-success.dropdown-toggle{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success:not(:disabled):not(.disabled).active:focus,.btn-outline-success:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-outline-info{color:#17a2b8;border-color:#17a2b8}.btn-outline-info:hover{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info.focus,.btn-outline-info:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#17a2b8;background-color:transparent}.btn-outline-info:not(:disabled):not(.disabled).active,.btn-outline-info:not(:disabled):not(.disabled):active,.show>.btn-outline-info.dropdown-toggle{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info:not(:disabled):not(.disabled).active:focus,.btn-outline-info:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-outline-warning{color:#ffc107;border-color:#ffc107}.btn-outline-warning:hover{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning.focus,.btn-outline-warning:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#ffc107;background-color:transparent}.btn-outline-warning:not(:disabled):not(.disabled).active,.btn-outline-warning:not(:disabled):not(.disabled):active,.show>.btn-outline-warning.dropdown-toggle{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning:not(:disabled):not(.disabled).active:focus,.btn-outline-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-outline-danger{color:#dc3545;border-color:#dc3545}.btn-outline-danger:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger.focus,.btn-outline-danger:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#dc3545;background-color:transparent}.btn-outline-danger:not(:disabled):not(.disabled).active,.btn-outline-danger:not(:disabled):not(.disabled):active,.show>.btn-outline-danger.dropdown-toggle{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger:not(:disabled):not(.disabled).active:focus,.btn-outline-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-outline-light{color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:hover{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light.focus,.btn-outline-light:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#f8f9fa;background-color:transparent}.btn-outline-light:not(:disabled):not(.disabled).active,.btn-outline-light:not(:disabled):not(.disabled):active,.show>.btn-outline-light.dropdown-toggle{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:not(:disabled):not(.disabled).active:focus,.btn-outline-light:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-dark{color:#343a40;border-color:#343a40}.btn-outline-dark:hover{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark.focus,.btn-outline-dark:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#343a40;background-color:transparent}.btn-outline-dark:not(:disabled):not(.disabled).active,.btn-outline-dark:not(:disabled):not(.disabled):active,.show>.btn-outline-dark.dropdown-toggle{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark:not(:disabled):not(.disabled).active:focus,.btn-outline-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-link{font-weight:400;color:#007bff;text-decoration:none}.btn-link:hover{color:#0056b3;text-decoration:underline}.btn-link.focus,.btn-link:focus{text-decoration:underline}.btn-link.disabled,.btn-link:disabled{color:#6c757d;pointer-events:none}.btn-group-lg>.btn,.btn-lg{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.btn-group-sm>.btn,.btn-sm{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:.5rem}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{transition:opacity .15s linear}@media (prefers-reduced-motion:reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{position:relative;height:0;overflow:hidden;transition:height .35s ease}@media (prefers-reduced-motion:reduce){.collapsing{transition:none}}.dropdown,.dropleft,.dropright,.dropup{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:10rem;padding:.5rem 0;margin:.125rem 0 0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.dropdown-menu-left{right:auto;left:0}.dropdown-menu-right{right:0;left:auto}@media (min-width:576px){.dropdown-menu-sm-left{right:auto;left:0}.dropdown-menu-sm-right{right:0;left:auto}}@media (min-width:768px){.dropdown-menu-md-left{right:auto;left:0}.dropdown-menu-md-right{right:0;left:auto}}@media (min-width:992px){.dropdown-menu-lg-left{right:auto;left:0}.dropdown-menu-lg-right{right:0;left:auto}}@media (min-width:1200px){.dropdown-menu-xl-left{right:auto;left:0}.dropdown-menu-xl-right{right:0;left:auto}}.dropup .dropdown-menu{top:auto;bottom:100%;margin-top:0;margin-bottom:.125rem}.dropup .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-menu{top:0;right:auto;left:100%;margin-top:0;margin-left:.125rem}.dropright .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}.dropright .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-toggle::after{vertical-align:0}.dropleft .dropdown-menu{top:0;right:100%;left:auto;margin-top:0;margin-right:.125rem}.dropleft .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}.dropleft .dropdown-toggle::after{display:none}.dropleft .dropdown-toggle::before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropleft .dropdown-toggle:empty::after{margin-left:0}.dropleft .dropdown-toggle::before{vertical-align:0}.dropdown-menu[x-placement^=bottom],.dropdown-menu[x-placement^=left],.dropdown-menu[x-placement^=right],.dropdown-menu[x-placement^=top]{right:auto;bottom:auto}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid #e9ecef}.dropdown-item{display:block;width:100%;padding:.25rem 1.5rem;clear:both;font-weight:400;color:#212529;text-align:inherit;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:focus,.dropdown-item:hover{color:#16181b;text-decoration:none;background-color:#e9ecef}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#007bff}.dropdown-item.disabled,.dropdown-item:disabled{color:#adb5bd;pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1.5rem;margin-bottom:0;font-size:.875rem;color:#6c757d;white-space:nowrap}.dropdown-item-text{display:block;padding:.25rem 1.5rem;color:#212529}.btn-group,.btn-group-vertical{position:relative;display:-ms-inline-flexbox;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;-ms-flex:1 1 auto;flex:1 1 auto}.btn-group-vertical>.btn:hover,.btn-group>.btn:hover{z-index:1}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus{z-index:1}.btn-toolbar{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-pack:start;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn-group:not(:first-child),.btn-group>.btn:not(:first-child){margin-left:-1px}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after,.dropright .dropdown-toggle-split::after,.dropup .dropdown-toggle-split::after{margin-left:0}.dropleft .dropdown-toggle-split::before{margin-right:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{-ms-flex-direction:column;flex-direction:column;-ms-flex-align:start;align-items:flex-start;-ms-flex-pack:center;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn-group:not(:first-child),.btn-group-vertical>.btn:not(:first-child){margin-top:-1px}.btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn:not(:first-child){border-top-left-radius:0;border-top-right-radius:0}.btn-group-toggle>.btn,.btn-group-toggle>.btn-group>.btn{margin-bottom:0}.btn-group-toggle>.btn input[type=checkbox],.btn-group-toggle>.btn input[type=radio],.btn-group-toggle>.btn-group>.btn input[type=checkbox],.btn-group-toggle>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:stretch;align-items:stretch;width:100%}.input-group>.custom-file,.input-group>.custom-select,.input-group>.form-control,.input-group>.form-control-plaintext{position:relative;-ms-flex:1 1 auto;flex:1 1 auto;width:1%;min-width:0;margin-bottom:0}.input-group>.custom-file+.custom-file,.input-group>.custom-file+.custom-select,.input-group>.custom-file+.form-control,.input-group>.custom-select+.custom-file,.input-group>.custom-select+.custom-select,.input-group>.custom-select+.form-control,.input-group>.form-control+.custom-file,.input-group>.form-control+.custom-select,.input-group>.form-control+.form-control,.input-group>.form-control-plaintext+.custom-file,.input-group>.form-control-plaintext+.custom-select,.input-group>.form-control-plaintext+.form-control{margin-left:-1px}.input-group>.custom-file .custom-file-input:focus~.custom-file-label,.input-group>.custom-select:focus,.input-group>.form-control:focus{z-index:3}.input-group>.custom-file .custom-file-input:focus{z-index:4}.input-group>.custom-select:not(:first-child),.input-group>.form-control:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.custom-file{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.input-group>.custom-file:not(:last-child) .custom-file-label,.input-group>.custom-file:not(:last-child) .custom-file-label::after{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-file:not(:first-child) .custom-file-label{border-top-left-radius:0;border-bottom-left-radius:0}.input-group:not(.has-validation)>.custom-file:not(:last-child) .custom-file-label,.input-group:not(.has-validation)>.custom-file:not(:last-child) .custom-file-label::after,.input-group:not(.has-validation)>.custom-select:not(:last-child),.input-group:not(.has-validation)>.form-control:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group.has-validation>.custom-file:nth-last-child(n+3) .custom-file-label,.input-group.has-validation>.custom-file:nth-last-child(n+3) .custom-file-label::after,.input-group.has-validation>.custom-select:nth-last-child(n+3),.input-group.has-validation>.form-control:nth-last-child(n+3){border-top-right-radius:0;border-bottom-right-radius:0}.input-group-append,.input-group-prepend{display:-ms-flexbox;display:flex}.input-group-append .btn,.input-group-prepend .btn{position:relative;z-index:2}.input-group-append .btn:focus,.input-group-prepend .btn:focus{z-index:3}.input-group-append .btn+.btn,.input-group-append .btn+.input-group-text,.input-group-append .input-group-text+.btn,.input-group-append .input-group-text+.input-group-text,.input-group-prepend .btn+.btn,.input-group-prepend .btn+.input-group-text,.input-group-prepend .input-group-text+.btn,.input-group-prepend .input-group-text+.input-group-text{margin-left:-1px}.input-group-prepend{margin-right:-1px}.input-group-append{margin-left:-1px}.input-group-text{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;padding:.375rem .75rem;margin-bottom:0;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.25rem}.input-group-text input[type=checkbox],.input-group-text input[type=radio]{margin-top:0}.input-group-lg>.custom-select,.input-group-lg>.form-control:not(textarea){height:calc(1.5em + 1rem + 2px)}.input-group-lg>.custom-select,.input-group-lg>.form-control,.input-group-lg>.input-group-append>.btn,.input-group-lg>.input-group-append>.input-group-text,.input-group-lg>.input-group-prepend>.btn,.input-group-lg>.input-group-prepend>.input-group-text{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.input-group-sm>.custom-select,.input-group-sm>.form-control:not(textarea){height:calc(1.5em + .5rem + 2px)}.input-group-sm>.custom-select,.input-group-sm>.form-control,.input-group-sm>.input-group-append>.btn,.input-group-sm>.input-group-append>.input-group-text,.input-group-sm>.input-group-prepend>.btn,.input-group-sm>.input-group-prepend>.input-group-text{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.input-group-lg>.custom-select,.input-group-sm>.custom-select{padding-right:1.75rem}.input-group.has-validation>.input-group-append:nth-last-child(n+3)>.btn,.input-group.has-validation>.input-group-append:nth-last-child(n+3)>.input-group-text,.input-group:not(.has-validation)>.input-group-append:not(:last-child)>.btn,.input-group:not(.has-validation)>.input-group-append:not(:last-child)>.input-group-text,.input-group>.input-group-append:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group>.input-group-append:last-child>.input-group-text:not(:last-child),.input-group>.input-group-prepend>.btn,.input-group>.input-group-prepend>.input-group-text{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.input-group-append>.btn,.input-group>.input-group-append>.input-group-text,.input-group>.input-group-prepend:first-child>.btn:not(:first-child),.input-group>.input-group-prepend:first-child>.input-group-text:not(:first-child),.input-group>.input-group-prepend:not(:first-child)>.btn,.input-group>.input-group-prepend:not(:first-child)>.input-group-text{border-top-left-radius:0;border-bottom-left-radius:0}.custom-control{position:relative;z-index:1;display:block;min-height:1.5rem;padding-left:1.5rem;-webkit-print-color-adjust:exact;color-adjust:exact}.custom-control-inline{display:-ms-inline-flexbox;display:inline-flex;margin-right:1rem}.custom-control-input{position:absolute;left:0;z-index:-1;width:1rem;height:1.25rem;opacity:0}.custom-control-input:checked~.custom-control-label::before{color:#fff;border-color:#007bff;background-color:#007bff}.custom-control-input:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-control-input:focus:not(:checked)~.custom-control-label::before{border-color:#80bdff}.custom-control-input:not(:disabled):active~.custom-control-label::before{color:#fff;background-color:#b3d7ff;border-color:#b3d7ff}.custom-control-input:disabled~.custom-control-label,.custom-control-input[disabled]~.custom-control-label{color:#6c757d}.custom-control-input:disabled~.custom-control-label::before,.custom-control-input[disabled]~.custom-control-label::before{background-color:#e9ecef}.custom-control-label{position:relative;margin-bottom:0;vertical-align:top}.custom-control-label::before{position:absolute;top:.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;pointer-events:none;content:"";background-color:#fff;border:#adb5bd solid 1px}.custom-control-label::after{position:absolute;top:.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;content:"";background:50%/50% 50% no-repeat}.custom-checkbox .custom-control-label::before{border-radius:.25rem}.custom-checkbox .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3e%3c/svg%3e")}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::before{border-color:#007bff;background-color:#007bff}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='4' viewBox='0 0 4 4'%3e%3cpath stroke='%23fff' d='M0 2h4'/%3e%3c/svg%3e")}.custom-checkbox .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-checkbox .custom-control-input:disabled:indeterminate~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-radio .custom-control-label::before{border-radius:50%}.custom-radio .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.custom-radio .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-switch{padding-left:2.25rem}.custom-switch .custom-control-label::before{left:-2.25rem;width:1.75rem;pointer-events:all;border-radius:.5rem}.custom-switch .custom-control-label::after{top:calc(.25rem + 2px);left:calc(-2.25rem + 2px);width:calc(1rem - 4px);height:calc(1rem - 4px);background-color:#adb5bd;border-radius:.5rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-transform .15s ease-in-out;transition:transform .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:transform .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-transform .15s ease-in-out}@media (prefers-reduced-motion:reduce){.custom-switch .custom-control-label::after{transition:none}}.custom-switch .custom-control-input:checked~.custom-control-label::after{background-color:#fff;-webkit-transform:translateX(.75rem);transform:translateX(.75rem)}.custom-switch .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-select{display:inline-block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem 1.75rem .375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;vertical-align:middle;background:#fff url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") right .75rem center/8px 10px no-repeat;border:1px solid #ced4da;border-radius:.25rem;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-select:focus{border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-select:focus::-ms-value{color:#495057;background-color:#fff}.custom-select[multiple],.custom-select[size]:not([size="1"]){height:auto;padding-right:.75rem;background-image:none}.custom-select:disabled{color:#6c757d;background-color:#e9ecef}.custom-select::-ms-expand{display:none}.custom-select:-moz-focusring{color:transparent;text-shadow:0 0 0 #495057}.custom-select-sm{height:calc(1.5em + .5rem + 2px);padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem}.custom-select-lg{height:calc(1.5em + 1rem + 2px);padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem}.custom-file{position:relative;display:inline-block;width:100%;height:calc(1.5em + .75rem + 2px);margin-bottom:0}.custom-file-input{position:relative;z-index:2;width:100%;height:calc(1.5em + .75rem + 2px);margin:0;overflow:hidden;opacity:0}.custom-file-input:focus~.custom-file-label{border-color:#80bdff;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-file-input:disabled~.custom-file-label,.custom-file-input[disabled]~.custom-file-label{background-color:#e9ecef}.custom-file-input:lang(en)~.custom-file-label::after{content:"Browse"}.custom-file-input~.custom-file-label[data-browse]::after{content:attr(data-browse)}.custom-file-label{position:absolute;top:0;right:0;left:0;z-index:1;height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem;overflow:hidden;font-weight:400;line-height:1.5;color:#495057;background-color:#fff;border:1px solid #ced4da;border-radius:.25rem}.custom-file-label::after{position:absolute;top:0;right:0;bottom:0;z-index:3;display:block;height:calc(1.5em + .75rem);padding:.375rem .75rem;line-height:1.5;color:#495057;content:"Browse";background-color:#e9ecef;border-left:inherit;border-radius:0 .25rem .25rem 0}.custom-range{width:100%;height:1.4rem;padding:0;background-color:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-range:focus{outline:0}.custom-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range:focus::-ms-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range::-moz-focus-outer{border:0}.custom-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#007bff;border:0;border-radius:1rem;-webkit-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-webkit-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-webkit-slider-thumb{-webkit-transition:none;transition:none}}.custom-range::-webkit-slider-thumb:active{background-color:#b3d7ff}.custom-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.custom-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#007bff;border:0;border-radius:1rem;-moz-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-moz-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-moz-range-thumb{-moz-transition:none;transition:none}}.custom-range::-moz-range-thumb:active{background-color:#b3d7ff}.custom-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.custom-range::-ms-thumb{width:1rem;height:1rem;margin-top:0;margin-right:.2rem;margin-left:.2rem;background-color:#007bff;border:0;border-radius:1rem;-ms-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-ms-thumb{-ms-transition:none;transition:none}}.custom-range::-ms-thumb:active{background-color:#b3d7ff}.custom-range::-ms-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:transparent;border-color:transparent;border-width:.5rem}.custom-range::-ms-fill-lower{background-color:#dee2e6;border-radius:1rem}.custom-range::-ms-fill-upper{margin-right:15px;background-color:#dee2e6;border-radius:1rem}.custom-range:disabled::-webkit-slider-thumb{background-color:#adb5bd}.custom-range:disabled::-webkit-slider-runnable-track{cursor:default}.custom-range:disabled::-moz-range-thumb{background-color:#adb5bd}.custom-range:disabled::-moz-range-track{cursor:default}.custom-range:disabled::-ms-thumb{background-color:#adb5bd}.custom-control-label::before,.custom-file-label,.custom-select{transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.custom-control-label::before,.custom-file-label,.custom-select{transition:none}}.nav{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5rem 1rem}.nav-link:focus,.nav-link:hover{text-decoration:none}.nav-link.disabled{color:#6c757d;pointer-events:none;cursor:default}.nav-tabs{border-bottom:1px solid #dee2e6}.nav-tabs .nav-link{margin-bottom:-1px;border:1px solid transparent;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{border-color:#e9ecef #e9ecef #dee2e6}.nav-tabs .nav-link.disabled{color:#6c757d;background-color:transparent;border-color:transparent}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:#495057;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{border-radius:.25rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#007bff}.nav-fill .nav-item,.nav-fill>.nav-link{-ms-flex:1 1 auto;flex:1 1 auto;text-align:center}.nav-justified .nav-item,.nav-justified>.nav-link{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;text-align:center}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between;padding:.5rem 1rem}.navbar .container,.navbar .container-fluid,.navbar .container-lg,.navbar .container-md,.navbar .container-sm,.navbar .container-xl{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between}.navbar-brand{display:inline-block;padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;line-height:inherit;white-space:nowrap}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-nav{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static;float:none}.navbar-text{display:inline-block;padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{-ms-flex-preferred-size:100%;flex-basis:100%;-ms-flex-positive:1;flex-grow:1;-ms-flex-align:center;align-items:center}.navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.25rem}.navbar-toggler:focus,.navbar-toggler:hover{text-decoration:none}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;content:"";background:50%/100% 100% no-repeat}.navbar-nav-scroll{max-height:75vh;overflow-y:auto}@media (max-width:575.98px){.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid,.navbar-expand-sm>.container-lg,.navbar-expand-sm>.container-md,.navbar-expand-sm>.container-sm,.navbar-expand-sm>.container-xl{padding-right:0;padding-left:0}}@media (min-width:576px){.navbar-expand-sm{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-sm .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid,.navbar-expand-sm>.container-lg,.navbar-expand-sm>.container-md,.navbar-expand-sm>.container-sm,.navbar-expand-sm>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-sm .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}}@media (max-width:767.98px){.navbar-expand-md>.container,.navbar-expand-md>.container-fluid,.navbar-expand-md>.container-lg,.navbar-expand-md>.container-md,.navbar-expand-md>.container-sm,.navbar-expand-md>.container-xl{padding-right:0;padding-left:0}}@media (min-width:768px){.navbar-expand-md{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-md .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md>.container,.navbar-expand-md>.container-fluid,.navbar-expand-md>.container-lg,.navbar-expand-md>.container-md,.navbar-expand-md>.container-sm,.navbar-expand-md>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}}@media (max-width:991.98px){.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid,.navbar-expand-lg>.container-lg,.navbar-expand-lg>.container-md,.navbar-expand-lg>.container-sm,.navbar-expand-lg>.container-xl{padding-right:0;padding-left:0}}@media (min-width:992px){.navbar-expand-lg{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-lg .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid,.navbar-expand-lg>.container-lg,.navbar-expand-lg>.container-md,.navbar-expand-lg>.container-sm,.navbar-expand-lg>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}}@media (max-width:1199.98px){.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid,.navbar-expand-xl>.container-lg,.navbar-expand-xl>.container-md,.navbar-expand-xl>.container-sm,.navbar-expand-xl>.container-xl{padding-right:0;padding-left:0}}@media (min-width:1200px){.navbar-expand-xl{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-xl .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid,.navbar-expand-xl>.container-lg,.navbar-expand-xl>.container-md,.navbar-expand-xl>.container-sm,.navbar-expand-xl>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}}.navbar-expand{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand>.container,.navbar-expand>.container-fluid,.navbar-expand>.container-lg,.navbar-expand>.container-md,.navbar-expand>.container-sm,.navbar-expand>.container-xl{padding-right:0;padding-left:0}.navbar-expand .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand>.container,.navbar-expand>.container-fluid,.navbar-expand>.container-lg,.navbar-expand>.container-md,.navbar-expand>.container-sm,.navbar-expand>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-light .navbar-brand{color:rgba(0,0,0,.9)}.navbar-light .navbar-brand:focus,.navbar-light .navbar-brand:hover{color:rgba(0,0,0,.9)}.navbar-light .navbar-nav .nav-link{color:rgba(0,0,0,.5)}.navbar-light .navbar-nav .nav-link:focus,.navbar-light .navbar-nav .nav-link:hover{color:rgba(0,0,0,.7)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(0,0,0,.3)}.navbar-light .navbar-nav .active>.nav-link,.navbar-light .navbar-nav .nav-link.active,.navbar-light .navbar-nav .nav-link.show,.navbar-light .navbar-nav .show>.nav-link{color:rgba(0,0,0,.9)}.navbar-light .navbar-toggler{color:rgba(0,0,0,.5);border-color:rgba(0,0,0,.1)}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%280, 0, 0, 0.5%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-light .navbar-text{color:rgba(0,0,0,.5)}.navbar-light .navbar-text a{color:rgba(0,0,0,.9)}.navbar-light .navbar-text a:focus,.navbar-light .navbar-text a:hover{color:rgba(0,0,0,.9)}.navbar-dark .navbar-brand{color:#fff}.navbar-dark .navbar-brand:focus,.navbar-dark .navbar-brand:hover{color:#fff}.navbar-dark .navbar-nav .nav-link{color:rgba(255,255,255,.5)}.navbar-dark .navbar-nav .nav-link:focus,.navbar-dark .navbar-nav .nav-link:hover{color:rgba(255,255,255,.75)}.navbar-dark .navbar-nav .nav-link.disabled{color:rgba(255,255,255,.25)}.navbar-dark .navbar-nav .active>.nav-link,.navbar-dark .navbar-nav .nav-link.active,.navbar-dark .navbar-nav .nav-link.show,.navbar-dark .navbar-nav .show>.nav-link{color:#fff}.navbar-dark .navbar-toggler{color:rgba(255,255,255,.5);border-color:rgba(255,255,255,.1)}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.5%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-dark .navbar-text{color:rgba(255,255,255,.5)}.navbar-dark .navbar-text a{color:#fff}.navbar-dark .navbar-text a:focus,.navbar-dark .navbar-text a:hover{color:#fff}.card{position:relative;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,.125);border-radius:.25rem}.card>hr{margin-right:0;margin-left:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-width:0;border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{-ms-flex:1 1 auto;flex:1 1 auto;min-height:1px;padding:1.25rem}.card-title{margin-bottom:.75rem}.card-subtitle{margin-top:-.375rem;margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:1.25rem}.card-header{padding:.75rem 1.25rem;margin-bottom:0;background-color:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.125)}.card-header:first-child{border-radius:calc(.25rem - 1px) calc(.25rem - 1px) 0 0}.card-footer{padding:.75rem 1.25rem;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.125)}.card-footer:last-child{border-radius:0 0 calc(.25rem - 1px) calc(.25rem - 1px)}.card-header-tabs{margin-right:-.625rem;margin-bottom:-.75rem;margin-left:-.625rem;border-bottom:0}.card-header-pills{margin-right:-.625rem;margin-left:-.625rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1.25rem;border-radius:calc(.25rem - 1px)}.card-img,.card-img-bottom,.card-img-top{-ms-flex-negative:0;flex-shrink:0;width:100%}.card-img,.card-img-top{border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card-img,.card-img-bottom{border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card-deck .card{margin-bottom:15px}@media (min-width:576px){.card-deck{display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap;margin-right:-15px;margin-left:-15px}.card-deck .card{-ms-flex:1 0 0%;flex:1 0 0%;margin-right:15px;margin-bottom:0;margin-left:15px}}.card-group>.card{margin-bottom:15px}@media (min-width:576px){.card-group{display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap}.card-group>.card{-ms-flex:1 0 0%;flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-header,.card-group>.card:not(:last-child) .card-img-top{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-footer,.card-group>.card:not(:last-child) .card-img-bottom{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-header,.card-group>.card:not(:first-child) .card-img-top{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-footer,.card-group>.card:not(:first-child) .card-img-bottom{border-bottom-left-radius:0}}.card-columns .card{margin-bottom:.75rem}@media (min-width:576px){.card-columns{-webkit-column-count:3;-moz-column-count:3;column-count:3;-webkit-column-gap:1.25rem;-moz-column-gap:1.25rem;column-gap:1.25rem;orphans:1;widows:1}.card-columns .card{display:inline-block;width:100%}}.accordion{overflow-anchor:none}.accordion>.card{overflow:hidden}.accordion>.card:not(:last-of-type){border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.accordion>.card:not(:first-of-type){border-top-left-radius:0;border-top-right-radius:0}.accordion>.card>.card-header{border-radius:0;margin-bottom:-1px}.breadcrumb{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:.75rem 1rem;margin-bottom:1rem;list-style:none;background-color:#e9ecef;border-radius:.25rem}.breadcrumb-item+.breadcrumb-item{padding-left:.5rem}.breadcrumb-item+.breadcrumb-item::before{float:left;padding-right:.5rem;color:#6c757d;content:"/"}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:underline}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:none}.breadcrumb-item.active{color:#6c757d}.pagination{display:-ms-flexbox;display:flex;padding-left:0;list-style:none;border-radius:.25rem}.page-link{position:relative;display:block;padding:.5rem .75rem;margin-left:-1px;line-height:1.25;color:#007bff;background-color:#fff;border:1px solid #dee2e6}.page-link:hover{z-index:2;color:#0056b3;text-decoration:none;background-color:#e9ecef;border-color:#dee2e6}.page-link:focus{z-index:3;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.page-item:first-child .page-link{margin-left:0;border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.page-item:last-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.page-item.active .page-link{z-index:3;color:#fff;background-color:#007bff;border-color:#007bff}.page-item.disabled .page-link{color:#6c757d;pointer-events:none;cursor:auto;background-color:#fff;border-color:#dee2e6}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem;line-height:1.5}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.pagination-sm .page-link{padding:.25rem .5rem;font-size:.875rem;line-height:1.5}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.badge{display:inline-block;padding:.25em .4em;font-size:75%;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.badge{transition:none}}a.badge:focus,a.badge:hover{text-decoration:none}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.badge-pill{padding-right:.6em;padding-left:.6em;border-radius:10rem}.badge-primary{color:#fff;background-color:#007bff}a.badge-primary:focus,a.badge-primary:hover{color:#fff;background-color:#0062cc}a.badge-primary.focus,a.badge-primary:focus{outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.badge-secondary{color:#fff;background-color:#6c757d}a.badge-secondary:focus,a.badge-secondary:hover{color:#fff;background-color:#545b62}a.badge-secondary.focus,a.badge-secondary:focus{outline:0;box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.badge-success{color:#fff;background-color:#28a745}a.badge-success:focus,a.badge-success:hover{color:#fff;background-color:#1e7e34}a.badge-success.focus,a.badge-success:focus{outline:0;box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.badge-info{color:#fff;background-color:#17a2b8}a.badge-info:focus,a.badge-info:hover{color:#fff;background-color:#117a8b}a.badge-info.focus,a.badge-info:focus{outline:0;box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.badge-warning{color:#212529;background-color:#ffc107}a.badge-warning:focus,a.badge-warning:hover{color:#212529;background-color:#d39e00}a.badge-warning.focus,a.badge-warning:focus{outline:0;box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.badge-danger{color:#fff;background-color:#dc3545}a.badge-danger:focus,a.badge-danger:hover{color:#fff;background-color:#bd2130}a.badge-danger.focus,a.badge-danger:focus{outline:0;box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.badge-light{color:#212529;background-color:#f8f9fa}a.badge-light:focus,a.badge-light:hover{color:#212529;background-color:#dae0e5}a.badge-light.focus,a.badge-light:focus{outline:0;box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.badge-dark{color:#fff;background-color:#343a40}a.badge-dark:focus,a.badge-dark:hover{color:#fff;background-color:#1d2124}a.badge-dark.focus,a.badge-dark:focus{outline:0;box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.jumbotron{padding:2rem 1rem;margin-bottom:2rem;background-color:#e9ecef;border-radius:.3rem}@media (min-width:576px){.jumbotron{padding:4rem 2rem}}.jumbotron-fluid{padding-right:0;padding-left:0;border-radius:0}.alert{position:relative;padding:.75rem 1.25rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:4rem}.alert-dismissible .close{position:absolute;top:0;right:0;z-index:2;padding:.75rem 1.25rem;color:inherit}.alert-primary{color:#004085;background-color:#cce5ff;border-color:#b8daff}.alert-primary hr{border-top-color:#9fcdff}.alert-primary .alert-link{color:#002752}.alert-secondary{color:#383d41;background-color:#e2e3e5;border-color:#d6d8db}.alert-secondary hr{border-top-color:#c8cbcf}.alert-secondary .alert-link{color:#202326}.alert-success{color:#155724;background-color:#d4edda;border-color:#c3e6cb}.alert-success hr{border-top-color:#b1dfbb}.alert-success .alert-link{color:#0b2e13}.alert-info{color:#0c5460;background-color:#d1ecf1;border-color:#bee5eb}.alert-info hr{border-top-color:#abdde5}.alert-info .alert-link{color:#062c33}.alert-warning{color:#856404;background-color:#fff3cd;border-color:#ffeeba}.alert-warning hr{border-top-color:#ffe8a1}.alert-warning .alert-link{color:#533f03}.alert-danger{color:#721c24;background-color:#f8d7da;border-color:#f5c6cb}.alert-danger hr{border-top-color:#f1b0b7}.alert-danger .alert-link{color:#491217}.alert-light{color:#818182;background-color:#fefefe;border-color:#fdfdfe}.alert-light hr{border-top-color:#ececf6}.alert-light .alert-link{color:#686868}.alert-dark{color:#1b1e21;background-color:#d6d8d9;border-color:#c6c8ca}.alert-dark hr{border-top-color:#b9bbbe}.alert-dark .alert-link{color:#040505}@-webkit-keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}.progress{display:-ms-flexbox;display:flex;height:1rem;overflow:hidden;line-height:0;font-size:.75rem;background-color:#e9ecef;border-radius:.25rem}.progress-bar{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center;overflow:hidden;color:#fff;text-align:center;white-space:nowrap;background-color:#007bff;transition:width .6s ease}@media (prefers-reduced-motion:reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:1rem 1rem}.progress-bar-animated{-webkit-animation:1s linear infinite progress-bar-stripes;animation:1s linear infinite progress-bar-stripes}@media (prefers-reduced-motion:reduce){.progress-bar-animated{-webkit-animation:none;animation:none}}.media{display:-ms-flexbox;display:flex;-ms-flex-align:start;align-items:flex-start}.media-body{-ms-flex:1;flex:1}.list-group{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0;border-radius:.25rem}.list-group-item-action{width:100%;color:#495057;text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{z-index:1;color:#495057;text-decoration:none;background-color:#f8f9fa}.list-group-item-action:active{color:#212529;background-color:#e9ecef}.list-group-item{position:relative;display:block;padding:.75rem 1.25rem;background-color:#fff;border:1px solid rgba(0,0,0,.125)}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:#6c757d;pointer-events:none;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#007bff;border-color:#007bff}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:-1px;border-top-width:1px}.list-group-horizontal{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}@media (min-width:576px){.list-group-horizontal-sm{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:768px){.list-group-horizontal-md{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:992px){.list-group-horizontal-lg{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:1200px){.list-group-horizontal-xl{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 1px}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-primary{color:#004085;background-color:#b8daff}.list-group-item-primary.list-group-item-action:focus,.list-group-item-primary.list-group-item-action:hover{color:#004085;background-color:#9fcdff}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#004085;border-color:#004085}.list-group-item-secondary{color:#383d41;background-color:#d6d8db}.list-group-item-secondary.list-group-item-action:focus,.list-group-item-secondary.list-group-item-action:hover{color:#383d41;background-color:#c8cbcf}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#383d41;border-color:#383d41}.list-group-item-success{color:#155724;background-color:#c3e6cb}.list-group-item-success.list-group-item-action:focus,.list-group-item-success.list-group-item-action:hover{color:#155724;background-color:#b1dfbb}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#155724;border-color:#155724}.list-group-item-info{color:#0c5460;background-color:#bee5eb}.list-group-item-info.list-group-item-action:focus,.list-group-item-info.list-group-item-action:hover{color:#0c5460;background-color:#abdde5}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#0c5460;border-color:#0c5460}.list-group-item-warning{color:#856404;background-color:#ffeeba}.list-group-item-warning.list-group-item-action:focus,.list-group-item-warning.list-group-item-action:hover{color:#856404;background-color:#ffe8a1}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#856404;border-color:#856404}.list-group-item-danger{color:#721c24;background-color:#f5c6cb}.list-group-item-danger.list-group-item-action:focus,.list-group-item-danger.list-group-item-action:hover{color:#721c24;background-color:#f1b0b7}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#721c24;border-color:#721c24}.list-group-item-light{color:#818182;background-color:#fdfdfe}.list-group-item-light.list-group-item-action:focus,.list-group-item-light.list-group-item-action:hover{color:#818182;background-color:#ececf6}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#818182;border-color:#818182}.list-group-item-dark{color:#1b1e21;background-color:#c6c8ca}.list-group-item-dark.list-group-item-action:focus,.list-group-item-dark.list-group-item-action:hover{color:#1b1e21;background-color:#b9bbbe}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#1b1e21;border-color:#1b1e21}.close{float:right;font-size:1.5rem;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.5}.close:hover{color:#000;text-decoration:none}.close:not(:disabled):not(.disabled):focus,.close:not(:disabled):not(.disabled):hover{opacity:.75}button.close{padding:0;background-color:transparent;border:0}a.close.disabled{pointer-events:none}.toast{-ms-flex-preferred-size:350px;flex-basis:350px;max-width:350px;font-size:.875rem;background-color:rgba(255,255,255,.85);background-clip:padding-box;border:1px solid rgba(0,0,0,.1);box-shadow:0 .25rem .75rem rgba(0,0,0,.1);opacity:0;border-radius:.25rem}.toast:not(:last-child){margin-bottom:.75rem}.toast.showing{opacity:1}.toast.show{display:block;opacity:1}.toast.hide{display:none}.toast-header{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;padding:.25rem .75rem;color:#6c757d;background-color:rgba(255,255,255,.85);background-clip:padding-box;border-bottom:1px solid rgba(0,0,0,.05);border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.toast-body{padding:.75rem}.modal-open{overflow:hidden}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal{position:fixed;top:0;left:0;z-index:1050;display:none;width:100%;height:100%;overflow:hidden;outline:0}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{transition:-webkit-transform .3s ease-out;transition:transform .3s ease-out;transition:transform .3s ease-out,-webkit-transform .3s ease-out;-webkit-transform:translate(0,-50px);transform:translate(0,-50px)}@media (prefers-reduced-motion:reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{-webkit-transform:none;transform:none}.modal.modal-static .modal-dialog{-webkit-transform:scale(1.02);transform:scale(1.02)}.modal-dialog-scrollable{display:-ms-flexbox;display:flex;max-height:calc(100% - 1rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 1rem);overflow:hidden}.modal-dialog-scrollable .modal-footer,.modal-dialog-scrollable .modal-header{-ms-flex-negative:0;flex-shrink:0}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;min-height:calc(100% - 1rem)}.modal-dialog-centered::before{display:block;height:calc(100vh - 1rem);height:-webkit-min-content;height:-moz-min-content;height:min-content;content:""}.modal-dialog-centered.modal-dialog-scrollable{-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center;height:100%}.modal-dialog-centered.modal-dialog-scrollable .modal-content{max-height:none}.modal-dialog-centered.modal-dialog-scrollable::before{content:none}.modal-content{position:relative;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem;outline:0}.modal-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:-ms-flexbox;display:flex;-ms-flex-align:start;align-items:flex-start;-ms-flex-pack:justify;justify-content:space-between;padding:1rem 1rem;border-bottom:1px solid #dee2e6;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.modal-header .close{padding:1rem 1rem;margin:-1rem -1rem -1rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;-ms-flex:1 1 auto;flex:1 1 auto;padding:1rem}.modal-footer{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:center;align-items:center;-ms-flex-pack:end;justify-content:flex-end;padding:.75rem;border-top:1px solid #dee2e6;border-bottom-right-radius:calc(.3rem - 1px);border-bottom-left-radius:calc(.3rem - 1px)}.modal-footer>*{margin:.25rem}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-scrollable{max-height:calc(100% - 3.5rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 3.5rem)}.modal-dialog-centered{min-height:calc(100% - 3.5rem)}.modal-dialog-centered::before{height:calc(100vh - 3.5rem);height:-webkit-min-content;height:-moz-min-content;height:min-content}.modal-sm{max-width:300px}}@media (min-width:992px){.modal-lg,.modal-xl{max-width:800px}}@media (min-width:1200px){.modal-xl{max-width:1140px}}.tooltip{position:absolute;z-index:1070;display:block;margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip .arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .arrow::before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-auto[x-placement^=top],.bs-tooltip-top{padding:.4rem 0}.bs-tooltip-auto[x-placement^=top] .arrow,.bs-tooltip-top .arrow{bottom:0}.bs-tooltip-auto[x-placement^=top] .arrow::before,.bs-tooltip-top .arrow::before{top:0;border-width:.4rem .4rem 0;border-top-color:#000}.bs-tooltip-auto[x-placement^=right],.bs-tooltip-right{padding:0 .4rem}.bs-tooltip-auto[x-placement^=right] .arrow,.bs-tooltip-right .arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=right] .arrow::before,.bs-tooltip-right .arrow::before{right:0;border-width:.4rem .4rem .4rem 0;border-right-color:#000}.bs-tooltip-auto[x-placement^=bottom],.bs-tooltip-bottom{padding:.4rem 0}.bs-tooltip-auto[x-placement^=bottom] .arrow,.bs-tooltip-bottom .arrow{top:0}.bs-tooltip-auto[x-placement^=bottom] .arrow::before,.bs-tooltip-bottom .arrow::before{bottom:0;border-width:0 .4rem .4rem;border-bottom-color:#000}.bs-tooltip-auto[x-placement^=left],.bs-tooltip-left{padding:0 .4rem}.bs-tooltip-auto[x-placement^=left] .arrow,.bs-tooltip-left .arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=left] .arrow::before,.bs-tooltip-left .arrow::before{left:0;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}.tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000;border-radius:.25rem}.popover{position:absolute;top:0;left:0;z-index:1060;display:block;max-width:276px;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem}.popover .arrow{position:absolute;display:block;width:1rem;height:.5rem;margin:0 .3rem}.popover .arrow::after,.popover .arrow::before{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}.bs-popover-auto[x-placement^=top],.bs-popover-top{margin-bottom:.5rem}.bs-popover-auto[x-placement^=top]>.arrow,.bs-popover-top>.arrow{bottom:calc(-.5rem - 1px)}.bs-popover-auto[x-placement^=top]>.arrow::before,.bs-popover-top>.arrow::before{bottom:0;border-width:.5rem .5rem 0;border-top-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=top]>.arrow::after,.bs-popover-top>.arrow::after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}.bs-popover-auto[x-placement^=right],.bs-popover-right{margin-left:.5rem}.bs-popover-auto[x-placement^=right]>.arrow,.bs-popover-right>.arrow{left:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=right]>.arrow::before,.bs-popover-right>.arrow::before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=right]>.arrow::after,.bs-popover-right>.arrow::after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}.bs-popover-auto[x-placement^=bottom],.bs-popover-bottom{margin-top:.5rem}.bs-popover-auto[x-placement^=bottom]>.arrow,.bs-popover-bottom>.arrow{top:calc(-.5rem - 1px)}.bs-popover-auto[x-placement^=bottom]>.arrow::before,.bs-popover-bottom>.arrow::before{top:0;border-width:0 .5rem .5rem .5rem;border-bottom-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=bottom]>.arrow::after,.bs-popover-bottom>.arrow::after{top:1px;border-width:0 .5rem .5rem .5rem;border-bottom-color:#fff}.bs-popover-auto[x-placement^=bottom] .popover-header::before,.bs-popover-bottom .popover-header::before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:"";border-bottom:1px solid #f7f7f7}.bs-popover-auto[x-placement^=left],.bs-popover-left{margin-right:.5rem}.bs-popover-auto[x-placement^=left]>.arrow,.bs-popover-left>.arrow{right:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=left]>.arrow::before,.bs-popover-left>.arrow::before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=left]>.arrow::after,.bs-popover-left>.arrow::after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}.popover-header{padding:.5rem .75rem;margin-bottom:0;font-size:1rem;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:.5rem .75rem;color:#212529}.carousel{position:relative}.carousel.pointer-event{-ms-touch-action:pan-y;touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner::after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;-webkit-backface-visibility:hidden;backface-visibility:hidden;transition:-webkit-transform .6s ease-in-out;transition:transform .6s ease-in-out;transition:transform .6s ease-in-out,-webkit-transform .6s ease-in-out}@media (prefers-reduced-motion:reduce){.carousel-item{transition:none}}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block}.active.carousel-item-right,.carousel-item-next:not(.carousel-item-left){-webkit-transform:translateX(100%);transform:translateX(100%)}.active.carousel-item-left,.carousel-item-prev:not(.carousel-item-right){-webkit-transform:translateX(-100%);transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;-webkit-transform:none;transform:none}.carousel-fade .carousel-item-next.carousel-item-left,.carousel-fade .carousel-item-prev.carousel-item-right,.carousel-fade .carousel-item.active{z-index:1;opacity:1}.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{z-index:0;opacity:0;transition:opacity 0s .6s}@media (prefers-reduced-motion:reduce){.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{transition:none}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;z-index:1;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:15%;padding:0;color:#fff;text-align:center;background:0 0;border:0;opacity:.5;transition:opacity .15s ease}@media (prefers-reduced-motion:reduce){.carousel-control-next,.carousel-control-prev{transition:none}}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:20px;height:20px;background:50%/100% 100% no-repeat}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath d='M5.25 0l-4 4 4 4 1.5-1.5L4.25 4l2.5-2.5L5.25 0z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath d='M2.75 0l-1.5 1.5L3.75 4l-2.5 2.5L2.75 8l4-4-4-4z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:15;display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;padding-left:0;margin-right:15%;margin-left:15%;list-style:none}.carousel-indicators li{box-sizing:content-box;-ms-flex:0 1 auto;flex:0 1 auto;width:30px;height:3px;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}@media (prefers-reduced-motion:reduce){.carousel-indicators li{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center}@-webkit-keyframes spinner-border{to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes spinner-border{to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.spinner-border{display:inline-block;width:2rem;height:2rem;vertical-align:-.125em;border:.25em solid currentColor;border-right-color:transparent;border-radius:50%;-webkit-animation:.75s linear infinite spinner-border;animation:.75s linear infinite spinner-border}.spinner-border-sm{width:1rem;height:1rem;border-width:.2em}@-webkit-keyframes spinner-grow{0%{-webkit-transform:scale(0);transform:scale(0)}50%{opacity:1;-webkit-transform:none;transform:none}}@keyframes spinner-grow{0%{-webkit-transform:scale(0);transform:scale(0)}50%{opacity:1;-webkit-transform:none;transform:none}}.spinner-grow{display:inline-block;width:2rem;height:2rem;vertical-align:-.125em;background-color:currentColor;border-radius:50%;opacity:0;-webkit-animation:.75s linear infinite spinner-grow;animation:.75s linear infinite spinner-grow}.spinner-grow-sm{width:1rem;height:1rem}@media (prefers-reduced-motion:reduce){.spinner-border,.spinner-grow{-webkit-animation-duration:1.5s;animation-duration:1.5s}}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.bg-primary{background-color:#007bff!important}a.bg-primary:focus,a.bg-primary:hover,button.bg-primary:focus,button.bg-primary:hover{background-color:#0062cc!important}.bg-secondary{background-color:#6c757d!important}a.bg-secondary:focus,a.bg-secondary:hover,button.bg-secondary:focus,button.bg-secondary:hover{background-color:#545b62!important}.bg-success{background-color:#28a745!important}a.bg-success:focus,a.bg-success:hover,button.bg-success:focus,button.bg-success:hover{background-color:#1e7e34!important}.bg-info{background-color:#17a2b8!important}a.bg-info:focus,a.bg-info:hover,button.bg-info:focus,button.bg-info:hover{background-color:#117a8b!important}.bg-warning{background-color:#ffc107!important}a.bg-warning:focus,a.bg-warning:hover,button.bg-warning:focus,button.bg-warning:hover{background-color:#d39e00!important}.bg-danger{background-color:#dc3545!important}a.bg-danger:focus,a.bg-danger:hover,button.bg-danger:focus,button.bg-danger:hover{background-color:#bd2130!important}.bg-light{background-color:#f8f9fa!important}a.bg-light:focus,a.bg-light:hover,button.bg-light:focus,button.bg-light:hover{background-color:#dae0e5!important}.bg-dark{background-color:#343a40!important}a.bg-dark:focus,a.bg-dark:hover,button.bg-dark:focus,button.bg-dark:hover{background-color:#1d2124!important}.bg-white{background-color:#fff!important}.bg-transparent{background-color:transparent!important}.border{border:1px solid #dee2e6!important}.border-top{border-top:1px solid #dee2e6!important}.border-right{border-right:1px solid #dee2e6!important}.border-bottom{border-bottom:1px solid #dee2e6!important}.border-left{border-left:1px solid #dee2e6!important}.border-0{border:0!important}.border-top-0{border-top:0!important}.border-right-0{border-right:0!important}.border-bottom-0{border-bottom:0!important}.border-left-0{border-left:0!important}.border-primary{border-color:#007bff!important}.border-secondary{border-color:#6c757d!important}.border-success{border-color:#28a745!important}.border-info{border-color:#17a2b8!important}.border-warning{border-color:#ffc107!important}.border-danger{border-color:#dc3545!important}.border-light{border-color:#f8f9fa!important}.border-dark{border-color:#343a40!important}.border-white{border-color:#fff!important}.rounded-sm{border-radius:.2rem!important}.rounded{border-radius:.25rem!important}.rounded-top{border-top-left-radius:.25rem!important;border-top-right-radius:.25rem!important}.rounded-right{border-top-right-radius:.25rem!important;border-bottom-right-radius:.25rem!important}.rounded-bottom{border-bottom-right-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-left{border-top-left-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-lg{border-radius:.3rem!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:50rem!important}.rounded-0{border-radius:0!important}.clearfix::after{display:block;clear:both;content:""}.d-none{display:none!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:-ms-flexbox!important;display:flex!important}.d-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}@media (min-width:576px){.d-sm-none{display:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:-ms-flexbox!important;display:flex!important}.d-sm-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:768px){.d-md-none{display:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:-ms-flexbox!important;display:flex!important}.d-md-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:992px){.d-lg-none{display:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:-ms-flexbox!important;display:flex!important}.d-lg-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:1200px){.d-xl-none{display:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:-ms-flexbox!important;display:flex!important}.d-xl-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media print{.d-print-none{display:none!important}.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:-ms-flexbox!important;display:flex!important}.d-print-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}.embed-responsive{position:relative;display:block;width:100%;padding:0;overflow:hidden}.embed-responsive::before{display:block;content:""}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-21by9::before{padding-top:42.857143%}.embed-responsive-16by9::before{padding-top:56.25%}.embed-responsive-4by3::before{padding-top:75%}.embed-responsive-1by1::before{padding-top:100%}.flex-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-center{-ms-flex-align:center!important;align-items:center!important}.align-items-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}@media (min-width:576px){.flex-sm-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-sm-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-sm-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-sm-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-sm-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-sm-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-sm-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-sm-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-sm-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-sm-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-sm-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-sm-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-sm-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-sm-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-sm-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-sm-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-sm-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-sm-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-sm-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-sm-center{-ms-flex-align:center!important;align-items:center!important}.align-items-sm-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-sm-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-sm-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-sm-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-sm-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-sm-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-sm-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-sm-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-sm-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-sm-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-sm-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-sm-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-sm-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-sm-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:768px){.flex-md-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-md-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-md-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-md-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-md-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-md-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-md-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-md-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-md-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-md-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-md-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-md-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-md-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-md-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-md-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-md-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-md-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-md-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-md-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-md-center{-ms-flex-align:center!important;align-items:center!important}.align-items-md-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-md-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-md-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-md-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-md-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-md-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-md-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-md-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-md-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-md-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-md-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-md-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-md-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-md-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:992px){.flex-lg-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-lg-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-lg-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-lg-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-lg-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-lg-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-lg-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-lg-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-lg-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-lg-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-lg-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-lg-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-lg-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-lg-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-lg-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-lg-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-lg-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-lg-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-lg-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-lg-center{-ms-flex-align:center!important;align-items:center!important}.align-items-lg-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-lg-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-lg-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-lg-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-lg-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-lg-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-lg-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-lg-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-lg-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-lg-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-lg-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-lg-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-lg-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-lg-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:1200px){.flex-xl-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-xl-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-xl-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-xl-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-xl-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-xl-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-xl-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-xl-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-xl-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-xl-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-xl-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-xl-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-xl-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-xl-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-xl-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-xl-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-xl-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-xl-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-xl-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-xl-center{-ms-flex-align:center!important;align-items:center!important}.align-items-xl-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-xl-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-xl-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-xl-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-xl-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-xl-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-xl-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-xl-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-xl-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-xl-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-xl-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-xl-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-xl-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-xl-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}.float-left{float:left!important}.float-right{float:right!important}.float-none{float:none!important}@media (min-width:576px){.float-sm-left{float:left!important}.float-sm-right{float:right!important}.float-sm-none{float:none!important}}@media (min-width:768px){.float-md-left{float:left!important}.float-md-right{float:right!important}.float-md-none{float:none!important}}@media (min-width:992px){.float-lg-left{float:left!important}.float-lg-right{float:right!important}.float-lg-none{float:none!important}}@media (min-width:1200px){.float-xl-left{float:left!important}.float-xl-right{float:right!important}.float-xl-none{float:none!important}}.user-select-all{-webkit-user-select:all!important;-moz-user-select:all!important;user-select:all!important}.user-select-auto{-webkit-user-select:auto!important;-moz-user-select:auto!important;-ms-user-select:auto!important;user-select:auto!important}.user-select-none{-webkit-user-select:none!important;-moz-user-select:none!important;-ms-user-select:none!important;user-select:none!important}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:-webkit-sticky!important;position:sticky!important}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}@supports ((position:-webkit-sticky) or (position:sticky)){.sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;overflow:visible;clip:auto;white-space:normal}.shadow-sm{box-shadow:0 .125rem .25rem rgba(0,0,0,.075)!important}.shadow{box-shadow:0 .5rem 1rem rgba(0,0,0,.15)!important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,.175)!important}.shadow-none{box-shadow:none!important}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mw-100{max-width:100%!important}.mh-100{max-height:100%!important}.min-vw-100{min-width:100vw!important}.min-vh-100{min-height:100vh!important}.vw-100{width:100vw!important}.vh-100{height:100vh!important}.m-0{margin:0!important}.mt-0,.my-0{margin-top:0!important}.mr-0,.mx-0{margin-right:0!important}.mb-0,.my-0{margin-bottom:0!important}.ml-0,.mx-0{margin-left:0!important}.m-1{margin:.25rem!important}.mt-1,.my-1{margin-top:.25rem!important}.mr-1,.mx-1{margin-right:.25rem!important}.mb-1,.my-1{margin-bottom:.25rem!important}.ml-1,.mx-1{margin-left:.25rem!important}.m-2{margin:.5rem!important}.mt-2,.my-2{margin-top:.5rem!important}.mr-2,.mx-2{margin-right:.5rem!important}.mb-2,.my-2{margin-bottom:.5rem!important}.ml-2,.mx-2{margin-left:.5rem!important}.m-3{margin:1rem!important}.mt-3,.my-3{margin-top:1rem!important}.mr-3,.mx-3{margin-right:1rem!important}.mb-3,.my-3{margin-bottom:1rem!important}.ml-3,.mx-3{margin-left:1rem!important}.m-4{margin:1.5rem!important}.mt-4,.my-4{margin-top:1.5rem!important}.mr-4,.mx-4{margin-right:1.5rem!important}.mb-4,.my-4{margin-bottom:1.5rem!important}.ml-4,.mx-4{margin-left:1.5rem!important}.m-5{margin:3rem!important}.mt-5,.my-5{margin-top:3rem!important}.mr-5,.mx-5{margin-right:3rem!important}.mb-5,.my-5{margin-bottom:3rem!important}.ml-5,.mx-5{margin-left:3rem!important}.p-0{padding:0!important}.pt-0,.py-0{padding-top:0!important}.pr-0,.px-0{padding-right:0!important}.pb-0,.py-0{padding-bottom:0!important}.pl-0,.px-0{padding-left:0!important}.p-1{padding:.25rem!important}.pt-1,.py-1{padding-top:.25rem!important}.pr-1,.px-1{padding-right:.25rem!important}.pb-1,.py-1{padding-bottom:.25rem!important}.pl-1,.px-1{padding-left:.25rem!important}.p-2{padding:.5rem!important}.pt-2,.py-2{padding-top:.5rem!important}.pr-2,.px-2{padding-right:.5rem!important}.pb-2,.py-2{padding-bottom:.5rem!important}.pl-2,.px-2{padding-left:.5rem!important}.p-3{padding:1rem!important}.pt-3,.py-3{padding-top:1rem!important}.pr-3,.px-3{padding-right:1rem!important}.pb-3,.py-3{padding-bottom:1rem!important}.pl-3,.px-3{padding-left:1rem!important}.p-4{padding:1.5rem!important}.pt-4,.py-4{padding-top:1.5rem!important}.pr-4,.px-4{padding-right:1.5rem!important}.pb-4,.py-4{padding-bottom:1.5rem!important}.pl-4,.px-4{padding-left:1.5rem!important}.p-5{padding:3rem!important}.pt-5,.py-5{padding-top:3rem!important}.pr-5,.px-5{padding-right:3rem!important}.pb-5,.py-5{padding-bottom:3rem!important}.pl-5,.px-5{padding-left:3rem!important}.m-n1{margin:-.25rem!important}.mt-n1,.my-n1{margin-top:-.25rem!important}.mr-n1,.mx-n1{margin-right:-.25rem!important}.mb-n1,.my-n1{margin-bottom:-.25rem!important}.ml-n1,.mx-n1{margin-left:-.25rem!important}.m-n2{margin:-.5rem!important}.mt-n2,.my-n2{margin-top:-.5rem!important}.mr-n2,.mx-n2{margin-right:-.5rem!important}.mb-n2,.my-n2{margin-bottom:-.5rem!important}.ml-n2,.mx-n2{margin-left:-.5rem!important}.m-n3{margin:-1rem!important}.mt-n3,.my-n3{margin-top:-1rem!important}.mr-n3,.mx-n3{margin-right:-1rem!important}.mb-n3,.my-n3{margin-bottom:-1rem!important}.ml-n3,.mx-n3{margin-left:-1rem!important}.m-n4{margin:-1.5rem!important}.mt-n4,.my-n4{margin-top:-1.5rem!important}.mr-n4,.mx-n4{margin-right:-1.5rem!important}.mb-n4,.my-n4{margin-bottom:-1.5rem!important}.ml-n4,.mx-n4{margin-left:-1.5rem!important}.m-n5{margin:-3rem!important}.mt-n5,.my-n5{margin-top:-3rem!important}.mr-n5,.mx-n5{margin-right:-3rem!important}.mb-n5,.my-n5{margin-bottom:-3rem!important}.ml-n5,.mx-n5{margin-left:-3rem!important}.m-auto{margin:auto!important}.mt-auto,.my-auto{margin-top:auto!important}.mr-auto,.mx-auto{margin-right:auto!important}.mb-auto,.my-auto{margin-bottom:auto!important}.ml-auto,.mx-auto{margin-left:auto!important}@media (min-width:576px){.m-sm-0{margin:0!important}.mt-sm-0,.my-sm-0{margin-top:0!important}.mr-sm-0,.mx-sm-0{margin-right:0!important}.mb-sm-0,.my-sm-0{margin-bottom:0!important}.ml-sm-0,.mx-sm-0{margin-left:0!important}.m-sm-1{margin:.25rem!important}.mt-sm-1,.my-sm-1{margin-top:.25rem!important}.mr-sm-1,.mx-sm-1{margin-right:.25rem!important}.mb-sm-1,.my-sm-1{margin-bottom:.25rem!important}.ml-sm-1,.mx-sm-1{margin-left:.25rem!important}.m-sm-2{margin:.5rem!important}.mt-sm-2,.my-sm-2{margin-top:.5rem!important}.mr-sm-2,.mx-sm-2{margin-right:.5rem!important}.mb-sm-2,.my-sm-2{margin-bottom:.5rem!important}.ml-sm-2,.mx-sm-2{margin-left:.5rem!important}.m-sm-3{margin:1rem!important}.mt-sm-3,.my-sm-3{margin-top:1rem!important}.mr-sm-3,.mx-sm-3{margin-right:1rem!important}.mb-sm-3,.my-sm-3{margin-bottom:1rem!important}.ml-sm-3,.mx-sm-3{margin-left:1rem!important}.m-sm-4{margin:1.5rem!important}.mt-sm-4,.my-sm-4{margin-top:1.5rem!important}.mr-sm-4,.mx-sm-4{margin-right:1.5rem!important}.mb-sm-4,.my-sm-4{margin-bottom:1.5rem!important}.ml-sm-4,.mx-sm-4{margin-left:1.5rem!important}.m-sm-5{margin:3rem!important}.mt-sm-5,.my-sm-5{margin-top:3rem!important}.mr-sm-5,.mx-sm-5{margin-right:3rem!important}.mb-sm-5,.my-sm-5{margin-bottom:3rem!important}.ml-sm-5,.mx-sm-5{margin-left:3rem!important}.p-sm-0{padding:0!important}.pt-sm-0,.py-sm-0{padding-top:0!important}.pr-sm-0,.px-sm-0{padding-right:0!important}.pb-sm-0,.py-sm-0{padding-bottom:0!important}.pl-sm-0,.px-sm-0{padding-left:0!important}.p-sm-1{padding:.25rem!important}.pt-sm-1,.py-sm-1{padding-top:.25rem!important}.pr-sm-1,.px-sm-1{padding-right:.25rem!important}.pb-sm-1,.py-sm-1{padding-bottom:.25rem!important}.pl-sm-1,.px-sm-1{padding-left:.25rem!important}.p-sm-2{padding:.5rem!important}.pt-sm-2,.py-sm-2{padding-top:.5rem!important}.pr-sm-2,.px-sm-2{padding-right:.5rem!important}.pb-sm-2,.py-sm-2{padding-bottom:.5rem!important}.pl-sm-2,.px-sm-2{padding-left:.5rem!important}.p-sm-3{padding:1rem!important}.pt-sm-3,.py-sm-3{padding-top:1rem!important}.pr-sm-3,.px-sm-3{padding-right:1rem!important}.pb-sm-3,.py-sm-3{padding-bottom:1rem!important}.pl-sm-3,.px-sm-3{padding-left:1rem!important}.p-sm-4{padding:1.5rem!important}.pt-sm-4,.py-sm-4{padding-top:1.5rem!important}.pr-sm-4,.px-sm-4{padding-right:1.5rem!important}.pb-sm-4,.py-sm-4{padding-bottom:1.5rem!important}.pl-sm-4,.px-sm-4{padding-left:1.5rem!important}.p-sm-5{padding:3rem!important}.pt-sm-5,.py-sm-5{padding-top:3rem!important}.pr-sm-5,.px-sm-5{padding-right:3rem!important}.pb-sm-5,.py-sm-5{padding-bottom:3rem!important}.pl-sm-5,.px-sm-5{padding-left:3rem!important}.m-sm-n1{margin:-.25rem!important}.mt-sm-n1,.my-sm-n1{margin-top:-.25rem!important}.mr-sm-n1,.mx-sm-n1{margin-right:-.25rem!important}.mb-sm-n1,.my-sm-n1{margin-bottom:-.25rem!important}.ml-sm-n1,.mx-sm-n1{margin-left:-.25rem!important}.m-sm-n2{margin:-.5rem!important}.mt-sm-n2,.my-sm-n2{margin-top:-.5rem!important}.mr-sm-n2,.mx-sm-n2{margin-right:-.5rem!important}.mb-sm-n2,.my-sm-n2{margin-bottom:-.5rem!important}.ml-sm-n2,.mx-sm-n2{margin-left:-.5rem!important}.m-sm-n3{margin:-1rem!important}.mt-sm-n3,.my-sm-n3{margin-top:-1rem!important}.mr-sm-n3,.mx-sm-n3{margin-right:-1rem!important}.mb-sm-n3,.my-sm-n3{margin-bottom:-1rem!important}.ml-sm-n3,.mx-sm-n3{margin-left:-1rem!important}.m-sm-n4{margin:-1.5rem!important}.mt-sm-n4,.my-sm-n4{margin-top:-1.5rem!important}.mr-sm-n4,.mx-sm-n4{margin-right:-1.5rem!important}.mb-sm-n4,.my-sm-n4{margin-bottom:-1.5rem!important}.ml-sm-n4,.mx-sm-n4{margin-left:-1.5rem!important}.m-sm-n5{margin:-3rem!important}.mt-sm-n5,.my-sm-n5{margin-top:-3rem!important}.mr-sm-n5,.mx-sm-n5{margin-right:-3rem!important}.mb-sm-n5,.my-sm-n5{margin-bottom:-3rem!important}.ml-sm-n5,.mx-sm-n5{margin-left:-3rem!important}.m-sm-auto{margin:auto!important}.mt-sm-auto,.my-sm-auto{margin-top:auto!important}.mr-sm-auto,.mx-sm-auto{margin-right:auto!important}.mb-sm-auto,.my-sm-auto{margin-bottom:auto!important}.ml-sm-auto,.mx-sm-auto{margin-left:auto!important}}@media (min-width:768px){.m-md-0{margin:0!important}.mt-md-0,.my-md-0{margin-top:0!important}.mr-md-0,.mx-md-0{margin-right:0!important}.mb-md-0,.my-md-0{margin-bottom:0!important}.ml-md-0,.mx-md-0{margin-left:0!important}.m-md-1{margin:.25rem!important}.mt-md-1,.my-md-1{margin-top:.25rem!important}.mr-md-1,.mx-md-1{margin-right:.25rem!important}.mb-md-1,.my-md-1{margin-bottom:.25rem!important}.ml-md-1,.mx-md-1{margin-left:.25rem!important}.m-md-2{margin:.5rem!important}.mt-md-2,.my-md-2{margin-top:.5rem!important}.mr-md-2,.mx-md-2{margin-right:.5rem!important}.mb-md-2,.my-md-2{margin-bottom:.5rem!important}.ml-md-2,.mx-md-2{margin-left:.5rem!important}.m-md-3{margin:1rem!important}.mt-md-3,.my-md-3{margin-top:1rem!important}.mr-md-3,.mx-md-3{margin-right:1rem!important}.mb-md-3,.my-md-3{margin-bottom:1rem!important}.ml-md-3,.mx-md-3{margin-left:1rem!important}.m-md-4{margin:1.5rem!important}.mt-md-4,.my-md-4{margin-top:1.5rem!important}.mr-md-4,.mx-md-4{margin-right:1.5rem!important}.mb-md-4,.my-md-4{margin-bottom:1.5rem!important}.ml-md-4,.mx-md-4{margin-left:1.5rem!important}.m-md-5{margin:3rem!important}.mt-md-5,.my-md-5{margin-top:3rem!important}.mr-md-5,.mx-md-5{margin-right:3rem!important}.mb-md-5,.my-md-5{margin-bottom:3rem!important}.ml-md-5,.mx-md-5{margin-left:3rem!important}.p-md-0{padding:0!important}.pt-md-0,.py-md-0{padding-top:0!important}.pr-md-0,.px-md-0{padding-right:0!important}.pb-md-0,.py-md-0{padding-bottom:0!important}.pl-md-0,.px-md-0{padding-left:0!important}.p-md-1{padding:.25rem!important}.pt-md-1,.py-md-1{padding-top:.25rem!important}.pr-md-1,.px-md-1{padding-right:.25rem!important}.pb-md-1,.py-md-1{padding-bottom:.25rem!important}.pl-md-1,.px-md-1{padding-left:.25rem!important}.p-md-2{padding:.5rem!important}.pt-md-2,.py-md-2{padding-top:.5rem!important}.pr-md-2,.px-md-2{padding-right:.5rem!important}.pb-md-2,.py-md-2{padding-bottom:.5rem!important}.pl-md-2,.px-md-2{padding-left:.5rem!important}.p-md-3{padding:1rem!important}.pt-md-3,.py-md-3{padding-top:1rem!important}.pr-md-3,.px-md-3{padding-right:1rem!important}.pb-md-3,.py-md-3{padding-bottom:1rem!important}.pl-md-3,.px-md-3{padding-left:1rem!important}.p-md-4{padding:1.5rem!important}.pt-md-4,.py-md-4{padding-top:1.5rem!important}.pr-md-4,.px-md-4{padding-right:1.5rem!important}.pb-md-4,.py-md-4{padding-bottom:1.5rem!important}.pl-md-4,.px-md-4{padding-left:1.5rem!important}.p-md-5{padding:3rem!important}.pt-md-5,.py-md-5{padding-top:3rem!important}.pr-md-5,.px-md-5{padding-right:3rem!important}.pb-md-5,.py-md-5{padding-bottom:3rem!important}.pl-md-5,.px-md-5{padding-left:3rem!important}.m-md-n1{margin:-.25rem!important}.mt-md-n1,.my-md-n1{margin-top:-.25rem!important}.mr-md-n1,.mx-md-n1{margin-right:-.25rem!important}.mb-md-n1,.my-md-n1{margin-bottom:-.25rem!important}.ml-md-n1,.mx-md-n1{margin-left:-.25rem!important}.m-md-n2{margin:-.5rem!important}.mt-md-n2,.my-md-n2{margin-top:-.5rem!important}.mr-md-n2,.mx-md-n2{margin-right:-.5rem!important}.mb-md-n2,.my-md-n2{margin-bottom:-.5rem!important}.ml-md-n2,.mx-md-n2{margin-left:-.5rem!important}.m-md-n3{margin:-1rem!important}.mt-md-n3,.my-md-n3{margin-top:-1rem!important}.mr-md-n3,.mx-md-n3{margin-right:-1rem!important}.mb-md-n3,.my-md-n3{margin-bottom:-1rem!important}.ml-md-n3,.mx-md-n3{margin-left:-1rem!important}.m-md-n4{margin:-1.5rem!important}.mt-md-n4,.my-md-n4{margin-top:-1.5rem!important}.mr-md-n4,.mx-md-n4{margin-right:-1.5rem!important}.mb-md-n4,.my-md-n4{margin-bottom:-1.5rem!important}.ml-md-n4,.mx-md-n4{margin-left:-1.5rem!important}.m-md-n5{margin:-3rem!important}.mt-md-n5,.my-md-n5{margin-top:-3rem!important}.mr-md-n5,.mx-md-n5{margin-right:-3rem!important}.mb-md-n5,.my-md-n5{margin-bottom:-3rem!important}.ml-md-n5,.mx-md-n5{margin-left:-3rem!important}.m-md-auto{margin:auto!important}.mt-md-auto,.my-md-auto{margin-top:auto!important}.mr-md-auto,.mx-md-auto{margin-right:auto!important}.mb-md-auto,.my-md-auto{margin-bottom:auto!important}.ml-md-auto,.mx-md-auto{margin-left:auto!important}}@media (min-width:992px){.m-lg-0{margin:0!important}.mt-lg-0,.my-lg-0{margin-top:0!important}.mr-lg-0,.mx-lg-0{margin-right:0!important}.mb-lg-0,.my-lg-0{margin-bottom:0!important}.ml-lg-0,.mx-lg-0{margin-left:0!important}.m-lg-1{margin:.25rem!important}.mt-lg-1,.my-lg-1{margin-top:.25rem!important}.mr-lg-1,.mx-lg-1{margin-right:.25rem!important}.mb-lg-1,.my-lg-1{margin-bottom:.25rem!important}.ml-lg-1,.mx-lg-1{margin-left:.25rem!important}.m-lg-2{margin:.5rem!important}.mt-lg-2,.my-lg-2{margin-top:.5rem!important}.mr-lg-2,.mx-lg-2{margin-right:.5rem!important}.mb-lg-2,.my-lg-2{margin-bottom:.5rem!important}.ml-lg-2,.mx-lg-2{margin-left:.5rem!important}.m-lg-3{margin:1rem!important}.mt-lg-3,.my-lg-3{margin-top:1rem!important}.mr-lg-3,.mx-lg-3{margin-right:1rem!important}.mb-lg-3,.my-lg-3{margin-bottom:1rem!important}.ml-lg-3,.mx-lg-3{margin-left:1rem!important}.m-lg-4{margin:1.5rem!important}.mt-lg-4,.my-lg-4{margin-top:1.5rem!important}.mr-lg-4,.mx-lg-4{margin-right:1.5rem!important}.mb-lg-4,.my-lg-4{margin-bottom:1.5rem!important}.ml-lg-4,.mx-lg-4{margin-left:1.5rem!important}.m-lg-5{margin:3rem!important}.mt-lg-5,.my-lg-5{margin-top:3rem!important}.mr-lg-5,.mx-lg-5{margin-right:3rem!important}.mb-lg-5,.my-lg-5{margin-bottom:3rem!important}.ml-lg-5,.mx-lg-5{margin-left:3rem!important}.p-lg-0{padding:0!important}.pt-lg-0,.py-lg-0{padding-top:0!important}.pr-lg-0,.px-lg-0{padding-right:0!important}.pb-lg-0,.py-lg-0{padding-bottom:0!important}.pl-lg-0,.px-lg-0{padding-left:0!important}.p-lg-1{padding:.25rem!important}.pt-lg-1,.py-lg-1{padding-top:.25rem!important}.pr-lg-1,.px-lg-1{padding-right:.25rem!important}.pb-lg-1,.py-lg-1{padding-bottom:.25rem!important}.pl-lg-1,.px-lg-1{padding-left:.25rem!important}.p-lg-2{padding:.5rem!important}.pt-lg-2,.py-lg-2{padding-top:.5rem!important}.pr-lg-2,.px-lg-2{padding-right:.5rem!important}.pb-lg-2,.py-lg-2{padding-bottom:.5rem!important}.pl-lg-2,.px-lg-2{padding-left:.5rem!important}.p-lg-3{padding:1rem!important}.pt-lg-3,.py-lg-3{padding-top:1rem!important}.pr-lg-3,.px-lg-3{padding-right:1rem!important}.pb-lg-3,.py-lg-3{padding-bottom:1rem!important}.pl-lg-3,.px-lg-3{padding-left:1rem!important}.p-lg-4{padding:1.5rem!important}.pt-lg-4,.py-lg-4{padding-top:1.5rem!important}.pr-lg-4,.px-lg-4{padding-right:1.5rem!important}.pb-lg-4,.py-lg-4{padding-bottom:1.5rem!important}.pl-lg-4,.px-lg-4{padding-left:1.5rem!important}.p-lg-5{padding:3rem!important}.pt-lg-5,.py-lg-5{padding-top:3rem!important}.pr-lg-5,.px-lg-5{padding-right:3rem!important}.pb-lg-5,.py-lg-5{padding-bottom:3rem!important}.pl-lg-5,.px-lg-5{padding-left:3rem!important}.m-lg-n1{margin:-.25rem!important}.mt-lg-n1,.my-lg-n1{margin-top:-.25rem!important}.mr-lg-n1,.mx-lg-n1{margin-right:-.25rem!important}.mb-lg-n1,.my-lg-n1{margin-bottom:-.25rem!important}.ml-lg-n1,.mx-lg-n1{margin-left:-.25rem!important}.m-lg-n2{margin:-.5rem!important}.mt-lg-n2,.my-lg-n2{margin-top:-.5rem!important}.mr-lg-n2,.mx-lg-n2{margin-right:-.5rem!important}.mb-lg-n2,.my-lg-n2{margin-bottom:-.5rem!important}.ml-lg-n2,.mx-lg-n2{margin-left:-.5rem!important}.m-lg-n3{margin:-1rem!important}.mt-lg-n3,.my-lg-n3{margin-top:-1rem!important}.mr-lg-n3,.mx-lg-n3{margin-right:-1rem!important}.mb-lg-n3,.my-lg-n3{margin-bottom:-1rem!important}.ml-lg-n3,.mx-lg-n3{margin-left:-1rem!important}.m-lg-n4{margin:-1.5rem!important}.mt-lg-n4,.my-lg-n4{margin-top:-1.5rem!important}.mr-lg-n4,.mx-lg-n4{margin-right:-1.5rem!important}.mb-lg-n4,.my-lg-n4{margin-bottom:-1.5rem!important}.ml-lg-n4,.mx-lg-n4{margin-left:-1.5rem!important}.m-lg-n5{margin:-3rem!important}.mt-lg-n5,.my-lg-n5{margin-top:-3rem!important}.mr-lg-n5,.mx-lg-n5{margin-right:-3rem!important}.mb-lg-n5,.my-lg-n5{margin-bottom:-3rem!important}.ml-lg-n5,.mx-lg-n5{margin-left:-3rem!important}.m-lg-auto{margin:auto!important}.mt-lg-auto,.my-lg-auto{margin-top:auto!important}.mr-lg-auto,.mx-lg-auto{margin-right:auto!important}.mb-lg-auto,.my-lg-auto{margin-bottom:auto!important}.ml-lg-auto,.mx-lg-auto{margin-left:auto!important}}@media (min-width:1200px){.m-xl-0{margin:0!important}.mt-xl-0,.my-xl-0{margin-top:0!important}.mr-xl-0,.mx-xl-0{margin-right:0!important}.mb-xl-0,.my-xl-0{margin-bottom:0!important}.ml-xl-0,.mx-xl-0{margin-left:0!important}.m-xl-1{margin:.25rem!important}.mt-xl-1,.my-xl-1{margin-top:.25rem!important}.mr-xl-1,.mx-xl-1{margin-right:.25rem!important}.mb-xl-1,.my-xl-1{margin-bottom:.25rem!important}.ml-xl-1,.mx-xl-1{margin-left:.25rem!important}.m-xl-2{margin:.5rem!important}.mt-xl-2,.my-xl-2{margin-top:.5rem!important}.mr-xl-2,.mx-xl-2{margin-right:.5rem!important}.mb-xl-2,.my-xl-2{margin-bottom:.5rem!important}.ml-xl-2,.mx-xl-2{margin-left:.5rem!important}.m-xl-3{margin:1rem!important}.mt-xl-3,.my-xl-3{margin-top:1rem!important}.mr-xl-3,.mx-xl-3{margin-right:1rem!important}.mb-xl-3,.my-xl-3{margin-bottom:1rem!important}.ml-xl-3,.mx-xl-3{margin-left:1rem!important}.m-xl-4{margin:1.5rem!important}.mt-xl-4,.my-xl-4{margin-top:1.5rem!important}.mr-xl-4,.mx-xl-4{margin-right:1.5rem!important}.mb-xl-4,.my-xl-4{margin-bottom:1.5rem!important}.ml-xl-4,.mx-xl-4{margin-left:1.5rem!important}.m-xl-5{margin:3rem!important}.mt-xl-5,.my-xl-5{margin-top:3rem!important}.mr-xl-5,.mx-xl-5{margin-right:3rem!important}.mb-xl-5,.my-xl-5{margin-bottom:3rem!important}.ml-xl-5,.mx-xl-5{margin-left:3rem!important}.p-xl-0{padding:0!important}.pt-xl-0,.py-xl-0{padding-top:0!important}.pr-xl-0,.px-xl-0{padding-right:0!important}.pb-xl-0,.py-xl-0{padding-bottom:0!important}.pl-xl-0,.px-xl-0{padding-left:0!important}.p-xl-1{padding:.25rem!important}.pt-xl-1,.py-xl-1{padding-top:.25rem!important}.pr-xl-1,.px-xl-1{padding-right:.25rem!important}.pb-xl-1,.py-xl-1{padding-bottom:.25rem!important}.pl-xl-1,.px-xl-1{padding-left:.25rem!important}.p-xl-2{padding:.5rem!important}.pt-xl-2,.py-xl-2{padding-top:.5rem!important}.pr-xl-2,.px-xl-2{padding-right:.5rem!important}.pb-xl-2,.py-xl-2{padding-bottom:.5rem!important}.pl-xl-2,.px-xl-2{padding-left:.5rem!important}.p-xl-3{padding:1rem!important}.pt-xl-3,.py-xl-3{padding-top:1rem!important}.pr-xl-3,.px-xl-3{padding-right:1rem!important}.pb-xl-3,.py-xl-3{padding-bottom:1rem!important}.pl-xl-3,.px-xl-3{padding-left:1rem!important}.p-xl-4{padding:1.5rem!important}.pt-xl-4,.py-xl-4{padding-top:1.5rem!important}.pr-xl-4,.px-xl-4{padding-right:1.5rem!important}.pb-xl-4,.py-xl-4{padding-bottom:1.5rem!important}.pl-xl-4,.px-xl-4{padding-left:1.5rem!important}.p-xl-5{padding:3rem!important}.pt-xl-5,.py-xl-5{padding-top:3rem!important}.pr-xl-5,.px-xl-5{padding-right:3rem!important}.pb-xl-5,.py-xl-5{padding-bottom:3rem!important}.pl-xl-5,.px-xl-5{padding-left:3rem!important}.m-xl-n1{margin:-.25rem!important}.mt-xl-n1,.my-xl-n1{margin-top:-.25rem!important}.mr-xl-n1,.mx-xl-n1{margin-right:-.25rem!important}.mb-xl-n1,.my-xl-n1{margin-bottom:-.25rem!important}.ml-xl-n1,.mx-xl-n1{margin-left:-.25rem!important}.m-xl-n2{margin:-.5rem!important}.mt-xl-n2,.my-xl-n2{margin-top:-.5rem!important}.mr-xl-n2,.mx-xl-n2{margin-right:-.5rem!important}.mb-xl-n2,.my-xl-n2{margin-bottom:-.5rem!important}.ml-xl-n2,.mx-xl-n2{margin-left:-.5rem!important}.m-xl-n3{margin:-1rem!important}.mt-xl-n3,.my-xl-n3{margin-top:-1rem!important}.mr-xl-n3,.mx-xl-n3{margin-right:-1rem!important}.mb-xl-n3,.my-xl-n3{margin-bottom:-1rem!important}.ml-xl-n3,.mx-xl-n3{margin-left:-1rem!important}.m-xl-n4{margin:-1.5rem!important}.mt-xl-n4,.my-xl-n4{margin-top:-1.5rem!important}.mr-xl-n4,.mx-xl-n4{margin-right:-1.5rem!important}.mb-xl-n4,.my-xl-n4{margin-bottom:-1.5rem!important}.ml-xl-n4,.mx-xl-n4{margin-left:-1.5rem!important}.m-xl-n5{margin:-3rem!important}.mt-xl-n5,.my-xl-n5{margin-top:-3rem!important}.mr-xl-n5,.mx-xl-n5{margin-right:-3rem!important}.mb-xl-n5,.my-xl-n5{margin-bottom:-3rem!important}.ml-xl-n5,.mx-xl-n5{margin-left:-3rem!important}.m-xl-auto{margin:auto!important}.mt-xl-auto,.my-xl-auto{margin-top:auto!important}.mr-xl-auto,.mx-xl-auto{margin-right:auto!important}.mb-xl-auto,.my-xl-auto{margin-bottom:auto!important}.ml-xl-auto,.mx-xl-auto{margin-left:auto!important}}.stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;pointer-events:auto;content:"";background-color:rgba(0,0,0,0)}.text-monospace{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace!important}.text-justify{text-align:justify!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-left{text-align:left!important}.text-right{text-align:right!important}.text-center{text-align:center!important}@media (min-width:576px){.text-sm-left{text-align:left!important}.text-sm-right{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.text-md-left{text-align:left!important}.text-md-right{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.text-lg-left{text-align:left!important}.text-lg-right{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.text-xl-left{text-align:left!important}.text-xl-right{text-align:right!important}.text-xl-center{text-align:center!important}}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.font-weight-light{font-weight:300!important}.font-weight-lighter{font-weight:lighter!important}.font-weight-normal{font-weight:400!important}.font-weight-bold{font-weight:700!important}.font-weight-bolder{font-weight:bolder!important}.font-italic{font-style:italic!important}.text-white{color:#fff!important}.text-primary{color:#007bff!important}a.text-primary:focus,a.text-primary:hover{color:#0056b3!important}.text-secondary{color:#6c757d!important}a.text-secondary:focus,a.text-secondary:hover{color:#494f54!important}.text-success{color:#28a745!important}a.text-success:focus,a.text-success:hover{color:#19692c!important}.text-info{color:#17a2b8!important}a.text-info:focus,a.text-info:hover{color:#0f6674!important}.text-warning{color:#ffc107!important}a.text-warning:focus,a.text-warning:hover{color:#ba8b00!important}.text-danger{color:#dc3545!important}a.text-danger:focus,a.text-danger:hover{color:#a71d2a!important}.text-light{color:#f8f9fa!important}a.text-light:focus,a.text-light:hover{color:#cbd3da!important}.text-dark{color:#343a40!important}a.text-dark:focus,a.text-dark:hover{color:#121416!important}.text-body{color:#212529!important}.text-muted{color:#6c757d!important}.text-black-50{color:rgba(0,0,0,.5)!important}.text-white-50{color:rgba(255,255,255,.5)!important}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.text-decoration-none{text-decoration:none!important}.text-break{word-break:break-word!important;word-wrap:break-word!important}.text-reset{color:inherit!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}@media print{*,::after,::before{text-shadow:none!important;box-shadow:none!important}a:not(.btn){text-decoration:underline}abbr[title]::after{content:" (" attr(title) ")"}pre{white-space:pre-wrap!important}blockquote,pre{border:1px solid #adb5bd;page-break-inside:avoid}img,tr{page-break-inside:avoid}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}@page{size:a3}body{min-width:992px!important}.container{min-width:992px!important}.navbar{display:none}.badge{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #dee2e6!important}.table-dark{color:inherit}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#dee2e6}.table .thead-dark th{color:inherit;border-color:#dee2e6}} /*# sourceMappingURL=bootstrap.min.css.map */
column_exploration

Tablecloth Column Exploration

What is this exploration?

We want to add a column entity to tablecloth that parallels dataset. It will make the column a first-class entity within tablecloth.

Usage

(require '[tablecloth.column.api :refer [column] :as col])
nil
-

Column creation

We can create an empty column like this:

(column)
#tech.v3.dataset.column[0]
-null
-[]
-

We can check if it it's a column.

(col/column? (column))
true
-

We can create a columns with data in a number of ways

(column [1 2 3 4])
#tech.v3.dataset.column[4]
-null
-[1, 2, 3, 4]
-
(column (range 10))
#tech.v3.dataset.column[10]
-null
-[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
-

When you do this the types of the resulting array is determined automatically from the items provided.

(let [int-column (column (range 10))]
-  (col/typeof int-column))
:int64
-
(let [string-column (column ["foo" "bar"])]
-  (col/typeof string-column))
:string
-

Basic Operations

Right now we need to use the functional name space from the underlying computation library tech.v3.datatype to operate on columns.

(require '[tech.v3.datatype.functional :as fun])
nil
-

With that imported we can perform a large number of operations:

(def a (column [20 30 40 50]))
#'intro/a
-
(def b (column (range 4)))
#'intro/b
-
(fun/- a b)
#array-buffer[4]
-[20, 29, 38, 47]
-
(fun/pow a 2)
#array-buffer[4]
-[400.0, 900.0, 1600, 2500]
-
(fun/* 10 (fun/sin a))
#array-buffer[4]
-[9.129, -9.880, 7.451, -2.624]
-
(fun/< a 35)
#array-buffer[4]
-[true, true, false, false]
+}
docs/column_exploration.html
[:wrote "docs/intro.html"]
 
\ No newline at end of file diff --git a/src/tablecloth/column/api.clj b/src/tablecloth/column/api.clj index 78597cb..47293cf 100644 --- a/src/tablecloth/column/api.clj +++ b/src/tablecloth/column/api.clj @@ -2,7 +2,8 @@ ;;Autogenerated from tablecloth.column.api.api-template-- DO NOT EDIT "Tablecloth Column API" (:require [tablecloth.column.api.api-template] - [tablecloth.column.api.column])) + [tablecloth.column.api.column] + [tech.v3.dataset.column])) (defn column "Create a `column` from a vector or sequence. " @@ -26,6 +27,41 @@ (tablecloth.column.api.column/ones n-ones))) +(defn select + "Return a new column with the subset of indexes based on the provided `selection`. + `selection` can be a list of indexes to select or boolean values where the index + position of each true element indicates a index to select. When supplying a list + of indices, duplicates are possible and will select the specified position more + than once." + ([col selection] + (tech.v3.dataset.column/select col selection))) + + +(defn slice + "Returns a subset of the column defined by the inclusive `from` and + `to` indexes. If `to` is not provided, slices to the end of the + column. If `from` is not provided (i.e. is `nil`), slices from the + beginning of the column. If either `from` or `to` is a negative + number, it is treated as an index from the end of the column. The + `:start` and `:end` keywords can be used to represent the start and + end of the column, respectively. + + Examples: + (def column [1 2 3 4 5]) + (slice column 1 3) ;=> [2 3] + (slice column 2) ;=> [3 4 5] + (slice column -3 -1) ;=> [3 4 5] + (slice column :start 2) ;=> [1 2 3 4 5] + (slice column 2 :end) ;=> [3 4 5] + (slice column -2 :end) ;=> [4 5]" + ([col from] + (tablecloth.column.api.column/slice col from)) + ([col from to] + (tablecloth.column.api.column/slice col from to)) + ([col from to step] + (tablecloth.column.api.column/slice col from to step))) + + (defn typeof "Returns the concrete type of the elements within the column `col`." ([col] @@ -33,8 +69,8 @@ (defn typeof? - "True|false the column's elements are of the provided type `datatype`. - Works with concrete types (e.g. :int32) or general types (e.g. :numerical)." + "True|false the column's elements are of the provided type `datatype`. Can check + both concrete types (e.g. :int32) or general types (:numerical, :textual, etc)." ([col datatype] (tablecloth.column.api.column/typeof? col datatype))) diff --git a/src/tablecloth/column/api/api_template.clj b/src/tablecloth/column/api/api_template.clj index 8dd6c33..e37a4ea 100644 --- a/src/tablecloth/column/api/api_template.clj +++ b/src/tablecloth/column/api/api_template.clj @@ -7,9 +7,13 @@ column? typeof typeof? + slice zeros ones) +(exporter/export-symbols tech.v3.dataset.column + select) + (comment ;; Use this to generate the column api (exporter/write-api! 'tablecloth.column.api.api-template diff --git a/src/tablecloth/column/api/column.clj b/src/tablecloth/column/api/column.clj index 4617482..3f77033 100644 --- a/src/tablecloth/column/api/column.clj +++ b/src/tablecloth/column/api/column.clj @@ -43,4 +43,31 @@ [n-ones] (column (dtype/const-reader 1 n-ones))) +(defn slice + "Returns a subset of the column defined by the inclusive `from` and + `to` indexes. If `to` is not provided, slices to the end of the + column. If `from` is not provided (i.e. is `nil`), slices from the + beginning of the column. If either `from` or `to` is a negative + number, it is treated as an index from the end of the column. The + `:start` and `:end` keywords can be used to represent the start and + end of the column, respectively. + Examples: + (def column [1 2 3 4 5]) + (slice column 1 3) ;=> [2 3] + (slice column 2) ;=> [3 4 5] + (slice column -3 -1) ;=> [3 4 5] + (slice column :start 2) ;=> [1 2 3 4 5] + (slice column 2 :end) ;=> [3 4 5] + (slice column -2 :end) ;=> [4 5]" + ([col from] + (slice col from :end)) + ([col from to] + (slice col from to 1)) + ([col from to step] + (let [len (count col) + from (or (when-not (or (= from :start) (nil? from)) from) 0) + to (or (when-not (or (= to :end) (nil? :end)) to) (dec len))] + (col/select col (range (if (neg? from) (+ len from) from) + (inc (if (neg? to) (+ len to) to)) + step))))) diff --git a/test/tablecloth/column/api/column_test.clj b/test/tablecloth/column/api/column_test.clj index 3b77c51..30980a5 100644 --- a/test/tablecloth/column/api/column_test.clj +++ b/test/tablecloth/column/api/column_test.clj @@ -1,6 +1,6 @@ (ns tablecloth.column.api.column-test - (:require [tablecloth.column.api.column :refer [column zeros ones typeof? typeof]] - [midje.sweet :refer [fact =>]])) + (:require [tablecloth.column.api.column :refer [column zeros ones typeof? typeof slice]] + [midje.sweet :refer [fact facts =>]])) (fact "`column` returns a column" (tech.v3.dataset.column/is-column? (column)) => true) @@ -48,3 +48,27 @@ (fact "`ones` returns a column filled with ones" (ones 3) => [1 1 1]) + +(facts "about `slice`" + (let [c (column [1 2 3 4 5])] + (fact "it return a subset of a column inclusively" + (slice c 0 0) => [1] + (slice c 0 4) => [1 2 3 4 5]) + (fact "it supports negative indexing inclusively" + (slice c 0 -1) + (slice c -1 -1) => [5] + (slice c -3 -1) => [3 4 5]) + (fact "it supports 0 within negative indexing" + (slice c 0 -2) => [1 2 3 4]) + (fact "it supports stepped slicing" + (slice c 0 4 2) => [1 3 5]) + (fact "it supports using nil to indicate slice from start or end" + (slice c 2) => [3 4 5] + (slice c -2) => [4 5] + (slice c nil 2) => [1 2 3] + (slice c nil -2) => [1 2 3 4]) + (fact "it supports special keywords for selecting from start or end" + (slice c :start 2) => [1 2 3] + (slice c 1 :end) => [2 3 4 5] + (slice c -4 :end) => [2 3 4 5] + (slice c :start -3) => [1 2 3]))) From 1ca99110502d676633805ab4854e3a644a6d4066 Mon Sep 17 00:00:00 2001 From: Ethan Miller Date: Fri, 10 Mar 2023 10:52:49 -0500 Subject: [PATCH 25/42] Add iteration support by wrapping tech.v3.dataset.column/column-map (#97) * Export tech.ml.dataset `select` fn for column api * Update docstring exported to api * Update column-exploration with basic illustration of select * Add `slice` * clean up tests a bit * Improve `slice` docstring slightly * Export `slice` to column api * Add stuff about `slice` to column exploration doc * Move accesssing & subsetting seciton above basic ops * Update column_expolration.html * Update comment block * Add column-map wrapper over tech.v3.dataset.column/column-mapping * Accepts columns in the first position to support use with pipes * If `col` is a vector of columns, then map-fn is run on all * Fix arg name * Clean up * Add iteration to column exploration and reorganize * Add column-map to column api_template * Add example of using column-map with multiple columns * Update column_exploration html doc * Update column_exploration html doc --- docs/column_exploration.clj | 61 ++++++++----- docs/column_exploration.html | 100 ++++++++++++++++++++- src/tablecloth/column/api.clj | 18 ++++ src/tablecloth/column/api/api_template.clj | 1 + src/tablecloth/column/api/column.clj | 19 ++++ 5 files changed, 174 insertions(+), 25 deletions(-) diff --git a/docs/column_exploration.clj b/docs/column_exploration.clj index 31e5220..d4c5bcf 100644 --- a/docs/column_exploration.clj +++ b/docs/column_exploration.clj @@ -51,6 +51,32 @@ (let [string-column (column ["foo" "bar"])] (col/typeof string-column)) + +;; ### Basic Operations + +;; Operations are right now in their own namespace +(require '[tablecloth.column.api.operators :as ops]) + +;; With that imported we can perform a large number of operations: + +(def a (column [20 30 40 50])) +(def b (column (range 4))) + +(ops/- a b) + +(ops/pow a 2) + +(ops/* 10 (ops/sin a)) + +(ops/< a 35) + +;; All these operations take a column as their first argument and +;; return a column, so they can be chained easily. + +(-> a + (ops/* b) + (ops/< 70)) + ;; ### Subsetting and accesssing ;; You can access an element in a column in exactly the same ways you @@ -122,30 +148,21 @@ myclm (col/select myclm (ops/> myclm 5)) +;; ### Iterating Over Column +;; Many operations that you might want to perform on a column are +;; available in the `tablecloth.column.api.operators` namespace. +;; However, when there is a need to do something custom, you can also +;; interate over the column. -;; ### Basic Operations - -;; Operations are right now in their own namespace -(require '[tablecloth.column.api.operators :as ops]) - -;; With that imported we can perform a large number of operations: - -(def a (column [20 30 40 50])) -(def b (column (range 4))) - -(ops/- a b) - -(ops/pow a 2) - -(ops/* 10 (ops/sin a)) - -(ops/< a 35) +(defn calc-percent [x] + (/ x 100.0)) -;; All these operations take a column as their first argument and -;; return a column, so they can be chained easily. +(col/column-map myclm calc-percent) -(-> a - (ops/* b) - (ops/< 70)) +;; It's also possible to iterate over multiple columns by supplying a +;; vector of columns: +(-> [(column [5 6 7 8 9]) + (column [1 2 3 4 5])] + (col/column-map (partial *))) diff --git a/docs/column_exploration.html b/docs/column_exploration.html index aabfb94..c08a4dc 100644 --- a/docs/column_exploration.html +++ b/docs/column_exploration.html @@ -33,8 +33,26 @@ background-color: #f0f0f0; padding: 2px; .bg-light; -}
docs/column_exploration.html
[:wrote "docs/intro.html"]
-
\ No newline at end of file +(defn compute [[fname & args] result-state result-path] (POST "/compute" {:headers {"Accept" "application/json"}, :params (pr-str {:fname fname, :args args}), :handler (fn [response] (swap! result-state assoc-in result-path (read-string response))), :error-handler (fn [e] (.log js/console (str e)))})) +(def widget2 nil) +(dom/render (fn [] widget2) (.getElementById js/document "widget2")) +(def widget4 nil) +(dom/render (fn [] widget4) (.getElementById js/document "widget4")) +(def widget6 nil) +(dom/render (fn [] widget6) (.getElementById js/document "widget6")) +(def widget9 [:div [:pre [:code.language-clojure "nil\n"]]]) +(dom/render (fn [] widget9) (.getElementById js/document "widget9")) +(def widget12 [:div [:pre [:code.language-clojure "#tech.v3.dataset.column[0]\nnull\n[]\n"]]]) +(dom/render (fn [] widget12) (.getElementById js/document "widget12")) +(def widget15 [:div [:pre [:code.language-clojure "true\n"]]]) +(dom/render (fn [] widget15) (.getElementById js/document "widget15")) +(def widget18 [:div [:pre [:code.language-clojure "#tech.v3.dataset.column[4]\nnull\n[1, 2, 3, 4]\n"]]]) +(dom/render (fn [] widget18) (.getElementById js/document "widget18")) +(def widget20 [:div [:pre [:code.language-clojure "#tech.v3.dataset.column[10]\nnull\n[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]\n"]]]) +(dom/render (fn [] widget20) (.getElementById js/document "widget20")) +(def widget23 [:div [:pre [:code.language-clojure ":int64\n"]]]) +(dom/render (fn [] widget23) (.getElementById js/document "widget23")) +(def widget25 [:div [:pre [:code.language-clojure ":string\n"]]]) +(dom/render (fn [] widget25) (.getElementById js/document "widget25")) +(def widget28 [:div [:pre [:code.language-clojure "nil\n"]]]) +(dom/render (fn [] widget28) (.getElementById js/document "widget28")) +(def widget31 nil) +(dom/render (fn [] widget31) (.getElementById js/document "widget31")) +(def widget33 nil) +(dom/render (fn [] widget33) (.getElementById js/document "widget33")) +(def widget35 [:div [:pre [:code.language-clojure "#tech.v3.dataset.column[4]\nnull\n[20, 29, 38, 47]\n"]]]) +(dom/render (fn [] widget35) (.getElementById js/document "widget35")) +(def widget37 [:div [:pre [:code.language-clojure "#tech.v3.dataset.column[4]\nnull\n[400.0, 900.0, 1600, 2500]\n"]]]) +(dom/render (fn [] widget37) (.getElementById js/document "widget37")) +(def widget39 [:div [:pre [:code.language-clojure "#tech.v3.dataset.column[4]\nnull\n[9.129, -9.880, 7.451, -2.624]\n"]]]) +(dom/render (fn [] widget39) (.getElementById js/document "widget39")) +(def widget41 [:div [:pre [:code.language-clojure "#tech.v3.dataset.column[4]\nnull\n[true, true, false, false]\n"]]]) +(dom/render (fn [] widget41) (.getElementById js/document "widget41")) +(def widget44 [:div [:pre [:code.language-clojure "#tech.v3.dataset.column[4]\nnull\n[true, true, false, false]\n"]]]) +(dom/render (fn [] widget44) (.getElementById js/document "widget44")) +(def widget47 nil) +(dom/render (fn [] widget47) (.getElementById js/document "widget47")) +(def widget49 [:div [:pre [:code.language-clojure "#tech.v3.dataset.column[5]\nnull\n[0, 1, 2, 3, 4]\n"]]]) +(dom/render (fn [] widget49) (.getElementById js/document "widget49")) +(def widget51 [:div [:pre [:code.language-clojure "2\n"]]]) +(dom/render (fn [] widget51) (.getElementById js/document "widget51")) +(def widget53 [:div [:pre [:code.language-clojure "2\n"]]]) +(dom/render (fn [] widget53) (.getElementById js/document "widget53")) +(def widget55 [:div [:pre [:code.language-clojure "2\n"]]]) +(dom/render (fn [] widget55) (.getElementById js/document "widget55")) +(def widget58 nil) +(dom/render (fn [] widget58) (.getElementById js/document "widget58")) +(def widget60 [:div [:pre [:code.language-clojure "#tech.v3.dataset.column[10]\nnull\n[9, 5, 7, 2, 0, 3, 1, 0, 3, 2]\n"]]]) +(dom/render (fn [] widget60) (.getElementById js/document "widget60")) +(def widget62 [:div [:pre [:code.language-clojure "#tech.v3.dataset.column[3]\nnull\n[2, 0, 3]\n"]]]) +(dom/render (fn [] widget62) (.getElementById js/document "widget62")) +(def widget65 [:div [:pre [:code.language-clojure "#tech.v3.dataset.column[3]\nnull\n[2, 0, 3]\n"]]]) +(dom/render (fn [] widget65) (.getElementById js/document "widget65")) +(def widget68 [:div [:pre [:code.language-clojure "#tech.v3.dataset.column[3]\nnull\n[0, 3, 2]\n"]]]) +(dom/render (fn [] widget68) (.getElementById js/document "widget68")) +(def widget70 [:div [:pre [:code.language-clojure "#tech.v3.dataset.column[3]\nnull\n[0, 3, 2]\n"]]]) +(dom/render (fn [] widget70) (.getElementById js/document "widget70")) +(def widget72 [:div [:pre [:code.language-clojure "#tech.v3.dataset.column[8]\nnull\n[9, 5, 7, 2, 0, 3, 1, 0]\n"]]]) +(dom/render (fn [] widget72) (.getElementById js/document "widget72")) +(def widget74 [:div [:pre [:code.language-clojure "#tech.v3.dataset.column[8]\nnull\n[9, 5, 7, 2, 0, 3, 1, 0]\n"]]]) +(dom/render (fn [] widget74) (.getElementById js/document "widget74")) +(def widget77 [:div [:pre [:code.language-clojure "#tech.v3.dataset.column[4]\nnull\n[5, 2, 3, 3]\n"]]]) +(dom/render (fn [] widget77) (.getElementById js/document "widget77")) +(def widget80 [:div [:pre [:code.language-clojure "#tech.v3.dataset.column[10]\nnull\n[9, 5, 7, 2, 0, 3, 1, 0, 3, 2]\n"]]]) +(dom/render (fn [] widget80) (.getElementById js/document "widget80")) +(def widget83 [:div [:pre [:code.language-clojure "#tech.v3.dataset.column[10]\nnull\n[true, false, true, false, false, false, false, false, false, false]\n"]]]) +(dom/render (fn [] widget83) (.getElementById js/document "widget83")) +(def widget86 [:div [:pre [:code.language-clojure "#tech.v3.dataset.column[2]\nnull\n[9, 7]\n"]]]) +(dom/render (fn [] widget86) (.getElementById js/document "widget86")) +(def widget89 nil) +(dom/render (fn [] widget89) (.getElementById js/document "widget89")) +(def widget91 [:div [:pre [:code.language-clojure "#tech.v3.dataset.column[10]\n:_unnamed\n[0.09000, 0.05000, 0.07000, 0.02000, 0.000, 0.03000, 0.01000, 0.000, 0.03000, 0.02000]\n"]]]) +(dom/render (fn [] widget91) (.getElementById js/document "widget91")) +(def widget94 [:div [:pre [:code.language-clojure "#tech.v3.dataset.column[5]\n:_unnamed\n[5, 12, 21, 32, 45]\n"]]]) +(dom/render (fn [] widget94) (.getElementById js/document "widget94")) \ No newline at end of file diff --git a/src/tablecloth/column/api.clj b/src/tablecloth/column/api.clj index 47293cf..62747fe 100644 --- a/src/tablecloth/column/api.clj +++ b/src/tablecloth/column/api.clj @@ -15,6 +15,24 @@ (tablecloth.column.api.column/column data options))) +(defn column-map + "Applies a map function `map-fn` to one or more columns. If `col` is + a vector of columns, `map-fn` must have an arity equal to the number + of columns. The datatype of the resulting column will be inferred, + unless specified in the `options` map. Missing values can be handled + by providing a `:missing-fn` in the options map. + + options: + - :datatype - The desired datatype of the resulting column. The datatype + is inferred if not provided + - :missing-fn - A function that takes a sequence of columns, and returns a + set of missing index positions." + ([col map-fn] + (tablecloth.column.api.column/column-map col map-fn)) + ([col map-fn options] + (tablecloth.column.api.column/column-map col map-fn options))) + + (defn column? "Return true or false `item` is a column." ([item] diff --git a/src/tablecloth/column/api/api_template.clj b/src/tablecloth/column/api/api_template.clj index e37a4ea..08e4dee 100644 --- a/src/tablecloth/column/api/api_template.clj +++ b/src/tablecloth/column/api/api_template.clj @@ -5,6 +5,7 @@ (exporter/export-symbols tablecloth.column.api.column column column? + column-map typeof typeof? slice diff --git a/src/tablecloth/column/api/column.clj b/src/tablecloth/column/api/column.clj index 3f77033..eef8fbe 100644 --- a/src/tablecloth/column/api/column.clj +++ b/src/tablecloth/column/api/column.clj @@ -71,3 +71,22 @@ (col/select col (range (if (neg? from) (+ len from) from) (inc (if (neg? to) (+ len to) to)) step))))) + +(defn column-map + "Applies a map function `map-fn` to one or more columns. If `col` is + a vector of columns, `map-fn` must have an arity equal to the number + of columns. The datatype of the resulting column will be inferred, + unless specified in the `options` map. Missing values can be handled + by providing a `:missing-fn` in the options map. + + options: + - :datatype - The desired datatype of the resulting column. The datatype + is inferred if not provided + - :missing-fn - A function that takes a sequence of columns, and returns a + set of missing index positions." + ([col map-fn] + (column-map col map-fn {})) + ([col map-fn options] + (if (vector? col) + (apply col/column-map map-fn options col) + (col/column-map map-fn options col)))) From ece8388b58e1ec0a21849a6d26af31880fa3536f Mon Sep 17 00:00:00 2001 From: Ethan Miller Date: Sun, 12 Mar 2023 15:44:40 -0400 Subject: [PATCH 26/42] Add sorting support for column (#99) * Add rough version of `sort-column` with some tests * Add basic docstring * Add support for `:asc` and `:desc` to sort-column * Add note to handle missing values * Make slight improvement to sort-column docstringa --- src/tablecloth/column/api/column.clj | 23 ++++++++++++++++++++++ test/tablecloth/column/api/column_test.clj | 21 ++++++++++++++++++-- 2 files changed, 42 insertions(+), 2 deletions(-) diff --git a/src/tablecloth/column/api/column.clj b/src/tablecloth/column/api/column.clj index eef8fbe..15d3c5d 100644 --- a/src/tablecloth/column/api/column.clj +++ b/src/tablecloth/column/api/column.clj @@ -1,6 +1,8 @@ (ns tablecloth.column.api.column (:require [tech.v3.dataset.column :as col] [tech.v3.datatype :as dtype] + [tech.v3.datatype.functional :as fun] + [tech.v3.datatype.argops :refer [argsort]] [tablecloth.api.utils :refer [->general-types concrete-type? type?]])) (defn column @@ -72,6 +74,27 @@ (inc (if (neg? to) (+ len to) to)) step))))) +;;handle missing values +(defn sort-column + "Returns a sorted version of the column `col`. You can supply the ordering + keywords `:asc` or `:desc` or a comparator function to `order-or-comparator`. + If no comparator function is provided, the column will be sorted in + ascending order." + ([col] + (sort-column col :asc)) + ([col order-or-comparator] + (if (not (or (= :asc order-or-comparator) + (= :desc order-or-comparator) + (fn? order-or-comparator))) + (throw (IllegalArgumentException. + "`order-or-comparator` must be `:asc`, `:desc`, or a function."))) + (let [order-fn-lookup {:asc fun/<, :desc fun/>} + comparator-fn (if (fn? order-or-comparator) + order-or-comparator + (order-fn-lookup order-or-comparator)) + sorted-indices (argsort comparator-fn col)] + (col/select col sorted-indices)))) + (defn column-map "Applies a map function `map-fn` to one or more columns. If `col` is a vector of columns, `map-fn` must have an arity equal to the number diff --git a/test/tablecloth/column/api/column_test.clj b/test/tablecloth/column/api/column_test.clj index 30980a5..2e4b840 100644 --- a/test/tablecloth/column/api/column_test.clj +++ b/test/tablecloth/column/api/column_test.clj @@ -1,9 +1,11 @@ (ns tablecloth.column.api.column-test - (:require [tablecloth.column.api.column :refer [column zeros ones typeof? typeof slice]] + (:require [tablecloth.column.api.column :refer [column zeros ones typeof? + typeof slice sort-column]] + [tech.v3.dataset.column :refer [is-column?]] [midje.sweet :refer [fact facts =>]])) (fact "`column` returns a column" - (tech.v3.dataset.column/is-column? (column)) => true) + (is-column? (column)) => true) (fact "`column` provides a few ways to generate a column`" (column) => [] @@ -72,3 +74,18 @@ (slice c 1 :end) => [2 3 4 5] (slice c -4 :end) => [2 3 4 5] (slice c :start -3) => [1 2 3]))) + +(facts "about `sort-column`" + (let [c-ints (column [3 100 9 0 -10 43]) + c-strings (column ["a" "z" "baz" "fo" "bar" "foo"])] + (fact "it returns a column" + (sort-column c-ints) => is-column?) + (fact "it sorts in ascending order by default" + (sort-column c-ints) => [-10 0 3 9 43 100] + (sort-column c-strings) => ["a" "bar" "baz" "fo" "foo" "z"]) + (fact "it accepts a comparator-fn" + (sort-column c-strings + #(> (count %1) (count %2))) => ["baz" "bar" "foo" "fo" "z" "a"]))) + + + From b9c5019b91667feb4586eb5eb301501135aef955 Mon Sep 17 00:00:00 2001 From: Ethan Miller Date: Fri, 14 Apr 2023 09:45:43 -0400 Subject: [PATCH 27/42] Improve support for missing values for column api (#101) * Export tech.ml.dataset `select` fn for column api * Update docstring exported to api * Update column-exploration with basic illustration of select * Add `slice` * clean up tests a bit * Improve `slice` docstring slightly * Export `slice` to column api * Add stuff about `slice` to column exploration doc * Move accesssing & subsetting seciton above basic ops * Update column_expolration.html * Update comment block * Add column-map wrapper over tech.v3.dataset.column/column-mapping * Accepts columns in the first position to support use with pipes * If `col` is a vector of columns, then map-fn is run on all * Fix arg name * Clean up * Add iteration to column exploration and reorganize * Add column-map to column api_template * Add example of using column-map with multiple columns * Update column_exploration html doc * Update column_exploration html doc * Export tech.v3.dataset.column's missing fns * Remove `set-missing` I think this may be more of an internal fn * Add `count-missing` function * Add test for `sort-column` for missing values * Activate test that wil now pass due to tmd upgrade * Add sort-column to api-template * Add sort-column section to column_exploration doc * Add more missing apidoc * move fns to their own namespace to mirror main tc api * add `drop-missing` and `replace-missing` * Add details about missing api to column exploration * Add a exmaple of using count to column exploration * Add a few simple tests for missing ns * Fix docstrings --- docs/column_exploration.clj | 76 ++++++++++++++++++++- docs/column_exploration.html | 76 ++++++++++++++++----- src/tablecloth/column/api.clj | 61 +++++++++++++++++ src/tablecloth/column/api/api_template.clj | 10 ++- src/tablecloth/column/api/missing.clj | 53 ++++++++++++++ test/tablecloth/column/api/column_test.clj | 12 ++-- test/tablecloth/column/api/missing_test.clj | 13 ++++ 7 files changed, 273 insertions(+), 28 deletions(-) create mode 100644 src/tablecloth/column/api/missing.clj create mode 100644 test/tablecloth/column/api/missing_test.clj diff --git a/docs/column_exploration.clj b/docs/column_exploration.clj index d4c5bcf..7bf470f 100644 --- a/docs/column_exploration.clj +++ b/docs/column_exploration.clj @@ -5,8 +5,7 @@ (:require [tablecloth.api :as tc] [scicloj.clay.v2.api :as clay] [scicloj.kindly.v3.api :as kindly] - [scicloj.kindly.v3.kind :as kind] - )) + [scicloj.kindly.v3.kind :as kind])) ^{:kind/hidden true} (clay/start!) @@ -148,7 +147,7 @@ myclm (col/select myclm (ops/> myclm 5)) -;; ### Iterating Over Column +;; ### Iterating over a column ;; Many operations that you might want to perform on a column are ;; available in the `tablecloth.column.api.operators` namespace. @@ -166,3 +165,74 @@ myclm (-> [(column [5 6 7 8 9]) (column [1 2 3 4 5])] (col/column-map (partial *))) + + +(comment + (-> (column [1 nil 2 3 nil 0]) + (ops/* 10)) + + (-> (column [1 nil 2 3 nil 0]) + (ops/max [10 10 10 10 10 10])) + + + (tech.v3.dataset.column/missing)) + +;; ### Sorting a column + +;; You can use `sort-column` to sort a colum + +(def myclm (column (repeatedly 10 #(rand-int 100)))) + +myclm + +(col/sort-column myclm) + +;; As you can see, sort-columns sorts in ascending order by default, +;; but you can also specify a different order using ordering keywords +;; `:asc` and `:desc`: + + +(col/sort-column myclm :desc) + +;; Finally, sort can also accept a `comparator-fn`: + +(let [c (column ["1" "100" "4" "-10"])] + (col/sort-column c (fn [a b] + (let [a (parse-long a) + b (parse-long b)] + (< a b))))) + + +;; ### Missing values + +;; The column has built-in support for basic awareness and handling of +;; missing values. Columns will be scanned for missing values when +;; created. + +(def myclm (column [10 nil -4 20 1000 nil -233])) + +;; You can identify the set of index positions of missing values: + +(col/missing myclm) + +(col/count-missing myclm) + +;; You can remove missing values: + +(col/drop-missing myclm) + +;; Or you can replace them: + +(col/replace-missing myclm) + +;; There are a range of built-in strategies: + +(col/replace-missing myclm :midpoint) + + +;; And you can provide your own value using a specific value or fn: + +(col/replace-missing myclm :value 555) + +(col/replace-missing myclm :value (fn [col-without-missing] + (ops/mean col-without-missing))) diff --git a/docs/column_exploration.html b/docs/column_exploration.html index c08a4dc..7766992 100644 --- a/docs/column_exploration.html +++ b/docs/column_exploration.html @@ -33,13 +33,12 @@ background-color: #f0f0f0; padding: 2px; .bg-light; -}
docs/column_exploration.clj

Tablecloth Column Exploration

^{:kind/hidden true}
+}
/Users/emiller/Projects/scicloj/tablecloth/docs/column_exploration.clj

Tablecloth Column Exploration

^{:kind/hidden true}
 (ns intro
   (:require [tablecloth.api :as tc]
             [scicloj.clay.v2.api :as clay]
             [scicloj.kindly.v3.api :as kindly]
-            [scicloj.kindly.v3.kind :as kind]
-            ))
...
^{:kind/hidden true}
+            [scicloj.kindly.v3.kind :as kind]))
...
^{:kind/hidden true}
 (clay/start!)
...
^{:kind/hidden true}
 (comment
   (clay/show-doc! "docs/column_exploration.clj" {:hide-doc? true})
@@ -49,10 +48,23 @@
   (col/typeof string-column))
...

Basic Operations

Operations are right now in their own namespace

(require '[tablecloth.column.api.operators :as ops])
...

With that imported we can perform a large number of operations:

(def a (column [20 30 40 50]))
...
(def b (column (range 4)))
...
(ops/- a b)
...
(ops/pow a 2)
...
(ops/* 10 (ops/sin a))
...
(ops/< a 35)
...

All these operations take a column as their first argument and return a column, so they can be chained easily.

(-> a
     (ops/* b)
     (ops/< 70))
...

Subsetting and accesssing

You can access an element in a column in exactly the same ways you would in Clojure.

(def myclm (column (range 5)))
...
myclm
...
(myclm 2)
...
(nth myclm 2)
...
(get myclm 2)
...

Selecting multiple elements

There are two ways to select multiple elements from a column:

  • If you need to select a continuous subset, you can use slice;
  • if you may need to select diverse elements, use select.

Slice The slice method allows you to use indexes to specify a portion of the column to extract.

(def myclm
-  (column (repeatedly 10 #(rand-int 10))))
...
myclm
...
(col/slice myclm 3 5)
...

It also supports negative indexing, making it possible to slice from the end of the column:

(col/slice myclm -7 -5)
...

It's also possible to slice from one direction to the beginning or end:

(col/slice myclm 7 :end)
...
(col/slice myclm -3 :end)
...
(col/slice myclm :start 7)
...
(col/slice myclm :start -3)
...

Select

The select fn works by taking a list of index positions:

(col/select myclm [1 3 5 8])
...

We can combine this type of selection with the operations just demonstrated to select certain values.

myclm
...

Let's see which positions are greter than 5.

(ops/> myclm 5)
...

We can use a column of boolean values like the one above with the select function as well. select will choose all the positions that are true. It's like supplying select a list of the index positions that hold true values.

(col/select myclm (ops/> myclm 5))
...

Iterating Over Column

Many operations that you might want to perform on a column are available in the tablecloth.column.api.operators namespace. However, when there is a need to do something custom, you can also interate over the column.

(defn calc-percent [x]
+  (column (repeatedly 10 #(rand-int 10))))
...
myclm
...
(col/slice myclm 3 5)
...

It also supports negative indexing, making it possible to slice from the end of the column:

(col/slice myclm -7 -5)
...

It's also possible to slice from one direction to the beginning or end:

(col/slice myclm 7 :end)
...
(col/slice myclm -3 :end)
...
(col/slice myclm :start 7)
...
(col/slice myclm :start -3)
...

Select

The select fn works by taking a list of index positions:

(col/select myclm [1 3 5 8])
...

We can combine this type of selection with the operations just demonstrated to select certain values.

myclm
...

Let's see which positions are greter than 5.

(ops/> myclm 5)
...

We can use a column of boolean values like the one above with the select function as well. select will choose all the positions that are true. It's like supplying select a list of the index positions that hold true values.

(col/select myclm (ops/> myclm 5))
...

Iterating over a column

Many operations that you might want to perform on a column are available in the tablecloth.column.api.operators namespace. However, when there is a need to do something custom, you can also interate over the column.

(defn calc-percent [x]
   (/ x 100.0))
...
(col/column-map myclm calc-percent)
...

It's also possible to iterate over multiple columns by supplying a vector of columns:

(-> [(column [5 6 7 8 9])
      (column [1 2 3 4 5])]
-    (col/column-map (partial *)))
...
\ No newline at end of file +(dom/render (fn [] widget94) (.getElementById js/document "widget94")) +(def widget96 nil) +(dom/render (fn [] widget96) (.getElementById js/document "widget96")) +(def widget99 nil) +(dom/render (fn [] widget99) (.getElementById js/document "widget99")) +(def widget101 [:div [:pre [:code.language-clojure "#tech.v3.dataset.column[10]\nnull\n[85, 69, 44, 69, 76, 65, 31, 73, 87, 12]\n"]]]) +(dom/render (fn [] widget101) (.getElementById js/document "widget101")) +(def widget103 [:div [:pre [:code.language-clojure "#tech.v3.dataset.column[10]\nnull\n[12, 31, 44, 65, 69, 69, 73, 76, 85, 87]\n"]]]) +(dom/render (fn [] widget103) (.getElementById js/document "widget103")) +(def widget106 [:div [:pre [:code.language-clojure "#tech.v3.dataset.column[10]\nnull\n[87, 85, 76, 73, 69, 69, 65, 44, 31, 12]\n"]]]) +(dom/render (fn [] widget106) (.getElementById js/document "widget106")) +(def widget109 [:div [:pre [:code.language-clojure "#tech.v3.dataset.column[4]\nnull\n[-10, 1, 4, 100]\n"]]]) +(dom/render (fn [] widget109) (.getElementById js/document "widget109")) +(def widget112 nil) +(dom/render (fn [] widget112) (.getElementById js/document "widget112")) +(def widget115 [:div [:pre [:code.language-clojure "{1,5}\n"]]]) +(dom/render (fn [] widget115) (.getElementById js/document "widget115")) +(def widget117 [:div [:pre [:code.language-clojure "2\n"]]]) +(dom/render (fn [] widget117) (.getElementById js/document "widget117")) +(def widget120 [:div [:pre [:code.language-clojure "#tech.v3.dataset.column[5]\n:col\n[10, -4, 20, 1000, -233]\n"]]]) +(dom/render (fn [] widget120) (.getElementById js/document "widget120")) +(def widget123 [:div [:pre [:code.language-clojure "#tech.v3.dataset.column[7]\n:col\n[10, 10, -4, 20, 1000, 1000, -233]\n"]]]) +(dom/render (fn [] widget123) (.getElementById js/document "widget123")) +(def widget126 [:div [:pre [:code.language-clojure "#tech.v3.dataset.column[7]\n:col\n[10.00, 3.000, -4.000, 20.00, 1000, 383.5, -233.0]\n"]]]) +(dom/render (fn [] widget126) (.getElementById js/document "widget126")) +(def widget129 [:div [:pre [:code.language-clojure "#tech.v3.dataset.column[7]\n:col\n[10, 555.0, -4, 20, 1000, 555.0, -233]\n"]]]) +(dom/render (fn [] widget129) (.getElementById js/document "widget129")) +(def widget131 [:div [:pre [:code.language-clojure "#tech.v3.dataset.column[7]\n:col\n[10, 158.6, -4, 20, 1000, 158.6, -233]\n"]]]) +(dom/render (fn [] widget131) (.getElementById js/document "widget131")) \ No newline at end of file diff --git a/src/tablecloth/column/api.clj b/src/tablecloth/column/api.clj index 62747fe..34a249d 100644 --- a/src/tablecloth/column/api.clj +++ b/src/tablecloth/column/api.clj @@ -3,6 +3,7 @@ "Tablecloth Column API" (:require [tablecloth.column.api.api-template] [tablecloth.column.api.column] + [tablecloth.column.api.missing] [tech.v3.dataset.column])) (defn column @@ -39,12 +40,61 @@ (tablecloth.column.api.column/column? item))) +(defn count-missing + "Returns the number of missing values in column `col`. " + ([col] + (tablecloth.column.api.missing/count-missing col))) + + +(defn drop-missing + "Remove missing values from column `col`." + ([col] + (tablecloth.column.api.missing/drop-missing col))) + + +(defn is-missing? + "Return true if this index is missing." + ([col idx] + (tech.v3.dataset.column/is-missing? col idx))) + + +(defn missing + "Indexes of missing values. Both iterable and reader." + (^{:tag org.roaringbitmap.RoaringBitmap} [col] + (tech.v3.dataset.column/missing col))) + + (defn ones "Creates a new column filled with `n-ones`" ([n-ones] (tablecloth.column.api.column/ones n-ones))) +(defn replace-missing + "Replace missing values in column `col` with give `strategy`. + + Strategies may be: + + - `:down` - Take the previous value, or use provided value. + - `:up` - Take the next value, or use provided value. + - `:downup` - Take the previous value, otherwise take the next value. + - `:updown` - Take the next value, otherwise take the previous value. + - `:nearest` - Use the nearest of next or previous values. (Strategy `:mid` is an alias for `:nearest`). + - `:midpoint` - Use the midpoint of averaged values between previous and next (non-missing) values. + - `:abb` - Impute missing value with approximate Bayesian bootstrap. + See [r's ABB](https://search.r-project.org/CRAN/refmans/LaplacesDemon/html/ABB.html). + - `:lerp` - Linearly interpolate values between previous and next nonmissing rows. + - `:value` - Provide a value explicitly. Value may be a function in which + case it will be called on the column with missing values elided + and the return will be used to as the filler." + ([col] + (tablecloth.column.api.missing/replace-missing col)) + ([col strategy] + (tablecloth.column.api.missing/replace-missing col strategy)) + ([col strategy value] + (tablecloth.column.api.missing/replace-missing col strategy value))) + + (defn select "Return a new column with the subset of indexes based on the provided `selection`. `selection` can be a list of indexes to select or boolean values where the index @@ -80,6 +130,17 @@ (tablecloth.column.api.column/slice col from to step))) +(defn sort-column + "Returns a sorted version of the column `col`. You can supply the ordering + keywords `:asc` or `:desc` or a comparator function to `order-or-comparator`. + If no comparator function is provided, the column will be sorted in + ascending order." + ([col] + (tablecloth.column.api.column/sort-column col)) + ([col order-or-comparator] + (tablecloth.column.api.column/sort-column col order-or-comparator))) + + (defn typeof "Returns the concrete type of the elements within the column `col`." ([col] diff --git a/src/tablecloth/column/api/api_template.clj b/src/tablecloth/column/api/api_template.clj index 08e4dee..11a0047 100644 --- a/src/tablecloth/column/api/api_template.clj +++ b/src/tablecloth/column/api/api_template.clj @@ -10,9 +10,17 @@ typeof? slice zeros - ones) + ones + sort-column) + +(exporter/export-symbols tablecloth.column.api.missing + count-missing + drop-missing + replace-missing) (exporter/export-symbols tech.v3.dataset.column + is-missing? + missing select) (comment diff --git a/src/tablecloth/column/api/missing.clj b/src/tablecloth/column/api/missing.clj new file mode 100644 index 0000000..2afa904 --- /dev/null +++ b/src/tablecloth/column/api/missing.clj @@ -0,0 +1,53 @@ +(ns tablecloth.column.api.missing + (:require [tech.v3.dataset :as ds] + [tech.v3.dataset.column :as col] + [tech.v3.datatype :as dtype] + [tablecloth.api :as tc])) + +(defn- into-ds [col] + (-> {:col col} + tc/dataset + (tc/update-columns :col #(col/set-missing % (col/missing col))))) + +(defn- out-of-ds [ds] + (:col ds)) + +(defn count-missing + "Returns the number of missing values in column `col`. " + [col] + (-> col col/missing dtype/ecount)) + +(defn drop-missing + "Remove missing values from column `col`." + [col] + (-> col + (into-ds) + (ds/drop-missing) + (out-of-ds))) + +(defn replace-missing + "Replace missing values in column `col` with give `strategy`. + + Strategies may be: + + - `:down` - Take the previous value, or use provided value. + - `:up` - Take the next value, or use provided value. + - `:downup` - Take the previous value, otherwise take the next value. + - `:updown` - Take the next value, otherwise take the previous value. + - `:nearest` - Use the nearest of next or previous values. (Strategy `:mid` is an alias for `:nearest`). + - `:midpoint` - Use the midpoint of averaged values between previous and next (non-missing) values. + - `:abb` - Impute missing value with approximate Bayesian bootstrap. + See [r's ABB](https://search.r-project.org/CRAN/refmans/LaplacesDemon/html/ABB.html). + - `:lerp` - Linearly interpolate values between previous and next nonmissing rows. + - `:value` - Provide a value explicitly. Value may be a function in which + case it will be called on the column with missing values elided + and the return will be used to as the filler." + ([col] + (replace-missing col :nearest)) + ([col strategy] + (replace-missing col strategy nil)) + ([col strategy value] + (-> col + (into-ds) + (ds/replace-missing [:col] strategy value) + (out-of-ds)))) diff --git a/test/tablecloth/column/api/column_test.clj b/test/tablecloth/column/api/column_test.clj index 2e4b840..253a9a8 100644 --- a/test/tablecloth/column/api/column_test.clj +++ b/test/tablecloth/column/api/column_test.clj @@ -20,11 +20,9 @@ (-> [true false true] (column) (tech.v3.datatype/elemwise-datatype)) => :boolean - ;; disable this test until TC reaches 7.00-beta2 - ;;(-> [1 true false] - ;; (column) - ;; (tech.v3.datatype/elemwise-datatype)) => :object - ) + (-> [1 true false] + (column) + (tech.v3.datatype/elemwise-datatype)) => :object) (fact "`typeof` returns the concrete type of the elements" (typeof (column [1 2 3])) => :int64 @@ -85,7 +83,9 @@ (sort-column c-strings) => ["a" "bar" "baz" "fo" "foo" "z"]) (fact "it accepts a comparator-fn" (sort-column c-strings - #(> (count %1) (count %2))) => ["baz" "bar" "foo" "fo" "z" "a"]))) + #(> (count %1) (count %2))) => ["baz" "bar" "foo" "fo" "z" "a"]) + (fact "it moves missing values to the end" + (sort-column (column [nil 100 nil 3 -10])) => [-10 3 100 nil nil]))) diff --git a/test/tablecloth/column/api/missing_test.clj b/test/tablecloth/column/api/missing_test.clj new file mode 100644 index 0000000..bd55b82 --- /dev/null +++ b/test/tablecloth/column/api/missing_test.clj @@ -0,0 +1,13 @@ +(ns tablecloth.column.api.missing-test + (:require [tablecloth.column.api.missing :refer [count-missing replace-missing drop-missing]] + [tablecloth.column.api.column :refer [column]] + [midje.sweet :refer [facts =>]])) + +(facts "about `count-missing`" + (count-missing (column [1 2 3])) => 0) + +(facts "about `replace-missing`" + (replace-missing (column [1 nil 3])) => [1 1 3]) + +(facts "about `drop-missing`" + (drop-missing (column [1 nil 3])) => [1 3]) From a99b96f4e937e5bcc7a14c97e91f00bcd896f4b6 Mon Sep 17 00:00:00 2001 From: Ethan Miller Date: Fri, 14 Apr 2023 17:16:51 -0400 Subject: [PATCH 28/42] Add proof of concept --- src/tablecloth/api/lift_operators.clj | 29 +++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 src/tablecloth/api/lift_operators.clj diff --git a/src/tablecloth/api/lift_operators.clj b/src/tablecloth/api/lift_operators.clj new file mode 100644 index 0000000..5257387 --- /dev/null +++ b/src/tablecloth/api/lift_operators.clj @@ -0,0 +1,29 @@ +(ns tablecloth.api.lift-operators + (:require [tablecloth.api :refer [select-columns]])) + +(require '[tablecloth.column.api.operators]) + +(def ops-mappings (ns-publics 'tablecloth.column.api.operators)) + +(defn lift-op [fn-sym] + (let [defn (symbol "defn") + let (symbol "let")] + `(~defn ~(symbol (name fn-sym)) + ~'[ds & columns-selector] + (~let [just-selected-ds# (select-columns ~'ds ~'columns-selector)] + #_cols# + (apply ~fn-sym (tablecloth.api.dataset/columns just-selected-ds#)))))) + +(lift-op 'tablecloth.column.api.operators/+) + +(eval (lift-op 'tablecloth.column.api.operators/+)) + +(def ds (tablecloth.api/dataset {:a [1 2 3 4 5] + :b [6 7 8 9 10] + :c [11 12 13 14 16]})) + + +(+ ds :a :c) + + + From 179060957b5f23db4ba60233f330981675a6c350 Mon Sep 17 00:00:00 2001 From: Ethan Miller Date: Sun, 23 Apr 2023 19:00:43 -0400 Subject: [PATCH 29/42] Consolidate tablecloth.column.api/operators args (#106) * Conslidate ops args to x y z * Fix lift op for comparison ops * Update lift-op fn to handle multiple ar lookups Case that required this was the comparison ops. We want (> x y z) from (> lhs rhs) (> lhs mid rhs). We can't universally map y to rhs because it would be wront for the 3-arity option. --- src/tablecloth/column/api/lift_operators.clj | 132 ++- src/tablecloth/column/api/operators.clj | 953 +++++++++---------- src/tablecloth/column/api/utils.clj | 19 +- 3 files changed, 552 insertions(+), 552 deletions(-) diff --git a/src/tablecloth/column/api/lift_operators.clj b/src/tablecloth/column/api/lift_operators.clj index 333d120..305d9d4 100644 --- a/src/tablecloth/column/api/lift_operators.clj +++ b/src/tablecloth/column/api/lift_operators.clj @@ -6,13 +6,8 @@ '+ '- '/ - '< - '<= - '> - '>= 'abs 'acos - 'and 'asin 'atan 'atan2 @@ -31,11 +26,6 @@ 'ceil 'cos 'cosh - 'distance - 'distance-squared - 'dot-product - 'eq - 'equals 'exp 'expm1 'floor @@ -52,9 +42,7 @@ 'min 'next-down 'next-up - 'normalize - 'not-eq - 'or + 'pow 'quot 'rem @@ -81,9 +69,8 @@ 'median] (fn [fn-sym fn-meta] (lift-op fn-sym fn-meta - {:new-args '([col] [col options]) - :new-args-lookup {'data 'col - 'options 'options}})) + {:new-args {'[x] {'data 'x} + '[x options] {'data 'x}}})) ['even? 'finite? 'infinite? @@ -98,79 +85,96 @@ (fn [fn-sym fn-meta] (lift-op fn-sym fn-meta - {:new-args '([x] [x options]) - :new-args-lookup {'arg 'x - 'options 'options}})) + {:new-args {'[x] {'arg 'x} + '[x options] {'arg 'x}}})) ['percentiles] (fn [fn-sym fn-meta] (lift-op fn-sym fn-meta - {:new-args '([x percentiles] [x percentiles options]) - :new-args-lookup {'data 'x, - 'percentages 'percentiles, - 'options 'options}})) + {:new-args {'[x percentiles] {'data 'x + 'percentages 'percentiles} + '[x percentiles options] {'data 'x + 'percentages 'percentiles}}})) ['shift] (fn [fn-sym fn-meta] (lift-op fn-sym fn-meta - {:new-args '([x n]) - :new-args-lookup {'rdr 'x - 'n 'n}})) + {:new-args {'[x n] {'rdr 'x}}})) ['descriptive-statistics] (fn [fn-sym fn-meta] (lift-op fn-sym fn-meta - {:new-args '([x stats-names stats-data options] - [x stats-names options] - [x stats-names] - [x]) - :new-args-lookup {'rdr 'x - 'src-rdr 'x - 'stats-names 'stats-names - 'stats-data 'stats-data - 'options 'options}})) + {:new-args {'[x] {'rdr 'x} + '[x stats-names] {'rdr 'x} + '[x stats-names options] {'rdr 'x} + '[x stats-names stats-data options] {'src-rdr 'x}}})) ['quartiles] (fn [fn-sym fn-meta] (lift-op fn-sym fn-meta - {:new-args '([x options] [x]) - :new-args-lookup {'item 'x - 'options 'options}})) + {:new-args {'[x] {'item 'x} + '[x options] {'item 'x}}})) ['fill-range] (fn [fn-sym fn-meta] (lift-op fn-sym fn-meta - {:new-args '([x max-span]) - :new-args-lookup {'numeric-data 'x - 'max-span 'max-span}})) + {:new-args {'[x max-span] {'numeric-data 'x}}})) ['reduce-min 'reduce-max 'reduce-* 'reduce-+] (fn [fn-sym fn-meta] (lift-op + fn-sym fn-meta - {:new-args '([x]) - :new-args-lookup {'rdr 'x}})) + {:new-args {'[x] {'rdr 'x}}})) ['mean-fast 'sum-fast 'magnitude-squared] (fn [fn-sym fn-meta] (lift-op fn-sym fn-meta - {:new-args '([x]) - :new-args-lookup {'data 'x}})) + {:new-args {'[x] {'data 'x}}})) ['kendalls-correlation 'pearsons-correlation 'spearmans-correlation] (fn [fn-sym fn-meta] (lift-op fn-sym fn-meta - {:new-args '([x y] [x y options]) - :new-args-lookup {'lhs 'x - 'rhs 'y - 'options 'options}})) + {:new-args {'[x y] {'lhs 'x + 'rhs 'y} + '[x y options] {'lhs 'x + 'rhs 'y}}})) ['cumprod 'cumsum 'cummax 'cummin] (fn [fn-sym fn-meta] (lift-op fn-sym fn-meta - {:new-args '([x] [x options]) - :new-args-lookup {'data 'x - 'options 'options}}))}) + {:new-args {'[x] {'data 'x}}})) + ['normalize] (fn [fn-sym fn-meta] + (lift-op + fn-sym fn-meta + {:new-args {'[x] {'item 'x}}})) + ['< + '<= + '> + '>=] (fn [fn-sym fn-meta] + (lift-op + fn-sym fn-meta + {:new-args {'[x y] {'lhs 'x + 'rhs 'y} + '[x y z] {'lhs 'x + 'mid 'y + 'rhs 'z}}})) + ['equals] (fn [fn-sym fn-meta] + (lift-op + fn-sym fn-meta + {:new-args {'[x y & args] {'lhs 'x + 'rhs 'y}}})) + ['distance + 'dot-product + 'eq + 'not-eq + 'or + 'distance-squared + 'and] (fn [fn-sym fn-meta] + (lift-op + fn-sym fn-meta + {:new-args {'[x y] {'lhs 'x + 'rhs 'y}}}))}) (defn deserialize-lift-fn-lookup [] @@ -193,3 +197,27 @@ unsigned-bit-shift-right zero?] "src/tablecloth/column/api/operators.clj") ,) + + +(comment + + (def mylift (fn [fn-sym fn-meta] + (lift-op + fn-sym fn-meta + {:new-args {'[x y] {'lhs 'x + 'rhs 'y} + '[x y z] {'lhs 'x + 'mid 'y + 'rhs 'z}}} + #_{:new-args '([x y z]) + :new-args-lookup {'lhs 'x + 'mid 'y + 'rhs 'z}}))) + + (def mappings (ns-publics 'tech.v3.datatype.functional)) + + (mylift 'tech.v3.datatype.functional/> (meta (get mappings '>))) + + tech.v3.datatype.functional/> + + ) diff --git a/src/tablecloth/column/api/operators.clj b/src/tablecloth/column/api/operators.clj index e8a56d7..51b8934 100644 --- a/src/tablecloth/column/api/operators.clj +++ b/src/tablecloth/column/api/operators.clj @@ -43,1647 +43,1616 @@ (defn kurtosis "" - ([col] + ([x] (let - [original-result__44239__auto__ - (tech.v3.datatype.functional/kurtosis col)] + [original-result__34672__auto__ + (tech.v3.datatype.functional/kurtosis x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44239__auto__))) - ([col options] + original-result__34672__auto__))) + ([x options] (let - [original-result__44239__auto__ - (tech.v3.datatype.functional/kurtosis col options)] + [original-result__34672__auto__ + (tech.v3.datatype.functional/kurtosis x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44239__auto__)))) + original-result__34672__auto__)))) (defn bit-set "" ([x y] (let - [original-result__44240__auto__ + [original-result__34673__auto__ (tech.v3.datatype.functional/bit-set x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__))) + original-result__34673__auto__))) ([x y & args] (let - [original-result__44240__auto__ + [original-result__34673__auto__ (clojure.core/apply tech.v3.datatype.functional/bit-set x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__)))) + original-result__34673__auto__)))) (defn finite? "" ([x] (let - [original-result__44239__auto__ + [original-result__34672__auto__ (tech.v3.datatype.functional/finite? x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44239__auto__))) + original-result__34672__auto__))) ([x options] (let - [original-result__44239__auto__ + [original-result__34672__auto__ (tech.v3.datatype.functional/finite? x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44239__auto__)))) + original-result__34672__auto__)))) (defn distance "" - ([lhs rhs] + ([x y] (let - [original-result__44240__auto__ - (tech.v3.datatype.functional/distance lhs rhs)] + [original-result__34672__auto__ + (tech.v3.datatype.functional/distance x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__)))) + original-result__34672__auto__)))) (defn reduce-min "" ([x] (let - [original-result__44239__auto__ + [original-result__34672__auto__ (tech.v3.datatype.functional/reduce-min x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44239__auto__)))) + original-result__34672__auto__)))) (defn to-radians "" ([x options] (let - [original-result__44240__auto__ + [original-result__34673__auto__ (tech.v3.datatype.functional/to-radians x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__))) + original-result__34673__auto__))) ([x] (let - [original-result__44240__auto__ + [original-result__34673__auto__ (tech.v3.datatype.functional/to-radians x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__)))) + original-result__34673__auto__)))) (defn bit-shift-right "" ([x y] (let - [original-result__44240__auto__ + [original-result__34673__auto__ (tech.v3.datatype.functional/bit-shift-right x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__))) + original-result__34673__auto__))) ([x y & args] (let - [original-result__44240__auto__ + [original-result__34673__auto__ (clojure.core/apply tech.v3.datatype.functional/bit-shift-right x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__)))) + original-result__34673__auto__)))) (defn ieee-remainder "" ([x y] (let - [original-result__44240__auto__ + [original-result__34673__auto__ (tech.v3.datatype.functional/ieee-remainder x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__))) + original-result__34673__auto__))) ([x y & args] (let - [original-result__44240__auto__ + [original-result__34673__auto__ (clojure.core/apply tech.v3.datatype.functional/ieee-remainder x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__)))) + original-result__34673__auto__)))) (defn log "" ([x options] (let - [original-result__44240__auto__ + [original-result__34673__auto__ (tech.v3.datatype.functional/log x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__))) + original-result__34673__auto__))) ([x] (let - [original-result__44240__auto__ (tech.v3.datatype.functional/log x)] + [original-result__34673__auto__ (tech.v3.datatype.functional/log x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__)))) + original-result__34673__auto__)))) (defn bit-shift-left "" ([x y] (let - [original-result__44240__auto__ + [original-result__34673__auto__ (tech.v3.datatype.functional/bit-shift-left x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__))) + original-result__34673__auto__))) ([x y & args] (let - [original-result__44240__auto__ + [original-result__34673__auto__ (clojure.core/apply tech.v3.datatype.functional/bit-shift-left x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__)))) + original-result__34673__auto__)))) (defn acos "" ([x options] (let - [original-result__44240__auto__ + [original-result__34673__auto__ (tech.v3.datatype.functional/acos x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__))) + original-result__34673__auto__))) ([x] (let - [original-result__44240__auto__ + [original-result__34673__auto__ (tech.v3.datatype.functional/acos x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__)))) + original-result__34673__auto__)))) (defn to-degrees "" ([x options] (let - [original-result__44240__auto__ + [original-result__34673__auto__ (tech.v3.datatype.functional/to-degrees x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__))) + original-result__34673__auto__))) ([x] (let - [original-result__44240__auto__ + [original-result__34673__auto__ (tech.v3.datatype.functional/to-degrees x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__)))) + original-result__34673__auto__)))) (defn < "" - ([lhs mid rhs] + ([x y] (let - [original-result__44240__auto__ - (tech.v3.datatype.functional/< lhs mid rhs)] + [original-result__34672__auto__ (tech.v3.datatype.functional/< x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__))) - ([lhs rhs] + original-result__34672__auto__))) + ([x y z] (let - [original-result__44240__auto__ - (tech.v3.datatype.functional/< lhs rhs)] + [original-result__34672__auto__ + (tech.v3.datatype.functional/< x y z)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__)))) + original-result__34672__auto__)))) (defn floor "" ([x options] (let - [original-result__44240__auto__ + [original-result__34673__auto__ (tech.v3.datatype.functional/floor x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__))) + original-result__34673__auto__))) ([x] (let - [original-result__44240__auto__ + [original-result__34673__auto__ (tech.v3.datatype.functional/floor x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__)))) + original-result__34673__auto__)))) (defn atan2 "" ([x y] (let - [original-result__44240__auto__ + [original-result__34673__auto__ (tech.v3.datatype.functional/atan2 x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__))) + original-result__34673__auto__))) ([x y & args] (let - [original-result__44240__auto__ + [original-result__34673__auto__ (clojure.core/apply tech.v3.datatype.functional/atan2 x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__)))) + original-result__34673__auto__)))) (defn normalize "" - ([item] + ([x] (let - [original-result__44240__auto__ - (tech.v3.datatype.functional/normalize item)] + [original-result__34672__auto__ + (tech.v3.datatype.functional/normalize x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__)))) + original-result__34672__auto__)))) (defn hypot "" ([x y] (let - [original-result__44240__auto__ + [original-result__34673__auto__ (tech.v3.datatype.functional/hypot x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__))) + original-result__34673__auto__))) ([x y & args] (let - [original-result__44240__auto__ + [original-result__34673__auto__ (clojure.core/apply tech.v3.datatype.functional/hypot x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__)))) + original-result__34673__auto__)))) (defn tanh "" ([x options] (let - [original-result__44240__auto__ + [original-result__34673__auto__ (tech.v3.datatype.functional/tanh x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__))) + original-result__34673__auto__))) ([x] (let - [original-result__44240__auto__ + [original-result__34673__auto__ (tech.v3.datatype.functional/tanh x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__)))) + original-result__34673__auto__)))) (defn sq "" ([x options] (let - [original-result__44240__auto__ + [original-result__34673__auto__ (tech.v3.datatype.functional/sq x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__))) + original-result__34673__auto__))) ([x] (let - [original-result__44240__auto__ (tech.v3.datatype.functional/sq x)] + [original-result__34673__auto__ (tech.v3.datatype.functional/sq x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__)))) + original-result__34673__auto__)))) (defn fill-range "Given a reader of numeric data and a max span amount, produce\n a new reader where the difference between any two consecutive elements\n is less than or equal to the max span amount. Also return a bitmap of the added\n indexes. Uses linear interpolation to fill in areas, operates in double space.\n Returns\n {:result :missing}" ([x max-span] (let - [original-result__44239__auto__ + [original-result__34672__auto__ (tech.v3.datatype.functional/fill-range x max-span)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44239__auto__)))) + original-result__34672__auto__)))) (defn sum "Double sum of data using\n [Kahan compensated summation](https://en.wikipedia.org/wiki/Kahan_summation_algorithm)." - ([col] + ([x] (let - [original-result__44239__auto__ - (tech.v3.datatype.functional/sum col)] + [original-result__34672__auto__ (tech.v3.datatype.functional/sum x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44239__auto__))) - ([col options] + original-result__34672__auto__))) + ([x options] (let - [original-result__44239__auto__ - (tech.v3.datatype.functional/sum col options)] + [original-result__34672__auto__ + (tech.v3.datatype.functional/sum x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44239__auto__)))) + original-result__34672__auto__)))) (defn pos? "" ([x] (let - [original-result__44239__auto__ + [original-result__34672__auto__ (tech.v3.datatype.functional/pos? x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44239__auto__))) + original-result__34672__auto__))) ([x options] (let - [original-result__44239__auto__ + [original-result__34672__auto__ (tech.v3.datatype.functional/pos? x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44239__auto__)))) + original-result__34672__auto__)))) (defn shift "Shift by n and fill in with the first element for n>0 or last element for n<0.\n\n Examples:\n\n```clojure\nuser> (dfn/shift (range 10) 2)\n[0 0 0 1 2 3 4 5 6 7]\nuser> (dfn/shift (range 10) -2)\n[2 3 4 5 6 7 8 9 9 9]\n```" ([x n] (let - [original-result__44239__auto__ + [original-result__34672__auto__ (tech.v3.datatype.functional/shift x n)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44239__auto__)))) + original-result__34672__auto__)))) (defn ceil "" ([x options] (let - [original-result__44240__auto__ + [original-result__34673__auto__ (tech.v3.datatype.functional/ceil x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__))) + original-result__34673__auto__))) ([x] (let - [original-result__44240__auto__ + [original-result__34673__auto__ (tech.v3.datatype.functional/ceil x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__)))) + original-result__34673__auto__)))) (defn bit-xor "" ([x y] (let - [original-result__44240__auto__ + [original-result__34673__auto__ (tech.v3.datatype.functional/bit-xor x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__))) + original-result__34673__auto__))) ([x y & args] (let - [original-result__44240__auto__ + [original-result__34673__auto__ (clojure.core/apply tech.v3.datatype.functional/bit-xor x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__)))) + original-result__34673__auto__)))) (defn unsigned-bit-shift-right "" ([x y] (let - [original-result__44240__auto__ + [original-result__34673__auto__ (tech.v3.datatype.functional/unsigned-bit-shift-right x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__))) + original-result__34673__auto__))) ([x y & args] (let - [original-result__44240__auto__ + [original-result__34673__auto__ (clojure.core/apply tech.v3.datatype.functional/unsigned-bit-shift-right x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__)))) + original-result__34673__auto__)))) (defn neg? "" ([x] (let - [original-result__44239__auto__ + [original-result__34672__auto__ (tech.v3.datatype.functional/neg? x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44239__auto__))) + original-result__34672__auto__))) ([x options] (let - [original-result__44239__auto__ + [original-result__34672__auto__ (tech.v3.datatype.functional/neg? x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44239__auto__)))) + original-result__34672__auto__)))) (defn <= "" - ([lhs mid rhs] + ([x y] (let - [original-result__44240__auto__ - (tech.v3.datatype.functional/<= lhs mid rhs)] + [original-result__34672__auto__ + (tech.v3.datatype.functional/<= x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__))) - ([lhs rhs] + original-result__34672__auto__))) + ([x y z] (let - [original-result__44240__auto__ - (tech.v3.datatype.functional/<= lhs rhs)] + [original-result__34672__auto__ + (tech.v3.datatype.functional/<= x y z)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__)))) + original-result__34672__auto__)))) (defn * "" ([x y] (let - [original-result__44240__auto__ (tech.v3.datatype.functional/* x y)] + [original-result__34673__auto__ (tech.v3.datatype.functional/* x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__))) + original-result__34673__auto__))) ([x y & args] (let - [original-result__44240__auto__ + [original-result__34673__auto__ (clojure.core/apply tech.v3.datatype.functional/* x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__)))) + original-result__34673__auto__)))) (defn min "" ([x] (let - [original-result__44240__auto__ (tech.v3.datatype.functional/min x)] + [original-result__34673__auto__ (tech.v3.datatype.functional/min x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__))) + original-result__34673__auto__))) ([x y] (let - [original-result__44240__auto__ + [original-result__34673__auto__ (tech.v3.datatype.functional/min x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__))) + original-result__34673__auto__))) ([x y & args] (let - [original-result__44240__auto__ + [original-result__34673__auto__ (clojure.core/apply tech.v3.datatype.functional/min x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__)))) + original-result__34673__auto__)))) (defn atan "" ([x options] (let - [original-result__44240__auto__ + [original-result__34673__auto__ (tech.v3.datatype.functional/atan x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__))) + original-result__34673__auto__))) ([x] (let - [original-result__44240__auto__ + [original-result__34673__auto__ (tech.v3.datatype.functional/atan x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__)))) + original-result__34673__auto__)))) (defn mathematical-integer? "" ([x] (let - [original-result__44239__auto__ + [original-result__34672__auto__ (tech.v3.datatype.functional/mathematical-integer? x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44239__auto__))) + original-result__34672__auto__))) ([x options] (let - [original-result__44239__auto__ + [original-result__34672__auto__ (tech.v3.datatype.functional/mathematical-integer? x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44239__auto__)))) + original-result__34672__auto__)))) (defn cumprod "Cumulative running product; returns result in double space.\n\n Options:\n\n * `:nan-strategy` - one of `:keep`, `:remove`, `:exception`. Defaults to `:remove`." ([x] (let - [original-result__44239__auto__ + [original-result__34672__auto__ (tech.v3.datatype.functional/cumprod x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44239__auto__))) - ([x options] - (let - [original-result__44239__auto__ - (tech.v3.datatype.functional/cumprod options x)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__44239__auto__)))) + original-result__34672__auto__)))) (defn expm1 "" ([x options] (let - [original-result__44240__auto__ + [original-result__34673__auto__ (tech.v3.datatype.functional/expm1 x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__))) + original-result__34673__auto__))) ([x] (let - [original-result__44240__auto__ + [original-result__34673__auto__ (tech.v3.datatype.functional/expm1 x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__)))) + original-result__34673__auto__)))) (defn identity "" ([x options] (let - [original-result__44240__auto__ + [original-result__34673__auto__ (tech.v3.datatype.functional/identity x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__))) + original-result__34673__auto__))) ([x] (let - [original-result__44240__auto__ + [original-result__34673__auto__ (tech.v3.datatype.functional/identity x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__)))) + original-result__34673__auto__)))) (defn reduce-max "" ([x] (let - [original-result__44239__auto__ + [original-result__34672__auto__ (tech.v3.datatype.functional/reduce-max x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44239__auto__)))) + original-result__34672__auto__)))) (defn cumsum "Cumulative running summation; returns result in double space.\n\n Options:\n\n * `:nan-strategy` - one of `:keep`, `:remove`, `:exception`. Defaults to `:remove`." ([x] (let - [original-result__44239__auto__ + [original-result__34672__auto__ (tech.v3.datatype.functional/cumsum x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44239__auto__))) - ([x options] - (let - [original-result__44239__auto__ - (tech.v3.datatype.functional/cumsum options x)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__44239__auto__)))) + original-result__34672__auto__)))) (defn descriptive-statistics "Calculate a set of descriptive statistics on a single reader.\n\n Available stats:\n #{:min :quartile-1 :sum :mean :mode :median :quartile-3 :max\n :variance :standard-deviation :skew :n-elems :kurtosis}\n\n options\n - `:nan-strategy` - defaults to :remove, one of\n [:keep :remove :exception]. The fastest option is :keep but this\n may result in your results having NaN's in them. You can also pass\n in a double predicate to filter custom double values." ([x] (let - [original-result__44239__auto__ + [original-result__34672__auto__ (tech.v3.datatype.functional/descriptive-statistics x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44239__auto__))) + original-result__34672__auto__))) ([x stats-names] (let - [original-result__44239__auto__ + [original-result__34672__auto__ (tech.v3.datatype.functional/descriptive-statistics stats-names x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44239__auto__))) + original-result__34672__auto__))) ([x stats-names options] (let - [original-result__44239__auto__ + [original-result__34672__auto__ (tech.v3.datatype.functional/descriptive-statistics stats-names options x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44239__auto__))) + original-result__34672__auto__))) ([x stats-names stats-data options] (let - [original-result__44239__auto__ + [original-result__34672__auto__ (tech.v3.datatype.functional/descriptive-statistics stats-names stats-data options x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44239__auto__)))) + original-result__34672__auto__)))) (defn nan? "" ([x] (let - [original-result__44239__auto__ + [original-result__34672__auto__ (tech.v3.datatype.functional/nan? x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44239__auto__))) + original-result__34672__auto__))) ([x options] (let - [original-result__44239__auto__ + [original-result__34672__auto__ (tech.v3.datatype.functional/nan? x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44239__auto__)))) + original-result__34672__auto__)))) (defn bit-and-not "" ([x y] (let - [original-result__44240__auto__ + [original-result__34673__auto__ (tech.v3.datatype.functional/bit-and-not x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__))) + original-result__34673__auto__))) ([x y & args] (let - [original-result__44240__auto__ + [original-result__34673__auto__ (clojure.core/apply tech.v3.datatype.functional/bit-and-not x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__)))) + original-result__34673__auto__)))) (defn logistic "" ([x options] (let - [original-result__44240__auto__ + [original-result__34673__auto__ (tech.v3.datatype.functional/logistic x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__))) + original-result__34673__auto__))) ([x] (let - [original-result__44240__auto__ + [original-result__34673__auto__ (tech.v3.datatype.functional/logistic x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__)))) + original-result__34673__auto__)))) (defn cos "" ([x options] (let - [original-result__44240__auto__ + [original-result__34673__auto__ (tech.v3.datatype.functional/cos x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__))) + original-result__34673__auto__))) ([x] (let - [original-result__44240__auto__ (tech.v3.datatype.functional/cos x)] + [original-result__34673__auto__ (tech.v3.datatype.functional/cos x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__)))) + original-result__34673__auto__)))) (defn log10 "" ([x options] (let - [original-result__44240__auto__ + [original-result__34673__auto__ (tech.v3.datatype.functional/log10 x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__))) + original-result__34673__auto__))) ([x] (let - [original-result__44240__auto__ + [original-result__34673__auto__ (tech.v3.datatype.functional/log10 x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__)))) + original-result__34673__auto__)))) (defn quot "" ([x y] (let - [original-result__44240__auto__ + [original-result__34673__auto__ (tech.v3.datatype.functional/quot x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__))) + original-result__34673__auto__))) ([x y & args] (let - [original-result__44240__auto__ + [original-result__34673__auto__ (clojure.core/apply tech.v3.datatype.functional/quot x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__)))) + original-result__34673__auto__)))) (defn dot-product "" - ([lhs rhs] + ([x y] (let - [original-result__44240__auto__ - (tech.v3.datatype.functional/dot-product lhs rhs)] + [original-result__34672__auto__ + (tech.v3.datatype.functional/dot-product x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__)))) + original-result__34672__auto__)))) (defn tan "" ([x options] (let - [original-result__44240__auto__ + [original-result__34673__auto__ (tech.v3.datatype.functional/tan x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__))) + original-result__34673__auto__))) ([x] (let - [original-result__44240__auto__ (tech.v3.datatype.functional/tan x)] + [original-result__34673__auto__ (tech.v3.datatype.functional/tan x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__)))) + original-result__34673__auto__)))) (defn cbrt "" ([x options] (let - [original-result__44240__auto__ + [original-result__34673__auto__ (tech.v3.datatype.functional/cbrt x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__))) + original-result__34673__auto__))) ([x] (let - [original-result__44240__auto__ + [original-result__34673__auto__ (tech.v3.datatype.functional/cbrt x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__)))) + original-result__34673__auto__)))) (defn eq "" - ([lhs rhs] + ([x y] (let - [original-result__44240__auto__ - (tech.v3.datatype.functional/eq lhs rhs)] + [original-result__34672__auto__ + (tech.v3.datatype.functional/eq x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__)))) + original-result__34672__auto__)))) (defn mean "double mean of data" - ([col] + ([x] (let - [original-result__44239__auto__ - (tech.v3.datatype.functional/mean col)] + [original-result__34672__auto__ + (tech.v3.datatype.functional/mean x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44239__auto__))) - ([col options] + original-result__34672__auto__))) + ([x options] (let - [original-result__44239__auto__ - (tech.v3.datatype.functional/mean col options)] + [original-result__34672__auto__ + (tech.v3.datatype.functional/mean x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44239__auto__)))) + original-result__34672__auto__)))) (defn > "" - ([lhs mid rhs] + ([x y] (let - [original-result__44240__auto__ - (tech.v3.datatype.functional/> lhs mid rhs)] + [original-result__34672__auto__ (tech.v3.datatype.functional/> x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__))) - ([lhs rhs] + original-result__34672__auto__))) + ([x y z] (let - [original-result__44240__auto__ - (tech.v3.datatype.functional/> lhs rhs)] + [original-result__34672__auto__ + (tech.v3.datatype.functional/> x y z)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__)))) + original-result__34672__auto__)))) (defn not-eq "" - ([lhs rhs] + ([x y] (let - [original-result__44240__auto__ - (tech.v3.datatype.functional/not-eq lhs rhs)] + [original-result__34672__auto__ + (tech.v3.datatype.functional/not-eq x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__)))) + original-result__34672__auto__)))) (defn even? "" ([x] (let - [original-result__44239__auto__ + [original-result__34672__auto__ (tech.v3.datatype.functional/even? x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44239__auto__))) + original-result__34672__auto__))) ([x options] (let - [original-result__44239__auto__ + [original-result__34672__auto__ (tech.v3.datatype.functional/even? x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44239__auto__)))) + original-result__34672__auto__)))) (defn spearmans-correlation "" ([x y] (let - [original-result__44239__auto__ + [original-result__34672__auto__ (tech.v3.datatype.functional/spearmans-correlation x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44239__auto__))) + original-result__34672__auto__))) ([x y options] (let - [original-result__44239__auto__ + [original-result__34672__auto__ (tech.v3.datatype.functional/spearmans-correlation options x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44239__auto__)))) + original-result__34672__auto__)))) (defn sqrt "" ([x options] (let - [original-result__44240__auto__ + [original-result__34673__auto__ (tech.v3.datatype.functional/sqrt x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__))) + original-result__34673__auto__))) ([x] (let - [original-result__44240__auto__ + [original-result__34673__auto__ (tech.v3.datatype.functional/sqrt x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__)))) + original-result__34673__auto__)))) (defn reduce-* "" ([x] (let - [original-result__44239__auto__ + [original-result__34672__auto__ (tech.v3.datatype.functional/reduce-* x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44239__auto__)))) + original-result__34672__auto__)))) (defn next-down "" ([x options] (let - [original-result__44240__auto__ + [original-result__34673__auto__ (tech.v3.datatype.functional/next-down x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__))) + original-result__34673__auto__))) ([x] (let - [original-result__44240__auto__ + [original-result__34673__auto__ (tech.v3.datatype.functional/next-down x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__)))) + original-result__34673__auto__)))) (defn - "" ([x] (let - [original-result__44240__auto__ (tech.v3.datatype.functional/- x)] + [original-result__34673__auto__ (tech.v3.datatype.functional/- x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__))) + original-result__34673__auto__))) ([x y] (let - [original-result__44240__auto__ (tech.v3.datatype.functional/- x y)] + [original-result__34673__auto__ (tech.v3.datatype.functional/- x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__))) + original-result__34673__auto__))) ([x y & args] (let - [original-result__44240__auto__ + [original-result__34673__auto__ (clojure.core/apply tech.v3.datatype.functional/- x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__)))) + original-result__34673__auto__)))) (defn or "" - ([lhs rhs] + ([x y] (let - [original-result__44240__auto__ - (tech.v3.datatype.functional/or lhs rhs)] + [original-result__34672__auto__ + (tech.v3.datatype.functional/or x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__)))) + original-result__34672__auto__)))) (defn distance-squared "" - ([lhs rhs] + ([x y] (let - [original-result__44240__auto__ - (tech.v3.datatype.functional/distance-squared lhs rhs)] + [original-result__34672__auto__ + (tech.v3.datatype.functional/distance-squared x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__)))) + original-result__34672__auto__)))) (defn pow "" ([x y] (let - [original-result__44240__auto__ + [original-result__34673__auto__ (tech.v3.datatype.functional/pow x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__))) + original-result__34673__auto__))) ([x y & args] (let - [original-result__44240__auto__ + [original-result__34673__auto__ (clojure.core/apply tech.v3.datatype.functional/pow x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__)))) + original-result__34673__auto__)))) (defn next-up "" ([x options] (let - [original-result__44240__auto__ + [original-result__34673__auto__ (tech.v3.datatype.functional/next-up x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__))) + original-result__34673__auto__))) ([x] (let - [original-result__44240__auto__ + [original-result__34673__auto__ (tech.v3.datatype.functional/next-up x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__)))) + original-result__34673__auto__)))) (defn skew "" - ([col] + ([x] (let - [original-result__44239__auto__ - (tech.v3.datatype.functional/skew col)] + [original-result__34672__auto__ + (tech.v3.datatype.functional/skew x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44239__auto__))) - ([col options] + original-result__34672__auto__))) + ([x options] (let - [original-result__44239__auto__ - (tech.v3.datatype.functional/skew col options)] + [original-result__34672__auto__ + (tech.v3.datatype.functional/skew x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44239__auto__)))) + original-result__34672__auto__)))) (defn exp "" ([x options] (let - [original-result__44240__auto__ + [original-result__34673__auto__ (tech.v3.datatype.functional/exp x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__))) + original-result__34673__auto__))) ([x] (let - [original-result__44240__auto__ (tech.v3.datatype.functional/exp x)] + [original-result__34673__auto__ (tech.v3.datatype.functional/exp x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__)))) + original-result__34673__auto__)))) (defn mean-fast "Take the mean of the data. This operation doesn't know anything about nan hence it is\n a bit faster than the base [[mean]] fn." ([x] (let - [original-result__44239__auto__ + [original-result__34672__auto__ (tech.v3.datatype.functional/mean-fast x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44239__auto__)))) + original-result__34672__auto__)))) (defn zero? "" ([x] (let - [original-result__44239__auto__ + [original-result__34672__auto__ (tech.v3.datatype.functional/zero? x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44239__auto__))) + original-result__34672__auto__))) ([x options] (let - [original-result__44239__auto__ + [original-result__34672__auto__ (tech.v3.datatype.functional/zero? x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44239__auto__)))) + original-result__34672__auto__)))) (defn rem "" ([x y] (let - [original-result__44240__auto__ + [original-result__34673__auto__ (tech.v3.datatype.functional/rem x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__))) + original-result__34673__auto__))) ([x y & args] (let - [original-result__44240__auto__ + [original-result__34673__auto__ (clojure.core/apply tech.v3.datatype.functional/rem x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__)))) + original-result__34673__auto__)))) (defn cosh "" ([x options] (let - [original-result__44240__auto__ + [original-result__34673__auto__ (tech.v3.datatype.functional/cosh x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__))) + original-result__34673__auto__))) ([x] (let - [original-result__44240__auto__ + [original-result__34673__auto__ (tech.v3.datatype.functional/cosh x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__)))) + original-result__34673__auto__)))) (defn variance "" - ([col] + ([x] (let - [original-result__44239__auto__ - (tech.v3.datatype.functional/variance col)] + [original-result__34672__auto__ + (tech.v3.datatype.functional/variance x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44239__auto__))) - ([col options] + original-result__34672__auto__))) + ([x options] (let - [original-result__44239__auto__ - (tech.v3.datatype.functional/variance col options)] + [original-result__34672__auto__ + (tech.v3.datatype.functional/variance x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44239__auto__)))) + original-result__34672__auto__)))) (defn reduce-+ "" ([x] (let - [original-result__44239__auto__ + [original-result__34672__auto__ (tech.v3.datatype.functional/reduce-+ x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44239__auto__)))) + original-result__34672__auto__)))) (defn get-significand "" ([x options] (let - [original-result__44240__auto__ + [original-result__34673__auto__ (tech.v3.datatype.functional/get-significand x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__))) + original-result__34673__auto__))) ([x] (let - [original-result__44240__auto__ + [original-result__34673__auto__ (tech.v3.datatype.functional/get-significand x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__)))) + original-result__34673__auto__)))) (defn bit-and "" ([x y] (let - [original-result__44240__auto__ + [original-result__34673__auto__ (tech.v3.datatype.functional/bit-and x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__))) + original-result__34673__auto__))) ([x y & args] (let - [original-result__44240__auto__ + [original-result__34673__auto__ (clojure.core/apply tech.v3.datatype.functional/bit-and x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__)))) + original-result__34673__auto__)))) (defn kendalls-correlation "" ([x y] (let - [original-result__44239__auto__ + [original-result__34672__auto__ (tech.v3.datatype.functional/kendalls-correlation x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44239__auto__))) + original-result__34672__auto__))) ([x y options] (let - [original-result__44239__auto__ + [original-result__34672__auto__ (tech.v3.datatype.functional/kendalls-correlation options x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44239__auto__)))) + original-result__34672__auto__)))) (defn not "" ([x] (let - [original-result__44239__auto__ (tech.v3.datatype.functional/not x)] + [original-result__34672__auto__ (tech.v3.datatype.functional/not x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44239__auto__))) + original-result__34672__auto__))) ([x options] (let - [original-result__44239__auto__ + [original-result__34672__auto__ (tech.v3.datatype.functional/not x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44239__auto__)))) + original-result__34672__auto__)))) (defn standard-deviation "" - ([col] + ([x] (let - [original-result__44239__auto__ - (tech.v3.datatype.functional/standard-deviation col)] + [original-result__34672__auto__ + (tech.v3.datatype.functional/standard-deviation x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44239__auto__))) - ([col options] + original-result__34672__auto__))) + ([x options] (let - [original-result__44239__auto__ - (tech.v3.datatype.functional/standard-deviation col options)] + [original-result__34672__auto__ + (tech.v3.datatype.functional/standard-deviation x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44239__auto__)))) + original-result__34672__auto__)))) (defn cummin "Cumulative running min; returns result in double space.\n\n Options:\n\n * `:nan-strategy` - one of `:keep`, `:remove`, `:exception`. Defaults to `:remove`." ([x] (let - [original-result__44239__auto__ + [original-result__34672__auto__ (tech.v3.datatype.functional/cummin x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44239__auto__))) - ([x options] - (let - [original-result__44239__auto__ - (tech.v3.datatype.functional/cummin options x)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__44239__auto__)))) + original-result__34672__auto__)))) (defn magnitude "" ([item _options] (let - [original-result__44240__auto__ + [original-result__34673__auto__ (tech.v3.datatype.functional/magnitude item _options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__))) + original-result__34673__auto__))) ([item] (let - [original-result__44240__auto__ + [original-result__34673__auto__ (tech.v3.datatype.functional/magnitude item)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__)))) + original-result__34673__auto__)))) (defn cummax "Cumulative running max; returns result in double space.\n\n Options:\n\n * `:nan-strategy` - one of `:keep`, `:remove`, `:exception`. Defaults to `:remove`." ([x] (let - [original-result__44239__auto__ + [original-result__34672__auto__ (tech.v3.datatype.functional/cummax x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44239__auto__))) - ([x options] - (let - [original-result__44239__auto__ - (tech.v3.datatype.functional/cummax options x)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__44239__auto__)))) + original-result__34672__auto__)))) (defn / "" ([x] (let - [original-result__44240__auto__ (tech.v3.datatype.functional// x)] + [original-result__34673__auto__ (tech.v3.datatype.functional// x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__))) + original-result__34673__auto__))) ([x y] (let - [original-result__44240__auto__ (tech.v3.datatype.functional// x y)] + [original-result__34673__auto__ (tech.v3.datatype.functional// x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__))) + original-result__34673__auto__))) ([x y & args] (let - [original-result__44240__auto__ + [original-result__34673__auto__ (clojure.core/apply tech.v3.datatype.functional// x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__)))) + original-result__34673__auto__)))) (defn bit-or "" ([x y] (let - [original-result__44240__auto__ + [original-result__34673__auto__ (tech.v3.datatype.functional/bit-or x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__))) + original-result__34673__auto__))) ([x y & args] (let - [original-result__44240__auto__ + [original-result__34673__auto__ (clojure.core/apply tech.v3.datatype.functional/bit-or x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__)))) + original-result__34673__auto__)))) (defn equals "" - ([lhs rhs & args] + ([x y & args] (let - [original-result__44240__auto__ - (clojure.core/apply - tech.v3.datatype.functional/equals - lhs - rhs - args)] + [original-result__34672__auto__ + (tech.v3.datatype.functional/equals x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__)))) + original-result__34672__auto__)))) (defn >= "" - ([lhs mid rhs] + ([x y] (let - [original-result__44240__auto__ - (tech.v3.datatype.functional/>= lhs mid rhs)] + [original-result__34672__auto__ + (tech.v3.datatype.functional/>= x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__))) - ([lhs rhs] + original-result__34672__auto__))) + ([x y z] (let - [original-result__44240__auto__ - (tech.v3.datatype.functional/>= lhs rhs)] + [original-result__34672__auto__ + (tech.v3.datatype.functional/>= x y z)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__)))) + original-result__34672__auto__)))) (defn bit-flip "" ([x y] (let - [original-result__44240__auto__ + [original-result__34673__auto__ (tech.v3.datatype.functional/bit-flip x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__))) + original-result__34673__auto__))) ([x y & args] (let - [original-result__44240__auto__ + [original-result__34673__auto__ (clojure.core/apply tech.v3.datatype.functional/bit-flip x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__)))) + original-result__34673__auto__)))) (defn log1p "" ([x options] (let - [original-result__44240__auto__ + [original-result__34673__auto__ (tech.v3.datatype.functional/log1p x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__))) + original-result__34673__auto__))) ([x] (let - [original-result__44240__auto__ + [original-result__34673__auto__ (tech.v3.datatype.functional/log1p x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__)))) + original-result__34673__auto__)))) (defn asin "" ([x options] (let - [original-result__44240__auto__ + [original-result__34673__auto__ (tech.v3.datatype.functional/asin x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__))) + original-result__34673__auto__))) ([x] (let - [original-result__44240__auto__ + [original-result__34673__auto__ (tech.v3.datatype.functional/asin x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__)))) + original-result__34673__auto__)))) (defn quartiles "return [min, 25 50 75 max] of item" ([x] (let - [original-result__44239__auto__ + [original-result__34672__auto__ (tech.v3.datatype.functional/quartiles x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44239__auto__))) + original-result__34672__auto__))) ([x options] (let - [original-result__44239__auto__ + [original-result__34672__auto__ (tech.v3.datatype.functional/quartiles options x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44239__auto__)))) + original-result__34672__auto__)))) (defn quartile-3 "" - ([col] + ([x] (let - [original-result__44239__auto__ - (tech.v3.datatype.functional/quartile-3 col)] + [original-result__34672__auto__ + (tech.v3.datatype.functional/quartile-3 x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44239__auto__))) - ([col options] + original-result__34672__auto__))) + ([x options] (let - [original-result__44239__auto__ - (tech.v3.datatype.functional/quartile-3 col options)] + [original-result__34672__auto__ + (tech.v3.datatype.functional/quartile-3 x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44239__auto__)))) + original-result__34672__auto__)))) (defn infinite? "" ([x] (let - [original-result__44239__auto__ + [original-result__34672__auto__ (tech.v3.datatype.functional/infinite? x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44239__auto__))) + original-result__34672__auto__))) ([x options] (let - [original-result__44239__auto__ + [original-result__34672__auto__ (tech.v3.datatype.functional/infinite? x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44239__auto__)))) + original-result__34672__auto__)))) (defn round "Vectorized implementation of Math/round. Operates in double space\n but returns a long or long reader." ([x] (let - [original-result__44239__auto__ + [original-result__34672__auto__ (tech.v3.datatype.functional/round x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44239__auto__))) + original-result__34672__auto__))) ([x options] (let - [original-result__44239__auto__ + [original-result__34672__auto__ (tech.v3.datatype.functional/round x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44239__auto__)))) + original-result__34672__auto__)))) (defn quartile-1 "" - ([col] + ([x] (let - [original-result__44239__auto__ - (tech.v3.datatype.functional/quartile-1 col)] + [original-result__34672__auto__ + (tech.v3.datatype.functional/quartile-1 x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44239__auto__))) - ([col options] + original-result__34672__auto__))) + ([x options] (let - [original-result__44239__auto__ - (tech.v3.datatype.functional/quartile-1 col options)] + [original-result__34672__auto__ + (tech.v3.datatype.functional/quartile-1 x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44239__auto__)))) + original-result__34672__auto__)))) (defn odd? "" ([x] (let - [original-result__44239__auto__ + [original-result__34672__auto__ (tech.v3.datatype.functional/odd? x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44239__auto__))) + original-result__34672__auto__))) ([x options] (let - [original-result__44239__auto__ + [original-result__34672__auto__ (tech.v3.datatype.functional/odd? x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44239__auto__)))) + original-result__34672__auto__)))) (defn bit-clear "" ([x y] (let - [original-result__44240__auto__ + [original-result__34673__auto__ (tech.v3.datatype.functional/bit-clear x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__))) + original-result__34673__auto__))) ([x y & args] (let - [original-result__44240__auto__ + [original-result__34673__auto__ (clojure.core/apply tech.v3.datatype.functional/bit-clear x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__)))) + original-result__34673__auto__)))) (defn + "" ([x] (let - [original-result__44240__auto__ (tech.v3.datatype.functional/+ x)] + [original-result__34673__auto__ (tech.v3.datatype.functional/+ x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__))) + original-result__34673__auto__))) ([x y] (let - [original-result__44240__auto__ (tech.v3.datatype.functional/+ x y)] + [original-result__34673__auto__ (tech.v3.datatype.functional/+ x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__))) + original-result__34673__auto__))) ([x y & args] (let - [original-result__44240__auto__ + [original-result__34673__auto__ (clojure.core/apply tech.v3.datatype.functional/+ x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__)))) + original-result__34673__auto__)))) (defn abs "" ([x options] (let - [original-result__44240__auto__ + [original-result__34673__auto__ (tech.v3.datatype.functional/abs x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__))) + original-result__34673__auto__))) ([x] (let - [original-result__44240__auto__ (tech.v3.datatype.functional/abs x)] + [original-result__34673__auto__ (tech.v3.datatype.functional/abs x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__)))) + original-result__34673__auto__)))) (defn median "" - ([col] + ([x] (let - [original-result__44239__auto__ - (tech.v3.datatype.functional/median col)] + [original-result__34672__auto__ + (tech.v3.datatype.functional/median x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44239__auto__))) - ([col options] + original-result__34672__auto__))) + ([x options] (let - [original-result__44239__auto__ - (tech.v3.datatype.functional/median col options)] + [original-result__34672__auto__ + (tech.v3.datatype.functional/median x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44239__auto__)))) + original-result__34672__auto__)))) (defn pearsons-correlation "" ([x y] (let - [original-result__44239__auto__ + [original-result__34672__auto__ (tech.v3.datatype.functional/pearsons-correlation x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44239__auto__))) + original-result__34672__auto__))) ([x y options] (let - [original-result__44239__auto__ + [original-result__34672__auto__ (tech.v3.datatype.functional/pearsons-correlation options x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44239__auto__)))) + original-result__34672__auto__)))) (defn sinh "" ([x options] (let - [original-result__44240__auto__ + [original-result__34673__auto__ (tech.v3.datatype.functional/sinh x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__))) + original-result__34673__auto__))) ([x] (let - [original-result__44240__auto__ + [original-result__34673__auto__ (tech.v3.datatype.functional/sinh x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__)))) + original-result__34673__auto__)))) (defn rint "" ([x options] (let - [original-result__44240__auto__ + [original-result__34673__auto__ (tech.v3.datatype.functional/rint x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__))) + original-result__34673__auto__))) ([x] (let - [original-result__44240__auto__ + [original-result__34673__auto__ (tech.v3.datatype.functional/rint x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__)))) + original-result__34673__auto__)))) (defn bit-not "" ([x options] (let - [original-result__44240__auto__ + [original-result__34673__auto__ (tech.v3.datatype.functional/bit-not x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__))) + original-result__34673__auto__))) ([x] (let - [original-result__44240__auto__ + [original-result__34673__auto__ (tech.v3.datatype.functional/bit-not x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__)))) + original-result__34673__auto__)))) (defn max "" ([x] (let - [original-result__44240__auto__ (tech.v3.datatype.functional/max x)] + [original-result__34673__auto__ (tech.v3.datatype.functional/max x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__))) + original-result__34673__auto__))) ([x y] (let - [original-result__44240__auto__ + [original-result__34673__auto__ (tech.v3.datatype.functional/max x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__))) + original-result__34673__auto__))) ([x y & args] (let - [original-result__44240__auto__ + [original-result__34673__auto__ (clojure.core/apply tech.v3.datatype.functional/max x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__)))) + original-result__34673__auto__)))) (defn ulp "" ([x options] (let - [original-result__44240__auto__ + [original-result__34673__auto__ (tech.v3.datatype.functional/ulp x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__))) + original-result__34673__auto__))) ([x] (let - [original-result__44240__auto__ (tech.v3.datatype.functional/ulp x)] + [original-result__34673__auto__ (tech.v3.datatype.functional/ulp x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__)))) + original-result__34673__auto__)))) (defn percentiles "Create a reader of percentile values, one for each percentage passed in.\n Estimation types are in the set of #{:r1,r2...legacy} and are described\n here: https://commons.apache.org/proper/commons-math/javadocs/api-3.3/index.html.\n\n nan-strategy can be one of [:keep :remove :exception] and defaults to :exception." ([x percentiles] (let - [original-result__44239__auto__ + [original-result__34672__auto__ (tech.v3.datatype.functional/percentiles percentiles x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44239__auto__))) + original-result__34672__auto__))) ([x percentiles options] (let - [original-result__44239__auto__ + [original-result__34672__auto__ (tech.v3.datatype.functional/percentiles percentiles options x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44239__auto__)))) + original-result__34672__auto__)))) (defn sin "" ([x options] (let - [original-result__44240__auto__ + [original-result__34673__auto__ (tech.v3.datatype.functional/sin x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__))) + original-result__34673__auto__))) ([x] (let - [original-result__44240__auto__ (tech.v3.datatype.functional/sin x)] + [original-result__34673__auto__ (tech.v3.datatype.functional/sin x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__)))) + original-result__34673__auto__)))) (defn sum-fast "Find the sum of the data. This operation is neither nan-aware nor does it implement\n kahans compensation although via parallelization it implements pairwise summation\n compensation. For a more but slightly slower but far more correct sum operator,\n use [[sum]]." ([x] (let - [original-result__44239__auto__ + [original-result__34672__auto__ (tech.v3.datatype.functional/sum-fast x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44239__auto__)))) + original-result__34672__auto__)))) (defn signum "" ([x options] (let - [original-result__44240__auto__ + [original-result__34673__auto__ (tech.v3.datatype.functional/signum x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__))) + original-result__34673__auto__))) ([x] (let - [original-result__44240__auto__ + [original-result__34673__auto__ (tech.v3.datatype.functional/signum x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__)))) + original-result__34673__auto__)))) (defn magnitude-squared "" ([x] (let - [original-result__44239__auto__ + [original-result__34672__auto__ (tech.v3.datatype.functional/magnitude-squared x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44239__auto__)))) + original-result__34672__auto__)))) (defn and "" - ([lhs rhs] + ([x y] (let - [original-result__44240__auto__ - (tech.v3.datatype.functional/and lhs rhs)] + [original-result__34672__auto__ + (tech.v3.datatype.functional/and x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44240__auto__)))) + original-result__34672__auto__)))) diff --git a/src/tablecloth/column/api/utils.clj b/src/tablecloth/column/api/utils.clj index ed703e7..9aa0203 100644 --- a/src/tablecloth/column/api/utils.clj +++ b/src/tablecloth/column/api/utils.clj @@ -15,7 +15,7 @@ (defn lift-op ([fn-sym fn-meta] (lift-op fn-sym fn-meta nil)) - ([fn-sym fn-meta {:keys [new-args new-args-lookup]}] + ([fn-sym fn-meta {:keys [new-args]}] (let [defn (symbol "defn") let (symbol "let") docstring (:doc fn-meta) @@ -25,16 +25,18 @@ (if new-args `(~defn ~(symbol (name fn-sym)) ~(or docstring "") - ~@(for [[new-arg original-arg] (zipmap (sort-by-arg-count new-args) - (sort-by-arg-count original-args)) + ~@(for [[new-arg new-arg-lookup original-arg] + (map vector (sort-by-arg-count (keys new-args)) + (sort-by-arg-count (vals new-args)) + (sort-by-arg-count original-args)) :let [filtered-original-arg (filter (partial not= '&) original-arg)]] (list - (if new-arg new-arg original-arg) + (if new-arg new-arg original-arg) `(~let [original-result# (~fn-sym - ~@(if (nil? new-args-lookup) - filtered-original-arg - (for [oldarg filtered-original-arg] - (get new-args-lookup oldarg))))] + ~@(for [oldarg filtered-original-arg] + (if (nil? (get new-arg-lookup oldarg)) + oldarg + (get new-arg-lookup oldarg))))] (return-scalar-or-column original-result#))))) `(~defn ~(symbol (name fn-sym)) ~(or docstring "") @@ -47,6 +49,7 @@ `(apply ~fn-sym ~@explicit-args ~(second rest-arg-expr)))] (return-scalar-or-column original-result#))))))))) + (defn- writeln! ^Writer [^Writer writer strdata & strdatas] (.append writer (str strdata)) From e0479aa894377f9247d5bff04849780e2bcd1515 Mon Sep 17 00:00:00 2001 From: Ethan Miller Date: Fri, 29 Sep 2023 11:48:01 -0400 Subject: [PATCH 30/42] Lift column ops to the dataset level (#107) * Readme: Replace `lein test` with `lein midje` * Add proof of concept for lifting * Clean up * Fix magnitude arguments * Fix typo breaking lift operation for `magnitude * Save prototype working example that handles optional arguments * Clean up * Reorganize codegen utilities * moved hopefully common utilities up into 'tablecloth.utils.codegen * retooled those helpers in that ns to be a bit more accessible (WIP) * Clean up * Clean up * Rejigger codegen for column ops to take just fn-sym arglists * Try lifting all column ops to ds (no tests yet) * Exclude ops that do not potentially return column * Do not lift options that do not return columns * Add docstrings for some codegen Also regenerated operators to make sure tests pass. * Add docstring to ds col ops * version bump and small fix * Modify ds-level lift op to also return fn that returns column This is a breaking change for the column api lifting until I adapt the lift-op to the changes made in the codegen where the argument is supplied in data rather than within a fn. * example added for replace-missing * Add tests for ops that take inf number of cols * Add tests for ops returning ds taking max of three cols * Add tests for ops returning ds and taking two columns max * Test for ops returning ds and max of one column * Add more functions to test for ops taking one col * Clean up * Lifted ops taking one column and returning a scalar * Lift functions taking two columns and returning a scalar * Clean up * Clean up * bump to 7.000-beta-50 * fixes #108 * hashing in joins enabled for every case * 7.000-beta-51 * Clean up * Lift functions taking 1 col and returning scalar * Adjust column api lift ops to new declarative syntax * Adjust lift plan for tablecloth.column.api for tmd v7 * Remove mention of tech.ml.datatype * Add missing word * Bump tmd version to 7.006 for fix to fns that were erroring fns are: quartiles-1, quartiles-3 and median * Fixing more tests * Comment some code to keep around for a spell * Remove special lift op for 'round It's arugments were fixed. * Cleanup * 7.007 --------- Co-authored-by: Teodor Heggelund Co-authored-by: genmeblog <38646601+genmeblog@users.noreply.github.com> Co-authored-by: GenerateMe Co-authored-by: adham-omran --- .dir-locals.el | 10 - CHANGELOG.md | 40 + README.Rmd | 2 +- README.md | 2 +- deps.edn | 5 +- docs/index.Rmd | 71 +- docs/index.html | 5248 +++++++++-------- docs/index.md | 775 +-- docs/index.pdf | Bin 551160 -> 552004 bytes playground.clj | 498 +- project.clj | 6 +- src/tablecloth/api.clj | 134 +- src/tablecloth/api/dataset.clj | 52 +- src/tablecloth/api/join_concat_ds.clj | 18 +- src/tablecloth/api/join_separate.clj | 10 +- src/tablecloth/api/lift_operators.clj | 206 +- src/tablecloth/api/operators.clj | 3661 ++++++++++++ src/tablecloth/api/reshape.clj | 3 +- src/tablecloth/column/api/lift_operators.clj | 275 +- src/tablecloth/column/api/operators.clj | 1410 ++--- src/tablecloth/column/api/utils.clj | 81 - src/tablecloth/utils/codegen.clj | 81 + test/tablecloth/api/dataset_test.clj | 39 +- test/tablecloth/api/operators_test.clj | 180 + test/tablecloth/column/api/operators_test.clj | 5 +- 25 files changed, 8927 insertions(+), 3885 deletions(-) delete mode 100644 .dir-locals.el create mode 100644 src/tablecloth/api/operators.clj create mode 100644 src/tablecloth/utils/codegen.clj create mode 100644 test/tablecloth/api/operators_test.clj diff --git a/.dir-locals.el b/.dir-locals.el deleted file mode 100644 index 02bc256..0000000 --- a/.dir-locals.el +++ /dev/null @@ -1,10 +0,0 @@ -((nil - . - ((cider-clojure-cli-aliases - . - "dev"))) - (clojure-mode - . - ((eval - . - (add-to-list 'cider-jack-in-nrepl-middlewares "scicloj.clay.v1.nrepl/middleware"))))) diff --git a/CHANGELOG.md b/CHANGELOG.md index 10be84a..863b4b4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,45 @@ # Change Log +## [7.007] + +### Added + +* Extened documentation for `dataset` (copied from TMD), [#112](https://github.com/scicloj/tablecloth/issues/112) + +### Changed + +* `rows` accepts `:nil-missing?`(default: true) and `copying?`(default: false) options. + +## [7.000-beta-51] + +Deps updated + +## [7.000-beta-50.2] + +### Added + +* `:hashing` is available for single column joins too + +## [7.000-beta-50.1] + +### Added + +* `:hashing` option determines method of creating an index for multicolumn joins (was `hash` is `identity`) + +### Fixed + +* [#108](https://github.com/scicloj/tablecloth/issues/108) - hashing replaced with packing data into the sequence + +## [7.000-beta-50] + +Deps updated + +## [7.000-beta-38] + +### Fixed + +* dataset from singleton creation generated from wrong structure + ## [7.000-beta-27] ### Added diff --git a/README.Rmd b/README.Rmd index 1b79e36..51c9a71 100644 --- a/README.Rmd +++ b/README.Rmd @@ -48,7 +48,7 @@ knit_engines$set(clojure = function(options) { ## Versions -### tech.ml.dataset 6.x (master branch) +### tech.ml.dataset 7.x (master branch) [![](https://img.shields.io/clojars/v/scicloj/tablecloth)](https://clojars.org/scicloj/tablecloth) diff --git a/README.md b/README.md index 4dc5115..54bd50f 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ ## Versions -### tech.ml.dataset 6.x (master branch) +### tech.ml.dataset 7.x (master branch) [![](https://img.shields.io/clojars/v/scicloj/tablecloth)](https://clojars.org/scicloj/tablecloth) diff --git a/deps.edn b/deps.edn index 1b97492..cf8d10b 100644 --- a/deps.edn +++ b/deps.edn @@ -1,7 +1,4 @@ {:extra-paths ["data"] :deps {org.clojure/clojure {:mvn/version "1.11.1"} - ;; techascent/tech.ml.dataset {:mvn/version "6.103"} - techascent/tech.ml.dataset {:mvn/version "7.000-beta-27"} - ;; generateme/fastmath {:mvn/version "2.1.0"} - } + techascent/tech.ml.dataset {:mvn/version "7.007"}} :aliases {:dev {:extra-deps {org.scicloj/clay {:mvn/version "2-alpha12"}}}}} diff --git a/docs/index.Rmd b/docs/index.Rmd index 8c80fa6..421b70e 100644 --- a/docs/index.Rmd +++ b/docs/index.Rmd @@ -86,12 +86,18 @@ knit_engines$set(clojure = function(options) { ```{clojure include=FALSE} (def tech-ml-version (get-in (read-string (slurp "deps.edn")) [:deps 'techascent/tech.ml.dataset :mvn/version])) +(def tablecloth-version (nth (read-string (slurp "project.clj")) 2)) ``` ```{clojure results="asis"} tech-ml-version ``` +```{clojure results="asis"} +tablecloth-version +``` + + ## Introduction [tech.ml.dataset](https://github.com/techascent/tech.ml.dataset) is a great and fast library which brings columnar dataset to the Clojure. Chris Nuernberger has been working on this library for last year as a part of bigger `tech.ml` stack. @@ -135,7 +141,7 @@ DS ### Dataset -Dataset is a special type which can be considered as a map of columns implemented around `tech.ml.datatype` library. Each column can be considered as named sequence of typed data. Supported types include integers, floats, string, boolean, date/time, objects etc. +Dataset is a special type which can be considered as a map of columns implemented around `tech.ml.dataset` library. Each column can be considered as named sequence of typed data. Supported types include integers, floats, string, boolean, date/time, objects etc. #### Dataset creation @@ -418,6 +424,8 @@ Possible result types: - `:as-double-arrays` - array of double arrays - `:as-vecs` - sequence of vectors (rows) +For `rows` setting `:nil-missing?` option to `false` will elide keys for nil values. + --- Select column. @@ -477,6 +485,26 @@ Rows as sequence of maps (clojure.pprint/pprint (take 2 (tc/rows ds :as-maps))) ``` +--- + +Rows with missing values + +```{clojure} +(-> {:a [1 nil 2] + :b [3 4 nil]} + (tc/dataset) + (tc/rows :as-maps)) +``` + +Rows with elided missing values + +```{clojure} +(-> {:a [1 nil 2] + :b [3 4 nil]} + (tc/dataset) + (tc/rows :as-maps {:nil-missing? false})) +``` + #### Single entry Get single value from the table using `get-in` from Clojure API or `get-entry`. First argument is column name, second is row number. @@ -526,12 +554,12 @@ Grouping is done by calling `group-by` function with arguments: * `ds` - dataset * `grouping-selector` - what to use for grouping * options: - - `:result-type` - what to return: - * `:as-dataset` (default) - return grouped dataset - * `:as-indexes` - return rows ids (row number from original dataset) - * `:as-map` - return map with group names as keys and subdataset as values - * `:as-seq` - return sequens of subdatasets - - `:select-keys` - list of the columns passed to a grouping selector function +- `:result-type` - what to return: +* `:as-dataset` (default) - return grouped dataset +* `:as-indexes` - return rows ids (row number from original dataset) +* `:as-map` - return map with group names as keys and subdataset as values +* `:as-seq` - return sequens of subdatasets +- `:select-keys` - list of the columns passed to a grouping selector function All subdatasets (groups) have set name as the group name, additionally `group-id` is in meta. @@ -866,7 +894,7 @@ If you want to implement your own mapping function on grouped dataset you can ca ### Columns -Column is a special `tech.ml.dataset` structure based on `tech.ml.datatype` library. For our purposes we cat treat columns as typed and named sequence bound to particular dataset. +Column is a special `tech.ml.dataset` structure. For our purposes we cat treat columns as typed and named sequence bound to particular dataset. Type of the data is inferred from a sequence during column creation. @@ -2080,9 +2108,10 @@ Missing values can be replaced using several strategies. `replace-missing` accep * column selector, default: `:all` * strategy, default: `:nearest` * value (optional) -- single value -- sequence of values (cycled) -- function, applied on column(s) with stripped missings + - single value + - sequence of values (cycled) + - function, applied on column(s) with stripped missings + - map with [index,value] pairs Strategies are: @@ -2148,6 +2177,14 @@ Replace missing with a function (mean) --- +Replace missing some missing values with a map + +```{clojure results="asis"} +(tc/replace-missing DSm2 :a :value {0 100 1 -100 14 -1000}) +``` + +--- + Using `:down` strategy, fills gaps with values from above. You can see that if missings are at the beginning, the are filled with first value ```{clojure results="asis"} @@ -3181,6 +3218,8 @@ A column selector can be a map with `:left` and `:right` keys to specify column The difference between `tech.ml.dataset` join functions are: arguments order (first datasets) and possibility to join on multiple columns. +Multiple columns joins create temporary index column from column selection. The method for creating index is based on `:hashing` option and defaults to `identity`. Prior to `7.000-beta-50` `hash` function was used, which caused hash collision for certain cases. + Additionally set operations are defined: `intersect` and `difference`. To concat two datasets rowwise you can choose: @@ -3428,6 +3467,16 @@ Return rows from ds1 not matching ds2 (tc/anti-join ds2 ds1 {:left :e :right :a}) ``` +#### Hashing + +When `:hashing` option is used, data from join columns are preprocessed by applying `join-columns` funtion with `:result-type` set to the value of `:hashing`. This helps to create custom joining behaviour. Function used for hashing will get vector of row values from join columns. + +In the following example we will join columns on value modulo 5. + +```{clojure results="asis"} +(tc/left-join ds1 ds2 :b {:hashing (fn [[v]] (mod v 5))}) +``` + #### Cross Cross product from selected columns diff --git a/docs/index.html b/docs/index.html index 773fdb2..1486e13 100644 --- a/docs/index.html +++ b/docs/index.html @@ -11,7 +11,7 @@ - + Dataset (data frame) manipulation API for the tech.ml.dataset library @@ -1614,7 +1614,7 @@

Dataset (data frame) manipulation API for the tech.ml.dataset library

GenerateMe

-

2023-02-02

+

2023-09-13

@@ -1645,7 +1645,9 @@

2023-02-02

tech-ml-version
-

“7.000-beta-27”

+

“7.007”

+
tablecloth-version
+

“7.007”

Introduction

tech.ml.dataset is a great and fast library which brings columnar dataset to the Clojure. Chris Nuernberger has been working on this library for last year as a part of bigger tech.ml stack.

@@ -1667,13 +1669,13 @@

Introduction

SOURCE CODE

Join the discussion on Zulip

Let’s require main namespace and define dataset used in most examples:

-
(require '[tablecloth.api :as tc]
-         '[tech.v3.datatype.functional :as dfn])
-(def DS (tc/dataset {:V1 (take 9 (cycle [1 2]))
-                      :V2 (range 1 10)
-                      :V3 (take 9 (cycle [0.5 1.0 1.5]))
-                      :V4 (take 9 (cycle ["A" "B" "C"]))}))
-
DS
+
(require '[tablecloth.api :as tc]
+         '[tech.v3.datatype.functional :as dfn])
+(def DS (tc/dataset {:V1 (take 9 (cycle [1 2]))
+                      :V2 (range 1 10)
+                      :V3 (take 9 (cycle [0.5 1.0 1.5]))
+                      :V4 (take 9 (cycle ["A" "B" "C"]))}))
+
DS

_unnamed [9 4]:

@@ -1746,7 +1748,7 @@

Introduction

Functionality

Dataset

-

Dataset is a special type which can be considered as a map of columns implemented around tech.ml.datatype library. Each column can be considered as named sequence of typed data. Supported types include integers, floats, string, boolean, date/time, objects etc.

+

Dataset is a special type which can be considered as a map of columns implemented around tech.ml.dataset library. Each column can be considered as named sequence of typed data. Supported types include integers, floats, string, boolean, date/time, objects etc.

Dataset creation

Dataset can be created from various of types of Clojure structures and files:

@@ -1778,18 +1780,18 @@

Dataset creation

tc/let-dataset accepts bindings symbol-column-data to simulate R’s tibble function. Each binding is converted into a column. You can refer previous columns to in further bindings (as in let).


Empty dataset.

-
(tc/dataset)
+
(tc/dataset)
_unnamed [0 0]

Empty dataset with column names

-
(tc/dataset nil {:column-names [:a :b]})
+
(tc/dataset nil {:column-names [:a :b]})
_unnamed [0 2]:
 
 | :a | :b |
 |----|----|

Sequence of pairs (first = column name, second = value(s)).

-
(tc/dataset [[:A 33] [:B 5] [:C :a]])
+
(tc/dataset [[:A 33] [:B 5] [:C :a]])

_unnamed [1 3]:

@@ -1809,7 +1811,7 @@

Dataset creation


Not sequential values are repeated row-count number of times.

-
(tc/dataset [[:A [1 2 3 4 5 6]] [:B "X"] [:C :a]])
+
(tc/dataset [[:A [1 2 3 4 5 6]] [:B "X"] [:C :a]])

_unnamed [6 3]:

@@ -1854,9 +1856,9 @@

Dataset creation


Dataset created from map (keys = column names, vals = value(s)). Works the same as sequence of pairs.

-
(tc/dataset {:A 33})
-(tc/dataset {:A [1 2 3]})
-(tc/dataset {:A [3 4 5] :B "X"})
+
(tc/dataset {:A 33})
+(tc/dataset {:A [1 2 3]})
+(tc/dataset {:A [3 4 5] :B "X"})

_unnamed [1 1]:

@@ -1914,7 +1916,7 @@

Dataset creation


You can put any value inside a column

-
(tc/dataset {:A [[3 4 5] [:a :b]] :B "X"})
+
(tc/dataset {:A [[3 4 5] [:a :b]] :B "X"})

_unnamed [2 2]:

@@ -1936,8 +1938,8 @@

Dataset creation


Sequence of maps

-
(tc/dataset [{:a 1 :b 3} {:b 2 :a 99}])
-(tc/dataset [{:a 1 :b [1 2 3]} {:a 2 :b [3 4]}])
+
(tc/dataset [{:a 1 :b 3} {:b 2 :a 99}])
+(tc/dataset [{:a 1 :b [1 2 3]} {:a 2 :b [3 4]}])

_unnamed [2 2]:

@@ -1978,7 +1980,7 @@

Dataset creation


Missing values are marked by nil

-
(tc/dataset [{:a nil :b 1} {:a 3 :b 4} {:a 11}])
+
(tc/dataset [{:a nil :b 1} {:a 3 :b 4} {:a 11}])

_unnamed [3 2]:

@@ -2004,9 +2006,9 @@

Dataset creation


Reading from arrays, by default :as-rows

-
(-> (map int-array [[1 2] [3 4] [5 6]])
-    (into-array)
-    (tc/dataset))
+
(-> (map int-array [[1 2] [3 4] [5 6]])
+    (into-array)
+    (tc/dataset))

:_unnamed [3 2]:

@@ -2031,9 +2033,9 @@

Dataset creation

:as-columns

-
(-> (map int-array [[1 2] [3 4] [5 6]])
-    (into-array)
-    (tc/dataset {:layout :as-columns}))
+
(-> (map int-array [[1 2] [3 4] [5 6]])
+    (into-array)
+    (tc/dataset {:layout :as-columns}))

:_unnamed [2 3]:

@@ -2057,10 +2059,10 @@

Dataset creation

:as-rows with names

-
(-> (map int-array [[1 2] [3 4] [5 6]])
-    (into-array)
-    (tc/dataset {:layout :as-rows
-                 :column-names [:a :b]}))
+
(-> (map int-array [[1 2] [3 4] [5 6]])
+    (into-array)
+    (tc/dataset {:layout :as-rows
+                 :column-names [:a :b]}))

:_unnamed [3 2]:

@@ -2085,10 +2087,10 @@

Dataset creation

Any objects

-
(-> (map to-array [[:a :z] ["ee" "ww"] [9 10]])
-    (into-array)
-    (tc/dataset {:column-names [:a :b :c]
-                 :layout :as-columns}))
+
(-> (map to-array [[:a :z] ["ee" "ww"] [9 10]])
+    (into-array)
+    (tc/dataset {:column-names [:a :b :c]
+                 :layout :as-columns}))

:_unnamed [2 3]:

@@ -2113,9 +2115,9 @@

Dataset creation


Create dataset using macro let-dataset to simulate R tibble function. Each binding is converted into a column.

-
(tc/let-dataset [x (range 1 6)
-                  y 1
-                  z (dfn/+ x y)])
+
(tc/let-dataset [x (range 1 6)
+                  y 1
+                  z (dfn/+ x y)])

_unnamed [5 3]:

@@ -2155,7 +2157,7 @@

Dataset creation


Import CSV file

-
(tc/dataset "data/family.csv")
+
(tc/dataset "data/family.csv")

data/family.csv [5 5]:

@@ -2207,8 +2209,8 @@

Dataset creation


Import from URL

-
(defonce ds (tc/dataset "https://vega.github.io/vega-lite/examples/data/seattle-weather.csv"))
-
ds
+
(defonce ds (tc/dataset "https://vega.github.io/vega-lite/examples/data/seattle-weather.csv"))
+
ds

https://vega.github.io/vega-lite/examples/data/seattle-weather.csv [1461 6]:

@@ -2402,7 +2404,7 @@

Dataset creation


When none of above works, singleton dataset is created. Along with the error message from the exception thrown by tech.ml.dataset

-
(tc/dataset 999)
+
(tc/dataset 999)

_unnamed [1 2]:

@@ -2421,11 +2423,11 @@

Dataset creation

To see the stack trace, turn it on by setting :stack-trace? to true.


Set column name for single value. Also set the dataset name and turn off creating error message column.

-
(tc/dataset 999 {:single-value-column-name "my-single-value"
-                 :error-column? false})
-(tc/dataset 999 {:single-value-column-name ""
-                 :dataset-name "Single value"
-                 :error-column? false})
+
(tc/dataset 999 {:single-value-column-name "my-single-value"
+                 :error-column? false})
+(tc/dataset 999 {:single-value-column-name ""
+                 :dataset-name "Single value"
+                 :error-column? false})

_unnamed [1 1]:

@@ -2462,15 +2464,15 @@

Saving

  • options:
  • :separator - string or separator char.
  • -
    (tc/write! ds "output.tsv.gz")
    -(.exists (clojure.java.io/file "output.tsv.gz"))
    -
    nil
    +
    (tc/write! ds "output.tsv.gz")
    +(.exists (clojure.java.io/file "output.tsv.gz"))
    +
    1462
     true
    Nippy
    -
    (tc/write! DS "output.nippy.gz")
    +
    (tc/write! DS "output.nippy.gz")
    nil
    -
    (tc/dataset "output.nippy.gz")
    +
    (tc/dataset "output.nippy.gz")

    output.nippy.gz [9 4]:

    @@ -2545,15 +2547,15 @@

    Dataset related functions

    Summary functions about the dataset like number of rows, columns and basic stats.


    Number of rows

    -
    (tc/row-count ds)
    +
    (tc/row-count ds)
    1461

    Number of columns

    -
    (tc/column-count ds)
    +
    (tc/column-count ds)
    6

    Shape of the dataset, [row count, column count]

    -
    (tc/shape ds)
    +
    (tc/shape ds)
    [1461 6]

    General info about dataset. There are three variants:

    @@ -2562,9 +2564,9 @@

    Dataset related functions

  • :basic - just name, row and column count and information if dataset is a result of group-by operation
  • :columns - columns’ metadata
  • -
    (tc/info ds)
    -(tc/info ds :basic)
    -(tc/info ds :columns)
    +
    (tc/info ds)
    +(tc/info ds :basic)
    +(tc/info ds :columns)

    https://vega.github.io/vega-lite/examples/data/seattle-weather.csv: descriptive-stats [6 12]:

    @@ -2760,13 +2762,13 @@

    Dataset related functions


    Getting a dataset name

    -
    (tc/dataset-name ds)
    +
    (tc/dataset-name ds)
    "https://vega.github.io/vega-lite/examples/data/seattle-weather.csv"

    Setting a dataset name (operation is immutable).

    -
    (->> "seattle-weather"
    -     (tc/set-dataset-name ds)
    -     (tc/dataset-name))
    +
    (->> "seattle-weather"
    +     (tc/set-dataset-name ds)
    +     (tc/dataset-name))
    "seattle-weather"
    @@ -2780,10 +2782,11 @@

    Columns and rows

  • :as-double-arrays - array of double arrays
  • :as-vecs - sequence of vectors (rows)
  • +

    For rows setting :nil-missing? option to false will elide keys for nil values.


    Select column.

    -
    (ds "wind")
    -(tc/column ds "date")
    +
    (ds "wind")
    +(tc/column ds "date")
    #tech.v3.dataset.column<float64>[1461]
     wind
     [4.700, 4.500, 2.300, 4.700, 6.100, 2.200, 2.300, 2.000, 3.400, 3.400, 5.100, 1.900, 1.300, 5.300, 3.200, 5.000, 5.600, 5.000, 1.600, 2.300...]
    @@ -2792,7 +2795,7 @@ 

    Columns and rows

    [2012-01-01, 2012-01-02, 2012-01-03, 2012-01-04, 2012-01-05, 2012-01-06, 2012-01-07, 2012-01-08, 2012-01-09, 2012-01-10, 2012-01-11, 2012-01-12, 2012-01-13, 2012-01-14, 2012-01-15, 2012-01-16, 2012-01-17, 2012-01-18, 2012-01-19, 2012-01-20...]

    Columns as sequence

    -
    (take 2 (tc/columns ds))
    +
    (take 2 (tc/columns ds))
    (#tech.v3.dataset.column<packed-local-date>[1461]
     date
     [2012-01-01, 2012-01-02, 2012-01-03, 2012-01-04, 2012-01-05, 2012-01-06, 2012-01-07, 2012-01-08, 2012-01-09, 2012-01-10, 2012-01-11, 2012-01-12, 2012-01-13, 2012-01-14, 2012-01-15, 2012-01-16, 2012-01-17, 2012-01-18, 2012-01-19, 2012-01-20...] #tech.v3.dataset.column<float64>[1461]
    @@ -2800,59 +2803,72 @@ 

    Columns and rows

    [0.000, 10.90, 0.8000, 20.30, 1.300, 2.500, 0.000, 0.000, 4.300, 1.000, 0.000, 0.000, 0.000, 4.100, 5.300, 2.500, 8.100, 19.80, 15.20, 13.50...])

    Columns as map

    -
    (keys (tc/columns ds :as-map))
    +
    (keys (tc/columns ds :as-map))
    ("date" "precipitation" "temp_max" "temp_min" "wind" "weather")

    Rows as sequence of sequences

    -
    (take 2 (tc/rows ds))
    -
    ([#object[java.time.LocalDate 0x7deffbbe "2012-01-01"] 0.0 12.8 5.0 4.7 "drizzle"] [#object[java.time.LocalDate 0x1598fb79 "2012-01-02"] 10.9 10.6 2.8 4.5 "rain"])
    +
    (take 2 (tc/rows ds))
    +
    ([#object[java.time.LocalDate 0x3ad18613 "2012-01-01"] 0.0 12.8 5.0 4.7 "drizzle"] [#object[java.time.LocalDate 0x63f0fc93 "2012-01-02"] 10.9 10.6 2.8 4.5 "rain"])

    Select rows/columns as double-double-array

    -
    (-> ds
    -    (tc/select-columns :type/numerical)
    -    (tc/head)
    -    (tc/rows :as-double-arrays))
    -
    #object["[[D" 0x57b00f2b "[[D@57b00f2b"]
    -
    (-> ds
    -    (tc/select-columns :type/numerical)
    -    (tc/head)
    -    (tc/columns :as-double-arrays))
    -
    #object["[[D" 0x4d7081ab "[[D@4d7081ab"]
    +
    (-> ds
    +    (tc/select-columns :type/numerical)
    +    (tc/head)
    +    (tc/rows :as-double-arrays))
    +
    #object["[[D" 0x7913631e "[[D@7913631e"]
    +
    (-> ds
    +    (tc/select-columns :type/numerical)
    +    (tc/head)
    +    (tc/columns :as-double-arrays))
    +
    #object["[[D" 0x33ac292c "[[D@33ac292c"]

    Rows as sequence of maps

    -
    (clojure.pprint/pprint (take 2 (tc/rows ds :as-maps)))
    -
    ({"date" #object[java.time.LocalDate 0x7a5a6b8d "2012-01-01"],
    +
    (clojure.pprint/pprint (take 2 (tc/rows ds :as-maps)))
    +
    ({"date" #object[java.time.LocalDate 0x46e26443 "2012-01-01"],
       "precipitation" 0.0,
       "temp_max" 12.8,
       "temp_min" 5.0,
       "wind" 4.7,
       "weather" "drizzle"}
    - {"date" #object[java.time.LocalDate 0x5942465f "2012-01-02"],
    + {"date" #object[java.time.LocalDate 0x1f2b8ae2 "2012-01-02"],
       "precipitation" 10.9,
       "temp_max" 10.6,
       "temp_min" 2.8,
       "wind" 4.5,
       "weather" "rain"})
    +
    +

    Rows with missing values

    +
    (-> {:a [1 nil 2]
    +     :b [3 4 nil]}
    +    (tc/dataset)
    +    (tc/rows :as-maps))
    +
    [{:a 1, :b 3} {:a nil, :b 4} {:a 2, :b nil}]
    +

    Rows with elided missing values

    +
    (-> {:a [1 nil 2]
    +     :b [3 4 nil]}
    +    (tc/dataset)
    +    (tc/rows :as-maps {:nil-missing? false}))
    +
    [{:a 1, :b 3} {:b 4} {:a 2}]

    Single entry

    Get single value from the table using get-in from Clojure API or get-entry. First argument is column name, second is row number.

    -
    (get-in ds ["wind" 2])
    +
    (get-in ds ["wind" 2])
    2.3
    -
    (tc/get-entry ds "wind" 2)
    +
    (tc/get-entry ds "wind" 2)
    2.3

    Printing

    Dataset is printed using dataset->str or print-dataset functions. Options are the same as in tech.ml.dataset/dataset-data->str. Most important is :print-line-policy which can be one of the: :single, :repl or :markdown.

    -
    (tc/print-dataset (tc/group-by DS :V1) {:print-line-policy :markdown})
    +
    (tc/print-dataset (tc/group-by DS :V1) {:print-line-policy :markdown})
    _unnamed [2 3]:
     
     | :name | :group-id |                                                                                                                                                                                                                                                             :data |
     |------:|----------:|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
     |     1 |         0 | Group: 1 [5 4]:<br><br>\| :V1 \| :V2 \| :V3 \| :V4 \|<br>\|----:\|----:\|----:\|-----\|<br>\|   1 \|   1 \| 0.5 \|   A \|<br>\|   1 \|   3 \| 1.5 \|   C \|<br>\|   1 \|   5 \| 1.0 \|   B \|<br>\|   1 \|   7 \| 0.5 \|   A \|<br>\|   1 \|   9 \| 1.5 \|   C \| |
     |     2 |         1 |                                   Group: 2 [4 4]:<br><br>\| :V1 \| :V2 \| :V3 \| :V4 \|<br>\|----:\|----:\|----:\|-----\|<br>\|   2 \|   2 \| 1.0 \|   B \|<br>\|   2 \|   4 \| 0.5 \|   A \|<br>\|   2 \|   6 \| 1.5 \|   C \|<br>\|   2 \|   8 \| 1.0 \|   B \| |
    -
    (tc/print-dataset (tc/group-by DS :V1) {:print-line-policy :repl})
    +
    (tc/print-dataset (tc/group-by DS :V1) {:print-line-policy :repl})
    _unnamed [2 3]:
     
     | :name | :group-id |                          :data |
    @@ -2874,7 +2890,7 @@ 

    Printing

    | | | \| 2 \| 4 \| 0.5 \| A \| | | | | \| 2 \| 6 \| 1.5 \| C \| | | | | \| 2 \| 8 \| 1.0 \| B \| |
    -
    (tc/print-dataset (tc/group-by DS :V1) {:print-line-policy :single})
    +
    (tc/print-dataset (tc/group-by DS :V1) {:print-line-policy :single})
    _unnamed [2 3]:
     
     | :name | :group-id |           :data |
    @@ -2900,17 +2916,13 @@ 

    Grouping

    • ds - dataset
    • grouping-selector - what to use for grouping
    • -
    • options: -
        -
      • :result-type - what to return: -
          +
        • options:
        • +
        • :result-type - what to return:
        • :as-dataset (default) - return grouped dataset
        • :as-indexes - return rows ids (row number from original dataset)
        • :as-map - return map with group names as keys and subdataset as values
        • :as-seq - return sequens of subdatasets
        • -
      • :select-keys - list of the columns passed to a grouping selector function
      • -

    All subdatasets (groups) have set name as the group name, additionally group-id is in meta.

    Grouping can be done by:

    @@ -2923,20 +2935,20 @@

    Grouping

    Note: currently dataset inside dataset is printed recursively so it renders poorly from markdown. So I will use :as-seq result type to show just group names and groups.


    List of columns in grouped dataset

    -
    (-> DS
    -    (tc/group-by :V1)
    -    (tc/column-names))
    +
    (-> DS
    +    (tc/group-by :V1)
    +    (tc/column-names))
    (:V1 :V2 :V3 :V4)

    List of columns in grouped dataset treated as regular dataset

    -
    (-> DS
    -    (tc/group-by :V1)
    -    (tc/as-regular-dataset)
    -    (tc/column-names))
    +
    (-> DS
    +    (tc/group-by :V1)
    +    (tc/as-regular-dataset)
    +    (tc/column-names))
    (:name :group-id :data)

    Content of the grouped dataset

    -
    (tc/columns (tc/group-by DS :V1) :as-map)
    +
    (tc/columns (tc/group-by DS :V1) :as-map)
    {:name #tech.v3.dataset.column<int64>[2]
     :name
     [1, 2], :group-id #tech.v3.dataset.column<int64>[2]
    @@ -2963,9 +2975,9 @@ 

    Grouping

    ]}

    Grouped dataset as map

    -
    (keys (tc/group-by DS :V1 {:result-type :as-map}))
    +
    (keys (tc/group-by DS :V1 {:result-type :as-map}))
    (1 2)
    -
    (vals (tc/group-by DS :V1 {:result-type :as-map}))
    +
    (vals (tc/group-by DS :V1 {:result-type :as-map}))

    (Group: 1 [5 4]:

    @@ -3049,11 +3061,11 @@

    Grouping

    )


    Group dataset as map of indexes (row ids)

    -
    (tc/group-by DS :V1 {:result-type :as-indexes})
    +
    (tc/group-by DS :V1 {:result-type :as-indexes})
    {1 [0 2 4 6 8], 2 [1 3 5 7]}

    Grouped datasets are printed as follows by default.

    -
    (tc/group-by DS :V1)
    +
    (tc/group-by DS :V1)

    _unnamed [2 3]:

    @@ -3080,11 +3092,11 @@

    Grouping

    To get groups as sequence or a map can be done from grouped dataset using groups->seq and groups->map functions.

    Groups as seq can be obtained by just accessing :data column.

    I will use temporary dataset here.

    -
    (let [ds (-> {"a" [1 1 2 2]
    -              "b" ["a" "b" "c" "d"]}
    -             (tc/dataset)
    -             (tc/group-by "a"))]
    -  (seq (ds :data))) ;; seq is not necessary but Markdown treats `:data` as command here
    +
    (let [ds (-> {"a" [1 1 2 2]
    +              "b" ["a" "b" "c" "d"]}
    +             (tc/dataset)
    +             (tc/group-by "a"))]
    +  (seq (ds :data))) ;; seq is not necessary but Markdown treats `:data` as command here

    (Group: 1 [2 2]:

    @@ -3124,11 +3136,11 @@

    Grouping

    )

    -
    (-> {"a" [1 1 2 2]
    -     "b" ["a" "b" "c" "d"]}
    -    (tc/dataset)
    -    (tc/group-by "a")
    -    (tc/groups->seq))
    +
    (-> {"a" [1 1 2 2]
    +     "b" ["a" "b" "c" "d"]}
    +    (tc/dataset)
    +    (tc/group-by "a")
    +    (tc/groups->seq))

    (Group: 1 [2 2]:

    @@ -3170,11 +3182,11 @@

    Grouping

    )


    Groups as map

    -
    (-> {"a" [1 1 2 2]
    -     "b" ["a" "b" "c" "d"]}
    -    (tc/dataset)
    -    (tc/group-by "a")
    -    (tc/groups->map))
    +
    (-> {"a" [1 1 2 2]
    +     "b" ["a" "b" "c" "d"]}
    +    (tc/dataset)
    +    (tc/group-by "a")
    +    (tc/groups->map))

    {1 Group: 1 [2 2]:

    @@ -3216,7 +3228,7 @@

    Grouping

    }


    Grouping by more than one column. You can see that group names are maps. When ungrouping is done these maps are used to restore column names.

    -
    (tc/group-by DS [:V1 :V3] {:result-type :as-seq})
    +
    (tc/group-by DS [:V1 :V3] {:result-type :as-seq})

    (Group: {:V1 1, :V3 0.5} [2 4]:

    @@ -3352,8 +3364,8 @@

    Grouping

    )


    Grouping can be done by providing just row indexes. This way you can assign the same row to more than one group.

    -
    (tc/group-by DS {"group-a" [1 2 1 2]
    -                  "group-b" [5 5 5 1]} {:result-type :as-seq})
    +
    (tc/group-by DS {"group-a" [1 2 1 2]
    +                  "group-b" [5 5 5 1]} {:result-type :as-seq})

    (Group: group-a [4 4]:

    @@ -3431,8 +3443,8 @@

    Grouping

    )


    You can group by a result of grouping function which gets row as map and should return group name. When map is used as a group name, ungrouping restore original column names.

    -
    (tc/group-by DS (fn [row] (* (:V1 row)
    -                             (:V3 row))) {:result-type :as-seq})
    +
    (tc/group-by DS (fn [row] (* (:V1 row)
    +                             (:V3 row))) {:result-type :as-seq})

    (Group: 0.5 [2 4]:

    @@ -3555,7 +3567,7 @@

    Grouping

    )


    You can use any predicate on column to split dataset into two groups.

    -
    (tc/group-by DS (comp #(< % 1.0) :V3) {:result-type :as-seq})
    +
    (tc/group-by DS (comp #(< % 1.0) :V3) {:result-type :as-seq})

    (Group: true [3 4]:

    @@ -3639,7 +3651,7 @@

    Grouping

    )


    juxt is also helpful

    -
    (tc/group-by DS (juxt :V1 :V3) {:result-type :as-seq})
    +
    (tc/group-by DS (juxt :V1 :V3) {:result-type :as-seq})

    (Group: [1 0.5] [2 4]:

    @@ -3775,8 +3787,8 @@

    Grouping

    )


    tech.ml.dataset provides an option to limit columns which are passed to grouping functions. It’s done for performance purposes.

    -
    (tc/group-by DS identity {:result-type :as-seq
    -                           :select-keys [:V1]})
    +
    (tc/group-by DS identity {:result-type :as-seq
    +                           :select-keys [:V1]})

    (Group: {:V1 1} [5 4]:

    @@ -3873,9 +3885,9 @@

    Ungrouping

    After ungrouping, order of the rows is kept within the groups but groups are ordered according to the internal storage.


    Grouping and ungrouping.

    -
    (-> DS
    -    (tc/group-by :V3)
    -    (tc/ungroup))
    +
    (-> DS
    +    (tc/group-by :V3)
    +    (tc/ungroup))

    _unnamed [9 4]:

    @@ -3945,10 +3957,10 @@

    Ungrouping


    Groups sorted by group name and named.

    -
    (-> DS
    -    (tc/group-by :V3)
    -    (tc/ungroup {:order? true
    -                  :dataset-name "Ordered by V3"}))
    +
    (-> DS
    +    (tc/group-by :V3)
    +    (tc/ungroup {:order? true
    +                  :dataset-name "Ordered by V3"}))

    Ordered by V3 [9 4]:

    @@ -4018,10 +4030,10 @@

    Ungrouping


    Groups sorted descending by group name and named.

    -
    (-> DS
    -    (tc/group-by :V3)
    -    (tc/ungroup {:order? :desc
    -                  :dataset-name "Ordered by V3 descending"}))
    +
    (-> DS
    +    (tc/group-by :V3)
    +    (tc/ungroup {:order? :desc
    +                  :dataset-name "Ordered by V3 descending"}))

    Ordered by V3 descending [9 4]:

    @@ -4091,10 +4103,10 @@

    Ungrouping


    Let’s add group name and id as additional columns

    -
    (-> DS
    -    (tc/group-by (comp #(< % 4) :V2))
    -    (tc/ungroup {:add-group-as-column true
    -                  :add-group-id-as-column true}))
    +
    (-> DS
    +    (tc/group-by (comp #(< % 4) :V2))
    +    (tc/ungroup {:add-group-as-column true
    +                  :add-group-id-as-column true}))

    _unnamed [9 6]:

    @@ -4184,10 +4196,10 @@

    Ungrouping


    Let’s assign different column names

    -
    (-> DS
    -    (tc/group-by (comp #(< % 4) :V2))
    -    (tc/ungroup {:add-group-as-column "Is V2 less than 4?"
    -                  :add-group-id-as-column "group id"}))
    +
    (-> DS
    +    (tc/group-by (comp #(< % 4) :V2))
    +    (tc/ungroup {:add-group-as-column "Is V2 less than 4?"
    +                  :add-group-id-as-column "group id"}))

    _unnamed [9 6]:

    @@ -4277,11 +4289,11 @@

    Ungrouping


    If we group by map, we can automatically create new columns out of group names.

    -
    (-> DS
    -    (tc/group-by (fn [row] {"V1 and V3 multiplied" (* (:V1 row)
    -                                                      (:V3 row))
    -                            "V4 as lowercase" (clojure.string/lower-case (:V4 row))}))
    -    (tc/ungroup {:add-group-as-column true}))
    +
    (-> DS
    +    (tc/group-by (fn [row] {"V1 and V3 multiplied" (* (:V1 row)
    +                                                      (:V3 row))
    +                            "V4 as lowercase" (clojure.string/lower-case (:V4 row))}))
    +    (tc/ungroup {:add-group-as-column true}))

    _unnamed [9 6]:

    @@ -4371,12 +4383,12 @@

    Ungrouping


    We can add group names without separation

    -
    (-> DS
    -    (tc/group-by (fn [row] {"V1 and V3 multiplied" (* (:V1 row)
    -                                                      (:V3 row))
    -                            "V4 as lowercase" (clojure.string/lower-case (:V4 row))}))
    -    (tc/ungroup {:add-group-as-column "just map"
    -                  :separate? false}))
    +
    (-> DS
    +    (tc/group-by (fn [row] {"V1 and V3 multiplied" (* (:V1 row)
    +                                                      (:V3 row))
    +                            "V4 as lowercase" (clojure.string/lower-case (:V4 row))}))
    +    (tc/ungroup {:add-group-as-column "just map"
    +                  :separate? false}))

    _unnamed [9 5]:

    @@ -4456,9 +4468,9 @@

    Ungrouping


    The same applies to group names as sequences

    -
    (-> DS
    -    (tc/group-by (juxt :V1 :V3))
    -    (tc/ungroup {:add-group-as-column "abc"}))
    +
    (-> DS
    +    (tc/group-by (juxt :V1 :V3))
    +    (tc/ungroup {:add-group-as-column "abc"}))

    _unnamed [9 6]:

    @@ -4548,9 +4560,9 @@

    Ungrouping


    Let’s provide column names

    -
    (-> DS
    -    (tc/group-by (juxt :V1 :V3))
    -    (tc/ungroup {:add-group-as-column ["v1" "v3"]}))
    +
    (-> DS
    +    (tc/group-by (juxt :V1 :V3))
    +    (tc/ungroup {:add-group-as-column ["v1" "v3"]}))

    _unnamed [9 6]:

    @@ -4640,11 +4652,11 @@

    Ungrouping


    Also we can supress separation

    -
    (-> DS
    -    (tc/group-by (juxt :V1 :V3))
    -    (tc/ungroup {:separate? false
    -                  :add-group-as-column true}))
    -;; => _unnamed [9 5]:
    +
    (-> DS
    +    (tc/group-by (juxt :V1 :V3))
    +    (tc/ungroup {:separate? false
    +                  :add-group-as-column true}))
    +;; => _unnamed [9 5]:

    _unnamed [9 5]:

    @@ -4726,23 +4738,23 @@

    Ungrouping

    Other functions

    To check if dataset is grouped or not just use grouped? function.

    -
    (tc/grouped? DS)
    +
    (tc/grouped? DS)
    nil
    -
    (tc/grouped? (tc/group-by DS :V1))
    +
    (tc/grouped? (tc/group-by DS :V1))
    true

    If you want to remove grouping annotation (to make all the functions work as with regular dataset) you can use unmark-group or as-regular-dataset (alias) functions.

    It can be important when you want to remove some groups (rows) from grouped dataset using drop-rows or something like that.

    -
    (-> DS
    -    (tc/group-by :V1)
    -    (tc/as-regular-dataset)
    -    (tc/grouped?))
    +
    (-> DS
    +    (tc/group-by :V1)
    +    (tc/as-regular-dataset)
    +    (tc/grouped?))
    nil

    You can also operate on grouped dataset as a regular one in case you want to access its columns using without-grouping-> threading macro.

    -
    (-> DS
    -    (tc/group-by [:V4 :V1])
    -    (tc/without-grouping->
    -     (tc/order-by (comp (juxt :V4 :V1) :name))))
    +
    (-> DS
    +    (tc/group-by [:V4 :V1])
    +    (tc/without-grouping->
    +     (tc/order-by (comp (juxt :V4 :V1) :name))))

    _unnamed [6 3]:

    @@ -4788,10 +4800,10 @@

    Other functions


    This is considered internal.

    If you want to implement your own mapping function on grouped dataset you can call process-group-data and pass function operating on datasets. Result should be a dataset to have ungrouping working.

    -
    (-> DS
    -    (tc/group-by :V1)
    -    (tc/process-group-data #(str "Shape: " (vector (tc/row-count %) (tc/column-count %))))
    -    (tc/as-regular-dataset))
    +
    (-> DS
    +    (tc/group-by :V1)
    +    (tc/process-group-data #(str "Shape: " (vector (tc/row-count %) (tc/column-count %))))
    +    (tc/as-regular-dataset))

    _unnamed [2 3]:

    @@ -4818,7 +4830,7 @@

    Other functions

    Columns

    -

    Column is a special tech.ml.dataset structure based on tech.ml.datatype library. For our purposes we cat treat columns as typed and named sequence bound to particular dataset.

    +

    Column is a special tech.ml.dataset structure. For our purposes we cat treat columns as typed and named sequence bound to particular dataset.

    Type of the data is inferred from a sequence during column creation.

    Names

    @@ -4848,55 +4860,55 @@

    Names

    If qualified keyword starts with :!type, complement set is used.


    To select all column names you can use column-names function.

    -
    (tc/column-names DS)
    +
    (tc/column-names DS)
    (:V1 :V2 :V3 :V4)

    or

    -
    (tc/column-names DS :all)
    +
    (tc/column-names DS :all)
    (:V1 :V2 :V3 :V4)

    In case you want to select column which has name :all (or is sequence or map), put it into a vector. Below code returns empty sequence since there is no such column in the dataset.

    -
    (tc/column-names DS [:all])
    +
    (tc/column-names DS [:all])
    ()

    Obviously selecting single name returns it’s name if available

    -
    (tc/column-names DS :V1)
    -(tc/column-names DS "no such column")
    +
    (tc/column-names DS :V1)
    +(tc/column-names DS "no such column")
    (:V1)
     ()

    Select sequence of column names.

    -
    (tc/column-names DS [:V1 "V2" :V3 :V4 :V5])
    +
    (tc/column-names DS [:V1 "V2" :V3 :V4 :V5])
    (:V1 :V3 :V4)

    Select names based on regex, columns ends with 1 or 4

    -
    (tc/column-names DS #".*[14]")
    +
    (tc/column-names DS #".*[14]")
    (:V1 :V4)

    Select names based on regex operating on type of the column (to check what are the column types, call (tc/info DS :columns). Here we want to get integer columns only.

    -
    (tc/column-names DS #"^:int.*" :datatype)
    +
    (tc/column-names DS #"^:int.*" :datatype)
    (:V1 :V2)

    or

    -
    (tc/column-names DS :type/integer)
    +
    (tc/column-names DS :type/integer)
    (:V1 :V2)

    And finally we can use predicate to select names. Let’s select double precision columns.

    -
    (tc/column-names DS #{:float64} :datatype)
    +
    (tc/column-names DS #{:float64} :datatype)
    (:V3)

    or

    -
    (tc/column-names DS :type/float64)
    +
    (tc/column-names DS :type/float64)
    (:V3)

    If you want to select all columns but given, use complement function. Works only on a predicate.

    -
    (tc/column-names DS (complement #{:V1}))
    -(tc/column-names DS (complement #{:float64}) :datatype)
    -(tc/column-names DS :!type/float64)
    +
    (tc/column-names DS (complement #{:V1}))
    +(tc/column-names DS (complement #{:float64}) :datatype)
    +(tc/column-names DS :!type/float64)
    (:V2 :V3 :V4)
     (:V1 :V2 :V4)
     (:V1 :V2 :V4)

    You can select column names based on all column metadata at once by using :all metadata selector. Below we want to select column names ending with 1 which have long datatype.

    -
    (tc/column-names DS (fn [meta]
    -                       (and (= :int64 (:datatype meta))
    -                            (clojure.string/ends-with? (:name meta) "1"))) :all)
    +
    (tc/column-names DS (fn [meta]
    +                       (and (= :int64 (:datatype meta))
    +                            (clojure.string/ends-with? (:name meta) "1"))) :all)
    (:V1)
    @@ -4904,7 +4916,7 @@

    Select

    select-columns creates dataset with columns selected by columns-selector as described above. Function works on regular and grouped dataset.


    Select only float64 columns

    -
    (tc/select-columns DS #(= :float64 %) :datatype)
    +
    (tc/select-columns DS #(= :float64 %) :datatype)

    _unnamed [9 1]:

    @@ -4943,7 +4955,7 @@

    Select

    or

    -
    (tc/select-columns DS :type/float64)
    +
    (tc/select-columns DS :type/float64)

    _unnamed [9 1]:

    @@ -4983,7 +4995,7 @@

    Select


    Select all but :V1 columns

    -
    (tc/select-columns DS (complement #{:V1}))
    +
    (tc/select-columns DS (complement #{:V1}))

    _unnamed [9 3]:

    @@ -5043,10 +5055,10 @@

    Select


    If we have grouped data set, column selection is applied to every group separately.

    -
    (-> DS
    -    (tc/group-by :V1)
    -    (tc/select-columns [:V2 :V3])
    -    (tc/groups->map))
    +
    (-> DS
    +    (tc/group-by :V1)
    +    (tc/select-columns [:V2 :V3])
    +    (tc/groups->map))

    {1 Group: 1 [5 2]:

    @@ -5112,7 +5124,7 @@

    Drop

    drop-columns creates dataset with removed columns.


    Drop float64 columns

    -
    (tc/drop-columns DS #(= :float64 %) :datatype)
    +
    (tc/drop-columns DS #(= :float64 %) :datatype)

    _unnamed [9 3]:

    @@ -5171,7 +5183,7 @@

    Drop

    or

    -
    (tc/drop-columns DS :type/float64)
    +
    (tc/drop-columns DS :type/float64)

    _unnamed [9 3]:

    @@ -5231,7 +5243,7 @@

    Drop


    Drop all columns but :V1 and :V2

    -
    (tc/drop-columns DS (complement #{:V1 :V2}))
    +
    (tc/drop-columns DS (complement #{:V1 :V2}))

    _unnamed [9 2]:

    @@ -5281,10 +5293,10 @@

    Drop


    If we have grouped data set, column selection is applied to every group separately. Selected columns are dropped.

    -
    (-> DS
    -    (tc/group-by :V1)
    -    (tc/drop-columns [:V2 :V3])
    -    (tc/groups->map))
    +
    (-> DS
    +    (tc/group-by :V1)
    +    (tc/drop-columns [:V2 :V3])
    +    (tc/groups->map))

    {1 Group: 1 [5 2]:

    @@ -5349,10 +5361,10 @@

    Drop

    Rename

    If you want to rename colums use rename-columns and pass map where keys are old names, values new ones.

    You can also pass mapping function with optional columns-selector

    -
    (tc/rename-columns DS {:V1 "v1"
    -                        :V2 "v2"
    -                        :V3 [1 2 3]
    -                        :V4 (Object.)})
    +
    (tc/rename-columns DS {:V1 "v1"
    +                        :V2 "v2"
    +                        :V3 [1 2 3]
    +                        :V4 (Object.)})

    _unnamed [9 4]:

    @@ -5360,7 +5372,7 @@

    Rename

    - + @@ -5422,7 +5434,7 @@

    Rename

    v1 v2 [1 2 3]

    Map all names with function

    -
    (tc/rename-columns DS (comp str second name))
    +
    (tc/rename-columns DS (comp str second name))

    _unnamed [9 4]:

    @@ -5492,7 +5504,7 @@

    Rename


    Map selected names with function

    -
    (tc/rename-columns DS [:V1 :V3] (comp str second name))
    +
    (tc/rename-columns DS [:V1 :V3] (comp str second name))

    _unnamed [9 4]:

    @@ -5562,13 +5574,13 @@

    Rename


    Function works on grouped dataset

    -
    (-> DS
    -    (tc/group-by :V1)
    -    (tc/rename-columns {:V1 "v1"
    -                         :V2 "v2"
    -                         :V3 [1 2 3]
    -                         :V4 (Object.)})
    -    (tc/groups->map))
    +
    (-> DS
    +    (tc/group-by :V1)
    +    (tc/rename-columns {:V1 "v1"
    +                         :V2 "v2"
    +                         :V3 [1 2 3]
    +                         :V4 (Object.)})
    +    (tc/groups->map))

    {1 Group: 1 [5 4]:

    @@ -5576,7 +5588,7 @@

    Rename

    - + @@ -5619,7 +5631,7 @@

    Rename

    - + @@ -5668,7 +5680,7 @@

    Add or update

    Function works on grouped dataset.


    Add single value as column

    -
    (tc/add-column DS :V5 "X")
    +
    (tc/add-column DS :V5 "X")

    _unnamed [9 5]:

    v1 v2 [1 2 3]
    v1 v2 [1 2 3]
    @@ -5748,7 +5760,7 @@

    Add or update


    Replace one column (column is trimmed)

    -
    (tc/add-column DS :V1 (repeatedly rand))
    +
    (tc/add-column DS :V1 (repeatedly rand))

    _unnamed [9 4]:

    @@ -5761,55 +5773,55 @@

    Add or update

    - + - + - + - + - + - + - + - + - + @@ -5818,7 +5830,7 @@

    Add or update

    0.938694760.41257790 1 0.5 A
    0.532507600.55281322 2 1.0 B
    0.877588370.15073657 3 1.5 C
    0.840843860.18311522 4 0.5 A
    0.041254280.76664862 5 1.0 B
    0.555929500.95296580 6 1.5 C
    0.543867980.24539929 7 0.5 A
    0.109905270.24504991 8 1.0 B
    0.034571400.10504470 9 1.5 C

    Copy column

    -
    (tc/add-column DS :V5 (DS :V1))
    +
    (tc/add-column DS :V5 (DS :V1))

    _unnamed [9 5]:

    @@ -5898,7 +5910,7 @@

    Add or update


    When function is used, argument is whole dataset and the result should be column, sequence or single value

    -
    (tc/add-column DS :row-count tc/row-count)
    +
    (tc/add-column DS :row-count tc/row-count)

    _unnamed [9 5]:

    @@ -5978,10 +5990,10 @@

    Add or update


    Above example run on grouped dataset, applies function on each group separately.

    -
    (-> DS
    -    (tc/group-by :V1)
    -    (tc/add-column :row-count tc/row-count)
    -    (tc/ungroup))
    +
    (-> DS
    +    (tc/group-by :V1)
    +    (tc/add-column :row-count tc/row-count)
    +    (tc/ungroup))

    _unnamed [9 5]:

    @@ -6061,7 +6073,7 @@

    Add or update


    When column which is added is longer than row count in dataset, column is trimmed. When column is shorter, it’s cycled or missing values are appended.

    -
    (tc/add-column DS :V5 [:r :b] :cycle)
    +
    (tc/add-column DS :V5 [:r :b] :cycle)

    _unnamed [9 5]:

    @@ -6139,7 +6151,7 @@

    Add or update

    -
    (tc/add-column DS :V5 [:r :b] :na)
    +
    (tc/add-column DS :V5 [:r :b] :na)

    _unnamed [9 5]:

    @@ -6218,16 +6230,16 @@

    Add or update

    Exception is thrown when :strict (default) strategy is used and column size is not equal row count

    -
    (try
    -  (tc/add-column DS :V5 [:r :b])
    -  (catch Exception e (str "Exception caught: "(ex-message e))))
    +
    (try
    +  (tc/add-column DS :V5 [:r :b])
    +  (catch Exception e (str "Exception caught: "(ex-message e))))
    "Exception caught: Column size (2) should be exactly the same as dataset row count (9). Consider `:cycle` or `:na` strategy."

    Tha same applies for grouped dataset

    -
    (-> DS
    -    (tc/group-by :V3)
    -    (tc/add-column :V5 [:r :b] :na)
    -    (tc/ungroup))
    +
    (-> DS
    +    (tc/group-by :V3)
    +    (tc/add-column :V5 [:r :b] :na)
    +    (tc/ungroup))

    _unnamed [9 5]:

    @@ -6307,10 +6319,10 @@

    Add or update


    Let’s use other column to fill groups

    -
    (-> DS
    -    (tc/group-by :V3)
    -    (tc/add-column :V5 (DS :V2) :cycle)
    -    (tc/ungroup))
    +
    (-> DS
    +    (tc/group-by :V3)
    +    (tc/add-column :V5 (DS :V2) :cycle)
    +    (tc/ungroup))

    _unnamed [9 5]:

    @@ -6390,9 +6402,9 @@

    Add or update


    In case you want to add or update several columns you can call add-columns and provide map where keys are column names, vals are columns.

    -
    (tc/add-columns DS {:V1 #(map inc (% :V1))
    -                               :V5 #(map (comp keyword str) (% :V4))
    -                               :V6 11})
    +
    (tc/add-columns DS {:V1 #(map inc (% :V1))
    +                               :V5 #(map (comp keyword str) (% :V4))
    +                               :V6 11})

    _unnamed [9 6]:

    @@ -6495,7 +6507,7 @@

    Update

    Functions accept column and have to return column or sequence


    Reverse of columns

    -
    (tc/update-columns DS :all reverse) 
    +
    (tc/update-columns DS :all reverse) 

    _unnamed [9 4]:

    @@ -6565,8 +6577,8 @@

    Update


    Apply dec/inc on numerical columns

    -
    (tc/update-columns DS :type/numerical [(partial map dec)
    -                                        (partial map inc)])
    +
    (tc/update-columns DS :type/numerical [(partial map dec)
    +                                        (partial map inc)])

    _unnamed [9 4]:

    @@ -6636,8 +6648,8 @@

    Update


    You can also assign a function to a column by packing operations into the map.

    -
    (tc/update-columns DS {:V1 reverse
    -                        :V2 (comp shuffle seq)})
    +
    (tc/update-columns DS {:V1 reverse
    +                        :V2 (comp shuffle seq)})

    _unnamed [9 4]:

    @@ -6651,49 +6663,49 @@

    Update

    - + - + - + - + - + - + - + - + @@ -6718,11 +6730,11 @@

    Map


    Let’s add numerical columns together

    -
    (tc/map-columns DS
    -                 :sum-of-numbers
    -                 (tc/column-names DS  #{:int64 :float64} :datatype)
    -                 (fn [& rows]
    -                   (reduce + rows)))
    +
    (tc/map-columns DS
    +                 :sum-of-numbers
    +                 (tc/column-names DS  #{:int64 :float64} :datatype)
    +                 (fn [& rows]
    +                   (reduce + rows)))

    _unnamed [9 5]:

    138 0.5 A
    289 1.0 B
    194 1.5 C
    247 0.5 A
    172 1.0 B
    256 1.5 C
    163 0.5 A
    225 1.0 B
    @@ -6801,13 +6813,13 @@

    Map

    The same works on grouped dataset

    -
    (-> DS
    -    (tc/group-by :V4)
    -    (tc/map-columns :sum-of-numbers
    -                     (tc/column-names DS  #{:int64 :float64} :datatype)
    -                     (fn [& rows]
    -                       (reduce + rows)))
    -    (tc/ungroup))
    +
    (-> DS
    +    (tc/group-by :V4)
    +    (tc/map-columns :sum-of-numbers
    +                     (tc/column-names DS  #{:int64 :float64} :datatype)
    +                     (fn [& rows]
    +                       (reduce + rows)))
    +    (tc/ungroup))

    _unnamed [9 5]:

    @@ -6889,7 +6901,7 @@

    Map

    Reorder

    To reorder columns use columns selectors to choose what columns go first. The unseleted columns are appended to the end.

    -
    (tc/reorder-columns DS :V4 [:V3 :V2])
    +
    (tc/reorder-columns DS :V4 [:V3 :V2])

    _unnamed [9 4]:

    @@ -6959,7 +6971,7 @@

    Reorder


    This function doesn’t let you select meta field, so you have to call column-names in such case. Below we want to add integer columns at the end.

    -
    (tc/reorder-columns DS (tc/column-names DS (complement #{:int64}) :datatype))
    +
    (tc/reorder-columns DS (tc/column-names DS (complement #{:int64}) :datatype))

    _unnamed [9 4]:

    @@ -7049,9 +7061,9 @@

    Type conversion

    The other conversion is casting column into java array (->array) of the type column or provided as argument. Grouped dataset returns sequence of arrays.


    Basic conversion

    -
    (-> DS
    -    (tc/convert-types :V1 :float64)
    -    (tc/info :columns))
    +
    (-> DS
    +    (tc/convert-types :V1 :float64)
    +    (tc/info :columns))

    _unnamed :column info [4 6]:

    @@ -7101,8 +7113,8 @@

    Type conversion


    Using custom converter. Let’s treat :V4 as haxadecimal values. See that this way we can map column to any value.

    -
    (-> DS
    -    (tc/convert-types :V4 [[:int16 #(Integer/parseInt % 16)]]))
    +
    (-> DS
    +    (tc/convert-types :V4 [[:int16 #(Integer/parseInt % 16)]]))

    _unnamed [9 4]:

    @@ -7172,12 +7184,12 @@

    Type conversion


    You can process several columns at once

    -
    (-> DS
    -    (tc/convert-types {:V1 :float64
    -                        :V2 :object
    -                        :V3 [:boolean #(< % 1.0)]
    -                        :V4 :object})
    -    (tc/info :columns))
    +
    (-> DS
    +    (tc/convert-types {:V1 :float64
    +                        :V2 :object
    +                        :V3 [:boolean #(< % 1.0)]
    +                        :V4 :object})
    +    (tc/info :columns))

    _unnamed :column info [4 6]:

    @@ -7227,9 +7239,9 @@

    Type conversion


    Convert one type into another

    -
    (-> DS
    -    (tc/convert-types :type/numerical :int16)
    -    (tc/info :columns))
    +
    (-> DS
    +    (tc/convert-types :type/numerical :int16)
    +    (tc/info :columns))

    _unnamed :column info [4 6]:

    @@ -7279,11 +7291,11 @@

    Type conversion


    Function works on the grouped dataset

    -
    (-> DS
    -    (tc/group-by :V1)
    -    (tc/convert-types :V1 :float32)
    -    (tc/ungroup)
    -    (tc/info :columns))
    +
    (-> DS
    +    (tc/group-by :V1)
    +    (tc/convert-types :V1 :float32)
    +    (tc/ungroup)
    +    (tc/info :columns))

    _unnamed :column info [4 6]:

    @@ -7333,20 +7345,20 @@

    Type conversion


    Double array conversion.

    -
    (tc/->array DS :V1)
    -
    #object["[J" 0x409b5a01 "[J@409b5a01"]
    +
    (tc/->array DS :V1)
    +
    #object["[J" 0x6103aa71 "[J@6103aa71"]

    Function also works on grouped dataset

    -
    (-> DS
    -    (tc/group-by :V3)
    -    (tc/->array :V2))
    -
    (#object["[J" 0xd8ee65f "[J@d8ee65f"] #object["[J" 0x616256ee "[J@616256ee"] #object["[J" 0x6c1836d9 "[J@6c1836d9"])
    +
    (-> DS
    +    (tc/group-by :V3)
    +    (tc/->array :V2))
    +
    (#object["[J" 0x643bc1cd "[J@643bc1cd"] #object["[J" 0x1aef721e "[J@1aef721e"] #object["[J" 0xc094baa "[J@c094baa"])

    You can also cast the type to the other one (if casting is possible):

    -
    (tc/->array DS :V4 :string)
    -(tc/->array DS :V1 :float32)
    -
    #object["[Ljava.lang.String;" 0x517324c2 "[Ljava.lang.String;@517324c2"]
    -#object["[F" 0x4b8e174 "[F@4b8e174"]
    +
    (tc/->array DS :V4 :string)
    +(tc/->array DS :V1 :float32)
    +
    #object["[Ljava.lang.String;" 0x38c40c75 "[Ljava.lang.String;@38c40c75"]
    +#object["[F" 0xcf4d224 "[F@cf4d224"]
    @@ -7362,7 +7374,7 @@

    Rows

    Select

    Select fifth row

    -
    (tc/select-rows DS 4)
    +
    (tc/select-rows DS 4)

    _unnamed [1 4]:

    @@ -7384,7 +7396,7 @@

    Select


    Select 3 rows

    -
    (tc/select-rows DS [1 4 5])
    +
    (tc/select-rows DS [1 4 5])

    _unnamed [3 4]:

    @@ -7418,7 +7430,7 @@

    Select


    Select rows using sequence of true/false values

    -
    (tc/select-rows DS [true nil nil true])
    +
    (tc/select-rows DS [true nil nil true])

    _unnamed [2 4]:

    @@ -7446,7 +7458,7 @@

    Select


    Select rows using predicate

    -
    (tc/select-rows DS (comp #(< % 1) :V3))
    +
    (tc/select-rows DS (comp #(< % 1) :V3))

    _unnamed [3 4]:

    @@ -7480,10 +7492,10 @@

    Select


    The same works on grouped dataset, let’s select first row from every group.

    -
    (-> DS
    -    (tc/group-by :V1)
    -    (tc/select-rows 0)
    -    (tc/ungroup))
    +
    (-> DS
    +    (tc/group-by :V1)
    +    (tc/select-rows 0)
    +    (tc/ungroup))

    _unnamed [2 4]:

    @@ -7511,11 +7523,11 @@

    Select


    If you want to select :V2 values which are lower than or equal mean in grouped dataset you have to precalculate it using :pre.

    -
    (-> DS
    -    (tc/group-by :V4)
    -    (tc/select-rows (fn [row] (<= (:V2 row) (:mean row)))
    -                     {:pre {:mean #(tech.v3.datatype.functional/mean (% :V2))}})
    -    (tc/ungroup))
    +
    (-> DS
    +    (tc/group-by :V4)
    +    (tc/select-rows (fn [row] (<= (:V2 row) (:mean row)))
    +                     {:pre {:mean #(tech.v3.datatype.functional/mean (% :V2))}})
    +    (tc/ungroup))

    _unnamed [6 4]:

    @@ -7571,11 +7583,11 @@

    Drop

    drop-rows removes rows, and accepts exactly the same parameters as select-rows


    Drop values lower than or equal :V2 column mean in grouped dataset.

    -
    (-> DS
    -    (tc/group-by :V4)
    -    (tc/drop-rows (fn [row] (<= (:V2 row) (:mean row)))
    -                   {:pre {:mean #(tech.v3.datatype.functional/mean (% :V2))}})
    -    (tc/ungroup))
    +
    (-> DS
    +    (tc/group-by :V4)
    +    (tc/drop-rows (fn [row] (<= (:V2 row) (:mean row)))
    +                   {:pre {:mean #(tech.v3.datatype.functional/mean (% :V2))}})
    +    (tc/ungroup))

    _unnamed [3 4]:

    @@ -7612,8 +7624,8 @@

    Drop

    Map rows

    Call a mapping function for every row. Mapping function should return a map, where keys are column names (new or old) and values are column values.

    Works on grouped dataset too.

    -
    (tc/map-rows DS (fn [{:keys [V1 V2]}] {:V1 0
    -                                       :V5 (/ (+ V1 V2) (double V2))}))
    +
    (tc/map-rows DS (fn [{:keys [V1 V2]}] {:V1 0
    +                                       :V5 (/ (+ V1 V2) (double V2))}))

    _unnamed [9 5]:

    @@ -7698,7 +7710,7 @@

    Other

    All random functions accept :seed as an option if you want to fix returned result.


    First row

    -
    (tc/first DS)
    +
    (tc/first DS)

    _unnamed [1 4]:

    @@ -7720,7 +7732,7 @@

    Other


    Last row

    -
    (tc/last DS)
    +
    (tc/last DS)

    _unnamed [1 4]:

    @@ -7742,7 +7754,7 @@

    Other


    Random row (single)

    -
    (tc/rand-nth DS)
    +
    (tc/rand-nth DS)

    _unnamed [1 4]:

    @@ -7756,15 +7768,15 @@

    Other

    - - - + + +
    281.0B61.5C

    Random row (single) with seed

    -
    (tc/rand-nth DS {:seed 42})
    +
    (tc/rand-nth DS {:seed 42})

    _unnamed [1 4]:

    @@ -7786,7 +7798,7 @@

    Other


    Random n (default: row count) rows with repetition.

    -
    (tc/random DS)
    +
    (tc/random DS)

    _unnamed [9 4]:

    @@ -7800,15 +7812,15 @@

    Other

    - - - + + + - - - + + + @@ -7817,22 +7829,22 @@

    Other

    - - - - - - - - + + + + + + + + - - - + + + @@ -7841,22 +7853,22 @@

    Other

    - - - - + + + + - - - - + + + +
    131.5C70.5A
    240.5A61.5C
    2 A
    281.0B
    2417 0.5 A
    191.5C
    151.0B31.5C
    2 B
    191.5C240.5A
    151.0B261.5C

    Five random rows with repetition

    -
    (tc/random DS 5)
    +
    (tc/random DS 5)

    _unnamed [5 4]:

    @@ -7869,8 +7881,20 @@

    Other

    + + + + + + + + + + + + - + @@ -7882,27 +7906,15 @@

    Other

    - - - - - - - - - - - - - - - + + +
    221.0B
    261.5C
    139 1.5 C
    281.0B
    281.0B
    170.5A61.5C

    Five random, non-repeating rows

    -
    (tc/random DS 5 {:repeat? false})
    +
    (tc/random DS 5 {:repeat? false})

    _unnamed [5 4]:

    @@ -7921,8 +7933,8 @@

    Other

    - - + + @@ -7933,14 +7945,14 @@

    Other

    - - - - + + + + - - + + @@ -7948,7 +7960,7 @@

    Other

    A
    2215 1.0 B
    A
    131.5C281.0B
    1926 1.5 C

    Five random, with seed

    -
    (tc/random DS 5 {:seed 42})
    +
    (tc/random DS 5 {:seed 42})

    _unnamed [5 4]:

    @@ -7994,7 +8006,7 @@

    Other


    Shuffle dataset

    -
    (tc/shuffle DS)
    +
    (tc/shuffle DS)

    _unnamed [9 4]:

    @@ -8007,35 +8019,35 @@

    Other

    - - + + - - - - - - - + - - - - - - - - + + + + + + + + + + + + + + @@ -8044,27 +8056,27 @@

    Other

    + + + + + + - - - - - - - - - + + +
    2815 1.0 B
    221.0B
    1 17 0.5 A
    151.0B
    17261.5C
    24 0.5 A
    221.0B
    1 9
    110.5A
    1 3 1.5 C
    240.5A
    261.5C81.0B

    Shuffle with seed

    -
    (tc/shuffle DS {:seed 42})
    +
    (tc/shuffle DS {:seed 42})

    _unnamed [9 4]:

    @@ -8134,7 +8146,7 @@

    Other


    First n rows (default 5)

    -
    (tc/head DS)
    +
    (tc/head DS)

    _unnamed [5 4]:

    @@ -8180,7 +8192,7 @@

    Other


    Last n rows (default 5)

    -
    (tc/tail DS)
    +
    (tc/tail DS)

    _unnamed [5 4]:

    @@ -8229,7 +8241,7 @@

    Other

    :desc? options (default: true) sorts input with descending order, giving top values under 0 value.

    rank is zero based and is defined at tablecloth.api.utils namespace.


    -
    (tc/by-rank DS :V3 zero?) ;; most V3 values
    +
    (tc/by-rank DS :V3 zero?) ;; most V3 values

    _unnamed [3 4]:

    @@ -8261,7 +8273,7 @@

    Other

    -
    (tc/by-rank DS :V3 zero? {:desc? false}) ;; least V3 values
    +
    (tc/by-rank DS :V3 zero? {:desc? false}) ;; least V3 values

    _unnamed [3 4]:

    @@ -8295,7 +8307,7 @@

    Other


    Rank also works on multiple columns

    -
    (tc/by-rank DS [:V1 :V3] zero? {:desc? false})
    +
    (tc/by-rank DS [:V1 :V3] zero? {:desc? false})

    _unnamed [2 4]:

    @@ -8323,10 +8335,10 @@

    Other


    Select 5 random rows from each group

    -
    (-> DS
    -    (tc/group-by :V4)
    -    (tc/random 5)
    -    (tc/ungroup))
    +
    (-> DS
    +    (tc/group-by :V4)
    +    (tc/random 5)
    +    (tc/ungroup))

    _unnamed [15 4]:

    @@ -8340,55 +8352,55 @@

    Other

    - + - - + + - - + + - + - + - - + + - + - - + + - - + + @@ -8400,7 +8412,7 @@

    Other

    - + @@ -8411,8 +8423,8 @@

    Other

    - - + + @@ -8441,7 +8453,7 @@

    Aggregate

    By default resulting column names are prefixed with summary prefix (set it with :default-column-name-prefix option).


    Let’s calculate mean of some columns

    -
    (tc/aggregate DS #(reduce + (% :V2)))
    +
    (tc/aggregate DS #(reduce + (% :V2)))

    _unnamed [1 1]:

    117 0.5 A
    1124 0.5 A
    1124 0.5 A
    171 0.5 A
    117 0.5 A
    1528 1.0 B
    282 1.0 B
    1528 1.0 B
    1528 1.0 B
    193 1.5 C
    C
    1926 1.5 C
    @@ -8457,7 +8469,7 @@

    Aggregate


    Let’s give resulting column a name.

    -
    (tc/aggregate DS {:sum-of-V2 #(reduce + (% :V2))})
    +
    (tc/aggregate DS {:sum-of-V2 #(reduce + (% :V2))})

    _unnamed [1 1]:

    @@ -8473,7 +8485,7 @@

    Aggregate


    Sequential result is spread into separate columns

    -
    (tc/aggregate DS #(take 5(% :V2)))
    +
    (tc/aggregate DS #(take 5(% :V2)))

    _unnamed [1 5]:

    @@ -8497,9 +8509,9 @@

    Aggregate


    You can combine all variants and rename default prefix

    -
    (tc/aggregate DS [#(take 3 (% :V2))
    -                   (fn [ds] {:sum-v1 (reduce + (ds :V1))
    -                            :prod-v3 (reduce * (ds :V3))})] {:default-column-name-prefix "V2-value"})
    +
    (tc/aggregate DS [#(take 3 (% :V2))
    +                   (fn [ds] {:sum-v1 (reduce + (ds :V1))
    +                            :prod-v3 (reduce * (ds :V3))})] {:default-column-name-prefix "V2-value"})

    _unnamed [1 5]:

    @@ -8530,11 +8542,11 @@

    Aggregate


    Processing grouped dataset

    -
    (-> DS
    -    (tc/group-by [:V4])
    -    (tc/aggregate [#(take 3 (% :V2))
    -                    (fn [ds] {:sum-v1 (reduce + (ds :V1))
    -                             :prod-v3 (reduce * (ds :V3))})] {:default-column-name-prefix "V2-value"}))
    +
    (-> DS
    +    (tc/group-by [:V4])
    +    (tc/aggregate [#(take 3 (% :V2))
    +                    (fn [ds] {:sum-v1 (reduce + (ds :V1))
    +                             :prod-v3 (reduce * (ds :V3))})] {:default-column-name-prefix "V2-value"}))

    _unnamed [3 6]:

    @@ -8583,12 +8595,12 @@

    Aggregate

    Result of aggregating is automatically ungrouped, you can skip this step by stetting :ungroup option to false.

    -
    (-> DS
    -    (tc/group-by [:V3])
    -    (tc/aggregate [#(take 3 (% :V2))
    -                    (fn [ds] {:sum-v1 (reduce + (ds :V1))
    -                             :prod-v3 (reduce * (ds :V3))})] {:default-column-name-prefix "V2-value"
    -                                                              :ungroup? false}))
    +
    (-> DS
    +    (tc/group-by [:V3])
    +    (tc/aggregate [#(take 3 (% :V2))
    +                    (fn [ds] {:sum-v1 (reduce + (ds :V1))
    +                             :prod-v3 (reduce * (ds :V3))})] {:default-column-name-prefix "V2-value"
    +                                                              :ungroup? false}))

    _unnamed [3 3]:

    @@ -8619,7 +8631,7 @@

    Aggregate

    Column

    You can perform columnar aggreagation also. aggregate-columns selects columns and apply aggregating function (or sequence of functions) for each column separately.

    -
    (tc/aggregate-columns DS [:V1 :V2 :V3] #(reduce + %))
    +
    (tc/aggregate-columns DS [:V1 :V2 :V3] #(reduce + %))

    _unnamed [1 3]:

    @@ -8638,9 +8650,9 @@

    Column


    -
    (tc/aggregate-columns DS [:V1 :V2 :V3] [#(reduce + %)
    -                                         #(reduce max %)
    -                                         #(reduce * %)])
    +
    (tc/aggregate-columns DS [:V1 :V2 :V3] [#(reduce + %)
    +                                         #(reduce max %)
    +                                         #(reduce * %)])

    _unnamed [1 3]:

    @@ -8659,9 +8671,9 @@

    Column


    -
    (-> DS
    -    (tc/group-by [:V4])
    -    (tc/aggregate-columns [:V1 :V2 :V3] #(reduce + %)))
    +
    (-> DS
    +    (tc/group-by [:V4])
    +    (tc/aggregate-columns [:V1 :V2 :V3] #(reduce + %)))

    _unnamed [3 4]:

    @@ -8694,9 +8706,9 @@

    Column

    You can also aggregate whole dataset

    -
    (-> DS
    -    (tc/drop-columns :V4)
    -    (tc/aggregate-columns #(reduce + %)))
    +
    (-> DS
    +    (tc/drop-columns :V4)
    +    (tc/aggregate-columns #(reduce + %)))

    _unnamed [1 3]:

    @@ -8725,11 +8737,11 @@

    Crosstab

  • :replace-missing? - should missing values be replaced (default: true) with :missing-value (default: 0)
  • :pivot? - if false, flat aggregation result is returned (default: false)
  • -
    (def ctds (tc/dataset {:a [:foo :foo :bar :bar :foo :foo]
    -                       :b [:one :one :two :one :two :one]
    -                       :c [:dull :dull :shiny :dull :dull :shiny]}))
    +
    (def ctds (tc/dataset {:a [:foo :foo :bar :bar :foo :foo]
    +                       :b [:one :one :two :one :two :one]
    +                       :c [:dull :dull :shiny :dull :dull :shiny]}))

    #’user/ctds

    -
    ctds
    +
    ctds
    _unnamed [6 3]:
     
     |   :a |   :b |     :c |
    @@ -8741,7 +8753,7 @@ 

    Crosstab

    | :foo | :two | :dull | | :foo | :one | :shiny |

    -
    (tc/crosstab ctds :a [:b :c])
    +
    (tc/crosstab ctds :a [:b :c])

    _unnamed [2 5]:

    @@ -8772,7 +8784,7 @@

    Crosstab


    With marginals

    -
    (tc/crosstab ctds :a [:b :c] {:marginal-rows true :marginal-cols true})
    +
    (tc/crosstab ctds :a [:b :c] {:marginal-rows true :marginal-cols true})

    _unnamed [3 6]:

    @@ -8814,7 +8826,7 @@

    Crosstab


    Set missing value to -1

    -
    (tc/crosstab ctds :a [:b :c] {:missing-value -1})
    +
    (tc/crosstab ctds :a [:b :c] {:missing-value -1})

    _unnamed [2 5]:

    @@ -8845,7 +8857,7 @@

    Crosstab


    Turn off pivoting

    -
    (tc/crosstab ctds :a [:b :c] {:pivot? false})
    +
    (tc/crosstab ctds :a [:b :c] {:pivot? false})

    _unnamed [5 3]:

    @@ -8896,7 +8908,7 @@

    Order

    :select-keys limits row map provided to ordering functions.


    Order by single column, ascending

    -
    (tc/order-by DS :V1)
    +
    (tc/order-by DS :V1)

    _unnamed [9 4]:

    @@ -8966,7 +8978,7 @@

    Order


    Descending order

    -
    (tc/order-by DS :V1 :desc)
    +
    (tc/order-by DS :V1 :desc)

    _unnamed [9 4]:

    @@ -9036,7 +9048,7 @@

    Order


    Order by two columns

    -
    (tc/order-by DS [:V1 :V2])
    +
    (tc/order-by DS [:V1 :V2])

    _unnamed [9 4]:

    @@ -9106,7 +9118,7 @@

    Order


    Use different orders for columns

    -
    (tc/order-by DS [:V1 :V2] [:asc :desc])
    +
    (tc/order-by DS [:V1 :V2] [:asc :desc])

    _unnamed [9 4]:

    @@ -9174,7 +9186,7 @@

    Order

    -
    (tc/order-by DS [:V1 :V2] [:desc :desc])
    +
    (tc/order-by DS [:V1 :V2] [:desc :desc])

    _unnamed [9 4]:

    @@ -9242,7 +9254,7 @@

    Order

    -
    (tc/order-by DS [:V1 :V3] [:desc :asc])
    +
    (tc/order-by DS [:V1 :V3] [:desc :asc])

    _unnamed [9 4]:

    @@ -9312,9 +9324,9 @@

    Order


    Custom function can be used to provided ordering key. Here order by :V4 descending, then by product of other columns ascending.

    -
    (tc/order-by DS [:V4 (fn [row] (* (:V1 row)
    -                                  (:V2 row)
    -                                  (:V3 row)))] [:desc :asc])
    +
    (tc/order-by DS [:V4 (fn [row] (* (:V1 row)
    +                                  (:V2 row)
    +                                  (:V3 row)))] [:desc :asc])

    _unnamed [9 4]:

    @@ -9384,19 +9396,19 @@

    Order


    Custom comparator also can be used in case objects are not comparable by default. Let’s define artificial one: if Euclidean distance is lower than 2, compare along z else along x and y. We use first three columns for that.

    -
    (defn dist
    -  [v1 v2]
    -  (->> v2
    -       (map - v1)
    -       (map #(* % %))
    -       (reduce +)
    -       (Math/sqrt)))
    +
    (defn dist
    +  [v1 v2]
    +  (->> v2
    +       (map - v1)
    +       (map #(* % %))
    +       (reduce +)
    +       (Math/sqrt)))
    #'user/dist
    -
    (tc/order-by DS [:V1 :V2 :V3] (fn [[x1 y1 z1 :as v1] [x2 y2 z2 :as v2]]
    -                                (let [d (dist v1 v2)]
    -                                  (if (< d 2.0)
    -                                    (compare z1 z2)
    -                                    (compare [x1 y1] [x2 y2])))))
    +
    (tc/order-by DS [:V1 :V2 :V3] (fn [[x1 y1 z1 :as v1] [x2 y2 z2 :as v2]]
    +                                (let [d (dist v1 v2)]
    +                                  (if (< d 2.0)
    +                                    (compare z1 z2)
    +                                    (compare [x1 y1] [x2 y2])))))

    _unnamed [9 4]:

    @@ -9471,7 +9483,7 @@

    Unique

    unique-by works on groups


    Remove duplicates from whole dataset

    -
    (tc/unique-by DS)
    +
    (tc/unique-by DS)

    _unnamed [9 4]:

    @@ -9541,7 +9553,7 @@

    Unique


    Remove duplicates from each group selected by column.

    -
    (tc/unique-by DS :V1)
    +
    (tc/unique-by DS :V1)

    _unnamed [2 4]:

    @@ -9569,7 +9581,7 @@

    Unique


    Pair of columns

    -
    (tc/unique-by DS [:V1 :V3])
    +
    (tc/unique-by DS [:V1 :V3])

    _unnamed [6 4]:

    @@ -9621,7 +9633,7 @@

    Unique


    Also function can be used, split dataset by modulo 3 on columns :V2

    -
    (tc/unique-by DS (fn [m] (mod (:V2 m) 3)))
    +
    (tc/unique-by DS (fn [m] (mod (:V2 m) 3)))

    _unnamed [3 4]:

    @@ -9655,10 +9667,10 @@

    Unique


    The same can be achived with group-by

    -
    (-> DS
    -    (tc/group-by (fn [m] (mod (:V2 m) 3)))
    -    (tc/first)
    -    (tc/ungroup))
    +
    (-> DS
    +    (tc/group-by (fn [m] (mod (:V2 m) 3)))
    +    (tc/first)
    +    (tc/ungroup))

    _unnamed [3 4]:

    @@ -9692,10 +9704,10 @@

    Unique


    Grouped dataset

    -
    (-> DS
    -    (tc/group-by :V4)
    -    (tc/unique-by :V1)
    -    (tc/ungroup))
    +
    (-> DS
    +    (tc/group-by :V4)
    +    (tc/unique-by :V1)
    +    (tc/ungroup))

    _unnamed [6 4]:

    @@ -9756,7 +9768,7 @@

    Strategies


    Last

    -
    (tc/unique-by DS :V1 {:strategy :last})
    +
    (tc/unique-by DS :V1 {:strategy :last})

    _unnamed [2 4]:

    @@ -9784,7 +9796,7 @@

    Strategies


    Random

    -
    (tc/unique-by DS :V1 {:strategy :random})
    +
    (tc/unique-by DS :V1 {:strategy :random})

    _unnamed [2 4]:

    @@ -9798,9 +9810,9 @@

    Strategies

    - - - + + + @@ -9812,7 +9824,7 @@

    Strategies

    110.5A31.5C
    2

    Pack columns into vector

    -
    (tc/unique-by DS :V4 {:strategy vec})
    +
    (tc/unique-by DS :V4 {:strategy vec})

    _unnamed [3 3]:

    @@ -9842,7 +9854,7 @@

    Strategies


    Sum columns

    -
    (tc/unique-by DS :V4 {:strategy (partial reduce +)})
    +
    (tc/unique-by DS :V4 {:strategy (partial reduce +)})

    _unnamed [3 3]:

    @@ -9872,7 +9884,7 @@

    Strategies


    Group by function and apply functions

    -
    (tc/unique-by DS (fn [m] (mod (:V2 m) 3)) {:strategy vec})
    +
    (tc/unique-by DS (fn [m] (mod (:V2 m) 3)) {:strategy vec})

    _unnamed [3 4]:

    @@ -9906,10 +9918,10 @@

    Strategies


    Grouped dataset

    -
    (-> DS
    -    (tc/group-by :V1)
    -    (tc/unique-by (fn [m] (mod (:V2 m) 3)) {:strategy vec})
    -    (tc/ungroup {:add-group-as-column :from-V1}))
    +
    (-> DS
    +    (tc/group-by :V1)
    +    (tc/unique-by (fn [m] (mod (:V2 m) 3)) {:strategy vec})
    +    (tc/ungroup {:add-group-as-column :from-V1}))

    _unnamed [6 5]:

    @@ -9973,11 +9985,11 @@

    Missing

    When dataset contains missing values you can select or drop rows with missing values or replace them using some strategy.

    column-selector can be used to limit considered columns

    Let’s define dataset which contains missing values

    -
    (def DSm (tc/dataset {:V1 (take 9 (cycle [1 2 nil]))
    -                      :V2 (range 1 10)
    -                      :V3 (take 9 (cycle [0.5 1.0 nil 1.5]))
    -                      :V4 (take 9 (cycle ["A" "B" "C"]))}))
    -
    DSm
    +
    (def DSm (tc/dataset {:V1 (take 9 (cycle [1 2 nil]))
    +                      :V2 (range 1 10)
    +                      :V3 (take 9 (cycle [0.5 1.0 nil 1.5]))
    +                      :V4 (take 9 (cycle ["A" "B" "C"]))}))
    +
    DSm

    _unnamed [9 4]:

    @@ -10048,7 +10060,7 @@

    Missing

    Select

    Select rows with missing values

    -
    (tc/select-missing DSm)
    +
    (tc/select-missing DSm)

    _unnamed [4 4]:

    @@ -10088,7 +10100,7 @@

    Select


    Select rows with missing values in :V1

    -
    (tc/select-missing DSm :V1)
    +
    (tc/select-missing DSm :V1)

    _unnamed [3 4]:

    @@ -10122,10 +10134,10 @@

    Select


    The same with grouped dataset

    -
    (-> DSm
    -    (tc/group-by :V4)
    -    (tc/select-missing :V3)
    -    (tc/ungroup))
    +
    (-> DSm
    +    (tc/group-by :V4)
    +    (tc/select-missing :V3)
    +    (tc/ungroup))

    _unnamed [2 4]:

    @@ -10155,7 +10167,7 @@

    Select

    Drop

    Drop rows with missing values

    -
    (tc/drop-missing DSm)
    +
    (tc/drop-missing DSm)

    _unnamed [5 4]:

    @@ -10201,7 +10213,7 @@

    Drop


    Drop rows with missing values in :V1

    -
    (tc/drop-missing DSm :V1)
    +
    (tc/drop-missing DSm :V1)

    _unnamed [6 4]:

    @@ -10253,10 +10265,10 @@

    Drop


    The same with grouped dataset

    -
    (-> DSm
    -    (tc/group-by :V4)
    -    (tc/drop-missing :V1)
    -    (tc/ungroup))
    +
    (-> DSm
    +    (tc/group-by :V4)
    +    (tc/drop-missing :V1)
    +    (tc/ungroup))

    _unnamed [6 4]:

    @@ -10314,10 +10326,13 @@

    Replace

  • dataset
  • column selector, default: :all
  • strategy, default: :nearest
  • -
  • value (optional)
  • +
  • value (optional) +
    • single value
    • sequence of values (cycled)
    • function, applied on column(s) with stripped missings
    • +
    • map with [index,value] pairs
    • +
  • Strategies are:

      @@ -10331,9 +10346,9 @@

      Replace

    • :lerp - trying to lineary approximate values, works for numbers and datetime, otherwise applies :nearest. For numbers always results in float datatype.

    Let’s define special dataset here:

    -
    (def DSm2 (tc/dataset {:a [nil nil nil 1.0 2  nil nil nil nil  nil 4   nil  11 nil nil]
    -                       :b [2   2   2 nil nil nil nil nil nil 13   nil   3  4  5 5]}))
    -
    DSm2
    +
    (def DSm2 (tc/dataset {:a [nil nil nil 1.0 2  nil nil nil nil  nil 4   nil  11 nil nil]
    +                       :b [2   2   2 nil nil nil nil nil nil 13   nil   3  4  5 5]}))
    +
    DSm2

    _unnamed [15 2]:

    @@ -10407,7 +10422,7 @@

    Replace


    Replace missing with default strategy for all columns

    -
    (tc/replace-missing DSm2)
    +
    (tc/replace-missing DSm2)

    _unnamed [15 2]:

    @@ -10481,7 +10496,7 @@

    Replace


    Replace missing with single value in whole dataset

    -
    (tc/replace-missing DSm2 :all :value 999)
    +
    (tc/replace-missing DSm2 :all :value 999)

    _unnamed [15 2]:

    @@ -10555,7 +10570,7 @@

    Replace


    Replace missing with single value in :a column

    -
    (tc/replace-missing DSm2 :a :value 999)
    +
    (tc/replace-missing DSm2 :a :value 999)

    _unnamed [15 2]:

    @@ -10629,7 +10644,7 @@

    Replace


    Replace missing with sequence in :a column

    -
    (tc/replace-missing DSm2 :a :value [-999 -998 -997])
    +
    (tc/replace-missing DSm2 :a :value [-999 -998 -997])

    _unnamed [15 2]:

    @@ -10703,7 +10718,7 @@

    Replace


    Replace missing with a function (mean)

    -
    (tc/replace-missing DSm2 :a :value tech.v3.datatype.functional/mean)
    +
    (tc/replace-missing DSm2 :a :value tech.v3.datatype.functional/mean)

    _unnamed [15 2]:

    @@ -10776,8 +10791,8 @@

    Replace


    -

    Using :down strategy, fills gaps with values from above. You can see that if missings are at the beginning, the are filled with first value

    -
    (tc/replace-missing DSm2 [:a :b] :downup)
    +

    Replace missing some missing values with a map

    +
    (tc/replace-missing DSm2 :a :value {0 100 1 -100 14 -1000})

    _unnamed [15 2]:

    @@ -10788,51 +10803,51 @@

    Replace

    - + - + - + - + - + - - + + - - + + - - + + - - + + - + - + - + @@ -10840,18 +10855,18 @@

    Replace

    - + - +
    1.0100.0 2
    1.0-100.0 2
    1.0 2
    1.02
    2.02
    2.02
    2.02
    2.02
    2.02
    2.0 13
    4.013
    4.0 3
    4
    11.0 5
    11.0-1000.0 5

    -

    To fix above issue you can provide value

    -
    (tc/replace-missing DSm2 [:a :b] :down 999)
    +

    Using :down strategy, fills gaps with values from above. You can see that if missings are at the beginning, the are filled with first value

    +
    (tc/replace-missing DSm2 [:a :b] :downup)

    _unnamed [15 2]:

    @@ -10862,15 +10877,15 @@

    Replace

    - + - + - + @@ -10924,229 +10939,8 @@

    Replace

    999.01.0 2
    999.01.0 2
    999.01.0 2

    -

    The same applies for :up strategy which is opposite direction.

    -
    (tc/replace-missing DSm2 [:a :b] :up)
    -

    _unnamed [15 2]:

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    :a:b
    1.02
    1.02
    1.02
    1.013
    2.013
    4.013
    4.013
    4.013
    4.013
    4.013
    4.03
    11.03
    11.04
    5
    5
    -
    -
    (tc/replace-missing DSm2 [:a :b] :updown)
    -

    _unnamed [15 2]:

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    :a:b
    1.02
    1.02
    1.02
    1.013
    2.013
    4.013
    4.013
    4.013
    4.013
    4.013
    4.03
    11.03
    11.04
    11.05
    11.05
    -
    -

    The same applies for :up strategy which is opposite direction.

    -
    (tc/replace-missing DSm2 [:a :b] :midpoint)
    -

    _unnamed [15 2]:

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    :a:b
    1.02.0
    1.02.0
    1.02.0
    1.07.5
    2.07.5
    3.07.5
    3.07.5
    3.07.5
    3.07.5
    3.013.0
    4.08.0
    7.53.0
    11.04.0
    11.05.0
    11.05.0
    -
    -

    We can use a function which is applied after applying :up or :down

    -
    (tc/replace-missing DSm2 [:a :b] :down tech.v3.datatype.functional/mean)
    +

    To fix above issue you can provide value

    +
    (tc/replace-missing DSm2 [:a :b] :down 999)

    _unnamed [15 2]:

    @@ -11157,15 +10951,310 @@

    Replace

    - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    4.5999.0 2
    4.5999.0 2
    4.5999.02
    1.02
    2.02
    2.02
    2.02
    2.02
    2.02
    2.013
    4.013
    4.03
    11.04
    11.05
    11.05
    +
    +

    The same applies for :up strategy which is opposite direction.

    +
    (tc/replace-missing DSm2 [:a :b] :up)
    +

    _unnamed [15 2]:

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    :a:b
    1.02
    1.02
    1.02
    1.013
    2.013
    4.013
    4.013
    4.013
    4.013
    4.013
    4.03
    11.03
    11.04
    5
    5
    +
    +
    (tc/replace-missing DSm2 [:a :b] :updown)
    +

    _unnamed [15 2]:

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    :a:b
    1.02
    1.02
    1.02
    1.013
    2.013
    4.013
    4.013
    4.013
    4.013
    4.013
    4.03
    11.03
    11.04
    11.05
    11.05
    +
    +

    The same applies for :up strategy which is opposite direction.

    +
    (tc/replace-missing DSm2 [:a :b] :midpoint)
    +

    _unnamed [15 2]:

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    :a:b
    1.02.0
    1.02.0
    1.02.0
    1.07.5
    2.07.5
    3.07.5
    3.07.5
    3.07.5
    3.07.5
    3.013.0
    4.08.0
    7.53.0
    11.04.0
    11.05.0
    11.05.0
    +
    +

    We can use a function which is applied after applying :up or :down

    +
    (tc/replace-missing DSm2 [:a :b] :down tech.v3.datatype.functional/mean)
    +

    _unnamed [15 2]:

    + + + + + + + + + + + + + + + + + + @@ -11220,7 +11309,7 @@

    Replace

    :a:b
    4.52
    4.52
    4.5 2

    Lerp tries to apply linear interpolation of the values

    -
    (tc/replace-missing DSm2 [:a :b] :lerp)
    +
    (tc/replace-missing DSm2 [:a :b] :lerp)

    _unnamed [15 2]:

    @@ -11294,10 +11383,10 @@

    Replace


    Lerp works also on dates

    -
    (-> (tc/dataset {:dt [(java.time.LocalDateTime/of 2020 1 1 11 22 33)
    -                      nil nil nil nil nil nil nil
    -                      (java.time.LocalDateTime/of 2020 10 1 1 1 1)]})
    -    (tc/replace-missing :lerp))
    +
    (-> (tc/dataset {:dt [(java.time.LocalDateTime/of 2020 1 1 11 22 33)
    +                      nil nil nil nil nil nil nil
    +                      (java.time.LocalDateTime/of 2020 10 1 1 1 1)]})
    +    (tc/replace-missing :lerp))

    _unnamed [9 1]:

    @@ -11347,9 +11436,9 @@

    Inject

  • (optional) missing-value - optional value for replace missing

  • -
    (-> (tc/dataset {:a [1 2 9]
    -                 :b [:a :b :c]})
    -    (tc/fill-range-replace :a 1))
    +
    (-> (tc/dataset {:a [1 2 9]
    +                 :b [:a :b :c]})
    +    (tc/fill-range-replace :a 1))

    _unnamed [9 2]:

    @@ -11424,7 +11513,7 @@

    Join


    Default usage. Create :joined column out of other columns.

    -
    (tc/join-columns DSm :joined [:V1 :V2 :V4])
    +
    (tc/join-columns DSm :joined [:V1 :V2 :V4])

    _unnamed [9 2]:

    @@ -11474,7 +11563,7 @@

    Join


    Without dropping source columns.

    -
    (tc/join-columns DSm :joined [:V1 :V2 :V4] {:drop-columns? false})
    +
    (tc/join-columns DSm :joined [:V1 :V2 :V4] {:drop-columns? false})

    _unnamed [9 5]:

    @@ -11554,7 +11643,7 @@

    Join


    Let’s replace missing value with “NA” string.

    -
    (tc/join-columns DSm :joined [:V1 :V2 :V4] {:missing-subst "NA"})
    +
    (tc/join-columns DSm :joined [:V1 :V2 :V4] {:missing-subst "NA"})

    _unnamed [9 2]:

    @@ -11604,8 +11693,8 @@

    Join


    We can use custom separator.

    -
    (tc/join-columns DSm :joined [:V1 :V2 :V4] {:separator "/"
    -                                            :missing-subst "."})
    +
    (tc/join-columns DSm :joined [:V1 :V2 :V4] {:separator "/"
    +                                            :missing-subst "."})

    _unnamed [9 2]:

    @@ -11655,8 +11744,8 @@

    Join


    Or even sequence of separators.

    -
    (tc/join-columns DSm :joined [:V1 :V2 :V4] {:separator ["-" "/"]
    -                                            :missing-subst "."})
    +
    (tc/join-columns DSm :joined [:V1 :V2 :V4] {:separator ["-" "/"]
    +                                            :missing-subst "."})

    _unnamed [9 2]:

    @@ -11706,7 +11795,7 @@

    Join


    The other types of results, map:

    -
    (tc/join-columns DSm :joined [:V1 :V2 :V4] {:result-type :map})
    +
    (tc/join-columns DSm :joined [:V1 :V2 :V4] {:result-type :map})

    _unnamed [9 2]:

    @@ -11756,7 +11845,7 @@

    Join


    Sequence

    -
    (tc/join-columns DSm :joined [:V1 :V2 :V4] {:result-type :seq})
    +
    (tc/join-columns DSm :joined [:V1 :V2 :V4] {:result-type :seq})

    _unnamed [9 2]:

    @@ -11806,7 +11895,7 @@

    Join


    Custom function, calculate hash

    -
    (tc/join-columns DSm :joined [:V1 :V2 :V4] {:result-type hash})
    +
    (tc/join-columns DSm :joined [:V1 :V2 :V4] {:result-type hash})

    _unnamed [9 2]:

    @@ -11856,10 +11945,10 @@

    Join


    Grouped dataset

    -
    (-> DSm
    -    (tc/group-by :V4)
    -    (tc/join-columns :joined [:V1 :V2 :V4])
    -    (tc/ungroup))
    +
    (-> DSm
    +    (tc/group-by :V4)
    +    (tc/join-columns :joined [:V1 :V2 :V4])
    +    (tc/ungroup))

    _unnamed [9 2]:

    @@ -11911,10 +12000,10 @@

    Join

    Tidyr examples

    source

    -
    (def df (tc/dataset {:x ["a" "a" nil nil]
    -                      :y ["b" nil "b" nil]}))
    +
    (def df (tc/dataset {:x ["a" "a" nil nil]
    +                      :y ["b" nil "b" nil]}))
    #'user/df
    -
    df
    +
    df

    _unnamed [4 2]:

    @@ -11943,9 +12032,9 @@
    Tidyr examples

    -
    (tc/join-columns df "z" [:x :y] {:drop-columns? false
    -                                  :missing-subst "NA"
    -                                  :separator "_"})
    +
    (tc/join-columns df "z" [:x :y] {:drop-columns? false
    +                                  :missing-subst "NA"
    +                                  :separator "_"})

    _unnamed [4 3]:

    @@ -11979,8 +12068,8 @@
    Tidyr examples

    -
    (tc/join-columns df "z" [:x :y] {:drop-columns? false
    -                                  :separator "_"})
    +
    (tc/join-columns df "z" [:x :y] {:drop-columns? false
    +                                  :separator "_"})

    _unnamed [4 3]:

    @@ -12037,9 +12126,9 @@

    Separate

    Custom function (as separator) should return seqence of values for given value or a sequence of map.


    Separate float into integer and factional values

    -
    (tc/separate-column DS :V3 [:int-part :frac-part] (fn [^double v]
    -                                                     [(int (quot v 1.0))
    -                                                      (mod v 1.0)]))
    +
    (tc/separate-column DS :V3 [:int-part :frac-part] (fn [^double v]
    +                                                     [(int (quot v 1.0))
    +                                                      (mod v 1.0)]))

    _unnamed [9 5]:

    @@ -12119,9 +12208,9 @@

    Separate


    Source column can be kept

    -
    (tc/separate-column DS :V3 [:int-part :frac-part] (fn [^double v]
    -                                                     [(int (quot v 1.0))
    -                                                      (mod v 1.0)]) {:drop-column? false})
    +
    (tc/separate-column DS :V3 [:int-part :frac-part] (fn [^double v]
    +                                                     [(int (quot v 1.0))
    +                                                      (mod v 1.0)]) {:drop-column? false})

    _unnamed [9 6]:

    @@ -12211,9 +12300,9 @@

    Separate


    We can treat 0 or 0.0 as missing value

    -
    (tc/separate-column DS :V3 [:int-part :frac-part] (fn [^double v]
    -                                                     [(int (quot v 1.0))
    -                                                      (mod v 1.0)]) {:missing-subst [0 0.0]})
    +
    (tc/separate-column DS :V3 [:int-part :frac-part] (fn [^double v]
    +                                                     [(int (quot v 1.0))
    +                                                      (mod v 1.0)]) {:missing-subst [0 0.0]})

    _unnamed [9 5]:

    @@ -12293,12 +12382,12 @@

    Separate


    Works on grouped dataset

    -
    (-> DS
    -    (tc/group-by :V4)
    -    (tc/separate-column :V3 [:int-part :fract-part] (fn [^double v]
    -                                                       [(int (quot v 1.0))
    -                                                        (mod v 1.0)]))
    -    (tc/ungroup))
    +
    (-> DS
    +    (tc/group-by :V4)
    +    (tc/separate-column :V3 [:int-part :fract-part] (fn [^double v]
    +                                                       [(int (quot v 1.0))
    +                                                        (mod v 1.0)]))
    +    (tc/ungroup))

    _unnamed [9 5]:

    @@ -12378,9 +12467,9 @@

    Separate


    Separate using separator returning sequence of maps.

    -
    (tc/separate-column DS :V3 (fn [^double v]
    -                              {:int-part (int (quot v 1.0))
    -                               :fract-part (mod v 1.0)}))
    +
    (tc/separate-column DS :V3 (fn [^double v]
    +                              {:int-part (int (quot v 1.0))
    +                               :fract-part (mod v 1.0)}))

    _unnamed [9 5]:

    @@ -12459,9 +12548,9 @@

    Separate

    Keeping all columns

    -
    (tc/separate-column DS :V3 nil (fn [^double v]
    -                                  {:int-part (int (quot v 1.0))
    -                                   :fract-part (mod v 1.0)}) {:drop-column? false})
    +
    (tc/separate-column DS :V3 nil (fn [^double v]
    +                                  {:int-part (int (quot v 1.0))
    +                                   :fract-part (mod v 1.0)}) {:drop-column? false})

    _unnamed [9 6]:

    @@ -12550,9 +12639,9 @@

    Separate

    Droping all colums but separated

    -
    (tc/separate-column DS :V3 nil (fn [^double v]
    -                                 {:int-part (int (quot v 1.0))
    -                                  :fract-part (mod v 1.0)}) {:drop-column? :all})
    +
    (tc/separate-column DS :V3 nil (fn [^double v]
    +                                 {:int-part (int (quot v 1.0))
    +                                  :fract-part (mod v 1.0)}) {:drop-column? :all})

    _unnamed [9 2]:

    @@ -12601,8 +12690,8 @@

    Separate

    Infering column names

    -
    (tc/separate-column DS :V3 (fn [^double v]
    -                             [(int (quot v 1.0)) (mod v 1.0)]))
    +
    (tc/separate-column DS :V3 (fn [^double v]
    +                             [(int (quot v 1.0)) (mod v 1.0)]))

    _unnamed [9 5]:

    @@ -12682,9 +12771,9 @@

    Separate


    Join and separate together.

    -
    (-> DSm
    -    (tc/join-columns :joined [:V1 :V2 :V4] {:result-type :map})
    -    (tc/separate-column :joined [:v1 :v2 :v4] (juxt :V1 :V2 :V4)))
    +
    (-> DSm
    +    (tc/join-columns :joined [:V1 :V2 :V4] {:result-type :map})
    +    (tc/separate-column :joined [:v1 :v2 :v4] (juxt :V1 :V2 :V4)))

    _unnamed [9 4]:

    @@ -12752,9 +12841,9 @@

    Separate

    -
    (-> DSm
    -    (tc/join-columns :joined [:V1 :V2 :V4] {:result-type :seq})
    -    (tc/separate-column :joined [:v1 :v2 :v4] identity))
    +
    (-> DSm
    +    (tc/join-columns :joined [:V1 :V2 :V4] {:result-type :seq})
    +    (tc/separate-column :joined [:v1 :v2 :v4] identity))

    _unnamed [9 4]:

    @@ -12825,15 +12914,15 @@

    Separate

    Tidyr examples

    separate source extract source

    -
    (def df-separate (tc/dataset {:x [nil "a.b" "a.d" "b.c"]}))
    -(def df-separate2 (tc/dataset {:x ["a" "a b" nil "a b c"]}))
    -(def df-separate3 (tc/dataset {:x ["a?b" nil "a.b" "b:c"]}))
    -(def df-extract (tc/dataset {:x [nil "a-b" "a-d" "b-c" "d-e"]}))
    +
    (def df-separate (tc/dataset {:x [nil "a.b" "a.d" "b.c"]}))
    +(def df-separate2 (tc/dataset {:x ["a" "a b" nil "a b c"]}))
    +(def df-separate3 (tc/dataset {:x ["a?b" nil "a.b" "b:c"]}))
    +(def df-extract (tc/dataset {:x [nil "a-b" "a-d" "b-c" "d-e"]}))
    #'user/df-separate
     #'user/df-separate2
     #'user/df-separate3
     #'user/df-extract
    -
    df-separate
    +
    df-separate

    _unnamed [4 1]:

    @@ -12856,7 +12945,7 @@
    Tidyr examples
    -
    df-separate2
    +
    df-separate2

    _unnamed [4 1]:

    @@ -12879,7 +12968,7 @@
    Tidyr examples
    -
    df-separate3
    +
    df-separate3

    _unnamed [4 1]:

    @@ -12902,7 +12991,7 @@
    Tidyr examples
    -
    df-extract
    +
    df-extract

    _unnamed [5 1]:

    @@ -12929,7 +13018,7 @@
    Tidyr examples

    -
    (tc/separate-column df-separate :x [:A :B] "\\.")
    +
    (tc/separate-column df-separate :x [:A :B] "\\.")

    _unnamed [4 2]:

    @@ -12959,7 +13048,7 @@
    Tidyr examples

    You can drop columns after separation by setting nil as a name. We need second value here.

    -
    (tc/separate-column df-separate :x [nil :B] "\\.")
    +
    (tc/separate-column df-separate :x [nil :B] "\\.")

    _unnamed [4 1]:

    @@ -12984,7 +13073,7 @@
    Tidyr examples

    Extra data is dropped

    -
    (tc/separate-column df-separate2 :x ["a" "b"] " ")
    +
    (tc/separate-column df-separate2 :x ["a" "b"] " ")

    _unnamed [4 2]:

    @@ -13014,7 +13103,7 @@
    Tidyr examples

    Split with regular expression

    -
    (tc/separate-column df-separate3 :x ["a" "b"] "[?\\.:]")
    +
    (tc/separate-column df-separate3 :x ["a" "b"] "[?\\.:]")

    _unnamed [4 2]:

    @@ -13044,7 +13133,7 @@
    Tidyr examples

    Or just regular expression to extract values

    -
    (tc/separate-column df-separate3 :x ["a" "b"] #"(.).(.)")
    +
    (tc/separate-column df-separate3 :x ["a" "b"] #"(.).(.)")

    _unnamed [4 2]:

    @@ -13074,7 +13163,7 @@
    Tidyr examples

    Extract first value only

    -
    (tc/separate-column df-extract :x ["A"] "-")
    +
    (tc/separate-column df-extract :x ["A"] "-")

    _unnamed [5 1]:

    @@ -13102,7 +13191,7 @@
    Tidyr examples

    Split with regex

    -
    (tc/separate-column df-extract :x ["A" "B"] #"(\p{Alnum})-(\p{Alnum})")
    +
    (tc/separate-column df-extract :x ["A" "B"] #"(\p{Alnum})-(\p{Alnum})")

    _unnamed [5 2]:

    @@ -13136,7 +13225,7 @@
    Tidyr examples

    Only a,b,c,d strings

    -
    (tc/separate-column df-extract :x ["A" "B"] #"([a-d]+)-([a-d]+)")
    +
    (tc/separate-column df-extract :x ["A" "B"] #"([a-d]+)-([a-d]+)")

    _unnamed [5 2]:

    @@ -13173,10 +13262,10 @@
    Tidyr examples

    Array column conversion

    A dataset can have as well columns of type java array. We can convert from normal columns to a single array column and back like this:

    -
    (-> (tc/dataset {:x [(double-array [1 2 3])
    -                     (double-array [4 5 6])]
    -                 :y [:a :b]})
    -    (tc/array-column->columns :x))
    +
    (-> (tc/dataset {:x [(double-array [1 2 3])
    +                     (double-array [4 5 6])]
    +                 :y [:a :b]})
    +    (tc/array-column->columns :x))
    _unnamed [2 4]:
     
     | :y |   0 |   1 |   2 |
    @@ -13184,17 +13273,17 @@ 

    Array column conversion

    | :a | 1.0 | 2.0 | 3.0 | | :b | 4.0 | 5.0 | 6.0 |

    and the other way around:

    -
    (-> (tc/dataset {0 [0.0 1 2]
    -                 1 [3.0 4 5]
    -                 :x [:a :b :c]})
    -    (tc/columns->array-column [0 1] :y))
    +
    (-> (tc/dataset {0 [0.0 1 2]
    +                 1 [3.0 4 5]
    +                 :x [:a :b :c]})
    +    (tc/columns->array-column [0 1] :y))
    _unnamed [3 2]:
     
     | :x |          :y |
     |----|-------------|
    -| :a | [D@33227c31 |
    -| :b | [D@25349736 |
    -| :c | [D@76b896de |
    +| :a | [D@22382f2 | +| :b | [D@3793a2c0 | +| :c | [D@41e09a22 |
    @@ -13204,7 +13293,7 @@

    Fold/Unroll Rows

    Fold-by

    Group-by and pack columns into vector

    -
    (tc/fold-by DS [:V3 :V4 :V1])
    +
    (tc/fold-by DS [:V3 :V4 :V1])

    _unnamed [6 4]:

    @@ -13256,7 +13345,7 @@

    Fold-by


    You can pack several columns at once.

    -
    (tc/fold-by DS [:V4])
    +
    (tc/fold-by DS [:V4])

    _unnamed [3 4]:

    @@ -13290,7 +13379,7 @@

    Fold-by


    You can use custom packing function

    -
    (tc/fold-by DS [:V4] seq)
    +
    (tc/fold-by DS [:V4] seq)

    _unnamed [3 4]:

    @@ -13323,7 +13412,7 @@

    Fold-by

    or

    -
    (tc/fold-by DS [:V4] set)
    +
    (tc/fold-by DS [:V4] set)

    _unnamed [3 4]:

    @@ -13357,10 +13446,10 @@

    Fold-by


    This works also on grouped dataset

    -
    (-> DS
    -    (tc/group-by :V1)
    -    (tc/fold-by :V4)
    -    (tc/ungroup))
    +
    (-> DS
    +    (tc/group-by :V1)
    +    (tc/fold-by :V4)
    +    (tc/ungroup))

    _unnamed [6 4]:

    @@ -13421,7 +13510,7 @@

    Unroll


    Unroll one column

    -
    (tc/unroll (tc/fold-by DS [:V4]) [:V1])
    +
    (tc/unroll (tc/fold-by DS [:V4]) [:V1])

    _unnamed [9 4]:

    @@ -13491,7 +13580,7 @@

    Unroll


    Unroll all folded columns

    -
    (tc/unroll (tc/fold-by DS [:V4]) [:V1 :V2 :V3])
    +
    (tc/unroll (tc/fold-by DS [:V4]) [:V1 :V2 :V3])

    _unnamed [9 4]:

    @@ -13561,10 +13650,10 @@

    Unroll


    Unroll one by one leads to cartesian product

    -
    (-> DS
    -    (tc/fold-by [:V4 :V1])
    -    (tc/unroll [:V2])
    -    (tc/unroll [:V3]))
    +
    (-> DS
    +    (tc/fold-by [:V4 :V1])
    +    (tc/unroll [:V2])
    +    (tc/unroll [:V3]))

    _unnamed [15 4]:

    @@ -13670,7 +13759,7 @@

    Unroll


    You can add indexes

    -
    (tc/unroll (tc/fold-by DS [:V1]) [:V4 :V2 :V3] {:indexes? true})
    +
    (tc/unroll (tc/fold-by DS [:V1]) [:V4 :V2 :V3] {:indexes? true})

    _unnamed [9 5]:

    @@ -13748,7 +13837,7 @@

    Unroll

    -
    (tc/unroll (tc/fold-by DS [:V1]) [:V4 :V2 :V3] {:indexes? "vector idx"})
    +
    (tc/unroll (tc/fold-by DS [:V1]) [:V4 :V2 :V3] {:indexes? "vector idx"})

    _unnamed [9 5]:

    @@ -13828,12 +13917,12 @@

    Unroll


    You can also force datatypes

    -
    (-> DS
    -    (tc/fold-by [:V1])
    -    (tc/unroll [:V4 :V2 :V3] {:datatypes {:V4 :string
    -                                           :V2 :int16
    -                                           :V3 :float32}})
    -    (tc/info :columns))
    +
    (-> DS
    +    (tc/fold-by [:V1])
    +    (tc/unroll [:V4 :V2 :V3] {:datatypes {:V4 :string
    +                                           :V2 :int16
    +                                           :V3 :float32}})
    +    (tc/info :columns))

    _unnamed :column info [4 4]:

    @@ -13873,11 +13962,11 @@

    Unroll


    This works also on grouped dataset

    -
    (-> DS
    -    (tc/group-by :V1)
    -    (tc/fold-by [:V1 :V4])
    -    (tc/unroll :V3 {:indexes? true})
    -    (tc/ungroup))
    +
    (-> DS
    +    (tc/group-by :V1)
    +    (tc/fold-by [:V1 :V4])
    +    (tc/unroll :V3 {:indexes? true})
    +    (tc/ungroup))

    _unnamed [9 5]:

    @@ -13992,8 +14081,8 @@

    Longer


    Create rows from all columns but "religion".

    -
    (def relig-income (tc/dataset "data/relig_income.csv"))
    -
    relig-income
    +
    (def relig-income (tc/dataset "data/relig_income.csv"))
    +
    relig-income

    data/relig_income.csv [18 11]:

    @@ -14261,7 +14350,7 @@

    Longer

    -
    (tc/pivot->longer relig-income (complement #{"religion"}))
    +
    (tc/pivot->longer relig-income (complement #{"religion"}))

    data/relig_income.csv [180 3]:

    @@ -14386,12 +14475,12 @@

    Longer


    Convert only columns starting with "wk" and pack them into :week column, values go to :rank column

    -
    (def bilboard (-> (tc/dataset "data/billboard.csv.gz")
    -                  (tc/drop-columns :type/boolean))) ;; drop some boolean columns, tidyr just skips them
    -
    (->> bilboard
    -     (tc/column-names)
    -     (take 13)
    -     (tc/select-columns bilboard))
    +
    (def bilboard (-> (tc/dataset "data/billboard.csv.gz")
    +                  (tc/drop-columns :type/boolean))) ;; drop some boolean columns, tidyr just skips them
    +
    (->> bilboard
    +     (tc/column-names)
    +     (take 13)
    +     (tc/select-columns bilboard))

    data/billboard.csv.gz [317 13]:

    @@ -14744,8 +14833,8 @@

    Longer

    -
    (tc/pivot->longer bilboard #(clojure.string/starts-with? % "wk") {:target-columns :week
    -                                                                   :value-column-name :rank})
    +
    (tc/pivot->longer bilboard #(clojure.string/starts-with? % "wk") {:target-columns :week
    +                                                                   :value-column-name :rank})

    data/billboard.csv.gz [5307 5]:

    @@ -14916,10 +15005,10 @@

    Longer


    We can create numerical column out of column names

    -
    (tc/pivot->longer bilboard #(clojure.string/starts-with? % "wk") {:target-columns :week
    -                                                                   :value-column-name :rank
    -                                                                   :splitter #"wk(.*)"
    -                                                                   :datatypes {:week :int16}})
    +
    (tc/pivot->longer bilboard #(clojure.string/starts-with? % "wk") {:target-columns :week
    +                                                                   :value-column-name :rank
    +                                                                   :splitter #"wk(.*)"
    +                                                                   :datatypes {:week :int16}})

    data/billboard.csv.gz [5307 5]:

    @@ -15090,11 +15179,11 @@

    Longer


    When column names contain observation data, such column names can be splitted and data can be restored into separate columns.

    -
    (def who (tc/dataset "data/who.csv.gz"))
    -
    (->> who
    -     (tc/column-names)
    -     (take 10)
    -     (tc/select-columns who))
    +
    (def who (tc/dataset "data/who.csv.gz"))
    +
    (->> who
    +     (tc/column-names)
    +     (take 10)
    +     (tc/select-columns who))

    data/who.csv.gz [7240 10]:

    @@ -15390,9 +15479,9 @@

    Longer

    -
    (tc/pivot->longer who #(clojure.string/starts-with? % "new") {:target-columns [:diagnosis :gender :age]
    -                                                               :splitter #"new_?(.*)_(.)(.*)"
    -                                                               :value-column-name :count})
    +
    (tc/pivot->longer who #(clojure.string/starts-with? % "new") {:target-columns [:diagnosis :gender :age]
    +                                                               :splitter #"new_?(.*)_(.)(.*)"
    +                                                               :value-column-name :count})

    data/who.csv.gz [76046 8]:

    @@ -15642,8 +15731,8 @@

    Longer


    When data contains multiple observations per row, we can use splitter and pattern for target columns to create new columns and put values there. In following dataset we have two obseravations dob and gender for two childs. We want to put child infomation into the column and leave dob and gender for values.

    -
    (def family (tc/dataset "data/family.csv"))
    -
    family
    +
    (def family (tc/dataset "data/family.csv"))
    +
    family

    data/family.csv [5 5]:

    @@ -15693,9 +15782,9 @@

    Longer

    -
    (tc/pivot->longer family (complement #{"family"}) {:target-columns [nil :child]
    -                                                    :splitter "_"
    -                                                    :datatypes {"gender" :int16}})
    +
    (tc/pivot->longer family (complement #{"family"}) {:target-columns [nil :child]
    +                                                    :splitter "_"
    +                                                    :datatypes {"gender" :int16}})

    data/family.csv [9 4]:

    @@ -15765,8 +15854,8 @@

    Longer


    Similar here, we have two observations: x and y in four groups.

    -
    (def anscombe (tc/dataset "data/anscombe.csv"))
    -
    anscombe
    +
    (def anscombe (tc/dataset "data/anscombe.csv"))
    +
    anscombe

    data/anscombe.csv [11 8]:

    @@ -15894,8 +15983,8 @@

    Longer

    -
    (tc/pivot->longer anscombe :all {:splitter #"(.)(.)"
    -                                  :target-columns [nil :set]})
    +
    (tc/pivot->longer anscombe :all {:splitter #"(.)(.)"
    +                                  :target-columns [nil :set]})

    data/anscombe.csv [44 3]:

    @@ -16019,14 +16108,14 @@

    Longer


    -
    (def pnl (tc/dataset {:x [1 2 3 4]
    -                       :a [1 1 0 0]
    -                       :b [0 1 1 1]
    -                       :y1 (repeatedly 4 rand)
    -                       :y2 (repeatedly 4 rand)
    -                       :z1 [3 3 3 3]
    -                       :z2 [-2 -2 -2 -2]}))
    -
    pnl
    +
    (def pnl (tc/dataset {:x [1 2 3 4]
    +                       :a [1 1 0 0]
    +                       :b [0 1 1 1]
    +                       :y1 (repeatedly 4 rand)
    +                       :y2 (repeatedly 4 rand)
    +                       :z1 [3 3 3 3]
    +                       :z2 [-2 -2 -2 -2]}))
    +
    pnl

    _unnamed [4 7]:

    @@ -16045,8 +16134,8 @@

    Longer

    - - + + @@ -16054,8 +16143,8 @@

    Longer

    - - + + @@ -16063,8 +16152,8 @@

    Longer

    - - + + @@ -16072,15 +16161,15 @@

    Longer

    - - + +
    1 1 00.385563010.995254170.172073110.45363443 3 -2
    2 1 10.264293640.396360430.340966010.29022308 3 -2
    3 0 10.888660670.014583030.379160570.14057607 3 -2
    4 0 10.927075650.895537510.650780110.84848384 3 -2
    -
    (tc/pivot->longer pnl [:y1 :y2 :z1 :z2] {:target-columns [nil :times]
    -                                          :splitter #":(.)(.)"})
    +
    (tc/pivot->longer pnl [:y1 :y2 :z1 :z2] {:target-columns [nil :times]
    +                                          :splitter #":(.)(.)"})

    _unnamed [8 6]:

    @@ -16099,7 +16188,7 @@

    Longer

    - + @@ -16107,7 +16196,7 @@

    Longer

    - + @@ -16115,7 +16204,7 @@

    Longer

    - + @@ -16123,7 +16212,7 @@

    Longer

    - + @@ -16131,7 +16220,7 @@

    Longer

    - + @@ -16139,7 +16228,7 @@

    Longer

    - + @@ -16147,7 +16236,7 @@

    Longer

    - + @@ -16155,7 +16244,7 @@

    Longer

    - + @@ -16175,8 +16264,8 @@

    Wider

    When value-columns is a sequence, multiple observations as columns are created appending value column names into new columns. Column names are joined using :concat-value-with option. :concat-value-with can be a string or function (default: “-”). Function accepts current column name and value.


    Use station as a name source for columns and seen for values

    -
    (def fish (tc/dataset "data/fish_encounters.csv"))
    -
    fish
    +
    (def fish (tc/dataset "data/fish_encounters.csv"))
    +
    fish

    data/fish_encounters.csv [114 3]:

    1 0 10.385563010.17207311 3
    1 1 10.264293640.34096601 3
    0 1 10.888660670.37916057 3
    0 1 10.927075650.65078011 3
    1 0 20.995254170.45363443 -2
    1 1 20.396360430.29022308 -2
    0 1 20.014583030.14057607 -2
    0 1 20.895537510.84848384 -2
    @@ -16299,7 +16388,7 @@

    Wider

    -
    (tc/pivot->wider fish "station" "seen" {:drop-missing? false})
    +
    (tc/pivot->wider fish "station" "seen" {:drop-missing? false})

    data/fish_encounters.csv [19 12]:

    @@ -16589,8 +16678,8 @@

    Wider


    If selected columns contain multiple values, such values should be folded.

    -
    (def warpbreaks (tc/dataset "data/warpbreaks.csv"))
    -
    warpbreaks
    +
    (def warpbreaks (tc/dataset "data/warpbreaks.csv"))
    +
    warpbreaks

    data/warpbreaks.csv [54 3]:

    @@ -16714,9 +16803,9 @@

    Wider

    Let’s see how many values are for each type of wool and tension groups

    -
    (-> warpbreaks
    -    (tc/group-by ["wool" "tension"])
    -    (tc/aggregate {:n tc/row-count}))
    +
    (-> warpbreaks
    +    (tc/group-by ["wool" "tension"])
    +    (tc/aggregate {:n tc/row-count}))

    _unnamed [6 3]:

    @@ -16759,9 +16848,9 @@

    Wider

    -
    (-> warpbreaks
    -    (tc/reorder-columns ["wool" "tension" "breaks"])
    -    (tc/pivot->wider "wool" "breaks" {:fold-fn vec}))
    +
    (-> warpbreaks
    +    (tc/reorder-columns ["wool" "tension" "breaks"])
    +    (tc/pivot->wider "wool" "breaks" {:fold-fn vec}))

    data/warpbreaks.csv [3 3]:

    @@ -16790,9 +16879,9 @@

    Wider

    We can also calculate mean (aggreate values)

    -
    (-> warpbreaks
    -    (tc/reorder-columns ["wool" "tension" "breaks"])
    -    (tc/pivot->wider "wool" "breaks" {:fold-fn tech.v3.datatype.functional/mean}))
    +
    (-> warpbreaks
    +    (tc/reorder-columns ["wool" "tension" "breaks"])
    +    (tc/pivot->wider "wool" "breaks" {:fold-fn tech.v3.datatype.functional/mean}))

    data/warpbreaks.csv [3 3]:

    @@ -16822,8 +16911,8 @@

    Wider


    Multiple source columns, joined with default separator.

    -
    (def production (tc/dataset "data/production.csv"))
    -
    production
    +
    (def production (tc/dataset "data/production.csv"))
    +
    production

    data/production.csv [45 4]:

    @@ -16969,7 +17058,7 @@

    Wider

    -
    (tc/pivot->wider production ["product" "country"] "production")
    +
    (tc/pivot->wider production ["product" "country"] "production")

    data/production.csv [15 4]:

    @@ -17074,7 +17163,7 @@

    Wider

    Joined with custom function

    -
    (tc/pivot->wider production ["product" "country"] "production" {:concat-columns-with vec})
    +
    (tc/pivot->wider production ["product" "country"] "production" {:concat-columns-with vec})

    data/production.csv [15 4]:

    @@ -17180,8 +17269,8 @@

    Wider


    Multiple value columns

    -
    (def income (tc/dataset "data/us_rent_income.csv"))
    -
    income
    +
    (def income (tc/dataset "data/us_rent_income.csv"))
    +
    income

    data/us_rent_income.csv [104 5]:

    @@ -17350,7 +17439,7 @@

    Wider

    -
    (tc/pivot->wider income "variable" ["estimate" "moe"] {:drop-missing? false})
    +
    (tc/pivot->wider income "variable" ["estimate" "moe"] {:drop-missing? false})

    data/us_rent_income.csv [52 6]:

    @@ -17543,9 +17632,9 @@

    Wider

    Value concatenated by custom function

    -
    (tc/pivot->wider income "variable" ["estimate" "moe"] {:concat-columns-with vec
    -                                                        :concat-value-with vector
    -                                                        :drop-missing? false})
    +
    (tc/pivot->wider income "variable" ["estimate" "moe"] {:concat-columns-with vec
    +                                                        :concat-value-with vector
    +                                                        :drop-missing? false})

    data/us_rent_income.csv [52 6]:

    @@ -17747,8 +17836,8 @@

    Wider


    Reshape contact data

    -
    (def contacts (tc/dataset "data/contacts.csv"))
    -
    contacts
    +
    (def contacts (tc/dataset "data/contacts.csv"))
    +
    contacts

    data/contacts.csv [6 3]:

    @@ -17791,7 +17880,7 @@

    Wider

    -
    (tc/pivot->wider contacts "field" "value" {:drop-missing? false})
    +
    (tc/pivot->wider contacts "field" "value" {:drop-missing? false})

    data/contacts.csv [3 4]:

    @@ -17829,11 +17918,11 @@

    Reshaping

    A couple of tidyr examples of more complex reshaping.


    World bank

    -
    (def world-bank-pop (tc/dataset "data/world_bank_pop.csv.gz"))
    -
    (->> world-bank-pop
    -     (tc/column-names)
    -     (take 8)
    -     (tc/select-columns world-bank-pop))
    +
    (def world-bank-pop (tc/dataset "data/world_bank_pop.csv.gz"))
    +
    (->> world-bank-pop
    +     (tc/column-names)
    +     (take 8)
    +     (tc/select-columns world-bank-pop))

    data/world_bank_pop.csv.gz [1056 8]:

    @@ -18082,10 +18171,10 @@

    Reshaping

    Step 1 - convert years column into values

    -
    (def pop2 (tc/pivot->longer world-bank-pop (map str (range 2000 2018)) {:drop-missing? false
    -                                                                         :target-columns ["year"]
    -                                                                         :value-column-name "value"}))
    -
    pop2
    +
    (def pop2 (tc/pivot->longer world-bank-pop (map str (range 2000 2018)) {:drop-missing? false
    +                                                                         :target-columns ["year"]
    +                                                                         :value-column-name "value"}))
    +
    pop2

    data/world_bank_pop.csv.gz [19008 4]:

    @@ -18232,10 +18321,10 @@

    Reshaping

    Step 2 - separate "indicate" column

    -
    (def pop3 (tc/separate-column pop2
    -                               "indicator" ["area" "variable"]
    -                               #(rest (clojure.string/split % #"\."))))
    -
    pop3
    +
    (def pop3 (tc/separate-column pop2
    +                               "indicator" ["area" "variable"]
    +                               #(rest (clojure.string/split % #"\."))))
    +
    pop3

    data/world_bank_pop.csv.gz [19008 5]:

    @@ -18405,7 +18494,7 @@

    Reshaping

    Step 3 - Make columns based on "variable" values.

    -
    (tc/pivot->wider pop3 "variable" "value" {:drop-missing? false})
    +
    (tc/pivot->wider pop3 "variable" "value" {:drop-missing? false})

    data/world_bank_pop.csv.gz [9504 5]:

    @@ -18577,11 +18666,11 @@

    Reshaping



    Multi-choice

    -
    (def multi (tc/dataset {:id [1 2 3 4]
    -                         :choice1 ["A" "C" "D" "B"]
    -                         :choice2 ["B" "B" nil "D"]
    -                         :choice3 ["C" nil nil nil]}))
    -
    multi
    +
    (def multi (tc/dataset {:id [1 2 3 4]
    +                         :choice1 ["A" "C" "D" "B"]
    +                         :choice2 ["B" "B" nil "D"]
    +                         :choice3 ["C" nil nil nil]}))
    +
    multi

    _unnamed [4 4]:

    @@ -18620,10 +18709,10 @@

    Reshaping

    Step 1 - convert all choices into rows and add artificial column to all values which are not missing.

    -
    (def multi2 (-> multi
    -                (tc/pivot->longer (complement #{:id}))
    -                (tc/add-column :checked true)))
    -
    multi2
    +
    (def multi2 (-> multi
    +                (tc/pivot->longer (complement #{:id}))
    +                (tc/add-column :checked true)))
    +
    multi2

    _unnamed [8 4]:

    @@ -18686,10 +18775,10 @@

    Reshaping

    Step 2 - Convert back to wide form with actual choices as columns

    -
    (-> multi2
    -    (tc/drop-columns :$column)
    -    (tc/pivot->wider :$value :checked {:drop-missing? false})
    -    (tc/order-by :id))
    +
    (-> multi2
    +    (tc/drop-columns :$column)
    +    (tc/pivot->wider :$value :checked {:drop-missing? false})
    +    (tc/order-by :id))

    _unnamed [4 5]:

    @@ -18735,11 +18824,11 @@

    Reshaping



    Construction

    -
    (def construction (tc/dataset "data/construction.csv"))
    -(def construction-unit-map {"1 unit" "1"
    -                            "2 to 4 units" "2-4"
    -                            "5 units or more" "5+"})
    -
    construction
    +
    (def construction (tc/dataset "data/construction.csv"))
    +(def construction-unit-map {"1 unit" "1"
    +                            "2 to 4 units" "2-4"
    +                            "5 units or more" "5+"})
    +
    construction

    data/construction.csv [9 9]:

    @@ -18858,14 +18947,14 @@

    Reshaping

    Conversion 1 - Group two column types

    -
    (-> construction
    -    (tc/pivot->longer #"^[125NWS].*|Midwest" {:target-columns [:units :region]
    -                                               :splitter (fn [col-name]
    -                                                           (if (re-matches #"^[125].*" col-name)
    -                                                             [(construction-unit-map col-name) nil]
    -                                                             [nil col-name]))
    -                                               :value-column-name :n
    -                                               :drop-missing? false}))
    +
    (-> construction
    +    (tc/pivot->longer #"^[125NWS].*|Midwest" {:target-columns [:units :region]
    +                                               :splitter (fn [col-name]
    +                                                           (if (re-matches #"^[125].*" col-name)
    +                                                             [(construction-unit-map col-name) nil]
    +                                                             [nil col-name]))
    +                                               :value-column-name :n
    +                                               :drop-missing? false}))

    data/construction.csv [63 5]:

    @@ -19035,17 +19124,17 @@

    Reshaping

    Conversion 2 - Convert to longer form and back and rename columns

    -
    (-> construction
    -    (tc/pivot->longer #"^[125NWS].*|Midwest" {:target-columns [:units :region]
    -                                               :splitter (fn [col-name]
    -                                                           (if (re-matches #"^[125].*" col-name)
    -                                                             [(construction-unit-map col-name) nil]
    -                                                             [nil col-name]))
    -                                               :value-column-name :n
    -                                               :drop-missing? false})
    -    (tc/pivot->wider [:units :region] :n {:drop-missing? false})
    -    (tc/rename-columns (zipmap (vals construction-unit-map)
    -                                (keys construction-unit-map))))
    +
    (-> construction
    +    (tc/pivot->longer #"^[125NWS].*|Midwest" {:target-columns [:units :region]
    +                                               :splitter (fn [col-name]
    +                                                           (if (re-matches #"^[125].*" col-name)
    +                                                             [(construction-unit-map col-name) nil]
    +                                                             [nil col-name]))
    +                                               :value-column-name :n
    +                                               :drop-missing? false})
    +    (tc/pivot->wider [:units :region] :n {:drop-missing? false})
    +    (tc/rename-columns (zipmap (vals construction-unit-map)
    +                                (keys construction-unit-map))))

    data/construction.csv [9 9]:

    @@ -19165,8 +19254,8 @@

    Reshaping


    Various operations on stocks, examples taken from gather and spread manuals.

    -
    (def stocks-tidyr (tc/dataset "data/stockstidyr.csv"))
    -
    stocks-tidyr
    +
    (def stocks-tidyr (tc/dataset "data/stockstidyr.csv"))
    +
    stocks-tidyr

    data/stockstidyr.csv [10 4]:

    @@ -19241,9 +19330,9 @@

    Reshaping

    Convert to longer form

    -
    (def stocks-long (tc/pivot->longer stocks-tidyr ["X" "Y" "Z"] {:value-column-name :price
    -                                                                :target-columns :stocks}))
    -
    stocks-long
    +
    (def stocks-long (tc/pivot->longer stocks-tidyr ["X" "Y" "Z"] {:value-column-name :price
    +                                                                :target-columns :stocks}))
    +
    stocks-long

    data/stockstidyr.csv [30 3]:

    @@ -19367,7 +19456,7 @@

    Reshaping

    Convert back to wide form

    -
    (tc/pivot->wider stocks-long :stocks :price)
    +
    (tc/pivot->wider stocks-long :stocks :price)

    data/stockstidyr.csv [10 4]:

    @@ -19442,9 +19531,9 @@

    Reshaping

    Convert to wide form on time column (let’s limit values to a couple of rows)

    -
    (-> stocks-long
    -    (tc/select-rows (range 0 30 4))
    -    (tc/pivot->wider "time" :price {:drop-missing? false}))
    +
    (-> stocks-long
    +    (tc/select-rows (range 0 30 4))
    +    (tc/pivot->wider "time" :price {:drop-missing? false}))

    data/stockstidyr.csv [3 6]:

    @@ -19492,6 +19581,7 @@

    Join/Concat Datasets

    Joins accept left-side and right-side datasets and columns selector. Options are the same as in tech.ml.dataset functions.

    A column selector can be a map with :left and :right keys to specify column names separate for left and right dataset.

    The difference between tech.ml.dataset join functions are: arguments order (first datasets) and possibility to join on multiple columns.

    +

    Multiple columns joins create temporary index column from column selection. The method for creating index is based on :hashing option and defaults to identity. Prior to 7.000-beta-50 hash function was used, which caused hash collision for certain cases.

    Additionally set operations are defined: intersect and difference.

    To concat two datasets rowwise you can choose:

      @@ -19501,16 +19591,16 @@

      Join/Concat Datasets

    To add two datasets columnwise use bind. The number of rows should be equal.

    Datasets used in examples:

    -
    (def ds1 (tc/dataset {:a [1 2 1 2 3 4 nil nil 4]
    -                       :b (range 101 110)
    -                       :c (map str "abs tract")}))
    -(def ds2 (tc/dataset {:a [nil 1 2 5 4 3 2 1 nil]
    -                      :b (range 110 101 -1)
    -                      :c (map str "datatable")
    -                      :d (symbol "X")
    -                      :e [3 4 5 6 7 nil 8 1 1]}))
    -
    ds1
    -ds2
    +
    (def ds1 (tc/dataset {:a [1 2 1 2 3 4 nil nil 4]
    +                       :b (range 101 110)
    +                       :c (map str "abs tract")}))
    +(def ds2 (tc/dataset {:a [nil 1 2 5 4 3 2 1 nil]
    +                      :b (range 110 101 -1)
    +                      :c (map str "datatable")
    +                      :d (symbol "X")
    +                      :e [3 4 5 6 7 nil 8 1 1]}))
    +
    ds1
    +ds2

    _unnamed [9 3]:

    @@ -19647,7 +19737,7 @@

    Join/Concat Datasets

    Left

    -
    (tc/left-join ds1 ds2 :b)
    +
    (tc/left-join ds1 ds2 :b)

    left-outer-join [9 8]:

    @@ -19756,7 +19846,7 @@

    Left


    -
    (tc/left-join ds2 ds1 :b)
    +
    (tc/left-join ds2 ds1 :b)

    left-outer-join [9 8]:

    @@ -19865,7 +19955,7 @@

    Left


    -
    (tc/left-join ds1 ds2 [:a :b])
    +
    (tc/left-join ds1 ds2 [:a :b])

    left-outer-join [9 8]:

    @@ -19974,7 +20064,7 @@

    Left


    -
    (tc/left-join ds2 ds1 [:a :b])
    +
    (tc/left-join ds2 ds1 [:a :b])

    left-outer-join [9 8]:

    @@ -20083,7 +20173,7 @@

    Left


    -
    (tc/left-join ds1 ds2 {:left :a :right :e})
    +
    (tc/left-join ds1 ds2 {:left :a :right :e})

    left-outer-join [11 8]:

    @@ -20212,7 +20302,7 @@

    Left


    -
    (tc/left-join ds2 ds1 {:left :e :right :a})
    +
    (tc/left-join ds2 ds1 {:left :e :right :a})

    left-outer-join [12 8]:

    @@ -20353,7 +20443,7 @@

    Left

    @@ -20462,7 +20552,7 @@

    Right


    -
    (tc/right-join ds2 ds1 :b)
    +
    (tc/right-join ds2 ds1 :b)

    right-outer-join [9 8]:

    @@ -20571,7 +20661,7 @@

    Right


    -
    (tc/right-join ds1 ds2 [:a :b])
    +
    (tc/right-join ds1 ds2 [:a :b])

    right-outer-join [9 8]:

    @@ -20680,7 +20770,7 @@

    Right


    -
    (tc/right-join ds2 ds1 [:a :b])
    +
    (tc/right-join ds2 ds1 [:a :b])

    right-outer-join [9 8]:

    @@ -20789,7 +20879,7 @@

    Right


    -
    (tc/right-join ds1 ds2 {:left :a :right :e})
    +
    (tc/right-join ds1 ds2 {:left :a :right :e})

    right-outer-join [12 8]:

    @@ -20928,7 +21018,7 @@

    Right


    -
    (tc/right-join ds2 ds1 {:left :e :right :a})
    +
    (tc/right-join ds2 ds1 {:left :e :right :a})

    right-outer-join [11 8]:

    @@ -21059,7 +21149,7 @@

    Right

    Inner

    -
    (tc/inner-join ds1 ds2 :b)
    +
    (tc/inner-join ds1 ds2 :b)

    inner-join [8 7]:

    @@ -21149,7 +21239,7 @@

    Inner


    -
    (tc/inner-join ds2 ds1 :b)
    +
    (tc/inner-join ds2 ds1 :b)

    inner-join [8 7]:

    @@ -21239,7 +21329,7 @@

    Inner


    -
    (tc/inner-join ds1 ds2 [:a :b])
    +
    (tc/inner-join ds1 ds2 [:a :b])

    inner-join [4 8]:

    @@ -21298,7 +21388,7 @@

    Inner


    -
    (tc/inner-join ds2 ds1 [:a :b])
    +
    (tc/inner-join ds2 ds1 [:a :b])

    inner-join [4 8]:

    @@ -21357,7 +21447,7 @@

    Inner


    -
    (tc/inner-join ds1 ds2 {:left :a :right :e})
    +
    (tc/inner-join ds1 ds2 {:left :a :right :e})

    inner-join [7 7]:

    @@ -21438,7 +21528,7 @@

    Inner


    -
    (tc/inner-join ds2 ds1 {:left :e :right :a})
    +
    (tc/inner-join ds2 ds1 {:left :e :right :a})

    inner-join [7 7]:

    @@ -21522,7 +21612,7 @@

    Inner

    Full

    Join keeping all rows

    -
    (tc/full-join ds1 ds2 :b)
    +
    (tc/full-join ds1 ds2 :b)

    full-join [10 8]:

    @@ -21641,7 +21731,7 @@

    Full


    -
    (tc/full-join ds2 ds1 :b)
    +
    (tc/full-join ds2 ds1 :b)

    full-join [10 8]:

    @@ -21760,7 +21850,7 @@

    Full


    -
    (tc/full-join ds1 ds2 [:a :b])
    +
    (tc/full-join ds1 ds2 [:a :b])

    full-join [14 8]:

    @@ -21919,7 +22009,7 @@

    Full


    -
    (tc/full-join ds2 ds1 [:a :b])
    +
    (tc/full-join ds2 ds1 [:a :b])

    full-join [14 8]:

    @@ -22078,7 +22168,7 @@

    Full


    -
    (tc/full-join ds1 ds2 {:left :a :right :e})
    +
    (tc/full-join ds1 ds2 {:left :a :right :e})

    full-join [16 8]:

    @@ -22257,7 +22347,7 @@

    Full


    -
    (tc/full-join ds2 ds1 {:left :e :right :a})
    +
    (tc/full-join ds2 ds1 {:left :e :right :a})

    full-join [16 8]:

    @@ -22439,7 +22529,7 @@

    Full

    Semi

    Return rows from ds1 matching ds2

    -
    (tc/semi-join ds1 ds2 :b)
    +
    (tc/semi-join ds1 ds2 :b)

    semi-join [8 3]:

    @@ -22493,7 +22583,7 @@

    Semi


    -
    (tc/semi-join ds2 ds1 :b)
    +
    (tc/semi-join ds2 ds1 :b)

    semi-join [8 5]:

    @@ -22565,7 +22655,7 @@

    Semi


    -
    (tc/semi-join ds1 ds2 [:a :b])
    +
    (tc/semi-join ds1 ds2 [:a :b])

    semi-join [4 3]:

    @@ -22599,7 +22689,7 @@

    Semi


    -
    (tc/semi-join ds2 ds1 [:a :b])
    +
    (tc/semi-join ds2 ds1 [:a :b])

    semi-join [4 5]:

    @@ -22643,7 +22733,7 @@

    Semi


    -
    (tc/semi-join ds1 ds2 {:left :a :right :e})
    +
    (tc/semi-join ds1 ds2 {:left :a :right :e})

    semi-join [7 3]:

    @@ -22692,7 +22782,7 @@

    Semi


    -
    (tc/semi-join ds2 ds1 {:left :e :right :a})
    +
    (tc/semi-join ds2 ds1 {:left :e :right :a})

    semi-join [5 5]:

    @@ -22746,7 +22836,7 @@

    Semi

    Anti

    Return rows from ds1 not matching ds2

    -
    (tc/anti-join ds1 ds2 :b)
    +
    (tc/anti-join ds1 ds2 :b)

    anti-join [1 3]:

    @@ -22765,7 +22855,7 @@

    Anti


    -
    (tc/anti-join ds2 ds1 :b)
    +
    (tc/anti-join ds2 ds1 :b)

    anti-join [1 5]:

    @@ -22788,7 +22878,7 @@

    Anti


    -
    (tc/anti-join ds1 ds2 [:a :b])
    +
    (tc/anti-join ds1 ds2 [:a :b])

    anti-join [5 3]:

    @@ -22827,7 +22917,7 @@

    Anti


    -
    (tc/anti-join ds1 ds2 {:left :a :right :e})
    +
    (tc/anti-join ds1 ds2 {:left :a :right :e})

    anti-join [2 3]:

    @@ -22851,7 +22941,7 @@

    Anti


    -
    (tc/anti-join ds2 ds1 {:left :e :right :a})
    +
    (tc/anti-join ds2 ds1 {:left :e :right :a})

    anti-join [4 5]:

    @@ -22895,10 +22985,193 @@

    Anti

    +
    +

    Hashing

    +

    When :hashing option is used, data from join columns are preprocessed by applying join-columns funtion with :result-type set to the value of :hashing. This helps to create custom joining behaviour. Function used for hashing will get vector of row values from join columns.

    +

    In the following example we will join columns on value modulo 5.

    +
    (tc/left-join ds1 ds2 :b {:hashing (fn [[v]] (mod v 5))})
    +

    left-outer-join [16 8]:

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    :a:b:c:right.a:right.b:right.c:d:e
    3105t110dX3
    21041109aX4
    4109t1109aX4
    1103s2108tX5
    108c2108tX5
    2102b5107aX6
    107a5107aX6
    1101a4106tX7
    4106r4106tX7
    3105t3105aX
    21042104bX8
    4109t2104bX8
    1103s1103lX1
    108c1103lX1
    2102b102eX1
    107a102eX1
    +

    Cross

    Cross product from selected columns

    -
    (tc/cross-join ds1 ds2 [:a :b])
    +
    (tc/cross-join ds1 ds2 [:a :b])

    cross-join [81 4]:

    @@ -23045,7 +23318,7 @@

    Cross


    -
    (tc/cross-join ds1 ds2 {:left [:a :b] :right :e})
    +
    (tc/cross-join ds1 ds2 {:left [:a :b] :right :e})

    cross-join [81 3]:

    @@ -23172,7 +23445,7 @@

    Cross

    Expand

    Similar to cross product but works on a single dataset.

    -
    (tc/expand ds2 :a :c :d)
    +
    (tc/expand ds2 :a :c :d)

    cross-join [36 3]:

    @@ -23297,7 +23570,7 @@

    Expand


    Columns can be also bundled (nested) in tuples which are treated as a single entity during cross product.

    -
    (tc/expand ds2 [:a :c] [:e :b])
    +
    (tc/expand ds2 [:a :c] [:e :b])

    cross-join [81 4]:

    @@ -23447,7 +23720,7 @@

    Expand

    Complete

    Same as expand with all other columns preserved (filled with missing values if necessary).

    -
    (tc/complete ds2 :a :c :d)
    +
    (tc/complete ds2 :a :c :d)

    left-outer-join [36 5]:

    @@ -23617,7 +23890,7 @@

    Complete


    -
    (tc/complete ds2 [:a :c] [:e :b])
    +
    (tc/complete ds2 [:a :c] [:e :b])

    left-outer-join [81 5]:

    @@ -23789,12 +24062,12 @@

    Complete

    asof

    -
    (def left-ds (tc/dataset {:a [1 5 10]
    -                          :left-val ["a" "b" "c"]}))
    -(def right-ds (tc/dataset {:a [1 2 3 6 7]
    -                           :right-val [:a :b :c :d :e]}))
    -
    left-ds
    -right-ds
    +
    (def left-ds (tc/dataset {:a [1 5 10]
    +                          :left-val ["a" "b" "c"]}))
    +(def right-ds (tc/dataset {:a [1 2 3 6 7]
    +                           :right-val [:a :b :c :d :e]}))
    +
    left-ds
    +right-ds

    _unnamed [3 2]:

    @@ -23849,7 +24122,7 @@

    asof

    -
    (tc/asof-join left-ds right-ds :a)
    +
    (tc/asof-join left-ds right-ds :a)

    asof-<= [3 4]:

    @@ -23881,7 +24154,7 @@

    asof

    -
    (tc/asof-join left-ds right-ds :a {:asof-op :nearest})
    +
    (tc/asof-join left-ds right-ds :a {:asof-op :nearest})

    asof-nearest [3 4]:

    @@ -23913,7 +24186,7 @@

    asof

    -
    (tc/asof-join left-ds right-ds :a {:asof-op :>=})
    +
    (tc/asof-join left-ds right-ds :a {:asof-op :>=})

    asof->= [3 4]:

    @@ -23949,7 +24222,7 @@

    asof

    Concat

    contact joins rows from other datasets

    -
    (tc/concat ds1)
    +
    (tc/concat ds1)

    _unnamed [9 3]:

    @@ -24009,7 +24282,7 @@

    Concat


    concat-copying ensures all readers are evaluated.

    -
    (tc/concat-copying ds1)
    +
    (tc/concat-copying ds1)

    _unnamed [9 3]:

    @@ -24068,7 +24341,7 @@

    Concat


    -
    (tc/concat ds1 (tc/drop-columns ds2 :d))
    +
    (tc/concat ds1 (tc/drop-columns ds2 :d))

    _unnamed [18 4]:

    @@ -24191,7 +24464,7 @@

    Concat


    -
    (apply tc/concat (repeatedly 3 #(tc/random DS)))
    +
    (apply tc/concat (repeatedly 3 #(tc/random DS)))

    _unnamed [27 4]:

    @@ -24210,10 +24483,10 @@

    Concat

    - - - - + + + + @@ -24222,22 +24495,10 @@

    Concat

    - - - - - - - - - - - - - - - + + + @@ -24246,28 +24507,16 @@

    Concat

    - - - - - - - - - - - - - + - - - - + + + + @@ -24276,35 +24525,35 @@

    Concat

    - - - - - - - + - - - - - - + + + + + + + + + + + + @@ -24313,35 +24562,59 @@

    Concat

    - - - + + + + + + + + + - + - + - + + + + + + + + + + + + + + + + + + +
    B
    221.0B170.5A
    2 C
    240.5A
    170.5A
    110.5A91.5C
    2 B
    170.5A
    240.5A
    196 1.5 C
    131.5C
    1 C
    240.5A
    1 9 1.5 C
    1 7 0.5 A
    151.0B
    1 3 1.5 C
    170.5A
    2 4
    170.5A51.0B
    281.0B
    2 6 1.5 C
    139 1.5 C
    1 5 1.0 B
    221.0B
    240.5A
    110.5A
    Concat grouped dataset

    Concatenation of grouped datasets results also in grouped dataset.

    -
    (tc/concat (tc/group-by DS [:V3])
    -           (tc/group-by DS [:V4]))
    +
    (tc/concat (tc/group-by DS [:V3])
    +           (tc/group-by DS [:V4]))

    _unnamed [6 3]:

    @@ -24389,7 +24662,7 @@
    Concat grouped dataset

    Union

    The same as concat but returns unique rows

    -
    (apply tc/union (tc/drop-columns ds2 :d) (repeat 10 ds1))
    +
    (apply tc/union (tc/drop-columns ds2 :d) (repeat 10 ds1))

    union [18 4]:

    @@ -24512,7 +24785,7 @@

    Union


    -
    (apply tc/union (repeatedly 10 #(tc/random DS)))
    +
    (apply tc/union (repeatedly 10 #(tc/random DS)))

    union [9 4]:

    @@ -24525,22 +24798,22 @@

    Union

    - - + + - - + + - - - + + + @@ -24550,15 +24823,15 @@

    Union

    - - - + + + - - - + + + @@ -24568,15 +24841,15 @@

    Union

    - - - + + + - - - + + +
    1724 0.5 A
    2417 0.5 A
    131.5C51.0B
    1
    110.5A31.5C
    221.0B61.5C
    2
    151.0B10.5A
    261.5C21.0B
    @@ -24584,7 +24857,7 @@

    Union

    Bind

    bind adds empty columns during concat

    -
    (tc/bind ds1 ds2)
    +
    (tc/bind ds1 ds2)

    _unnamed [18 5]:

    @@ -24726,7 +24999,7 @@

    Bind


    -
    (tc/bind ds2 ds1)
    +
    (tc/bind ds2 ds1)

    _unnamed [18 5]:

    @@ -24871,7 +25144,7 @@

    Bind

    Append

    append concats columns

    -
    (tc/append ds1 ds2)
    +
    (tc/append ds1 ds2)

    _unnamed [9 8]:

    @@ -24982,8 +25255,8 @@

    Append

    Intersection

    -
    (tc/intersect (tc/select-columns ds1 :b)
    -              (tc/select-columns ds2 :b))
    +
    (tc/intersect (tc/select-columns ds1 :b)
    +              (tc/select-columns ds2 :b))

    intersection [8 1]:

    @@ -25021,8 +25294,8 @@

    Intersection

    Difference

    -
    (tc/difference (tc/select-columns ds1 :b)
    -               (tc/select-columns ds2 :b))
    +
    (tc/difference (tc/select-columns ds1 :b)
    +               (tc/select-columns ds2 :b))

    difference [1 1]:

    @@ -25037,8 +25310,8 @@

    Difference


    -
    (tc/difference (tc/select-columns ds2 :b)
    -               (tc/select-columns ds1 :b))
    +
    (tc/difference (tc/select-columns ds2 :b)
    +               (tc/select-columns ds1 :b))

    difference [1 1]:

    @@ -25082,11 +25355,11 @@

    Split into train/test

    In case of grouped dataset each group is processed separately.

    See more

    -
    (def for-splitting (tc/dataset (map-indexed (fn [id v] {:id id
    -                                                        :partition v
    -                                                        :group (rand-nth [:g1 :g2 :g3])})
    -                                            (concat (repeat 20 :a) (repeat 5 :b)))))
    -
    for-splitting
    +
    (def for-splitting (tc/dataset (map-indexed (fn [id v] {:id id
    +                                                        :partition v
    +                                                        :group (rand-nth [:g1 :g2 :g3])})
    +                                            (concat (repeat 20 :a) (repeat 5 :b)))))
    +
    for-splitting

    _unnamed [25 3]:

    @@ -25100,7 +25373,7 @@

    Split into train/test

    - + @@ -25110,12 +25383,12 @@

    Split into train/test

    - + - + @@ -25125,7 +25398,7 @@

    Split into train/test

    - + @@ -25135,7 +25408,7 @@

    Split into train/test

    - + @@ -25145,7 +25418,7 @@

    Split into train/test

    - + @@ -25160,22 +25433,22 @@

    Split into train/test

    - + - + - + - + @@ -25185,36 +25458,36 @@

    Split into train/test

    - + - + - + - + - +
    0 :a:g2:g3
    1
    2 :a:g3:g2
    3 :a:g3:g2
    4
    5 :a:g3:g1
    6
    7 :a:g3:g1
    8
    9 :a:g3:g2
    15 :a:g3:g1
    16 :a:g2:g1
    17 :a:g2:g3
    18 :a:g2:g3
    19
    20 :b:g1:g3
    21 :b:g1:g2
    22 :b:g2:g1
    23 :b:g2:g1
    24 :b:g1:g3

    k-Fold

    Returns k=5 maps

    -
    (-> for-splitting
    -    (tc/split)
    -    (tc/head 30))
    +
    (-> for-splitting
    +    (tc/split)
    +    (tc/head 30))

    _unnamed, (splitted) [30 5]:

    @@ -25228,170 +25501,170 @@

    k-Fold

    - + - + - - + + - - - + + + - - + + - - - + + + - + - + - - - + + + - - - + + + - + - + - + - + - + - + - + - + - + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - - - + + + @@ -25403,30 +25676,30 @@

    k-Fold

    - + - + - + - + - + - + - - - + + + @@ -25440,9 +25713,9 @@

    k-Fold

    140 :a:g2:g3 :train 0
    24:b15:a :g1 :train 0
    23:b:g212:a:g1 :train 0
    10:a24:b :g3 :train 0
    13:a:g322:b:g1 :train 0
    193 :a:g1:g2 :train 0
    22:b:g27:a:g1 :train 0
    5:a:g323:b:g1 :train 0
    21 :b:g1:g2 :train 0
    164 :a :g2 :train 0
    710 :a :g3 :train 0
    171 :a:g2:g1 :train 0
    417 :a:g2:g3 :train 0
    1116 :a :g1 :train 0
    118 :a:g1:g3 :train 0
    15:a20:b :g3 :train 0
    182 :a :g2 :train 0
    811 :a:g1:g2 :train 0
    128 :a :g1 :train 0
    95 :a:g3:g1 :train 0
    29 :a:g3:g2 :test 0
    313 :a:g3:g1 :test 0
    019 :a:g2:g1 :test 0
    20:b:g114:a:g2 :test 0
    0
    29 :a:g3:g2 :train 1
    313 :a:g3:g1 :train 1
    019 :a:g2:g1 :train 1
    20:b:g114:a:g2 :train 1

    Partition according to :k column to reflect it’s distribution

    -
    (-> for-splitting
    -    (tc/split :kfold {:partition-selector :partition})
    -    (tc/head 30))
    +
    (-> for-splitting
    +    (tc/split :kfold {:partition-selector :partition})
    +    (tc/head 30))

    _unnamed, (splitted) [30 5]:

    @@ -25456,49 +25729,35 @@

    k-Fold

    - - - - - - - - + - - - - - - - - + - + - + - + - + - + @@ -25512,77 +25771,77 @@

    k-Fold

    - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -25596,21 +25855,21 @@

    k-Fold

    - + - - + + - + - - - + + + - + @@ -25624,21 +25883,21 @@

    k-Fold

    - + - + - + - + - + @@ -25652,16 +25911,30 @@

    k-Fold

    - + + + + + + + + + + + + + + + - + - + @@ -25670,8 +25943,8 @@

    k-Fold

    Bootstrap

    -
    (tc/split for-splitting :bootstrap)
    -

    _unnamed, (splitted) [33 5]:

    +
    (tc/split for-splitting :bootstrap)
    +

    _unnamed, (splitted) [34 5]:

    13:a:g3:train0
    1811 :a :g2 :train 0
    3:a:g3:train0
    73 :a:g3:g2 :train 0
    1614 :a :g2 :train 0
    015 :a:g2:g1 :train 0
    812 :a :g1 :train 0
    1918 :a:g1:g3 :train 0
    175 :a:g2:g1 :train 0
    90 :a :g3 :train 0
    1513 :a:g3:g1 :train 0
    104 :a:g3:g2 :train 0
    42 :a :g2 :train 0
    149 :a :g2 :train 0
    516 :a:g3:g1 :train 0
    1219 :a :g1:test:train 0
    118 :a :g1:test:train 0
    210 :a :g3 :test 0
    127 :a :g1:train1:test0
    1117 :a:g1:train1:g3:test0
    210 :a :g3 :train 1
    167 :a:g2:g1 :train 1
    017 :a:g2:g3 :train 1
    812 :a :g1 :train 1
    1918:a:g3:train1
    5 :a :g1 :train 1
    0:a:g3:train1
    1713 :a:g2:g1 :train 1
    @@ -25684,72 +25957,72 @@

    Bootstrap

    - + - + - + - + - - - + + + - - + + - + - + - + - + - + - + - - - + + + - + - + @@ -25761,71 +26034,71 @@

    Bootstrap

    - - + + - - - + + + - + - + - + - + - + - + - + - + - + - + - - + + - - + + @@ -25833,24 +26106,24 @@

    Bootstrap

    - +
    53 :a:g3:g2 :train 0
    13 :a:g1:g2 :train 0
    4:a:g220:b:g3 :train 0
    21:b15:a :g1 :train 0
    41 :a:g2:g1 :train 0
    1310 :a :g3 :train 0
    164 :a :g2 :train 0
    514 :a:g3:g2 :train 0
    15:a:g323:b:g1 :train 0
    519 :a:g3:g1 :train 0
    23:b4:a :g2 :train 0
    21:b:g111:a:g2 :train 0
    26 :a :g3:train:test 0
    37 :a:g3:g1 :test 0
    812 :a :g1 :test 0
    913 :a:g3:g1 :test 0
    1017 :a :g3 :test 0
    1118 :a:g1:g3 :test 0
    17:a21:b :g2 :test 0
    19:a22:b :g1 :test 0
    24 :b:g1:g3 :test 0

    with repeats, to get 100 splits

    -
    (-> for-splitting
    -    (tc/split :bootstrap {:repeats 100})
    -    (:$split-id)
    -    (distinct)
    -    (count))
    +
    (-> for-splitting
    +    (tc/split :bootstrap {:repeats 100})
    +    (:$split-id)
    +    (distinct)
    +    (count))

    100

    Holdout

    with small ratio

    -
    (tc/split for-splitting :holdout {:ratio 0.2})
    +
    (tc/split for-splitting :holdout {:ratio 0.2})

    _unnamed, (splitted) [25 5]:

    @@ -25864,71 +26137,71 @@

    Holdout

    - + - + - + - + - - - + + + - + - + - + - + - + - + - - + + - + - - + + @@ -25941,86 +26214,86 @@

    Holdout

    - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - +
    89 :a:g1:g2 :train 0
    319 :a:g3:g1 :train 0
    22:b:g212:a:g1 :train 0
    1314 :a:g3:g2 :train 0
    518 :a :g3 :train 0
    68 :a:g3:g1 :test 0
    2023 :b :g1 :test 0
    24:b7:a :g1 :test 0
    1213 :a :g1 :test 0
    10:a24:b :g3 :test 0
    9:a20:b :g3 :test 0
    176 :a:g2:g3 :test 0
    2322 :b:g2:g1 :test 0
    1617 :a:g2:g3 :test 0
    21 :b:g1:g2 :test 0
    180 :a:g2:g3 :test 0
    25 :a:g3:g1 :test 0
    1911 :a:g1:g2 :test 0
    01 :a:g2:g1 :test 0
    73 :a:g3:g2 :test 0
    15 :a:g3:g1 :test 0

    you can split to more than two subdatasets with holdout

    -
    (tc/split for-splitting :holdout {:ratio [0.1 0.2 0.3 0.15 0.25]})
    +
    (tc/split for-splitting :holdout {:ratio [0.1 0.2 0.3 0.15 0.25]})

    _unnamed, (splitted) [25 5]:

    @@ -26034,70 +26307,70 @@

    Holdout

    - - - + + + - + - + - - - + + + - + - - - + + + - - + + - - - + + + - + - + - + @@ -26111,78 +26384,78 @@

    Holdout

    - + - + - + - + - + - + - + - + - + - + - + - + - - - + + + - + - + - - + + - - + + @@ -26190,8 +26463,8 @@

    Holdout

    24:b:g117:a:g3 :train 0
    1510 :a :g3 :train 0
    02 :a :g2 :test 0
    20:b:g19:a:g2 :test 0
    20 :a :g3 :test 0
    7:a:g323:b:g1 :test 0
    23:b4:a :g2 :test 0
    11:a:g121:b:g2 :split-2 0
    512 :a:g3:g1 :split-2 0
    36 :a :g3 :split-2
    416 :a:g2:g1 :split-3 0
    914 :a:g3:g2 :split-3 0
    1318 :a :g3 :split-3 0
    1615 :a:g2:g1 :split-4 0
    1419 :a:g2:g1 :split-4 0
    1813 :a:g2:g1 :split-4 0
    191 :a :g1 :split-4 0
    21:b:g13:a:g2 :split-4 0
    1211 :a:g1:g2 :split-4 0
    6:a24:b :g3 :split-4 0
    10:a20:b :g3 :split-4 0

    you can use also proportions with custom names

    -
    (tc/split for-splitting :holdout {:ratio [5 3 11 2]
    -                                  :split-names ["small" "smaller" "big" "the rest"]})
    +
    (tc/split for-splitting :holdout {:ratio [5 3 11 2]
    +                                  :split-names ["small" "smaller" "big" "the rest"]})

    _unnamed, (splitted) [25 5]:

    @@ -26205,71 +26478,71 @@

    Holdout

    - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + @@ -26282,79 +26555,79 @@

    Holdout

    - - - + + + - - - + + + - + - + - + - + - + - + - + - + - + - + - - - + + + - + - + - - - + + + @@ -26364,9 +26637,9 @@

    Holdout

    Holdouts

    With ratios from 5% to 95% of the dataset with step 1.5 generates 15 splits with ascending rows in train dataset.

    -
    (-> (tc/split for-splitting :holdouts {:steps [0.05 0.95 1.5]
    -                                       :shuffle? false})
    -    (tc/group-by [:$split-id :$split-name]))
    +
    (-> (tc/split for-splitting :holdouts {:steps [0.05 0.95 1.5]
    +                                       :shuffle? false})
    +    (tc/group-by [:$split-id :$split-name]))

    _unnamed [30 3]:

    87 :a :g1 small 0
    419 :a:g2:g1 small 0
    181 :a:g2:g1 small 0
    312 :a:g3:g1 small 0
    511 :a:g3:g2 small 0
    1017 :a :g3 smaller 0
    1310 :a :g3 smaller 0
    1413 :a:g2:g1 smaller 0
    616 :a:g3:g1 big 0
    21:b15:a :g1 big 0
    20:b:g13:a:g2 big 0
    24:b:g114:a:g2 big 0
    172 :a :g2 big 0
    198 :a :g1 big 0
    018 :a:g2:g3 big 0
    159 :a:g3:g2 big 0
    116 :a:g1:g3 big 0
    2322 :b:g2:g1 the rest 0
    1:a:g120:b:g3 the rest 0
    24 :a:g3:g2 the rest 0
    16:a:g223:b:g1 the rest 0
    @@ -26497,9 +26770,9 @@

    Holdouts

    Leave One Out

    -
    (-> for-splitting
    -    (tc/split :loo)
    -    (tc/head 30))
    +
    (-> for-splitting
    +    (tc/split :loo)
    +    (tc/head 30))

    _unnamed, (splitted) [30 5]:

    @@ -26513,227 +26786,227 @@

    Leave One Out

    - - - + + + - + - + - + - - + + - - - + + + - - - + + + - + - + - + - + - + - + - + - + - - - + + + - - + + - + - + - + - + - + - + - + - - - + + + - + - + - - + + - - + + - - - + + + - + - + - + - + - + - + - + - + - - + + - - - + + +
    20:b:g117:a:g3 :train 0
    1518 :a :g3 :train 0
    01 :a:g2:g1 :train 0
    12:a22:b :g1 :train 0
    22:b:g27:a:g1 :train 0
    7:a:g323:b:g1 :train 0
    58 :a:g3:g1 :train 0
    1115 :a :g1 :train 0
    1712 :a:g2:g1 :train 0
    813 :a :g1 :train 0
    1914 :a:g1:g2 :train 0
    14:a:g224:b:g3 :train 0
    6:a20:b :g3 :train 0
    14 :a:g1:g2 :train 0
    130 :a :g3 :train 0
    103 :a:g3:g2 :train 0
    26 :a :g3 :train 0
    169 :a :g2 :train 0
    23:b:g216:a:g1 :train 0
    35 :a:g3:g1 :train 0
    21:b19:a :g1 :train 0
    4:a21:b :g2 :train 0
    24:b:g110:a:g3 :train 0
    182 :a :g2 :train 0
    911 :a:g3:g2 :test 0
    911 :a:g3:g2 :train 1
    1518 :a :g3 :train 1
    01 :a:g2:g1 :train 1
    12:a22:b :g1 :train 1
    22:b:g27:a:g1 :train 1
    -
    (-> for-splitting
    -    (tc/split :loo)
    -    (tc/row-count))
    +
    (-> for-splitting
    +    (tc/split :loo)
    +    (tc/row-count))

    625

    Grouped dataset with partitioning

    -
    (-> for-splitting
    -    (tc/group-by :group)
    -    (tc/split :bootstrap {:partition-selector :partition :seed 11 :ratio 0.8}))
    +
    (-> for-splitting
    +    (tc/group-by :group)
    +    (tc/split :bootstrap {:partition-selector :partition :seed 11 :ratio 0.8}))

    _unnamed [3 3]:

    @@ -26745,19 +27018,19 @@

    Grouped dataset with partitioning

    - + - + - + - + - +
    :g2:g3 0Group: :g2, (splitted) [10 5]:Group: :g3, (splitted) [9 5]:
    :g1 1Group: :g1, (splitted) [10 5]:Group: :g1, (splitted) [15 5]:
    :g3:g2 2Group: :g3, (splitted) [11 5]:Group: :g2, (splitted) [8 5]:
    @@ -26765,9 +27038,9 @@

    Grouped dataset with partitioning

    Split as a sequence

    To get a sequence of pairs, use split->seq function

    -
    (-> for-splitting
    -    (tc/split->seq :kfold {:partition-selector :partition})
    -    (first))
    +
    (-> for-splitting
    +    (tc/split->seq :kfold {:partition-selector :partition})
    +    (first))

    {:train Group: 0 [20 3]:

    @@ -26779,79 +27052,79 @@

    Split as a sequence

    - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -26859,24 +27132,24 @@

    Split as a sequence

    - + - + - + - + - + - +
    146 :a:g2:g3
    417 :a:g2:g3
    173 :a :g2
    116 :a :g1
    1611 :a :g2
    151 :a:g3:g1
    119 :a:g1:g2
    52 :a:g3:g2
    1913 :a :g1
    918 :a :g3
    1214 :a:g1:g2
    1815 :a:g2:g1
    24 :a:g3:g2
    80 :a:g1:g3
    612 :a:g3:g1
    10 :g3
    2322 :b:g2:g1
    24 :b:g1:g3
    2023 :b :g1
    2220 :b:g2:g3
    @@ -26891,38 +27164,38 @@

    Split as a sequence

    -13 +8 :a -:g3 +:g1 7 :a -:g3 +:g1 -3 +5 :a -:g3 +:g1 -0 +19 :a -:g2 +:g1 21 :b -:g1 +:g2

    }

    -
    (-> for-splitting
    -    (tc/group-by :group)
    -    (tc/split->seq :bootstrap {:partition-selector :partition :seed 11 :ratio 0.8 :repeats 2})
    -    (first))
    -

    [:g2 ({:train Group: 0 [7 3]:

    +
    (-> for-splitting
    +    (tc/group-by :group)
    +    (tc/split->seq :bootstrap {:partition-selector :partition :seed 11 :ratio 0.8 :repeats 2})
    +    (first))
    +

    [:g3 ({:train Group: 0 [6 3]:

    @@ -26933,43 +27206,38 @@

    Split as a sequence

    - + - + - + - + - + - + - + - + - - - - - - + - + - - + + - +
    410 :a:g2:g3
    160 :a:g2:g3
    06 :a:g2:g3
    410 :a:g2:g3
    0:a:g2
    2224 :b:g2:g3
    22
    20 :b:g2:g3
    -

    , :test Group: 0 [4 3]:

    +

    , :test Group: 0 [2 3]:

    @@ -26980,28 +27248,18 @@

    Split as a sequence

    - - - - - - + - + - - - - - - +
    14:a:g2
    17 :a:g2:g3
    18 :a:g2
    23:b:g2:g3
    -

    } {:train Group: 1 [7 3]:

    +

    } {:train Group: 1 [6 3]:

    @@ -27012,43 +27270,38 @@

    Split as a sequence

    - + - + - + - + - + - + - + - + - - - - - - + - + - - + + - +
    1710 :a:g2:g3
    1817 :a:g2:g3
    1610 :a:g2:g3
    186 :a:g2:g3
    0:a:g2
    2224 :b:g2:g3
    22
    20 :b:g2:g3
    -

    , :test Group: 1 [3 3]:

    +

    , :test Group: 1 [2 3]:

    @@ -27059,19 +27312,14 @@

    Split as a sequence

    - + - + - + - - - - - - +
    40 :a:g2:g3
    1418 :a:g2
    23:b:g2:g3
    @@ -27118,8 +27366,8 @@

    Functions

    Other examples

    Stocks

    -
    (defonce stocks (tc/dataset "https://raw.githubusercontent.com/techascent/tech.ml.dataset/master/test/data/stocks.csv" {:key-fn keyword}))
    -
    stocks
    +
    (defonce stocks (tc/dataset "https://raw.githubusercontent.com/techascent/tech.ml.dataset/master/test/data/stocks.csv" {:key-fn keyword}))
    +
    stocks

    https://raw.githubusercontent.com/techascent/tech.ml.dataset/master/test/data/stocks.csv [560 3]:

    @@ -27242,12 +27490,12 @@

    Stocks

    -
    (-> stocks
    -    (tc/group-by (fn [row]
    -                    {:symbol (:symbol row)
    -                     :year (tech.v3.datatype.datetime/long-temporal-field :years (:date row))}))
    -    (tc/aggregate #(tech.v3.datatype.functional/mean (% :price)))
    -    (tc/order-by [:symbol :year]))
    +
    (-> stocks
    +    (tc/group-by (fn [row]
    +                    {:symbol (:symbol row)
    +                     :year (tech.v3.datatype.datetime/long-temporal-field :years (:date row))}))
    +    (tc/aggregate #(tech.v3.datatype.functional/mean (% :price)))
    +    (tc/order-by [:symbol :year]))

    _unnamed [51 3]:

    @@ -27370,11 +27618,11 @@

    Stocks

    -
    (-> stocks
    -    (tc/group-by (juxt :symbol #(tech.v3.datatype.datetime/long-temporal-field :years (% :date))))
    -    (tc/aggregate #(tech.v3.datatype.functional/mean (% :price)))
    -    (tc/rename-columns {:$group-name-0 :symbol
    -                         :$group-name-1 :year}))
    +
    (-> stocks
    +    (tc/group-by (juxt :symbol #(tech.v3.datatype.datetime/long-temporal-field :years (% :date))))
    +    (tc/aggregate #(tech.v3.datatype.functional/mean (% :price)))
    +    (tc/rename-columns {:$group-name-0 :symbol
    +                         :$group-name-1 :year}))

    _unnamed [51 3]:

    @@ -27503,13 +27751,13 @@

    data.table

    Below you can find comparizon between functionality of data.table and Clojure dataset API. I leave it without comments, please refer original document explaining details:

    Introduction to data.table

    R

    -
    library(data.table)
    -
    data.table 1.14.6 using 8 threads (see ?getDTthreads).  Latest news: r-datatable.com
    -
    library(knitr)
    -
    -flights <- fread("https://raw.githubusercontent.com/Rdatatable/data.table/master/vignettes/flights14.csv")
    -
    -kable(head(flights))
    +
    library(data.table)
    +
    data.table 1.14.8 using 8 threads (see ?getDTthreads).  Latest news: r-datatable.com
    +
    library(knitr)
    +
    +flights <- fread("https://raw.githubusercontent.com/Rdatatable/data.table/master/vignettes/flights14.csv")
    +
    +kable(head(flights))
    @@ -27609,12 +27857,12 @@

    data.table


    Clojure

    -
    (require '[tech.v3.datatype.functional :as dfn]
    -         '[tech.v3.datatype.argops :as aops]
    -         '[tech.v3.datatype :as dtype])
    -
    -(defonce flights (tc/dataset "https://raw.githubusercontent.com/Rdatatable/data.table/master/vignettes/flights14.csv"))
    -
    (tc/head flights 6)
    +
    (require '[tech.v3.datatype.functional :as dfn]
    +         '[tech.v3.datatype.argops :as aops]
    +         '[tech.v3.datatype :as dtype])
    +
    +(defonce flights (tc/dataset "https://raw.githubusercontent.com/Rdatatable/data.table/master/vignettes/flights14.csv"))
    +
    (tc/head flights 6)

    https://raw.githubusercontent.com/Rdatatable/data.table/master/vignettes/flights14.csv [6 11]:

    @@ -27718,24 +27966,24 @@

    Basics

    Shape of loaded data

    R

    -
    dim(flights)
    +
    dim(flights)
    [1] 253316     11

    Clojure

    -
    (tc/shape flights)
    +
    (tc/shape flights)
    [253316 11]
    What is data.table?

    R

    -
    DT = data.table(
    -  ID = c("b","b","b","a","a","c"),
    -  a = 1:6,
    -  b = 7:12,
    -  c = 13:18
    -)
    -
    -kable(DT)
    +
    DT = data.table(
    +  ID = c("b","b","b","a","a","c"),
    +  a = 1:6,
    +  b = 7:12,
    +  c = 13:18
    +)
    +
    +kable(DT)
    @@ -27784,15 +28032,15 @@
    What is data.table?
    -
    class(DT$ID)
    +
    class(DT$ID)
    [1] "character"

    Clojure

    -
    (def DT (tc/dataset {:ID ["b" "b" "b" "a" "a" "c"]
    -                      :a (range 1 7)
    -                      :b (range 7 13)
    -                      :c (range 13 19)}))
    -
    DT
    +
    (def DT (tc/dataset {:ID ["b" "b" "b" "a" "a" "c"]
    +                      :a (range 1 7)
    +                      :b (range 7 13)
    +                      :c (range 13 19)}))
    +
    DT

    _unnamed [6 4]:

    @@ -27842,14 +28090,14 @@
    What is data.table?
    -
    (-> :ID DT meta :datatype)
    +
    (-> :ID DT meta :datatype)
    :string
    Get all the flights with “JFK” as the origin airport in the month of June.

    R

    -
    ans <- flights[origin == "JFK" & month == 6L]
    -kable(head(ans))
    +
    ans <- flights[origin == "JFK" & month == 6L]
    +kable(head(ans))
    @@ -27949,10 +28197,10 @@
    Get all the flights with “JFK” as the origin airport in the month of Jun

    Clojure

    -
    (-> flights
    -    (tc/select-rows (fn [row] (and (= (get row "origin") "JFK")
    -                                   (= (get row "month") 6))))
    -    (tc/head 6))
    +
    (-> flights
    +    (tc/select-rows (fn [row] (and (= (get row "origin") "JFK")
    +                                   (= (get row "month") 6))))
    +    (tc/head 6))

    https://raw.githubusercontent.com/Rdatatable/data.table/master/vignettes/flights14.csv [6 11]:

    @@ -28055,8 +28303,8 @@
    Get all the flights with “JFK” as the origin airport in the month of Jun
    Get the first two rows from flights.

    R

    -
    ans <- flights[1:2]
    -kable(ans)
    +
    ans <- flights[1:2]
    +kable(ans)
    @@ -28104,7 +28352,7 @@
    Get the first two rows from flights.

    Clojure

    -
    (tc/select-rows flights (range 2))
    +
    (tc/select-rows flights (range 2))

    https://raw.githubusercontent.com/Rdatatable/data.table/master/vignettes/flights14.csv [2 11]:

    @@ -28155,8 +28403,8 @@
    Get the first two rows from flights.
    Sort flights first by column origin in ascending order, and then by dest in descending order

    R

    -
    ans <- flights[order(origin, -dest)]
    -kable(head(ans))
    +
    ans <- flights[order(origin, -dest)]
    +kable(head(ans))
    @@ -28256,9 +28504,9 @@
    Sort flights first by column origin in ascending o

    Clojure

    -
    (-> flights
    -    (tc/order-by ["origin" "dest"] [:asc :desc])
    -    (tc/head 6))
    +
    (-> flights
    +    (tc/order-by ["origin" "dest"] [:asc :desc])
    +    (tc/head 6))

    https://raw.githubusercontent.com/Rdatatable/data.table/master/vignettes/flights14.csv [6 11]:

    @@ -28361,19 +28609,19 @@
    Sort flights first by column origin in ascending o
    Select arr_delay column, but return it as a vector

    R

    -
    ans <- flights[, arr_delay]
    -head(ans)
    +
    ans <- flights[, arr_delay]
    +head(ans)
    [1]  13  13   9 -26   1   0

    Clojure

    -
    (take 6 (flights "arr_delay"))
    +
    (take 6 (flights "arr_delay"))
    (13 13 9 -26 1 0)
    Select arr_delay column, but return as a data.table instead

    R

    -
    ans <- flights[, list(arr_delay)]
    -kable(head(ans))
    +
    ans <- flights[, list(arr_delay)]
    +kable(head(ans))
    @@ -28403,9 +28651,9 @@
    Select arr_delay column, but return as a data.table instead

    Clojure

    -
    (-> flights
    -    (tc/select-columns "arr_delay")
    -    (tc/head 6))
    +
    (-> flights
    +    (tc/select-columns "arr_delay")
    +    (tc/head 6))

    https://raw.githubusercontent.com/Rdatatable/data.table/master/vignettes/flights14.csv [6 1]:

    @@ -28438,8 +28686,8 @@
    Select arr_delay column, but return as a data.table instead
    Select both arr_delay and dep_delay columns

    R

    -
    ans <- flights[, .(arr_delay, dep_delay)]
    -kable(head(ans))
    +
    ans <- flights[, .(arr_delay, dep_delay)]
    +kable(head(ans))
    @@ -28476,9 +28724,9 @@
    Select both arr_delay and dep_delay columns

    Clojure

    -
    (-> flights
    -    (tc/select-columns ["arr_delay" "dep_delay"])
    -    (tc/head 6))
    +
    (-> flights
    +    (tc/select-columns ["arr_delay" "dep_delay"])
    +    (tc/head 6))

    https://raw.githubusercontent.com/Rdatatable/data.table/master/vignettes/flights14.csv [6 2]:

    @@ -28518,8 +28766,8 @@
    Select both arr_delay and dep_delay columns
    Select both arr_delay and dep_delay columns and rename them to delay_arr and delay_dep

    R

    -
    ans <- flights[, .(delay_arr = arr_delay, delay_dep = dep_delay)]
    -kable(head(ans))
    +
    ans <- flights[, .(delay_arr = arr_delay, delay_dep = dep_delay)]
    +kable(head(ans))
    @@ -28556,10 +28804,10 @@
    Select both arr_delay and dep_delay columns and re

    Clojure

    -
    (-> flights
    -    (tc/select-columns {"arr_delay" "delay_arr"
    -                         "dep_delay" "delay_arr"})
    -    (tc/head 6))
    +
    (-> flights
    +    (tc/select-columns {"arr_delay" "delay_arr"
    +                         "dep_delay" "delay_arr"})
    +    (tc/head 6))

    https://raw.githubusercontent.com/Rdatatable/data.table/master/vignettes/flights14.csv [6 2]:

    @@ -28599,27 +28847,27 @@
    Select both arr_delay and dep_delay columns and re
    How many trips have had total delay < 0?

    R

    -
    ans <- flights[, sum( (arr_delay + dep_delay) < 0 )]
    -ans
    +
    ans <- flights[, sum( (arr_delay + dep_delay) < 0 )]
    +ans
    [1] 141814

    Clojure

    -
    (->> (dfn/+ (flights "arr_delay") (flights "dep_delay"))
    -     (aops/argfilter #(< % 0.0))
    -     (dtype/ecount))
    +
    (->> (dfn/+ (flights "arr_delay") (flights "dep_delay"))
    +     (aops/argfilter #(< % 0.0))
    +     (dtype/ecount))
    141814

    or pure Clojure functions (much, much slower)

    -
    (->> (map + (flights "arr_delay") (flights "dep_delay"))
    -     (filter neg?)
    -     (count))
    +
    (->> (map + (flights "arr_delay") (flights "dep_delay"))
    +     (filter neg?)
    +     (count))
    141814
    Calculate the average arrival and departure delay for all flights with “JFK” as the origin airport in the month of June

    R

    -
    ans <- flights[origin == "JFK" & month == 6L,
    -               .(m_arr = mean(arr_delay), m_dep = mean(dep_delay))]
    -kable(ans)
    +
    ans <- flights[origin == "JFK" & month == 6L,
    +               .(m_arr = mean(arr_delay), m_dep = mean(dep_delay))]
    +kable(ans)
    @@ -28636,11 +28884,11 @@
    Calculate the average arrival and departure delay for all flights with “JF

    Clojure

    -
    (-> flights
    -    (tc/select-rows (fn [row] (and (= (get row "origin") "JFK")
    -                                   (= (get row "month") 6))))
    -    (tc/aggregate {:m_arr #(dfn/mean (% "arr_delay"))
    -                    :m_dep #(dfn/mean (% "dep_delay"))}))
    +
    (-> flights
    +    (tc/select-rows (fn [row] (and (= (get row "origin") "JFK")
    +                                   (= (get row "month") 6))))
    +    (tc/aggregate {:m_arr #(dfn/mean (% "arr_delay"))
    +                    :m_dep #(dfn/mean (% "dep_delay"))}))

    _unnamed [1 2]:

    @@ -28660,26 +28908,26 @@
    Calculate the average arrival and departure delay for all flights with “JF
    How many trips have been made in 2014 from “JFK” airport in the month of June?

    R

    -
    ans <- flights[origin == "JFK" & month == 6L, length(dest)]
    -ans
    +
    ans <- flights[origin == "JFK" & month == 6L, length(dest)]
    +ans
    [1] 8422

    or

    -
    ans <- flights[origin == "JFK" & month == 6L, .N]
    -ans
    +
    ans <- flights[origin == "JFK" & month == 6L, .N]
    +ans
    [1] 8422

    Clojure

    -
    (-> flights
    -    (tc/select-rows (fn [row] (and (= (get row "origin") "JFK")
    -                                   (= (get row "month") 6))))
    -    (tc/row-count))
    +
    (-> flights
    +    (tc/select-rows (fn [row] (and (= (get row "origin") "JFK")
    +                                   (= (get row "month") 6))))
    +    (tc/row-count))
    8422
    deselect columns using - or !

    R

    -
    ans <- flights[, !c("arr_delay", "dep_delay")]
    -kable(head(ans))
    +
    ans <- flights[, !c("arr_delay", "dep_delay")]
    +kable(head(ans))
    @@ -28764,8 +29012,8 @@
    deselect columns using - or !

    or

    -
    ans <- flights[, -c("arr_delay", "dep_delay")]
    -kable(head(ans))
    +
    ans <- flights[, -c("arr_delay", "dep_delay")]
    +kable(head(ans))
    @@ -28851,9 +29099,9 @@
    deselect columns using - or !

    Clojure

    -
    (-> flights
    -    (tc/select-columns (complement #{"arr_delay" "dep_delay"}))
    -    (tc/head 6))
    +
    (-> flights
    +    (tc/select-columns (complement #{"arr_delay" "dep_delay"}))
    +    (tc/head 6))

    https://raw.githubusercontent.com/Rdatatable/data.table/master/vignettes/flights14.csv [6 9]:

    @@ -28945,8 +29193,8 @@

    Aggregations

    How can we get the number of trips corresponding to each origin airport?

    R

    -
    ans <- flights[, .(.N), by = .(origin)]
    -kable(ans)
    +
    ans <- flights[, .(.N), by = .(origin)]
    +kable(ans)
    @@ -28971,9 +29219,9 @@
    How can we get the number of trips corresponding to each origin airport?

    Clojure

    -
    (-> flights
    -    (tc/group-by ["origin"])
    -    (tc/aggregate {:N tc/row-count}))
    +
    (-> flights
    +    (tc/group-by ["origin"])
    +    (tc/aggregate {:N tc/row-count}))

    _unnamed [3 2]:

    @@ -29001,8 +29249,8 @@
    How can we get the number of trips corresponding to each origin airport?
    How can we calculate the number of trips for each origin airport for carrier code “AA”?

    R

    -
    ans <- flights[carrier == "AA", .N, by = origin]
    -kable(ans)
    +
    ans <- flights[carrier == "AA", .N, by = origin]
    +kable(ans)
    @@ -29027,10 +29275,10 @@
    How can we calculate the number of trips for each origin airport for carrier

    Clojure

    -
    (-> flights
    -    (tc/select-rows #(= (get % "carrier") "AA"))
    -    (tc/group-by ["origin"])
    -    (tc/aggregate {:N tc/row-count}))
    +
    (-> flights
    +    (tc/select-rows #(= (get % "carrier") "AA"))
    +    (tc/group-by ["origin"])
    +    (tc/aggregate {:N tc/row-count}))

    _unnamed [3 2]:

    @@ -29058,8 +29306,8 @@
    How can we calculate the number of trips for each origin airport for carrier
    How can we get the total number of trips for each origin, dest pair for carrier code “AA”?

    R

    -
    ans <- flights[carrier == "AA", .N, by = .(origin, dest)]
    -kable(head(ans))
    +
    ans <- flights[carrier == "AA", .N, by = .(origin, dest)]
    +kable(head(ans))
    @@ -29103,11 +29351,11 @@
    How can we get the total number of trips for each origin,

    Clojure

    -
    (-> flights
    -    (tc/select-rows #(= (get % "carrier") "AA"))
    -    (tc/group-by ["origin" "dest"])
    -    (tc/aggregate {:N tc/row-count})
    -    (tc/head 6))
    +
    (-> flights
    +    (tc/select-rows #(= (get % "carrier") "AA"))
    +    (tc/group-by ["origin" "dest"])
    +    (tc/aggregate {:N tc/row-count})
    +    (tc/head 6))

    _unnamed [6 3]:

    @@ -29154,10 +29402,10 @@
    How can we get the total number of trips for each origin,
    How can we get the average arrival and departure delay for each orig,dest pair for each month for carrier code “AA”?

    R

    -
    ans <- flights[carrier == "AA",
    -        .(mean(arr_delay), mean(dep_delay)),
    -        by = .(origin, dest, month)]
    -kable(head(ans,10))
    +
    ans <- flights[carrier == "AA",
    +        .(mean(arr_delay), mean(dep_delay)),
    +        by = .(origin, dest, month)]
    +kable(head(ans,10))
    @@ -29243,12 +29491,12 @@
    How can we get the average arrival and departure delay for each orig

    Clojure

    -
    (-> flights
    -    (tc/select-rows #(= (get % "carrier") "AA"))
    -    (tc/group-by ["origin" "dest" "month"])
    -    (tc/aggregate [#(dfn/mean (% "arr_delay"))
    -                    #(dfn/mean (% "dep_delay"))])
    -    (tc/head 10))
    +
    (-> flights
    +    (tc/select-rows #(= (get % "carrier") "AA"))
    +    (tc/group-by ["origin" "dest" "month"])
    +    (tc/aggregate [#(dfn/mean (% "arr_delay"))
    +                    #(dfn/mean (% "dep_delay"))])
    +    (tc/head 10))

    _unnamed [10 5]:

    @@ -29337,10 +29585,10 @@
    How can we get the average arrival and departure delay for each orig
    So how can we directly order by all the grouping variables?

    R

    -
    ans <- flights[carrier == "AA",
    -        .(mean(arr_delay), mean(dep_delay)),
    -        keyby = .(origin, dest, month)]
    -kable(head(ans,10))
    +
    ans <- flights[carrier == "AA",
    +        .(mean(arr_delay), mean(dep_delay)),
    +        keyby = .(origin, dest, month)]
    +kable(head(ans,10))
    @@ -29426,13 +29674,13 @@
    So how can we directly order by all the grouping variables?

    Clojure

    -
    (-> flights
    -    (tc/select-rows #(= (get % "carrier") "AA"))
    -    (tc/group-by ["origin" "dest" "month"])
    -    (tc/aggregate [#(dfn/mean (% "arr_delay"))
    -                    #(dfn/mean (% "dep_delay"))])
    -    (tc/order-by ["origin" "dest" "month"])
    -    (tc/head 10))
    +
    (-> flights
    +    (tc/select-rows #(= (get % "carrier") "AA"))
    +    (tc/group-by ["origin" "dest" "month"])
    +    (tc/aggregate [#(dfn/mean (% "arr_delay"))
    +                    #(dfn/mean (% "dep_delay"))])
    +    (tc/order-by ["origin" "dest" "month"])
    +    (tc/head 10))

    _unnamed [10 5]:

    @@ -29521,8 +29769,8 @@
    So how can we directly order by all the grouping variables?
    Can by accept expressions as well or does it just take columns?

    R

    -
    ans <- flights[, .N, .(dep_delay>0, arr_delay>0)]
    -kable(ans)
    +
    ans <- flights[, .N, .(dep_delay>0, arr_delay>0)]
    +kable(ans)
    @@ -29556,11 +29804,11 @@
    Can by accept expressions as well or does it just take columns?

    Clojure

    -
    (-> flights
    -    (tc/group-by (fn [row]
    -                    {:dep_delay (pos? (get row "dep_delay"))
    -                     :arr_delay (pos? (get row "arr_delay"))}))
    -    (tc/aggregate {:N tc/row-count}))
    +
    (-> flights
    +    (tc/group-by (fn [row]
    +                    {:dep_delay (pos? (get row "dep_delay"))
    +                     :arr_delay (pos? (get row "arr_delay"))}))
    +    (tc/aggregate {:N tc/row-count}))

    _unnamed [4 3]:

    @@ -29597,7 +29845,7 @@
    Can by accept expressions as well or does it just take columns?
    Do we have to compute mean() for each column individually?

    R

    -
    kable(DT)
    +
    kable(DT)
    @@ -29646,7 +29894,7 @@
    Do we have to compute mean() for each column individually?
    -
    DT[, print(.SD), by = ID]
    +
    DT[, print(.SD), by = ID]
       a b  c
     1: 1 7 13
     2: 2 8 14
    @@ -29657,7 +29905,7 @@ 
    Do we have to compute mean() for each column individually?
    a b c 1: 6 12 18
    Empty data.table (0 rows and 1 cols): ID
    -
    kable(DT[, lapply(.SD, mean), by = ID])
    +
    kable(DT[, lapply(.SD, mean), by = ID])
    @@ -29690,9 +29938,9 @@
    Do we have to compute mean() for each column individually?

    Clojure

    -
    DT
    -
    -(tc/group-by DT :ID {:result-type :as-map})
    +
    DT
    +
    +(tc/group-by DT :ID {:result-type :as-map})

    _unnamed [6 4]:

    @@ -29818,9 +30066,9 @@
    Do we have to compute mean() for each column individually?

    }

    -
    (-> DT
    -    (tc/group-by [:ID])
    -    (tc/aggregate-columns (complement #{:ID}) dfn/mean))
    +
    (-> DT
    +    (tc/group-by [:ID])
    +    (tc/aggregate-columns (complement #{:ID}) dfn/mean))

    _unnamed [3 4]:

    @@ -29856,10 +30104,10 @@
    Do we have to compute mean() for each column individually?
    How can we specify just the columns we would like to compute the mean() on?

    R

    -
    kable(head(flights[carrier == "AA",                         ## Only on trips with carrier "AA"
    -                   lapply(.SD, mean),                       ## compute the mean
    -                   by = .(origin, dest, month),             ## for every 'origin,dest,month'
    -                   .SDcols = c("arr_delay", "dep_delay")])) ## for just those specified in .SDcols
    +
    kable(head(flights[carrier == "AA",                         ## Only on trips with carrier "AA"
    +                   lapply(.SD, mean),                       ## compute the mean
    +                   by = .(origin, dest, month),             ## for every 'origin,dest,month'
    +                   .SDcols = c("arr_delay", "dep_delay")])) ## for just those specified in .SDcols
    @@ -29917,11 +30165,11 @@
    How can we specify just the columns we would like to compute the mean(

    Clojure

    -
    (-> flights
    -    (tc/select-rows #(= (get % "carrier") "AA"))
    -    (tc/group-by ["origin" "dest" "month"])
    -    (tc/aggregate-columns ["arr_delay" "dep_delay"] dfn/mean)
    -    (tc/head 6))
    +
    (-> flights
    +    (tc/select-rows #(= (get % "carrier") "AA"))
    +    (tc/group-by ["origin" "dest" "month"])
    +    (tc/aggregate-columns ["arr_delay" "dep_delay"] dfn/mean)
    +    (tc/head 6))

    _unnamed [6 5]:

    @@ -29982,8 +30230,8 @@
    How can we specify just the columns we would like to compute the mean(
    How can we return the first two rows for each month?

    R

    -
    ans <- flights[, head(.SD, 2), by = month]
    -kable(head(ans))
    +
    ans <- flights[, head(.SD, 2), by = month]
    +kable(head(ans))
    @@ -30083,11 +30331,11 @@
    How can we return the first two rows for each month?

    Clojure

    -
    (-> flights
    -    (tc/group-by ["month"])
    -    (tc/head 2) ;; head applied on each group
    -    (tc/ungroup)
    -    (tc/head 6))
    +
    (-> flights
    +    (tc/group-by ["month"])
    +    (tc/head 2) ;; head applied on each group
    +    (tc/ungroup)
    +    (tc/head 6))

    _unnamed [6 11]:

    @@ -30190,7 +30438,7 @@
    How can we return the first two rows for each month?
    How can we concatenate columns a and b for each group in ID?

    R

    -
    kable(DT[, .(val = c(a,b)), by = ID])
    +
    kable(DT[, .(val = c(a,b)), by = ID])
    @@ -30251,9 +30499,9 @@
    How can we concatenate columns a and b for each group in ID?

    Clojure

    -
    (-> DT
    -    (tc/pivot->longer [:a :b] {:value-column-name :val})
    -    (tc/drop-columns [:$column :c]))
    +
    (-> DT
    +    (tc/pivot->longer [:a :b] {:value-column-name :val})
    +    (tc/drop-columns [:$column :c]))

    _unnamed [12 2]:

    @@ -30317,7 +30565,7 @@
    How can we concatenate columns a and b for each group in ID?
    What if we would like to have all the values of column a and b concatenated, but returned as a list column?

    R

    -
    kable(DT[, .(val = list(c(a,b))), by = ID])
    +
    kable(DT[, .(val = list(c(a,b))), by = ID])
    @@ -30342,10 +30590,10 @@
    What if we would like to have all the values of column a and

    Clojure

    -
    (-> DT
    -    (tc/pivot->longer [:a :b] {:value-column-name :val})
    -    (tc/drop-columns [:$column :c])
    -    (tc/fold-by :ID))
    +
    (-> DT
    +    (tc/pivot->longer [:a :b] {:value-column-name :val})
    +    (tc/drop-columns [:$column :c])
    +    (tc/fold-by :ID))

    _unnamed [3 2]:

    @@ -30377,15 +30625,15 @@

    API tour

    Below snippets are taken from A data.table and dplyr tour written by Atrebas (permission granted).

    I keep structure and subtitles but I skip data.table and dplyr examples.

    Example data

    -
    (def DS (tc/dataset {:V1 (take 9 (cycle [1 2]))
    -                      :V2 (range 1 10)
    -                      :V3 (take 9 (cycle [0.5 1.0 1.5]))
    -                      :V4 (take 9 (cycle ["A" "B" "C"]))}))
    -
    (tc/dataset? DS)
    -(class DS)
    +
    (def DS (tc/dataset {:V1 (take 9 (cycle [1 2]))
    +                      :V2 (range 1 10)
    +                      :V3 (take 9 (cycle [0.5 1.0 1.5]))
    +                      :V4 (take 9 (cycle ["A" "B" "C"]))}))
    +
    (tc/dataset? DS)
    +(class DS)
    true
     tech.v3.dataset.impl.dataset.Dataset
    -
    DS
    +
    DS

    _unnamed [9 4]:

    @@ -30458,7 +30706,7 @@

    Basic Operations

    Filter rows

    Filter rows using indices

    -
    (tc/select-rows DS [2 3])
    +
    (tc/select-rows DS [2 3])

    _unnamed [2 4]:

    @@ -30487,7 +30735,47 @@
    Filter rows

    Discard rows using negative indices

    In Clojure API we have separate function for that: drop-rows.

    -
    (tc/drop-rows DS (range 2 7))
    +
    (tc/drop-rows DS (range 2 7))
    +

    _unnamed [4 4]:

    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    :V1:V2:V3:V4
    110.5A
    221.0B
    281.0B
    191.5C
    +
    +

    Filter rows using a logical expression

    +
    (tc/select-rows DS (comp #(> % 5) :V2))

    _unnamed [4 4]:

    @@ -30500,6 +30788,193 @@
    Filter rows
    + + + + + + + + + + + + + + + + + + + + + + + + +
    261.5C
    170.5A
    281.0B
    191.5C
    +
    (tc/select-rows DS (comp #{"A" "C"} :V4))
    +

    _unnamed [6 4]:

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    :V1:V2:V3:V4
    110.5A
    131.5C
    240.5A
    261.5C
    170.5A
    191.5C
    +
    +

    Filter rows using multiple conditions

    +
    (tc/select-rows DS #(and (= (:V1 %) 1)
    +                          (= (:V4 %) "A")))
    +

    _unnamed [2 4]:

    + + + + + + + + + + + + + + + + + + + + + + + +
    :V1:V2:V3:V4
    110.5A
    170.5A
    +
    +

    Filter unique rows

    +
    (tc/unique-by DS)
    +

    _unnamed [9 4]:

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    :V1:V2:V3:V4
    110.5A
    221.0B
    131.5C
    240.5A
    151.0B
    261.5C
    170.5A
    281.0B
    191.5C
    +
    (tc/unique-by DS [:V1 :V4])
    +

    _unnamed [6 4]:

    + + + + + + + + + + + @@ -30512,141 +30987,34 @@
    Filter rows
    - - - - - - - - - - - -
    :V1:V2:V3:V4
    1 1 0.5 B
    281.0B
    191.5C
    -
    -

    Filter rows using a logical expression

    -
    (tc/select-rows DS (comp #(> % 5) :V2))
    -

    _unnamed [4 4]:

    - - - - - - - - - - - - - + - - + + - - + + - - - - - - -
    :V1:V2:V3:V4
    263 1.5 C
    1724 0.5 A
    2815 1.0 B
    191.5C
    -
    (tc/select-rows DS (comp #{"A" "C"} :V4))
    -

    _unnamed [6 4]:

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    :V1:V2:V3:V4
    110.5A
    131.5C
    240.5A
    2 6 1.5 C
    170.5A
    191.5C
    -
    -

    Filter rows using multiple conditions

    -
    (tc/select-rows DS #(and (= (:V1 %) 1)
    -                          (= (:V4 %) "A")))
    -

    _unnamed [2 4]:

    - - - - - - - - - - - - - - - - - - - - - -
    :V1:V2:V3:V4
    110.5A
    170.5A

    -

    Filter unique rows

    -
    (tc/unique-by DS)
    +

    Discard rows with missing values

    +
    (tc/drop-missing DS)

    _unnamed [9 4]:

    @@ -30714,8 +31082,10 @@
    Filter rows
    -
    (tc/unique-by DS [:V1 :V4])
    -

    _unnamed [6 4]:

    +
    +

    Other filters

    +
    (tc/random DS 3) ;; 3 random rows
    +

    _unnamed [3 4]:

    @@ -30728,46 +31098,26 @@
    Filter rows
    - - - - - - - - - - - - - + - - + + - - - - - - - +
    110.5A
    221.0B
    139 1.5 C
    2417 0.5 A
    151.0B
    263 1.5 C
    -
    -

    Discard rows with missing values

    -
    (tc/drop-missing DS)
    -

    _unnamed [9 4]:

    +
    (tc/random DS (/ (tc/row-count DS) 2)) ;; fraction of random rows
    +

    _unnamed [5 4]:

    @@ -30786,133 +31136,31 @@
    Filter rows
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - -
    221.0B
    131.5C
    240.5A
    151.0B
    2 6 1.5 C
    170.5A
    282 1.0 B
    1 9 1.5 C
    -
    -

    Other filters

    -
    (tc/random DS 3) ;; 3 random rows
    -

    _unnamed [3 4]:

    - - - - - - - - - - - - - - - - - - - - - -
    :V1:V2:V3:V4
    191.5C
    151.0B
    24 0.5 A
    -
    (tc/random DS (/ (tc/row-count DS) 2)) ;; fraction of random rows
    -

    _unnamed [5 4]:

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    :V1:V2:V3:V4
    261.5C
    151.0B
    151.0B
    191.5C
    151.0B
    -
    (tc/by-rank DS :V1 zero?) ;; take top n entries
    +
    (tc/by-rank DS :V1 zero?) ;; take top n entries

    _unnamed [4 4]:

    @@ -30952,7 +31200,7 @@
    Filter rows

    Convenience functions

    -
    (tc/select-rows DS (comp (partial re-matches #"^B") str :V4))
    +
    (tc/select-rows DS (comp (partial re-matches #"^B") str :V4))

    _unnamed [3 4]:

    @@ -30984,7 +31232,7 @@
    Filter rows
    -
    (tc/select-rows DS (comp #(<= 3 % 5) :V2))
    +
    (tc/select-rows DS (comp #(<= 3 % 5) :V2))

    _unnamed [3 4]:

    @@ -31016,7 +31264,7 @@
    Filter rows
    -
    (tc/select-rows DS (comp #(< 3 % 5) :V2))
    +
    (tc/select-rows DS (comp #(< 3 % 5) :V2))

    _unnamed [1 4]:

    @@ -31036,7 +31284,7 @@
    Filter rows
    -
    (tc/select-rows DS (comp #(<= 3 % 5) :V2))
    +
    (tc/select-rows DS (comp #(<= 3 % 5) :V2))

    _unnamed [3 4]:

    @@ -31073,7 +31321,7 @@
    Filter rows
    Sort rows

    Sort rows by column

    -
    (tc/order-by DS :V3)
    +
    (tc/order-by DS :V3)

    _unnamed [9 4]:

    @@ -31143,7 +31391,7 @@
    Sort rows

    Sort rows in decreasing order

    -
    (tc/order-by DS :V3 :desc)
    +
    (tc/order-by DS :V3 :desc)

    _unnamed [9 4]:

    @@ -31213,7 +31461,7 @@
    Sort rows

    Sort rows based on several columns

    -
    (tc/order-by DS [:V1 :V2] [:asc :desc])
    +
    (tc/order-by DS [:V1 :V2] [:asc :desc])

    _unnamed [9 4]:

    @@ -31285,11 +31533,11 @@
    Sort rows
    Select columns

    Select one column using an index (not recommended)

    -
    (nth (tc/columns DS :as-seq) 2) ;; as column (iterable)
    +
    (nth (tc/columns DS :as-seq) 2) ;; as column (iterable)
    #tech.v3.dataset.column<float64>[9]
     :V3
     [0.5000, 1.000, 1.500, 0.5000, 1.000, 1.500, 0.5000, 1.000, 1.500]
    -
    (tc/dataset [(nth (tc/columns DS :as-seq) 2)])
    +
    (tc/dataset [(nth (tc/columns DS :as-seq) 2)])

    _unnamed [9 1]:

    @@ -31329,7 +31577,7 @@
    Select columns

    Select one column using column name

    -
    (tc/select-columns DS :V2) ;; as dataset
    +
    (tc/select-columns DS :V2) ;; as dataset

    _unnamed [9 1]:

    @@ -31367,7 +31615,7 @@
    Select columns
    -
    (tc/select-columns DS [:V2]) ;; as dataset
    +
    (tc/select-columns DS [:V2]) ;; as dataset

    _unnamed [9 1]:

    @@ -31405,13 +31653,13 @@
    Select columns
    -
    (DS :V2) ;; as column (iterable)
    +
    (DS :V2) ;; as column (iterable)
    #tech.v3.dataset.column<int64>[9]
     :V2
     [1, 2, 3, 4, 5, 6, 7, 8, 9]

    Select several columns

    -
    (tc/select-columns DS [:V2 :V3 :V4])
    +
    (tc/select-columns DS [:V2 :V3 :V4])

    _unnamed [9 3]:

    @@ -31471,7 +31719,7 @@
    Select columns

    Exclude columns

    -
    (tc/select-columns DS (complement #{:V2 :V3 :V4}))
    +
    (tc/select-columns DS (complement #{:V2 :V3 :V4}))

    _unnamed [9 1]:

    @@ -31509,7 +31757,7 @@
    Select columns
    -
    (tc/drop-columns DS [:V2 :V3 :V4])
    +
    (tc/drop-columns DS [:V2 :V3 :V4])

    _unnamed [9 1]:

    @@ -31549,9 +31797,9 @@
    Select columns

    Other seletions

    -
    (->> (range 1 3)
    -     (map (comp keyword (partial format "V%d")))
    -     (tc/select-columns DS))
    +
    (->> (range 1 3)
    +     (map (comp keyword (partial format "V%d")))
    +     (tc/select-columns DS))

    _unnamed [9 2]:

    @@ -31599,7 +31847,7 @@
    Select columns
    -
    (tc/reorder-columns DS :V4)
    +
    (tc/reorder-columns DS :V4)

    _unnamed [9 4]:

    @@ -31667,7 +31915,7 @@
    Select columns
    -
    (tc/select-columns DS #(clojure.string/starts-with? (name %) "V"))
    +
    (tc/select-columns DS #(clojure.string/starts-with? (name %) "V"))

    _unnamed [9 4]:

    @@ -31735,7 +31983,7 @@
    Select columns
    -
    (tc/select-columns DS #(clojure.string/ends-with? (name %) "3"))
    +
    (tc/select-columns DS #(clojure.string/ends-with? (name %) "3"))

    _unnamed [9 1]:

    @@ -31773,7 +32021,7 @@
    Select columns
    -
    (tc/select-columns DS #"..2") ;; regex converts to string using `str` function
    +
    (tc/select-columns DS #"..2") ;; regex converts to string using `str` function

    _unnamed [9 1]:

    @@ -31811,7 +32059,7 @@
    Select columns
    -
    (tc/select-columns DS #{:V1 "X"})
    +
    (tc/select-columns DS #{:V1 "X"})

    _unnamed [9 1]:

    @@ -31849,7 +32097,7 @@
    Select columns
    -
    (tc/select-columns DS #(not (clojure.string/starts-with? (name %) "V2")))
    +
    (tc/select-columns DS #(not (clojure.string/starts-with? (name %) "V2")))

    _unnamed [9 3]:

    @@ -31911,9 +32159,9 @@
    Select columns
    Summarise data

    Summarise one column

    -
    (reduce + (DS :V1)) ;; using pure Clojure, as value
    +
    (reduce + (DS :V1)) ;; using pure Clojure, as value
    13
    -
    (tc/aggregate-columns DS :V1 dfn/sum) ;; as dataset
    +
    (tc/aggregate-columns DS :V1 dfn/sum) ;; as dataset

    _unnamed [1 1]:

    @@ -31927,7 +32175,7 @@
    Summarise data
    -
    (tc/aggregate DS {:sumV1 #(dfn/sum (% :V1))})
    +
    (tc/aggregate DS {:sumV1 #(dfn/sum (% :V1))})

    _unnamed [1 1]:

    @@ -31943,8 +32191,8 @@
    Summarise data

    Summarize several columns

    -
    (tc/aggregate DS [#(dfn/sum (% :V1))
    -                   #(dfn/standard-deviation (% :V3))])
    +
    (tc/aggregate DS [#(dfn/sum (% :V1))
    +                   #(dfn/standard-deviation (% :V3))])

    _unnamed [1 2]:

    @@ -31960,8 +32208,8 @@
    Summarise data
    -
    (tc/aggregate-columns DS [:V1 :V3] [dfn/sum
    -                                     dfn/standard-deviation])
    +
    (tc/aggregate-columns DS [:V1 :V3] [dfn/sum
    +                                     dfn/standard-deviation])

    _unnamed [1 2]:

    @@ -31979,8 +32227,8 @@
    Summarise data

    Summarise several columns and assign column names

    -
    (tc/aggregate DS {:sumv1 #(dfn/sum (% :V1))
    -                   :sdv3 #(dfn/standard-deviation (% :V3))})
    +
    (tc/aggregate DS {:sumv1 #(dfn/sum (% :V1))
    +                   :sdv3 #(dfn/standard-deviation (% :V3))})

    _unnamed [1 2]:

    @@ -31998,9 +32246,9 @@
    Summarise data

    Summarise a subset of rows

    -
    (-> DS
    -    (tc/select-rows (range 4))
    -    (tc/aggregate-columns :V1 dfn/sum))
    +
    (-> DS
    +    (tc/select-rows (range 4))
    +    (tc/aggregate-columns :V1 dfn/sum))

    _unnamed [1 1]:

    @@ -32017,9 +32265,9 @@
    Summarise data
    Additional helpers
    -
    (-> DS
    -    (tc/first)
    -    (tc/select-columns :V3)) ;; select first row from `:V3` column
    +
    (-> DS
    +    (tc/first)
    +    (tc/select-columns :V3)) ;; select first row from `:V3` column

    _unnamed [1 1]:

    @@ -32033,9 +32281,9 @@
    Additional helpers
    -
    (-> DS
    -    (tc/last)
    -    (tc/select-columns :V3)) ;; select last row from `:V3` column
    +
    (-> DS
    +    (tc/last)
    +    (tc/select-columns :V3)) ;; select last row from `:V3` column

    _unnamed [1 1]:

    @@ -32049,9 +32297,9 @@
    Additional helpers
    -
    (-> DS
    -    (tc/select-rows 4)
    -    (tc/select-columns :V3)) ;; select forth row from `:V3` column
    +
    (-> DS
    +    (tc/select-rows 4)
    +    (tc/select-columns :V3)) ;; select forth row from `:V3` column

    _unnamed [1 1]:

    @@ -32065,8 +32313,8 @@
    Additional helpers
    -
    (-> DS
    -    (tc/select :V3 4)) ;; select forth row from `:V3` column
    +
    (-> DS
    +    (tc/select :V3 4)) ;; select forth row from `:V3` column

    _unnamed [1 1]:

    @@ -32080,9 +32328,9 @@
    Additional helpers
    -
    (-> DS
    -    (tc/unique-by :V4)
    -    (tc/aggregate tc/row-count)) ;; number of unique rows in `:V4` column, as dataset
    +
    (-> DS
    +    (tc/unique-by :V4)
    +    (tc/aggregate tc/row-count)) ;; number of unique rows in `:V4` column, as dataset

    _unnamed [1 1]:

    @@ -32096,19 +32344,19 @@
    Additional helpers
    -
    (-> DS
    -    (tc/unique-by :V4)
    -    (tc/row-count)) ;; number of unique rows in `:V4` column, as value
    +
    (-> DS
    +    (tc/unique-by :V4)
    +    (tc/row-count)) ;; number of unique rows in `:V4` column, as value
    3
    -
    (-> DS
    -    (tc/unique-by)
    -    (tc/row-count)) ;; number of unique rows in dataset, as value
    +
    (-> DS
    +    (tc/unique-by)
    +    (tc/row-count)) ;; number of unique rows in dataset, as value
    9
    Add/update/delete columns

    Modify a column

    -
    (tc/map-columns DS :V1 [:V1] #(dfn/pow % 2))
    +
    (tc/map-columns DS :V1 [:V1] #(dfn/pow % 2))

    _unnamed [9 4]:

    @@ -32176,8 +32424,8 @@
    Add/update/delete columns
    -
    (def DS (tc/add-column DS :V1 (dfn/pow (DS :V1) 2)))
    -
    DS
    +
    (def DS (tc/add-column DS :V1 (dfn/pow (DS :V1) 2)))
    +
    DS

    _unnamed [9 4]:

    @@ -32247,7 +32495,7 @@
    Add/update/delete columns

    Add one column

    -
    (tc/map-columns DS :v5 [:V1] dfn/log)
    +
    (tc/map-columns DS :v5 [:V1] dfn/log)

    _unnamed [9 5]:

    @@ -32325,8 +32573,8 @@
    Add/update/delete columns
    -
    (def DS (tc/add-column DS :v5 (dfn/log (DS :V1))))
    -
    DS
    +
    (def DS (tc/add-column DS :v5 (dfn/log (DS :V1))))
    +
    DS

    _unnamed [9 5]:

    @@ -32406,9 +32654,9 @@
    Add/update/delete columns

    Add several columns

    -
    (def DS (tc/add-columns DS {:v6 (dfn/sqrt (DS :V1))
    -                                       :v7 "X"}))
    -
    DS
    +
    (def DS (tc/add-columns DS {:v6 (dfn/sqrt (DS :V1))
    +                                       :v7 "X"}))
    +
    DS

    _unnamed [9 7]:

    @@ -32508,7 +32756,7 @@
    Add/update/delete columns

    Create one column and remove the others

    -
    (tc/dataset {:v8 (dfn/+ (DS :V3) 1)})
    +
    (tc/dataset {:v8 (dfn/+ (DS :V3) 1)})

    _unnamed [9 1]:

    @@ -32548,8 +32796,8 @@
    Add/update/delete columns

    Remove one column

    -
    (def DS (tc/drop-columns DS :v5))
    -
    DS
    +
    (def DS (tc/drop-columns DS :v5))
    +
    DS

    _unnamed [9 6]:

    @@ -32639,8 +32887,8 @@
    Add/update/delete columns

    Remove several columns

    -
    (def DS (tc/drop-columns DS [:v6 :v7]))
    -
    DS
    +
    (def DS (tc/drop-columns DS [:v6 :v7]))
    +
    DS

    _unnamed [9 4]:

    @@ -32711,8 +32959,8 @@
    Add/update/delete columns

    Remove columns using a vector of colnames

    We use set here.

    -
    (def DS (tc/select-columns DS (complement #{:V3})))
    -
    DS
    +
    (def DS (tc/select-columns DS (complement #{:V3})))
    +
    DS

    _unnamed [9 3]:

    @@ -32772,8 +33020,8 @@
    Add/update/delete columns

    Replace values for rows matching a condition

    -
    (def DS (tc/map-columns DS :V2 [:V2] #(if (< % 4.0) 0.0 %)))
    -
    DS
    +
    (def DS (tc/map-columns DS :V2 [:V2] #(if (< % 4.0) 0.0 %)))
    +
    DS

    _unnamed [9 3]:

    @@ -32835,9 +33083,9 @@
    Add/update/delete columns
    by

    By group

    -
    (-> DS
    -    (tc/group-by [:V4])
    -    (tc/aggregate {:sumV2 #(dfn/sum (% :V2))}))
    +
    (-> DS
    +    (tc/group-by [:V4])
    +    (tc/aggregate {:sumV2 #(dfn/sum (% :V2))}))

    _unnamed [3 2]:

    @@ -32863,9 +33111,9 @@
    by

    By several groups

    -
    (-> DS
    -    (tc/group-by [:V4 :V1])
    -    (tc/aggregate {:sumV2 #(dfn/sum (% :V2))}))
    +
    (-> DS
    +    (tc/group-by [:V4 :V1])
    +    (tc/aggregate {:sumV2 #(dfn/sum (% :V2))}))

    _unnamed [6 3]:

    @@ -32910,10 +33158,10 @@
    by

    Calling function in by

    -
    (-> DS
    -    (tc/group-by (fn [row]
    -                    (clojure.string/lower-case (:V4 row))))
    -    (tc/aggregate {:sumV1 #(dfn/sum (% :V1))}))
    +
    (-> DS
    +    (tc/group-by (fn [row]
    +                    (clojure.string/lower-case (:V4 row))))
    +    (tc/aggregate {:sumV1 #(dfn/sum (% :V1))}))

    _unnamed [3 2]:

    @@ -32939,10 +33187,10 @@
    by

    Assigning column name in by

    -
    (-> DS
    -    (tc/group-by (fn [row]
    -                    {:abc (clojure.string/lower-case (:V4 row))}))
    -    (tc/aggregate {:sumV1 #(dfn/sum (% :V1))}))
    +
    (-> DS
    +    (tc/group-by (fn [row]
    +                    {:abc (clojure.string/lower-case (:V4 row))}))
    +    (tc/aggregate {:sumV1 #(dfn/sum (% :V1))}))

    _unnamed [3 2]:

    @@ -32966,10 +33214,10 @@
    by
    -
    (-> DS
    -    (tc/group-by (fn [row]
    -                    (clojure.string/lower-case (:V4 row))))
    -    (tc/aggregate {:sumV1 #(dfn/sum (% :V1))} {:add-group-as-column :abc}))
    +
    (-> DS
    +    (tc/group-by (fn [row]
    +                    (clojure.string/lower-case (:V4 row))))
    +    (tc/aggregate {:sumV1 #(dfn/sum (% :V1))} {:add-group-as-column :abc}))

    _unnamed [3 2]:

    @@ -32995,9 +33243,9 @@
    by

    Using a condition in by

    -
    (-> DS
    -    (tc/group-by #(= (:V4 %) "A"))
    -    (tc/aggregate #(dfn/sum (% :V1))))
    +
    (-> DS
    +    (tc/group-by #(= (:V4 %) "A"))
    +    (tc/aggregate #(dfn/sum (% :V1))))

    _unnamed [2 2]:

    @@ -33019,10 +33267,10 @@
    by

    By on a subset of rows

    -
    (-> DS
    -    (tc/select-rows (range 5))
    -    (tc/group-by :V4)
    -    (tc/aggregate {:sumV1 #(dfn/sum (% :V1))}))
    +
    (-> DS
    +    (tc/select-rows (range 5))
    +    (tc/group-by :V4)
    +    (tc/aggregate {:sumV1 #(dfn/sum (% :V1))}))

    _unnamed [3 2]:

    @@ -33048,9 +33296,9 @@
    by

    Count number of observations for each group

    -
    (-> DS
    -    (tc/group-by :V4)
    -    (tc/aggregate tc/row-count))
    +
    (-> DS
    +    (tc/group-by :V4)
    +    (tc/aggregate tc/row-count))

    _unnamed [3 2]:

    @@ -33076,10 +33324,10 @@
    by

    Add a column with number of observations for each group

    -
    (-> DS
    -    (tc/group-by [:V1])
    -    (tc/add-column :n tc/row-count)
    -    (tc/ungroup))
    +
    (-> DS
    +    (tc/group-by [:V1])
    +    (tc/add-column :n tc/row-count)
    +    (tc/ungroup))

    _unnamed [9 4]:

    @@ -33149,9 +33397,9 @@
    by

    Retrieve the first/last/nth observation for each group

    -
    (-> DS
    -    (tc/group-by [:V4])
    -    (tc/aggregate-columns :V2 first))
    +
    (-> DS
    +    (tc/group-by [:V4])
    +    (tc/aggregate-columns :V2 first))

    _unnamed [3 2]:

    @@ -33175,9 +33423,9 @@
    by
    -
    (-> DS
    -    (tc/group-by [:V4])
    -    (tc/aggregate-columns :V2 last))
    +
    (-> DS
    +    (tc/group-by [:V4])
    +    (tc/aggregate-columns :V2 last))

    _unnamed [3 2]:

    @@ -33201,9 +33449,9 @@
    by
    -
    (-> DS
    -    (tc/group-by [:V4])
    -    (tc/aggregate-columns :V2 #(nth % 1)))
    +
    (-> DS
    +    (tc/group-by [:V4])
    +    (tc/aggregate-columns :V2 #(nth % 1)))

    _unnamed [3 2]:

    @@ -33234,8 +33482,8 @@

    Going further

    Advanced columns manipulation

    Summarise all the columns

    -
    ;; custom max function which works on every type
    -(tc/aggregate-columns DS :all (fn [col] (first (sort #(compare %2 %1) col))))
    +
    ;; custom max function which works on every type
    +(tc/aggregate-columns DS :all (fn [col] (first (sort #(compare %2 %1) col))))

    _unnamed [1 3]:

    @@ -33255,7 +33503,7 @@
    Advanced columns manipulation

    Summarise several columns

    -
    (tc/aggregate-columns DS [:V1 :V2] dfn/mean)
    +
    (tc/aggregate-columns DS [:V1 :V2] dfn/mean)

    _unnamed [1 2]:

    @@ -33273,9 +33521,9 @@
    Advanced columns manipulation

    Summarise several columns by group

    -
    (-> DS
    -    (tc/group-by [:V4])
    -    (tc/aggregate-columns [:V1 :V2] dfn/mean))
    +
    (-> DS
    +    (tc/group-by [:V4])
    +    (tc/aggregate-columns [:V1 :V2] dfn/mean))

    _unnamed [3 3]:

    @@ -33305,11 +33553,11 @@
    Advanced columns manipulation

    Summarise with more than one function by group

    -
    (-> DS
    -    (tc/group-by [:V4])
    -    (tc/aggregate-columns [:V1 :V2] (fn [col]
    -                                       {:sum (dfn/sum col)
    -                                        :mean (dfn/mean col)})))
    +
    (-> DS
    +    (tc/group-by [:V4])
    +    (tc/aggregate-columns [:V1 :V2] (fn [col]
    +                                       {:sum (dfn/sum col)
    +                                        :mean (dfn/mean col)})))

    _unnamed [3 5]:

    @@ -33346,9 +33594,9 @@
    Advanced columns manipulation

    Summarise using a condition

    -
    (-> DS
    -    (tc/select-columns :type/numerical)
    -    (tc/aggregate-columns :all dfn/mean))
    +
    (-> DS
    +    (tc/select-columns :type/numerical)
    +    (tc/aggregate-columns :all dfn/mean))

    _unnamed [1 2]:

    @@ -33366,7 +33614,7 @@
    Advanced columns manipulation

    Modify all the columns

    -
    (tc/update-columns DS :all reverse)
    +
    (tc/update-columns DS :all reverse)

    _unnamed [9 3]:

    @@ -33426,9 +33674,9 @@
    Advanced columns manipulation

    Modify several columns (dropping the others)

    -
    (-> DS
    -    (tc/select-columns [:V1 :V2])
    -    (tc/update-columns :all dfn/sqrt))
    +
    (-> DS
    +    (tc/select-columns [:V1 :V2])
    +    (tc/update-columns :all dfn/sqrt))

    _unnamed [9 2]:

    @@ -33476,9 +33724,9 @@
    Advanced columns manipulation
    -
    (-> DS
    -    (tc/select-columns (complement #{:V4}))
    -    (tc/update-columns :all dfn/exp))
    +
    (-> DS
    +    (tc/select-columns (complement #{:V4}))
    +    (tc/update-columns :all dfn/exp))

    _unnamed [9 2]:

    @@ -33528,8 +33776,8 @@
    Advanced columns manipulation

    Modify several columns (keeping the others)

    -
    (def DS (tc/update-columns DS [:V1 :V2] dfn/sqrt))
    -
    DS
    +
    (def DS (tc/update-columns DS [:V1 :V2] dfn/sqrt))
    +
    DS

    _unnamed [9 3]:

    @@ -33587,8 +33835,8 @@
    Advanced columns manipulation
    -
    (def DS (tc/update-columns DS (complement #{:V4}) #(dfn/pow % 2)))
    -
    DS
    +
    (def DS (tc/update-columns DS (complement #{:V4}) #(dfn/pow % 2)))
    +
    DS

    _unnamed [9 3]:

    @@ -33648,9 +33896,9 @@
    Advanced columns manipulation

    Modify columns using a condition (dropping the others)

    -
    (-> DS
    -    (tc/select-columns :type/numerical)
    -    (tc/update-columns :all #(dfn/- % 1)))
    +
    (-> DS
    +    (tc/select-columns :type/numerical)
    +    (tc/update-columns :all #(dfn/- % 1)))

    _unnamed [9 2]:

    @@ -33700,8 +33948,8 @@
    Advanced columns manipulation

    Modify columns using a condition (keeping the others)

    -
    (def DS (tc/convert-types DS :type/numerical :int32))
    -
    DS
    +
    (def DS (tc/convert-types DS :type/numerical :int32))
    +
    DS

    _unnamed [9 3]:

    @@ -33761,11 +34009,11 @@
    Advanced columns manipulation

    Use a complex expression

    -
    (-> DS
    -    (tc/group-by [:V4])
    -    (tc/head 2)
    -    (tc/add-column :V2 "X")
    -    (tc/ungroup))
    +
    (-> DS
    +    (tc/group-by [:V4])
    +    (tc/head 2)
    +    (tc/add-column :V2 "X")
    +    (tc/ungroup))

    _unnamed [6 3]:

    @@ -33810,11 +34058,11 @@
    Advanced columns manipulation

    Use multiple expressions

    -
    (tc/dataset (let [x (dfn/+ (DS :V1) (dfn/sum (DS :V2)))]
    -               (println (seq (DS :V1)))
    -               (println (tc/info (tc/select-columns DS :V1)))
    -               {:A (range 1 (inc (tc/row-count DS)))
    -                :B x}))
    +
    (tc/dataset (let [x (dfn/+ (DS :V1) (dfn/sum (DS :V2)))]
    +               (println (seq (DS :V1)))
    +               (println (tc/info (tc/select-columns DS :V1)))
    +               {:A (range 1 (inc (tc/row-count DS)))
    +                :B x}))

    (1 4 1 4 1 4 1 4 1) _unnamed: descriptive-stats [1 11]:

    @@ -33912,10 +34160,10 @@
    Advanced columns manipulation
    Chain expressions

    Expression chaining using >

    -
    (-> DS
    -    (tc/group-by [:V4])
    -    (tc/aggregate {:V1sum #(dfn/sum (% :V1))})
    -    (tc/select-rows #(>= (:V1sum %) 5)))
    +
    (-> DS
    +    (tc/group-by [:V4])
    +    (tc/aggregate {:V1sum #(dfn/sum (% :V1))})
    +    (tc/select-rows #(>= (:V1sum %) 5)))

    _unnamed [3 2]:

    @@ -33939,10 +34187,10 @@
    Chain expressions
    -
    (-> DS
    -    (tc/group-by [:V4])
    -    (tc/aggregate {:V1sum #(dfn/sum (% :V1))})
    -    (tc/order-by :V1sum :desc))
    +
    (-> DS
    +    (tc/group-by [:V4])
    +    (tc/aggregate {:V1sum #(dfn/sum (% :V1))})
    +    (tc/order-by :V1sum :desc))

    _unnamed [3 2]:

    @@ -33970,8 +34218,8 @@
    Chain expressions
    Indexing and Keys

    Set the key/index (order)

    -
    (def DS (tc/order-by DS :V4))
    -
    DS
    +
    (def DS (tc/order-by DS :V4))
    +
    DS

    _unnamed [9 3]:

    @@ -34030,7 +34278,7 @@
    Indexing and Keys

    Select the matching rows

    -
    (tc/select-rows DS #(= (:V4 %) "A"))
    +
    (tc/select-rows DS #(= (:V4 %) "A"))

    _unnamed [3 3]:

    @@ -34058,7 +34306,7 @@
    Indexing and Keys
    -
    (tc/select-rows DS (comp #{"A" "C"} :V4))
    +
    (tc/select-rows DS (comp #{"A" "C"} :V4))

    _unnamed [6 3]:

    @@ -34103,9 +34351,9 @@
    Indexing and Keys

    Select the first matching row

    -
    (-> DS
    -    (tc/select-rows #(= (:V4 %) "B"))
    -    (tc/first))
    +
    (-> DS
    +    (tc/select-rows #(= (:V4 %) "B"))
    +    (tc/first))

    _unnamed [1 3]:

    @@ -34123,9 +34371,9 @@
    Indexing and Keys
    -
    (-> DS
    -    (tc/unique-by :V4)
    -    (tc/select-rows (comp #{"B" "C"} :V4)))
    +
    (-> DS
    +    (tc/unique-by :V4)
    +    (tc/select-rows (comp #{"B" "C"} :V4)))

    _unnamed [2 3]:

    @@ -34150,9 +34398,9 @@
    Indexing and Keys

    Select the last matching row

    -
    (-> DS
    -    (tc/select-rows #(= (:V4 %) "A"))
    -    (tc/last))
    +
    (-> DS
    +    (tc/select-rows #(= (:V4 %) "A"))
    +    (tc/last))

    _unnamed [1 3]:

    @@ -34172,7 +34420,7 @@
    Indexing and Keys

    Nomatch argument

    -
    (tc/select-rows DS (comp #{"A" "D"} :V4))
    +
    (tc/select-rows DS (comp #{"A" "D"} :V4))

    _unnamed [3 3]:

    @@ -34202,10 +34450,10 @@
    Indexing and Keys

    Apply a function on the matching rows

    -
    (-> DS
    -    (tc/select-rows (comp #{"A" "C"} :V4))
    -    (tc/aggregate-columns :V1 (fn [col]
    -                                 {:sum (dfn/sum col)})))
    +
    (-> DS
    +    (tc/select-rows (comp #{"A" "C"} :V4))
    +    (tc/aggregate-columns :V1 (fn [col]
    +                                 {:sum (dfn/sum col)})))

    _unnamed [1 1]:

    @@ -34221,10 +34469,10 @@
    Indexing and Keys

    Modify values for matching rows

    -
    (def DS (-> DS
    -            (tc/map-columns :V1 [:V1 :V4] #(if (= %2 "A") 0 %1))
    -            (tc/order-by :V4)))
    -
    DS
    +
    (def DS (-> DS
    +            (tc/map-columns :V1 [:V1 :V4] #(if (= %2 "A") 0 %1))
    +            (tc/order-by :V4)))
    +
    DS

    _unnamed [9 3]:

    @@ -34284,10 +34532,10 @@
    Indexing and Keys

    Use keys in by

    -
    (-> DS
    -    (tc/select-rows (comp (complement #{"B"}) :V4))
    -    (tc/group-by [:V4])
    -    (tc/aggregate-columns :V1 dfn/sum))
    +
    (-> DS
    +    (tc/select-rows (comp (complement #{"B"}) :V4))
    +    (tc/group-by [:V4])
    +    (tc/aggregate-columns :V1 dfn/sum))

    _unnamed [2 2]:

    @@ -34309,7 +34557,7 @@
    Indexing and Keys

    Set keys/indices for multiple columns (ordered)

    -
    (tc/order-by DS [:V4 :V1])
    +
    (tc/order-by DS [:V4 :V1])

    _unnamed [9 3]:

    @@ -34369,9 +34617,9 @@
    Indexing and Keys

    Subset using multiple keys/indices

    -
    (-> DS
    -    (tc/select-rows #(and (= (:V1 %) 1)
    -                           (= (:V4 %) "C"))))
    +
    (-> DS
    +    (tc/select-rows #(and (= (:V1 %) 1)
    +                           (= (:V4 %) "C"))))

    _unnamed [2 3]:

    @@ -34394,9 +34642,9 @@
    Indexing and Keys
    -
    (-> DS
    -    (tc/select-rows #(and (= (:V1 %) 1)
    -                           (#{"B" "C"} (:V4 %)))))
    +
    (-> DS
    +    (tc/select-rows #(and (= (:V1 %) 1)
    +                           (#{"B" "C"} (:V4 %)))))

    _unnamed [3 3]:

    @@ -34424,18 +34672,18 @@
    Indexing and Keys
    -
    (-> DS
    -    (tc/select-rows #(and (= (:V1 %) 1)
    -                           (#{"B" "C"} (:V4 %))) {:result-type :as-indexes}))
    +
    (-> DS
    +    (tc/select-rows #(and (= (:V1 %) 1)
    +                           (#{"B" "C"} (:V4 %))) {:result-type :as-indexes}))
    (4 6 8)
    set*() modifications

    Replace values

    There is no mutating operations tech.ml.dataset or easy way to set value.

    -
    (def DS (tc/update-columns DS :V2 #(map-indexed (fn [idx v]
    -                                                   (if (zero? idx) 3 v)) %)))
    -
    DS
    +
    (def DS (tc/update-columns DS :V2 #(map-indexed (fn [idx v]
    +                                                   (if (zero? idx) 3 v)) %)))
    +
    DS

    _unnamed [9 3]:

    @@ -34495,8 +34743,8 @@
    set*() modifications

    Reorder rows

    -
    (def DS (tc/order-by DS [:V4 :V1] [:asc :desc]))
    -
    DS
    +
    (def DS (tc/order-by DS [:V4 :V1] [:asc :desc]))
    +
    DS

    _unnamed [9 3]:

    @@ -34556,8 +34804,8 @@
    set*() modifications

    Modify colnames

    -
    (def DS (tc/rename-columns DS {:V2 "v2"}))
    -
    DS
    +
    (def DS (tc/rename-columns DS {:V2 "v2"}))
    +
    DS

    _unnamed [9 3]:

    @@ -34615,11 +34863,11 @@
    set*() modifications
    -
    (def DS (tc/rename-columns DS {"v2" :V2})) ;; revert back
    +
    (def DS (tc/rename-columns DS {"v2" :V2})) ;; revert back

    Reorder columns

    -
    (def DS (tc/reorder-columns DS :V4 :V1 :V2))
    -
    DS
    +
    (def DS (tc/reorder-columns DS :V4 :V1 :V2))
    +
    DS

    _unnamed [9 3]:

    @@ -34681,10 +34929,10 @@
    set*() modifications
    Advanced use of by

    Select first/last/… row by group

    -
    (-> DS
    -    (tc/group-by :V4)
    -    (tc/first)
    -    (tc/ungroup))
    +
    (-> DS
    +    (tc/group-by :V4)
    +    (tc/first)
    +    (tc/ungroup))

    _unnamed [3 3]:

    @@ -34712,10 +34960,10 @@
    Advanced use of by
    -
    (-> DS
    -    (tc/group-by :V4)
    -    (tc/select-rows [0 2])
    -    (tc/ungroup))
    +
    (-> DS
    +    (tc/group-by :V4)
    +    (tc/select-rows [0 2])
    +    (tc/ungroup))

    _unnamed [6 3]:

    @@ -34758,10 +35006,10 @@
    Advanced use of by
    -
    (-> DS
    -    (tc/group-by :V4)
    -    (tc/tail 2)
    -    (tc/ungroup))
    +
    (-> DS
    +    (tc/group-by :V4)
    +    (tc/tail 2)
    +    (tc/ungroup))

    _unnamed [6 3]:

    @@ -34806,11 +35054,11 @@
    Advanced use of by

    Select rows using a nested query

    -
    (-> DS
    -    (tc/group-by :V4)
    -    (tc/order-by :V2)
    -    (tc/first)
    -    (tc/ungroup))
    +
    (-> DS
    +    (tc/group-by :V4)
    +    (tc/order-by :V2)
    +    (tc/first)
    +    (tc/ungroup))

    _unnamed [3 3]:

    @@ -34839,9 +35087,9 @@
    Advanced use of by

    Add a group counter column

    -
    (-> DS
    -    (tc/group-by [:V4 :V1])
    -    (tc/ungroup {:add-group-id-as-column :Grp}))
    +
    (-> DS
    +    (tc/group-by [:V4 :V1])
    +    (tc/ungroup {:add-group-id-as-column :Grp}))

    _unnamed [9 4]:

    @@ -34911,11 +35159,11 @@
    Advanced use of by

    Get row number of first (and last) observation by group

    -
    (-> DS
    -    (tc/add-column :row-id (range))
    -    (tc/select-columns [:V4 :row-id])
    -    (tc/group-by :V4)
    -    (tc/ungroup))
    +
    (-> DS
    +    (tc/add-column :row-id (range))
    +    (tc/select-columns [:V4 :row-id])
    +    (tc/group-by :V4)
    +    (tc/ungroup))

    _unnamed [9 2]:

    @@ -34963,12 +35211,12 @@
    Advanced use of by
    -
    (-> DS
    -    (tc/add-column :row-id (range))
    -    (tc/select-columns [:V4 :row-id])
    -    (tc/group-by :V4)
    -    (tc/first)
    -    (tc/ungroup))
    +
    (-> DS
    +    (tc/add-column :row-id (range))
    +    (tc/select-columns [:V4 :row-id])
    +    (tc/group-by :V4)
    +    (tc/first)
    +    (tc/ungroup))

    _unnamed [3 2]:

    @@ -34992,12 +35240,12 @@
    Advanced use of by
    -
    (-> DS
    -    (tc/add-column :row-id (range))
    -    (tc/select-columns [:V4 :row-id])
    -    (tc/group-by :V4)
    -    (tc/select-rows [0 2])
    -    (tc/ungroup))
    +
    (-> DS
    +    (tc/add-column :row-id (range))
    +    (tc/select-columns [:V4 :row-id])
    +    (tc/group-by :V4)
    +    (tc/select-rows [0 2])
    +    (tc/ungroup))

    _unnamed [6 2]:

    @@ -35035,9 +35283,9 @@
    Advanced use of by

    Handle list-columns by group

    -
    (-> DS
    -    (tc/select-columns [:V1 :V4])
    -    (tc/fold-by :V4))
    +
    (-> DS
    +    (tc/select-columns [:V1 :V4])
    +    (tc/fold-by :V4))

    _unnamed [3 2]:

    @@ -35061,9 +35309,9 @@
    Advanced use of by
    -
    (-> DS    
    -    (tc/group-by :V4)
    -    (tc/unmark-group))
    +
    (-> DS    
    +    (tc/group-by :V4)
    +    (tc/unmark-group))

    _unnamed [3 3]:

    @@ -35101,18 +35349,18 @@

    Miscellaneous

    Read / Write data

    Write data to a csv file

    -
    (tc/write! DS "DF.csv")
    -
    nil
    +
    (tc/write! DS "DF.csv")
    +
    10

    Write data to a tab-delimited file

    -
    (tc/write! DS "DF.txt" {:separator \tab})
    -
    nil
    +
    (tc/write! DS "DF.txt" {:separator \tab})
    +
    10

    or

    -
    (tc/write! DS "DF.tsv")
    -
    nil
    +
    (tc/write! DS "DF.tsv")
    +
    10

    Read a csv / tab-delimited file

    -
    (tc/dataset "DF.csv" {:key-fn keyword})
    +
    (tc/dataset "DF.csv" {:key-fn keyword})

    DF.csv [9 3]:

    @@ -35170,7 +35418,7 @@
    Read / Write data
    -
    (tc/dataset "DF.txt" {:key-fn keyword})
    +
    (tc/dataset "DF.txt" {:key-fn keyword})

    DF.txt [9 1]:

    @@ -35208,7 +35456,7 @@
    Read / Write data
    -
    (tc/dataset "DF.tsv" {:key-fn keyword})
    +
    (tc/dataset "DF.tsv" {:key-fn keyword})

    DF.tsv [9 3]:

    @@ -35268,8 +35516,8 @@
    Read / Write data

    Read a csv file selecting / droping columns

    -
    (tc/dataset "DF.csv" {:key-fn keyword
    -                       :column-whitelist ["V1" "V4"]})
    +
    (tc/dataset "DF.csv" {:key-fn keyword
    +                       :column-whitelist ["V1" "V4"]})

    DF.csv [9 2]:

    @@ -35317,8 +35565,8 @@
    Read / Write data
    -
    (tc/dataset "DF.csv" {:key-fn keyword
    -                       :column-blacklist ["V4"]})
    +
    (tc/dataset "DF.csv" {:key-fn keyword
    +                       :column-blacklist ["V4"]})

    DF.csv [9 2]:

    @@ -35368,7 +35616,7 @@
    Read / Write data

    Read and rbind several files

    -
    (apply tc/concat (map tc/dataset ["DF.csv" "DF.csv"]))
    +
    (apply tc/concat (map tc/dataset ["DF.csv" "DF.csv"]))

    DF.csv [18 3]:

    @@ -35475,9 +35723,9 @@
    Read / Write data
    Reshape data

    Melt data (from wide to long)

    -
    (def mDS (tc/pivot->longer DS [:V1 :V2] {:target-columns :variable
    -                                          :value-column-name :value}))
    -
    mDS
    +
    (def mDS (tc/pivot->longer DS [:V1 :V2] {:target-columns :variable
    +                                          :value-column-name :value}))
    +
    mDS

    _unnamed [18 3]:

    @@ -35582,9 +35830,9 @@
    Reshape data

    Cast data (from long to wide)

    -
    (-> mDS
    -    (tc/pivot->wider :variable :value {:fold-fn vec})
    -    (tc/update-columns ["V1" "V2"] (partial map count)))
    +
    (-> mDS
    +    (tc/pivot->wider :variable :value {:fold-fn vec})
    +    (tc/update-columns ["V1" "V2"] (partial map count)))

    _unnamed [3 3]:

    @@ -35612,9 +35860,9 @@
    Reshape data
    -
    (-> mDS
    -    (tc/pivot->wider :variable :value {:fold-fn vec})
    -    (tc/update-columns ["V1" "V2"] (partial map dfn/sum)))
    +
    (-> mDS
    +    (tc/pivot->wider :variable :value {:fold-fn vec})
    +    (tc/update-columns ["V1" "V2"] (partial map dfn/sum)))

    _unnamed [3 3]:

    @@ -35642,10 +35890,10 @@
    Reshape data
    -
    (-> mDS
    -    (tc/map-columns :value #(str (> % 5))) ;; coerce to strings
    -    (tc/pivot->wider :value :variable {:fold-fn vec})
    -    (tc/update-columns ["true" "false"] (partial map #(if (sequential? %) (count %) 1))))
    +
    (-> mDS
    +    (tc/map-columns :value #(str (> % 5))) ;; coerce to strings
    +    (tc/pivot->wider :value :variable {:fold-fn vec})
    +    (tc/update-columns ["true" "false"] (partial map #(if (sequential? %) (count %) 1))))

    _unnamed [3 3]:

    @@ -35675,7 +35923,7 @@
    Reshape data

    Split

    -
    (tc/group-by DS :V4 {:result-type :as-map})
    +
    (tc/group-by DS :V4 {:result-type :as-map})

    {“A” Group: A [3 3]:

    @@ -35760,9 +36008,9 @@
    Reshape data

    }


    Split and transpose a vector/column

    -
    (-> {:a ["A:a" "B:b" "C:c"]}
    -    (tc/dataset)
    -    (tc/separate-column :a [:V1 :V2] ":"))
    +
    (-> {:a ["A:a" "B:b" "C:c"]}
    +    (tc/dataset)
    +    (tc/separate-column :a [:V1 :V2] ":"))

    _unnamed [3 2]:

    @@ -35794,13 +36042,13 @@
    Other

    Join/Bind data sets

    -
    (def x (tc/dataset {"Id" ["A" "B" "C" "C"]
    -                     "X1" [1 3 5 7]
    -                     "XY" ["x2" "x4" "x6" "x8"]}))
    -(def y (tc/dataset {"Id" ["A" "B" "B" "D"]
    -                     "Y1" [1 3 5 7]
    -                     "XY" ["y1" "y3" "y5" "y7"]}))
    -
    x y
    +
    (def x (tc/dataset {"Id" ["A" "B" "C" "C"]
    +                     "X1" [1 3 5 7]
    +                     "XY" ["x2" "x4" "x6" "x8"]}))
    +(def y (tc/dataset {"Id" ["A" "B" "B" "D"]
    +                     "Y1" [1 3 5 7]
    +                     "XY" ["y1" "y3" "y5" "y7"]}))
    +
    x y

    _unnamed [4 3]:

    @@ -35868,7 +36116,7 @@

    Join/Bind data sets

    Join

    Join matching rows from y to x

    -
    (tc/left-join x y "Id")
    +
    (tc/left-join x y "Id")

    left-outer-join [5 6]:

    @@ -35926,7 +36174,7 @@
    Join

    Join matching rows from x to y

    -
    (tc/right-join x y "Id")
    +
    (tc/right-join x y "Id")

    right-outer-join [4 6]:

    @@ -35976,7 +36224,7 @@
    Join

    Join matching rows from both x and y

    -
    (tc/inner-join x y "Id")
    +
    (tc/inner-join x y "Id")

    inner-join [3 5]:

    @@ -36014,7 +36262,7 @@
    Join

    Join keeping all the rows

    -
    (tc/full-join x y "Id")
    +
    (tc/full-join x y "Id")

    full-join [6 6]:

    @@ -36080,7 +36328,7 @@
    Join

    Return rows from x matching y

    -
    (tc/semi-join x y "Id")
    +
    (tc/semi-join x y "Id")

    semi-join [2 3]:

    @@ -36105,7 +36353,7 @@
    Join

    Return rows from x not matching y

    -
    (tc/anti-join x y "Id")
    +
    (tc/anti-join x y "Id")

    anti-join [2 3]:

    @@ -36132,9 +36380,9 @@
    Join
    More joins

    Select columns while joining

    -
    (tc/right-join (tc/select-columns x ["Id" "X1"])
    -                (tc/select-columns y ["Id" "XY"])
    -                "Id")
    +
    (tc/right-join (tc/select-columns x ["Id" "X1"])
    +                (tc/select-columns y ["Id" "XY"])
    +                "Id")

    right-outer-join [4 4]:

    @@ -36172,9 +36420,9 @@
    More joins
    -
    (tc/right-join (tc/select-columns x ["Id" "XY"])
    -                (tc/select-columns y ["Id" "XY"])
    -                "Id")
    +
    (tc/right-join (tc/select-columns x ["Id" "XY"])
    +                (tc/select-columns y ["Id" "XY"])
    +                "Id")

    right-outer-join [4 4]:

    @@ -36213,13 +36461,13 @@
    More joins

    Aggregate columns while joining

    -
    (-> y
    -    (tc/group-by ["Id"])
    -    (tc/aggregate {"sumY1" #(dfn/sum (% "Y1"))})
    -    (tc/right-join x "Id")
    -    (tc/add-column "X1Y1" (fn [ds] (dfn/* (ds "sumY1")
    -                                                    (ds "X1"))))
    -    (tc/select-columns ["right.Id" "X1Y1"]))
    +
    (-> y
    +    (tc/group-by ["Id"])
    +    (tc/aggregate {"sumY1" #(dfn/sum (% "Y1"))})
    +    (tc/right-join x "Id")
    +    (tc/add-column "X1Y1" (fn [ds] (dfn/* (ds "sumY1")
    +                                                    (ds "X1"))))
    +    (tc/select-columns ["right.Id" "X1Y1"]))

    right-outer-join [4 2]:

    @@ -36248,11 +36496,11 @@
    More joins

    Update columns while joining

    -
    (-> x
    -    (tc/select-columns ["Id" "X1"])
    -    (tc/map-columns "SqX1" "X1" (fn [x] (* x x)))
    -    (tc/right-join y "Id")
    -    (tc/drop-columns ["X1" "Id"]))
    +
    (-> x
    +    (tc/select-columns ["Id" "X1"])
    +    (tc/map-columns "SqX1" "X1" (fn [x] (* x x)))
    +    (tc/right-join y "Id")
    +    (tc/drop-columns ["X1" "Id"]))

    right-outer-join [4 4]:

    @@ -36292,9 +36540,9 @@
    More joins

    Adds a list column with rows from y matching x (nest-join)

    -
    (-> (tc/left-join x y "Id")
    -    (tc/drop-columns ["right.Id"])
    -    (tc/fold-by (tc/column-names x)))
    +
    (-> (tc/left-join x y "Id")
    +    (tc/drop-columns ["right.Id"])
    +    (tc/fold-by (tc/column-names x)))

    _unnamed [4 5]:

    @@ -36341,9 +36589,9 @@
    More joins

    Some joins are skipped


    Cross join

    -
    (def cjds (tc/dataset {:V1 [[2 1 1]]
    -                        :V2 [[3 2]]}))
    -
    cjds
    +
    (def cjds (tc/dataset {:V1 [[2 1 1]]
    +                        :V2 [[3 2]]}))
    +
    cjds

    _unnamed [1 2]:

    @@ -36359,7 +36607,7 @@
    More joins
    -
    (reduce #(tc/unroll %1 %2) cjds (tc/column-names cjds))
    +
    (reduce #(tc/unroll %1 %2) cjds (tc/column-names cjds))

    _unnamed [6 2]:

    @@ -36395,8 +36643,8 @@
    More joins
    -
    (-> (reduce #(tc/unroll %1 %2) cjds (tc/column-names cjds))
    -    (tc/unique-by))
    +
    (-> (reduce #(tc/unroll %1 %2) cjds (tc/column-names cjds))
    +    (tc/unique-by))

    _unnamed [4 2]:

    @@ -36427,11 +36675,11 @@
    More joins
    Bind
    -
    (def x (tc/dataset {:V1 [1 2 3]}))
    -(def y (tc/dataset {:V1 [4 5 6]}))
    -(def z (tc/dataset {:V1 [7 8 9]
    -                     :V2 [0 0 0]}))
    -
    x y z
    +
    (def x (tc/dataset {:V1 [1 2 3]}))
    +(def y (tc/dataset {:V1 [4 5 6]}))
    +(def z (tc/dataset {:V1 [7 8 9]
    +                     :V2 [0 0 0]}))
    +
    x y z

    _unnamed [3 1]:

    @@ -36495,7 +36743,7 @@
    Bind

    Bind rows

    -
    (tc/bind x y)
    +
    (tc/bind x y)

    _unnamed [6 1]:

    @@ -36524,7 +36772,7 @@
    Bind
    -
    (tc/bind x z)
    +
    (tc/bind x z)

    _unnamed [6 2]:

    @@ -36562,9 +36810,9 @@
    Bind

    Bind rows using a list

    -
    (->> [x y]
    -     (map-indexed #(tc/add-column %2 :id (repeat %1)))
    -     (apply tc/bind))
    +
    (->> [x y]
    +     (map-indexed #(tc/add-column %2 :id (repeat %1)))
    +     (apply tc/bind))

    _unnamed [6 2]:

    @@ -36602,7 +36850,7 @@
    Bind

    Bind columns

    -
    (tc/append x y)
    +
    (tc/append x y)

    _unnamed [3 2]:

    @@ -36629,9 +36877,9 @@
    Bind
    Set operations
    -
    (def x (tc/dataset {:V1 [1 2 2 3 3]}))
    -(def y (tc/dataset {:V1 [2 2 3 4 4]}))
    -
    x y
    +
    (def x (tc/dataset {:V1 [1 2 2 3 3]}))
    +(def y (tc/dataset {:V1 [2 2 3 4 4]}))
    +
    x y

    _unnamed [5 1]:

    @@ -36684,7 +36932,7 @@
    Set operations

    Intersection

    -
    (tc/intersect x y)
    +
    (tc/intersect x y)

    intersection [2 1]:

    @@ -36703,7 +36951,7 @@
    Set operations

    Difference

    -
    (tc/difference x y)
    +
    (tc/difference x y)

    difference [1 1]:

    @@ -36719,7 +36967,7 @@
    Set operations

    Union

    -
    (tc/union x y)
    +
    (tc/union x y)

    union [4 1]:

    @@ -36742,7 +36990,7 @@
    Set operations
    -
    (tc/concat x y)
    +
    (tc/concat x y)

    _unnamed [10 1]:

    diff --git a/docs/index.md b/docs/index.md index 9f793c4..75a41cc 100644 --- a/docs/index.md +++ b/docs/index.md @@ -29,7 +29,13 @@ pre.r::before { tech-ml-version ``` -“7.000-beta-27” +“7.007” + +``` clojure +tablecloth-version +``` + +“7.007” ## Introduction @@ -108,7 +114,7 @@ DS ### Dataset Dataset is a special type which can be considered as a map of columns -implemented around `tech.ml.datatype` library. Each column can be +implemented around `tech.ml.dataset` library. Each column can be considered as named sequence of typed data. Supported types include integers, floats, string, boolean, date/time, objects etc. @@ -497,7 +503,7 @@ Export dataset to a file or output stream can be done by calling (.exists (clojure.java.io/file "output.tsv.gz")) ``` - nil + 1462 true ##### Nippy @@ -647,6 +653,9 @@ Possible result types: - `:as-double-arrays` - array of double arrays - `:as-vecs` - sequence of vectors (rows) +For `rows` setting `:nil-missing?` option to `false` will elide keys for +nil values. + ----- Select column. @@ -695,7 +704,7 @@ Rows as sequence of sequences (take 2 (tc/rows ds)) ``` - ([#object[java.time.LocalDate 0x30dbcd2e "2012-01-01"] 0.0 12.8 5.0 4.7 "drizzle"] [#object[java.time.LocalDate 0x61771bea "2012-01-02"] 10.9 10.6 2.8 4.5 "rain"]) + ([#object[java.time.LocalDate 0x984a8ff "2012-01-01"] 0.0 12.8 5.0 4.7 "drizzle"] [#object[java.time.LocalDate 0x50abffbb "2012-01-02"] 10.9 10.6 2.8 4.5 "rain"]) ----- @@ -708,7 +717,7 @@ Select rows/columns as double-double-array (tc/rows :as-double-arrays)) ``` - #object["[[D" 0x6234753e "[[D@6234753e"] + #object["[[D" 0x79132c97 "[[D@79132c97"] ``` clojure (-> ds @@ -717,7 +726,7 @@ Select rows/columns as double-double-array (tc/columns :as-double-arrays)) ``` - #object["[[D" 0xd1d2ef "[[D@d1d2ef"] + #object["[[D" 0x20054172 "[[D@20054172"] ----- @@ -727,19 +736,43 @@ Rows as sequence of maps (clojure.pprint/pprint (take 2 (tc/rows ds :as-maps))) ``` - ({"date" #object[java.time.LocalDate 0x31e18a3b "2012-01-01"], + ({"date" #object[java.time.LocalDate 0x2568ac82 "2012-01-01"], "precipitation" 0.0, "temp_max" 12.8, "temp_min" 5.0, "wind" 4.7, "weather" "drizzle"} - {"date" #object[java.time.LocalDate 0x4a5e789a "2012-01-02"], + {"date" #object[java.time.LocalDate 0x1eb7b9b5 "2012-01-02"], "precipitation" 10.9, "temp_max" 10.6, "temp_min" 2.8, "wind" 4.5, "weather" "rain"}) +----- + +Rows with missing values + +``` clojure +(-> {:a [1 nil 2] + :b [3 4 nil]} + (tc/dataset) + (tc/rows :as-maps)) +``` + + [{:a 1, :b 3} {:a nil, :b 4} {:a 2, :b nil}] + +Rows with elided missing values + +``` clojure +(-> {:a [1 nil 2] + :b [3 4 nil]} + (tc/dataset) + (tc/rows :as-maps {:nil-missing? false})) +``` + + [{:a 1, :b 3} {:b 4} {:a 2}] + #### Single entry Get single value from the table using `get-in` from Clojure API or @@ -838,15 +871,14 @@ Grouping is done by calling `group-by` function with arguments: - `ds` - dataset - `grouping-selector` - what to use for grouping - options: - - `:result-type` - what to return: - - `:as-dataset` (default) - return grouped dataset - - `:as-indexes` - return rows ids (row number from original - dataset) - - `:as-map` - return map with group names as keys and - subdataset as values - - `:as-seq` - return sequens of subdatasets - - `:select-keys` - list of the columns passed to a grouping - selector function + - `:result-type` - what to return: + - `:as-dataset` (default) - return grouped dataset + - `:as-indexes` - return rows ids (row number from original dataset) + - `:as-map` - return map with group names as keys and subdataset as + values + - `:as-seq` - return sequens of subdatasets + - `:select-keys` - list of the columns passed to a grouping selector + function All subdatasets (groups) have set name as the group name, additionally `group-id` is in meta. @@ -1659,9 +1691,8 @@ datasets. Result should be a dataset to have ungrouping working. ### Columns -Column is a special `tech.ml.dataset` structure based on -`tech.ml.datatype` library. For our purposes we cat treat columns as -typed and named sequence bound to particular dataset. +Column is a special `tech.ml.dataset` structure. For our purposes we cat +treat columns as typed and named sequence bound to particular dataset. Type of the data is inferred from a sequence during column creation. @@ -2046,7 +2077,7 @@ You can also pass mapping function with optional columns-selector \_unnamed \[9 4\]: -| v1 | v2 | \[1 2 3\] | | +| v1 | v2 | \[1 2 3\] | | | -: | -: | --------: | --------------------------- | | 1 | 1 | 0.5 | A | | 2 | 2 | 1.0 | B | @@ -2118,7 +2149,7 @@ Function works on grouped dataset {1 Group: 1 \[5 4\]: -| v1 | v2 | \[1 2 3\] | | +| v1 | v2 | \[1 2 3\] | | | -: | -: | --------: | --------------------------- | | 1 | 1 | 0.5 | A | | 1 | 3 | 1.5 | C | @@ -2128,7 +2159,7 @@ Function works on grouped dataset , 2 Group: 2 \[4 4\]: -| v1 | v2 | \[1 2 3\] | | +| v1 | v2 | \[1 2 3\] | | | -: | -: | --------: | --------------------------- | | 2 | 2 | 1.0 | B | | 2 | 4 | 0.5 | A | @@ -2191,15 +2222,15 @@ Replace one column (column is trimmed) | :V1 | :V2 | :V3 | :V4 | | ---------: | --: | --: | --- | -| 0.50854543 | 1 | 0.5 | A | -| 0.47556577 | 2 | 1.0 | B | -| 0.98619343 | 3 | 1.5 | C | -| 0.10168184 | 4 | 0.5 | A | -| 0.93917738 | 5 | 1.0 | B | -| 0.00869040 | 6 | 1.5 | C | -| 0.16006011 | 7 | 0.5 | A | -| 0.41991088 | 8 | 1.0 | B | -| 0.42532345 | 9 | 1.5 | C | +| 0.57042246 | 1 | 0.5 | A | +| 0.13578430 | 2 | 1.0 | B | +| 0.25321219 | 3 | 1.5 | C | +| 0.57857626 | 4 | 0.5 | A | +| 0.16028849 | 5 | 1.0 | B | +| 0.72316224 | 6 | 1.5 | C | +| 0.88658725 | 7 | 0.5 | A | +| 0.34244968 | 8 | 1.0 | B | +| 0.47768587 | 9 | 1.5 | C | ----- @@ -2472,15 +2503,15 @@ the map. | :V1 | :V2 | :V3 | :V4 | | --: | --: | --: | --- | +| 1 | 3 | 0.5 | A | +| 2 | 4 | 1.0 | B | +| 1 | 5 | 1.5 | C | +| 2 | 2 | 0.5 | A | +| 1 | 8 | 1.0 | B | +| 2 | 7 | 1.5 | C | | 1 | 6 | 0.5 | A | -| 2 | 2 | 1.0 | B | -| 1 | 8 | 1.5 | C | -| 2 | 3 | 0.5 | A | -| 1 | 9 | 1.0 | B | -| 2 | 5 | 1.5 | C | -| 1 | 1 | 0.5 | A | -| 2 | 7 | 1.0 | B | -| 1 | 4 | 1.5 | C | +| 2 | 9 | 1.0 | B | +| 1 | 1 | 1.5 | C | #### Map @@ -2734,7 +2765,7 @@ Double array conversion. (tc/->array DS :V1) ``` - #object["[J" 0x5a9a8dc8 "[J@5a9a8dc8"] + #object["[J" 0x25e3f530 "[J@25e3f530"] ----- @@ -2746,7 +2777,7 @@ Function also works on grouped dataset (tc/->array :V2)) ``` - (#object["[J" 0x3cfdb2e6 "[J@3cfdb2e6"] #object["[J" 0x332062a1 "[J@332062a1"] #object["[J" 0x6d958571 "[J@6d958571"]) + (#object["[J" 0x25fd244e "[J@25fd244e"] #object["[J" 0x7f84339b "[J@7f84339b"] #object["[J" 0x748c0b55 "[J@748c0b55"]) ----- @@ -2757,8 +2788,8 @@ You can also cast the type to the other one (if casting is possible): (tc/->array DS :V1 :float32) ``` - #object["[Ljava.lang.String;" 0x49dbb23d "[Ljava.lang.String;@49dbb23d"] - #object["[F" 0x63052b58 "[F@63052b58"] + #object["[Ljava.lang.String;" 0x777b4fdc "[Ljava.lang.String;@777b4fdc"] + #object["[F" 0x562064e1 "[F@562064e1"] ### Rows @@ -2982,7 +3013,7 @@ Random row (single) | :V1 | :V2 | :V3 | :V4 | | --: | --: | --: | --- | -| 2 | 6 | 1.5 | C | +| 1 | 7 | 0.5 | A | ----- @@ -3010,15 +3041,15 @@ Random `n` (default: row count) rows with repetition. | :V1 | :V2 | :V3 | :V4 | | --: | --: | --: | --- | +| 1 | 7 | 0.5 | A | +| 2 | 2 | 1.0 | B | +| 2 | 4 | 0.5 | A | +| 1 | 5 | 1.0 | B | | 2 | 8 | 1.0 | B | -| 2 | 6 | 1.5 | C | +| 2 | 2 | 1.0 | B | | 1 | 3 | 1.5 | C | | 2 | 4 | 0.5 | A | -| 2 | 4 | 0.5 | A | -| 2 | 4 | 0.5 | A | | 1 | 1 | 0.5 | A | -| 2 | 4 | 0.5 | A | -| 1 | 3 | 1.5 | C | ----- @@ -3032,10 +3063,10 @@ Five random rows with repetition | :V1 | :V2 | :V3 | :V4 | | --: | --: | --: | --- | -| 2 | 2 | 1.0 | B | | 2 | 6 | 1.5 | C | -| 2 | 8 | 1.0 | B | -| 1 | 5 | 1.0 | B | +| 1 | 9 | 1.5 | C | +| 2 | 6 | 1.5 | C | +| 1 | 1 | 0.5 | A | | 2 | 2 | 1.0 | B | ----- @@ -3050,11 +3081,11 @@ Five random, non-repeating rows | :V1 | :V2 | :V3 | :V4 | | --: | --: | --: | --- | -| 2 | 4 | 0.5 | A | -| 1 | 3 | 1.5 | C | -| 1 | 9 | 1.5 | C | +| 1 | 1 | 0.5 | A | | 2 | 6 | 1.5 | C | +| 1 | 3 | 1.5 | C | | 1 | 7 | 0.5 | A | +| 2 | 8 | 1.0 | B | ----- @@ -3086,15 +3117,15 @@ Shuffle dataset | :V1 | :V2 | :V3 | :V4 | | --: | --: | --: | --- | -| 2 | 6 | 1.5 | C | -| 1 | 1 | 0.5 | A | -| 1 | 5 | 1.0 | B | -| 1 | 9 | 1.5 | C | | 2 | 4 | 0.5 | A | | 1 | 3 | 1.5 | C | | 2 | 8 | 1.0 | B | +| 1 | 9 | 1.5 | C | +| 1 | 5 | 1.0 | B | | 2 | 2 | 1.0 | B | +| 1 | 1 | 0.5 | A | | 1 | 7 | 0.5 | A | +| 2 | 6 | 1.5 | C | ----- @@ -3222,21 +3253,21 @@ Select 5 random rows from each group | :V1 | :V2 | :V3 | :V4 | | --: | --: | --: | --- | -| 2 | 4 | 0.5 | A | | 1 | 1 | 0.5 | A | -| 2 | 4 | 0.5 | A | | 1 | 1 | 0.5 | A | | 1 | 7 | 0.5 | A | -| 2 | 8 | 1.0 | B | +| 1 | 1 | 0.5 | A | +| 1 | 7 | 0.5 | A | +| 1 | 5 | 1.0 | B | | 2 | 2 | 1.0 | B | +| 1 | 5 | 1.0 | B | | 2 | 8 | 1.0 | B | | 2 | 8 | 1.0 | B | -| 1 | 5 | 1.0 | B | -| 2 | 6 | 1.5 | C | -| 2 | 6 | 1.5 | C | +| 1 | 3 | 1.5 | C | | 2 | 6 | 1.5 | C | -| 1 | 9 | 1.5 | C | | 1 | 3 | 1.5 | C | +| 1 | 3 | 1.5 | C | +| 2 | 6 | 1.5 | C | ### Aggregate @@ -3879,7 +3910,7 @@ Random | :V1 | :V2 | :V3 | :V4 | | --: | --: | --: | --- | -| 1 | 7 | 0.5 | A | +| 1 | 5 | 1.0 | B | | 2 | 8 | 1.0 | B | ----- @@ -4105,9 +4136,10 @@ Missing values can be replaced using several strategies. - column selector, default: `:all` - strategy, default: `:nearest` - value (optional) - - single value - - sequence of values (cycled) - - function, applied on column(s) with stripped missings + - single value + - sequence of values (cycled) + - function, applied on column(s) with stripped missings + - map with \[index,value\] pairs Strategies are: @@ -4297,6 +4329,34 @@ Replace missing with a function (mean) ----- +Replace missing some missing values with a map + +``` clojure +(tc/replace-missing DSm2 :a :value {0 100 1 -100 14 -1000}) +``` + +\_unnamed \[15 2\]: + +| :a | :b | +| -------: | -: | +| 100.0 | 2 | +| \-100.0 | 2 | +| | 2 | +| 1.0 | | +| 2.0 | | +| | | +| | | +| | | +| | | +| | 13 | +| 4.0 | | +| | 3 | +| 11.0 | 4 | +| | 5 | +| \-1000.0 | 5 | + +----- + Using `:down` strategy, fills gaps with values from above. You can see that if missings are at the beginning, the are filled with first value @@ -5333,9 +5393,9 @@ and the other way around: | :x | :y | |----|-------------| - | :a | [D@7113e08d | - | :b | [D@6f8ff734 | - | :c | [D@4f848b2c | + | :a | [D@7e2283b5 | + | :b | [D@3053ba90 | + | :c | [D@2914b2c4 | ### Fold/Unroll Rows @@ -6036,10 +6096,10 @@ pnl | :x | :a | :b | :y1 | :y2 | :z1 | :z2 | | -: | -: | -: | ---------: | ---------: | --: | --: | -| 1 | 1 | 0 | 0.99642662 | 0.93875701 | 3 | \-2 | -| 2 | 1 | 1 | 0.08214438 | 0.12594286 | 3 | \-2 | -| 3 | 0 | 1 | 0.87562645 | 0.41126123 | 3 | \-2 | -| 4 | 0 | 1 | 0.00039982 | 0.97374802 | 3 | \-2 | +| 1 | 1 | 0 | 0.27096269 | 0.62880649 | 3 | \-2 | +| 2 | 1 | 1 | 0.40219530 | 0.89099479 | 3 | \-2 | +| 3 | 0 | 1 | 0.50153305 | 0.76501136 | 3 | \-2 | +| 4 | 0 | 1 | 0.23239340 | 0.63105024 | 3 | \-2 | ``` clojure (tc/pivot->longer pnl [:y1 :y2 :z1 :z2] {:target-columns [nil :times] @@ -6050,14 +6110,14 @@ pnl | :x | :a | :b | :times | y | z | | -: | -: | -: | -----: | ---------: | --: | -| 1 | 1 | 0 | 1 | 0.99642662 | 3 | -| 2 | 1 | 1 | 1 | 0.08214438 | 3 | -| 3 | 0 | 1 | 1 | 0.87562645 | 3 | -| 4 | 0 | 1 | 1 | 0.00039982 | 3 | -| 1 | 1 | 0 | 2 | 0.93875701 | \-2 | -| 2 | 1 | 1 | 2 | 0.12594286 | \-2 | -| 3 | 0 | 1 | 2 | 0.41126123 | \-2 | -| 4 | 0 | 1 | 2 | 0.97374802 | \-2 | +| 1 | 1 | 0 | 1 | 0.27096269 | 3 | +| 2 | 1 | 1 | 1 | 0.40219530 | 3 | +| 3 | 0 | 1 | 1 | 0.50153305 | 3 | +| 4 | 0 | 1 | 1 | 0.23239340 | 3 | +| 1 | 1 | 0 | 2 | 0.62880649 | \-2 | +| 2 | 1 | 1 | 2 | 0.89099479 | \-2 | +| 3 | 0 | 1 | 2 | 0.76501136 | \-2 | +| 4 | 0 | 1 | 2 | 0.63105024 | \-2 | #### Wider @@ -6915,6 +6975,11 @@ column names separate for left and right dataset. The difference between `tech.ml.dataset` join functions are: arguments order (first datasets) and possibility to join on multiple columns. +Multiple columns joins create temporary index column from column +selection. The method for creating index is based on `:hashing` option +and defaults to `identity`. Prior to `7.000-beta-50` `hash` function was +used, which caused hash collision for certain cases. + Additionally set operations are defined: `intersect` and `difference`. To concat two datasets rowwise you can choose: @@ -7649,6 +7714,40 @@ anti-join \[4 5\]: | 7 | 4 | 106 | t | X | | 8 | 2 | 104 | b | X | +#### Hashing + +When `:hashing` option is used, data from join columns are preprocessed +by applying `join-columns` funtion with `:result-type` set to the value +of `:hashing`. This helps to create custom joining behaviour. Function +used for hashing will get vector of row values from join columns. + +In the following example we will join columns on value modulo 5. + +``` clojure +(tc/left-join ds1 ds2 :b {:hashing (fn [[v]] (mod v 5))}) +``` + +left-outer-join \[16 8\]: + +| :a | :b | :c | :right.a | :right.b | :right.c | :d | :e | +| -: | --: | -- | -------: | -------: | -------- | -- | -: | +| 3 | 105 | t | | 110 | d | X | 3 | +| 2 | 104 | | 1 | 109 | a | X | 4 | +| 4 | 109 | t | 1 | 109 | a | X | 4 | +| 1 | 103 | s | 2 | 108 | t | X | 5 | +| | 108 | c | 2 | 108 | t | X | 5 | +| 2 | 102 | b | 5 | 107 | a | X | 6 | +| | 107 | a | 5 | 107 | a | X | 6 | +| 1 | 101 | a | 4 | 106 | t | X | 7 | +| 4 | 106 | r | 4 | 106 | t | X | 7 | +| 3 | 105 | t | 3 | 105 | a | X | | +| 2 | 104 | | 2 | 104 | b | X | 8 | +| 4 | 109 | t | 2 | 104 | b | X | 8 | +| 1 | 103 | s | 1 | 103 | l | X | 1 | +| | 108 | c | 1 | 103 | l | X | 1 | +| 2 | 102 | b | | 102 | e | X | 1 | +| | 107 | a | | 102 | e | X | 1 | + #### Cross Cross product from selected columns @@ -8008,28 +8107,28 @@ asof-\>= \[3 4\]: | :V1 | :V2 | :V3 | :V4 | | --: | --: | --: | --- | -| 1 | 7 | 0.5 | A | -| 1 | 9 | 1.5 | C | -| 1 | 1 | 0.5 | A | -| 1 | 5 | 1.0 | B | -| 2 | 6 | 1.5 | C | | 2 | 2 | 1.0 | B | -| 2 | 2 | 1.0 | B | -| 2 | 4 | 0.5 | A | | 1 | 3 | 1.5 | C | -| 2 | 6 | 1.5 | C | -| … | … | … | … | -| 2 | 6 | 1.5 | C | -| 1 | 1 | 0.5 | A | | 1 | 5 | 1.0 | B | | 1 | 1 | 0.5 | A | -| 1 | 1 | 0.5 | A | | 1 | 5 | 1.0 | B | | 2 | 6 | 1.5 | C | -| 2 | 2 | 1.0 | B | -| 1 | 5 | 1.0 | B | +| 1 | 9 | 1.5 | C | +| 1 | 9 | 1.5 | C | +| 2 | 4 | 0.5 | A | | 1 | 7 | 0.5 | A | +| … | … | … | … | +| 1 | 1 | 0.5 | A | +| 2 | 2 | 1.0 | B | +| 2 | 2 | 1.0 | B | +| 1 | 9 | 1.5 | C | +| 2 | 8 | 1.0 | B | +| 2 | 8 | 1.0 | B | | 1 | 3 | 1.5 | C | +| 2 | 4 | 0.5 | A | +| 1 | 7 | 0.5 | A | +| 2 | 4 | 0.5 | A | +| 2 | 4 | 0.5 | A | ##### Concat grouped dataset @@ -8092,15 +8191,15 @@ union \[9 4\]: | :V1 | :V2 | :V3 | :V4 | | --: | --: | --: | --- | +| 2 | 2 | 1.0 | B | | 1 | 3 | 1.5 | C | | 2 | 8 | 1.0 | B | | 1 | 9 | 1.5 | C | -| 1 | 5 | 1.0 | B | | 1 | 1 | 0.5 | A | +| 1 | 5 | 1.0 | B | +| 1 | 7 | 0.5 | A | | 2 | 4 | 0.5 | A | | 2 | 6 | 1.5 | C | -| 2 | 2 | 1.0 | B | -| 1 | 7 | 0.5 | A | #### Bind @@ -8289,28 +8388,28 @@ for-splitting | :id | :partition | :group | | --: | ---------- | ------ | -| 0 | :a | :g3 | +| 0 | :a | :g2 | | 1 | :a | :g2 | | 2 | :a | :g1 | -| 3 | :a | :g3 | -| 4 | :a | :g2 | -| 5 | :a | :g1 | -| 6 | :a | :g3 | +| 3 | :a | :g1 | +| 4 | :a | :g1 | +| 5 | :a | :g2 | +| 6 | :a | :g1 | | 7 | :a | :g3 | | 8 | :a | :g1 | -| 9 | :a | :g3 | +| 9 | :a | :g1 | | … | … | … | -| 14 | :a | :g1 | -| 15 | :a | :g3 | -| 16 | :a | :g3 | +| 14 | :a | :g3 | +| 15 | :a | :g1 | +| 16 | :a | :g2 | | 17 | :a | :g3 | -| 18 | :a | :g3 | +| 18 | :a | :g1 | | 19 | :a | :g1 | -| 20 | :b | :g1 | +| 20 | :b | :g2 | | 21 | :b | :g2 | -| 22 | :b | :g1 | -| 23 | :b | :g1 | -| 24 | :b | :g2 | +| 22 | :b | :g3 | +| 23 | :b | :g2 | +| 24 | :b | :g1 | #### k-Fold @@ -8326,36 +8425,36 @@ Returns `k=5` maps | :id | :partition | :group | :\(split-name | :\)split-id | | | --: | ---------- | ------ | --------------------------- | -: | -| 14 | :a | :g1 | :train | 0 | -| 21 | :b | :g2 | :train | 0 | -| 12 | :a | :g2 | :train | 0 | -| 16 | :a | :g3 | :train | 0 | +| 8 | :a | :g1 | :train | 0 | | 17 | :a | :g3 | :train | 0 | -| 13 | :a | :g3 | :train | 0 | -| 20 | :b | :g1 | :train | 0 | -| 15 | :a | :g3 | :train | 0 | -| 6 | :a | :g3 | :train | 0 | -| 7 | :a | :g3 | :train | 0 | -| 3 | :a | :g3 | :train | 0 | -| 4 | :a | :g2 | :train | 0 | +| 13 | :a | :g2 | :train | 0 | +| 23 | :b | :g2 | :train | 0 | | 2 | :a | :g1 | :train | 0 | -| 24 | :b | :g2 | :train | 0 | +| 15 | :a | :g1 | :train | 0 | +| 7 | :a | :g3 | :train | 0 | +| 20 | :b | :g2 | :train | 0 | +| 22 | :b | :g3 | :train | 0 | +| 14 | :a | :g3 | :train | 0 | | 11 | :a | :g2 | :train | 0 | -| 23 | :b | :g1 | :train | 0 | -| 10 | :a | :g2 | :train | 0 | -| 18 | :a | :g3 | :train | 0 | +| 4 | :a | :g1 | :train | 0 | +| 1 | :a | :g2 | :train | 0 | +| 6 | :a | :g1 | :train | 0 | +| 0 | :a | :g2 | :train | 0 | +| 16 | :a | :g2 | :train | 0 | +| 12 | :a | :g2 | :train | 0 | +| 18 | :a | :g1 | :train | 0 | | 19 | :a | :g1 | :train | 0 | -| 8 | :a | :g1 | :train | 0 | -| 22 | :b | :g1 | :test | 0 | -| 5 | :a | :g1 | :test | 0 | -| 1 | :a | :g2 | :test | 0 | -| 9 | :a | :g3 | :test | 0 | -| 0 | :a | :g3 | :test | 0 | -| 22 | :b | :g1 | :train | 1 | -| 5 | :a | :g1 | :train | 1 | -| 1 | :a | :g2 | :train | 1 | -| 9 | :a | :g3 | :train | 1 | -| 0 | :a | :g3 | :train | 1 | +| 5 | :a | :g2 | :train | 0 | +| 24 | :b | :g1 | :test | 0 | +| 3 | :a | :g1 | :test | 0 | +| 9 | :a | :g1 | :test | 0 | +| 10 | :a | :g3 | :test | 0 | +| 21 | :b | :g2 | :test | 0 | +| 24 | :b | :g1 | :train | 1 | +| 3 | :a | :g1 | :train | 1 | +| 9 | :a | :g1 | :train | 1 | +| 10 | :a | :g3 | :train | 1 | +| 21 | :b | :g2 | :train | 1 | Partition according to `:k` column to reflect it’s distribution @@ -8369,36 +8468,36 @@ Partition according to `:k` column to reflect it’s distribution | :id | :partition | :group | :\(split-name | :\)split-id | | | --: | ---------- | ------ | --------------------------- | -: | -| 6 | :a | :g3 | :train | 0 | -| 9 | :a | :g3 | :train | 0 | -| 17 | :a | :g3 | :train | 0 | -| 13 | :a | :g3 | :train | 0 | -| 11 | :a | :g2 | :train | 0 | -| 5 | :a | :g1 | :train | 0 | -| 1 | :a | :g2 | :train | 0 | -| 18 | :a | :g3 | :train | 0 | -| 10 | :a | :g2 | :train | 0 | -| 19 | :a | :g1 | :train | 0 | -| 3 | :a | :g3 | :train | 0 | -| 4 | :a | :g2 | :train | 0 | | 2 | :a | :g1 | :train | 0 | +| 18 | :a | :g1 | :train | 0 | +| 17 | :a | :g3 | :train | 0 | | 8 | :a | :g1 | :train | 0 | -| 0 | :a | :g3 | :train | 0 | -| 14 | :a | :g1 | :train | 0 | +| 12 | :a | :g2 | :train | 0 | +| 3 | :a | :g1 | :train | 0 | +| 13 | :a | :g2 | :train | 0 | +| 19 | :a | :g1 | :train | 0 | +| 14 | :a | :g3 | :train | 0 | +| 1 | :a | :g2 | :train | 0 | +| 11 | :a | :g2 | :train | 0 | +| 9 | :a | :g1 | :train | 0 | +| 10 | :a | :g3 | :train | 0 | +| 5 | :a | :g2 | :train | 0 | +| 15 | :a | :g1 | :train | 0 | +| 4 | :a | :g1 | :train | 0 | | 7 | :a | :g3 | :test | 0 | -| 15 | :a | :g3 | :test | 0 | -| 12 | :a | :g2 | :test | 0 | -| 16 | :a | :g3 | :test | 0 | +| 16 | :a | :g2 | :test | 0 | +| 6 | :a | :g1 | :test | 0 | +| 0 | :a | :g2 | :test | 0 | | 7 | :a | :g3 | :train | 1 | -| 15 | :a | :g3 | :train | 1 | +| 16 | :a | :g2 | :train | 1 | +| 6 | :a | :g1 | :train | 1 | +| 0 | :a | :g2 | :train | 1 | | 12 | :a | :g2 | :train | 1 | -| 16 | :a | :g3 | :train | 1 | -| 11 | :a | :g2 | :train | 1 | -| 5 | :a | :g1 | :train | 1 | -| 1 | :a | :g2 | :train | 1 | -| 18 | :a | :g3 | :train | 1 | -| 10 | :a | :g2 | :train | 1 | +| 3 | :a | :g1 | :train | 1 | +| 13 | :a | :g2 | :train | 1 | | 19 | :a | :g1 | :train | 1 | +| 14 | :a | :g3 | :train | 1 | +| 1 | :a | :g2 | :train | 1 | #### Bootstrap @@ -8410,28 +8509,28 @@ Partition according to `:k` column to reflect it’s distribution | :id | :partition | :group | :\(split-name | :\)split-id | | | --: | ---------- | ------ | --------------------------- | -: | -| 5 | :a | :g1 | :train | 0 | +| 12 | :a | :g2 | :train | 0 | +| 1 | :a | :g2 | :train | 0 | | 2 | :a | :g1 | :train | 0 | -| 16 | :a | :g3 | :train | 0 | -| 6 | :a | :g3 | :train | 0 | | 19 | :a | :g1 | :train | 0 | -| 20 | :b | :g1 | :train | 0 | -| 21 | :b | :g2 | :train | 0 | -| 9 | :a | :g3 | :train | 0 | -| 23 | :b | :g1 | :train | 0 | -| 5 | :a | :g1 | :train | 0 | +| 2 | :a | :g1 | :train | 0 | +| 12 | :a | :g2 | :train | 0 | +| 2 | :a | :g1 | :train | 0 | +| 1 | :a | :g2 | :train | 0 | +| 0 | :a | :g2 | :train | 0 | +| 8 | :a | :g1 | :train | 0 | | … | … | … | … | … | -| 9 | :a | :g3 | :train | 0 | -| 22 | :b | :g1 | :train | 0 | -| 0 | :a | :g3 | :test | 0 | -| 3 | :a | :g3 | :test | 0 | -| 4 | :a | :g2 | :test | 0 | -| 7 | :a | :g3 | :test | 0 | -| 8 | :a | :g1 | :test | 0 | -| 10 | :a | :g2 | :test | 0 | -| 17 | :a | :g3 | :test | 0 | -| 18 | :a | :g3 | :test | 0 | -| 24 | :b | :g2 | :test | 0 | +| 22 | :b | :g3 | :train | 0 | +| 15 | :a | :g1 | :train | 0 | +| 3 | :a | :g1 | :test | 0 | +| 5 | :a | :g2 | :test | 0 | +| 6 | :a | :g1 | :test | 0 | +| 9 | :a | :g1 | :test | 0 | +| 11 | :a | :g2 | :test | 0 | +| 13 | :a | :g2 | :test | 0 | +| 16 | :a | :g2 | :test | 0 | +| 21 | :b | :g2 | :test | 0 | +| 23 | :b | :g2 | :test | 0 | with repeats, to get 100 splits @@ -8457,28 +8556,28 @@ with small ratio | :id | :partition | :group | :\(split-name | :\)split-id | | | --: | ---------- | ------ | --------------------------- | -: | -| 11 | :a | :g2 | :train | 0 | -| 17 | :a | :g3 | :train | 0 | -| 20 | :b | :g1 | :train | 0 | -| 0 | :a | :g3 | :train | 0 | -| 15 | :a | :g3 | :train | 0 | -| 14 | :a | :g1 | :test | 0 | -| 3 | :a | :g3 | :test | 0 | -| 18 | :a | :g3 | :test | 0 | -| 1 | :a | :g2 | :test | 0 | +| 7 | :a | :g3 | :train | 0 | +| 21 | :b | :g2 | :train | 0 | +| 22 | :b | :g3 | :train | 0 | +| 12 | :a | :g2 | :train | 0 | +| 5 | :a | :g2 | :train | 0 | +| 13 | :a | :g2 | :test | 0 | +| 17 | :a | :g3 | :test | 0 | +| 8 | :a | :g1 | :test | 0 | | 2 | :a | :g1 | :test | 0 | +| 15 | :a | :g1 | :test | 0 | | … | … | … | … | … | -| 9 | :a | :g3 | :test | 0 | -| 16 | :a | :g3 | :test | 0 | -| 13 | :a | :g3 | :test | 0 | -| 6 | :a | :g3 | :test | 0 | -| 24 | :b | :g2 | :test | 0 | -| 23 | :b | :g1 | :test | 0 | -| 8 | :a | :g1 | :test | 0 | -| 5 | :a | :g1 | :test | 0 | -| 10 | :a | :g2 | :test | 0 | +| 1 | :a | :g2 | :test | 0 | +| 3 | :a | :g1 | :test | 0 | +| 23 | :b | :g2 | :test | 0 | +| 6 | :a | :g1 | :test | 0 | | 19 | :a | :g1 | :test | 0 | -| 7 | :a | :g3 | :test | 0 | +| 24 | :b | :g1 | :test | 0 | +| 10 | :a | :g3 | :test | 0 | +| 9 | :a | :g1 | :test | 0 | +| 14 | :a | :g3 | :test | 0 | +| 18 | :a | :g1 | :test | 0 | +| 16 | :a | :g2 | :test | 0 | you can split to more than two subdatasets with holdout @@ -8490,28 +8589,28 @@ you can split to more than two subdatasets with holdout | :id | :partition | :group | :\(split-name | :\)split-id | | | --: | ---------- | ------ | --------------------------- | -: | -| 15 | :a | :g3 | :train | 0 | -| 5 | :a | :g1 | :train | 0 | -| 23 | :b | :g1 | :test | 0 | -| 17 | :a | :g3 | :test | 0 | -| 12 | :a | :g2 | :test | 0 | -| 19 | :a | :g1 | :test | 0 | -| 24 | :b | :g2 | :test | 0 | -| 22 | :b | :g1 | :split-2 | 0 | -| 3 | :a | :g3 | :split-2 | 0 | -| 4 | :a | :g2 | :split-2 | 0 | +| 15 | :a | :g1 | :train | 0 | +| 1 | :a | :g2 | :train | 0 | +| 24 | :b | :g1 | :test | 0 | +| 21 | :b | :g2 | :test | 0 | +| 2 | :a | :g1 | :test | 0 | +| 16 | :a | :g2 | :test | 0 | +| 23 | :b | :g2 | :test | 0 | +| 17 | :a | :g3 | :split-2 | 0 | +| 13 | :a | :g2 | :split-2 | 0 | +| 18 | :a | :g1 | :split-2 | 0 | | … | … | … | … | … | -| 1 | :a | :g2 | :split-3 | 0 | -| 11 | :a | :g2 | :split-3 | 0 | -| 8 | :a | :g1 | :split-3 | 0 | -| 6 | :a | :g3 | :split-4 | 0 | -| 2 | :a | :g1 | :split-4 | 0 | -| 20 | :b | :g1 | :split-4 | 0 | -| 13 | :a | :g3 | :split-4 | 0 | -| 18 | :a | :g3 | :split-4 | 0 | -| 9 | :a | :g3 | :split-4 | 0 | -| 0 | :a | :g3 | :split-4 | 0 | -| 16 | :a | :g3 | :split-4 | 0 | +| 7 | :a | :g3 | :split-3 | 0 | +| 5 | :a | :g2 | :split-3 | 0 | +| 9 | :a | :g1 | :split-3 | 0 | +| 19 | :a | :g1 | :split-4 | 0 | +| 20 | :b | :g2 | :split-4 | 0 | +| 4 | :a | :g1 | :split-4 | 0 | +| 8 | :a | :g1 | :split-4 | 0 | +| 6 | :a | :g1 | :split-4 | 0 | +| 11 | :a | :g2 | :split-4 | 0 | +| 3 | :a | :g1 | :split-4 | 0 | +| 22 | :b | :g3 | :split-4 | 0 | you can use also proportions with custom names @@ -8524,28 +8623,28 @@ you can use also proportions with custom names | :id | :partition | :group | :\(split-name | :\)split-id | | | --: | ---------- | ------ | --------------------------- | -: | -| 24 | :b | :g2 | small | 0 | -| 11 | :a | :g2 | small | 0 | -| 7 | :a | :g3 | small | 0 | -| 6 | :a | :g3 | small | 0 | -| 14 | :a | :g1 | small | 0 | -| 3 | :a | :g3 | smaller | 0 | -| 12 | :a | :g2 | smaller | 0 | -| 9 | :a | :g3 | smaller | 0 | -| 0 | :a | :g3 | big | 0 | -| 19 | :a | :g1 | big | 0 | -| … | … | … | … | … | -| 18 | :a | :g3 | big | 0 | -| 8 | :a | :g1 | big | 0 | -| 4 | :a | :g2 | big | 0 | -| 1 | :a | :g2 | big | 0 | -| 10 | :a | :g2 | big | 0 | +| 22 | :b | :g3 | small | 0 | +| 23 | :b | :g2 | small | 0 | +| 1 | :a | :g2 | small | 0 | +| 24 | :b | :g1 | small | 0 | +| 13 | :a | :g2 | small | 0 | +| 17 | :a | :g3 | smaller | 0 | +| 9 | :a | :g1 | smaller | 0 | +| 8 | :a | :g1 | smaller | 0 | | 21 | :b | :g2 | big | 0 | -| 2 | :a | :g1 | big | 0 | -| 17 | :a | :g3 | the rest | 0 | -| 13 | :a | :g3 | the rest | 0 | -| 16 | :a | :g3 | the rest | 0 | -| 5 | :a | :g1 | the rest | 0 | +| 15 | :a | :g1 | big | 0 | +| … | … | … | … | … | +| 5 | :a | :g2 | big | 0 | +| 7 | :a | :g3 | big | 0 | +| 16 | :a | :g2 | big | 0 | +| 12 | :a | :g2 | big | 0 | +| 6 | :a | :g1 | big | 0 | +| 20 | :b | :g2 | big | 0 | +| 0 | :a | :g2 | big | 0 | +| 10 | :a | :g3 | the rest | 0 | +| 14 | :a | :g3 | the rest | 0 | +| 19 | :a | :g1 | the rest | 0 | +| 11 | :a | :g2 | the rest | 0 | #### Holdouts @@ -8597,36 +8696,36 @@ splits with ascending rows in train dataset. | :id | :partition | :group | :\(split-name | :\)split-id | | | --: | ---------- | ------ | --------------------------- | -: | -| 17 | :a | :g3 | :train | 0 | -| 4 | :a | :g2 | :train | 0 | -| 3 | :a | :g3 | :train | 0 | -| 14 | :a | :g1 | :train | 0 | -| 20 | :b | :g1 | :train | 0 | -| 24 | :b | :g2 | :train | 0 | -| 16 | :a | :g3 | :train | 0 | -| 13 | :a | :g3 | :train | 0 | +| 8 | :a | :g1 | :train | 0 | +| 7 | :a | :g3 | :train | 0 | +| 20 | :b | :g2 | :train | 0 | +| 14 | :a | :g3 | :train | 0 | +| 15 | :a | :g1 | :train | 0 | +| 18 | :a | :g1 | :train | 0 | | 11 | :a | :g2 | :train | 0 | -| 10 | :a | :g2 | :train | 0 | -| 22 | :b | :g1 | :train | 0 | -| 2 | :a | :g1 | :train | 0 | -| 6 | :a | :g3 | :train | 0 | -| 0 | :a | :g3 | :train | 0 | +| 24 | :b | :g1 | :train | 0 | +| 23 | :b | :g2 | :train | 0 | +| 4 | :a | :g1 | :train | 0 | +| 6 | :a | :g1 | :train | 0 | +| 13 | :a | :g2 | :train | 0 | +| 5 | :a | :g2 | :train | 0 | +| 12 | :a | :g2 | :train | 0 | +| 9 | :a | :g1 | :train | 0 | +| 10 | :a | :g3 | :train | 0 | | 19 | :a | :g1 | :train | 0 | -| 5 | :a | :g1 | :train | 0 | -| 23 | :b | :g1 | :train | 0 | -| 1 | :a | :g2 | :train | 0 | +| 16 | :a | :g2 | :train | 0 | +| 17 | :a | :g3 | :train | 0 | +| 3 | :a | :g1 | :train | 0 | +| 2 | :a | :g1 | :train | 0 | | 21 | :b | :g2 | :train | 0 | -| 15 | :a | :g3 | :train | 0 | -| 12 | :a | :g2 | :train | 0 | -| 7 | :a | :g3 | :train | 0 | -| 8 | :a | :g1 | :train | 0 | -| 18 | :a | :g3 | :train | 0 | -| 9 | :a | :g3 | :test | 0 | -| 9 | :a | :g3 | :train | 1 | -| 4 | :a | :g2 | :train | 1 | -| 3 | :a | :g3 | :train | 1 | -| 14 | :a | :g1 | :train | 1 | -| 20 | :b | :g1 | :train | 1 | +| 1 | :a | :g2 | :train | 0 | +| 0 | :a | :g2 | :train | 0 | +| 22 | :b | :g3 | :test | 0 | +| 22 | :b | :g3 | :train | 1 | +| 7 | :a | :g3 | :train | 1 | +| 20 | :b | :g2 | :train | 1 | +| 14 | :a | :g3 | :train | 1 | +| 15 | :a | :g1 | :train | 1 | ``` clojure (-> for-splitting @@ -8648,9 +8747,9 @@ splits with ascending rows in train dataset. | :name | :group-id | :data | | ----- | --------: | -------------------------------- | -| :g3 | 0 | Group: :g3, (splitted) \[13 5\]: | -| :g2 | 1 | Group: :g2, (splitted) \[8 5\]: | -| :g1 | 2 | Group: :g1, (splitted) \[9 5\]: | +| :g2 | 0 | Group: :g2, (splitted) \[12 5\]: | +| :g1 | 1 | Group: :g1, (splitted) \[12 5\]: | +| :g3 | 2 | Group: :g3, (splitted) \[7 5\]: | #### Split as a sequence @@ -8666,36 +8765,36 @@ To get a sequence of pairs, use `split->seq` function | :id | :partition | :group | | --: | ---------- | ------ | -| 5 | :a | :g1 | -| 16 | :a | :g3 | -| 10 | :a | :g2 | +| 14 | :a | :g3 | +| 9 | :a | :g1 | | 1 | :a | :g2 | -| 7 | :a | :g3 | -| 3 | :a | :g3 | +| 10 | :a | :g3 | | 11 | :a | :g2 | -| 6 | :a | :g3 | -| 14 | :a | :g1 | -| 4 | :a | :g2 | -| 15 | :a | :g3 | -| 18 | :a | :g3 | -| 0 | :a | :g3 | -| 2 | :a | :g1 | -| 12 | :a | :g2 | | 17 | :a | :g3 | +| 16 | :a | :g2 | +| 19 | :a | :g1 | +| 3 | :a | :g1 | +| 15 | :a | :g1 | +| 4 | :a | :g1 | +| 8 | :a | :g1 | +| 6 | :a | :g1 | +| 7 | :a | :g3 | +| 5 | :a | :g2 | +| 12 | :a | :g2 | | 21 | :b | :g2 | -| 22 | :b | :g1 | -| 23 | :b | :g1 | -| 24 | :b | :g2 | +| 23 | :b | :g2 | +| 20 | :b | :g2 | +| 22 | :b | :g3 | , :test Group: 0 \[5 3\]: | :id | :partition | :group | | --: | ---------- | ------ | -| 9 | :a | :g3 | -| 8 | :a | :g1 | -| 19 | :a | :g1 | -| 13 | :a | :g3 | -| 20 | :b | :g1 | +| 18 | :a | :g1 | +| 2 | :a | :g1 | +| 0 | :a | :g2 | +| 13 | :a | :g2 | +| 24 | :b | :g1 | } @@ -8706,50 +8805,48 @@ To get a sequence of pairs, use `split->seq` function (first)) ``` -\[:g3 ({:train Group: 0 \[8 3\]: +\[:g2 ({:train Group: 0 \[9 3\]: | :id | :partition | :group | | --: | ---------- | ------ | -| 7 | :a | :g3 | -| 15 | :a | :g3 | -| 15 | :a | :g3 | -| 7 | :a | :g3 | -| 17 | :a | :g3 | -| 9 | :a | :g3 | -| 6 | :a | :g3 | -| 15 | :a | :g3 | +| 16 | :a | :g2 | +| 0 | :a | :g2 | +| 5 | :a | :g2 | +| 16 | :a | :g2 | +| 11 | :a | :g2 | +| 13 | :a | :g2 | +| 20 | :b | :g2 | +| 23 | :b | :g2 | +| 21 | :b | :g2 | -, :test Group: 0 \[5 3\]: +, :test Group: 0 \[2 3\]: | :id | :partition | :group | | --: | ---------- | ------ | -| 0 | :a | :g3 | -| 3 | :a | :g3 | -| 13 | :a | :g3 | -| 16 | :a | :g3 | -| 18 | :a | :g3 | +| 1 | :a | :g2 | +| 12 | :a | :g2 | -} {:train Group: 1 \[8 3\]: +} {:train Group: 1 \[9 3\]: | :id | :partition | :group | | --: | ---------- | ------ | -| 0 | :a | :g3 | -| 15 | :a | :g3 | -| 15 | :a | :g3 | -| 3 | :a | :g3 | -| 13 | :a | :g3 | -| 0 | :a | :g3 | -| 17 | :a | :g3 | -| 18 | :a | :g3 | +| 0 | :a | :g2 | +| 16 | :a | :g2 | +| 13 | :a | :g2 | +| 11 | :a | :g2 | +| 5 | :a | :g2 | +| 16 | :a | :g2 | +| 21 | :b | :g2 | +| 23 | :b | :g2 | +| 21 | :b | :g2 | -, :test Group: 1 \[4 3\]: +, :test Group: 1 \[3 3\]: | :id | :partition | :group | | --: | ---------- | ------ | -| 6 | :a | :g3 | -| 7 | :a | :g3 | -| 9 | :a | :g3 | -| 16 | :a | :g3 | +| 1 | :a | :g2 | +| 12 | :a | :g2 | +| 20 | :b | :g2 | })\] @@ -10163,9 +10260,9 @@ Other filters | :V1 | :V2 | :V3 | :V4 | | --: | --: | --: | --- | -| 1 | 1 | 0.5 | A | -| 1 | 5 | 1.0 | B | -| 1 | 1 | 0.5 | A | +| 2 | 8 | 1.0 | B | +| 1 | 3 | 1.5 | C | +| 2 | 6 | 1.5 | C | ``` clojure (tc/random DS (/ (tc/row-count DS) 2)) ;; fraction of random rows @@ -10175,11 +10272,11 @@ Other filters | :V1 | :V2 | :V3 | :V4 | | --: | --: | --: | --- | -| 1 | 3 | 1.5 | C | +| 2 | 6 | 1.5 | C | +| 2 | 2 | 1.0 | B | | 2 | 4 | 0.5 | A | -| 1 | 5 | 1.0 | B | | 1 | 7 | 0.5 | A | -| 2 | 2 | 1.0 | B | +| 1 | 1 | 0.5 | A | ``` clojure (tc/by-rank DS :V1 zero?) ;; take top n entries @@ -12110,7 +12207,9 @@ Write data to a csv file (tc/write! DS "DF.csv") ``` - nil +``` +10 +``` ----- @@ -12120,7 +12219,9 @@ Write data to a tab-delimited file (tc/write! DS "DF.txt" {:separator \tab}) ``` - nil +``` +10 +``` or @@ -12128,7 +12229,9 @@ or (tc/write! DS "DF.tsv") ``` - nil +``` +10 +``` ----- diff --git a/docs/index.pdf b/docs/index.pdf index 99969ff52a5608858fd99e427ac101d7512148fd..f1ab7b4a0e7b846c5ef89df5f6c87f39f72c3c0f 100644 GIT binary patch delta 293871 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 z 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 C{Xs(j delta 292890 zcmV(+K;6H@*dh4QA&?{kF)%ilfujK`e_3ZAj z8f9^*GrcntKxyewcqb(@N(Z2AoO%HlB#Ba-{!Ud&XRUg#tVmAcI0k`WUMg`03mFeW z27hM8K}gb=N$Jh6dga~s>g?Ske^&4C#gF^Bny zHB&^MR^Ia9m&YnO#ybkVl%x@hjOSto`*IR-jy?fI*1@I>u9a>Kh~MEDx96+3EFEna zP$H-VAYdw^xap^mg)s@kFt|JnSmLWT1E64(BG?ffgWU@NBojxC)9R2@f4|i=(2Dwt zE^nRgv&~^oAT@d&EEh>c1P7LH(DFmrd&0$lbLkh2xe7nS$CXx@dy`cQyjf;Vi<5ei z+TojZfim&&QWw>#!TY=}JBWx)m1!K9Y}wZCY6AssPRiPP=AW>p(~2AhLd5>bS{F{< zUpl2LvzPOrUMY>CG%`09e?&l-Saa8zUCH|es=~(`Bc#?>pekBayBF=ca4SYOa(`)q z+E@+(0Rw#487T^F<9;^wAosVKZt<>OIvt9Y(|1NsmO$L530N?&6Y#kMSq`^c^z)iF zvyQ(a)&~Z5Hu8gvh=h=`emH%3ZFNOA!b07u#S8_7=tg@yCNK{)e^{$>J6-xIj{LzjdhK}8>s38@6LPf^rYpMw9P1)0N0PPjtmtcipJVADBcki zh8RMaxr)GOI9oHfIP4R78j&=NAp=BE;vKo)9wxw3M?$L%b^K%FOna+ife~;P05yb? zASjqMej6OqmgE{m%njWK^) zY%!~sMWqbyj`pUbMdp3%tLA7ziQbh7^ifb_tz;;73kaMeMD+d7?nbpac?i`2V2wG2 ztF7E$2`jE~S^Oh7xO9wDNKQ<-!bkOMM_C+mm57@#f8F%Srgo0dS?fX{27@6XVdR^| zE<{|eDVlB8V(oS)^C5q&ifiLS!-LAzHNEOKPQ&I&yfWp?#49UZciZ4{cXxY}I3%fH zBoy4^5e$X{lucJ6J>wz&$9`jc1Su*n47F{+fznxE;*DLAj>mBmqYD$P=(ATgX3hxFjZe`?|!Eb9Ri7G5j|?o@K>`ox_Hyt*3| zmu#E?`i-xup)AAGrq(XVvr9}HU3*t%hUO@a*sRrjpz0>n9x2^?gVY^DQ^MoHbBlJj zRY9e`+$By*5;56Nh1#1n1Cy40zXgS+=qc5gw?6Y&E(Wgi%*JERX*4Kr)`J+@pM?tP@*2;a@xRc!rOtreuJ|^!sclGR2S8(ZC`+)MFV|KGX!JpD%0P)5?TQ~1Kkq!vua-sx$C#C(2j3? zD<}La+t_A!o8^574ehuxvD~ME2@^WkfAVv`m$Ml%r|YnrBvSXH!!8}PjVDL896gVjK`uRVZ5hd58;%zkbL&j1tp0X7QDP8 zUm1Y|u`ldtD=(qFCE2!cN}7~MBBNIrqLPylP|~{yB$NJe)=ZRf!)^WHRLBOLnhX|gaMMAg#m2Qv5n?0%Dx{eG`M z-nE?(*5oxRc98idXS@dZP9i=MY%j_JaLS z&C>z~p8OBRz-C92f#MUFvO)tB12Qo)mtj`{DSyRTNsrvP6~6bc&@C#!Vsn+mJ|xIY z>;VS3#N!Mw@ECzwVs*>bQlq77D!)FDBB{+P+3kjrOG%`-yybh}dt_nn!NcB9H`qS^ zxFPVw9`UG%P)I{BA`*p|cxid_{sZ7o*lyExe$3MYmHwk?rb%U9?tkZl z(gX49s?9UisLXUFt$ms;%j9I*_0dkLi@vO^KzVs8RH-VxeP>nxDVw^lGNW#YXX-j9 zaSk5XA=FnZ*9DjOTm6WC{^jq~uud39}(RR_j3m4dtS{E%1p!Sy@ zRz8`}bgMjL`%S&b3wHf$PrCn=!RF|S{h*N=L87?6nu$cL2qY@n=8-E^@6k<-o z?A0vT$a;j$J!01~#^V05sY}!SbPyrnEU$Yjrtt#bu&4XR{2vQrfRBBnMjQ2M2TeON zsWS5dw&aCs?*@W#`47+>&U6W4;JJuFtVc*PYE=5261u$^S*SQ<66Z+beD;#YI2PKc#xSYk|dIWf_n<;Y9hsd5>c|9<<=@61qnb?Up3 zq*YRG;3=RSNgOQ+xPMD;v#a%%5KtVB2u#vcow_fOJZA`s3A+dT7FD!3-x);pN$1-c zS+&Y~FSDNQU6E!ovjhG{kTQV?iQUTcstjy;8~pXUbqV8eS{j8q+Dh5-rK7`RUs#kC zdE04xt{t!_Gy+}GOSv`=rebZ=g%(ii{jh6EAJU*wrb*jY7N&A)A^3CD0E*-Fj4%JOsu0O~&golfg#mpfUQ6m=YuMbz?lcymI zHJ$6+l+~$XQWmIuIUk0DQ`T-&O$$FcWeA)O2@xIzlz)c$1YbViU#&VNP13n)W+#^f z^Qv)H+Ro-*4(LRxJHxwwrWf{`t|>zthoWR;tfKi~A=q zfR4k+e}WTrwrc~zIf~?qY%o*1y>fZL9X2FJgcFal2t^{E#h9>U5kfK4D${crpx2wm zfJ0L%c7OKZUz;z^gkpYn2;H)ERa|B()XgXR-6lq1YxQB_+!SJBDucujzEf4|>blUD z+7s+ajAF_?s*mSDSA%M*JauDn%l!--^A#z~+V>?sDUwUwU%UCDGse?i7)pB{&AcJ4 zbvV|^P5My9G{F7EE87QI;7Ru@(>CUjgPPDZNPm{|T7GB;=CdvR< z6oq6d=UviXOVV>4IfE9^#bWOEDap;?6v^oG%^bM)_Y)YVt@qOq%G5FGi_Wp=mCXSN zL<%H!=l(rpa6ljs$ey(|fN8i|r@fT-b+Nxc z6@MWLIbTi;_I3&(c`>q_FguX$Z^tM!!j-vdqiLHDrC47i-2hSMzx~TD!X$(mjaQ51 z_xFX`7lP9eqFpQ}x&mC^K*rJhKGZs4INa+--mY&JNz5SVrL)B%bG!3r4o)0uPQ!p> zEoDqM+`^($dgZZe2qG~JCjqRo`0r$yv4PPTi4ZZ$G(~FTC4)ILr>Cvw85YeR})TH_lpU8cKu-C`@BGeP~^EH;0l>Mu1rcQ6GAZ@@0;o z;Wx@??Q8yv!7KYPeSaiJ-{9$}Kh=aU+IIaMZn+8MCVRK=pT4qx1L!NO_t-q~hp)qk zzWa{Yiy#tlBqZHKhzXQ)-aUR^yp5I7q#$Jk37zA?wmf!!&&`K`8vg?n?ka|tfi?jX zk`WXFFgcUq%`2BaUjqq$^pgZsERU~ZfPQGZ7hoR-Y&Ea~u2Cqq(gpQPD%mTBuK#^U zk#a0Wb`{xeGGGB>%JlJ$Jl;Leofvsf82Nd`>XBN*l_Kr2cux-f^!w0NA4h;T83Cd# zWdOu5PI+p{Y&mlC(g+kz2?%PqCPhxJM!yZ+VL0E*@#xu4nh{HXtwx>WD`Gg>)f8At z#&a@>-ZI5DvuE>cla=``=~56X3zkcB#NtOb-nOQg1s>PIp{G47ih7k zr!iCMi7saA#df($R@pKyyR=R2r7dfy=(nmeb8*=+9!-}ek2^IQQTj` zyY0%IejfYtGC%Tv>4mdh31eu0m;J~8i07=v`s-!=HLL)jR_U-L!9V}ebWRw59Pb4u zU_@%cXv&O>%*m9IIsSl3skABiREaGK7ZS$>d5tkzMH#ovDAT~H=F0Ejb^dXiuV#6i z2qB{Nl^<`i>!S3JE)3r?A&YY3CS>&7&->W$&(1|p{bQMb&(^DXL-Ma!=_p%lbEm3w z7w7)zDYrLhRl}Jf)0O4aa`^6MZ784Mvvij{WJGkfoJ(31E`SL*U}lWCDH^9$cE?$_>V=z_`(jf|Tw2H`eU( zUttIfeFOr3cDiIr6=F)Y7Yv~UIAiWE!^5j1+mHgsqcGHK8-iIB1iYDmp%{+|=u~51 zgk5AucEJ_efO|Njjjv5`RSalq;3ROBsi3-c>aXifjfxIsW1dEv>ullCaR-Y5XtN@K zaFO4{35w>~rjCtb9di?XN@nYA4AIJc37RXV+ok(|y!5MzeJGb`(2+Mpj{|R|#tTW+ zcgI_)4f5u<0^C+P)Cc_{7z&wuFxC%UD9?lL_gJX!!tyz239$lYDwEu=YRuf)fAZ$Z z|HQN-Cf$RWB%(OS*5w?;B*9Xx#1LYVAhCmj(}*dR6elD$f!c;b9fIvQI7*?z{j|$@ zeq1Vll-#11lR_`1VJ zL0HNqKZnDCBPXQhs}2XwDF}6F~+VXZ9+ zydW$a@wCAA4e!0o{TBohOv96v6(|BXG?#G!0V#i3OK&1a5We#(T6-D}^mbMClUpn$ zE3K46vK%&=jH0o@7K*{U#w3bX`R}Qj?g2A~F|QCS7l!FaRoBJ5m^(iTC0%gh&wA)g5K0A}zut>ay`Q!$Wo65gwB+Mj zhTruEfJ$Y9`MBdM%TUhx_GhUSpzUaL8D;pO1H9SJ%%Uj-0iD zzYUBN2kQ99qOJg|+O;Dd?**gi7?8(_xUC>RZjsNgn^n(2M)vDv&=djwRT=ek^L~F^ zK9!3JqiWD(-x55|u}w?-p;UCZ(ZYV>{isJLk0P&4DtCdOSC~7Cia_D zyV1u^G_6HvMGQSZDD<-BexF&jo8k2f|HT2Gqm8SUcY@h4yZ@Wd z0i1FxlBw2}9su8eEd~hE8Qexk(f-;MdSG}5!dj#8mAGrGkWbt2P?say@BfHbL~(9gcArI zg*HrTOw@p1m` zBv#s+6yZ#Cc7RKIK}5%-prhU6(GedFatJR%E*kP}3%visVQ2)wA$kDLwV%hI!{Vre zSYG}ho{sjJ)K?8!@iuit;FSkKT=$rl70O1zqa)pON znNsMK60iF<(mN1j88Dv;Bw&BnhU2a`Q4BQqz$S?>;lv@hdvTg15uO4}D&wiD0UKNn zQhF#2$ArO4RGll)mdiukskxFZ&xQ1Ud$gJXQU%kg_g?pIBr*2Ls=_k1t6i#`=a4Xn z(vOO5tdGs$Mkf{>D>huA6CHq8x8_6SbM5p=nh#Z2tLz`Ai^X()x2k{8O{~x%Tcoo5 zani`Z$KU(tv*x&5$I6}~Zz(3Iew1JyjP~c#`!^vTfp3!X{^G?vFd+ryE}$2hSsN|u zWU$(ZOUg$$i+n84qZ%#}vHou(2H34$FP`%0^^_0BNrJPae9(qhV)jq@pxLrIDdiJz zLC-CKp4Yre`E{yCo@+P!X6m4n>h(@FkT!7JdP9)l-TqK@XOjBIO}B3%+5P_jDPm<2 zxH^{r*!=MQ{19?1{{Ri58%>i28Yh=4xB)AF?O9E4<2Dez`&SS-*+9jRLk=nWus{nm z3+%01-@Hbl*h)4Rn!eV~#rmhK+8R1!kq-LRmJNv2p)%n#}GNw}VJ2)xTLS=l)l+S|tOp{ilZ?e8csB z0OJ0W|2<1@lE?e?U^4o2d1b_ob*X_PNW#vI50i&zwcI>pBYT273y7@xUEQ*MU7tT5 zIqT<9@6TRFLomsV<3iHM7_LFF>AaVnMw1az|nQwxLAvuzWcn5V#V0CyoO(v;={Fb!zMB zMTxiNi zN^zr2mXF30!DiI?iSVtnY?BY2GlFn3rl0rhS4vLxY`(Pxzy+Q7oQxPm5`+jxq8VEn z@}R3?YZo7ZEs(Zedu$o7^HW8Cll>MM->E{UE_H_e!_aB=vqp=gF6vN^RTDDmEELVN zL`|3XkMqU*P$?92hE!ZrDe8q2iWGw53gua(&LVXdsc$7x-iv<+uGSJMqr4AtuB8_5 z#o>MOw0vAweA#7cj#bNc&tCoKTS%rN|C?sX1pifyk{Od+S;e%mTpQVcCIBktG3qwi zDr_NgCrni`cjRji2NaYkb(?f{=RhN!c4g@-R1%vc6t)t&Uo8vcq=n$rq0Xu*gL0B$ z$kZ=%l{Jy5O0zu%o4fT_zoFS4zYl3u3c04MUPW59i*XeWlQa00!X=erW`UnC_{lT5s1cqib$SPr+&~wS6uTFk5=l1zLs9y|?SE z)3mVGnhw?Ld}bv#q;w!Phk*R!V*7He`^)P=1h)TsI$ghynm|&2CIMHg2{4;xPFNF2 z7jtFs|6LPwQGk#et0lpyv)*4X$a1!RZgNotZ>iMc@h{T!qQaodyd3Cav$=SS(!d>C z8c5Mv8)TK*cTgLcx2g@^ryL(Lb6O9l&XgM~l<)E>Vq0KjPZ4;;Q-sZ2p_v3yOX=Fw z5)DZVv}t@{O9Hh}HB=Z8h}ac7*GxlLu4QYf(V2#$fx=c;q$#l=pZY{nEh{Kb(lF}X zZ1VB4NE?l0=|YjcF?V;_{(oaDp*RZ1G;s1>QRD2!5i$4|g!-GLmjRyv69G7v;T!=J z0y#LBLD~W;lkU<9fBGb2AkF(Fk1N_@#a`BCdr5;rv1LbqFPSYTO@93jFOn_U)|{r< z3fQJ}c=++-;n8;}Q#3;qeHhRa?cW0iEkz75>yTlTaI4XHF}S*>XaXG{5hc=D^bp(@ zhzkkr9DN@AG5GazFnZ4&a>Qw_(d85|La9xFh9m7bVN{{Ze+9bA-mZ(hDu!4HmQC_1 z-xO86*>1|^%wO_sk&oA_;q~Rm(R)qzach!J5hrCEcwSVv1`I<_QsPPzOLcpAwTd)0 z1JP(*5t6g+)a^E$6EQ&fi*Cdzn7jm|Fej*~d%Bsxy=n3L={sg_g9 zLDg~6J#pcb2+5wYJ^eLOIt?|FeSeJv)se;$f9ldU|F*arV$kf>x{BHM_VZuy;tLgW zUi=jDER_juN1hpoHhV>RmYNgJWJ{j+NJ?Y zf1*vw!^A2o&17}+H6B6A`Gg%a@?@M9%So|5boO>wT6KA<40*4Bov||G zh;SUv4T>1Pr(m8EbIyW{V6MGv7@L8SVhRQ~#D-JhJ>giUPHS9((U@w?y#Y4P9CsJV z9ljh>1AV($CH5bcX5~j`)jK^*FcLEgf1e$U!_;DKI^@|gHfje07(7f~!zc_4x$UrF zr?*N-cr2fjg8h;zn1w^>%OsUMxK*blb-G?H;?741{XQ!rHW#DOeKE_)tgLRgH>6yJTRbnTe_~X8 z%NKX^ViRTbEFqrpMigN%WPTp)<$u;y|-HTfj!MI%NV#6&s&C zp)+Jq81oR`q(dq}sq)zbiXnM+f5oI`Q9ShV$_!E^72+IJ%=8{K1#A{$y@fepF-)wYFDsj3D@r-Lcy%1nYwd|AQ zvljxjl4xa90j0k1F!(^grDYiizz|EwjtmYWP=BP-EK}YHg-B+SnEK=ae`{WsPfzhQ zd{CHcTqs?@l4T6isRjn6Nx)%>1YDOxztuTJst;8(Y;6t7JhK1_1u=obTi`Q5Wuofe zPIfWiO$_uw49-DSi7E@A20(3yM0@#~upUg^!PE(p`=A9(No0e$TRndUPt!^Ok7=5< z?|42hqV_PU;$;_| z=a*3o0uz(dBoqQSF_&Ri0V;o3%Wm676y5tP*lbDx;bh*!@g``|Bxuo1YXe<4LBPng ztV9wWiL#v*{r8@EkP>N$w(JBgx)I6I@Z9&kXGoJtLX$T~G+sX+Fu2y^evl9Qv~j($8ndhwdu#1en2xlT?mHdr(# zRAT8oIZMxrx*TP~nmoN)mgDJ&rB~CssHfFplrc_eT9@;y_w(Ym^Ehq(y_qh~o7)l3 z)3T^9%jM|Z=`TmGPInnXIgwWN4UslK+z@RUp}7r)aLN?)$T%BiKw~L4MB>&cl`5if zr!*ExKFT;1GL=L`y_bKmxqv~?8A3Biw@URu`6yEopwc5bOyiJxn2OK?Fh#`FgtdCo zJDA2vd@!brn4G8`w(|$su6vj&Vk&QOU(W`UIf)O}Q%6kdksPM<(Q=r6&13Qwa|O)x zFrMx{1M!_9t^o)Lx9}nYXnqXz}+>kG*U;H1DY4z-w;vnO2YTX4D}E$2wZ1{Bc>LzX=$-KpSLf86K*Oa4kN-ev?)s{9OB{7uIjwLbd#~ zdLEu#(oPqXSy_Kq5f0t9Se12nn6BK_q~j%;W_eEFUy-Lj%&NsC;!W$zumwFeES1Y; zwG6lO(&4X)N&M?#S(;oVqTtyL^xyN%HJLDs%?x{ z)S^_DFlB#-YMWa_C>MhRJ%S;{G?hV_6-rC5C(Wc43YpAEwV&@R%KK#^v*Pzh1`1 zHLZiu)uxf#1&Yt@FY?u1WVwvtT=wqK#QNjM) zeR;=o4R&W`qvS;~Ta|s3znk%$WE~Ck|2I}&D>%_9PgCY3wl4SZ*wmr_UekTg-5)#lw#c{?l;NdbK zQi(b0HpC7Dbzue7&<1B=5fq~XGBtnrt{mjM_sVRslq)$s= z#%P}uBf-<_mLYaj^rMwGRPEL66%HIZ&iRq$Y|iv8@fMCBIRXPJBb%r;+@)IASL;ZG z94V?na^{im6fJel;%5aXpjwoDM(g&@X1f_J&n023J+xrD+$^Vc`Q0wlK-GVZ*sxH4 zCV1_r_Jvkh*;|!&wY1k{Ps0gZRX>e#;r{z12PK;Cv-o8r+$J zd&I;yIt}?SDceEWFwyw2#h)LVh+XuKA?0mdE>>{M>UbCL*Qn?AFiFO%>wUbxO{V8N zU^Jn58$43)M`8D&*lk_N0$>^_nCtqaY8-XNwiQNS-pi_xzy zRWgdqu9r0f@em!!LR5$(?d)t*7j6DSI+jc(^Cq~*MFYcW2qN=;0;3g>gQoq74^`LR zb}eq3JACuchbYQk26byNA5)4g=(v@Q^S_IxZMh!JY#HLMyeVHmddgXHA4z{C<2g`hY&nat^4&2Z;Z}0Uw|khN62s=} zK|(@Smpo2O^Q_I9ynVk|h|1C)7Iu_yb>}`cJOO2VDVkdU71!szB2gfi)Y$Qq)L^BI zi^TMrpgC+pD#6-nwCPFL$SSObf#C{WL0o#zMoMjY!A+-sl!xm2J59%w5dtH&9r5i* zJfRbzSSq%!ld$F)Iw_3})Hq=YRHEQ6(1fcuaJI2t`=-r*+6EsiD^Y|f9N-)hB9TwsQO3m+ z7t{#{j2IU3#g~UR@?azHZPZ}nyC`1FGDvd|ixdJQL zt6#I}q*xCbJ)UgT{C05CTrTU%m@e z)Nwd}q2@G$6% zY~{gIl#9xb;$pvr98SkV$Yiq2>wv{<7_`f7IuFCUR7%(=G7q)peE(TX#m`#qDa`-r z@kgJ+A{*kTuz9}7x>ZngJY0j)72P%~%EC1=;oZv_Sg$kJ)f~2Srvc%~rf8Rb1RV&p zAK@7djyG*FYvP|K*HJ0>%NjF_jR}R$L^Kf0e*v$Lb1#!&I24l^FcSnZIXN+taj_|X zS;=nW#unZCD~N1DA&=#n2W>^Tal0GtA9r4+pUAYk`~7iS_w7Cjw)gS6uKT)M zu(C-SZI?9T<=AwOoAhdbAGee5I_*U&Ni<{mULKD7$3yku_vtv7c!|Gyc4(2h`eLc=3c+hVo7@z13Zkhg^}L<8hwQ{3PD_wO2+ z11&o~*jC?s8E{2@IQVb!-nl6xvTgu)PEzzMy1;YnBTxx9#q1MWd0b%~Y_dciz!(^>T}VKoME{x{!TC zAbU9NrmFRCr*D`+66r>a9S|fzh26S7uB&`iqljQSUv=GlYE!*`;tZ@?`YQEnU=#`< z;}nm6ra~Tlon%Vl=cdN}9IKQ=eGqEODhXIVn^g)a&frC$0SME08v)qzP_Mj&zlLZ` zyOh4F$((STec;xrzRbt43|auRR}*e6odN3u~Rr;I1$HE}2c*+(g> zXk1L7*in;l9jYRKs#cV6>2g&pE264~w<(*ds%KR-r#afH=MF_F&o&`IBgLuI;>|ZG z>dbJY5$HI>B(raFMoC3cgTPbcQ@2cDnIPk{3n)A>kq?1)wz&x|_R8kwaT)Dy;E>eF zC?cA6I5w;H(DtWh=d=?BbD46vxF^2a*S(grEE$W>vt%rPMN?Gy5*O~J2I!PKq-;lZ zsT4s3I(o@lV!9z@7)zOxg1`BOCT|I%sM1oH_$>36LC@e*QfAO#h+*k|21$XW3%>-V zzS$oBHzcGp5XX`)0C6ln58_zL+e@`6Phlp-loJRLI?zcdozclF$bh#h@mkZ_&=`Nz zppZDDETa*BY_z~7$`y6oImhQhgL8a$fSL`VA$e|)U&l8LoR#Wi`2`=KcXuxHK|4d_ zvE&PUFczQp!C30d2in@)2L^F`@`0v#S+|4>1s_;JOJ<3fC;a%M3Xvix^{MEL+{$|9 z=kjNDUUFEa!Z1W-atlX!g0@m~PL$SQ*s)V5I%W%hj&?uwJt_qf6E=M}WwHzuegdVE z96W@ts<22}<*D_t$rxJ{y@gEW8PwoK{_=b@p=rHG^xe0@J7Fz94*0@;|QNWyqY zFL)8u=4N6k;?-ELs7{e24fx=g*60h|oD;Oby?VCJ!)ufziLLoD)@ps1JE4+}WzuRk=I2WVJ~J44ie zfKmzv$xs6>oC;LZ!igBzn@zLrhKY2A$?ai(Y%$q=J8v|1esZ}wi++aDC>+XU!>F`+ z7)EWHnb%dAIZc>3)5vNxdoBc%5j3Ajp6BgU_A7(>IjekX!qG1HQ?kF*(__6hjQq?^ z^~CJ=VrwFOwSKXU2-Rz`_;!GK_fYn2c+c3n2PbU8j|mjcl+9B+mL8dpPsAG zSJ|obaLqaF>Bf-sut5X{f9F>S z=|u)AmT!v1qKAF7z+w;GHn%ibs5XMYsy>CJt2eLf&?CQe8qHNpf2l_RF|WWGMIbgmdI&J(7P zWGbmla(eLheI@kz{d#op?4`tse@0qTnH-%aiY5w6L~x!QEt2E(9Ts?Ya`Y!0L>RE3 z8vY69_>U;S_Ss7n@)C%`0>>wN@xrm`Ez3Y%1ZQJ}sbe>ywCqNrQBZ)=j^SZ#il$ka z>=MQgraBz4hkqF%NDDcr(afLKrpXpXQ`m7+tj#PFRHTa&Ih~QLwzAFcPF-+^r~Bng*r;=DBwspi9P))nE;~e=Aqp^`@R>jPtbEEZn3jXN;zo zwPOW0ILV4AiilDpey>b3%c$1rykl&Cw2bWp7}MM`c4R-+=JVEU=B7sOz|pmKUeBmT zlIZX4^*xST7ZQXN5Qn(uH!zAzoO2Iartkw${ODl7>T@{u4QEm*H zWt@xjtuYg-LHu9_ixO>vUNh44bD~a7C>1Gt41P2E*6*}%zcJ=YgQnY6Uli7+6PeF zYu89ik2$#_h~+%SoKzs0(?`UdJXe5x0?fJa4t5Kem>jn#?(lNCSwtwX<#iph^8mxc zz&jramCEcqfAXQxAs*wxCykkZKo<=8a*3QSznrehqLKW?G2xP&OzCb7HAO$RWgI_s z)&T6$&nW<=fj+FU?}T9uom@{5?&l2g$+-ylfIPvR1#4Kamj-kk%;hAV1oT!mgwUjA zcG>j2n13>hY*o&Sm3=^%DeL+)XFpF`mtsOQOyI8*f2AYPn80EJj|n0s$e5sFLLL)z zL?AdO#FCO&QW8r_Vo6CXDTyT|v7{uHl*E$K{swQ(-An<5)pW1i%`BuK?jDC1m92+$ zRDFJiB+gh40VU%kP8d?4(c>j?#=+gGc-Y24Q+zT}=K!~f*#3h%Y59#P6P*M1to9sf zl(1XRe;U<;I_wKP+GC&DQX4(?tr&YHA@P3_`p!wHrQM?#`*Lw!nfda3*%ZyP+)Q2> z4l5aWRyPM{A3lIEY^rS1pp1u%!Z{DtlO1bz?z|%@`yQ|w#^s%usQvcx%z(Gov)`; zvzJ3Di_Doz|E(M&%7E2_Cw&aoA3wu0uujm4_U{Jwh8QJ)j@X#>`9JI8%lP-Q|L)#8 ze(w9iw~rj6G*UU+D{_dmsM=$qH+|dJKDw`fqES0x=#BggVMPG5C&v_+xQVpk}!?=r0S7ez)MqRjMzd;3C&^;$vliKZhrMG4mCO zqP%}P_HSLkZ&5A3eOsAs(``=XO6s}BEIyfbOl&RhXR<4sdH?+O8><4s{tjgkkUyeu zwfh8jo+Avk=1Qxo>zobAcqo;;YZMaOA(FGre3A}b$hK)Xb|y+~2gWZgPmswxE)axP$8WD zSe`n&mR{U+*FOgY&cqIJ{0LzJgD((fk&`SB6rBeQm_tXXJ-$;)XMXVaO*J%s@Av5V z;OME3od`uf^_}Cn6Hq6>J|Z}Dj#FpqzQzKNPmX_wg9rl=G=eX|w0w&KVvn8%U0DKA zV9;{B2U?0bxOXZM$d5?Nn^uY!o;*TOB>W3a>g1@B3z^hjQY_ZXyfUf<0qEc>Z7|lV zSrkysnRcT#^`$)kL|lx3EG#0yI&eFm}47S`EkGET2xDU0*{m5M7bE!MMz^y0FN zKUPC(wddZ_VVJB%?QkyhA z;Z|UiFmi<85G{d<>gfq~Qdj_6A|8d#dBe7JDC00LoR<*aO@u;-SrICjk63H?7sZ%{ zF4QTHG496A$lOZ)vzB=x^;0p|<1$`V_anC<;;A3@a~r6zcz3BSz|%aq2-sv%yj_

    |I6Dp8@P|NzHI({eZ;84MDzCxl!T9g-C6@mha3))Jgz4X{<++tQk zNN<#e7csJ(eRr0DL=fbMy%bb0^m&xVwKNIX=H%P>eT?dCDbXJVRIw+(v4ORS(;)C8 zlc5w7>R|$Zqm#p?Y!Qe6pV+l)v?^tit+G0#N+qP|IrES}I(zb0?+ICgiwryKo@AvnpS5NM`_e}06;zaD&dk0LgfFZQAzWLi( z(eJXs)VB;}KpTUgHS#aF>j)w|&I_>YKJIxZ}UXeUGDu074bqF&JtYi_|2gGM6Eiaug0PTuRjVuze6RMVW_so_W7q&O; z$q-7BAU*7?OuskK`DYGF`4*|P$4W*AK!5w&cF4lFWMx#ndH?RUaP&SMN7;h4HFG?O zZWj!w(Y)ma(||}tlH6%`=#5y>>tTHq5irW#?vQ@`&5b96VQLgyqef`2jB{!OJJyS2 zC)9*E47eW49U!BmI;<9!hRZDR0sea}zN$=k4?8~PVSh%IBWh`>C&CaFwFRk1iNz-8 zyAjY{<=OAvXG&rOwD>BHU6LZ2mc{al_rAr9*6IyPrUTx-B~#!Xp0V*!7#KktY8ew+ zCKFa`U6c(&rz+o$Qcfj?q#H{&_Z#DizvBEJ2C!ra#(ezo{4HA;u?JN9`gePd?I(}> zC5luFNhF+b9pw0ePdQepG(Z~ZrB3~!Bo--MMe&>!2!pi_$a%8S$fm(d$?iyisxbr? zsM^dqEDhGwRlwS=Y*;Uhlx9A5iz|HfX3SP-$>WDkEx3qJ7L-$`7HAKo-U>h122}nf z6)?isz>KPtVYi2BcOaf7>!428czAGx<6H)#r}*cgiB4H2$BI0OYb9B$xOfp!d|Tnz zI|RboIn;`oNY&Dp`?sr0YfWA(XE-Q}U&L{}Sw@O;3l{%c3C!j{mP_48A$)2Qy_cD2irY#kdwwML$HULn$;50bHlC25o8ZoCFaYwL z5@dpZCdGr|n8X2(ep3C@^!}mRx8U0Vbyx?`%VLWWi!i$i6zgG$I}nS@nCtZn(XJS6 zSbSrj^!+Aj+r*EjV$!yF#YrrxLU==|4ktCVVH^LPjI$XDUi3vjD}S=hC}n4=!pp)4 zk{Uu+Z?aIY@P>$z?YhDB`20y z4AdoO@j!0gH0jIMcaPpcaJufGji%`5YAHL4t8sF#gnLESa&Vk@= zUt4ddjHfc4Yo+6mGZNOp?xKWgZFh!kg7k1_pz z9)1GCwg>3Z)6?sNtw$~9DhO=S<|Pib0~K>TtY$e`{sMQ|EL-{DVbo!iT`xht8aznZ zNR-!e^SQY$h~4>Yeyx8ePzoi!#AJFM)C|Vf0t$Ai`bD>c+VfXv-UsFCx{kH`U${4p z%I;lNktiaPj+_`)4)tafy-Nlps9f7o zjEK#A=^!#3fo!#4_|bVS>kJ5vT&oZiwqOH73b2T*!}H$h75P~+s<3>NcEU+Sb`v~dksX3aUxquL_8*~MNCG$@~b{9CdI5A93~I( zwg8JiO1}lx9vGYu&-RS+4@cx1qmc#ko{#U52uB=qR9V9JE-0D6(hYZ6v2O30+kVUl z1{HVd_S3mx1=4_d(tz(P;4&iHzAdOg2g*r6AE_5;X8{nwKkJYA14!L$U-^N=ou_pA zPjl~A=dWAms!@Xx-OpW1<-}2>KR=)Lc7S_l)rgtPqe_?)GlE*mx{7H1%JRS8_ptRZ z{}_Q0-~Ha1s&PfDV$Q|fJ%)??r)z8klMu*-Whw)(!GLrlG@hzlJ?KN=j(gGHL+7#4{@yW~U6ac4c z!Pl?M>&s*{lD93oTsP$?pROv1v}5T)`kEXMCi7tb*hARB4nNX(IF#TqQFBYQ!U*MD zY*6^)4*`!pP|it@COi>qZ7I!kP8~ZN@_#mHCGiKE^5k%mE5*Kk zg2jD2a`YFpwQ4>{oVQ742Ag~@HNC3Z)%bFf3Zyqp9MCoP_{gB2Io>%0H|0a@kifo2 zapk~)0E`z~*rhgP!79_s$Nnts z1jpJ7x_V~uPtEv*4OJgo!_o?TBk;pG@>)E2sjv$tp|O#zeV<{06u|idJ1=asoL><# zeM{(fVIdTLzu{9&B8aoS9cd8;!eTNR#@HF&dJrXY2&slukv`$2Bm8R z3Sr*--fPHoRakYV4-wOoJz;tf`KGiG@P3HCO73&*9gcEDGx$B;pJ?F;O|C$XK6yE2 zP4zPzBePxtrHP#V1HgWq-zzdd_FpcOVxr2P{inxUiND}CXo?;KDfx2f-HW$>LM!SV z>-aBE?30LuxM1=oRp@uGsT3dN(%>@5fbDxH z(9MjKTb6+N+>@8=WRw>{8%e6O1y|j6Ti&yv0-}z`EW3@O5>HH3e{QCKOq zmYtLxWoBKzs@)sO+IHH;FapS`JjaJ?gC-|I>!>HH91&?4O}3@TI7Q~@Tmk(6nyN9= zQbKw_G_kqRSi&nCF$Y?cKHO2%$(T|g)9^!5kr7{|0M<0X5AD8`)`P`CK07tb5MFSy%LV9I2H5~*O4XIjRgv+r{D+^a(8|M-B=hb z1^T3p3VYBCEkz`ldV#KKGxWqSRnHg`nV@D zCgHe#1ZZaf2}XJ42%PV*ieYz&9Wa8kOATrTiZyz&Iy)Ay(p^2}cZi{B1sPh;m?jFG z3ClI;fk1KWQU$a~Xmmh&0;M$!a76|5Zc5BY#1Pu9>Rp-P8TKIUF>QjuoqwP&yYhf& z1q1qn5czNDdqb3)J++&;-(za4VWJ$T5|+j^w&{z2F6(9x57Ep+b~wIYGdPrvI{Ov) z!sYWJL`>jf(xH1I%aoqdyQnIt;<2oHT|8+>M$`=w1l74oaYAxo!0i4ik?&~|G}Y2z z-0Y`NWGgXo>*L9B{q6b#v&hIr_!+rw4DfEt9b5y3JeU|M!PBJ_;U*My2DmTV?R{;8 z+6VpsCPL80<6I{P%&o+?XC1!0c0_||+ynp2JPyd=%uXr|d4#Q+}Ee zM>GLFeO%W>^It9v?^8WqU!D2=J(+IN?nm2QfSwQOpC6u^&WEX;99})whiDUCn;G4e z$>W77xQolKXIm@9vMtvI*Bzl1r}MCJ4ibLxQ4;3_jx~uC_()rF0llr{hokhCD-242 z0YmmvS;N))V(f|nmUdzLmL;XJ4NP&1YLC8B7g|l(a*KQ7CwfVqJZcE4!sP9OuHHVm-SLnDW8to46=DQv{)CsB2_15()EJtn+~Tz8)mr+ z@6B}D%(4J!FwD8eK#jetr5}UhihnDh({j1$z}!#r4Hf;?ddc@%H+r^Rmn~mk;_NTS z=`ntF#Wc6({_Q@`%<)w7#$rwovs%7-H%HTu?b`SGyOKm* zcKk|GV_PRNGbL?jX<<8tt?Q~0{RrP+_w1!{Pev`r^Go#6KHlEellG4pyIvh&L(zVr zCi^TC^!L7|!BgS1Aj#_6h+Vr)U5BflPj5!Y+1vi~zWqxN;OC@IM%{U`HQ>IQA#I{q zQfb`m69`0Z%p4~P6`B{x{A-8G7SzaKQO9;fqV2ZLkS?Xor!7o;?Rns!!v15N{_Ba0 zH(>`o__R3a`QVw_Rf41G34Lv zDcPy!xl_77(xG-rl>V={)mZJYAqd)=G(4zhL)iX>ErQI4W8*yui3liPmHLnX%=DU- z_+1!1*L1N@1?$NW1X(fczA}TMDz=JY2kn_!lPZ*eGRdIZDj7<2t!yGePWm2H*#e>f5qx~FU>#@q~0U#pu%!#Ub(=cb?u(4pfH5^Oay?+{_ZO~d!(le4j(x9vCj)0-XuP1 z=kFJ6faumG_2}nfTW|Y!Zp5XfS4>lbT^yD1P!4P#|5Tsz-FJ~DPPNG*AsDI{jG@42 zMfDsPst_KbD+7?C+JxsdT0*c2S*-2)3waF1)e%h$)bYTde*v^thn4$ViS@tvii-M5 z@Ko|WoGQA76XsbWP>m0#m>8I_vj5(RySWngc$m)mSuFl4@59A6pXgB)y?v|AAMPObf#+o6A7JJDcn3JlMbj4cP7&0=Gww10i!wN?g_S$8g6^H{@+Y5|W zd~w{}6}VURyK5v1_{0Cf8rv-RVD!8*a5ghx`y@FdtSbbL_~)Jqb1|ALMt04)C-?)D z%?2C$f2|U0dczLrKOzV#7u){}_H8L1NFV`D>NI~dN{6O@J+3Re&2P1YdsostMZ6~+ z43I(S;$=7CQ_%o?E&A{_GSEOMiBlonueLJZrab+dnut$9kX?O+AP&Oc2Ik6{#F*nm zF^b-}i{y-uSxcw}LTK3x3Wp9y&dxqvXu(iQNDD3SFeaz9R3I-7wQm4|?|=8FIS^F0 zuVKr8PkdEMr^;w9eRJhNc{*AV+q7J)EHKqOoEW1`bC=z-GL+?N%jmL7JihH38k4=)7YGQh0nUr}FzH0ym4;dbBd(b0wUfr_FCn(zI8~jd1v5ZkdK?(1x?cWQsCl(db z%zCvjuW9ut-Eun-mr{O_ocUf>x8DZNVvUarjh%?KjK$ipG3(QFN z^|5}YN*U8FG8I2>nH8~~n!^;z_bi!b+kZ`3ePNRw6>hX@o8bVAl1@B0EPJ3_0&rB0 zi_KlZ)~w08MT~J^`j}mASrt>7rR!rs5V4ON&L#KSG5?zF|Fsp%0j+A3s!_C9|LIy| zpiv6@4U>y}JRhmdl5o}m#1f@?BLe?VKE>cF(j6V5ATOAlZ-FCaY5P{PxsF*|#D^`^ zjtHcOzzY<{UL_A0SBTvxE3dLNR!P-9U$z*e`TF4Q&nMt6TnDqeC=mrBx0az)Pps|C zWF;y$b8|krNBk>Pw)oh2sPQgcpn2d*t&fg*s_)z$mEziYnKt=K1 zgd~RCPOTn79%9)W#^0AN&yx)yk}&41s%}-7YvX)CaFz!k1uHVJpv6bSK*X@-)z`>G zZzDj4!auEU!hP85neKE|iQNG+Xt}46YhZ*on;4G>XnCmA-FR|S(W|l5gtaxwPjO$U zb04vT7@FnUy2CneRh#$j{=JaM1v-N5cTT;WRzXw4*+H8fD;<4d-*Ttk+k0t#XOP{A zouWD+HHrn$aNGdhO0(OP)ffC`5qx#u?J04jkU}1qo0@g@tLGxO1c%K>4s4|mX*1uz zVGib(q=W>lQdFGeAfSgoBxv9GPw*)z8dVSj%@bM`(N9eyUv+?9qy7aNX)x{|+SAl4 z7)k5JyP;l!g?R)GQ6VDGg;!u-;wLiiy4yQc{VQmB)e;}$bfOy~(qf-{x|kJH=; zm(mEXpJs&%q!bdZ>U%kkwzBQ)Bs1R_KHHkMm)K{rm%W{#41+dZMV6kYi@)Ud{U>Rp z248j~42Nzg@OA(~(*{c#8@p6o7oDYNJ4m}6Lv1GCb^sVnhLgfzT^cKWU=PVO(nG+n z8Cd}Q2fxH@_dYQPLP{K!{xXte?9TQNoj+lj)5@n(TnX>TXVLVm9!i^`_mGP?m)0B4 zB_udLBq;Uv5)y-}c?qxm++h7JL4MkEwSZig8iAk}JZ*5)VBY^r_&L5HY?yZs|w<>>7(`G4k>(nnWQ_Otky0q69g#V)F z<;OEy^*`=h`E;M-ZX%jSv6Hvn>YC~pk%Y&AH~G%o0XLs6z{i-6+jl({XDip+@eu^r zJq*iTLr(qqDhRjC4+RheIuZ8oTn_x~`qK#&Bo2m}HG(sFE`sLBe;vJaO~%_?`Ur*N z2nrY!<5`k@9U;!FROoMAcmnG5dfi>d&4xr`P8Mw_mP`Z%iF;PD>~Tq?;GC86kYEq;}K~kIM@Uw62*~&y8}N$(p7HMOIspi zA0C37ZuTIrYj_-vJl5#Rpj{Ddj=ToxXZrH|xxVk?ov?*FheJ}xUHuD7zDZ%7+&!k1 z3SRvxh<2%P#q5C*LckqXoB*cs%`i5tmi4uTQi_X zDl8_)JnTqaoe=>81Pavwb2g#g_WQW4W%G2n(jxbPZFqmgu2_LBJJ2XuLP`N0dWYI@ z?#}8Qco%9j4qA?(&drc?WBm1reIBsU9&wpJ_FX&{FYsSZ&w$aoq#@iHaG(W!XX^7O zjjwT;Mh`f)@&Wa+DD0*WSp(NOG#yw?-A8Eu6elHuqV<~r% z@a=YuGx6gELY(lFT62LY`t}Y((XFyoYJi5 zovi`2_Sb~cpC`j+Xs(BEvZY+*{x8!{mF6engGI=jLf{N-m=Z(Krfrk9#`_$ThK!k# zx?8HeYsIxSPbH{yLB#s~c)3J{%?`qmri0G-U6@YRJ-~n2$`88lsM|W;S%~-)dV_LJ z;CEg|$i7U40FEygg-Hi%7Ipll520~U1X3hi)o2Qau;t=i_j%FPu&#uQ<&=TPS=g{{ z+c8O2{&VIAWY8M(%hrIag^D!KJ=nI1dpb>cQEX_L^JfHGjFhSmk-Rqw#W)}Ie8u!a zxFg$q37`cpAHs6p@>(iqiP&h9ZW9qEwqyOjhZj&f1-r-Az-BTwSscr?<{=R^&rNF% z=m)e>bJ*($0eOfr@BV@s)J}1LdQHGZ+!0?hrbg5K4a@mKWq)m&X!DvKUTzHlhdprK zIgqiILWy_`=ym4a8#I8y9)R#hqoVMGqkaJ((`P*}W7AJLxLTG6NJ~)Okz!|gp0s@E z3n~L?1W4xcI5w(;f3?kcR!6C06Vz&8YKXFIfblNr%biRN8EeIE4#z1jP3SRYr9K3? zXZ@g+Bf&W&-lVLS)eq5an`A90=hdoX&7+3<(QfqRW%C^^t~WXxf|>q z2-ShN+Jy`WV>zb-PP>sY)X8FFptO22*l*BNe2hUV<2qjixqbeY_{!%Ifq7`R@+e`O zHHH0YbC!eLWAq3GgcDTo3x$Vg-1rM)u1Hbhck`27L8l~_%FytG@R6z%E)Jzuf`y^| z5gf+%E=@NY1Vu}C!URSGW#(f0Um8e;n}!DXG$QUhzoKypA%J&AL!1`YIK%~xH@Y7z zr*ZfjBBOoX;0qk4enzeQ3dVD;f5VxE>m#-hh)ARy92Jenw-S5-(vb)dvW^6n@T!#V zJ&hfXk#pJuHBwto>Go^@-xD$Br35_sUwpA$Zf(2B(zRsSu=t8;p~1hyDbWX7PEZ4w z#KT}&&JiJhpKAn*K`jGlmK&Pzg!IRvjuPR@=smHtfk=wqku{A`SM)O1|M|!ld z-;;$07yOYS7Aj+UM$B3&=+$vkMrtY=G9acFY;$X@4LGW_-q^4Z1vj^Cmbo*-M`5__~gJ@>2wzL4;{ANr?YSw`0*It_` zZ{ELBY0p~=uEF41g2I==&G3PcL5XyMbS0l3fa)zl=-!u1bEjnDiwp)+8HK+YA@8m6 zA++)^X~odX5r8Lzm5gTbZ-#SWhXYBSWJ~v2)byt~qgirD_mURW?mh94$@~G(3O$p@ z54%I==so(Fu$cbAm^3;P09;O?M?v(7!K!PcT{w-X%hm}>XWO%va9EEoKHF|FJ8Dp( zajKAEK?zRASfRHR%eWJ;M!Hc_fdSaun7SRo-Cul2W>cy()$mgOrcvT-LIp5zu*EW9 zUp3fjK0XdvooGizacg*YPu751bamV(w$g>Zl&oRcC+~>cfeSf2ToO7YKzCsc4+sJZ285cF$ryz+a+2p-uwJP zSh9T154+Ace~tb)lQw`c+O`KKbXNTf0%y>ui#`Le%yJLa9vjtJT#-tEcz(xboQ>Y( znbNIIhi7pIszL9uJ;45CnLY+(QZWFV;uu(NzsWnJaSaiff|6WNw@*p{!$r8`6|YU6 zsuS5Qj}mGtY-G1V+&-M85fmLV(GMNhwL~7kf{hJ%ud+MoGz&Or?GT}uQcSvNvI{Pu zi>)Ipx~fjaQS-SAF`2iHI%$VMErB29qLy0QO=cGOguhFKVX|>WC8VZfZxOZlD+wb# z5T&qBsytspv3fk`?oTD~wEq}lBDZ%HZUagdBUbkL9r7D7n(U<05-ML-!fVN?CeXM3u-3R8Ok~Q6lux=d6!L$mF?|$-^s9(4gL!{2G9w zHrkAv6v#<9f!fC-pgB#xL5j_5kgG$`jyOYo?>jy7g?GJ4b4iZ~CaQpd@rDT=vBM$U z;w!ZA16<43z#{*A@-j_cS=L{Khu}q|4d)TgoYen%Mf8*H|ztp*V!AX zHu2DOF6fXpv~(np!QTGMT$-&#?=3=%6!O#24~aW5SeYmi_TF@{gyB6GikrxixyM;> zeJFqaWv@&oQ!e7-OY;s*!J79DBof+rF50|zk3Ty;F+BgA>$(n{Wwtlo9{|TshKV6eVCmme-s^ z+;%d1l99ON=wH{|05RvUu1jM}`WOaZFk?C@hXz9Iy?JQr4K%c$m_m|69KU~`B!7Ot zMSKn=Jli|DN0h671FwzCF3($_3?k?q)zeJ&ANeLwV zIiUvFEMrOQu;?Sr(_juU4_oH&Nl`cdimDvIy-`L?Lv^MOU+^c*NI8G->2IhgKn@{k z&dmg}rfv1z=x`V4R_g7{uc7+lO4h{G5_d4*M4TO)Yv_)i2MkY-L94W(2-)Sv<)dKu zC+Jv?#W)m`cg?97QUOH0`=GStLe&VP(p)V?&!Y>-Yf5EA9;cFToN#rYj!Q_Hf}3rZ zyc~h&d9#u<`7d(1IjHGlW0CrKNEVtd$D{0l{J**jP?aMV*d!LH_nmouK>W=w17&`FgDEAzS8T~%j83kZmG^3h2HPR&8J}Idw z^WSRf=3q8Cqn8h{K$G;;1W9N5c~K>2KKZUk-0RF|y=w9m-MVw_aj_5o{iBX}RJrNu z<+g+AH)b2_6Hp&6xI}WzFrki)7zfx#KHw9R{lUyF>hCIf!4bEu+?9Ne9JD0E-PZpR zQU7>y>6=p^f&*xNirLx*oeay^QbM$K=`9gk56tZTx@?m)IytIIN!6H9JQ^!R z`=>_m-+@1Qf?TrtRGH;TJ*yEg%6>HPHU6^{riSg?IS7V*%5J{|uG^XhW>(=r6(atA zMhD$XC%Yj&(L!%uk1d5xD~8qX;W)v`+K@RGm%;T*U>TrA^UX_PSFscY^(o?8b&=zO zE7PtvX+b0Y;G*O3D>~c#?s>Muf{J=ZhEhN>jy^=q{i4eq(X$tpZ#mE;-~>f70TVb6 zHr6kcAJ>zCX>3v#%o8CF#ODGTB#qA~vP0(1*EYBpqwQ+{25jb^ed2T|LBfx42g9im z;d}8mAC+3{4nuk%0ogOITf2o2;-K>MrFa44A@PLg19mig+7s({>BUl)`<+LSWK!VQ z_Os^c7iWaP`IJK2L3Mm4ZyeWIHs9R(2?Ft-jXIs?7LnG;Y)>x+#*&k{VWt!)qtl|DyCH|G7jCvH@2Cw46@UtJ1W}Hgw4Wu-K6;m zvKf`EzKerXjU>W!ueawHUzVGR5VnxRI=6-*uPpzfbT1C+A8FXQ$SP5moGDoC@5Pa^ zxwPfF(wsUSM+tG}d~>$;EOE^t%fxHumT@cZM8*Yg$a7)ECOb;38DdLk5I`&W)}`}TOmw(Vt-(5qw^+L>;=DS9IV`_+4wc{vPDo#t;NXTP23p7F?M)5^yp^V}}6&@Ura4V+(?tcy5Levj`iRbZi=rE}z+q-S@l za<|%F2@6qBvE!!XNc@o%wpR_%RBu?yCe`kF*4*jZI;{RxmwPDV?f`gN2Wfj|snHMK z8*kO_Sy$Xp(kt$@PAh+54Sv3#um%jVt2lLixH;22DD{#F`EZ$bD^od91y1gP(cr^B zv*;=VvzQ|DP$qy(VzkSF{8O7^Eh_6ep&I+FJD)b|=H4Td1Ro50C=f+%Clcq#=#l%w z1%y0w&~7L9n%kiuh5)Qv4l}C%ZhoKo5Or4Ql|)miNz0S4EGs$5rbs>(CHMx9Bl=OGd=z0~%LSu>O=lA9^%_kJCKkIozF_po^f86* z46Ka9-^Yq&8|zK;8PH}o>hnp~7E#3FlFtrP3l7tVZkzD5o^AH+x`7|ix|t>`b%qFe zWg@*1`$b6T6<4jmMq`HVH|3SgG6(nF-`28hlbwv9(&s~i_1K}x*i@uTW3Xi1e z`~#w}+m`*mQi=0_zJe$a zxiTe*%_#(FzmL@)e1l9~?_*!@CeETS*Fk^z{Fjv*_x#bTIS)@)K?RAJq=LLd$_f%3 zZ9Go%owaw3`GLdw`NWlXA9p_4B;T?jWh66So-#)kvq7$6Z5g4&O?fdO968FoMk(WZXvQ8G>Mo^_WpPK zEA%a%aPpOzlH#}#kiiVIB!MU0Ow<~MDXlds)N#*7D;BIISjPGzdB>{35(MazzL`?Fljll( za;&-O1tpRtn|{wFGdL$D?Dv^NKcKo*tymL{^5tk=2Ocx)Bs3exMOFOv4okml6w_xuD~)U@uTY{gU4bUN zij!)ZI7tZ6Wd0VdGc3ifzGh-wY&9>?|MR^gP`fBu7y@Y7ryX|98ji*7_%RIIHZ`Ys zhNex@A=*U!!KHORUJI=wL<13X4I&XVZ|L1&^Q{MuF7ec?EHQZG*8E0YH7Y$*uLae!0u$R!8u#PsnGIU%Z#cwu9Y>Z)f6E4v!16Ybo%SQS5wf z32(gmb^$i8G^~=o*XeZ9y?L_U7}n?s*CW0c?UzSuvx|Fbf;V=D60jg&t+mtIczcat{ zTtpuW%)e2A$-#SD!|8DaHGF_h^1vNwK?40J0R#`Dd9XA+)Z`;i zFbYB*mXQjS4ucBnT_XVQEUo@6E3sAh z!B3jHUp8+RiM94+VcP zY!rVH*vyWBcCvR#hsL>8NL0`r%qJ;={th#8`9y(kUyR{BQfaalUI;%;h#B4 zKA|WAWZzq-g2bXAQ{N>-(NmJ5*_#cR$pi`uwk?~J(!ofy<6{EE*@}!?4hH;Foz??Q zcBCg7Y)g*}FValNk!viKFzH94;?6A3d16WtE?N-!c*!=5+TI9mr5~x9Q|)BoG>008 zS<(4qC%D5bqDh+ZI`_0Bf{2Q?(k%V}*W+f%yCN0wTQz!?X5I{3lM)TJvf+}xRw-T6 zSn$>6z#}t_C|CkGP{=mGr%0F+8&LD4$%cpBN%xdhvA_`%+v#Ua`K3^I45oD&V;y!g z;eu`=EJ!lpXl&^{DH5?p7U5^Kwe@V}HlDHYC6LoosOcj`^Vy;h(JKVPxUj?fxmKW^ zEEl3Tv$)t4!fscgov2vHwP*F;pf`dc4k{m7$QWSqD(~?Ak6&Efg{(GJmCLNhh+(BI;>b zJ8slNiz4?49Zez~)1nLdd_mw&q2t~TKcM$U8Cro8^v`*d!l@y_>ESKj`#6djNSC17 zA4i&UGu0GfGn+H^bN3Q2hQk5GQ!z(I+WW4!rC1u5gc@V}aeW+IJ`Jr!xA8@yB(*~W z7}B~rD#+DD)G_piPYBm+r@2a%_C=-P$ho^ZU%xKfqD2Li|1qkb{gNX22Py3$mT2ao zNf#+jQC|nR+ZrGkONy9DXLwze&+BI=*XLg3{cCciS++ zq|9&r1i^B%*PP{9t(q_l_PW09XI0Arl1lZ~k8>Z4XS8IJOdW-xjbk?D8^WkLKqN6)EYpa-!k2^Knt!n?E$;XAtueW+}n!8ZjefIib98aFpOg2{Iwl!B6L<9%o4AR5e0MV>+ITY*wcxo_M zF+KuWwrz1&%=bH|1_E}-lCWyknt$wm&FRSldOyaLQ9({al!i&n$O3M-ch5_aXLlqv zkzn8)?k%Btf07j-w($>RgPKTD_?6P!qcQy{kMr#kQyl^Lzj&>?UAnnEPLzjtd@nu1BmF!KkPT=6pW{^zU7$5d zlcY~*zonciip$GMhRBi6tyB_?bI4dqNHA28VSh&;{60;M*Kw7}=9{_x4ZCJ@ z1@NEMmTyftO_Pn3DE~$w>ELFMm08uKz~*tzaP6kd^#wa43tr92pd`)(+cG8-%ycDT z4k1?@Av=CGbla z=>V<4@BO0+hix=I3i`fzw^32PxHb=9*RY+^rm4TUL~^D5DLsLLy`guac>o!*z!>`YR1n60~&IBM3l$ABtIpQf z$gC8y*kO95UI95lfS5bno55J`;`wD)3-`mDH%FLhx4wXqvr)pReTA$`lBAli;hCXJ z!KI9bt9M)}f~JZAw7|;;-|g;$mWjvIHbInDo?0hw+eX6RSA~u!7ki^|Xn{@_bgvuiH+?BI#fB7wJ$neorzh3JC;M0=IEaEqm{!=3fr`=@J z8cyf9iZcD7z!1YH#{@2%f}pQ1?q#T77NG#)o#68}0)NV!u&(&0kHm)!+~^Ljh+&ie zYss{Lh#eJX&_PkSQux?pDJ5Vw!MLXhE*KON+!-m$1Fyt;M3~bE7XkqvO;D$Z0?F{478zA^`S0SjOpV4BfE`s zUmkf+AeNCPX7db0c1TcVuhP<9~ZY;rp`LkHVD|DQ50P@q&o0d5Momhv5mc z+oZrbBP#02*+H#DefoX4tJp;yU3;-3Gwcn#elNcc=+DgH>kfHITKRgl`#GN1E8iL& z*p1gQ>k>}}o?5Qs=x!-syl&T+>HJ#3Fc)r&0!v419N|sJSR(V9Xvc4Lc;q@PLC!h7 zT>g#A5>O@4^wDiIynCI5kLKg34ut7~_v!ysXgaqv^)S1=*EXUV%lr#9W(mw>vV}Bb z3Cx@o(0){m8G*xg;6J~0r}4+OXF~s?CfMUT)PBa{vo2i_=vtu_W=01;1RIaW9T;_d zS_*Nru>Q|KD9f*e%?Qnur0uK1DFm0JP7%*BjXi{pf+()BKTcy}x=PUc;Hn@uzc}VJ zmAH9H_LIcJa$nR3WvBTyyrX|OpI;>#;YXJRa9e_lh$n@Rn%`P@Qp*CJw6^AY%-pal z99=u;%I=P^u%3tCp(>!R{ar7NRNI2!TppS$r@`&DNy`+RZRWg5di$L_BGXQ>HrL|? zm131@WCZ!WNH3Md@J>FrX(otkFXoH0H*f*~7Ox#a{r^nujjdr=fSLZ+(1CC%)BN)}HJr zt7&PWFEdK&M$J*(7rcHn1BdS7!gIeP0mzds4zu-p@J*xDOn4zCe^O#Q2}3b@Cibww zL8Q@6&kD^B>uQkfe*Ov^&f`HNc_m>cmO^btz+~Yfl0Q#*_0Q{o^!IS2CJng(c)E1_ zs#g~3bq2ZF_xOq4d+rW^JE|Q#SmzbrEz*L}g9JswGo;Fsh0w^PN z1Iv`>)iDMH>6>hQd8K_KQyO{ioz&8U`Mx*yg4u-ayb4%koWOAJOj(+0pFQG|#s!>TfMrxqdPExDBtIN7LgT4zn^ zJS12}&y2*K1WTZh^{|Ak=1Mnd0gv6jppbC<)M7t^u#I?p>8pd96?tJ1J^whj9|f z5YNg5rM(ADlZURgqUx?H0{ka|Np;Q}5GQUm^PJcwHvcK_S@@@Mk2A!0z`Ae6*iA8E94_wDLlK+gDIcrkIu~L(FVX4xsJCzyEIvgb#o#p$Z(0YyyBk&17_1v ziNrh&Un%r_&9VZU)JXK5Z==+GNu8<;6quJ|OiD|t%=BEBW2KV%UhKD!fc|Llu`qyO z*1TuGz}BcqJg(N2y^4Popks5AiqP>`k9m^%%TZ%|W5BDl5Xae@ahkT}aQZ!%r;fYg z;oRb~+Z^&lJa*CWYC9(#%+c&hVLBR#r*HeR`^?mze{6nc&6SrjPFC@6Sm3z?&F2LN z+~PUfr^g;>hojFJaddtl{73^$N4dkq)bs3k*>5dpyGMOn95Jdp-dsJLkVBcSp7v%* z1~!7hs7kej$K+SSNx>^pFsMz$_N-4^?z#v(zB$&-~kkZ5!~Mt z!A3)!^y1OI&G64jV8NKYd5}71pP)lbm;Y&w(H0WTs0YIkPNT(@%HwzN<2~}BO%(#V zafE%pnT=n;2B9>+$|M&om&vTZscP5n~pI#}v@@*T)HbPNVwCq`1KDctHjbjI|4z zMX=+AXzrEq5QzAK0$_~UGK8Qu5hwAHZuJ2BAUhhr z?nD=W@8nuNPL95h`@XrS(KUikjrh3Z_KQ3atK#j@I?Ckk#^0-mVOb~Nytf>Z#REaE z-M&=S2A&075OR2Pu<$L9f4NfmDT& z4V;;n80Zz8EIh>dx(Lqd2xKiVJ!2jcu#)8orX6qUB`{krwk~%!5b%r{$nCEhwB>%l zjobh3e9Yl%!XjAPUEj*dNH{Yv7fsd|oh#c`D@DUZBKgq+tQM~D07tNH za$zjQ%m<~3*nE}g0yJgNMO8ElA*u4*wge2+i| zGz8`WjOg)k&aJ5<$bQ>7{UXvdDW|GJ>t+>5?X^k4rWHa~bZ`I~QO@k4Zm5H^eTa~Z z8jB$;za5AHY#$-3U7N8JVs>sBfw4^h1A7Onn)bt*l>C#pwSQukXla?@ch$Tbfn!pp zB<8d}zySnwXW`3*d*g5Bl|wQ~%wcp>ptIUbV)544jkqH-|Azs!sw_EYNU^1hV^IUu z_&BJmF19$+4w7lLX`Kn@?Zhn_kVf5W#LRjs0|NOcAY^s2X$1>W|b2Z^KA_ zKH^A9wHpsc?;5c!_35;Ew!f}D`MwoMP9cyV&BZ>SmRwz*v#?F;mE{W0@T|hv$TJ*c z%UE5pKRNP4avlu%jd-NCUMURJJ?uUCjg)WO@S_c}cL4I1w>=+Ct%%*eC>Gb|x`9F+ z+QUb7D2y2X`bp(ZXW~t+S0~jNODwdT`ReLCb4$Lk!WfJTApbC12T3s8sS>d-8~R{;5=z|*4!m8nUTp(zAcJlElUnm?-^K;SfJjRb?yr{CX-&}( zuBu$#=^htH2S`sS49g zd%)U&`h@@2?m}?(ccRBQnTyA0$O(kdz1Rv3kfKM&6*5(=A)IPTB z%Gzn0kKB7%bTsXVFcRcrCCI{WeSKuM;BW`K`WT4|ZP!RmGN!rKQTkb*is21N!(urc z^_l8{RTjgk6|;TW&U3{Hz;QzzcI|XJIY+JaoJMP%FZ95&?w#`4bZQHhO+v?a(M>qSNbMJlG zuj^sGtW~q-tQzARs9gHGzz;Cy)OY6$;PVXNP2g$j=*CMOeOlnrL$jfj48p(T0J@0S z=tFfXd0LF-h+_tfdsl}e!4Uo%R|D5Pzqta6mO`y17Y@s?rHBKAP}OhE?GBvk$K zD9VWsgMk=rDWMm63=Z?<7E$g-1k4MEpT;HC{)**S5j}h0>A`+kg7Z6cvm70C(yRUf z=)~?!_w#t*(MNnIQD9S$)e+((RzA> zpFPp@=z+-L&-dS+nAT<|ZUNlT#z%ypSa~>xJvk9U{PRUUxIkmX-r*`s6y~W@^T0Cn zG*%_~WjGT(3&Y#Q$wfGH?17XBusiu>^ZlhZl+D9ex9g2%=u2|&N0lMgTRrds;kPBm zihwr)htvyuo3f}nil=g*6@U{YIgWU#?eq`-zv~vDlD*#HwOCfRtS?fP_Ki=A;&-Y_ z3I0tx4vUn&L?v^VaucYiXDuCDOUpOw>>tmzd&%nv*S6fU-rs(lt`i8Qr&g-k`rX%G z7mSvzE!-V>n>!eRoJ9lBZtQn1Ong@_m$VEcHk|tusK~HaCk@vyeb`?gkU?PmFaMJ@%3ekiBjVZ;$^KyHCPZ70+EcSD=Z`u3!AMK&Ny|TJt-8|gbQ4c!~Bh#?i z4OHO><~?hdhg=`jMDXAj?%UjZ@ymIK+gk|tLD`~q;zcGcT4RzV04F`c;M?-UAH|bO~JeC zSbTVs3bTd`?H#(GzVY%fH&DjG1&ud1ZcRGUSNFTVLVoCxl|#h~afHaw?UC?uAax4dq z7fuxo#3hpl!UOhz$P=I{Mszw1L1)R-l#Y(pu@)BD0bkhbmdwHYX(b8@i=UiV_dAV8 za%FdwSr4hC-W^WI`swssfE6_%U|HngjkTa2OUhpyFvYgL0iM!;Ds#|4Np}*>F{ou7 z&*>N!eOv%8D_)!=B9(`8`K$^vnQKHB1JuNhzHi{>lrIOo=88^j4UA{^zYkfFIx{0P zAhxGPX@hK!iAXE@a2mzjIOV3Vh4y@m1atT4KET7lvip&#jOyrbQXbT?d*J83PU`tF z0kei??Y`+PU0S@?yF|zF+1>I!iD{`c{a|w*(2;HEDOM6 z7goIz6jAZ_Y69g^NgsA2Zj)VJw-(}53fWEkxaQSp7u{>;BjB}I&U{}@3}O1o@pWf? zM>YHo>WFvDl|t`li*3NOIioF))cuw1fVGMvwF&hv*iF2~eBKQrmtkGMb zz{Rjbtcxx-jCOM-5?~p_?9`=k<;+^&u=jJ!Y=bPA9EjPV!|0K6Ub$~F-!q6D;V>ox zswn$iRHw5ER`TpbzVNvPu3sJ^eVyF`d(ioR`AxA9H8VmRZ?J$%AHk}f;Yc;${Xt6UXVL&P z?6%kteP3!3J%Kdy4BeF;g(Jyq0*{N$4N)m@3gul*Y7cbAmyy^hep2ANni8tEhs5Fd z*OJ_$_xb{-Ah<};~Jzyj-j2HzEtmC2l zUEp{bRECk`9Q>!_Mqds2h0O%U_T5a*k!=?i>> zYxQ;8is4>UGErE zhsh;<_3=T6F$}I8V!XF+r%N>qUFNA^+-tM(;th^kZf~a#`MBu;Kzaa}e562L90G%h zS6~nb=f1c<1QhD_ATS~Ew0*D33kebYSQQmq4+$fy$E4Kg%A?g67S!z3Gp)&(ANpT^ zYi2j{Dd@MRrWjN;n$z=9S52<|f?GFE_AkIe@$Jw|<-SjCAY7WS_Gk*I_?+=0c}BY8 z>gzaXR=Ezw7zmnM$yxy3AvTrnkQoAwiJ9i0gAZr3rH;pwDfS@II2x&2HGI-Jc6!EZ z6@`it4VdiTqIiDTJO)xLB)$leP>Afsmceb87Mtd*o2VKnuAES+DHGM(kXj^Qj9H$I z*qx4sDhBvF?Wc#j5!KLQ8$gh>SmF{!y?dV7@4vZ|Gi(p33&Q~`dvowSVvujL%};Ww z{?T4+*cDe>7j@*PytS2AwsdsWp^Q4?0ujKe_j%aY5!xDlw`|mWp6TC}thMt)y3KBsBDrvuhFS3b^)yHs zrqABnI5ggi^Aeybw&m0Kn*%r!Z^VbVp1}MGP<}b-tT7zH zi7gB5z;Tle@W>cr`bb9gI6r&<3Xf8YHm%?qU&5Ii{Mac2x&mGn;EKsZ~J8k$Sr@LZzyh5XXy{)S;8G0S6eYO{4+F$jEC|9Ls|n|2~D7&+(o>}q{+@JJ!&;TT{Y9zY7oVHcTQ0W z=Lq-K1>!A9e#2sDsHVay5s@c*b_U58OS@TT)uZLS+&Gi=;@qMR5=^D8-QD?FpDMU< zDi_Wx%meUTmu2q>i+o1^_cOi={UvLAFM)A-`n^B}CVg8&rS`sKcijgSAxFp}7o4{8 zYMJn_Qux^Qz^6O}VE1!zM{^T0p10}^;_>Uv(E8JC_UaheXe6i(nMiSnuo^cws<&gI z?=Cr7=}gnr)w{7u*iWHt4`~pm_(NYKG~ha(NyNyJv znvZ5`c;hS2q9Wnoc}w*CmX{<#qYd%Rif7b(kEZlN{6W0ijyjKaW1WB5D>^``#`vtS zhjlqRHx6DE3UwrM8xF;WW}CFAqzi!9LtvH`7w8 zCB1VNMWWW23c>`(jdFER`mHXCxh-iB8~{kPd)SZbomsuEW+GnwD(RiB@%9&AL{w(T8MMbAysIDI^4lMP!(j(zh~Q6nRCy^u^I|IC8SSl6h*b-!Bm z_^*2+!&IBup#)<~=${C8)Y}!y*xU6**BM(6-mbt`(_MjEGOGJ{h;;PE$MEj=pE|&d zw}nVBxDF>xX?@Q?jn@0C#Rb=4=rMkZ+O zsgP7Cc`F?q^2rM7PtiVgiYHvQgU zjAUgNSgXr0SYm_#TU5^I5-*NZ7mh3_#C#znle_xyj8NGDL*tLAL$%DH5f`KVgN@bMOV!(GLp22_!c`UWL9-`#ijdWpv*|(+S9rAg30Xn~VHB7l7m!l7-oM~iDNGqQGLn=3 z2Gr!?&n11I-Vhe!hfLLAr^;#JkB#WlokrJ5BDPuq)>>r>l_4tF46rsi?wu- zd}D|JKNf;V5ln#pg6Mcn@8_#i;u?%4HCAcpn>#j9AsCmK32?@izJr z=Z)rRr4{*;B6DuMpj0t)Hw5S|ky8#5zKaH%C-7keE(UXAPXCr9N$J_n9!HH*cNj^a z?lelrzzvBE=@!^h_Lz2mn zNg3F|L7qD%TRMeOTjfx>Ao#NO^(w37A2?JQCgSMV#GyzGsO;x2uuFp%%6P?nEp)aV zLpbDSsiK6P>58-?+6u%2kX}`98hS4GQfQE+uNn$4(?^}&jS@7L!-*ntYf`Pas%5|c zAPArB?+YrVl_0HD6qNyo@uawTiG7kLB*I|cfEXsdg?0{J7<4HF(BIF`fBPasjFh)z zmsx`g@SMk7xb3WE1l|>VN9^gQbm<;W`Z9Gje}+UYv#yV>^Op|)h*sm$AOdi&AlHT! zdsbilU4;Q7$l8DG!6O)zjUU`)b<`ICYm1x|3{s(~J>lOdx9!-)?w4YVhI2#H>3^sn zdN0PXd)4?F&ivxVGf&- zPcl2pxXiy(q!Nh2km}LsXQq5VC99yt(CtRDG$x`N&Gvrzj55FkL;S<9b@mt?hMC z*#m~AMQhSbG7P%2SGC-68s2*c0|Cd9#AM~#@W1LsI(jtcWx!`)Nn%Qp_qDd_`0&sl zsm>$veY=(rH8V)llVz66CxP}9v46{1)1lv00t|lqdJ!<~$^HfI@}T4n_zeSka5?Ig zJO-w4*QAymp9C_FJOTeh6=rh>?G#;I`Ko#2`e&zE@JrmfAWrWucqd|~zP>u_=ABEqbEr|z$}@*4gpG<) zawpf^E*F9e(2XEbH>EKFjJp1v@NY0v0$RhB`^kZ=n}r{-oxNPlcf-u|I{_9b{7k9+& z8*I^_a4P$wYqK;O*@w?Y9``YxPZ8)ec z9iT`bJ9Gv?Vv)Ib`1J+fYk70%g0Kt>3n>O>nBv5lH&Q{+*IQsD8pA+at9ocdZ2@jE zv+Q0j{uge$-Fl2+4po`_F94!Ni1HKzDe@EKDbK%$ibqV+b z@qO~gk(DRWByyAsacQmT3GZ`&@p5c_E9zK?E@}CdTX95!b(Xe&@#I%1e1E;EVu7nx z%v_5cpqF3%V%2vroN6RUsIbpMh>O3&A)j*$dx%6eB!8iR(EX-Q6c7?v=~F8)`J!ns z(se-}MxyeMjdr9_a>pqLlw69eP;Vw6wh3Y|Vh~^Gql%iC0h6ni^$)*dE%Nd6$_3-= zb|LDh;x!j_sV)4$vA*w0a{S*aa*utL(#FS)m#+0hn@Ep5>CNg*>_YX)5b^%syBq%; zNolpH6%O)BCw{vd%Gg+rDQC{)aC8gaE%I*hMhW9HPqQ@r>0~$KlKE3HX zg%$2GoWepN1(8-n4qZq>7#z1NjV&R8wAKtt#nwLv}UapeE+mz%5 zkUA78p)hU?%sI~fv_BwtPW}U9DVGJQ;0%OtE}K|{ITjJ40_mW0ShjW4*?5vfIo6iu z_+5}Yd8ssFlBGBZK`{r1cS4J#wnX-k=w zZ)7?bS2BnEy#ZI-k?6i;SVU~6hift0kYBHG)`aJCW??q z?>f`cV(a!E{3vlv?vZV?f5!Q=Fn5Ci!Gm7^;a>6Q}*zm^6u2Sp|!m5ouUAws1%+}Xi4Cgk+3PG(TS=~Q#gZnOMU(^7Vud5HNAICJJgPLJA}oGWN>eq* z2)Ozz!SU7^)71T(%M0iOwNnDx$S&3#3`PVo(=q4`YTs8b#Mm*BMT!N{A+=sc7wzt@ z;A$V81!^OCX-OZacSHFw+n+X;a-Q4B^0O!qFMvj>XlT<9gW67IQ0B?FT3-YNX}1`` zNR7%l76pP{kNou`88w31)ikxnJf?}BrDm%yQ^`?mx_Rb+hS~Vcok|g?DQhU;SH%ko4JV+54R7^u7|h6 z`BS~=C)3vLG{`2rLC`ujl?K7(>I_d zFvsr+`MjF3y8wjbo}X=>H}3yNn#7lULJ($_|A|4|wEgi5`@E_gGJ>G) zWo;Ww_@En2K3S?6myOq!nu3#`TtbD%jVQUP;-C?4nmuk zV#C|kB{gZ>y7S|5dtC=Ey;sdT-@Dbl6+27T&vmV9CCM@ny~*g4ZHUeUCnvr<&dC9? z)h}Bf``$Ao!#ie&aW|gN4j%kFeKBi(M>nL&yW59TwgI1yOb?dpcMIb5Fg1V=amyCVidKJo4*>lxoR)MFt2nwx#Qj2LjK-o#JL) zP#}d3hh&odB=ZuKvDIXM#MlzOHdtwwRgl#dTD2G)m z%;>WR@~rthmUC9XN2zSUKQYco)UDP^vVepFn#_+6Ow56%RH(15xoVTbj0+Ul)pS?) zN!|v$J;%5qdfwVpf!4|g2jIn&UeF8VIMpl8PivRQ+9{tQCBPh!oa5GyPCQF zMZcEGUp`hkq^uB5bu0-Cx<>$w-=2(jJ~ru{zP}!a*p2wN!(QkGi_HYLP%uvexTlV> z3h24G0=t^_@oU#;iy%5}Xo#(3W>OD_A0amC{$Le0+-mZ*`rs&G-FCO6QKJ}Vzx8}sEzYlj`x7V=qxkDAxgHAO$?sJWfr|pHkCc+#Hn4oj>Cxge|jqQ{u zsW0Fp1(!zl%|PZzBLfC9tzS4hY)_EsV?3!FssYgy zHVlj|m^nIkS6r-tEcu<5Un<#Ih}LicG<|W}g5)H*;@rrI@B&NIi`Z&z!DUKN>yru5 zJqHVhzt}g84nUXTZGL@dsd=4p@8Z02FsdWI13>Xhar|PhK)nHW!9Z$XfwKCKF$_Qk zHUa{;Fd#C6(eaH+en5fLjPw6o5cL-Xq~l6~fXP^FLH=D$v{v3bV+i=$Tiu?0?XQ1Q z6PsMWFgl^06o7H4B|2PWQGZZD1!gXjDb{KaZA7ANVX!Iahay}(oqHWvLSUh+4apiKB>o?31_%>ps(}zNIRXa*484qrt(mhq0V5Oh zf07<40Nv`ccG&EQ-8Z#+^m$`%B*4U>Y`4_{amRBjV}ugH1p@l$Eucl;J$7ghT* zIMUf3tsH~tEylf?c$;slNm*mj7MD*;mq5{T0R^}aWYts*aAK+DR3+pwc(0@gg`=JZ zYdlUEtSM;x!x@G|ndE}47JGYB2gG-f@YU-<{N-Gt2sr;fxIb4S zSmA>6AD}RJ;p9-Kl0q!=QPi;Af+e9WFt3Bn?e(Wie^8z`QfKzJYEd^0HWQzc@4vL=Ln=Bzy9jo> zX6*7zKz8ycres75b^gvj^%pKqHv%&s zwil^O3jyXw+hQQSTW{=#!n_mB_(_WG#~_^f9VH9a&_vK+5%Ua)jx;?@7`nWx7{cL*2YrL$zxv^)V z2$Ac2dGE}uZOwggdjQVu^j-V@_g;Eq+f!V5$`E#v&1aY)*NOqV#q&`3-g-u58{whD z|M?+3!07O_Wp7*4>-%=!6lI3(4bc49H_f%XeH%Hq;uK}?LpI;}a%ag>9@ zz6!m70Dt-*{2}u1y5WGV+E8xSUOY0FG>i^>emdY(O7Jlbqc8y%(;!Ic9H0?_;84X% z-1^I*h}RAKU08EgB3U@g%k*ONX}cnymbGabYeVYSm4tAy_1GG57MCzK{z03Sm<`)d zyztAb<$s&8=x@y8Y zJSbXuMkobOG*YPN9~?I69lWcUD;`6h<_Ghtj=cJNRjkUY!aE?h4j8@>Mq)`V`~&;d zl&^omNb~pJi^mVL)U)ikzbT>}EtrM~C7if@4{QJlHYHWGl#MD$NDl!_dXnk*A^0#4 z_d@k8ed&cHw}deYR`o+Vy#X76ANRQ|sUhG|~{YN`xDNL^}Bh zLTnyzL*wQ`D661)L`1J?$;sv9dNL*2XNy@^30(AaWp95c=ziSJKJXuDeIF}^DH4ao zWC#k|#Fu+pFTL3^34Kx0`q-$7uHNzLU~FJ+Xkagdggu}y4mwgh&v3*lMz`V4nxO-N zEk6|>)Bb|?T{ClLEXa!b)M0|}m+w_x!?0rl_8C#?5ep{8XGUlh-B#^Sq4hG@JQN$K29G z);aN?#B_j1j*{1q1y_Jqj?(T`6SwDvIbAWop!i(ED?CcJnI=-rlaD2$;**3wj|Cy; zYZ7+v){ymU25hFv-J5heZ0aX2-@?q5<5%5SWL~^W_9_I(T(Zwi5K)mRi0tv;ywk} z^J#OL{i^~=2?mvbNmMdODi|@y$Aom9yJT<{PD}NYOyq7;;`%2&yt>YxR5Bc+Wj2p+ z8$v1|4TD@s=i` zAr07(-2+CHWOWTg#r~~nUg5K*kBC%1s-&!nG%VHtLs5vbwL9m0$)xlI+BBZ>G-?1(8`xmyhA}FGlt1>{Y zD_>L4ln;0R)3GNkB^rW&b=7neh|IXDy0h6~koQT{-qVOjS9PgPt<%E)IEck^tGZXD znzj*PMgW3?lG((+kS!#z7FaHfXL}4`gUkU*m2LUPrf!&Wuhll6?>xVelSW_9RKq>zR zQuTlAg`wg2F;}zaZR}$Cd2E&gMJi+DQe{WHB081e*PAKND~M3%%_4Bm@gCD&kIO0c z82uBOy22du5j);I1qOX{e_{&LekWqT=#uV5=Kc|9_bIT}orWJ-=tR`X29d0^>w?!V zH^%exPJvmDS7695a%!6WHh_E+t7+-_m-s0HP;egR&W!T6wfmMA^OkYAKuwo!tB6Ny zFe!Z7LIRjS>`5W1F(gq(Rr85ToxcDC(3TZ$a2=AREbki064AKWsSAvxjj~yX1Xpp5 zC=;a%ZGumj+cn|N+wQWBFZC5q>jWQ_)v3JIY_fluZ%@?|^fhgQB;exkK5N_Mao>DY z3wL)+AGoi{Sz8lR8}@xdD&aqf%|VlXvZJXOHa1c9(1EaKc?!up%Z9_mxdN=K=+uW{ zeHQxKlE%p|fx;PhxeN>q=`pc|SVRRIv(Tpc#eXBdE{zn=WPf>TWoUXWdy++ALJI$S71ki6#$KUSNEA zXn;dWR`7ozjAX@I(W|N0+rbibAB>N%OYU!$5Jv$68B`_91w^y=#YHvM4fLD!wANL)`LH_Vm3%!({hPrqE_Kmzg^lgg&@ z4%S{^5?%O(23RNADzSBF^$gT5l)fAKJnydQL`6OU`kE(ZlfSHBC-D+$Kqv7MNO(`w zD}=Vv$vC`;Vx;(Y?yS{ipRoa4u0nA6=jst36r0Bo1uCxEL7G>0< zo`fzMs4#tKiquSN$MuhBf=KUJMPcU=*ECBVUc^;VSR8T8HoPuG5AA8Nf5J>k{Yu%H zlfmq8Jk1RgjPbV143xIL!0IVbdLF3&{Tuv_j{^F?tV(uPg8wYa)RPTR1Q6!`O&aW0 zxA~7K|La;$@G%ii8P3BSU=@~n_#7au;9?oQ>HFfvs^;8ue6?2h&UY&*;IhBS;{I;Ja{ z)=I82hv5F)U7dHuy6fW9#(^xgJ3b>Wue^C*ctkkTlbaq+1) zDl1}rZY@9T^t-;T=u#XEz##ql0e)hvQ3C6SbY}Mc?txPBt8scB*-)|T*T1#uX&n9iA>|=o4vi ztX(K5f~FywRYJSONJaC?Ci|*;r#@_GdablQ7Ft~voCyLPTYNVS08TV=Ns`1RsC^xP z3tj!jpuw-w)45LZb_UF8u%02z3IN6NTh*->(I%u9#|mn`d)M6wbYPhWf)xSu@mAO z@ATB-(4gk^$d=p)fQsK+D!0u1-*F@PiOS!~nlj?L2YyNPm2hQ*huIiYO!=(SOtMcP*X58e8iRC zZl=M&`7)Db4(!O)=id^36?c;!-hu3|A$xzqIZ1CfiN_sI`;^hxgGtw-*XWRua`oDW-_Zyq!4ZUZ}pSwZ$1u2MT^ zUm?m5L-f9h0Rcab;o^ui!msx9P8@u2I{ih#ruk{loAEZEn@2o>eCl?jc>qK(Y$PCA7a@O&nfA(MYp}!rq2`)@%NBij} zIhzzBQDO$;wP6SdaK?G_0wK5wWAftd_j3*9kYGyT0fM-l>e!s+)sfj9o)PgJE*@BE z8y%h?Q8CpQi+xKg(;o5TGm%le@W<|0_I1kopZvs?8i)MIUWGi3LBu9#GA)09L#@vo z#Xk|f+?RUlF(yR-$$&=M2St$k16_80)Vzx~L-eV7GbdMAHYF<{ttv%L@!!!6hW=l9 z`t|=(xc}qleBZSv|QO7H1)}~a%XKy`n%Jn^~ zcrrtnBPSMUDunaH2+?DWJ8L*ODMq5OhNhTEBFW^`c=WxFV5q)X2GqH^RAV}vhFLLb zBM#2jmh{nJ&Wx44CR4U#>e?Jvjyvl9S#?90TyD{$s)@MS9hr}O935m20|)cmhyP9r zL!@FpeLLUaaf93f4A0JQI(K))mONwIZ;)VuV{C4hG@g5R=uUT7zKejm79{) zA`OCnr3$%@KkMia12O^&6P#p8;RBcs3tD&aRPlDJ^k4`h;v)-j5CY!uLuMCZu>WMM zh*(MYOXa#1G7>X?yh3zin~fJ&hkV8A(w?-;^|&{PntXDVh`=Hv0gw(~a31o7G`!thWI5Fl z-R>=4I-=TY)swFJ4KB;@GA%W7e&rhMC!!-c=$LLeQ+Fit1B!$jrNouL?*c{ZVkqL0 zGE1TkgxHRLg2|mvXG=id4v+Y9%CA0b`L_Qi9wTh8@J}3^`QS%v-`ttp)n#1o)T*Us zef`l)o+As12aGs{zn#Mo)2=9N)wjSgOU*N>iYv^AEKi3Qcb}W94!32G%8xd4zND7 z%1Rl&GX3;x3f&6Jedy1UbxpkTe#zbAV}KAYJl`^7ZAR`PcyS;dj5eF~(XkL!pmXe| z)nh|51Bf;U(nJ<{lIWnozT0%t?|!;K?2{b_aXB6T`^JH#;i2z?WuzY})HFHv zdmbk4;^-9zIxhR&qWRl9{U$2FO+X>?xRh49*vK%dh#z)d--Jx80dJH|svq{I!o6tP zvil(yOaKqoZ?++K$EPnQ>z~MnS8lY43wCVLH=xD4J!=avZ^h+;$c=$W8OtX`6JN_4 zAlRFv_}jv=C}RUN#02h!h=5e3r9QXcG{})8H3WhP8)Z!^d?}azcxIpR1*{M(YE+Sa z#NulZ3}3#cR(T&kKhMp*E)v=?fYR1t4FQ1u529o-IO{@m(6cRn;hyZ+vL3HUiIx?( z?+{9P)L{+<)(J4?4^CcYxtx$nwr;LBDx`pSDcYPyv9{H&gLNU&A?Rg${*!f z{E<6+v?>GK|I+&WFF6O~2b}Xi@sz{r8g@Tt6TYjp1pgFapxC|eeJvN*fbSJq7z2P} z6c|WInUg7kiw@cZzP-#46p4uEoBtNj?>w2u+L`unrf_JAad`3$8hkJjGaQ78pi&Pt z#h@}u7$TcotS__1IKJM=2E{W`b+|~cA~C`!Q0ezX>`eRSc6Vj*0z_qv;{fr>VyTgz z2I|C9f=S|PcWO*>P{SNwQiDe@BvJKg8~&r0Tx0yD4E`=ogofOtjGEIZX=)E5!_tqN zrL&@JG-|e;IukM7P4~`L<3&PlYKG@w<8$<6`o2VdmAK8(Q8Mk2w! zShLa<@#nXn{5h#fghXQ~9yy3bZMXmC_B=Mc@E||vX>mB<QL+Wwd2Tr+)jZOt?r3*wr_^_D$ zX|Wz&TeLNFUjclAW2bGmm41vVbZ5R`hF4?4nnz;JX_bP%9P@^qmD0Tt=+=(<&TGrTfe9GcX2C z(4%l;wALJs*fD-)C^A~`-pE_YD>JL{vN&9)mLyE-qBuN%2w1sQ7MHJZW~5G(huv)H zi#|HEYa@ArlmMwf9oUjvRW@LQNgY;MG@X;GqSwKAT;})Hv=v>6J1IYNX6`@iX}F0;!N0e)5$9djt7| zNnqpJ2;c>yKLCCZlpS0r73(lS05`0!EYkw4`+MR+(64?FC{sx0mtxalqc^JIo@09R zXcUYR8(W2moi5G7cE#1$q@S<9g$`C_$GH);yWSkPBQv^4v|Lc$6PFD$b`N`uU3iKF zG%l5=d1lWIyf(8pBO+B^Almhc>%5@F~OR1sv9gF-!1GX-V~CUY)*BiND+Db4&*` zQ9@dGF2r7bt{bH~OSqU_s*?}8sV34KxW%1hY!BLO99YHwGOABl@*(C2S-SoZNXLw% z3>fO|f+bU&BOn;xLm2s5@CUn&sM(5%d>KUSA2W4#U)u~`vcr{l)&jiV4(eBiiq1GF z;+GCOiu*a?7~<%v5)Jj^cTTX``md^u#2%bBCOZYC$CQQqgbAUuc7grME^r20({*Ah+%3<0tm~Ezd!vI!?<7*V0qkC$!-L|danY(j5_gA5JDHpN=&eK)^UU^eU0dZPK^jNLL{QwhXd$3y)uZIxmhi+r<4 zr&-1hor&VQ2tD|Mu3nGW`L%vQ1>^m>W3B)Wo`H0fcmdz528g?uTnxPr`3`X+0+REm zg2}$Of*y=j1P2Mm-9&+fuyjqnbrcv7ujeB9Tx1Cfhpva7KkQNKz53ew0LQUd5<4AV z*00WWz0cif&P8)kXm97X%HG%f9De1CRJrF@Nn+mL8hr~#;g*ZxSi?XhEZ}~>pzsEA z>Vbvwruj!hCFuVDZ7DJG0Qv`B^MgJ_1!Z7j|7mxrQW?%bVE~{=lbF6IE3R&^k1N&l zcn$qRR@AOQT8<`_7T=#SLKD%y(!Wj(=Y@r&mNGqXX1emhGnxB$qD63aWyET~1ZH_& zAbw@?Fi^Llg=ipZOH7h6yQY3_tNsAZ%?`Dt(zo9jD&9BmK94?6U&c=-p~kZG`{aSu zf|zxkZWCnH3IUy7{iaQ?IncJ9QZ|sc{PSI^Ugq>B?s>0ZtZ&l0Cu6D`OdmpXT*Q9CsBe|%I3wg z`1+kfAB2D@N{MH(CYACR&AY-lyaG<>=!}I3DWW*s*yLcyKcC(o26;jsq_C%pA5%#> zIVgtk#eQfq;|!X)Qp!nG@kMCqV&lQFzdu@ZV=dHnJ111uo#8aPt<{zvQp|7AC=o-A zn9W900AJp2q?YvFBTheOa&g)a<)=H;RGxOYpyRYQC6w#J=(QITJxQFz@E{~K;(dsD zy+LT3XO)I*lcj_#oW)+xo1+*+(&FM+BHuw!e_nRt=v`l;+CGawNjhR`x!+eY0zr+k z2~WR#k53Dl1GB~{)4L5hL0YktCTc^I^%O?!0nWZnC=6$YdBkGLsO#o3N--E5YH#o9 zf94hwu(IS{{1P9V3jQ_8P#zH|=RrcB%@!ka1rm-A1l^;^XlP=}(?~$^_n#)|Lxn(Z zBakHSJSrqe+8t9!;=n+YhyW-OAa}N0;vdf>;7b#glQxp_(2cz`|B+(Yg6qM3ftET|2`jW!o)Mk-9aOu9$pp5r(%-O#Hy-yTkR8^)?zZ#JsnM zT4R^H+}>QOWL0T4?^93pC0?Y^Np1jF0R7XrjF7KdZgnO8`0$nucvdFIdaZBPcSJ7R zs1g`f<@_^g%<(qKohL6XMTfsj!8T>(ogL8iFu$F%Xrgt=D!*7X&N?>PgzJ>Aj-yJ9 zgCG;SgOcFcNI_A(01iq_KzvuSI$})gNim5sY{kF{CoIK_@y@HF3#F3qW+?Iq0AQ)r z2POXPM4oL&`Ol$Rq&Cjfq9_yR>Nl9k&}{Yq3TtKEOwVp z_-x_|L2G{Y{c`o%)Y!jdJYCif-O%?6GTgC|yn)-!N;Q!sYbldAM&!&r^Z<$8JrWzv z)V}N}HO2C0zJkS9^eL=n$e;3%7<7OL%$Vp8g#yaS&Y4<20ZI*!{m&5G{jPSaiW$~+ zbjuwIBD+Z&r-e<-%MmGHMco3dwKL&}{`P_!k>vLGhaPRcAWct3dq2&Sz-%WWh87gR zD^_Jy&YXwJX?p?A$^JOnT-Gaw^ z#Xx&EbNuvJl^O8k3C|lpLSYnuTTEh>CUat%=3^KhaZ7AH4TEI?h6f};J$vcRT~1ef z*h(w(LHGapGO9zy#rOCdVL95_-rM!ybf-7N=_19?Xkp48>DdVwyWtmC9LaOL@?b!d zcMyu{($%%-9_e$hBR*>A8BYAu!ANV1!RlLGcAwweo*3mo$wrwd zbbbL41QiQB;>VmX%hxe1hjm%)eJshU2flG^o}vC5A^I^BeHetXX}v=PI@A74mwkB@ z2z+ag=T`tM8;s_q=XBtDEIZtR^RP-6cK^!SMJ6d$)Wty`kzzl7?};KK>|!yK=LOD{ z$y?bh?h6ER;z$BR0g^~(4mcG^tcY3;{9}bnRUB7FXFRDCaTH>>>G(tuM$hC!LfITL zE~th9QU%Baqg0{NWCQ%y%hFNawZrASNge7!JQ#pHk`p0w9G~c)5E6v2Mam@{NRHN3 zffUnVXj>bMrm8CedJUEwwuu|}CRjRYLmJQ-{;HOx{7R7?EevFWh8mVjm03d=2$M_} zhIAth_L>_4{9Whk3Z|L-*J6EJMXys%jcB~l^sfiKKjB-|zsKU|m3!mYsvTN3m*up2 zVCn%)R=%sj+n4t?TYuM=YXnDa8rHAWmx#ST{#3fCS3V!n!(q5$LxhJy!XYOlEp4j2 z!=QJ=EJbv9aK#!@j@)^=)Di?b@ww zpHJQ0FzW2B*SkbKlU1OdmV)eQM|T9LuXxCn48IwIiR>AjqK6iAO?&rNKT5%Gk3z<$ zG=>W9olC#AV3MsYVr518Q@-<*Jr^J*@XbW|1uPIwTAbj&kNVTuBJ>Q32ExpmfGkQ4 z_*oL#;Qa4PN9w9{W)wl_5hcJ_b<6l6KQ#aFw;*)H)NMecleAIdFKc$JKl%U0 z+Dqi=X9VQ8bDsN*1&h@5Jmw*ccd4ZMu=43jXloJh13>)@t&l@hZN|&){I;(`3qZxh zkUA%|A;Q$dogfg#-rp&^r?QHbB;?I~E=D`vO2YnZFd<1U}*o zy!0?4DWJ-s*msT<9m;y}H#wbS;1lcDFx;FYB0jkb1WhKeUEA_#2}LhZ0jO0%r=>|x z|6iq42934NuFf;=##M1|fsVfmth&RYc45{c!T#oHb#1TvtZX?ch1Cd5D}OSf4;4-Q zCu1dAXJ=~XJH#j3Wpx1$Fe?5sS4W|0@%9+ifTNPZ=iiC8_?t4#cLkOn2Y-H_uZyJy zTV}SU=sBG*8A8n9yRHdi{@@H39*MWPFqk_n6+)UvXaYFSR`A8G)4lQeL^E2=vzTiK zXPHfbR8iykX?2x4QM?hQ`F?l9BWf4o{Y4*{f7+{F$KY}7tfT~xl)+8T!b1)2x(2Gy zaVbd~|GPOk^G5eNrq9wtdB38Y|1iV*1JNU%kff5_LE1Akp}czyl+TY?1^vnU1#TIenmAqwb)x2_ zYSXk*xG)u+nd+a+d_|Z_t+}?U{Mh&W*d?(&`&A>OTZ-xngBvHOo=vqJ-J+R?QTS5- zb~97oH=U3E)~o&nTQ;kn&867xTnRfvj{K5BaW+|>5ic)5&t~qUc+!oqg_YqVB4YD1 zgS60W0O(SBk6*68pIAJ{*UTV+<5R>pWNb-ywfv1&a|QLuNI#E^?t3tF+ZyW&w-5Ru zT)$#)#>d(rTyd+WOF1%b@;PFgysYC)O?qve|r0*XBqgt6z!-@kJo zG+5ca+Zi8(pUFmy$v#=BST8jUmWE42q#qBe&>>HI$&$I5?|+JCt9bpfzQFsa9Yy~) z@R9{X+kqQxwIxTDJJdL{rpg z!R#7h9bBWe7xku|{-A4B{#&cWDiVrA--KJ1sq^5%$0KVOj$xu13cYdta9+7 zP!E*Fp6l8;oFS-%Ton(jNP(^!J<3AXgIZtCe&G?-izW~yby#W4`vl`%ou`jR%Ha}vgQ^JrKsFH+ z=CNhN{pnc%mh1;x0CY4+5r3*Ex-2tL(-1s1NiCRobMC0T-}eHL%k&k-VLozPEwHRO ziF7Q=BGI>X!p0_}+t}`MtNOMST72!$IC%6P zmyim2uUuFY?cKdSv8;p7hfQ+em?WKX{zKq>lD{h=<&XZfU+uAhq>Fg!b z)Etxh0FzzGKDf(9;gHuqXVECQl~yX=;fw6=Ai|}l%UxC<;p&3;C8lwI!h2GKFq#5D zSrscmz z6w`fnR#V4R3_NMcugEHFK`xuEP0*A@yDc;~g6RglJ%$i;=q zc6f~)Q-|KRQX=d!tCP$zNwR=eynxssDh{D-!s?u6byD-*QNwkc8pj0N4sTXn|roxC;;T77+KaTwHEN@SF1_yzy8=9qFVWGe2s4dB^0{%LCT zA*&~aNh-JzjS$rW$D@r6hvEb(Us+V8-h-(;HZpP!AU(47KcxnAJmPc{ah3D|#NXR_l9pmiG#edIv!P9` zhYlW`nQ1H{v;Pqy#rvO^jGp${8b*yOQiUVf=D}q0V~fF1tLKb@?GgksKKW_xmUxdc zDO#2RLt9fHcDHU%3r0_t;y-q{5E@e%Qvn(k4O0^?UBucIo)C?ucLdb3dcnJTqoBHR z89bc(>E~q%s-l-(i1AR=h|~SAtdc}z5Rzl@kb$sgXCsgV_EapkVbaPrkc4?n$->0` zaYe+xlPbfhQkp<<0nh_CMIxZ*%F=a7^Aih%*Mc&Pq?+7eJ>i3Dl>q&R{j4W~;>HQs zIhXS#Y*v!TH)hr>H)n*X@THB3*;X<5{lv@==XK=5_*CaV!OrnYo4lum!^BjSX6y1? z7zalE6|6(y!1TjRbwsDWIf3RWQ87)X&Ch{08Yy<9@s-&Nh1+&ddj>t-c25%r&2aN0 z%$Ik}6HY5=zt0A6Cjn1uF^FqU(=K-_Ziv(z`pvw(GO46BhSbhD)&hvkj9XOvzLTH1 zqX?~RoPFvn9@)1o>p%7CzCQPZdUFTV5zw7gwO}eQ{W`6l|I3`Rk`LxnOISZ=Du8my zria7r#1Khk+B1E-0g$AkCordeC*j>MX5d{?q{;evU-x_iz^pCdB`6UDf?nS(d7%~( zczrNXZyJ?Qpv`K3vyx*{@0aLPy+3o==AJ`t1)4sOZRdQ35J;*UAtT_hs1>`rA8v z>ao$!f-fh%+dU4i<#bKSbOD`2cC56aSDqVvu*Q@5y8 zVNfdVKIo%4ea@I+pPof>Hf}&6FS$n@AT&f`sJ0Ow}xiA!zECdT!JS|QM&dmO1>t7>O1suIq(5+P+XX;WNV{Mt|_liM3lMXYlD z+_vMUZooy!#V2&EuA$ru)FGjwXgx%%UZrT0&Wm{3ViP&qo5R2hi#BRVX-Fh3Na$B4 zfS?DKDWyu?=f)DMyK^0+)3o`Q+b`FZzkYz$pjW^tGNmhD0M0WMjEB@|%_@l^r_eM1 z!5^>_xC4m2{pnsTn=?umyYphn3D@fue+z+Cms8X^3IxT zUSxj*n4cXy@tMA-*}JNAQ(xC#*s^b*i(O!(8gy@gyZqC$TRR%3zNLq$R)l)TAmMVZ z0(bOg_LA-nY^|o$ebz3cR-2;2v8-R?Qn-G;qLi&zO6*4Dv(hy&PhL7)eg}U6&}u9ALEiy%0vZCJ!%;t>s^vE?pf3xQXw0Y0)V?l`456Rc)g# zc3>o?A)KD9Z#{y}i-iX{_!ZFAgKo$ps)ZG>%mGY=!bh>M}bK>ZuJXPhPhtybX+9P8CL~ z$>2=^$7@LXKbrCTUJxW|5f zY4J*^PAFP{b``xy9cci{jR7MqbUKbH!$2*miYlcqQOKiHy))IeBSHyJ=x_KFo;Ts3 zI}H!qldDO2kLU0cR4q2;TOZ(gs2u7^{(gXDV_tcan;+oFSF03sS5QJ6Shw4Ml zCTc3CxjsWaIPIHIxgTo4zsd_<*=BWHbr@^c&J(p=-s@;O@&2^DMoSD<#;K}hU1hl~4A|2c?F6=ATDHMTNXvv={ zXQ)rneBCTQMIkV&e56k*aD&yD56>!V8wyEz`l#m7PS!DMFrig4>&8A*=OE^#$ekA@ z^(7Jf?&_S8(6}Xrdzua2T;vAFvX$j#_C{*9JnAcKjt}s;B~Uvra#zAVr`#I2f1-OH zGo(Ycx2({A(eRD*fRhwp0kE-_D)b0I3SxeLV?<&fWAjY1*!}tgK*RblU>Nl4-K65; z=_AAf0T1<#0U3Njv!hT#?$?mE6kGUF0?<ZE>>LRwotCI<>&r$@M# zPZfgthYbE1OKh33d*{%rhv6d?AY6B*$I*N!?bIBR|NTA{n@DSEYLL0V9@_N6ggXrv z$|5j5e@LGtf-zfu29D2sJetoC&T`+-7wo{5Sj$Hwtca48fxZgdc zv+MPFYGNb9yrvZ(M_ZSEap;!7DC~J?jx`rgw(itlDsA^X*75M$G_R_`6RuNN3VqZn^K9Gz`7n#?l$6+mNc}@_WO#9M>0>! zZqnnG-D(S0qjb~fv?_c!POKP9&Y)c{IG;Z#EtHVmW-(%EjiV$;>enhiVMG3)0c%{W zkOa}ZQ5Qm#ZK|t#H3FJY0(pGX-o|#vtiw_IZZk)s=0K8k@y;7P7sq4Hib31?$cDdx zl?-KIOh66b_%xl9J__iK_jh=&$yGf3%Ynu?R!zY3aU3L8wgnyZii4FkJ)ReD@2|a zchg^3;$r05l%SI)Eyn~sBU623RCBEaMZfRopllETixakMR$TiC1pq&UOBi!Wsy zh^O1#;?3AKzr7r;{xP~q4?E}u6rBEzDV^ODOZ7tnTM%@lP`5D?Qda;l@#IWdxI4}d&K5<~{XjT_Bk7gE)KS6M_EHEAbUIY@HD^ zoo&6*xA;5^)Ih)59HCLT0ZnHu$25`lnKci-eEcBZ*u$d6vz~JH!Utfh0K6npsNoL) zOb~fmEUTG`4I$c1JF#{@6Gl?-Sj=xumrhHbQI!_{{XPdrn+l&fJLD(c;k>L+*;%Xd z&ov(l?GA&O4Q>=xiXf0K5v4y7UY?92Z4T0p2bqj=y*`ZHWfh-TD}Lal6uM!C{>4@P z4CGMuY-wK&k-bG0y>hyzyqg`|!pR8$iKCJ%q*qq|#!BK*=r3iqsiy<_YCa)36V<^i zgj$6;Ry_T5a{#x_B6)!*7A(gm5{;3GkJ1hvk=CD&CE5}y9mK3yRB%V4%ILOzKJy3V z^iVeOTKcIPbEPsu@@uJjLXPd6;ii(~hS4ZRfyDU2;5Ey?Ri@VrN`2;x}i z^WVD6L){Q_xIye1%`<%BS%MwF9c*Zv*u+=cf}kR9wu2g(x&w4o=F9t7I1`HPpA@H}7Pev5zD*?7_g&_B_X z$hAzU>x00GuOsduBr@;a&@Be>B-z8D25;QN?p++jercuywmzf|y45>?%C~IRDV6hR zWd4DZmzpd)Do~WA!m{Tm>!jm)k6$to&tzTwb~c52!9f_41uDVV0cfX*Fhn|KZ_G+a zzdt;~gcId#>|95GuDdA5L0H#FcKn66JPg%e8iP&jw)F_PA2R6n12#@!m^Z09V)H0P z5DhJ{4Q~)ui8@n&8Ko~ElYbH2L^Fn~A4rro%({c*_?nz_k_Zky3Eqx$jO~J2qLhWr z5?l}pym(>O3k9pRQ}8CZcMC!_AZz@(_1Z$XwOaT(1%$~As>t6*X(hPDlkjx=>ZDv0 z?E=k=*7XTDjaOehT$tLMJ_h5>0r_Do$o>yOA3`%lHInNET17sHAK}T* zeP#udND0yoDyeVC07LG?-53)x&k?wNr-f1;V#+FJe%=*e*yXC$cSgbP)=HCX=cdM_@^W7Pg6+set50XD zA@%`VVdUq4-AT{sM>lj5ZZv@^3Dd{FJZ=(p;Z?0Zyc?IB6np^AR@9}MfJ9BPKH%T* zEpeJEgj2$9TjBp7A zq6sMm%8WL>{K}Q96BrD=yEuVHEPo+&#%;K4l^%Mol@m>5;<85N{2qw%WaC0Z50Cgl zjSfQ?@637;62IX&lOrAa3sSMBDMiyK)dR;8<&?DKn+i=-{9`=X_Gc1_AfHk+#K)LLy@fBKY4E;l_HVm`^ie{C4N?O65qpV~^s6Y1I7miS5$nMQnX?Yud?;lV^jotU zlLM_Sa)NlSyT*ngYOS~S_dI5y`ptDYsoVbb_+7d?0L}VgO9aYZSBBz#@sndse{zDn z@{V)TrrJd9X7xM@={-ZjqWg&DqBC12&fh{3@wP}lOVVOkqeV8nU0irdvGt?35L~av zlMK{9pWNH9#CR&hb+Hhbi>;hakMmGA1jw7D#mF=9){)t$Qpx^0gZd;Gy1kZCz!F$9 zj&j>ffT8iFT@WHh7%a8^0}d-BHy697Iy7*bUB`X`UTH1|9uV{;rkeFHCnXzn5~34U zb*~Z9oG8ZWYo_jjkAtkO#K}k@nDw~dlPuPYge=U^=%v)D);Ok*Ci9?_oH~VED|(ze zoY6f+ZC!O2b9(jLnjcES#?MUn zsl6ARee$y}PziPy@DP~eRdJR`L}UJdm1#LT$v;7r8sKoop)iiY2sHJC#zECr2{;t7 zhVR-%F^4T=tW6EC*j#p@igrAO(@M|L0`vk>48f$$pVUrsXFUp&Y%T~f!uw#)bHU`m z|D9UT3Au_w!UDf6$_&wa%2;Gq=dVoAjx}BG7&TD4bWV;svEY@CBcR&JCPIk zyDsQShMATu(NTdp6PZR#!i8`p&OQ6mbrHZ(jga?v(J3g1) z2L8fK7kIMlvZ#e=Q)kP|;!~IrHyq4${mV7N*`t0At2y9@0n@fd_VJGa0f6B0>6_XE zss#!-0~6m_5{i}y^3`YGP>;{ua&YQDmW_a_4T4?w#g)nPY_q`RHB&Jg<^9b2vA)za zOS-vs9&w5`lJq)Ao$EDSeMF(G%8U%U#LH6VDd|0LJT<88YaS3&gIoxeRiVXu-y4Xi{skl=DZ( zBmZ&#|45P2@x;dTQyQl3|GT`*+?hmzJOM_~Cop{exbW*mg(M|ZC8pXZBxZ_F1v`7& zeSm|+w&{ju4Bw}0WiGt%gAOh94-tsgCHN?vtKJsJ-TKOco ziRn#=46j~F^VHk%H$5%U-)p(YZ3N#J|7*%9(8^w;yQ*iujznh+C!rQ)^kF~gv(>RT z*tuUE-Deh0jTIDSGE%mBKXt`t%GK~EmAs*}xHBx0^A;e=5&=ZYk!7zY3e6h+j(P)z zz5Ho*t%Jh#i!)6Awg6wn$CD7z2T{U<4N-XMcXGs3upU#_Ti$PfayKtUbj*ML;QP=OT!h=r;k08dHc=aa|P zsN>yORg*O;cBop}batW4M2tp}{PJ|jvi^JdCz>)~#$n2@oK2#B3}}xFqh~|ey$_TDe+Qc zF7V61@xl^|Jh(D4cAw#k@CMvv(e2c7h6FV^;-cZ(qN5zPs`kl~{rS-d@0C2F!Va$X z*)3)tfQl@r_zBNV|1D{t!4cVM#&J}{h57WV)*Ynv( zHZbQ(Ei`Y!Fopm3DKn*N-P?DQkX;Rk$#EKf z&jU>|WFjRu6e}IaU<+(R%VXx;nwmAV1Y>@UdRQ49+2Ms6XNmbv8y^!t4OXp)<+ zS0x^^iJZ@w;o#Lnl?WIFd?V7V4knNSz+@R=ZBY(ZCc+Xgsh|!zPBNer`QdYNh?va7 z$&A@5FU;1;-Wc5()vg${jZMfH4EpNL4~npIoYlyu&i*ebD+}C%^(Vkm%{D}QmiseF zW8Gm|_3?Z;@CrlXH{3y#gc)CC0BIcNbH9PzvDU>Pa^(+U95$=kBQz(JZ^Atppp!9R zlW=8Jf^^icl7P2~hBCYR)3oKZ{Um3pw^bU53J9T14!f}kp#S5E2DcShI7ZMep8vS>Aj9kK75S{Xsh^mJDzIVfPGt50ADflc7Px7;(SW)BgPIt`4dpD ziD@?m7_Uzuv%R?g692BnnPTXE%^t?n2yfP z;*(zWy2c?Jsx)5_{48L1NJf8?RZiAEO0_Z;UBuXQ?G55)2Av42BhS}|ae)so1 zPj%?2M-guzlp2;JT(v?fMV}+`|2qY-sS6Z1^3%zTX+KYX>Nz}e;CunlHWcA6q5UEQsrZ- zubh!XbNotZucAuE>P~%i^%2WqG|QqAk?dv?W7{nF))fh*(Q_0-+D>s*L#Jpw^82i! zof0K;+OFEOR!)Df_&Q{l)n!%iPIdv(jmf%H7Aj6jS9tfKu{_h4VX1QohH+)%j8d{1 z^hoj0OG=Gezq!ORnvsHlX`>f=8I$9ubY~OV+;nqGRD}^ARGEOisA>1YlOXEx;h?Pe z_ERTo({VFuR>j5p=PT0x?B=9T5!AL}=(IkrhR@OwrBW>$(~K>H=Jh%-bzpAT< zQ&6RxOR=tdBN;gacB+&CNm2kH*8vU!W0wSLV74GfhKcY50T#C@V<8?^u7rf4kwq#) zf^YyvMCJsxOv>l-BSb@8rMllmfno>ut_ob~a|^DQ7u1-=oKQMdnxrM{rfwxM>?UUi zhC%gUfQdFAREhk+#!d8p)S4QRuV};QTq$42!*%)eaqpkS+pN0)yng}^A;T%8^?L`V zDkdft{!M4a?EmvnGcc6%Qs#9waAdXbmmmpkJcOaoe& zF|r}C2i`+9HX0-@vUnUn2i_&B0iC{G&eyC0U(eTUzM6an?w@><_1l;F!V88fD+DzL zb_RM`RR#!WMyGG4pO*k5SNHeztW<31%IPEprm1rnW4u6$58 zpuqLmF5(Y5T#E~59Xz*m4LLbnlI-DajA-gtW%FH-Kj81(R=f+W*_MvH3zHtjbtH*` zHYTMQ2$s0Na_QYyl_^ZKIH@LhDbRfbc{XjD6V` zfOCR}=bHe~yG1jBz%|b6UD`|sC2v7~F}r6gbNWoYR-ot8r3E~fCjkSSuS-Nkgb?hv zfrhOiw*`Uo99)6gla3yB%#@BRLLLFWAfchKBoA`IA2n)Z8)pB)F$)0UA_tx~j8CO>(dj z>9uWkf}urdrH;b><1$o=ko@p!*S3m82b&R;Dcep&8~OmUH(Fgy3*u^;?3b)ysc=Lp z0DH4~+Q>38f{mIub0N7rI0AyL4`sj45<9}BaMz&o^wjg1&7|8R7_R*VZxZ3VO^eP# zN$uyS(UlWB1(xyVNW`d*F72iDuaJH$=y-uDcCB*(7?tm&p|1*-PYv^|%lB5S_!&90 ze;53h_E7+aSdZYl!K6YNJt@m<8VSx0W=wkmWo=IJeX`4}3|%a!$ImF-;f1b=`=@G$ zEqAP$&5p^0Uz|$6Fj32SYzI_J#C9PaMDU9?+G_L^%49@{c%g%Xit>=sF~gDn0p?Hf z>5I=*EDvhm9pbHjVV0L@rgNe}m5sNcHb^d{E)@ZoB7W;nigUix$MdRK?q7D>=7?vs z2GrB6ut(=H%xiq^64l9rAl>f+C8hzdzB7ltu}WF)8~x=!TpZp5f^K4WOdJfofxm*t z%I+?g3Cv?rFu=vX2< ze88x}ng-Lrr7UYi9Vo*ROBv%$t9;iOK*YSBy>?yHk2fWH?}E_2I8B&0YyJY@QlFK_ z(6>*FJSRRN{1xqztr1%&iMdw5eLSgsE`qelMj@cwYL=44=<3|!occ5d*5=Mu zP7l+%u2G5Fd@fN_18CcmB0(tlC>Jg#L{vJg66$T4egYGT0d$l3m2Gr929X-owKdbQ z&`D&m6s-{Q_i!ar;;k-tfh+-?$e>_nQ2nG|YqTi`V$AT?ya9^o6&k^B;n#7QlVn=- ze>vcI04_y?i2}ZcSJOO>8ZLTJ_C+jAJ<~&EHKKbH;Z!_Y!}S8vI{Kee=fFw(9GhKd zTNzwN2}<*dTcigE801bTMYg_(VB3R7lE<~#)#uUut!2tXlBZ5Ow%Q;WR+rGpc_rzQLB5bN z=8?q<+nUz|slpx~K1tFKk2j+A!Pt7VBV+Dw2Hy$SY3ibAVELLF+OVMkK7P~exWVdG zuf3@*sN4W&8wZd~?gDTrG_Ybc=j*qK8%))gw_=uT3+zeCU#!Z_pYvr<)9nNwc5)FO z*ZIk62at%@Cy&1-T-TSnnnN?+S0sR8_qinzl7L?62W-N}W!QCB!}oeZzn-t@y}=Kz zmGV%0LRi92?Aro&>yGc8+~K6(9>a8YPbhUue^2y>E&-SmSI(@QCw#*SuE;Z^R}N^k zzHzMXO+M=n0m(b2Eun!_zB@%)kA+Z4TJ73F{9`MfTv9z(R0%Wty$i4Sq9%7w&`bJ%|@^iuig%Z*X6q%lL&+ymqsV0LkW$ ztTOHLbwb(*OIOJ!h<*|Z&F}%Y+^$1wea3#(7_9B^Z&2#@_s;)K49@>e3=lTv|M(2l zfYkr#y&>11G*ED$CY5F{bj+&|l~>x0z4XlxYhoC1Y$0?b@TG_dW!~BBMUJ|km}}SN6G6m2Ewt2Q@OYW8wHRlQU0s~;ukbvw}*Yv zr%agqHa~zq;cYkkqNZ0ENinaH=mBI$ZO2fil7tbH8(-2=kub60%3&5n$OM?(+^`XI zvNN?;rPIeMabnVnk%o7!s-eo zM>nn_RhIr;RJH;Zj%B>AR~AbOf(gOb!^vi7Crrhz{B}&sYM#e6M9K(A!{&Qs$xCJXO%AoIfv$qm^TG&+^p;Q?1#gh#Y1*-ff)LAsA+kj&E$V z-ub-xFgsVB`m~J?#JQNTJO<#aj@#mk&g?P46||2D7yXR z^_s%CSXYonRvp5fBC2&K1!RqRez|2HWx{F=K>g#p#f&5640K`ymJb}7?)sF6Pv!GO zZn2e`^thTEo7t8=Z6$a>p;_?we$B`u-A_bYNT6;dx4#Z3eVUK@zU055d~0qy1`xyr*RHq;&@9Rcm-)pY;`#TgU};l0#yjknQ{AmSh@pO z>AT;$Wff{?R}T&_QincE)MrdlPi)#ZeW@*Q`O{5cVUw%9DtT{Kbi|Urb@}jyA77UP zH7sy__14Km4Q-9@S2%Ie{lM(wvtJU|?@?E`KGb~Nth{q}+yQSJ)}FO_M|-|G{IUW7MuT3$K99!&x3opR$-CXeaDXmks}5sjg(rfwXINtyD2sYa znwe!A)UnUFTTw>Qb$jtH=iQo=2aH>#9xp<-Ni1d9x5;O|-DN$uWXIDTYGB+TTg z(rG;MDuCkeDY14Z0mJzx(Cnp%3z}OUWafZd*fd^g*_3612&hP+fbARIPb@x6gmF4w z$j`b*fvZpZIg(dqela-yr#x7Tv?7V8tK9Cq2L9TBv=tz{vXEc84JaY>k@&nVy_8 z^_g9{u>_uJ4CvJEkL0;P!2pXHe z)iO1y^D}W6{NOrJ_{xILyO|pjeTZ zsZk6Sm|%$7CMo~@3YhB1AY{R&=)YHgLhwE!@c%*fF#cClK?PX)zcjELN>KCx>~3e7 zd2&I;TnnRzdM&g7x@(-csw!Id48TsFq$izw)#b4G?9bOg8v1d33m+P=#n`tkCu(Id zL(cGjSfEqMlQ7l6zcIit=j+!3^h^Q&*fWgu=!@GDnLF<4mR1-_RvMlY49pUG$OSi` z0T6I=P9?nm10_tYBve@UVX(gbkCX7cHO~fW+lm(dhW^g^`iV^YKJ_0Y0qXdOfN=^q zI2ZrlAEzCa1zjpUFE6m{|4<2V3ZBon9?UlTsZ1fiAd$0EkHb#uftY&5UIF#W6#HFKC-8VIxtN!ZK6A z;_N!8lRN7h_0T5-Ll1dyiU>F3@Zjd88X;hY4f)qL6FnuT4fRyzoVA+(+vBV9?ZKMn ze<^B5ol&0(!sTWgUuZq$Mmx6QQ~CNOzIe@DJ8mlU6&bVXHg)UUYD0;UA7s@XbP-}G z_7Q6RiVO>*w!&?c>qa`wnRlSCM`~)W{{lfl^9}=OH_z58YNN*f@#AW6Qm`f>YICp*5$lpNC|xN#={eYQAqdnvna zzf+VcHFuaT?7+*lZK)}}f8s5)1PVf)q&X$4ctjlok$j0Xk8{piSUZtbZLAr2#WF(&6UgFn_dLwmGXDR->>B*{)VH}|C+6%_C;bR zF0wkgA+`~f35H#7SPOelty4D$iYnzBsv@YrtwZ_8iZk8}7=DSULq7Xr@6Q<$FYH%+ zO#Z5^;lO`MrFW)lu9%Wj%l;LBc|hp_qmj6iRUlZSUggj`r&w~7@$?kBOQneLJgys5 zl1rO{KYdI^nd`J<5L7}arC6K}A(3rWGN*{stgIhdLU_tucSoB&FIMd(B9K&kt5y%= zi0$=BVi;48E<^aBYuXlG6Km&Q1Q{_Z{0#z~e)3bW1A+>|%J`r0g$ly?BMyE*{z!o- zGS2IaNPgEJFnCk4RTfR!e623&&1bT9a;f_BvZ2uArsS!~KkW-=fa`T;qy#~aR8mZn z!X>Mwm>Fxb>R=QDZ7cTiUDh~Fe2NvLrTMk$4&N5P8C8%Vcx7OylEy{;unMJ$R1O5K zRan8ZM)U+(IBf&>rrP!$#}-!?BR~=qv*z*|9#qMzE{%}q+*L%xVFxi=7kB!@oo~7V zpjl-;(VIKwVCTv7IZ@6bI!Wh{plE-r37bEb&DE}L&B9|LLfQg%Rdb9gQC5aj-$tEem{kA)zm;Eem;~gG020l2a>o$HM0B|P=l21qo zCZAv;ofW&Jr%(ESsCuX9%(^bzHnx+BZQHhO+fFLh8{4+cifvV_if!9I`SyQKYiHlB zb-(7CbIfOq-cRoLtaej(hJ2~GQTnAVcm=k?evl6q;qp-sr5D<~*bZvt5iM70TI$Ev-?c)-V>M#H+5}JH@a`D&Nm#c}vp$ zIu@pIOwk0YV5;uS5pO&KSZBYYDN;M%s#|2=?JGG2l%VWZRS`EAY2uSvS9XyGW(XQAW?MsM=jfpO)>!SLlGkdIJY2+#~&$Lu4Ew> zD`Dec8-d-|(I(H6mt*cyi0V1Ecm%BX5fumo#y7xN@c- z^_`7z)bJinX#gVuATisIZQ?O??~(l(NcwALTEXOIHH@#n%_cBG50zbytuc76SFFK5 zy&y@QX4-wq*sISPT${h9(}&)+HxY|(6!l{gj@90g^m>5QE?z>&Yr>_CU10v)5@;|j zEn;u{V>;W}KBfN#ia|zr38y3&3jZoj2(u=w`Yw`8HjW{JiUdyY&FaQ5nGy8RF~jN~ zg=UNd;#7=Gx^||rxsnOjc`L9q4)mTDzz&R>_GkMCTEM}Q##sF`GjNzD=YTB)7kd2> z$wja1WIN-*?`*S1u553o$Us`D=ufIFxfskER{7nn?*%Y#IfkCIKe}~kZp->wcb@n8P>L| zQIK9$D`)G|)<${IZB$!__lW>vd-Qsoq1K~4YeRiPVQ|+l6F?#iLu;%)I*QYHTE<}E zeWg9WKp{9EK*wn@@i5_vQN1Q1f*x4<%*k4$-2WLk>7_t+-$slDX*iQ&nnual&R^MN z?H*k6;*oGD1Yh+Qu8P;zRCt`eT{SuMEtCW5TL8gRW0h|-ul3mnt$ka2xdh= ziAP^3C`PW~PxuFAHN+CXLQOthe0wfcbj2+iulh{JIJSY?_&Ub^TW5yH?00rn@3y&q zRAS-9b1F_zaTEgSjZm`7R?yT*ZyO!ft4{>GsUpH#65wmW@s2$IBpZ_8vr0s%4g<^# zI#Qu^rfBZdQG8g#5T?dVdM$uT{+Dz*wo&9l?O-HNI+eOYv?Y#FB%OC08iLoEN+Z;r zH@_!#Z zF!O&zp0vw-P+GvIri{wI_jmh_Z{FVl(m2q`?qY7P3Ync|Xa^nfn)B^Ti ze!k3vXhHIpTj#&v@PjT2&&!(z&w^v{1qb`#BiGv`p$5{JyW{>xnV3g{D&po*bBDjk zu)c0l3ku+Om^oiUh<7=*1~4Hjp8wX#j0)TPKC+z}C>t8Nk zw}KV=icO&7H-q4kRJ@^nKNkYWbVeX>Uh0PjYhk;LBqp=i8{QsX8|}cgoxqru%X0-`Q z{-rqeF(TE`xrQXDjN|>h9`z-kq;W@;$agA#kLd)Rkw*uJY-H{8;veI&%zAtb&fcnb zVv;A?tsUBrG_5WEVbX~gy;}?G$1psDdCRxTKSg^~^$t`p3fw9^;>HnpW3NTyApgTSnJEd_xv_Tp{rBb`o`4mY`FRkig zaOzPy9L^lKbHk5(W3Qg4r8z77rKykTXd9JoDtVgtIK@A8hf?ReYD9(SxQJo&l z@N(KmCcclhr#;r8jTkVIpy*lV7qo4ywOHT&>kzM_Io8e&)zQIG-~7ZF&NJn3F%HjV z)33V=w(!}cB*~@69`(0gVV@$+5&(r(-Iz7f{&cvDZ}t=~(2JPr$?q2IlCJsCfVyEp zN0jG#tbUyXUltjvI)?TmHMPE=39|76_E&@LyDT@W1tXD=Lt&!)4_~UM+JUH>2B^`d z2b&tW7-N(}f%3wvs?!A>*H2uIZ{+@BXpW)fUFMqZIK^TRW>nv5;~pbr0KoLkGfllg za`DzEJ<;!^8&MS5KO}nBPmmmn$9!$TJ88}&$BK)Xlg~9@6ZEQtF5hdL3gtJ!VFh(^LC)q9XNOx#p2lf5EA{n z8}V`D`M!K1o6%nZDEkx)U<1W^2bB^|NXV41^fp7p^b5| zr3Fm?Z0Bj)|7A6!+n*XYbACu7cP}j9+)eAu`3^SGT^>RO;|(_dT9{Y0XW`$s-O;Fc z=218ratv3Zq*M&H@Z$a*Q;Hu2Cm29fTUD?KQ_b5=aCx51jha||^6#7^Aw4br2Mni}4=I&}kndwLfoxijXOQhvWxxSU zBJCQZX0{WV^#FKe(&f7f%SG$AkS=y`*o*!G(cp14$S$JfkI@r2P%3U#hd=S*7bTR6 z4hiSu-Z(GZBp1w<7u5Mo7puB;6KngOG4;qHo=et0ZudwKqQ+szx3GBZMCQReNa4zVFFTlAYjCE#b zWk-dvly@^mN222M((e$-a?q1n8@})lAQ`nu);@BtpSPmU$fF~zVn#UR>^Ud_jS+36 zaN+gmd<>L{NnJX#XU$oB_CCbDsZIm1H$pDDvxCNI_= z?)=K@X|l;n4=}FT$kSdW`K|{2+bw60r-VKeq8jE*A&4)DyC-3E6&?HjQXd)%5RiD` z{?$Vf_DrH{uH?5F3^~l*RF%LuXgw4*ak*!o0codBTeZmD15@|+PQ8U>I^~~gmd0rN zz`gC1QTFm>F$SrFM;L{(#PT7KG_gJu0WXDXD)c!b(;oWVQEZxpss7iUmTt zvQcXO)>XeEy}^L{hVrW~)E)3HGs+hXkCePpgZQpQqeqKB6xa31 zDyo8m)d!bEJw{A(u^elTO4nOx#_;9O6t5pO-+KCPuZuh9&czi&$Q%Jftw;P zuZpF|$gZ;xM{2N?4@S9mF9>;HH1wML9kk%$z?@i>oz%UlXIf5h^YZx7O|Q7*ER1#) z0xArp*llE`udn*?xxbh02YfZXkzHdv7YB0Ye!Qxry%g7AMR^ngb&sRlhzN-hyY1z>V=h@p|x=-w9Tl_5lr^OzWgY&0z6!7{~=pCI4rn_N4reav!--cH{&`M&)Ns!Vl!Mk9|Q_PNKbUw+On;tJ#>!CANH1X~gJMRfp7TRM>ojkl~{9)0QLA7EX$n=sq_vF&iOu>?wkq|C^ zEo}bK*G7qB*Gl2-*Q(Ef1+`NOD;P%%82$?wn`A`Mq`>;&L8sy>2yPKrh^g5gy~cSO zGG^t)mCHxXCw13MuEPx8J8!b*qKSEe8oW(YoP$)oo9(1YNXe-k$T6KZ;MJjDGXJ5! zH&gO1VPe+4;*?Pqm6D9&SgZuksfmrvkfzAm5gc77T4>4E%SczqDul^nZ+FfDu}lUy z1uX2d^eUH_I8;dsybbp(G#RR@iK|y3rq^@Ao9n$fC>8}6YLg%s$aH00^yA8tF?ZR_ zE2%EgonIvADL9HDv-7#L(lB^tGMo{w+{s|kRYckEAs2H>759aY$NQwIf2y6EI2!R7 z3Va|cJ$-m~gvKYZLbx(#=xhsJwMzkn05yRY2Rl4Z^7 z@#|nK5duX}Es4v|zuGc|6XhbU>^aa~O#cc|Y{w2aHHgsH@U9*ferjrf55)xu8Q2Qa zof>at!w1J;2R5PWshzpCPgYIf44|unC=-fFx|=EPM5TQK!|JZfExdenwI>1Oabf%7 z@sEpk(k9;t8;>jq?YY05V{(`7VZTn;yuO(dFB{4!2hs%DBVcA1x_r zxBw-HIuMRAIXuPOo?rLcnpP33uvGFk6JI*Hra9fC)>X!?eh4pbJW; zaVV${keC4(=fp(@ODY>-o@O;p-v*!fLh$RD_>zw!Ole$X?Q9q(K!^f^VHp@x*(C5ZUXfFZS`kiSLj|mr=kZMDa7V{n5QNhJz78XD);%A{ zJ=@2$U1ZCs+f>0fur-Q5bigq93j3hqP%t(4AQ|g1K%TX5McIAhKq>ju8%%1_A``k* zD)?{4f>h*vF{T7F2qIJ=>n+BJ0m|R{(r{>-L?&OjR_K5&CrzKhhV-^3|5qpd&^;Cd zTK2dw=BX-AkIM)Ko-m;_Y?;5;J6_hCIb7X)!M34rvtqsk1NxLvbY%PhNDEB`m z#}d<1GLzFaWlcIRF@JGU9vR2+DV4MQ@w&fQ>{;N70Gl<$73 zA8fm#6)e-TFp+sMGF1SgShKtkRI;-4MtKIgq-2AFr2Q9irV&U=u+)yT%w7$*@aWTV zEC3wXjOpa&|7?wELWrE{x$9y`njfRGX`(z+qi5a5Au3vT@@nvdu zrNu7KKS{r+kyS60E9P*~v(vaEU3T!$wn3qvBCCubg(j9IBi0@D+J4T= z4Dxqk$f@s67`zR%&8BC1^mlP$gW2QrH%ST0EAd_J!8prQ04jYOw3hDG7`u&$U|PS`pJ*ocnXVGORbODmM5DD9JdO&n#^2B+!Emy8C@;3e!DF?3VRW? zNA%l-8x7ws1FYHd$`Rv^@MQ2L!gX?tk<4H1@tRbPfE+NA6X6?kZ3skhPvEhg$&!JC z>N1xLMrq9fFK8_roAy9l(qinw36Yd+k?H!RQfg^o1Zhd(CH!pg%*MzfnrB38qMaSQ z1M8|!)NDN~QAQTO@7~A6$;4=*oL%wJhK|gY2Nao=4DV@Ebds*NJ2nifKK6yad+CS> z&-Cg*Ktr{1Vb!s0X8O*~1$E}l0F@!g@GQ-&PyjrPsUi?k^cq~^PB@@DD=9uIGe1=# z(rLxED2S=rMDcbd6469dlR+)$nXT{VLr7C|8H1z68O3B1!?`?`Y5XT+6iHB8MVv z;9qFra^=>^mJce3vKk!#QY3cFNc7udBuE+l1!XbGu{3xpLOL4ay@!?MV?I@}b_<4p(*d8ZTWtvv2iqJ6uIrsj4govnOwp9ac z5mdG#=^90uXB`RaF6ufmSE!>w7tQJYrQehE5DT(%AdjUn!$uP_1J<#KB=I49dGGPa zMbJ&_n{|YnRXB+18l(?V1XsB>{N(rpOJt1Y+1bNsQ0Ffc?|Vt6%o9rh=iTaJprb)J z{u2JtIUcl9yM!^`hihZz0y(apdP@gLvGY%0PLsFy>L4`9S_45~?$3L zmlHLbb@#^c1Ca>Vp&+!?QPR=Y7YbPkMPMj-q))iysm~-eYTG zh~$*7Es--wrW?`&ZS&XwO1J2#P+M23U&CIx#ETWW^%Ur&_TIUm%w{G*NrmB5K)0}x*G^u`SHMp2?Xg-0!i|B8k|Ry2~3lt{b#zGa{h^Iz?Y2V zV$wMI`35wkDNejto;$cOR(Y}xP(gx0wY49V2df~jFA#vUr!F(xCnP%rM>?j^ z&U$a0nI0&(s%-6&CZ1_g7Kak!8<@9kBn@~T^e4AuOCw77F+gzs%rH1H{8xXSNBu~N zzWo3pgvozd*DiFl0hU&4TIqrR|zZ_re|_{ivi;*l2X*&_iCfC5>UU>rMqAOUlbYO!Nzb7Kjv8a2b?Uu z++P0oM;}=fS!4}kN@$HaqC_ZBvS(7oJxMJos4Vd0`M(I5ZeDF_ zH{Ge^gki~GOz|$l9OE9Na24?|yYP9#Del{49Cfj}i_p}+2Egz|0|A$^q9>mC%!IML z5C#<*#am|{z&Uo&+oW6fI+A>2;KVzA`wi}zhWmKYP@w3B+|gi-AKol|Pp=b>c^INV zNSgfph^bNQ9)D<%p+HIsJ`Zb3LzD#jnuXmGRVR)$#PqKNhc9W7R9`UUTNuHJiqRoW zXmlJPOj#oOyoLMzkpUdZx;I4~T3^m8CF}O6;Zt8bwrnSgTFAQX2wEmDicp_UN-km> z)L$sdUXsh9Lb%hbGa^|l(oO|O6j)rD{RA|jU|ha4Lb@|J-1kDmpu+5;eK}M$d0Jn8 z!{jB>fri7DM-A)77q~uF0a_3;0`oK24aeKAX)~h+qOMQ3Z(uam+4MDz=U@x|nnYmYpg7K(;bhI*Okl~R=#x^r{*Z*c9gI=v{5 z^44#0871X|&K7#!E<#R^BNIzk4=Qf>DWZ#zuaC=oE&wfSSSqA2U8d-7<2+lmDWY$x zU3>~6Vo^CE=!0bcom|1`Pz;D~N&dA_1w)TcY&iJoOhDfaq$DviB+NLMR%h! zy5ppera|34^+cK3uyOm9^jperDK}+rV8kA{X#85vS$Nx zu~W=n?EtN7^`T5^D-E_rF>8Y}X1QugwJjvOiOTY{Qhd0}eqfX0Kh_xtSP0q$4twh1 zrSZH$31Dos3pF_ogu~@i!4DdbZqUZAs9L9#?wzjYtH8hF4?=tu_Dhz|))FuGss*vr z%D?xPE^})4wAYmp8^&w3j~>+-s&L<@S-ni@>;Y|q@>3Av=X@zttc9AF717!^a0$k> zn=ig)DO7r!bn~xB?`DVy$j~JweYkJRffVQ9VnjCQ!(B{NE64V{0~zdRUdMefC3aVE z2t`@v)okUdZNR=|{b5*|Wctf)lX4rUuOr6^Oj^bQSM7T4s5K;p@oEY(G(S~NC8PDZ zDIj4RY)xq~dCWz$fHE;C(KUUJ-N`A%Zr>G1CpGWyKGGYfBYjL?YQk?omz;RARoo}g zMMw7)-RTqS7)Lt=JaDfjfR8iIhNt!d6@>+y=Xb$J!`4dshVS}>_vM_Ov4QS%nTN?AM{cC^tr2XSZo3Q4ZDD=0>EJH z8a6G}e5crv3kJ2r`*#M{vR^-WvTT$|&$j8}qp0ogO4)_^q~BMfF#MLq>FTP2VZedU zSP#M2QEUh`D6IcNG2K5`M7rE@g)bTqJ=u;}5In~r!!v7icLum*vfeWAdIn{O)Ce@z z|Ip7jfJ$KGh-oi|&@WicJ6c{8MgfX%)Bbd3uO<1l{KgL8hv$7riL+9D?m|AFrZFV5 zh*ih~*|;^*B0J1K>W0-MeH2VIeeYNa4M_T8yYUE{>*;M%o>Hn z!HH#aY*F=XN@tLFH|mj#Q$I~^UX=Ul-F{}oK)7N!npnt5`*;30x0c=1)&-buX^m@q zv`E$Ax!q>)445~qZ5MRXTT3c)Or*Xd1|b$Mh$<r1j^L}+6uSC&C+3g*{rx--rhJ9GW!seYl%wi-n>})EiJM@ICUMSZe)2_NNH*p zV=prEvAlg~D`|QGx|UlVz662dsfdev>w8UwsWO2(a8w|yaKM+4a!31?fgz&CYv;I1^_cU4!7RNvwovgE0uv?%!1**iuO&1d(@fkE=>7$egtlt%$!LxN<6r7 zbrs8)QzlD@fB(+x{LXYbRLJ#JhS%d(K8)fj3+Olz85Mp$A(sBbwRM&Ds z>j-#7inMus15C~MTK4tvz4Pze1oU(ARNdQmC(8xQ#L{eOKix=TU82He;Deebupn2j z4p3YvJ6ji^!Ep~1SJ#V~;6b5&lR^*Ca}-Lydu|sYl_4n$PeA)jmb0kM#QiWAn;{yP z)NXcu3*fdI+C2C#kP~$(-uvjUu}W}YDOP^%mkH``T$Nq>`ffct^z#ccwYzE+_+vH0 zziMP!=j`Z-2h9wSA>?3Iv|lp?jM{gjTF=X?Osl1cS~3`0t}m2itmX(E2kV=Ujh8Dn zio~lnR(&m>k0BKS{Xi8-*o?6)N!YWJ4Fj6!`v4~>(OJvWO+rTX1~>()Z8hQxWCL+{5Wn!KrXpfnPs_70)3$OEd#RqfYj!F+oow6w9Hnm ze*KozpQ6QB8qTQ?NZd)Xnpr2+l)%=UL;k27zKeb58}i>2rgAP6d&v z6-#E}$zS86b=IN@_Wv7OvcnK5yL<404+e-+q?BT~BBlBk^~*R^0^mwbS{zz8hq5IF z8a!{$9je}$r#*om9Dr+yIIkLdy;KT*32?L_en2c=zH^DpchQ}8N)L@Wyy0AFeWyrt zUk2MolDG-Ah)>jM9>8$;EbbV9`U|CUKcesJV-~P>RE|twH=c*N2HT79lXg2?bX$}D z5Ms*1Zg%0CJy@6UfT=tdR;}WddLFr36r9j>cQ^S0+NR}$ZGQF@C$i%6yV>7YlJ_Ps zCPcDoCAg%#YVz(prn_=iiRG2y(%h_-qEOFJ_|`{eU)tySiv>4HSMy=1A#AER^-`FbmI zz&6c<8xj#1WM&JF>4e05yT&m-bRcAbLkkB@lYKJTG79 z!78J8;!5tj!F~DyJ2pQZdoo5ZNDd>(ev&Ird@uyib~!RBS^)q^HHf{E=Hqw~P}{QW zOkpgGCgS>)Ur(m?gm|XcChRX7tI9T7pIuDPbmO8=bv(A39ig|4ZfZhd`MNP^ zSn+kkTIWxP(=+NJ&?85xU zy)nf48A%va;Ls7NV%0qprfj69u0!*qs!{BbwBXuXM8mQ?63ZH0REGrS!+d12rHzbD zyZ_m8=b?M%voaLC-b_Dly}Pw#~0gYoMU2Zpen^aM{K?}Myib)5O!g5wW?ypz!li3EbwRW{ShARqqm zc5Qz_@olXbOJtCY>W{T+nSl1XT3C+Kh=p-3pe0Wxt}x=T%0O6VV1?`wQZ;^QlbyqK zzLAbSM+ab0{xzFLlEtbDhH2J}_Bvb|X^j^cGj(xOJCv|VS95wH8e+hD=##cojOBbq zPp!|(z)w873_(?ikMbAZNq0UpdFj!n4ZYW{0X^4o+P`G{%bSGVnL&z12fnbTSlH5` zM0_F(+b9w}rJHSNMJ?7LI`jh?SE%;fn@U>gj{rzR-M^1Z7l=8yoxK=82!?14vP9@ zRvDb~D_C-D!Ryfj1CfV-FkUlA&#J}IrsseFjR>Mmvnh8|BHO)qy}xBxr^0|pbl6&x zZwCa6$ju2@m)V6bE$4iXL~*G((&S6r8q15W;-3vq29`cJbzzQU(U?6mhmdfo%6zk2 zc6F94w(?49=fcq`G+Q7fUQ*|a8%@VrjHm{*)A+_?sSu67|473fcCR0=^7h}zIKL@u zv1@Zzv_F^F<*;yrJLNiTA?do_2=gFh)`%TXvpD`(wa3YEWT$toDZeNxm&8T|G_`;An)xhmt>|Fz>VVMD%60DV z&`UIEL9eEh46&IO@0_Xw6AL^FLOYT==LRO$or5lf*p#SpqM^hjM&d%nCQB^s{Pw;3 zT0@eFl5lQjhCw;-QSgsXc20&J#eRmC{!avEdo29(gaR1($G^M-cHQH=19~jXMtm8M z)H_Ir(Y~N&1LDm^l>T@&7=RCUwS;;d(nG2G$IJq+s=CJN9BdQq!8{H_*;I?9maYR| zCQF?KpOq2y)S2<#A}jqs$c4_ZTT^y`!|YrVnpN|Z!(yp~0sV7!v#JRO8zD7$8C_^0 z>2TYl_>B;ejc2-rwJMscKXhFk_HFP0?n}CvTwOE04PB@yTd55B{l?aZ;TegS432BV4(% zL_IjWuzagBIa*vL;`M#dbe_OsP`P+hv!%to=QVK6vZ--20s%+THWM)x;XKE@eRwn+ zfhIHn?WtkA{=W&ICR zHQDS|KBB6M+F{jDND(FzI7KEaBn}g}lU|qvlQH#`)Re;*#-V&xw1-A`+cF06 zxthOop#HxH>1fQDMbc>xV-j)H=Esl1=oQ{xl>f#cK{y!y<6E$%fs+1*{yonm8Q zcB$!)f~&a6JNFbWGx0PwCWfKcfAvnUIgyu<#>%)*t*Gf%hHLyYYq4=&-AlUwz^pd6 z6^5%-(kvQ7Xkgvav}dY}{tXC(*Ih*pVU3n%B5ckC8WM!~V`}3xG$#ly84L|BfdWSu z3uh`T>wHN{m~U(e4VBIcLTFeCfyCGd3^utc$i@YiPA^UlRvo;G%2PZD6i-d*E)1i1 zDes)HA_(*sqB07Z8_EnrYZ!VS5CbDdChl(y1dNI!*ay}RJ~$*>kreI^E+sXT6Nx1$ z+D8o(O=QjFFBNJ@2to=9cMZ{y!5Lp*f;O2GWs}MeyOOE|daLl_IbGm?4FmV^Yfkzb)W& z0=-Y)@&K=ktIAb#kS`rQfVZ37F7JmEe*H>*6L7p)d5-gL9xkWPibdhJqdZ~Ka`%`7 z!t8Gxk@pWo$VF06@$#=>w??1lwN94hUJtjkx8*7YZ+DjQa{&g87vo#|#YY9EJ?rjm zqWO6JK%a7C~ z%Qo5PUWZn-8o5Vr0AvNWw@Cbgv83pj20TOs7=?^XUWERAu8jkt)MF|){EIq{rRgTc zfxp5wf=61G@H1$zh@LAPumNRqTZTr}a`>ZrTI>6X1K5$z5q{pAKJ13IvuF~+D(N(= zbF2l39!m_3h^kq(Y;w}YW1+5x8}izg^5|ag{rY> zpO`nnuV4^XX&HFGXuqanTV}^!A8EAPk7&6~zzd|12TaM~yScNvmyAWV5I0SUtP9wG z5;Qm;MbdMl=y}wh5HE-d?5zG!Ij1)cR$nQ%=al0-PM$Ag6r#e4dh4{;dC}`O@G*9k zlfRopF!0_h8bAL<_?;CXXfKv^Mt+4`;5Ba?z9Yx|zNtj@faW**-0qr)XXPeck1EJ8 zFSZIh0EpnDV-&dNvm=V{;AUp=lB;@J-cwr4Ov>eY>YQ#{jor7A%^1}ZcpA&(TFrNs znB?wt0hVQ=OmcI4A7b~9m=N`-(ZhIOYUZYhU$E(Xv05KIwPhH@Bp_sMy?*0$!#8jY z(cwe#;_cOpf566&bTIwjz@fA_c3|){?-*eCv|GstIotDBb}D+Fm7*># zfhs0~ve|b5;iD|!KF9~h;2e_l@bzn11L_1O`U^EjUY3i?>3Nry_4m>5pn<3^#dDGP z`HM6+`=ZoauJ(xpqw`chsgbV3{qL05-J=p=Qvjd3w34)IT0Xs)k+cmzj@< zWPn2W1KcloFbzq=KaLRSJ=&8KK1&3Ql>@iLQ4>qb)T7APi*i?fW8cv?NYH0VJ#Wp2A%W8M%W0A=I2b7 zDMR_D#plyDK))dZm#2eP;`BbNjNm9iHb z3)i3eBS!R*R~M#kiYDT01Aq?VSsj`396QWOeGYi4_Fv1^?<=vr_;%2 zF&bkU+!v!;q7Dn8BNk}Pg`wu{9}r#~<5MEx{8Yx#QZ`WAX?j(fqi{jZHLw~NJPSJD zO`wnm*5Xn;^w%_{?>TJ7h+;A)**u42#AZSEJB{G06TXINZ^NH-`#f^*3*}^t><>K3 z+4f01V5K3YaM-&wB&GPiyb&EU);fzI!!Re3gK(UXQnBA3r5McB@54L6Y_6JmLNO$C zB*w?(%kh41fRK1n$?#WLA`KIOwR$g`7>*qeRNV=J2YkwtftAo*7&L6Jcu;UXx6eW& z`dLnJ9i6k29|ki7D$J4_z1molaC~_84@`qHfWZl95k?#0ypS4y#24kL@w_~IyvtE# z&P6|fLOqC9KY;d95Zyr#9hTzjH|~@QM-tCCV7@Ke+dkww`LLwS?T%mm6Ed!*@|YA) zBFf6D0CRb_&gyltQEDDB{dSTeBGTD-dtZw6F|hGr!_Iu&o(!pfZIus;N52l^7VRb< zz#<60t)EelBYC-+n z9$s9xen31h0DDV2N&c88(sY2`a7q8mHA=Fe0N1q(!)%P4Nm|J4TGOplEE?iwU2D(% ztF8yVU^`aKu5$C%_^PP9i&|MhahS0fV96N*8E0eUr3=YwtNrS0r~`toV%M>vE>q0K zMbuI<%Ryx(^8w;{q*MeBKG7>JZetFOi6WWEZg{g&tCkhUF+`Ms!@U-m`xKg^h=McA z<#B6_dQrTCEp4-h<0Y+TKIaMN&=-^Tpz&d@1nTt@Mc%7b-V%rm=W;& z$5rae>algZ`_#7KG4IjA!P85o(3#&Relq>&k6mwE=H#0&pvBL}n(DXGWS1=%VMH_f zhwkVDJw?Ofenza_OZy*a-?_(LN*P1g_zQKvFi66ap? zV!Nb)D3<-x)Dv@kKwGRssK{FA>Wq1AetRZ)#8kjve04HhI=f?K+yiIi*?P1(a}#*_ z)XJ|OUzVJr<G}T~s5{2F1gtiT-*bDP!cT&Ik;M?|i1dTF|UQ`H28_~%0E6(1c zZx2uQ>mW-lx1Ky)F;z$If|vmXo!4zS&))lmFo*DZ5RW5IdIcK>f`v;8#SbTM6^4d#+S+l$#lz$z%N$6a+SzA~g| z67>Hw1XmmAf>8-_c%bb~uMo0%dq&}lDhHlOa&lejy@VD0gmbGl`v~!1^8@bd5s7S% zdKoq%x=lY8@J9F>$?g^v)dzR}9jbKXd^NFfXUQ$MpbY@BKJ<3IJgrc4|*7gEnXjSraB`aX5%NBW?&lp88ltDGV|SPdpVizIJi zz!v4V-^Aq=J|W&eIN2d0NK1G3_Ost=ukVb~8?aMP5)Sm0myNk zHUFDL&kGlNZX|BT+dimzUG~Y`^u0C<{`Yxq(t+SL_~kvagX`Uz*_$j~@SN)?>gM_m zo#>gf&b|=I*_!vTrTWBfYFg6UsO)%;J~;ix5>JkqP>`B$H{Rd-YR#rCPth%Fvx&Fj z!Zx^0{IUI+Gfo8H!s639C(Dm3!GTLjznOS;^6Zar2su>-qsh7D)eVo+{ac9Ut!Qmv zO2(D*XNc6?U-}m6JfT+N2#Oq}0ttaBV@ILy{|uln3TfvDM<5dw#%VAXcStKo9IJ^A zUNHkehFmro^7a~tXsN(Mc^6>6?l4V&j+d#BcotiO7tT#XbN8+N#Nxh&_D zX8EvO3c24&bgcVmO}38tFt5e3FWeo~j#j+o+NPcxe~}tgFM#IQo^hUw_2}9eqa#v6 zcc+AgRRY$4J*Ha#OV!;CsTZ>O#bE|=(_pDZCOFQq4imCMrmFV9TX5WB+unCX^ZDyB zXl*7jRm%K2m-W}c)cOtZimM2zgZG0ZG)P8=&h5FlQE}Nk)%(}Mb`{bdgmmC|Tc-=|3*`JQFJjM5(ze_!$b+4oY?jprmTbl>jv^u+7ZVG9|af)@HQV>c`XSG$tlm zmtz0M(+Q#L1grfTR1N>0IltwDN;ypbg9H`k8L^m9{;^M1B(ZPkM)Z%;0>_*&VoU4+ z(!Vhn)F}M290;&ia^BVN;+^mkV zN&`^NC(QvZ$Bydpp-HdVLI@lFeq2=!g2ct?0>h z%Qa#DW)tcD^~23eo#5_?@|~pdRxUX6an^u;1IhFR8DLn(_NGc!yS=ZdA@~mppu2D!_ZHhckE4Rcm2eop#j^YPLD=!;5BWbt&h+2Dyl=GO z&cv_pG_YLEcU-RHP2)e?XY$akPBt4fqT}2RHcy90;hF=zrpAnCQs8%y_0;#1a4fc= ztf7w1ljOTJIi~OLkOYgP0=CDJam~m2-ZFD943!9*g;8^Ungg@m!yuaYH*S;f_dKTv z0o)vhLmIASO&gh8$Cjs^ct?8E_J3{-*nkP7&eTHL-Ra24gq^E)f$eVW$DGsfQp&f4 znYYcUdgWxHML`Vz6BUEWr`~<($rp0_G5Jr0I#q-< zWn-K;ZLfFcT`s``Mx5_=<=J5#Gegh&GNd?1ItP?~U|yQYcmJC`y8C->MjjZ+C7^AC zV#D+aXnnTC$3=cnqPnT`o7;1kT?;@IBsp74>O-1v(IdmeJI2pQd}qy0>#B12G@(-w zvyN1dYY0keT!KbYehbRUli43l;gBPKjXG!Fxoqu*FdbYF5#SfIvhT~~}y?D)yAwz8~*)`EY zz932U@9ypO-Yj%|QxHuAAqURiJy-oOCdfKyak_9O>{;$Vk>MUe5S{6pK~6Z{{pgB0 z@!6L~e$$akQ6sWAa8`@r_JCi^^k&aI_s^Vr*IW4SWPOsE24~?jp#8PntFYp?Q~u5L z5eHK02%JSknB-=ZST$5%%SRrqqh`cML&#UbBiHYI6c|G?WBOwAk|R`-&6@K>KoxXS z4HP!iy&sSJMNJzfp=TuU1q?1hx9@(nb)$20G1blG-?EIE4uG}l1610UdF>fc68SIX zxZAvDOow6WLSgH*}=>b?=l#oRuLX8-Bd%Ufo~L zU?C$v8)=;W0S7Ok%>4*|Ap-@qr#;nl>hc^(#_YYQ${GEWXRBl}K=dYhTNuMVIo5Du z+wr0hiy4y5?C!Dv4sfqBq}NSv+;_{TyR2YD!B!)Yt&Cdt6lQ98LQs$7i(%7v zki>SRBrVF05EX+4-1G~|n2_T96c@ZvM@sQha+wy~Zy4e@?4s~@coHansq2&TE{hzH zL=T-jRu`Brf{7hNZ&|wfAiD5s;N!aOYbRBzop9&yquICbaF)=UZ%q!XD-~tS4YR5L z`%>zDU)Wb9C3O*7sno4Fwinp~x$FT}{f}SIe=!8$OzbQiDgOE2+voopUyd}OTjs@y z=|dHMg@U!MT!H}~rzw^R@bafuBaG+c>l)jI6wd+wnMkQ5V+h0>A+;={i~XlE@6M;d zf)U2z`X;jV%WcWrj=!2SOsYH;w$kp$1Q6b|bbRsz6qsZ2nCfa`4Otgg!3Z*dj`3Fplx-2fDcI?{}v3H`R?Kb{Z^G!s<{ z*&Suuq68YHjq}pINxCG{&ffei0?04lN#JXGPhyo-s_~o&PXAJ) z426#$?$Lk1`wSW8L(c{Zf|rTGd7J!nK_6<(hAzjeGS@5f5K-2OlM$MNupRQlVX@mA z6##6_&U~i77+D0|48)C``%~m$$Wcvd_!q=m98<zaxi@ipeI1rG-&Xd=H>vM~&C>Bib_qv{7M%)VTT#9;<2}@8@M%p)S$t%mI*V zNc@IEKXDrllz5^z2hg~MwafKS`e=OYQLvbUSneHlf~s!AD`Y|$m~mo6(uqcx>p9q> zzW3S;O+XJ!Tgr(iPc(f$NaB=GTg-h%*~U7eaC1u(`!ML7Vfl4XS(r^Jo(x8C_<#6@ z^YZ^D=ZeTNnpqlcaOxqZ+rpH{F#$^1E@=6ba{Ek!$U`a|U=YnL$gCxbfj`4-l8fwWFi7XHXDH{K+`odQ%95&Rh znklVWZ*(@kTo4=056=29wQ2oD;0s}eZRY3Xi^X;41vTPbQ*je`e{*ihI0T^OH=q=z zJ}I5cPWur@vor{Y__MHNye#Qy>pLE&dG7?CMjf`aApDBA?5wY1DbDkLUQB6C8CU=3 z^KeP2Ec+Wp&PWn2+vz_J5 z+-%L!JtQf!f)BmkANS@yo7Cu6*{91tVw;e6a>Y)2&L8ucqPY^cWBZ~SF?ji}VIsfkv;xc#fe8h0g}XtDga-?| z_j5?Eb=!N+v_d`A*dIGeHWS+*%JCJF;&`CZ%DmHqpXZWJm$U7qfZ@JE>{rtP97icN4L>lzSlCjS%71*1&r)RUaG8*YuDoFhQ~J2G zZl04w3Mp);4;H~6gq6g85KH>k^Wr|Nxw$S`Yw3ewezyly@;$!uv3z=8nVy!0j~Hl&+yHYUMqxg2)r;5B(vC z^QN?k@=?j<67TrY`pOEme%miQIYk~~PY9J-_$H<2Cv0117z4T51@PS`U2NmjWo6YM zlEy9zd&|Q&b4Vs@tRkMK_ww#Dso&F%FKVEzBC48>){&R$9zz$22^&URSZG1u(ZMd? zranReT8B=BoX)Yd%4+4e`OF@cw-g4&D?iDr`c_nC1aRex`)+dFUlv%|Pxzw>l1gzLJzM6|v=myd@35N>}V0(qYfX@>e4%Py^g_Up&f&U>EC`|7SGLf1ek8XjBXV`x_8M@@-&xcD2l_CoIE8_n6-Nr)(8AJ~C?pR5;6b z-t=QL(>dVf3sWY@V9Tjc=p&G|^;ILSlpSQOE*mt!O&Ux!a-2)XzA9Qspu4QJW%%wY zJ^sVpfr~WPm(A|v;L2xpX2h7O07dK>|F^O+Ay@n9^!Ym2V4=VXMNvise7Hur^0bM> zt3F;VnAI4MFNx&A1y0pZJU+FRj=6CWF8E2apz3-M+x=)ia0VmeXNHOhh?9k!y zc_edpSXfJ_`fv}{u_kc8=XzsneyWR&4st_^cAa(tc;ckn!)iR`0n%w-s}!%OTHLtYp?$Muwpy7_#ypD+Sh}W;X>uW|}Q_ z;1yVBNe68GP>M}SwE*tyn^6Fk$qWkao5a4(AFa8YeXtTq<2W5P3-L6vTQvIdY9bYE z!&}NjDx1mEWG4UacP%>U&I}6N4+tK9E-Cqzpx8bL^btV?42W~1II}6RI2-}hKi}K< zOfI;GD{=k}J|4z)n$@qk^Vf}@CT%mUd6jvXzn&3&txS*4sLCkwtbQn3lxE^Nbl3!a zrr~p98PqRqpdRVmy!-_uHZ3EK?dVB(g1!@$*(x5AdU4T6U}Qe2NB?OcC4T?0b5&yb zKg7lMA8~;*v2p#s2oxE+?+D&E-tAf)wuJpne|9KO&M$|L^=5(zHbncED3vntFCOuk zugw*xUvYV4>7_dPSm834?VXu_Ggk(BsJnaGXwJU?tu3B+>N7;*H3iJgT9Ay2;H2ZK z_I1#f3eHrfGq$%9@j9+4%g-Gh^FbY*AdniGeSfSPMx3enX4H5?ch8~qzb zIoPL*J8SuT#WtaXW`=c(wmrqOx4(bY$y@TP(qWs)qx4N%#pUtCpXPHjNK1Fs38y?d zA3gC;2~i4EivjUPo^$g{W=2p*VXB{C$Fr@Oya^~Q|fUdc z<+R;w;W+V5K+9CU0F-CDN+i;=6Mj~?^3TQvu~Uc?z*r|3edXU^QXg5T4tH2otkU{* z%zr|gUedKI`&#L|(pQ(04^i3;3&ZrQB8%QPGt;UoWmFgC4uiFz^z|bkBA3Y+m*J8S|YL=cBPY}_t_9TBV%BMdu|NB{gcx#{3 z!mACh4!GJEb_nL&Gsikjyj+_I+a(iEo%Y|gY+=IX=k{qcykq3yA3|f^x1Xe+byng> zCvBZ|7l1lHE6u1p7hDpvswoUJawTq*a5k%XXgE5Cf7V`4=nYl6D}2B(mNyx% zK}$A0(655}`9Z*AIOnXp9thc4yp4=5H8N%E0yx67pWmS9o}tSH-iRn_w^Q`)0JGK9 z(L1R;aGB@uOf%^Qd4HagZF;aTGbux3Q(_puomWGmhxx@%`E&jowb^00S~8j%3NhUq z(aR(qJSp6^9xcbNlQ!(%%~e}l#R3UeYN?Rd@J!Xbu-8hmdaD0-@1t&e<}ZQq>b19w z0WjT(P_2HAlu12Jhya#Py0E4FMPVoK{{aRL%Y^d-8e0tg&w4|jp9%r{LjHrxn{FBa zkY0?4Uc*?wLB$7)ShkP3FhZ3L|lH#l-&eiR&KBe(*_>NsLxv`Jn zy}XYo(1jHDv;@fT5zYeYqE`s^h_=K{!0V$Jt5rDNugz+!Sq}W&!;S2$7E6sd6R&YE zJ6b1;wZY|0evz)~;n%1wmT^zwSwI-P)XqdS`t6dcGPjr>81Noe$rER`ZZJzIRRNWH z-Xx|P7VQ=mIYhJ7%kvyH0wrqi6B6+8V!7ju7lTIc3oBX&!XWelfQ?#`@}$?Q1@I9e z(52&zdNUWMM#OPK?{$q^&R#~I<>l=PRHai1$xi>?FquV6VbJ1Gnrmul2Q-!e=;K+a zLXW^5EH(~frHrLB3IrO(;>y>YdUZ(FzvGi))<{ISQlca%j1~w%Wwdrz_SJqdS8}7# zYS)Ivl@m7s1&5u)Nc>>Bi`zn$i0$s^jD;W%&3vla6EF#-6K8v~7^%ehxy}R<3MrEy z0npMu6g^#qU1il_Ka}i30bDnZh!??$foQ%4)-LFu%OS5z)q|+ksX%Pk=Hwt3%Cg5b zetf$VaZwLuNE2`SFuO}?5b0naU+6)KaHhF_hi#bmA*J_7)1knh4fqOR-eCpXp*R16 z3nH^M#h`I}xs<)_@!i}X>v`_VcNW{#bug>6Ti1qVyAH(-jnGvre1D=VPn3^^^hnO%p%NK*)6g7kp$vZ;%IfmTYJBjIbb70!oT9rkm^GLjR;fQOH{WfSO z_L3NB25kOt{8B8ckgB0ho>M~r#`h2hHg@oD{>RgNhgO06tJ*&fN+_h@p;EYfm2wD# zo1t40lV5(oCiunDTo$KPsPPY+30i@H+pC-D{2%W}?3&3hK)3a@Np{s?s-I)@hR%e5 z^uTfyKH@L&hKU@iF^f9-WK!$wvw5}(Ez%G7u*Im%C>QA5-?$7=b|cQW^=idj_DTuE zN;1>`4s5e9fkyn9{UksA!;#$iEUW}$OC*sUr(BhxAS}TM1o6S8|A1Ct)}Be-3nfY6Axg6Dp*G`QZUzUC7Qxip8&(hIfbAKW7 z_G&U&iEUm?N|5bFT0m(&9F$<#ZidN+9c|r7AZMOIXK@$lP`z1O4BKiZ?f+{){oLr@ z=iZc=n;Rv|<60b>y~U)LhjEr=4Bs9gCIiPV7hUHNF}u9~yyVW#_0uQ49_I)Qo$u#h zl3QPtgxVmf{ZXL96`y^r9hZWrB|mgEI!gN@sOa+_;8Kd1uDp(Dz@`uJTthC>nxsFZIMnnnoS#EKlqpw z6rAdCi(QwkL@a$RR9 zv)ET|qb~Gc&9f8NysnLbCp#i)HW zXn84kjNi+S%qkM3az$Ft{f*B1C<=AjbQ`H3W61mpj|)Wr4wQ!pFSG)}b1e-&gcWVG9hBp5QXrpHgP=2%RVB)h zBHO`GMU3*2?$!D#tQnU)mKy#X2$cxG!eMjK*kl}t*zo{lRhXSH%JkX{gztVk*Z7Wn z7m<#FD|$;X3(5t$fwfQ**Hn6-IN}u%o@(1=7O5mJ+ABL z5@EJgh@}F2!en=m?vKoBB#%1L#pa<7D7~j`0E-38sWF~d(Fw{blQB7*zi#jvys#n? z)|H}DcBKG2;b_nN`j#qZ99m^`9lp)lgui`KLkt!PM~2GPx>CNm#cwpBG{5*6ZzsIDyi&MLncU`zp&{9wH?5O(Xa)=`;G0RQm$U$SH+ zg9=j9sUaAlp4!r-J49HTyy6nEktMs2YO?47GST4#@3;Ua_X}wdHArv!_TWB+TNpp; zeWl0-5xBK9M%Bd1>#8u!o#uL5!Rz`@kXK&O|20YAVEd0MQz+uV5W(2F{?D*(L;e3# zBjI?wXW7tiEC0>L!(<4N6O=xhe4ENRM$)H8UG8?4b#;2O6%B{BMcp-3T zb?uohG-mf|YUoe`fa2Y(D17{wQd(Rseam|q;u}W?(uc@4mC#)?RArz5Xod(5r8SWt zAxSg1iF0V`FlS{RLSBv`SDPEFw~U7;(udIIBU_ao8A8}CFSKv{|_&BlxyhfYO08A(ik z@TzT~lzVp|X&_T`Jk5~0T5@s7^xks&W=t?%C)=?Dx8m;PDeTGFAX4Qd;SE|j(ZQoe zw+M%UVKkslbLp2{gc`p-7Ld!D{wFc#2<0-NhKj@Z{mE-^8*XsJg8ws^RA6H%wP-^n z{#Ni^0DQFrAPLx3n#eF#L;qgn8ujKH|69w_TCaJ^!k({F^I$A=hI7hHObheQG7ZNv z{;7!t$2{=0Gs75t5*w7MXj=34ehKH#D>@jSi`DLV)P{|bnh;8mA>=rrHm2vWd!C0% z(u+7|QeP%*6J^kUugqP%lSkuUQv2I}vKhlW2f0Hw0RMKB)jO-(q6-I_N-X0hONOD@ zES#VWS;~#7o(jl4;dFFo5K5x6ATupujeM0h=j=Xj!Ir7gcR;tT4tEUiD%U(qCb=uc z0Di!)S$po~gmH&f$*Fg4|9=-glDK1Czx39obs`=Zq$k4t`ZzTHj6C5?e>O?;Y4J{c z(KRFwb1?*qWQkP#BBGL@9A@)C(9aU9(E2Bo;49bAI91Z{!n5#7iSxs~uXe1fWpUB8 zwsNOe?G<#i?Ajuw+w=Ri@*Q+X1LaJZv8745-ueLnV1)1Z?@eu7dfqLjZxO7+2CiBJ z3ts=c5fXJsW*y_>DW9(R9~zI|Y9*CxI7ZxVo#ZJWu+D05-#T#$33 z{MxYDux{Ykaa2os5N@!?bLr>SN<14yHFp620Y(@ai87Q!NmG!4mGfAOpIL*sQMfYIuk zd)0)#))r{gsfBVX@8&swoo+tshq@>==J0a;==bEyAPK~c>?VcnhXT@5@u^x*YZFLw zNxKkjsrxAfSW*gUqck$Nj11N!GHX);%>V^?1$e-cjH8wBektwBQ@N}RoKLFMl*AZZ zy8Ce(9B*#F?=c+e^lN#UnzHHA6X?|?MRwGT7zZesLFkF8R`g zHp($@w!cQwqpetZF>|GR_s6w%bku`+Y*(yP|7hTWbFm~p#sCXjJjJH7oE)9>B=qhY zHWNn}5vuEE(|O0B;*X(r(QqL`E9s2*fK2J8_^RcE=5&t|tvF1- z3vr=0FA(wY7#h=)3p3j>_G`Ka4}&;N?Tf$3 z@!%Ezbhtvb0Wm5s{PzH^jhufm-ESfNG$#iB?c}^zks%jMS+1<*fQ=CGL)vO@DR9)>40K zl^+$|bm$xt>T+3ub4VPv2^xjoCdQTU!8FyhetW|xanBk8+J_r;Q^lo7;-I2w-Opz_ zV!6_SRt6U6jyBr(mk|<~2vrV6p$|L^`0Q3H2+myn1Nwkr&<25BdST`jy#A$TAW>Y> zelzhE0*A3clfYOzLtN;?)ko@t@tulBeTC2389_!-TUs74%(-W!IT{Y*8A<$+_vF7y z`xY4}3VH%PF3q=T_&=H7&a-bvA%1cePUlmsNF2LhtV}{ji*QYYiADuMWdRvg#OD)Y zit2%06?<|9ID(=OqvdTnlsP97Y=0)m%^z@&cjF-5070Qm>3eZb_*t-s^o3(jSfj!8 zDhNrejOS%R4PmALFol%ejpLyiw}srF+z9pSuDd02>92CW8!H6;u;3Si{MvYO}R|4e)`O8==BaR@(tmS65!7m3fn6wklMjQKmIS@FiQCDi_% zuG&#V7Z7UQIUo5qfNah&%|%mVK1+E-!A*ZpUQ-39G0Qo>A7$0!q^XEC$+Y5E!y%NQ z`jW7tZg#kg)O51Pygt^SE=;KFk_5w?+i?*ppcsNZnXcuw5Ch1O3)J{1s{c~2Z{+r! zzLig_JkYr=BHG;xSfrTk+Z-7B^hE3w04OK!EGxUq=OAh*ibdaH^OprsZQFRt2j`BK{C=p$M{B1@MFWzmqPKh0sRMvC0F{6P-g%FwP7cAqVqN+lVYx zcek`Xe!}^C4Ub96`@}w@GiVPKlP1aVaD+lxS9Y9-dva_QOTR5?CAl_UCAO+o07&(!&# zGW>Gpgn9pBcJc2FB#NdeQ?pI);#neU6gQx@Frxi?K5dHM^{nCjHzg%6mHj2fKyr~> zXg*Z2JGnX6gx$EM+zlY;#jBs|0wCp%xe4j~L*Va3=VPd!dZ2$5wj3>AB6W-D*xjdnev@|!T{w=5t93UHg;&qIDI>r zzZYNjj(KL%*bD&$NEh`|36{2UyeB<3&e*WYsgeb~5_k&5UmZX!G39zP83zU>Xu}$y z9Tw1TX<5g8*~`iQ;>vCbE2WC`l$;7h)qTm0KwJu5Wto&9QsR39MsnqOvGEK*&o*5g zx2@XJ?<^XrhX(~sjs*V#Xpb6UDx$n1vEaU$>in%L*KM%kBi;TQh@|jMI25xHkEnGR zgC$?w_Y~7wLFnwX6&pOuyJ836|4 zJhQ`*3g|V|ir4uCUK*5%wIvTmzDf&C3%S2&hY?`*gP}NylI(;7f=B{H0{bMSuO(gm zNOP%-{sf+Jm8%bxnbs+28IpquE26@ZKC#kGLPaulNiN;GyX^cr-FFN2Jr^MwX_?XH za5VmWLJ3_CO6l&v4-(`xvJG{48GM$w$gS~t;^6xpmImVm zjf8T7XwSxQRh%K5(D^jaq^8Jo(bmQs0Dfre6IVs?NCwjjC=elOs-zheCUC|85()i& z1T;rP>3vUi62tdI!E5MZzpXccFbczx!scWw9vbRq?aCFINK3U2rg1!8=#YoXW6`g9{5 zt+3Gy_P`pj8_bl0&TLwS8=4w0P%~th?3r|bDbG>;g^jol&5+|48VOhP(B6ZAa!n7$ zU!$uM?78NuLtYI=@ z1QRa-{zXjm;P3?gY=fY!`|9tvX2NFDfv=i(5Y`63@u@N5tekHV08CJF$zVb`-cRTF zk>z`CIDb``6}l2{!$xcy;^Sd4M z>9GK(CQP2koVyO^!SGpn($?#sBIM}CSU=`gcP4&3R#U&gmJ;7opy@jE+9AO@S#K2QgJeUz^y>Pk#w3VJR)cCP@pJ z8S<@5v`tbf6i|JYwW>o+Z5Yt9OY*0Iiz>ol*7rA9{&z~Y3co&6pY%J=la=n!%yc6$ zsXoHdO1_fINrRmNj9hR92Z|qM@K7|k{YryWAWwMh2f!wuefiJN6b$f9_?e2W^4lU; zNL$btgzdG_QLxEZzcVBFQ4}m!J1b4tXIP2L4=;e{$GkRF~=-&}` zv&44-Z2xiIKNU9wuuRm}0fwV}NP!oOP{B9tXa})D_x$-ii z@#>@=_Pz%6ZRYr0xHvC$P2Ic!ctjw4M&_GoRRYV$+QReRHl}eS<{X>T0eWv*c`TpP zz7L(6XhQO)bHRKOCj#mBXYrCL0GnyTNOePg;p;lo!iBU3L50P}j(N<#q}+zb$}Wk_ z5Ar&JShF3^YX8~|w~pr#wUK;OP)8a5PQ*-kBI)wff2b;aM3JCU?Hla_@H#l{wA~i< zjVqQUf3j^ypO&Ez2nnU(t!b^%9s6w|4~t4+;{Xj-XiF-r&zy-DvMD&94Ahkuu;&z5 zx4;U(Q2y+S{9Y@DFy+a!KVYv}n~$3OccKuFD`?{t2rfZ|InvAl%|Ic`Z(xV~2QkOf zdDOuB`FozSSX(RhO^-{qc%@jLW zkpDJ2WA?WpuITqS*TprU|!csUkh+-?riny!lf#}z*kQ3H?n#}cVsjKo{aEs6DfmnTj zU(I(~!gAj9x$Ht^xw$gFYXBAbgpX-iTEyjj-}p?y&b&#{$hJ$hoSF%Yn67*-P$ zupcGh1hr-Xu!4@KAQH@eE-PC8rbFHp-G+4FjGCDskUAuOJw@P*%aVhJP6F{iF~E=| zlbA63przS0F~gF0wj`;&)q5f@Hw{r z_C~8X1!q!&SF6PAOCy0oLoUK=)4;nTBiyBcU*Wzc%tMnIqJzV3!zBO2ALBrrhPf8U z6}S>goV*9$_BIwe=61qng}toai{89xnimD(QDZWbxN5jTfM=I)>6IUHe<{2dS48$v z>}?0*++yse!apnu4ghGps~zKqP#4v(K$i;hM9LPzA#0B=Gl4fa$`2W`y82s|)xq(W z%<)vPocEl-d%Moy?C86N*h|31j_djjhWJTb?}nb5gU2!Lqey|k1Ldc2MCdqOXp{VW z#o#^j#wso+Ctcr~c7&}YW;>AH417Q63~$4-hdJ9`Z(r_)HUQ}y5}Pj%3woS9aBp{D z3Po>7lRH7)UrZKnZX8S5zWnRKz-qwLBky?INS|OX&VTs*W3ZAF7&M;Y9Mo(X~D2Y%WRv(ohfcdZ7&?g@aXST zMk#!WrTjH8JM`!%kJ2kZ{<r+nY32Dr~y4Cmhwa;6Q27(0zk`9oWr z!Ls+yYMlKLh6T)PJS@d3Mt3qh9c8)r0gzH!A>VdoyIa4`&Qnq4yz2brXcxye8y4D2 zTU(8Lqv+qyZ1ALT4I4l%MR=a}1w4YiP!SqrxwVe-Sn6#2qPdel^hhx- z^%-XgOjlo);c9)3Ew*oS{dwzH6=$A>Qq{OzU{l5187g3NqOftUpm(B>dEzHml1+7Y z$SX$PqjDS;%Hm9`Ksjp6l&$@v%SJanxB~9?1fUVts#AU$rs_Ha8#or5GC&$rSml7s zVzAhp)dagoW2KwDP`PMS$-QrCPN%Ccm3kn5lI|vL(4zAC9uz^+eoxG>gsOIW2Caf6 zp`;&Bj(YexxN{?V+M0iyI5ZcXRoP91DD*L&iMAV3mueZmrlZbf?}iXZ?lgrPH(5d+px%1u~FQFqQ(E{apsEH~-DY ziE;vk`p!LnqcKN+&;Vp&esaKnza*eroV{a7l=BF@ezkjm3e^avi+S2(2DhDUSZ@yv z8gqo^e05~tL=o=YkUbXJAhu}MipCL2g>NYWd2$EJvgG%M2(C*YpzrmA4TC~UG9VrJ zE)c5fn|CIbglPyno>e2{A-IAEuboLY?|m;a4IZ;P`>FCG5CNIZ?Hk9lLY8AP97d^` z9c(@@B`&UyzkLOMZrxYW8$9XjHvXP2u`Zy1{Mq+?(N-VS*&(6AHwqS_k;WDbz(a@D z3D?$BzLKc8};PER!y+yFiQJkOV$z+YfdZh+|rxFH&oSX+Lx7nn8A^Co!7b_(;Fz?Sw33O@ND*=ncX6cmLsF-Y)Y+lO4&>dJz*nqIVqJ|MMCE?F- zxyhY~5G+6`N89o8i|wM^T5uzp;-&fDft@@q?;#kaT9gJkP{Xt(6&r%0qf|h>ZpC7h zi;i%LQ5`_4m)W2SxA(Ft{ySf3()AX)y2Nc-tsl;m%382;NA(VRp0`)4(%i~+=iVpW z^iR;{uU)V?B|s+_F&3dnc_a|WP?D{Q0fh;jRC87b!nK>U>!R;I@Pw);|0g2n5k7)L zdh#;T6>fe1zi{tQE#eAGV3Br^RfemLHDU3^pcKH1-qv3E=cFjWcB%`uM#o8y(kOeq z-2RmgmDi8uyrsDZhkF<2>AlRM(aE$`XAtKgkmvBxEuoM}w)2=kD47br_KBVAam@Wi zMZaTj;Q2Rm>0bxW>?5nu_cDdVD2lTBr|^-6w2rwF2FQ1~0YLh}7zE)f|M9#a3`5uIqP}3bvJJdHt&mo=DbS{Rby=lu_RuKrm}PW(MX1 zd(FybWWC95WO?4dvRqn0h!pfBjAmAj6-01cH=1B0Nh}1*`p@WVkBQ3>Tbf#entoOJ z?SXfiyUBX!`R{scx+A!TH&v8;l6&EJrN!dTfvZK<=xG6F^EA)@3LBK^|I!S;TPpsm zYB{?#&i^Exk@-girQ-VRw$d&e1sMixqjc8|<0z!l#H@>xH}a@nw|G!bM&mo;51M-j z9GPq!Iqwb~IAad?lkIQKx;aSiFzYEM96V$`txm3t-Fyh3BS*rC23hFs?V~;9D$N3o zw6($;qy0?RbE+cO;Xk=C4P~#anI#PXKjnGvAmRV6Bg6GO_JO;ZILZ}`Kvlk+Qh&HP za1?6*-yW>9VoD%0-*0@`TT|P`Ko;|?NN)n~kek>8cZTcNnd#e2mVWDqBBvDbd6Vxs zDc#LL^>X2LsjZ{FD9yK}bgT~rp{>)CO@Pb%mJ|bhnrCA@{HIrlDY#AJAg0S3-uPQu=%z=>Hk6BN6 za-SFlD)-%vr6`X>|AgU7A*J>Md_!WdhKO$Bf6n#iw4eF+?Br^S!9RkdO(nA66Njl5 zFu;Kv6XSWA$TAYh5e46uvx1KIp0wi2n7)?k7QQ79sFO7aC__Lhh^pLS~q?IXh1zuH)ZusA74f*OKTgjQWc$0H?%&I@45gT-CD#-z)kT!-&+)E z+}l@I%~x2>=FTaq7Eg?yC5<;`f;hRWMc%ZUgNnG8%oi?A?X99s?^#x`8vx^j8kac9 zQZ^qgJ!_j(@a@4zQj=N*RK(ZokXx2X&x)wUyOxpJs7ZALC}CyZRjFabnf`5~P=~8k zA!qjv=@r=A{(=kc)btt6v#1m|Ot3>DjSxv*N^<;raQ3G5N%Eei#~=BH6#$c?^lqxc z7;M)3{B~b^98&G!#Cvw|?|~Wpr=E}3aCArj`KxLv$u)H;6?IV;phR-a&nn=G0dlk6 z1;M{)waMi^isAfR{Q)^?f**(l#Un3M%mor?4ta+x&J5hBp5f`jD%7ea)(^r|L0?}C zq8%&Ied+e^>PNcC*9)P}p1y~9^UhM^f3g%hu=RE8atQk(2vA5GZdK5F^;Ua1M^43r zR26`HtZD7@yENQp1ySc<9gfmSN<~EcgPuxJ#S^|3-H%k{OzE?f<-0%_X^47l6ZUYS z7ioA_fqXTt5TN9P_q+~JCv9iS0< zsVEQqeHa~z81jCXTe5Bkc6_Y~C-k&_JvtZ5+r-@(gad=1?jun}4BtKmIIOZfD)tVe zBpemR-R3c7f1*Gq8qs%TDqGo^K2}U_d+2ZT>Bo$h*M`>}55zZy#AM)MV-nLHCe1)@ zphN)Bt`rCllOyo%^-?`t9JqG&O*W`ZX9W3PFW?6vexk#lOH}tlCT@!agBD0(cf#A* z$NnmO1%|FDEX-Yp>;_(jUcl+`d4mMNefCsc{6AEEV{~L&7j0~t9ox3iF*~-=v0bsP zif!ArZ95&S(@8pdx%Yl!y!U=o{aNemGsYQp_FlE-Tyy4CbE$X&MECMIaL4?sCCb-| zV~OJz2vHr#tJKk&E3J@{B?)&BhS3L^H!%QmbensnM7p+RZ$nN?rrIC|ft#V}9+`%JEl zT<6sR06vm)5zSJBR_c9@<@RMKIMXXQq(ZmkwM~cQ3l@_9Hfqw3I4hX0KNTufyYSgq z`dkzvQ%55w^1E{MEGEvm%2&oPoEDKiy+yPylSR}x8-E+!^Vq8+8c7{5N1R%tw=y>7 zpg2@|qd*##cUyA{r4Ev=KkDx+m7_`KJ8p%Z02EQg&6)OJ@+O};7ni$bU_)nUCDC${ ztd7QKQnsQyErt@D^WAiIhuClKwesXJcXCdJ*=_z4`II{fv$IbK!#bKSE|ZVXkbQo+ znwt*NW~tTwB>lGZi~KJ}L6mW`{tVsfb>y(=dz~)%KyI`}k};?L>GE#e;qoX^AcGp9 z4lVF=$EG}h3M?1$(_->VvK$ApJ-nSntr&27;#SSRUa8{817IFPM@hTQPGC)*&2CTL;(9Y3Psmx=&VozRtVK7(Sl zLZm?Kfb4L46kkm4BdN5RqK@nXaC5XJs$CS!W+>Y*B-=YymS zrrm8^IXhDBM`P`ngil8b!3YCpv0)ZJO$>Q6uFv|co>=1ga_E(mJiP|f-=WAS7K?R* zTt&(O`|_eIhn1n;PtOejv?^m|N=lh-v{6*)=^_WPVcY$r1GHo7=>ta(=TqnNFB<-> zfw&|O*Z&Uy0FiUQv@O2|I5AqOb3w@=;3~|6EPKIwbMs37*)uS{V1c`HP>fbUA?Q97 ze8oo;uES?9_eJ;4e>)0$5-1%;Yf=TM0|Z=4eOS^yk?t6u#ecD{a^Z_M(8^v5$_D|5 zrC$(qDD($}jpyGW7zfW6(23rf-w3J!0dJ#Cr!a7fN!V>T``@LU|M(GOw$itOT0p?- z&IN+zeuB74H|zWt{UW%1S(UdAcY%(A!wu~a8}BmdGGiM28%(6b0Cx9%-BH2(%?Byjz#ZhP7%N4GJL2f#?SB3Qthh`q1lUEPJ_nIFYhLPJ*1A!2ZMx;~Mo>-7e zkaMRQ|ND&@3TR-8dQ?AVuM$+5*(-8O$vZvCnxBbr;azLzO0~smXXd!L(d!ElQDR@ z*+1QcNmpFZnR&K)Pa|7v5kx*|;F7$vYt9h4Fn(mtPir2Dl63@8-Ll@iw)A**nXWCX z)eIUhg<~HOIFl4V*?g#Y&_xXXCD(gEt9bZeT$QMQG=1Q-gTRD^SrOtD09D#uC=Kw+ zG#zJ;@jmRg;kF)@%qRn3&K_6Dq&Z)P_TqyX;|?YU>qRN#d;1tz{|NZ8pkOAcToc@$ zNIy+44acU;X2rO^rciym*kx1G7T3Yo#%SxZQ`7bxBMuO9o>&z9H!yhyFbg9PczA8^ z_yAqttNzo>s@TW)Kzk7qQc5lSnH7K^lW4TT^s}^ZQr#_X)kMUbDOx#ie8pJg?rjPk zfzHMX%pN z5>FqmDT9kg`ZrP2Bj*nL!A_)w_;GhZIx*5A^kz*8(DG}kaXlOz7 zPfrwDCt*oKgkaX&Uv;~lD!e<8C&ykL;f?S=cr&XSs(lFKpo9z{kH~L^^?RPJRPM2Y zojMnfeBz$r!})mn0+{^-lvpjzWH0iHo{ecM<% z$R0_QUQ{^f#2ukVSN6`=NX!=0X{WqTgCN2+QA=d_Crh#GWTkoL^Ux!qrr-p7M%pR(5#r@-?mPm1 z9lgbnQV%2;!^POeoA0R`$%wMc%&mDVlGB)8IV43ipL`i4eE=UX0&YQ^nIw!h zejO7#qSV?!=)?OW;W2qE;IZ>M}KFWxiz*}X=}S4Uux668vK z+$Fl}i?4?yU!0kYXVB9veA!p?q^N~=#X{}r`fwu#v7)?Zb`B1%9F%1L%W9rcsY1o$ z2}onOD5bttp1+8+byfM2x@PR!Dk-~<4PvQ%b;iE3=kV@MMht?@{>do z*)#`wF9EL%Ay6LkZpgi+4^-%W@K9;Y62iKnGbI*{jYEt-H4kr79;~-3#%>yrD^HWZ z3NpzPLbn0JVbmynJU)t2hgZPb=i1B78c%GH>HRw%2iKr|0MLn9KM=91ogdCH62%zS z`>=Qpgpr;fP9KhjS+xV6={Vn`oyr={-idjz?|4HTu@s)z@+#0@Y=?A?h(Ye)p8pTe zL(bl<=vja9L%GHdAKz5;t^I@4!!jX4t5LOG4r&ZVmi=NF4Z=Q!BPyVFVF01eDQkUw zbIpRp!~eUr#NC99V2blYJE0c0L&0&3o^~3A;*;N(N$-uKg`!N7Hye5;Lx!v0n7}2p zsO62j5JpO`E46v+h35T$!p_m8gr{3ms>n1m>eMx(&PkMq-OpYu@~6n+2m3HO;a5-V zUVG7stLX?<_uP`ZDSE(*C2;CSutpW4#QsJdyEc%A+W`W0kkeVJu;fGRd=G8IuAFOW zzd-~MT-XzhTI^>p%fk#vX3b_|S~U$%n~lHKB;Dl?iJuwnF3pVA;LEwlhNZq!zq7hQ z+Enr@VUmsqU2>pGR&qN26tnB9X<4Z)Nx?Y9#cQ9&;C4c9kd6QZWsW)5l_YwGOEGuz zL9F9g)`QnfQbyp(RS~8m2rA0lD4iF2Bf&KsV{&1z74;Z2dOJ~DTb6ovGwrU>4jeVwVz{cjuz}X(gXH%*|A zCd+l}cJ_TijDWWF(3*qOgO!9kw4USURI|a$&|g4gt$W_G3|jR+w@mWO(GK*O-q}C4 z;nStD^Bx=h$Ccs*(MDJNy#CbH!Bd|#Hui;C>`NVKPKpAMmFxp#p8&8-vNmCsGf*l8 zWc_;$Gch0j2SN&GL~d?}k?TFUB$e60Q-sycFzwO?ajssZ9DdhDTaTw89fY6H;BhHP z=)BvCKd@)a2cFdljQ`|9K(ziz+{T1}OVLkKe($lln;h zt8#!E2w;ey%>Nc5z!oiVda&g*VBt6@D*&cX=XPfhS{P!RG?3AP+-H~G!U8*kB&ymN zj=>(~Z7$hxfJ57E&ee&fm6paWv$6NSVeRS!-p<2GZHh;>N9|$xetR9V5&9lJu)WDr z1o33Vi*S->41;*W(+OB}Iz^uQUR&T|kihQQ+xwCHGD2CcDrA<~dBWI16M9t+E*6#XkIb8;vW$tpIu5;D$J z<>He9;XA1k&Km9EW1Jmo>aRq000~>N5>h#B>`wDsBB|#Ud96!dx`zj$7lUfQ-KvJp zCb@?AdTQ%H%E^4F72L8y6VMh6Rjb^z2E?jKsQ#hbd~V@ z*Tbv$pw#hkd9|jm7Bvz1!45bxMo8*k=;k6wq=I_AAa?J<_H)ExW#$U%n3t1be@kus zwKlhW%vSuNIny&`%$YJAJP;=8-z<6YKJ^GstyPIwfHr8Do}am%JNtMS@7ld2W{z?B zRg0DC4liFcwzXp=jvqY%o<6(@3m_QLs`5~nNp>7+p)Ugp9+0;bUr&_pHz@0>W%QE2X%XD zH6Uya_p)^|mVfE+*~U=^G>W$s?B+kke{co}2=Pi}7?K3L4?z+ET5w5h=}n^C7&!Oi z(duYk=4gzjld=K}UMR?>untE<|t68oFU@hA$)CRxW;8s)#BFI&D_f-%un;Lq0| z+iQ5pOCFdOrzVaD6sfkGUpWHkXB`k|xOE}3X0;&$-?n#LGC&LfcfWQ$x6+U1bxJx> zrAnJ~)t*)1b0M-I(KT`ZZa82~8Ji3#hBa~%%H7k*v4U%$BVjA935v_53SOd_l~y#X znr~6oqoxQ5v)W0(ORXku({NrVhd$u_nZTeWy1}@VuuFFb!1amccknW^e&$zxW0oN0 zwF~`7)vKXn5B?b~3a>N_(@ZEW0 z`Y#3j_0kc4EmKbLZN&)2doc4(9HyO{NVx@q(;_b+>8$a)SVhl`MoUV4dK80e11y?m zZT9i>l;cX`tfPvHm?~*Nz%jAdFjt&O?LE(9OI87ss@$-k!k=W~D^#IUk2vCP35EnK zu(JBpQe4Ql%_pfUm&`hQ(p4B+$(C_kWx+7X!{qXjlzcHUek&*4ju zviWCz%h8xq%O>$>_aL$rMYVcNH|(73(5=bI^r6FvCvH1QbXNw;r>_wB8!K3_vwS-k zT2M(OsMeKv6b0E&T_1Uz7*{#Fs};fkDJ9&W1oq>Z>r9Q<8jVpvU3B^8gGgPyU3?Q* zGqlnbQ&fQN2jeM;!-xaKLp+t}Vfd_AzHuxWi-CT3&btc-RHP%VD?0>*s}mG;aX^DO zpVBTFIU!YlV;qb$4C<}ox1+|m`pkNG*7zs*XvtgzO&2UMB|?drHTdYr0K4e%8kXy5 ziR+{-CgL<@6CoTExfoJaJ4tS)j-OK`_@&A;!m)rv)$3G&3}$}}T2xio@uhAD5~^!* zs0wnh!J@-~)A40Wp|)qcQ-0Wq^V*;&w(V~+tx8ze-l{31-O|OxI-TjR+NEJtEd<gHfFi9h4E7o5R zGwXvnrOuZ_x*Kn|v!O9Zf9c^8MDr+h<3dPa84Z!?uy?>@Nu=Gn=-I7W@FY_4@?vpP zH&(8{40#jsC&in*2f_4$-Awf+3B^eyTxS4=44yNHfj}}yVHsNVDJgmgRMjL%5IyDu zx#js0oS`v@Xe{?|jJAX8@5W#lh7L)^?++v_M=FzkRtC?1VP)g$(!)1lrvMtp4s}_y zBgnR}T=_RKss@Kfma>nXLjySb2;GdNTxcikIttCHkWbmgkEi&u3!r^?Acrm5#vXtR z^_Id<)4h-Q^E|h(5hl&ZaN~xoELY75UQ8%i>m$U&K+_U#qx&nAO?wG7yH=>aI(m+7 zIFtyKch%9Ea(zx$y?~|XgXh~K8io=&qf;K!o49p?K;sk+Hdn26i-^N62ZKdmPUrrN zOY>pN%+qFPSDRy!S@$@t5Ivq)YbIcdh$$M{#X+jF({liv7r9s}P-v=+zeAvM$u5>J zpc#VLL==9a{$>rvEqsnby1Raqxwx)eG`{_=V(XiG&v=RJqKn2yG>vyCsD^hD;!HIG z=dt4j-2x>?fFJXxMI+&!SdUT(g~cEL!kzp_F4>7i$4^1y+|MgUOZt&;^7 zy3F^K3Z7}Bku_3as{!<^pZS*E)Uh(rWe zoDoG*`45~<1jJSH^AulgWu$OZm!q=FofkIB-80#v34TYFROOwstq+__iyl=LoFm0wy#uWq4sQSy!QY-z30CU6f+Q%4T1`Vo9q8! z`mnQe0Y$jJd}!tE3Ahlxyt?M=fFe+{aZqjYuMzYOFH|#^vFMZ z;tsj*F4vYXH>8pNIJo6dpC^#g91AmYmmigN5Hv&)+|e^Ck2H1^d5r8)Z*+2_c`L@M z4kTrZ536Q{GqN(PToD2|1w~hxdw9+ER9!-D5lx~tk^s6KHpUvmBbXYtKD3NbDH00I z)GHvi{Sp(*38Zoel;kirU?S9%by0!&=@6o!@k_%5Q#j~yZ0fkpB@*V;^m7UIJDN)n z)K&9epTtm#A?1#O*fc_D;xr_@N<({EzZP{AJ*sGbMTqV};C`TDqMZM? zaZMyCfE-U63Ng+jSctXmo-?hvWN41D`4L3F4U|NApnq0lp&_~HGs6ZgD<5ea*&xON zEefpZX91=7_mhg~<;3+w%t2?!S=`uVP=x8AC=9O(EA?OHBZ{!GLAaq5j?9B_ z1H?bj$LUFy?}Fne*hn2`b@ zg{Nav&7tQq7szy>om#x)O7RYz=JC&0IX8@GRyoxj$Ox=h^BhlV7pf{7 zpv)HzD>xYPgxBtshsaVq`(rr3dy)+ZCN(j!Bv20ZHG89hkI@@Ta&MjwlgVXrm+U2o zYS&?`>7aFn^j-u!hD`dtbP@=j)J`2R8HE0}Bypt#xK0^_@34Bqf2ZBK*Mi3;1H1$h z)T@H*j55l*ikdHEk6nIa1k#o9I;mSur&iO1-9%l_TfcW0Aa@KnJ~=-%c}HU}O`BxC zW0-%Z=^?&=GqcwNr>$s}iPb%$KyhGV{MZtn0V{rvoM0eIM{U9snr zNM@U6W2voyPtoqhuR^GrC4a?QcTb7&*F_Upqf$7HqU8x@Gz9&iWAB?RW*)pws=D-I9_B2NN;_W5Cb)x1i4NE!xygpeG%ocPUTY>! z-(Qm+$D5dMEIDS3cN8pgs{u8s#TTm$cs+W#S$1~kl=oAGvfqfL9Xg&0>LbwU=r&!C zp$N!ApsZ(Qhls1#9qY9IlXft|I&7sov zmRvrs?PHAir)`$eY)Haqh*@@rbG|RhKk>r~-K-SpQUs*EwUNdQxU%G19bvz3$8WTS zzkN~q44if>l1dg|`50qf?c}pP0i`-;S7duAwIwpgprN^4JP@+V6^h@fc8Sb$!7-^ zzY^&b-(CJ!WV8K)Q(&|*9D)`>!>2u%OVTebJ{Tl@ee_bx5I|d*EQ#6Rc@7{`BW48DO* zLBTC%Lzqng(AH9N|679dUw#GzD+>q9KL-#^>oqu-CJX`xJSZIS82~c;YuEChM2s(i zGYn8RprHmRZEFz%m?A73?}$I{Cn7}QRqKBV|6n~_FmeAkvuV+`tr0wDNx;_CJmQZkQ80ce9V*FoWb2J_I%2W>hekE}Bn z;6&ZhMN978T6wrX7~Q_gC*h=#+66N~as7p0!7!vjl@dc)8Hwl*Lq&}a8R~;5f`yd; z(-8roA%(yt`NKyOnvKUvyG9)!@B4?wR4UgO&1$g*WE>GKIokob?a>aF;F}9rrz=pD z<`A0M6o3Ia{_e*EN`WOYEVZVCyB<+}-=atAE{Y@$#QNu?){;61Pg@KG=02qsZ(^Wwz0G{X_@hf! zjI&VP&rhs18PIT3%*zd#Si;yI&ifzt_MH6!YHcdVmC|XGN}{zIS+TE?VCkYk&*xILs`eA-jMLNA~OLbHsHH--LUfwt#J zP6c#|2o&{Bi0p$ImBUX1Q%2C=4Ib<(UlvYs$A{+wyFD8`DF!ABhMfzicO*;8t}pos z-#uh1yX{w?=-fP{1D;YLZL0m5ey(i^B^wN)#fHDdQdHFq$2oB}Gf6NRA9ARn2IK@l zqne>aNBX~70m%>5_z5Ku{$}c2OS*FL+5zmt=fmgye}-b9>TM%JLb4k1{_RAQRjyP$ zl{AQ|K|1d?zW2m&EVs;wo5W=R1be8>Sa#N_h{|ql^LA6y4@0offHB(Gi)FW^@@eoA z*{VjuTQM6;vdA=TG4%=3Q`AqBLD<3w2Kbs7gCk#uuX9~u>+P}yzy@2zwcTBM~`c#WtYMrWs-+_rC8yZ0}ULmp_T8s?{ zRfUXLWU0KsY~HSoFA2-s8p)M4rG(e*qY3PXO}Z3FKh7YJ@Nn9NbW1sljhF_SY~{Sh zS}fckB{55lXc85F@A?`H3i5i;mqom@TjwK-I zikf_J%i}>?$M^lVXWT2f!=@Gzb_*u0BV_k=3l!c_xB3dpfx{RyEdW@h9>;4#G)#3BT2Zrt1 zrunH`kf_0yr#ura28Opvi`Ga`^$kz}l&jg{)@0rNH!2rNYRMF5{ag^!Ko^$b_^VCC4DdiK)wLR<3s^t73X{WuC_VI79 zCHZsW3;7mJsY+x>#G?$Mv>PC3pSl~E1d3ehMzMT z?&Cu;r#X?xGA3=gs4fLrVH&wLHd;ZKNie&J9LRJShR8_~9Dsd!T!)3{Nyg9=Qx)z$ zuamro3&*dqxAO{fx;g99lP<0lH#IE*kw;~+v;7Us9Pyvzmf2^fKX+3%*!pOa-W-_M zDd4^F(k7Wd$<47J!24m4`m(__!GrH9JL7V<6lXpRS#_97+uuR^7$KXx3?r#k2oea%v#tmm7LaV+te1qJQk)EnM0^~4o(GWHLCDFe6YEbr;<19 z(9n>h+s|~!I3KyD;*&nXBkr$${CBAF{3H3P+-1I~MW_169a6k0Rr!Hgl{7L)S9UZG7sIDP*Mviv6`%KAmJ zVqyIfc~iuf{)a6Y?SzM9SJ6@NmnPi_%txmoy@ux5R0Qh+jg6!JEI~#!-#^NlsSKfi;3;wsT&`~ zgB90&Cf~12Sby*#d-wXQb$)-`@>3%>>eA^Jkk8$I9;ob8q}f5OFj?E$*j=x9Jp69j z!)31cL&5yXTUX)9hyJv6w~kt5!hZSi_=Vxyw94!i-ik+s?u4e2w7!Gw@sTfY4x8JzVtHoilfq z0J%(E!YNT3#{7=(41PVe#5tX6rjZIo8!j8C@VfMN{)&f5S3hkH$})Nn_zdT3&(N!! zFJ;{{y%hQvj#a|U&=9(I0v@Ya&Ls}FPN-+?d;TR323ZOY_{&A5*)6YzLwcJc);aXB z?P6K;c`2wr!1kXi(fSB_cpa4nZC(~ffS@?mrXQ&(!M^MfM!(9PxMau=oRu~|UNUBv z=Y^mF6ppLjhmXS)b&LM2{xf(S7KmvTp7< z<;DG|hnJTRbkdBD@on%Df?L3Z`nFWLg+14lo2#}yJmP^d8~vvFW)RD?2R26ncfDqr zr@w+V8iYkjC>zBAzQFSjHbl!}0KbhLy5RVr;xlzCRcSw@!z0oTL830c+|<6xDb!pZ zg&b5w57;Tv0EifY*j}pCIt`6WkR1f&^DUYj3Z;tN#xNWW=u|&Di54A+c&K>n!svtQr-8fGQM%pBili z!!(%&)^U0W+h|Ukev(|&i*VDlK@ecbhnIp9-*2-+k2*2uVRnkyqeot=Yy)G{|C*(r zkfivy_jE>dj~>dhwBS^be{+>382T;iDk>sa9&7ibN;z+NHlP(g3by$~COY5)?L_uWWBs#9o|ULav{m!cIjXM^BN73GWur zmGe2jC4YT$(wG^FUvph*7!?|7Ao7Fh{`|2(js96s`Kgyti=T6h2k^$Eb^Zis1~sYL zDt0QRG_)@+zqm5x%+8t}OZQ!a`*w z-2W!?R-eSH{FmO6jTJe8vOr1;{J_0uGnF*kWq z8FZxL?LJ1_bL6wX44@=)diSX1(Q6C~&nwNpPPhLTjaDXW6-@(sR&jCegEzQa* zI3VN~dO;z9@G^*{be*)0csxT!F`zw_G3QK5Ct;vhxOL6wLW!6+8FG^QTy`n1X zE8Lu~-WhvwW!4t>_WPMCKITqt+U%BUC<-~RrZUA~XZhjMQ1Mq7dTOq!hxnW3L0X(S zC2m9P`sTzomlifgU-HP(iL}%NaU~u-9+mtFGZonQJOH5T&_!qIVFf2^Jlq*`N_U<& zo-=_u2>7|^)l4p%>K)RyWKFW<84he~ukYoA`o>+W+XItc{@U_NL~A^KkAs36;dA2p^ykAgDJ<`GY@376^Qt|i7)!q3taEC+?JL%EhuD5SFe=9dq* zkst*9&j50KRLm*UJ4i)s>x2Y_3~3w#IGOA|ULS{zHy3U%_m{&jWpjBxmL!x+K(!Y} z_LOJW25pT-r|qs8tU^+UXmA-Fn5!oT;A`^27zWMd+}5?t_EpBb11H07N+attvJd(~ zU}^NYa$`#VuxwHgtC+Jf4u#~z$%S&i>e4YM0)PX7dJxIQ% z%O8VBL-aSoT`Z_?S%{~>jK*=KBT79sxmmV-py@A|v>5jSMoy&~oMMsqP!?Yeh04rf zCxCvv+Aq(~7Eb*nJ0G%lW#M;A8mDGwl{z>o46b(uX4H01ue4{S>7VY)%tn`R#c^^q z4(^y~9oJQ%4=<0 zh7H9EDAx@%D({SYDguWUu8Ydqs^KvaQ*QP1as(OYuHUC)FR>hFx5QGXCMK8Scl=wCy-ibWb|=O4$0WzKS`pH1!ly3kh?4 zA))pW;mBvCZ@3XypA-+yLzqFst|S5PIu~?6MuO6bnE(1n=e~q z!WBb5U)6J^Wjb}78yMdAeiqXWg8)#~1M!!{BAAW-8bNv1k@t78AEMG!@s0&?7_9U! zkbK+nCpqoho(xL=vBrxV_3f!zgAB6erD*jE-ftG%U}I;=Pp~fwe|lgS@{ZWq&p(}Z z%N-#ov~%#=%p_6!`ihMfUoDvqWB8fdLC+ibm$^2muH{F>4J(F3kB+5cO^IZ!Hmj8< zv9FmMN~qpJr8LV)rF6ZNK%p^mQ4Vo+XsDg!GT1hPA*17WsKFt7&f@+{nm1c&x;Do` zb=b{U29nqvAy4zQ^AHXpnSXo*B*L~Vm0n3GfKT~ur8|Vd}{nk48Z$S;l z`tNKs6%seg{~eBI=SiCXMgthul>bNSsQas(^s87PSr#cQ%g7L78af)vGN4Z(;0rW~ zW#G2PuqCFmy1#jqRM4(n>966eajtu5dgY$<%-SD?fyB;2Y0sD^$4+X#EYQp(lxV8w zo%qw)k(`)>L6}rPF*>|)jxqLR5{D+_#BQHYJ`UJFlw_#SG-=44wza z08z!?l{Nj_r!J$zdJ@CZu3|)$Ihg{|0E#n(>0ElQBK-#filUEjN+}U;mrmb`6@-r# z>h>|ROv#6P{fD(wEO-^Imy;Y6tN)ywm`IbjHyTJoz&UsE9)O)R{uTx#VQ3iS($r-+ z4nwgpLQS+@)HAz+1$Pa2XvE}2q zhdW8THn1%uC=z#~-FPbe*5)q_|M-d;!$>oZe?J~Vp0^qJFa4P4XC@rD5}@4Yij zSQc@c$k#&+&BF9@duIrgE5D*@8jb~g+BiO!vd1{9<8&Whi2wr#VA@@zsTwz_lZ#CE zW0;6JsJvqQC41ly_y-cCx$!WBJ0!Yp(9ktJ!C9+}0I(#AeX8i8;jJ&Vw3C+(0ihiG zEm(GMuU{G156JjWwauHua`{x0lol0fu0?6hhy1Ccids;fKh`z}o*)zK;G9+K_)w(1 zNQ=9GQqzUY6(QwGSK9U_>n}%t-m5&fYM4$gs;eC~-nRIE=IlXZU8uhP-Vp+&pCT^~bXWg1{ru1*&Q1y#SF%)gk=*JK=?v=&im?pG@CFBm5Z|B2M@&?-B-W75F^G zIyRZ^GwdZWW^zY@uz84KKRckOU$vJal9LGS3XmfR^daQON?L<%$IewXNql7)_q0B^ zAA32fL5gTR)h?kjb+$akc#pOne4DDTzORHB_-Ln7LQ;jCaLf`W{04?G*>RO8)}>h| zzgNX9I%d@0L+>_}PUe>}INo4wu)?aPj!RSNa##~T8}TQqvm6Pyo3s z0_>B-qInZML3?@+&2L}FF9=CuWYaHCRj~Tj5!JG(=_O+w&!Q%EP za)W%Pzj?iqn4Fs~`O#h+{a8sTuj1nh1mO9i;T|bh=&M~*$@~=Zy*T<^O}5y2l1&ZC zg!E9i=)LuP;~TR$Cu>$|9*rtJSRUH;28ZA1ymvmPq<2;XvPQije+eu+AEa)J>V6gzNM1>|6JRn$ zMF`!>iE?2~u4o&9E~i&ySn}13q4=Hkv^O%w4=+khs8;8t15Tk|S}f6oUPv88fuLKn zxYb;I^cig?vvJsIQSiCaxB2f`gDn%#8L-pSu3WzEtm{@8sm{f8UY**vrc0wOo#|74 zwuy*v>RQQ)qFxZ)=u>n=K^aD|uETcsss8Zy`o^uh>-p|@{oJ+nt(fd0t3&4$!)C%L zZ4|Y&dm^YS*+GWZD((9^6+=)LHKwfZ7N3qifzS=H^G_ycA)vvNK}%w6W*O4#Is8G? z4!6KNxR*xp?SCf(Nj?-huto>W9A4T|d7(Wl?C4nF1W2R{#tfPZRMG|W1bq7DIl}B4 zANeoG$CGIHbNo6a;z34VRcA4}dNAe0u`0%Kpy%l|Fn=&24Gy2@VpW)^l;Bi+aMAkZ z;Zg8H8Eiy=FiZ`CRDnB=H1QpOo;p!dO^7!`{>IKO3e@QYfwp7O`r(4wN&!zW8m&CB7S z{;x)`rT$1!l0szyX4ezw)IYEM)K_K$t!^yh5q`UG%}yxOF01`Du%EJk zv@TZCo~E`;SFiNUVgxJ>LIV<~?$4edfWQA-Sjg;sc+E&geQ9G_r1vrPIoeImp5L2| z){A}zy2Ls)8SQx~Vv;Ac|KdaXNiPj+FgCY;)hgioW8!a+_VBXcpYH`&AJklY-;OIC znhvUe2~4=3#->`S9-kP*{>qcw=)1GOiKYE>YH?b7R><;8(OwzwC_@=?@)4$Bznk!^7MJ<7T?Q>v=H1TIboE*K9Jlt;muVS(w+;$`5 zan~8Dr$)2;#X-}o+XO&55nCA5|u-N6BOrv5mIa~1}+_j4nsQM$oS3LlC z8pR>XATQG7&>OgG2$qS^_2ou+l?njKIHQ95uXN@32l>PR));|Vf=>}70&$JOJ^}00 zxrifu0b0-sp*9#Cv?QuC^!~}}MvyEu$r?gk_ixlX#RQpMwWI27^q!}1WWbJF#<9-& z*hKXj*t=EuT;w_0s;|FcNKO{>>L?V|>{eCt6@>K(B)v}U&KsWM=(wUKF(;8GWCs^X zvZ6o2zucfGscB<5#4)yT7(Mxn$pCSY`Gr*?Rj7~&bXiW~CWrJreliIOvO5HY#tP38 z28XCANr@`}lW4jj20D4`Qv!xJm6fK#cCY|-cG8}%+e&CT=jcSOe%KN;vbiZuv*6>a z@J(a(K8ADFICeG+qSd@sZ0?XBrBfEmW;-gEdIj9mAi_U~F`T|LTOmrEy1_zj(sw75 z$m=HniA=#r;VA=155-d;v~w+efO4i_t^kV6oht<_H9qs?O7-YNzxsjv7;(^V0yhN=Jr2P(d&ph0`G9{lS;W-m+6?mMl5J383Nhl7+YT`La(DJC^mopYE=h zhfqeR??G78XT&Bwo^P46wg8Qv!TyrOHl>fTbh{DdY(Urcwf>Ix=Qw*JCp-XL|U6{QTOIjMKF^?`9x0LRS1PT*_( zX!ET;q4l@QrT%+iIRC*Wz*)GMf%6%lG)c(rFs&GtUx{Qe3+j6;DwNHCvF z@v?t@<(*-}^1|Dn%r@@Z`a7OkBEp5>=JiNOqgVI+;qUo!Z@Vmjz%k?E$jcp7k|7^W zZ1c!=BQ?yp87ua|WwB}5dfGOl_V%IvZg8qNQ&sO|`279xq7tAtdnU<)q^`PM)M${G z=@zYY5onjC(pq98|8>P}!Ut4JRRIl|3QkFykv>DX9-CyAN|LQtgFMQ9bc)=53nvWjepeO#hO=dmi)i93vI5(W^B;Z{8;|Zg(vQ~FZ8FM9FQew&wXt0DS|fWf47Xxd+yM4Klcd(|75O#% zmPdvY+)XCe-5aFH2B0{DOa?iIN*4TpIDL%mig_*Nb{Rt}GRJtPB1zoN-``J6_wOf; zEo?s{l3}U=OJ%T)$yd71+?ydbLhyq!k(B(uGE;RDKCly1GKzZ-tUA1Ww27|6b!}2+ zmBL;)8L6g&^J%EtLQq8#^!{u?%*Rv}CbCj7l8tbeSLptx zFsIv`Xt(a2ljY_%thZiCD`! zVirOe@T;h}?sl63F+pSsZjvd-0}uZ-GVuo*nZX*v+Tq#Z80 zKL<CPc(4{(amm=7Tz6;MEI{nves5?*=@?olsFCxt3I~mZV_ip$v zU|PdWdwYs#cF*U`Tt}nyG2bSmfhr1H=#5OKN@!jx3FdK=RKoe z+<+ML9M>2KrX#4EbBSl7swnB@kVE^Pj#h(jJ*&-UC50r~4q0#k8`pZNT&;rnp?4eG z6(q-Ph)e<5LvtXCYH}zT4tw`Ui5gAe(2HW4OWPx2iQW6NR!hfH(xA2mu=h?s)%+cRd zrSIsGfPm_>CKzI^G=7uPYhV4AR(Ll@L;uXZK`udFXIOT{4D0=_42ui!Mu()OAj6Yq zdg9Apgp?kk&4tm#eCltr5YFIxL80=x67;uDPbl3kkGayZVV(<}w@FK5SIqVBg21IQ z84sToaSbSEaUKwNT*VCeVCRyM`S5ZFq`IX*khcy4B=_Ysp_SIHInJ$=t1=WZU4lEi zA(!7Si2OufuMg{CSXJ5zMO9riYfgcCP}$ie zjJT|rwq^2yU=jw*Wd+9Ux5xmd!fb;QiDH5cBC1KIl0oxW1-_SwyK+ zV{gQ3WyZB<`6lo@?f%xnuPT}LvBY$*u zME-2RiH|AURA-qOHk-Nu*n~BYScjPJgGQ~-(E`r&8@?sb{CD8~XC99Z#>Sm!m`M+` z-}`cL{!)JPto23wev3Dry9A5W>v%8>V5c_uA-^f@WF#erE%xahibnCH;crZLw1Y(I?e9m1` zYyKp|X&N7za;iudw8NN>OR`356CDGfoQE710{BdO=}blHfzjCg?sV@o)}&Qj(2L2~ z)UIcaU^_0Tj$?e0DDRk{D*B7F>Rd@oo#f_~2Tq^;elWcmow|YSe3jR)9BeWEY72ge z2efW1!>CTb+EH2*Ja|S$08NW>4qDZ>Y^M1fO_s=Dvuw@bJ0V@4f`>8BL3kmcrnqOl ztS^Z0vo)%k-3LdK70QTM(#2z#ArueqVBrma_9G8DGrEoU?XUr?mgRv^)@u{_9ev;; z@Y+*K&nb1={;XKh3-a&>eK_bHM@yDQhqx&C+Eo}mMHi3l$0YmIAbkb=+)8R;y1C#s zB!YDB`V3tJB7Ks;HoA@0o&XULN+hiRceN_kLaN8Lc;coV#79{>!_{NE%Xtu`A8t^h>B zct3k#HOF3Qc9W0OQKhZs%=?~cp!iQr{lu*d8dK!ULBV=t{6pMz4rDW0RNFx$W7_6A z72Mj|_}mHV7S>BC58ha&ey^nVxXsbQ$Z#-P7Hfgk%8Jda(T#~^_!4Xt=SwCG>0VtD$?>bOzS5$OJ1d+qbNlN+qP*>iIXGDu=>16 zSJ=nVW4ETEORjcR6W4VS%^Z!mKA?yS>>F(x4q0lejC^`z%2zrjg<^;%8Jf$ zZcMW^_u#dQ!|cY2+St_F_nTW~7~cR!7ji*j*hW>6_DrPjI#6c7H44L)z~s^IA1*;i z$KD`KZE%3bPYM7Z%G97E!B!5g6yy;<1z&uY9%sT@t4UYbuV@$z%{lSIixp=wQjS$d zUi{MI^Jt!4UYJ~jw^LQ|cS6qb!&6@m@Ft=k-g#`u)jRJx@|Z0t?!OKYh=TO4br|zW z*It$9iR%J7ASI`PA=mT|*=L#lMuvvn-Zr$D?|Ma+X^ZaE$Sq#Cqo=1un4BdHAy{ES zsA)ZU5sdHYAnFlB-zdvdigDE=yv|`m>nhdPZRxU))uu(Nd0u~7d?2u;A#xdA`?U{0lX(uCyMAd zrDchh1j<*zyTiu&!me0Zc9V(N3C<{;V$tE|^V0869U2>QQJ?%bN7=5p_^;<3TJNxX z$_6#ZTCRopTWG=D=xG-1l|iQVuriT6$9qFYBkmbSJZ5>85*Hp?Q&v@0KfGjCk^2DB z)zv?2Y7M7=tg`8=YKw1(cQ-IRB0dg^U?RbPY}jAT8KlJ z+MIG~AUx#7W{JKw4TcLpn#u>QdMf3f79YPh)?V2U$cFX2LgV z1vJl(X_d$oM%Xctz>Obi6DqB(*bL$eq&X?+!Mb`|*3oM8A9yii)&-jTxLPJET>i00 zfdGXR)qkP$}Bh>E>^0O#Rvw-VsVM$hNB4lIFq| zBVy=oJS(&0x8h7usbqH1{vw^D?X*K}m4qoippQo7{^u49jOPoHP6k5<<7D|iE_tzE zF8W{G*EKcqlmj>0-&NxP@-IO8NwIHhu;yZ`WR<;aMeNg00)u9pwOL;e0(Lf%Ch^Z6 zzSI5oY#E>F;%M;r#SVPjGPNR#6kFXbN;6v?r#{vhU11CBvlQ+{p~h#4MlZE>bqwRg zUH7Z&&E22U$>C09&I;=8-F3Eu#>_w*ImRtGdd*r6k56ya=rU<4;afH`0Lc2EmtE#Y0EU zn%ROAappK%l2}QM<3MY_#7~>7DU^YRT{wWmAsEg+2TGru70(mI&ykoEAPkEMiCr7g zKAU1EBVbB^fh@;x{}f<{_NNC?NuD&C+{|TY>dF5DW)>4LWZmgl67O!NIxTsh2iUoVA~@-Y+H6~M=Q=7}S*1=9#}$+|FL z0|i4lRdckECAygNSEfe?$i@Vn@aJ5!bC>wtE)I&Bup9Gm!3|h?7~=QxJfQ`ygxw6P zC|kth`^T2cGs!&=Y?-xXr+j1OZt_PWMt^$zHxIf>@#&~7!*{z?0?w;T_twy*Tz#QW z3TOtJCf~XPQo{P#YdtInYM~LAO5%sH0;}wjFryOObdgqZVIHb9V0eqvveu$M&zUlW z{wL4*BM;Jdo8@}z!KGm`8tU;$qMZ@`)iF1K$2z|_(X|y{I%0Sc#nIP~)Onmp;mOLLde#sc0ce&NyqWO(5+phMww0{rDwV!a^Q_$L;i1Q@Mw>`Sk1cjJ_6 zg%))MFQFZlZ7PL8$P^!ft`cS^T!-sQ9-yqh&jfv^A?UqSgKcTI+Nj`qB@NqUfC$w3 zV!)s9Wn#7hB5HXNepS%^{lDw-^2kREgy0r5pgS|)%?unU)#}J7>yzLUWYLG9-|LM12)@jUI=Y@lHW%iJ{Gkv|r;G7P;Ig%McIvn{e`xc8@i`cQ5 zIQvvpI{fjN-NsZ?O#{lDD{V&!n)jAps5xD3v zvcvODxOm&2AWj;&SV~4oMhtHV^kxUwyL(s=V`9oH%G$5N-+qow zL7UyiZ|f)QXz;hCpV=CXlP9p;#=y!ob2P;;t1qiXc(lGZs}>vf%8g7Wm8PW(ea;FR z)oM=TD#`3-jfKdUwf*TXj5I(^*CljGm$$M(N@3!Z$L_!jFSBHgf1FfD;T*M^Z;=u_ zy1Ha3bJTIymgWl%K?x#_&t-EBC<}N6d9Vcqp)O(>T`I`e6I$F9fLH1_kQvhmWL|!) z?kC9RNQ5h_q$x>aYCM(lA&Tv-q-ktMawQB*h_@x0)$2Eq@7j&W!&HUSQlpYj3LEyL z7`jS(=BH5KW+~XRr_cNB%=o%SROW2(daO)!k&r`#R4({iCj==zha8j_s4AilN7m-9 z^eV8TydyD$fjV1t`Q=ZgKxpme7`$JQAPdrtxGL;r$;nO2EVEgM>N0M=ZNL)?BXRut z_&F>~jbF_v55>M{+EulBTMV@;RQkkry-GQGHCVB;Fq-hae=z5VHP=TaUr`I(3JUYP zMNi-znuVP;ym3de%j}4(a3>CazcKQqV2s%F5=c4<9btKiB`YIQ0HM?8DT&?(V;`K7 z83D=(IpB*wJJX`ck&AO%Zn^i1AqipHw)UHC#wz=?nkQUg=qfpn?U~8N3Rxeyn~Jmc z2l`NWf+8%MVcD>X&z8+CDHK6BA_>${B|~t(K}vQVb#VO9Hg^Mk%`w*nbV6E8`ZJjK ziDM!o2uw{4{g#H=0fMuOCVk=vVDN!%ffCJ|J~L(xF}Q(X^3#DKZd%Etr4f_zZPNzw z_X_7wq_R=O^6wP2Y{CNh^@@x{zMp-<>m>o~HTqI1#lH;KXZMD}1VVg-jdVW9jJkXb zjo1r^!n{$)w7=#RK_r%f{F<8I!<%(qnL@XJ{?u}~TEtnq0DqZE3^G_Mf@?VK894huk0-J_D1spI z0`rAYv!|l+qQYj=A$26={KN;8f+b=DL5|$7AOE+?t=j>|NTm~i_?I>;_b=n-3pm-8 zB!n==?tH$kXLB`olBp0iS0%QQa$Jzg2(Oa=^us0xh+rIyrEHL6#}AASZa_Y750pWh zE;6yHh{qN_^rKMKAPP6i~6*ZOr1A=veVoqlZ=8Y7i5X*u?^YWV~ z73mZM=UdbK65@ze*~2ZKsW=}iB;V-lId<;nw!J%#jkRqfFycf?uC3ed<)f>r1@W6D zlzL1zR9=&P<&Q$n`4>u4GOq^(zWYRxp{`wthstxKPGsn)S%0X<2~_LDS=7WS29RjW znyZP)j;{Nnhj+(?Ek_k0M-{ymg`n@2$nV_b5x;Rs9}IAs*k*$v#FgRpMMcv`^^~KQ zT?9B$IODv@fpBO4@AP1q3F>0P=r0@+08+C-b(8{_HE8}GMhfmYxBw6YFLnhrvXhE> zh9KiY+!rUkR1Rx^w^f*oLP~ofnpFUIf@+fB*_)arVyOzy0WClvPtTtXk;Kj0KNSRp zaWTXw!Cga8eLSs4jPK0h9GbsV`Zqj`14AtV1ZfZaQH3?3S|F|ImWIoqkc%_FVGw2c zpfjhb@w{KB*u0_%a_?|6<9${0NNG6>#90JiP_^*-dWxUM3}=Oly!QqA3T!^}9~7_G zxj!NvcE5(k*arg1tuZe~c8qUpNqx1()Z}`jk7s_$YXgylhc4gMd*q4rM-^bAfoAq} zzb(|fGa*f8(;+D>FT@F?H?;t@AXAKaRuv5QS$7Q#OX(XS_l?cgNZ|8+MfkYS44muJV zD*}r=r%Y#W?rI}7-^TVaZEl^$nqvhVF|$mpCZGtm4Q|yeUbB9Zr zQr{TtV1=5-DS|_n8f_pB@E~zSo9kVuwi6t=R2XY7u;&QHLE@4nptjnVExXU{b^I9accPZr~}^U zU5nLtwjvL#gqe$1iG)6oTI2-~E*h2FRR}dNWxky~gpNLCzV00%19g{DY?}XyTtKuY zW>#(tSEq$(y|fPfdF2?ECuyn( z2VJw>ivx2I%U@s2?X^=sBY-oju`|Mx!?Zh!#_R>s^QI43^cAShKmy=slDS&78BFiw zoLIm51KFz-YCLr;D^R&t#w>I5UY6EiIpCp-Lsmq~*g;UNM0~y@W2ZH-SeALjs>e#B z#qQY(-2Gx6Q@wNPXMM^+gBP%mB{B~-G$tKK-f0RPQay%@8`PFy&<4(GrjZIan`McZ z_3Nd50tB?EWf6+6#H|b~cQFcT!L+|Bh+GbZy_QHTWRu$1*V8l(3N}fmIZav!HRzgw zPXdbnZ2W2zXgb(_M4INe)C$)*^GMnHvSb}Df2Yzu8II%r%Rd3bJvSaEEVMV0MpGzJ zlMOGgg^!_mMLPQzhZSWVq4js1XOUZZQNSI#Nl?klXIP;qqQy%ji?E3TP!T~7rM2@u zKa<~F@g$OOn5{;s;{Ep`M?L20oj-RF_|U9%<`%Ys->IZkLbC$SB%59cCHClw=EUbv5ib;mP_a)zMVT)#S)U z57KfI9^SilR?Kk5GR%J^`i#U>Q~V?R^L$wDU`zXD`sg&@@u zF-CBni_5idp_P9soX_dSRcHu>Rb1(%Rm8T2hM|{b%z|3F<2F#*0$v+rmy4h9%`ZZ# zQg^C_Fg#{i{OC;it{Z;#2S%D{Y(^u8zI~5zqM>{grBO%&>CBofOM}~=X*D`GIP!`x zg$`(gJQXzCN9zQ05jk4_@?^FT#_#jZK7$1Dwk>KJKpk7N6u2ZY9t;6i`4Tqub>gY; zL5O=Y)?w3H6vulj-#Y(A78j8C^S{;le@3%l%q*#npkG$88Zyr4EdMgopWAqbnoY)I z3DQBK>;TA9K}759Nvw(?akw9Xw>9qFYc?YDDMu9Bt10(VDT0&YThxU)3bI7K@&NHd zfH3)V--PJmjK8*D4n1R3N6K*OgavW;tDgOP6^fDs_Q6}C7n>)Cr;{L$cZiZ$x>)JV z4z?+!g(#5KwHj;5ha(#lPi30vfQ(yzx^_Li*ar}`^tU5hYiHXht)Q0kwIMr0M9qwE zu36UoYXum7nH*oZV;M!Tir{yNGUD!MnN)&S{*0qpkp{W-ZN|Gmb=@pwn2i+211cH>yy4xi8YdIz`2F4Pn_>c~#cjq8(&*kA1f_CE}1lLQBN~b&h0; z1$-{+{~gdJ4r)z69aB^DQDRX03c0alSyt=%$0!}Nd?&I77O1EV z{l@LWKv9T0`0J!YVrUfgS?{kpUdHj(-fT0XdgB$Q`*dQZ&VF%P<{w5eAjU9Eu|L^q zTDcOq034p0XeS04)uk82N&!!VnTiXnwb>s)k3_FT{5z#qau)6WHn$RE;FpA;I>cRR z(P{{xv8Ww+99|h9<=Ai9?8^|4=?~2D=zm{u9eF9aQJZab>ZhwmPsBd6hl;?Zh zn^_Y-EYIHqSu2D^73XGDCTJ)WcFOdDu%f~i!ct>T>`N0)d`1%;!rn~Las-*Jr9(8t zXMZ$sq49LS@`D5=FlI#XoRHx?L7c`KMvwdsaduvK@MoYpwo2p=^^B6%O(1HaTr=2l~<{Bw=@b+ zVQAz}2pJKppY)%0DM^cS+pl|>>z^5vFWedDAfz1~&dC_5RTIOYP0dou@6cmSTF3u) zI{@SPA43Ol7EabwN2afapgC?w_K!@b^ROYDGQ^C`i~(f@e@+<+1&Kk%YrmkL^GHYu z#c7vkH50r-mhpVDFE$g4}Nt8HVHfFE-aoux!TSz=|tk}-Fq3Y&lvt0_Zdu!y?l~V{! z62{abGu#LLVAl8AU__E+dVGXMGVmc4m2Od)5>q-e4xswj%rT`01rcxI-t!$|{K z@GwG>;;$^#yJZfbf5|m03Ljts^aN?FNPAOOBnmK+7)gfHhb-Q8=wAlju*Gav;A&nV z6IEus7*iFK8(vI;cDp0jA z_#3QGb(*yeRjFqkwgI`jda*}Gmce@F>xVW+TQ8F58VLumr1CA2_0;vw?(J4tovYV( zyXU$Ypu&HdUu~fB(kb{|5N{Oz28ym+b2Hn0ENqr5sjxrj zY&$_zq*2;f+v|xad_VRv4+UW5btdq=5^jOF1l7}H z_J}3HZsOW2BX7F&Lbo){bhwZo=(+K(WTP*9!%BoQ-$RNNaz4EXEzj1ik(2WFS*Zbfo3v*Z!LZpo|Ab{o<$IG>|C4Q+z{;)Jt^Af=S zES2UlPB{94zWip%>CcLXlNQ$6#Mt%P$a3arFoF)du5p#5jExZ(n%qU54-L^~g!P=1r_Y6@&p(?PtS?FW z7tuuvOqH`Ir$Pz2x})QMBnYVnivS}gqoBKB2uF^m6kH|RSR2cv){}U7qv;6vU>30U z&PrCFD7L)0Q3j|9fSk$)c=ZP8d^8Kw2J9kkBB*Ua$8d%#5*M?DcW)L8pzF}36f&VNQVri z!s@nAc^1M6Qy5%&!vr9D8qW@&0qY^x34|dJ#^@?t61Kyu#%GOo7z^=;@!DTK&#D@D zQuR%e|f!@M0}2{5EEnyW`6+AJSA8eFSXP|{HsE@K^ymQu~-e< z@G#nj_p*e|ZSCNndoMp~j8;fJya0IUb{%BIBPqVTR^w>r0X&Hv2~ zgBxyZ2hi+y__##0a||x3fYU#~UJA_WxCwzkRZf`l^Kgwh+7S_2#xiL~e13&Aj`j$< zdYQ%FoMAQcUD4WD+PJ*Q>J1$Iv@#-eQ>}9eRw1(d`%BrPoQX~QqX-tF1fC<+_a>Dj z(SzUPlx488_RS_qDe6Mv%0-M|>)p%Eid255Zsyf%V`RWK!mUY5)Q^n|o93K#jA%~s}dVp(UN18B;0Y!r*GTr|&r15m@+ z3CYcwumuyW9DfFzUPR+a@!XK-)HSh0l@!^{9KIQ{$yhqUo{esrTt}zYEm6yW-VT_b zJ6`9{1`_z8?~1anBP@Q}W$Y$G2k3ADsUR$lBSG3I?F%y zWZ=ltP(SZjtQcpie!WeNhAWK2G1{Tod3K=dH3Mh?{UOo@Gs z1ncSu{tQtJ_P*bp+^#Uc3$>FWuo*K>3cwi7&}T&$&_}B=3-rnF?x!C2UyR>O_1`s_ zt%-%pvr6}v$N*Q&*W#o*rEicPPhx&7XCJ=jFEfsknpW^IaE{q15=ZZBw|r76)-L_dd|^2&>Dz;hn;xs5wymK?zs`nv*LAjF3s9(2OV&YDocD~m*!PN z$x3w_1SQr>9Wz2b;(xs@^E=RIa}7wL$?nJN zHvf1`HUQ9-Y+rg5;*5!^ho?Y^N<~%q_Z9Xic-gGTq;r3)U%HU;&X{C7G-t?Jx#Yrg zZ$&=1vuPI)YE~r1Oxrb&(Y(ZaQxbYj@vG4s0c9X~lXj19Iv{6!$EhClUEs&CV_dg%K3=kueV=sPi?QkY-4II{X zhxYUM3C@aoL&?+UfLgZ`hNkHL;j@`y?aZio4lV&-e-j-1rYiz5CGZdf!Mom&LP~70 zCMQg?1%gO)#t6FgfSA8v{-8U>zbn&MZV!_#c&6F+amGQxD-nuL#oP&+3c2Hxlb3^` zzbvF8c{uXF9Pa-C+lehk|L!cN?KYUd-c8WBxFG!|k1r@9fVP2j+gKj-uL|Xq+CY$t zEwtr{A>6Q4&l_Zn7rD{jHoJzgwu$E3;hPuq?7q{RaKudh2=n;dFah7)=Ye)X>pon{)z_0SszVj@L(SxH0G|myuDGPxRfHl(=m2Wa*%EJan?BuL&}u z1|MhGLEQjBkD37S7^Si=t4&1EgtPrC8?Upw3W?=Sy^X?(LNaVd%_wVVQ+TRW7nMb8 zgXu64hj6HEC1bO21-O_p92j-R!C?(s> z{_>mt%brV!lkm&JV#xVZ&9lUs?MGAfabH4gF*WaKX6-3mahCZn*n?Qr8~K- z)7q~zB&J8_Z?P&}IDs&JApsO1RtyQA*AwF-FAAJzYUNZt;W1T^Qk7O^rX$fw#6fUr z-~Hm=@5PQPJ@?&XT~aUGRqdlfE}Qmh7^Lv8g|3#p(omUp(zm-z>2K|dYs|G$9`lRk zaOK*OB(^G$PCyJ{$D2sSY7Y(}2BR}FoB*>@!nQGEv2(?b5LA-JekroNZkA~kCj7$Vjx;XDMy)!mpD~AuR$4m_#u5jiwna+(?X}8+ zZ#u%puRi#TPyGz8q^h}uO@>*k6zN?Z;m5k^q3Qbv2^~5G%VpR@o}~Lg#n8Ycvz3cK zzgUl%Llv;S*N#ob=+VD4>2_${v?YbTPb&M)kl8vMR5M=D(gITBdj&4$n9pyGc66d{TqER^yB_eyV__j}U zFGAEV`P|VjKg$MF1^qJ&c1uCO%9GeAOHldg0v>}Mf!!{{K<7b0z+srujgvSBAw)VJ+cgwbK9o|k>si8OAo zcFj7+Bc$uhSRDrQf|IuzP}5;_ldDnGUQE)Jdd$>O>a1AEYr~QV7+#W%Sp{C2K%s!6 z<{6!<5{f~MjmN`?PkPV|Hnuh~2GZjN zvpE`T-Cq;9wwk%|J8k@C$iIR7S9}$arv7c#t)acIy5wWjuuD$PeWUq;v8h zS@25}Qjpd0C4g978t;SgI25y2Fbf3^yCo)QOawP|_#jM|qBMw+J1c-gF$)DBFjP)f zi7t7Fu}mT2Icyw03~>2o0s;l;nWw1#-83H|aJ(cCM5aXofe)9b0En8x@DtClE-f1- zaOr%=!qN-`sxm%5ew8VDtr&2P8!sQ^NoSM-6JF`SsKfzaWWhH8$z)wrs3)TWNkjs| z-hujO2aVGtuof4=izVzu@QocN6$%XeXkR5|Z*Ye)vJPOaxYHcs1-{j$N+oQ|QWYDgA#i-Q0bryN(>fPSH&bTpI6W95px2d!; z@hDT_ax5f7qfA3^gqi9`7rfrlu*MzJR=jK2OzqC+GkS9jE0AeB!o%0q&(DVr8O`JY zwlL;~8$v2xw^r?(*3{|Y(>=4JUv9)Ry>AY# zJwF7ra%|NnAEDd)7^EftNGa{?t$mB{YF=a^QoALv@LSCky;p471J-~0uFs=MFwm_` z7HVjXQqO*E!a zNigDnM&4p_A|e+{X&2xqwdB3LSv9>^ZI>D&inY3?*<4qxg?H9ne2Y{yAyNL_o~+XI zZ2H#mrix;H8-&TC@;JvSO5bCo^h?KQ7W%YiCfvt5F=#ll(PNqvI#hq!HR`odefb0rAcV*}v;>`9L$kVBL=kB1*?at-$W_R?0gm-k_}~9SYufT zXIb!7LX)V~5%-LrrEs*v-}}9IY^&xORa0o_fYpfp!Vh|}DBV2Od7>~i=#&OIOjNU)KdTqE{w)TBN&r48k3lK0Vq9pbdMHDHs)^T`kUJ2(Mdm4km9MK;X)K4 z75mkY)IPmOnSRD!fCv}0*9E$px$(!^3k9aZqi_*YFY6Qji%~uJ`5o{TqdIwJvW6Q2 zkoCM%_jlOuKr}^N! zZ*;`9Obct5Qds(m)a0>zj)7{!Df4YT&Py*evf*a^=|f(b)?v5Z+RCzgASgpbi^Cpn zUSf>q@RiSs*zE$40X?13BiCL)vD(MstPE@OANgijrY7@F(DH@gd+#LpMstgN$x-BJk?=CT z)h)w2j@P=MRmW9@yg_e;7h&$kDlBevLf0i`u^ya~!oC*Tbyz(PPMcI(gOiH3+rvy9YA8%2%xCssn{6aW!KsygcLGR_$lY>kqDA(lpsv=H zV32o@e@Ri_195&OGzJ{|z--VTA|K`A6NByUaDf6+Ydf$&B0Dq39Ir3G@rO3Wn=JD1 zhhlVscftH3y~j1T0_5#;@2@pg25Z|tqL?^Bdygj42dG1pV5sRjRM+%jZ!kzL4?)c8 z#gtmgdLQ{-vkzl;H)|YO;`w{ue$R0e3yRu-AszjM28v{mQ5#7YwyiMPe{0fsHcN&A#3j9F22O0r9SDt+#oy%!?hqK24V&ei40+@!bq@-lFYTia+lAqn zYH=zXt7u^vKyY3{sA_8v`^K_u1=K)1x}@=FPH)CGuB*K<3Gi#@b0ldsLp-}>zNAP} zG<4Co1*5?vx-;A%5m*}M#MQ@QLNGP7{rB~M=uFfv$!Y4YJSaVIOH;-fp9|s3 zqx!my7X}o7M(!(1H7#o==Q|d48u+c6(A=gnIcc19;ZyHCqEe&jhky>n<#167vOh=< zvj5yBF1x*V+Gwv=5g8sU0UAmIY!bkQKvgF_R%Ac{Q6&{z$K!cEYQ3Nr)1;II3rCEMNksTFM0|+kV&giD$tn zj;_qSf(tN?)QW#yKJ_1+ysH3r*RT_LxX>$nONn4<0aYKuUp4VsATnJiSfHetJ4Q=y z%HEoFmzKRM%4Ps>;(Q&O^GXo8L|4^399J=i`Eh8a0P+f)VL$?A zk$5v6=n}x9Kna{KvRRp=QuQCI0erZ3XLO1{1bc^2JZa^hu% z`2;0*7@q0|?LUk4EjlaqJf?<}w<0Kk=b@K01+M%?wW$8)j9zYT`1de0V3SGM?&&AL zIc_S!_n4#N&BL0q03sW4PsmGZL-0#Nnw4OXfRnByd{|(?_q`-%dect!aJO_X4VqR~ zVpQ_n)*GuIY?bd8k|b+!Pp_1bq1_tQDaLv=JC%{%mkxBEG{3M2M@W}TJIyO0nkxJa zwj%Rz=!7jf^)ifX4C3}+4mXq_?i9BfkPJ_D7t8{u?gf zFbjFNK$a$`RVtNEE3ZcD|1}*GLxquz79Enw|`G>Y}Ea)ZaT9OdTzK;Q`?}Sxh-#O}4@c_i?0LB7)+v zMLl6_YuNwnB(=%sFaxb6-0GvlquwtGa+E=Q*b;gP4NLl8-gW$E#|zHI%=JI7F^kpP z?eJMpE}rN#YvAUbuT^nLSauo1dBuY5`Ra_nW5sos@Nz}E0qbRtvUd@>^n6`k?- zQq5z8UyaH=93IAwpglbvD}M>RE#m(P^=Rc+igj>tdhzc2dUx@%Vlpvx@XdgYWpd4g zr`QF{v^uU7xy^`5eu;e5^SOu< z89Dnx9SknG*}cqG5^120CfA~6Ve+!7bBJ>(F(#UO1ob*_QBDFwcGthjA(VzSQ)lQtGxlbZ&0S4kJ4Q=6tw#a(?k};kL)IK4fKR)Bx~ab zyMp12t=kD4-?$f)=0D937gEHIa|2irF0xxdNzZA|CU`vTp7uBJ{N3;|xoaw^4-8=Ts(gp_roPH{C!6`wtS#0^Df1x2DXVKO8qjfEwH^_0bt8Z#Er7wNbW zNK+{sDhwLjJM~LL7<&`(08X62R)_l9V~DB}R3XKL=kC;3}57y}0#v4dcfxh^zC;^X-(i(7*5+KeODC+L6BMz`FBR7hes=!=B1q1y1`VjF$Na zBYz!KUodi*0k%Eyf)rcg4?JSl!dF0KRH1qbK>}XuXAeA>s%-L4+vbJCZzz4O_UEEM zw^;hOnZ9fHGWe_a`{ySUWSjq|BzX0!??A08nM9U#IAic8$a|Wys9~P9T`L_P9o{$_ z&di--`_(NxSksHbG)hPdGz;DnnNylpA69Fo@5lY2vlW8u|EEH0TL-Aw)tRFrN}{2c zTan-89gK(6_Ba*=%@}r+7xL{l^>@$#CK(K6ER-e^P707GZF9rB2|VrOq}qq{VXBGw z5$bW_wX(iWA)*RhLX#ZLVgd<`8I;|z;N0UN@lBC0} zafSGUCj-4x-HXwE71p+MIpKmC%v2skH-28|51$;>y!~2Q;8ON4=Y#NDY~k{k$qlWR z6DOIZvgyC3=q9|mj55rdD$kTCl75q?fPTDZI#hgSG-Epzl=$$ra zax<<{1C9`69?;lSml4Eqetvuau2-HOi0UL(BF`auTK4Wrj zI-MdZR4CEsQ`Q2M4@P#m;4iB^cHDhjMbbo~FEle`&5XVh#HhwEwyqTDWfpM@PMj zNSQX#kQ?Ja9S}GV3(vp9iXP~U_k|7K(fI@o@}~SfT$RsE-(26H#Z3SYkP|Tvz>p;V z?9tw+TQgk)xoE=fY7vskWza(VDZtv#=>08v#|uzs&^HTXN8h;Hj@n0gw|y*MM{}Y3 zpAtv{Fq2M|mtXr+_etP82od+gGzYgAzfMXO0Wqrj+ zg}ocf)6J}YT>Ck=J1@OCEDVT$RWa8Z^_9HAUR&$GBF>7nA&Dnd)>MwOL?V%9q<7YV zGr|3;VhLP%oSz~6LBe*W5>-|-)|Cf}+Ey%06dDMuQc>>CD6C;&#=miP4cbyU$I0zy zmkOzf*}uZ-6uX1Vv!!<+7x>c7ex?&nx%HnTnIZKhk>bGUZrEkbUNn_48ryH)2qGYl zRH>6o*1NC67r;~-rTjlsy;F3gZP&FO+Z{XU*jC53ZQD*dNyWCEj&0kvZQItL`*}D1 z@r_Y?SMAkx);iZ(a~_i{eF6uqvRiK|C&DWsg$!r5@-)nkTm{&jC;OL@L@t|dN>bEvCc$|FhSoMnStL#_ zU%SwSSF74AVwmHVcP9O!~+GujZZ(EJC8M)mwGuVDbNj$rFc?h3V%e#%uzawjbk;mErGJpp*^bhPM19)VsvRW zO>{G-3c#on+gPyl;~gSitEh~nWP>42vqe5rSV@J<>QtkSd`45rh}q1>TbZRQ zD&N)=&iH{+(1)lG3#O>vAsCiPBXpG?;0Z*605D5eC?9Y~b^Neqfx^$eFt95Vh)&HY zPKpet#sv!*E*DKQ|0$>kDI%#UYrPGUG!Y?DJW5WGGHxcDJqlQ{RW>YvxXh$W7*-~U z;x{Zw+WswiKjKle2!q+cdBjr4P%~r-6HqCh^g*Mx@+1uq5G73uEg^qXX+Yr&k{O_|K z+FXoZGtwAad?4&_^9?5d2CP_-cs6E2p;CB3;0pYg7UU7d&pT2d$d1_BM1b@W{|2wPy zmxcN>xcNcQen3+Fw1zTvzj*#zkgN09AUF)~U*pCBg{{N#5C*~6Bs35<60Y4j@_)Du z>Dtw~vfH+y;c_&{TJtf-m<=&!1GO9W=uQ(xZJYXw>ig$9;x_23y4&*CJWg7>AXp1U z*kS%u-FM{XEe0YMx2@S@t0&v1?Tf+Hiw88%qgHnFl~n+#5N)e#um)jncoCcRBF*}% zAR&Lf_B2KbQpRDjX=d%@U7p_B#Psymgl={eBj~}{d3+i%nVh~Usn~Jatv_f~+-mR( z2N8CfIu!8f{5yXLZQ!mhHa7UPrW;{gQvtxzHZ$a^AfgB5mfc5T1H!}39IcbR2uy&g*@+G{%AP}I|1pnL9D}#whb|`8^%45JCF<%CM zN=cH6?obJZ;-|bjC+%ON{b_i3dK6yBuD-<$)K{cN*a6*UsHPB5EYc5-zFxgd){!Mo z4VRwigMiRjAx_YBs%fgfhMcKc)fLSEsWo^9D2T8L#jjfCDzGoFkG~HdRRxfmSWt?0 z=mBzU*WRCOrB>-DKBey@sO^74-qoj3@F|xg*Oo(~W>HYiNs|j2qeO#>(0WqUwC8}% zO}^fmp({eBnE7=_l6`e|R$&Q+6H+qu$-1)5W9=94P|CW%(VTI%rXuL%aMz5`hr=U( zDcTTlJ`K2ce0n{e=D>+(!XzsBnNrR09s?jKdXewT8ZR>6M$l6CdiUiO;5%cAiI)@N zGDb&iKBsuHVJIcy*H7xihs&?oKErGZIe(ecJch69)Gb)Bq?#2Pm5?#5H~DU`dsIdEP*L%s~uYDc-hd{q6lZhbfT0nfhes69+)M^^$+zRvkra+rajl8+qYtnN| z7(@%8bztT(f6Y|V>1H%I7MCo5D1ZnjKa07WEH6g|iq|^HW~+5${~X$;ck9#Vm$H&T z@&J@ZUGLfdEf(%guxmF0C+B_2ixFI(d6y1rd`at{`{QaD1ROii7E8hvT2uq6Xp<;u z>lyOp5R_;sJa*#UZ*xPAB|C>r4&_f0HS5TuK9G!z z)#x3=c&T002*)A5&+r~y7-ub*?>sA2tO|grE|zM*Hop5kJg+0Vs4xDoT^;*YI5yQ<=yO2IW4D3i8mGJh3tcs(9x(x4AXZ;wlFF2E&c)(h(& zSMki`E+7=I&4H*JJKn?b7e)63*L@ccm&{gM37@z6afFvm58jT(kxBSNFPPlH6}(Q(6VYK-T#7MXE|YN>urUDG7zX!MsG=StJJQv0$^BRv zfYV-FG{UW3dp5!QrmbVM8f$vZ%mcX3mWBO=>;fK!TQue#6c>ZdfGsXfcG3fbE(2;JmAwV;|x! zDdQ+i>rtI?)su(6W+J=}UySRVsjmjNs;Rhw7WTFK9|3zl|L)u*-gfKB1l)U*Egv%| zV$IA=GbHx3T4Rc8}mXaUYc*r+T;#7Zb*X=YtKuMtn?)wonX+b8AjoQlYhy;1`e7e>K>*3=88a9QKbfT zL99zUkip(;Xcfa88Tjd{mkrQMwopY{m=IQ4y+EzxF#xw3!i$|J?9INQ(=kXE&YoJm zX@W6q*HnT2q`T@+oLSgY9&(Q9NC?@DTA*0T>(Q3x_`v6!bx2q1v$MS@yUU=wV-WLe zet}|>(nj26Rpb@Mf6^dLS@rMDu-wvas3E6xX>kp{2vcu#kt>r^rss<^+fhpCQsH7H zQ4DI<%YY2$CS7h?wHSCoReVxD4NY`3Z)gRpv&dLfwo2X6@V6+!3SF!*IsLZ`n_OD8-R?k_@o}`BL<;f;=9RX~tLIcA$M_dDz;)_^xyl=ArzHPSkM@ADCz{1A+>ca7 z>(1lQ7341v71d=FSsSz0H7Z-3hLYt|s;L;QzSog7JWTg8%sBJPHoHhmp2pWzSqY(q zv8&w8$JMFzE?U@Q?NkM^%N%n<3@?ZI0b$U77{S>F4_+9l&!WX$g;MG)^@i|e5!Qkd zlYas`kz(HduVnrZ!hn%c6U6waQs_=W;Q<4VFEZQd7i|1?GM$|*0=p}cY`#YAU;GL* zPuaG@{>8K5|ley);Y?{c?EDfdu!m!{>xzJp?VMs@xjn+POzvJ9b_?Sa|>bk z_=kNffGrXg=Qr|b$(eB#+*(8YccbFTD)X))^&Ks3vbg=UX~jb_stlr+!rdQ|V$iYe zuO_WSInwGGQ6w_zw5I=_B-mzfu}tkIeP6&tQ3R3kx{ABIX0`x@m1$22GcI6%4VOLU zU_q~$y?R4MD#A6<0IJ|%0qUxLZ@CcJ+zy&Om3n}B1e9zqi6mb=(PE(@PV}(k=T<_k zWX=AUJz`Z^yReYS^YwGO=4JSpLDujjQUIX2gJ|R@Z3E7k2tw@dQ4k>I7K(5XLaW(O-VYsGn$7|6vm8$aDPz%p zu#;m~Y>m5#L$23A0s-2=qVHVm5$da_)%y6kvEV4|f%bOl+4-U|A0KQ4jH>4!&pEc- z)j=Pk$+cav^lII>!uP)L%6Fu-B{VfgoA04CE6G^?(eYHH4-Qz8b@7#{rR$5T&`uKG ziwOeK)N18H2rt4e(?X~a;28qil84~~ZfSb1WkD|dr!}IES4w7Z$ogU@_baVbXR5KbuBH4Vj z1BX%J50q1%SpYygJxnU5gE%=HA?7QP9fa8>o7?WgWnf_zDgbLHN~ru$+^W`ROiZe9 zPKqYAm5<5Gb+-yMU-yfdbN!DbdcQgG5*pVx2Ggfu1<_UYg@OrRu_G0AX zip%!6g2!rUv9JdG5O#{xINK+R>Tkg^YgZrA!6=2%xAqp-M`N}Y`& z|58J{Kex7-v?ou=>a~^wOV+{y1t6|rpf27*A%siI-@-&wt=M%E)r*n4&Z9d@!1PXC+}?iKF`#<8;ZpC6kv=|t zoV2$5r5FPIN_=5Mil>gd_<`d@ta`?|)j-iv4DRLx=r=zeS;Nw6-W6N56KX!Km;}8G zL1zkTOoo3LU>Ux8$FzZX+?A6nV(8IKR>AtBukZdh%7C&C)f5(pj;8)KoN zDs_11&Pr>4uZG!9(b$ zd)B`;hCqZ}d=6RD1H&#MFHJ?Dk^bR64^oQp2O{uCUx#-*tdNq(WY^fq!JnHyO6yg`QA-j;G7p_t;9N2*O{jKhcTZ7pqh~_oMRR z;D2j9N9`s1dw0K!VhL?|J8dHwsh(E7Fai8EW3LBO2Z+<55=21*f%cc36ef}*xE;w_ z2=)0aJgZ88&~yw=LadY=C?^OlM7842wBZ3U#Yr_K#|vISnC93d5XTFjJtZtX=Av#E zPL(W9RB%y2lbM=Q%YUGD`J_9Kd`mI5z0WS6Az2+1KY_V&{NHBxdz|Z!f2k`jq-uX- zP8CVDkm=7Fb2Pxuv#sBn1~=K5bv~JfG}+{wR_rNkU?j*sqTii(cBbk)x)Ho1Xs-Wx zlPYl4WGkSpw7xpMma677=kTQu?zS1Dmv}?+JT0CiBW>2&{PXtYD6KRsl)28|w&W{y z`vLmlEe-jEQUhe{ex&Q2$7&}hxE0~?B{3Up`glw0O}G%wgRva8 z$b=5{B>i7s=HsqL!>+t*hUC!k6ugRif8+J#q-&;sD>QCsg^jFTK7~EXc(*T|JwuHY z>-R(+gZOF?wK`{$o-6QHRpt#w`|YV>H_5E-pPV;Bjlb~9im^9~GE8^o@&JlsCM55y zIG~1$U|k75Q7N8AC%w{WhZrRz(f??;_>viXFm(PU4bRXzMI;>PXzr|nA@fa}7y>YI80C*Y z^IhPpN>G;4ycIZQoQ#(it9CMf2XIwH7jy>xKDVFp@BWjNS+Cf6t?B9&yY9EKl6#|T zt2>uN)N!s zFpfP~#nLROG9G_SlLokS^8-#eUd(Z6`U?-MXRf>36>v-%X zR6VAwDyZ`FUQ;LU{i{)`^)lBf)|cp)I7uXnLiRa%1Lkt%B7r?r9kUO5YtRm&oG&&O zA-@!>0CRI@gbciZ8_3q>jHZNQU6Hb{oqHXD4m&5M_2@a_WCc8rW|y%q9LJLu#wIs| zBWt1r(F(BOr7H!xmkJ{wF%W^asB*WLa3L-}j+IfFG!h!l%N;SQTUM*AgRT`v&16<~ zJ784N`Guk>uE~l!nTd$oYZL0q_kTY|0E;>h>15P~@k9cq=^@m`28eJHJ13q_T~o;3 z`Iin)=yYb~wE?5rGADlhm82=biE*&VH!Px15bgBRWcT_C{xG`zmH$!;2aXCco$0oR zUNa;V_CJx;c5%P5yNr!I{S!}hc+K$S;M$PJmgFK$*pjbi2t(Ch&;4bQ@1tP|zq4WJ zkRhn~ovI&w$tVQmAjW;eDZ4`i29H2_Pvzhm_G1yU?ua$6le)JO%Ugz?737a=Z17no zsSnW0Aj==3Ji-qNz_`4E|JN6=al|42!~-y}{Sf;p0U8oc=WHndv2S7nl+k)u1YVd} zl@bcbl5pc+jygbT1=*-kN_SCGzP+(wDdU6DwPX)0|{w`w`un_xwj_CHtVj7hUG}o1OR-DstkDa(q5_1L_g( zB%>IJ!o;zN`}}O*TMZdFWKx9{#|wTyulpzf2q~vf32s5@Sz+Hc7I@DuJlKsYyL-cW z#zx9z(^eGahs~(fbeDEbwRKxHwlAeEBuHQi)!yv*Uc@2Ye-elzaojDGy>Nd^KbmZl zgbPDKTYg>0*~;>n-Rt^Nqj|maP(1wGQ~}^h#-c0`9Cr_1r`G<{S#dlPLiyb*V9Cb; zAVAb*970DN;2TY8-!GyEgGvdXCPeCG*;CFTN9x6tRC%KWBc_Or%j--?_|=XAE#4hM zb*u13%CDi#JV3$Y0yEZyGPDy5MeUx*|zAHxjsNsblZWfIBg;7eiT z6${p5g?xC%EbjXYTp=`@99WiuIMWLT0BsM~SH}xX`0`RE4I79BxRxN-hKDBuHzZzp zw0pOi^-or6q8KC1k7%l+?J_^Fps>@LZ$N%(YQPDshjoP3^Znyiv-2&PDmOnk&9_>t z*+G-5u(-a#{@oy>)cvN~Xd#37eKzFM)y+coyeW%&;^5zsT@11`6XCOk0MYXsz^=7D zHC8j<#r9so)&)FekX2C9S7G@pxv@A?hTA&H%w{RINkA9;m;XsGGT0ulT(P8irt0>Y z%^;^kKDkdvl?+6NrxyKW1OPf?9YU`I^|Jojwlcdz@w1p_I)YSVrQSqq8?9u=c5jBT z8+RNLy@Do}q5umvP%z*%>S*T_fIBEo&~V-5Fsz-lN{78mN-~^B&~Z1{?$n_|*1|CC zsJ@ba=PDtJ1UiP;-xWneq9e##@vB*vN(aL8mgy^%r7m750Z-M@On4kE&hjBP(03EI zb)*Te#|s2?M+p9d`}h^HSMdPZ4;)Np%Wu5X*0JA=XIZ%|;9Ae7XH~h8 z;B(j#)Ktx;-}suB0cvB)gJi{7f%oy&i0qCk=mXI>J2fYz-Fq{`C?4^sVM?-lJ%4+g zy{rzf>YlrHJW~t&U7dOCD^31sIEb~Ut#^nCu&&S~ej1PK3uslhIWkRfSzodkg~lcX zK14{j>A}eHK7lFB%#3h*<3a@M~*w#u;3<8+-48 zJr9j4?l&Oxy)mW|ooo)KwC8*YQU@4Rb2FGNAxDj{WK#2eNc7|hi z$d!bN?%|o{wVqr6`yoVD5{qU#%LBM*zl%KJddQCG?G$T)>2d5q(lzSYOb`^zz%UNL zc32|x>hCO2YWj}1WFmYw;BJQtrBb%bGLUy_oyGIhmoAKo8%C3{CmPn;D_$Cwh)9Y) zs4DHsG4mA=)Y!R{UY3laJ_HXv1FTcGraW=t=AulRMlcuf1msV+LejzYUVT(*(DLuMMpn? z6g3PWC7>wwz6zQBmo-KGuN$`2asbA-@vwb#_RFRbJOvr>Yqjg`wK{sYEetN3Q~x1H z#CB>^5lnppz&fgKbR93&p>OLcyN$fOQMJO1kHkU3AE7D^Z!WcEllY7T+`*%fd*9u?I3VR-K)wMU7z2c$X`UFVhQ|M zRlI^|_4MMQ4XW&2MR_(Za}p;H=>%H^A!_!J!ROi(SsYYdZ?HBct+X+v+1cs(OHr_5 zS0mdDu%#`@?}yv73S&{V&-Yj2Pj@dld_kFUSl|Xq;Je&9-xs1SkrDId9Rf-$X^$Q@R(wi;-=lE=-gH340j&ujtIk0 z0dA~Gf0B^)F|-#Qj+@pRhDWj;NyytP|8yckFa7cQTtVn(y{|`6<%8l2aq5A>^ub7L zEp1Eq!AX5~AqiT=Q0%0|ezfY6;Z0$?-Gck|F_rwpG=!A#eoNk9FdcS>Hl}kF)^nYsQnOk2Gz%H zaoLeNuGMZ}TP`5mCHQZM7@cADIe1AJy%;V;ka}uBq#!c82BM}pOV{@P%t7h6AcIERa`e&En>D=Rl;T! z@i^qrIjlx4KdwfD6zvkRaYSVSlZFGGDEUQIP3M(;O}AnuKzO2ryWq3Fu9$w;U^xOC zf5=f_g!Gj$;q^})z_~45mj6^OsAE+b27y=HPCKjX*Rj#adqB++g|4?0grzss@Glhx zgI60?)(BGE;n9ezSnibcgnLNF4X_ju%1*FcSsLc*_wprU(-_xy(j;*MYNJp0z_D#5vyywc6ZU9NpiWWI4l0*R-N9!JSc{!g)fx$Q-jyTSE5d^btp2d z-$?de^iy+_@pjB57kH=x(7fWJYM{cT{L00LUZAPtIp_W(P;y`p zbL|IlT5iDsXPK-2Cv6!DC1nuRD1tSsj-%M6Sh%^kX#365d2!PWC^)wGo}ca}vFD$m z5r2Lr*zWw>`1kJMo?|ThB7JYfX_bX+@xI_ z__ukPLttyi>*MYOXu;z#*M8f*d1_wX-t>~B2Q?}Yzy5%k@A&dHn*})U;M0uZ(}l;Y zO~aSgYINZJIP8v3e3&zrvK5e&aQ{x4!zkf;s*6g}?r^9raaKLxlGY;)06?D^{-r?F z+60_nK+a+WoRA9?WS2KmRuQi(9C_s>8?|TdrgCOXyw*Gd4vU(6g$6ahp9C(}37ZB9 zpJb5M4UyJw_wag4&y+GtOfQ1<$mRz7UPLji(=cEHK&Rpv#5jzb73j8(TQrF#K=g== zD`gxeNbfbJUd!G=q75IFA04>crJo$Av}ZrTLS1{!sp+WsN6|bO!OK#lH;(ynsp?oi z2^z>(En|cLmxXJ;=q&+Yfr{oq4wg9}g(IuFoxpqiQCSU>ehW19=j_*gB|2RB-ref& z-J6*|-xLloC$-AwtWg~=aLR-+xwb(-wQ0?$2I3qZVgPrfZ^ii5W*~sL@lw#imFD~< z-Nl_+hb>JhwSERsg7+xkjWB@Y%4_2adx%`!AEOLtut7u9QbeszZAw~DBYpf;Nb>g< zT>sw7^_ydG7nibd(r@;{&_;>Stz#*a4rrgnBxdEHThh4E?svJ5hjAmV=o1tseC0tM z2r8=7FFjyM+eUgIG@iN7ySg_jnesO_q()u*P|FCv5^}QzbUQ&81m%vmtm;8{B$2;Q zCoUkGsQtCe#s~+BjI5J>fhs9MjYw>)?;jzl-}cpY%vp>0vl=#y^=l67buXxcT#!TT ztUm*3#=fm1eidBQH(c_S&z5-*2Hy89AC0$oBa$kdw|hb3Z?K*@Z_od=SnQnttzLlH z|HJiA0w#Y@9sk9&{1+1diYA1x4Y4NVXFA)-nvtcvd;T!vT+^pXQhx zolXABf>jPk30ENPcv?cR>~3WZ=>md~HxKZn)=SnHkB{EhR=9MJ%Bl+ZvSaT4!i!{} zh_-Y<@?Vlg^EdY|{+n6l76KKQsYwaA33ohWFiTSS)iE&Grfyfyd%7JAYbH>I;P|QK zOf0i3%IA&*l1{!#JQW_|L>U{*G@qHOi+YP@CxP!;apzFye;yMqyO4(!9Qm!}qbx#p z6s~0B@h7etntBOrR(t-HErWcpH5EpNH3a+nM|0|&;)+Uu4(i;Zgl~U*1-=jP)yWDe z$Oxtaw(}0!o;nsSYFj&`_oj3E)}0^5&iLA=3k^!c+Pd`DR;=2thX&DwqY>?L!fmcs zv$(L&PgOc42@}`}f+O8qE~b%UV+Ex7-ys^Zl|D2RgG_h`Ruru?y_trAodwdNZo zxc-L8q#F@H=E)Zc7@PbmhZi5JRTf+xY_YHyzuk2-&szlW$F$(Xun4Ij z!jrkt1G~(_g5JP_6q*#z!GB<`SpDvi4>K$g_7F6*BLxb%Ko|~}D*v^#r)mIES<4W_ z;2mW*EGxD?9IoLu2H|R#tG#J)J-0_W{e-{#ib`IlGE(0G zEPUF{J)e(bFk~3xD&!&bvbW7qjtK5}LEq%zJ=^L4N27@WyiN>&;!jhW7D6!M0U0ko zs!FOo|3z{;XrX(*%?*O}vKyq5H_LKbipoEEFNdHaxySJQ3`wA;f%JqcfQ{m%1D}Q) z7GDXNIU_}9#3aj;h$FX}2wV&nn{acI&~cN#yateqIRC|KAMq9Xe1juxp8)lUgXBT+ zJY6thD~S+(5ZA{|;keaK;GiB>6Eei*OpEQsp8d)Nqd)AH59?R^-`^DnM=~ZDYKlM< z2vq{S1`NQx98P%x&h2PM$d8O)PRG&7zpoZgtujSfbw+3waBW^sE9Tl)!%yFt%Ean* z{~~UQ?>C86GY-sh83U{c3y0;ovnFLa>jXMNHr{&zv686UW!Cdw+yPpfu^@JC_xZTtOLtQcH#K^5E8 zaKIn@B1tKsc%_sY!i0Nb0<#8`DRpV8O7*f9@<7zMzm-;Cz_bIj0u*Xh=^O~ao3rNl zzk1AK&|f&3y*!=kZ{@)buhQB*;RyQ{gfPa5;Qplqz@-oEVvm%t_WXli>E9BY)+tF0=J^ZU#@ZdJ9^s_uG5 zrAgf2vKAscAMAH*6e&<8eML%GWfkYiKy{H*?O0o2oVQjwSiKYyDOUz-Y4#uBwg%jD z{&_l^KZF%?SzylwB~Az~BbSL?pnp$FLcLCHP+p}SH@k>_@F5x<5>zQ)j7w9M;u=dF4$&Vq;2$;!t(1}2UZ9ZK3#cgJRQX_gvdt<^+NKzzovp8z zQXD*}2)7uCYXsJ9BSw%`xpYHG%8JnS5TE=P7T3+el zs}`DNbydaaa3*=yn$3rcEdC)*UkvEt;qd7R|7QN(cKeYR28=_T*?7*EeF}M>}s7nFu1fnhbTo%<^_8X``kh|sQ z0HXab;P?mb7l-o`YpeFhZe1Md>XEuhTmX3ZaiU9Y5Dl0Pcur?;iVHlKEf&%buWVsaa^Np%Egk6uy2#nWFNu1d9_K zjI#2xj&aR_Fp>qlSmi|>$*wWtf^TRENH|xwqy0Sv%nm=BY2tyh{k-_|AYq*##pvf_ zl4}>K47fpt?WBLX`TD{~K;bdXXME8PmhCThklKejeT2)v(ce9|EF^!HS7t^cX~IHJ;=u9{Ja1arMV6DZ)=7`zN`6QXl!4X#B+|{hC)Q+gCK(tZF+*YR;AW`}{zif-HUj zI;=q!g-BxYc;gVn#cPc(xl%CKahqFR(s7Tj>INZQD8$nEMaOUn-7Tep!+wUorbskSzA}`uSoa`?E9|&FA>@L-m3M>V8wNEIOzm3%)CJcyk(sPWa z=dfaSXDPUIWRPsXfxF|4w4de!&=)yMvBNqxkO<41kvLGm>8 z$&#uk*7-cVGeWn)mqL1>auFU_E<7~ord)@4L&_EU`x)r#V6+RnGUOvF#>NF+1{+LC-iAs5*;%tTtNV#-}1X51f$tUgyl zssmUg5ZjeS#J9A*IG~cFk^^x3_v0XE`5F{4>&{6R6h;PnlGJEKM+MG$PW9d=O}ljI zcmq$yDG>tcFoJ%GoWr@4oRmxKs{ZEhv7m#VHt+8p;}$km^QSGjSCUO_zNp1)GcEBA zR&*Ks`sYj8)Uiv=nqu;`6kSD90OpxBU1s?dXfHF13D(I$3 z=f*581geR>;iqXRYZ={@UZxgLj#hS)tw9y|Kclx)+0q^|kYb{t;6Bu#3f}Wd80Gp# ziW$GMj9}I44v(euX}z4T4emdopSpl@J|^_e7CU$?PGg@NGuqBJrX7!+M_4@ez*nEH z=C}~Y6Oe-&cvNq;nopV7WD-ALf$LguTQr7J@q1sGE^oY_#nJme1v|&6Ht0vi)I&j{ z^6My&+2<49NME*ujUC?;D0DXRAY>U>uVfZLmczAg1o`hWAJ<78I3Hzh)UV4OX8~ZjoKmrA^$pJJ zXEq@u&<-M@Qyvb6knIoR8Qwy2Dhm*|d=t}qz$9vRRt~Z2ONzjbIa8=*Awvm zot_rd?I`Eyq5b&~f)2;fGIKZr&5EaSmXUeomwGSL?cON@A0TMJoGH7wz-a$B{=8J* zwEJ-{0G{;(Q1J*se~s_6^XP*@RA9X|(e>ch>DwD}-tNRm$0MVPd_Uuhj5QgLMqfg# z2FcWN{zfDfWu7jdieI2yol#YpfGYvgp5@@CDBtxtf++f|8Mxw+&Co!Mb+g&O@yv415gl(+;@m%XXleeMWzp zTUDxQR;HF|03EaETbv`bvLEhOrpiTj^h3fXi&waTHB&!VSIiB1QUW?l41e>~Baodr z&Un0**V6*ow7fjdRF-Bf3i?nKjJr=Sz zj)Yr^MRN5c$2>6u2)%Q7b+bwr`Q`qM0l8Ih9;&+EbZBGy-P7&{GetcyF^P0cIWy^o zqphW1=1qn%MN0~EZ&8IOJztmoA}9(kH*Oo7KWogSB_Nh}R|7DdRb!2*tG5yLqK(QF za(ik|l9#(+J>+5Bt{?x3B+d7VEM7G^B1`Wry@hnjXPS=%V=gn;HIZDT+S3;Cbz=3f zY975D2mYB_4zgGsxKHdKvhB6Uq3%?w$lmIA6G4l2QKIj^e#lrk(JNFg!JKLMbosTf z_P>rD8lmU?nFfU4P2$h!F~IM{OA)PE>ex`~mqFW#kAZ_D(>DW_qyQud1pS`}%nS!w zY^56|1?<{EergoM+|-8E_-3$el0@Y6hGcI$^8uxEVh{DW>sUt4%U60cIIgSa z*91?`^av$xJJoOOe#-ob0ea_#7UlCN47x6{~DQexaK#7BC+HZkaP z*38n3aS}4dCTr8r%x((-betEe@o0C_4d2*QzQYrtG6=V|FbudSK{@Bb-iXAb24_ zdV%C{80;~hgnE61?q=O;gITf3yH302a&S7GtW@Nc|E#z=RSVKajJFmdF6Rr4Yb$U=M|4Cmn4h}y$b4{JNO#YGlsH67V?`2ccKbAjwb8*rbYDJz?IQCVs5caG_>%}e5{ zMLwc5n$sbZKD;0*9$^-S-e;x%RnAXQnCB>=M}UM)q!s# zMY{wPHsw`JG*|3k(fMGKc_7enLC19wRFmY9zOtjfU1F8(g@UXe&A0PufI@62_UKG| zSK&|F$IhV=wtrWEE5ESIun}8pWhny4xqioy053^sB_x=J4URuhzla#8C)I+Y{g)u~ z<3eLjagYF`0%XYiH_#2f{zBs(;~%u=_;B{ahj9j_fuUJDN`{AVyDXqX`SVD1nR^1b zKADfNTuE-!&@7=(7E$Qmof!Yg;)Z_e0c*z(GkiaWGN;C5fW!?n{2$e!xOnz5OP`tR zDI40h(*$6~nv<%S{Y3f+Fz$}@!S)6)w|SED+ygdnELJAHO{6&JP?IKBY*;j8bB^{g zSwMsnLLSc!IdvyW_+gM`Oy`Zcy4pSX-gb)y$%$I;JlDw&bs%#pj)8jq^M+4*znR51 zc|1;~d5YL3kqc==O;5+{tB0G%p|YNn6(0C+P?hoS)+rjC<<(U3AA#kUHLZVEYzN{iIh>%}*mJ8zSVGJcu=i=(RAVm;4iF z%7K|Kpr78FYbgy;oOV{nhN5W(VB(nk5V0VilST|SWn!3o()-T2%_94Gj)gMGz%uDd zKmiwIikWWe%D~d!!!j?lmwRi~b z+S{2#GIM$P=GWJ zPh)hwHhILMkSN@&u*jM6-6>VM5{FnF3O5=K2C-X}g5Xr`y1Epe48B@%KX&z z{b_}HurwMU!ksBLX@)64zJXPdZGqVa)l4G-AKv+jbXOUqS@Wptn8)-GP=44YwZO89j_2>s7w@a4A9pU8>>3?b!w%;rzt>obFkDcDxylQw z5Dac- zj&0jMS!=uZtrl7ClNRjWWDwkZd*%6C`FGQNnd3fP zVY=$KYtC1w?$&LM(?)IS@dYujPK3F{MN~>?V*ZHJ34a6nM|~Xrb4x`{bHD&bOWK~I z`QgjU#TAPG=k57`B$Hp-llf$bkWf!@Nw?Z2Cyr!nJTeyj2fR|LaU3vHh+{JlXw186 z;>=X?H%`KJv7!KL6;a&Iyt2(N!%-J&H<(AfDQVD20&d^rmA3<6U=k8W09m-Cb$2F~ z8xbE(uDkn<^2+({`1HAXan$87sAL`tAaXx1WJ*;mscj^Fo-^vm7|~@!r~5r$u%^E5 zvrKOj>GM6mHA!&AztO2M`Bx}M@egO~L&?q|ZE%+Ta=-pxJ6NE>zPlHdSBbp!V8S?+HB|fM-LS&88o8^v0^bGi3UggqLD~ z9?>V;);|e%#%TShtU~?HnMh47*JCT8FHpJ4HIzO2(r=G7`0{repQV_vNr!T)*Zf=Xd zLbC|`8bhkr)*bv{Iw;dvpTSEp_+gkj3mFkNR2pAdszq!y*hHUQzI{_1Tl@Rc z2c-+N99R%LTMDiA`-NGjcSv_>yx?d4O}tcR)WeH@5BIBBS>KzW+rP`h)SYu@3?&rJP(!~+YpWL*E&3L5Cyh= z7Dyunrk$+U$*94}?CyM0Or0|%ze6(72x1u%SkN^&!{Ed#7^IVIv%L!~B;U_^t4-`_ zSnKBLc-S1m3?Cvvpo$<>=?yY54qI7^MRfXL$l^a{`|mad{BsZcPa6j3|G@!NX-wFy zDI#v(qq##V^R=-&A5IWQNy-&ntkoB4#qSUnks|Jwl^1+?kJJR>$=(9*N_}kpi+)n2%ZOvAgC93c;HW67ir#2=@9jKQhb@rng=Kcn3ka`>@A;+ zoLI59w~{mPddR3x;y(|YKq>?7=aeT$79O3D38lDl>@Xbb<(D$k?hMfEx0;hWRxeN9 zFEFX3^1A*e&GXxcjRSGfRZ7I?&q(D{QPGkIu#Yoi$VNcI@rxo626B)?5cDaB!o~Va zrJZ<-pDTVzOkg7lfU1FOg2n&S=$$XHaq#7BPleSi@}qJmjpoQJBYX$gB2yL*FOaU0 zooeuPM^JEXF*e-d09NHytjuVgH#QD5TsdsXt%RpNB?l}PRuFmHw$@nH1Dt%DEXiv5 zLzuF}bu3i;QZucRaoWjU z2XDAKO9QyM!uAV zT|;cP5E=E(xN}Q4DRe@#y2!Rw?OcOPv3-IxEYoods4+EMcWI`_tEfY|3~NyTu#X%` z*_$(qY%MIWhR59nP^dLV|8J?W{%5J7rV)n%)1>thgMb0n#s6bvp>?7H7p?G3s?dpI z7XodRL&4zVni6_l-(=Xxw1ya4y7%~vMHV8i@F zBFg-R84xli8F1wcqeM%D$T`SeD|QUx2F;fRK~-|5nff$O3R6j7bm{bw8!z_bEQ*OO zmo8t_v2{1`B9$IL3`E3n5IK!QJ@Z_1^=+rD zbO6sd8>myGW+2dvbq<;t!cKy?q;hp8J7vh~Og#fRv~p+7*9P~pWZ4+$Y68%pH%oyjOx6QMZau*@t1HL=L?-%N6| zT-)){&xVzs%L%6saZaMWcsp=dq?Fi431m5i(-+l*cbZ5##IRsXzWU)3bcFJX(_ncL zCY3Y^POSm%iP8cvt3)aj-wU=qxBv!Y6YaMB%eIb-N4A9ctO=-Psn1GmahZ=nwQQSq zI61yqsHZ|yPX z7v)WsasPzH^T)05_j_=&>T6~2se-W@6Io;4T4Kp}Sg#sf4OVk(5f_zCLjdR~(=}*I zq+)@+IxBtI-^+hOJ8fwUGHef&$+oXDZ0iD(^}K0MF+XPgHYNv3tS<-7;d1@^NC%SV z|5ioed(ep@yq&auFpKdWUx-+bd;KbRXPMUhm*u3BMsd@gF0!0)@oGYlK?tFW-kH;U z3XNQ0eV5WVqJ5ABb!@dwDgs#dW?3M{(nty7oPj!0ewW9xebVdapw$8TcrewPRnrFt zVYjulzSgUYO=-vG{-v6PpV)FvR9=UwuI{aYty$4z)Z?-Vzrh~WO*x<~La3V>d5}i` zP)4(j*z!|?ur={(q<4NZ0V^IFI7E+VR4*%_MIM$uiwRQQ&By@@-5B5|2>JLt0^FB{ zEL9(*?1u}dOMB7jX7s`nX_mM;VB}D@Gf-=+j^i^@CwKLg&*ZV48VkpV96GByY+}Dw zKxmk-I}Ug;cQ(n0j-PT^?FAv%4SS)mz)C&&8;r%wkXdyai&kk#?B@a( z&^HSXup3bHceM)p9GH3f#rJqNu+Gq!@giXj z6wbF)V{J~}`nj%_uJ2B~TJvtT@GRG&OS|@gzuo&#*RkeW0&ewGa>g|23nTN=sne(N z96mt@pGh~~2|7)G;kyj1>5=ZSxY@-W`ZxnL(`-@saTLn*w z1-#_F5OEM>eFoSkq%`m!ePRjlY^_;;+%4j6_P44yVRUJo$o~9B#z(mM-lolS01cH{ z6hdD4z&I0-1u5U9rxtO=WO)_S!TYC8DGb}F+4^m>VS?QTcNs&Tv(v!kaxdvrYC=te zGkR4WslF$9%}RW0?)>Ls?AjHd%%5h32qq66Izv}dOdjz0kHmivyP(j(Ymq{R^N=xZ zA*rW)aEO!?9HEDcwj*pF|6p9-y5-h9sj0&j8pQpU>|sVRH8v=S{|6#)N0ECRw2#{m z?d2fghJBr4|u0iPMdy$d5A;Ovw6iWnl0reiW0Pw8z1YkI>aJgS#=Y z=-hJzDyacVFQXuA$UZa(6>|omQ_UknS`YWyO{2aFVao%nH3Yt0K(>m^^5I6Se7;llkEt=p&U8ceP+iqV(y+5BwpM(^B~@?V zQ}P&aZ=blp$HRk5urMoyfRO3Zx@D^|MzqO$Rlmxu#b0zj1QR%pcaZZeKq}S--Y z1pL~aZkj<#kIwBZ{9P@$l(Hjkjb5i{^|VZGs~tnXeebxkRBqg!*3aCD4v7?5QHAEO zRkGI0xn)PT?L4?8Hq|@IU8ehi%Rk2%Ntt2Nq*!96rzbuUjf9kzL1WYCgWwXt#7;>) zUua)^m8b{V+k5GhSt_1ABWvK=`Wbsho_KYWmEO$snJ&M2KT?~TeCSLJPZyY)RnoyP z?aMvEKw^YHH$@@Fcw;Ey)D=XtzUYP2PO&;f40wO&c zb2*grIUaFz@c{&;XM%2~dtbRMiIpe}WtyY#mM-V6HUE(K7b*b?lF*@5qMM~Pcl zN^V4zqa<_=LW2AaDy~sy^S^60dlE1WDlmIeofP#?p_J`^#=~DZ`a~``KjYykcjZ1t zLcG)hJqQ;|eptyU;W|r+s^7d)@)>aN*F2HQwp`K$oI@Z#&alpovv%06e7G2vFovOhXWiKEx&7^h1f%X|$jr?s(LpXs{G0bO``% zEQi`o&fP*WKzivdIoG=z*;6XN)Ohxo%EJjaI@02&Diio_a9(3kar4?ZZb zuvkqSKuPQ1RFIpETH~QWgCsdzq@%-ecp+oE3`#}}HY98}$J%gOPrY1ma_5E&MV$kV z&)vId?EW4YOL>m1t?v77ia&)JxY}BxKlJ#rWVRE<5;GCzj*SckMIptb8@jdnK!D zzYHXG%?s5&T@cl-ja>mc7L;&Fe(hd9={!8~XwlO&G$!KTY#8ZHW;D|N@bWW@(g7bc zq1ELsPkF^%9#`uce~8EASZNwufB%Dj6&Ts>U~H+mO3xeXh7xon7kx3n2@Ooy!L)2{ zVSq3ufiP~U>%86qxck0Os&ev$(AMz{BN?J9jbb60#*6xVy*AQUj@?TQV!|*8I(iTA z;XvNk8bW_npo8P|5Tv@~CipmU z3^hr>Pfe3_$yLMBk|6yI_lbp>eraeGxN3+R%MW;EA4|Eu0|~=wAtw0-^DaRUqA~%m z`(%B5eLdhRTHYWL4meZ*5ym8_R(|4eqxzE1GeHfuBCkYZmBIRwuQ4GN{RK1v&K%_` zjRQ{%vZ9Um@KC@rhnXW{BZ#I#@Q)!^nH&Yj93cHq1e?DgbtHRW!Xkg%th zvVHGlAycIe>F0lQ&K=OJSl@e9;bQ2~JQ8!VR3l!WfAKgzl`d;{mxw}ieERV+PjvB+nfD4K|T zMN;AfE=^o_KY>1uhaUKq6+a^0U`8zeFPc*(bSMjvF^C~~PF6*}^;Od>>;TbW9jFNp z>OaynEgkCTd2*q2FT`GnCeh}lgWjiklf&Thn_pJZgNB*^CYrp{SHA$mTRy$f7|sf` z_iD<;00l|Sx8-K$vRPL7*e{GT`tRe*YzImr4rl~@Q};Z3$rMQ zPyE*=K40^h(w;m0>;LK4aDxNa*0SA)@rXh~ z*kt(Sz&d&k_bA^uN_N+`sUUE+J0nJl)DeQ#V(wpev-T08{x=K_xrXw%(go@^A(>I2 z^9fhmaxE>^5(@xgQNXDdkJy@ArrooB28F9}`KfC=t?WX&*BPG}XU5_(LuhDM&@+xx zVepCj`yR)UjC*tLMVh&9d7GCF$4>8Dj{0?)J!j10-LHQzv_$p}n81R!phJIHFx83D zHUvs6M){avYz7L7oXBmCi<{L(Wzte>KJIzz;#w|IppF5Ggp+3r8zwv^xa4YwmR2GS z;OHlRPf0t7=OftIlHrIAgk|Q>l0Husx}>aiGLnpzl=3Xp+<&M&45}p3gChIukUbt+ zqHC62t}vPtwvR*1q|L5q{lDAhX&V_@2~o8<<8BVXQX%F0IZAt0<&mwP){_M2I)Yy{ z2b)`Epa%d^$WQ1CjQCcl*K=4fxZ;(IQdcKMIN4r>Nnx_}>J+Cg%CM~vJ^ipWXsECu z{Q3q)eX-0*4^u@3zXcKLC%iEms#Tf9s(MOuf||KA4vUm0>nUxs?*%`nkX$D_4ST-W|Uc;y%N!2wjO1P zmvB5B7q*Q=fzm&g312g!fY+OVLYQE<0aUk>zAG4dKfRNfgw)MLlBH!nmgaPnMR}@e zLh>O%a?R7@`dioKttNydmJ2`v+lHAm%Dhin$7`gUZzB5Z!CFI-6ZvUN52XzX5qp( zVLItZE@OY3_%|%hn2TqUD+9wccMW~>K?qDqmff*f+ev(++;yVf)jFgvzS7WeJixdGR;ONXk4! zF#aP@`of!hQaStBI=Q|t=X1eqkqb?dHXC_iHW#ZpGua{0${x=xbh=<6Zj$;|GnH_; z4*MXq5hetz6dsm#hgi?h|dhA{(SK@)4Lj4*$j6dNED~fLEk6% zcQs=W{6dg2MSuwu);sCu%oz92Yy{Tc6r43_LtX1Nh@`pP#$OaIU3j{&@&N)_bsb>K z;c7|lAY4o#!@pT1XJmcOiN{_-W00Ut_tK|e%XN$<%wniWIsl-0r(LC_-`hKP?H}fd zGEAVyxUGCz(RP{gpx~!XkWPI7C-?3c?Wzb$*G6J%FJ6~fV=)B@P|tTro1tQ0Q!4o)}&)$||oYI@K=Zx=QcUir} zAh*e%fEdBrC8$NZgj#@q*vwo&W=Z^d+oP*?pI4e~hDU9!Or-e>7oG8~r;}IPNh$i0 zKLld!tN3DCgjv?E*cpEBlFnfWJw>cx{`C1HMFSMThfrvknh#gvBBxVtDY4X;_1S3x zQL}g{wd$-W=UT~6W(-U1x?*tmL2robPAN=4gJK6gDBQwp|@kT z9{~y~+=jF&OJK?LBgR=^Syy%O^Teh>zi`@v#TOhR&|}uiI0;G|l@?Q2Ys~F`m60yE zsi`hi4WJL1HZ)qr0oK$DTwcWvq|_+&+1r+E|8Z`pR+7X);?Qe4=XQ6Nv0sdI;q-|7 z$OaN2hIvCzc$;cK=RbvC`$;gTyRQ!NVL#Oa>uExRBavnv)`&Rz-t59Fr4uDH)!mk% zx!)B_Bio*z4(B7m#}K`eM()TFh~l?ysF#~uEm!j2$eSEExlSNsdN({=D{(r6R&Hb; z-DB-u2K5&x^5{Rl6zdm7i?Ohhil;NBd9;wzezPpc&Obr)_CfWyx~ZNwQx7#AS0rhO zSlygGot(_ZR!T@Vs0mS+^9`Y^C2&A!{gAKy+Z%aI8UK4naQ@G!#Kx2~hyR1g*7`q2 zQzEbdLV<9ixb0!?Je{;WOa0VCLw^+1$g06D+|nd8RH3?WUx^4++97ol3b7>&6@I+y zs2^rNCAOXfD>uHPz!!@F=X|(W9#uZ={3LS7{(%`|citT8cD87;MMWV4*)d!_qV z(kIi4@6E*O&JCoENd!PGub`nq8<{N_x=6Or@#AZg(NNGbYp*OgoWb#*@=((5(CXMu zO9Nc0B4Ph{GZ~2MwM9gIw4yPMjP%g>@MMfd{8K2?6|ImVl*nIY_O?Ff%wD?o*0$s3 z03EwMw|quIW29CK4@Ee)MU%9Es1S%Qskgy89Q2A_@ZCNexHbTY6l%~{ltRR!KlZw@ zAD*qZt5@f7C4_Z~n6VZq9ffi#)ZU4(vk5!WzUcnlv6f3yPl#bA;&4K&lvu>UV$o0I z>_p>&3*9Aao^6H$-G?&m{9-w*SG>1J(GrC}u`Eb8)#}XOqU&jDKciX8ezY$|?NfV2 z`MC9QEc$#?p(Oxh z62H{Ed;UfFYMPNCLj*pNXhqP_EwlF!gbo=6^^so$y5zFb9wjw|G-h<4xG+k|QE;Cy z^-7WpgF5ELudqVJD1;-#zXa_g=?h?7gxX_EkaYvF$qS*jvh)wEC~XeL=rZ)DxD`_w z3ZK^wv9IsLgKvoI#pv1xQBp{sv~Pl3DRyPvN55+N@s`%F#h}f4F&PsC-N;3to3q^m{R+d~8r}DG=z= zO=JM%Hqd{3jCt8HhtTUEYa5xBlDXCn4MBKZW%?U{X>R!Yv`Z$qRPc*G4m$bQ!0y$N zKRvQ;Z?gc+2J~kPNu$c`*pX_g-O!O!qg{Ma-O2h$C;7H4{h3hQJtMV*?#U>vAy@f; z99S)%2jE;yF&RD$x?T2M{h73{L*DOb1%H5OO`VrYL)6QWn-+EE>#D}0hf~X>m zYn)mDl~MF52x*{>k;`&S_gt$k?qwR7ql4+!C!%ataT|nKbs%w{+U(sot1IAo0zjK% z)HTfy$S{jyV~$zieP-2LARmo<@C2ZfhAID!m{Qjq_=CDL{#I(_mlVQrk2Xy^e@Lom z*5dwZTy(VGUrDxBOYgBkLjOCJDcD*ccusGyP1 zGP;-5=cMeH!E`&)0%$*#9>i5dv=}l%)NYp;H*SC`x0|ENl81-{cb3MwF11@^ZvwFr zyXXK`v{$OQJrIq)&@=r^E+45r!*fa9Rck6O&sA>kQ)#bIM{0y_ORFeWZ)mBxiB>~f zZ-D?JX6uky&C?NZYDa)vLL9hk=q4aMQC=4y07C@UTqjG11jbG1mq?5_nu2ftAb{#) zPBP#`1L0&#`zb0XN8sXQ`+wXOcFzAcl`sA@mE-(K(90S(b-t8oxK18a(LingEd0^o zvKlRLFawC~ZOH0PES4SLp7})D0_=vF>w}09*u^&*!Up~f5Sdp+NMV`E!H%!Nl3*QH zMw3?H>M%*R$r^DUW}^(y5Oj6^U>#Bu$^sd7Dhnn^tm~DS&~oyS$4DGZD0XOT0O$p@ z0x&A6uP|z{wVdH8gQb+{TND%su(TK(km!&;wamXj*h$eLS9t0Kdv8$CvmghJ0uZLh zL@{MTW&#Pt{)`3^t{VjqvY;DQX_y29{q9dh)5bwvRos$`q=aN4mXI%LG%@h>jAToa zacrW!Bb_`zWs1^pfUH42BD@Kq1@NOBg;(=}J4g4+8px}sYF4xemMr67#F%W9z&u?DAt4wRv=4*44xrd5NbRNW+2t9i#8onb(rg= z=899Vqw(n*pymn_C8{t=Ff#Lu#2cs+)pZl1&JmVG%x08eEG3T|c3zwGm|najDLK!(MV%iOU8>`>MSrg4$c-qV=l-(}3h?Jc zV#$sb{2{6X5#NKqc<}4{Up|(*7)WNv;`3=|HUo)IB@NwG>Y=kc1J*t^cn$vHba7c!K7F4kYRKWpyz@SZ;yd2VIVl}s(Jb_`?Fm0S9~?VsA)58K!F zhYCyplA%m}6{Sm_gm@EfN zKrA48>4uGq^ziWh9%({HXmvT@#s~OVi@dCOw6H@9bv6-oeUo#h7JOk5sA=CCL>>(} zF?p^MN6oG_7%z5O2|TV#uOJyncYw(5PJp%IhojOYH31K51G?rU{p1Ei3mr975n_>J zgR?1xAY7HkJt?HiU|p5gfTY`;*9v9fKOc{$>~@&pI59^SJpp`1`*zi|1UWP~)Xq)7$rYp|5Qdm1$kx(m ztrjl*Rqqw}Bl)CaFPu03(UaWLs{+lnjW2f?5|)q;3<&p=iC0HDoUnjPNi*Xp}Hrc=%~fvU%wO26}4 zLu+yTcMuq=`!*{|w$N#m^3$%*{xk*UQF@GS;44-Ytv&3wG^j@|*?g!gU=)L#GOt9Z z@j=_Jv*kJp$R2+>;Bn*Ba}`Ov4nQRJb~<0?K`oVb=-aqv?Wv~HJ{V# z2eh9LH`2F4wDO5mWu~ObH;`fVIEGcRz3JXC?1jQ() zO_Fb+8<+yq=WMYOFrsX@b4nPn2~)ltYAahb1nkgIhmgxsh%Zzh0VZyq&fStxQW^%D zZNuMniV;@Pm7=F|!b{&8zzH%L10OL8xZNu2o;XfyJSzK{N4*!g@jpt~+!qBQK zmEh7egQPS?Gn~g6vC{BgFJk0=VOdRJk=z@6lKK$9eJsx$auAZRa=tzoCQmMfVquwR zVX{or5y=nTS}My_*Gto}kHPq;CMNZP^@aG9*dqnG37_%Pq0KIjF z`Bjk*WD};4QayD)A!o8-F{YSI_M_Hi$OofSRFb*@2wU0+HO1RIJI1 zDj5oodjy%%qqp)zO6?JlnmH0RbmCt^$>V?Kim}Dhd4b&9{PyjbL3ggPuZRsCEFyjV zMZG>>BK2m$R_K@|q!?eGL?fhFh6&gUSWuqQ9s|SIUWvPQgY7Ha~2GO)l)>x8i{lTT-t$2 z^tFpLV_56qRhf7R^?S-Mp`ph{+j>hffN^;ZJzLO%Yxh-h$_OE*2cx#=iwPmFz;YW;DX^Gz-#Oq@v8{6}06eY9 zI5NfB%|;WNZp|Dq-cMFDJ+LnjErIijW(Rj8b@UgH>@)TNBL#@q>np)m(O*-YUZURa zvD;Yc9M|t3v$adA{4&OWZ!SoTU0W~PuS=O^fYLTu0}cOx1<8S_KrBG&e|B&VTG_NF z30m0ZAVL-)EchURAmIj52~({~5xRMkj#5*VZfZ}aD8Quey6zy%gTv{6N3yW0KQH&_ zy%YTi3xI9_Y!hx4bQ7*%?{L)V<%bZ2)<{Lv}+tzX_S9)gv%VguNrcYt;q zjH*4jD;v?nZ?hA<1_DxCQwn8Xwc(n^V1&lSQ^mZ$fPK+(e~@=+tjVBAz|3j2KWqjtCKe9PG)IOX zy4(L9j3C~Lf}%}jdO(E&ug{{N4EPuKu@k~T52+*9bh{*O5Px?Qh>h2oj5y90$siFX z$BjC}&ph%Njj8n~wt%89>nlJMa`cnMa?`mudHummz?`N`BIn8`H9u%sbxMbp`O-@n zy7_q6^j9($O(pwm>Xg3na=m*3B$WQnh5y2Fuoy?qv5>$TDPU6*Cf|SUT}Vk-u}85i z3!OGi(1ria(kg zgnFTvN63jwH*vb?;`mSLxV9mtwopoGadTnEYin^36R@NcR@Yl40+oS#yx3YgM0AWT zG%{<{SqxS=@T_^+K1!h^G@SS{b4OSv(uP*_F5DTdKFuMn&p@OSz!zwI_^9O?8gO&Q8s9LOhw!+dEz$Xi*rB_*AfXjd}RbsSj$%e;pT$m*Fd;i)$Fw}Ag4Nqf*0*%5PyFxYi{(gTL zHv6IpOKqN9Te>{uY1P|pIuUBC>;B7y{B`~!i$dCQJf#1g)-z5QuvM+Jq-drH6`TkA zI;VLstlvB;^ONZ$x%YTKfALOy&*iwR*;@#cVmhC_tKTSy5z0cRn~5j3MpuiGsDc|S zJq+{WW?18>J!&k!A8IYuWzaa>MBl}B?SG^z$np&rBW6g=e=9RU>T3;@U@k$b{wtV_ z#3h?Dfhi@VxS^Q{kj8QK`J{NVX#INBr^rdxx_iFvdAY}?pX!yuoZ8hL`y@#sf>`1z zZV5Ib;6S9-q*-iIZsU?HXIfXjtd`x1r!G{zV!zH10yB4qa>WtuJL|5ngF(Z2LQ_ZH zRiGXQM|xufUC#*sFLH8>(_GZ%w7#}l_CpJMUF18fZ$W1Vd^LC0)vg%tR_i?C*=_zI z7=ssVz)Ofmx`qwsKar0>(rdV z@Ow9sadfEs2_Z6Btcw~WfU{~KLt|GD-_H+US}1R#9+sKg5{^ejHC=slEDFeA9Mh`y z2`JsaT%DH$0HgxnT~{}K5Jhbel{+6~IBnZuCoj(H`b5pB{r>h**ITUtZSOc_=YsLh z-2qP0`VYl0{A*1Fi3w(!69_xZp#Shl#Ef|_P%VBqp?810eTTL>TX1)Yh{D%-`l*SH z=(&mY+A&}@a8Cb-upm88{lpI+sB!<0r3APk-2A-};4GO9p!Ldo_oLm2GvAz)NH8WK z;+Q*F+{84-XEmt2zdymMdv@EBlqVb4j#NBwGIqF$*n6~Ep7OCgF*K|)>beTh4hXc& z{@Q+1IuT)hAQIc-bzlPZq64vP@5My4(q!NOk8crz?Jnyk4arCL-}Qbb`-_OJ%PXSq zWn!cQh$?T3{exwe;JqGy(wNUa?sLK4j#H4!X|)>%ANz3MhPGQdQ>-G2=ZbV@K&P zplMYuD+{bThzBZK^oA34g|pl#NtYt)f|Sf)S@N}cRFS$#k7YAs+7;HaJG$9?APPoBUrkyewv{x3)P@<-76 z$s_y-TC^Xcz=sy**EmJK7IVKwb?|!riWAB_6fcscocwxy$5$q$n@6TucR~aUAxg;E z%x2+X@ivoC-hiaqf-`yi@b2}H?h^(VQPP)44I{;pbsnF^OurXtTYSI+UloB1}X(QCmWqK=Jn~AIz=IZmdG$L5%nCT&+ybI zBlc^J=Y~AAaF@-yzA`vUmU)nl_Z$SJLfMSAh3;=Yrm8n-DyStP9S_N0r^A&i#U_cZ zFd_u|B`O*CRQ{>u-S`*d#sc9bOaEmQ!g72ns{xPrBreC0SiL{UC`kXCfx-xe_$L)j^q-)b- zk}^gRF_gb})J0u%6b*6!Yn@mzODMA>6uGBI@M%T=D4qct&zUxSdUO*~tM&1Rta^0f z#|=`k0{?21ZpB~SP8Z{oxb{*_3WwC|#~L0_at*N)J8&Rf>L>4b*Q2ZRX~@OIlchOq zEZX~cZ8@=mS{m6S+I^hUJsaUoowADzEDjSMuZF-y2AbGc7EocQI3xM}^ua}brnG-4 z!m3=Y#qj}Q(hLXCZN_9s^(iD$cAcnD7=qxA2 z@u8S${!5A7zYHPdwM5aTgsp7{QieidF78aT=_sOX-gCCiqW0v-UdulP7_(Kk=$Euv-TWs5cI$aubb z7G&~mUnBAfG$A~6OSc&nW|h-P18d**E5F+ejpN$M75>%M!J*2Q0T}+CU9bm~zv)a+ zdvO||rb~*sXS_{>QVphY*jx#m*L-?CF7r4XHM}+P#ZqfZgzQOhnW?RsuW@K&-ZGpd zwMzYOOJe!o$d#Ste;T`%R@{$y^T#Rk6Tu=Pp~-kgB88hRkgC0uS@2z_1sO_>Thbuo zipu+8L)^sMj@7yOHc`Q*FNNby580bp;KmT+cAf6$ps^EaC~v#~>kTbIeWupmh=5FxSPXk2DhEKEkAra7J8{Mn{i4e6=+Q zU;3*6@)4UU;8drq39A& zi{LZ}(#8bSM>fQCs(IhV}<3{2rn+L*)7cdA>W=nHQ_MWfAbX|vZ$ zXPzQPO!>9YzlJ!Q9u%HvDky^(t(8ht6rAm zi7T~v?I@67a#3Q5mFWoyqkkR6W{Oak=ckB|Lzp4jX*G z)c|K`rLqH|lH*x^CXbXo4UqHOC}m%f(6K?4MxV$}IV#vSh91gHIml3&gsYQoT?=8x zt}OMf5M2$x{oP{w?BH352%%YFkb8HmuhyjXiZDJiQJM0HUg7ROeC7=ikt-+!cJ>4a zWURGQiLdf21;$#Ai}h3|Pe5y{D%0p}Ox^Wak{?tEu5j<+1M}=$PNJEdHuj_!7Y!*|?m6K2C`XZj znoEoQW|$$%X;&PqzHba{yA)09vQRH}KPA9C=_WF%CJGwK3$cei@9%$3h4KW1fjEx$ z_jsl{NoYrZ4tPr6PMzl%;2V_W6YLP?M3Ub3y2R7b{0^PwLt33rwllwLU0J5_MO$_B zBXw`K%W7FiJNZ#6+N$1Pz>I|<+TD}fj$ z%d{YXf1UE;n#Y>Fi<|wFSs;fnnC(zFc^ZMraQSqz|N9YGll|7L*2SGvrrh&eNV#m2 zV(H3!xdn416hwqeq%$u4yVms4I4e znJI!M&=G34bQ%IglAgA+w+VAB3C@m~>ohSnu}`R6iNPLhN9XUWP9K?Z^9&RSuBv&D zCO|HR^YP|n)c74BMXw*EPqs-RfEqVm+@U6^qG&GyKbmCMOKeaMBC%xZH~kIN>sO}o z|3+{8#BBch8B*{+|L2gLQ1_1#aH(>?PxYIzx_$hlME(}L>UWJr!^RI#xG8A}ua+JmrL zb9X*lY47C~w4Dg5v@9iHY^{P>|3s8^PG9fJyMc-XnFl!SvRDYrAb$62Lrm6hF9_9qt{qw+hhM?;e9HKy$rp%;E0VcHuwIuwYjZ zU7oS=+r50)1%ef$$)^9#qq zxYB4au3x7Zmmh3CMmh3|Jzfa%ywlmN4F`)Id^A}~P`N4`)hn&Z58D43H)uBzbXYkD zCTd|7mbZohT&w-Z0yR(7%8N48!V*YK5>*d4^Ew1>dQT2;f;zAdtgHTm#+D6i%tm3!yM98&a$aTA=Mz>^dm=)B4B zgbM|o$;VbV{F$UhRF@!J^Sl~n7Hzlhr*qi%{mS!-&#Q51JJIr1x!2`yh=)zBH+H!_$p+)^g4W2s}Mes!ryR{#LmzTh`^j?}jjShmkfA6{k-T%+d; zZ6qoru<8!;d1~ATV=#@jI8JqO5$7s8ACptL2_TWI;6w%-?U+gV1Fj-8Z~W?zY>1(+ z*Pw4kUnqA@@~_h-nA$|t3Fo3_QnXqH^yPMI!JY2d zbGZQUC()qo`@S~Upq$LPt60$uhA{ydZ60bWT-5ao24kqF%c79gtdfRSrBaY{6IRC= zcgwYWxW+`=KP;cF%KcNB9(-!r?M`*yT!HqoIF8EhECUr3t8Uv7?!Va$qYOq+Tj5=x zCu-~Y-SyCA;~aFR{M!q+k$6qblE2RbFUtX8*A-C%fJekfmvz+T#$>yybAd0jySkj} zNz-s&<9FG-O=gRl9HA`b&Hztoe&<$dj9v053Vh`W6;Rn}=3T`q-zj`I_x8!%+1OEB z?9hw_VuS%zHaTJc46@{z%RwIA;1V?5B3;c(I5@L^snPUPeyEc&wAbNV_*GlX_*a0a zaN@rziC1=+Gcyik#hf%rI!k{ljV$$tG2`qmH+Ha-#2S5x zX=J?IpE}kng(r)KS~LYF1Cy`h#*I24_ibndZri~oZR_ydu4MuPe-U2fe@p6#4IaKX z%x`jkyt-cv)gY-m`5}2}Azk})I25)+@;W!8CP6lQbo2)< z6n_H;pzwMB=kfu{$nu}45tNh`4Nz);nzh`%=znZu26J@Li&idALmd%sgw>qpr%+9( zWl4&G()H{%C|qV-BBkx$TN*Vow0**e{^KDignwtIryH2E)v$Bb9-Y$1?jV&MN^nlcaALh!x$-Bt2B;*&BE<4ckiiRs-FK|Z;IHuO-cjwL&MZj zwKsC)^3&!03MJ^FuivCYSZUut^%H~dxg7&7*E;14pFLJOqxSQ~ttT?jE#ggS z3TUXj68(ehHMLbvH=4P;As6by8|D{QGy4ENQu+sH%Wk)n7CaEAI}%2gyh-Hz#LvQ2QonlxT^{n0gB|0JWFVw zxfdH2$g-jvmSFE35*7*Q37Q}e)X(d)6U$eiF|{|k#jf>3`ZOy@SZDsE>1X9Ma z3*AZKlX_Sh0{^Xv*1Q~mTri8@cce+&XQXvZ#+9wvpkWO83zC>kSmKb`$tjPXf#Q#y z2;on%IXK(2c!y3sgN1ccsEs;_qVUNu#CPF|^cGgH0$6%1GP5TQAj;n`WaP|IBc9&) z#sPfWodWI#oHExD!yMplYihw*HBJj~UMU+Mn4i9A#frRNb;wTo^fSH_Vf#f{>u~Y} zvhUTMy4p5XZk>`09TfI7srJpfgY(F5@FJ83p;v&pdnunA2R;JB5hbvNSVD(Gb@$FgW6f|w**t?oQ{*NBeum6G2(ZG$u`HzExs$Y5Onmrk9 zn}-{pxt>1GaMo3h;Rh4pBD`-O#~-qFO^O2pBj2e1Z3Wdm5)Uu!+-@3gmKxHe<$mBOn=tU_3d za6q1oWTVeT``y&a5h#VZmx|BeY!w86z$ta5BTJ8iUgi2z?m)X;A-ILb)cZYi`2`4Mx%H2B(I zzYxq#wXAfPGvTgp@VM1M^8cqmvN8OpK>iS;etb++01d655{c?FQ-h(P!Z`1d`fj44 zX+o7uyP2OXVp&98E^R2d7F#=vR9^n|oP8UKvd+E*WRL=(%YExMZ8FVqpY`gS%RqQi zE7t#V)Y$T@%4A%pBAvGY14fsQEZr(vLc|>ElYZ@hws|$Yabuo3xq$$DO`n#Wu&`^G zez3~|=#lb(nEX^?OXyW9WgTY8ZQr((`0M*q%2&0izulw_?l&OBf^Wpk177 z*Z}B2!zEB>xLp!rO&b)>k-Oc-(a&EGBz)C+x_C4`C$Em%1fi-+K-H16dhR7ZKsKkh zjSZ(p&9%#sg&-tyvR`_iDb&g#ii{fy8q9(N9Ia<>%8!qNj%v5?N$VJ4O(@z=KA+^t zD%{lyvt3Po7018I6ElfN88g1o!VB!~kb+~9!yip8no_RK<;HfV$_}TzPUT9+s2OD< zs>z1Bu{2@IgZ|cdjAZmrYch#`dhW`vk7v87s8fOVYiwL>S-8GlWbWUf>T&kM@yYxK z?2mkg1oxxgX&{#1w9)hlIne25v|;LIK?Lre|UW)q0DYYH3f;j&Qm6VC5J)L!ZXjw*!|NU=ZN}mb zZgasOgeq6792&R;)r2v(%%c50!2Ge*7q*q~-+Op-2M(l1Q9!TC1~}A**EVBBEAC2VA&Tyw%kooGXofW3D@Pmn=CjI`7owscOSw zybfBniWz7c9UaEibH;S&+b^c2m$bc``Nsea?Y}Zq?H9n(?2+Pe3sM`>P?BUVfzW9nBv#jfRz z(^QaVcw5m-MB_O6{F|UAo{;ACe#>7pY3`o?zSPXs(M=z#wjceDQ|o#H1z{C_p&QyTw2tiTupAN2RcbBf_+ zY_-fOlndvGMJ%8vq>xxDyy~A##1sQ{9AV7NpBUE}3T8}F=GFE5 z!^a$&U@95)eikBS;$V(^3MttUtr0S2j)8{HK;(UC2W-)3l=IMpR&0_GtsZM0t~HO& z2_1mH?3A;Elde>LvV2%}!vT9&x-L8&SwN({H>a zTB!K77AIM*Bqax2v*@)HhlL|TZaO^X)yaj4ru>Nf+40)&{=*W>HvD7JRnJWbh!0@B zQ$tOdNnBas_uTI=jhscI6xh#SWf9}C95;zPE$k_1ck|^;OqT4r<2^}NLL(!ym?*R` z%hR3i)@3Geiv_YQFN?H`ervdAOjRpJ?}UWK$kWxI1gh!v6z$O75TN%YB)rDSe#1c+ z74WhX0@1e*v~A~R|IGP^bOQI!g*AY^;&5{fX{Icyej)wIez82$DzI7zj^Jp02B`{-I%BI{@82p%2uHO zo;B1U)J)3a-_v}N;kpIp{mOs|@{H;lNc5!42tqzBTPizADz;o^3V>a9|IZf)*!dUf zqSLiDFcaog)Tl~rG>vqGsH{&}c-O5Q)hNiU#Pd;%7F;lqr7qc&>cU8jaHVvQpMb*# zpx?j%3|ymxYce_yif@VatA>PW2t#fb3HWJ4RcViV#gJ(Tb5JrGzQl=jpZ?l7Bqj0z?Q7d zmRlR>3Zykt$&2j1>J5+!Vv>riqS@g(<0br9t=3ah!)bu`T?)DJ&k6z@I16*$MNj;lc$7KtFSzS%)I26ev<)1JTm&g^OI6lGG*cJsYFJ^+@=2sl{0BRy7cI6 z9B%lZfDTqTTBs$Lv5^*Z1-~Q>O%f|$Pa8#Ot15(l9=m7=C2DMV4dDd1HFYlSe;U4@ zhDC1z4enR{Tmf53ABD>vbyCLzyNwt}4f)FKZV#)k2lhKVc{RH>2=60i?gBbe57#*& zz0K`e>|aV7&X0Ad&tBN|Xm3xZlVeYkiyYKnDyNQQt|pl%VajRt;QdO$XU}X261=n@ zTEw+IMmtb!X9r{Xjj#{!n8%Y@>PB3)me+9|0|i6~(sLa27e*?0 ziB1Te+knAth{lcYKSdA&!>mE}lu2Mwv_Y>t3}12&D-3b@L?tYZ!tJ3?VSk{_@YAh= zR(^tMV7h@zn7G;hKqKuQ`F;lQTPrCOM{MiPC~R%R;E=-$ah;zrLSd99hu7S=bVS9w z)9bD$1{oGAWbOdN+z3VWtCm3xOv=iLH=U~n84{nSHIy!ZX%T5Qnw!4oAeZ|8p2mS> zuP7z0AUym?>gxgjVf_40MhKW~j~orR-e&Wa<8=aSiNqMKlSmu>1z%jy zjQtg4NfoWtV_e@b`RyYX7Ehw#Vp6mkekeq(aB#c3d3)7X&_|rxcMkm6!>0o)JHre^ zT^C-qv&Y$s4wooj9S~t}huN(KPh{if)_~)Hw$*`-6ul?H>v0X9@Zrua14x+jXdWw} zUa*fp!sBh1$oSyMp1Qj}$L_I;r@gi*iIDhuT9FT%=VDaZ7!tTTz41yqt-uq#rW9c

    Cd(Z@>%^9k!x;20ol2OJr{vNpwqKkP7S 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≪ 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

    ViGj|X1; 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 diff --git a/playground.clj b/playground.clj index f52bf41..3fd6160 100644 --- a/playground.clj +++ b/playground.clj @@ -5,7 +5,11 @@ [tech.v3.dataset.join :as j] [tech.v3.datatype.functional :as dfn] [clojure.string :as str] - [tech.v3.datatype.argops :as aop])) + [tech.v3.datatype.argops :as aop] + [tech.v3.dataset.column :as col] + [tech.v3.io :as tio] + [tech.v3.dataset.io :as ds-io] + [tech.v3.dataset.zip :as zip])) (ds/concat (ds/new-dataset [(c/new-column :a [])]) @@ -632,3 +636,495 @@ agg :price-sum (ds-reduce/sum :price) :price-med (ds-reduce/prob-median :price)} (repeat 3 stocks')) + + +(def DSm2 (tc/dataset {:a [nil nil nil 1.0 2 nil nil nil nil nil 4 nil 11 nil nil] + :b [2 2 2 nil nil nil nil nil nil 13 nil 3 4 5 5]})) + +DSm2 +;; => _unnamed [15 2]: +;; | :a | :b | +;; |-----:|---:| +;; | | 2 | +;; | | 2 | +;; | | 2 | +;; | 1.0 | | +;; | 2.0 | | +;; | | | +;; | | | +;; | | | +;; | | | +;; | | 13 | +;; | 4.0 | | +;; | | 3 | +;; | 11.0 | 4 | +;; | | 5 | +;; | | 5 | + +;; indexes of missing values +(col/missing (DSm2 :a)) ;; => {0,1,2,5,6,7,8,9,11,13,14} +(col/missing (DSm2 :b)) ;; => {3,4,5,6,7,8,10} + +(class (col/missing (DSm2 :a))) ;; => org.roaringbitmap.RoaringBitmap + +;; index of the nearest non-missing value in column `:a` starting from 0 +(.nextAbsentValue (col/missing (DSm2 :a)) 0) ;; => 3 +;; there is no previous non-missing +(.previousAbsentValue (col/missing (DSm2 :a)) 0) ;; => -1 + +;; replace some missing values by hand +(tc/replace-missing DSm2 :a :value {0 100 1 -100 14 -1000}) +;; => _unnamed [15 2]: +;; | :a | :b | +;; |--------:|---:| +;; | 100.0 | 2 | +;; | -100.0 | 2 | +;; | | 2 | +;; | 1.0 | | +;; | 2.0 | | +;; | | | +;; | | | +;; | | | +;; | | | +;; | | 13 | +;; | 4.0 | | +;; | | 3 | +;; | 11.0 | 4 | +;; | | 5 | +;; | -1000.0 | 5 | + +;; + +(let [ds (ds/->dataset {:foo (range 0 5) + :bar (repeatedly #(rand-int 100)) + :baz (repeatedly #(rand-int 100))})] + (ds/add-or-update-column ds :quz (apply col/column-map + (fn [foo bar baz] + (if (zero? (mod (+ foo bar baz) 7)) "mod 7" "not mod 7")) + nil (ds/columns ds)))) + + + +(let [ds (ds/->dataset {:foo (range 0 5) + :bar (repeatedly #(rand-int 100))})] + (ds/add-or-update-column ds :quz (apply col/column-map + (fn [foo bar] + (if (zero? (mod (+ foo bar) 7)) "mod 7" "not mod 7")) + nil (ds/columns ds)))) +;; => _unnamed [5 3]: +;; | :foo | :bar | :quz | +;; |-----:|-----:|-----------| +;; | 0 | 63 | mod 7 | +;; | 1 | 20 | mod 7 | +;; | 2 | 15 | not mod 7 | +;; | 3 | 85 | not mod 7 | +;; | 4 | 46 | not mod 7 | + + +;; + + +(def ds (ds/->dataset [{"DestinationName" "CZ_1", "ProductName" "FG_1", "Quantity" 100, "Allocated-Qty" 0, "SourceName" "DC_1", :ratio 0.5} {"DestinationName" "CZ_1", "ProductName" "FG_1", "Quantity" 100, "Allocated-Qty" 0, "SourceName" "DC_2", :ratio 0.5}])) + +;; => _unnamed [2 6]: +;; | DestinationName | ProductName | Quantity | Allocated-Qty | SourceName | :ratio | +;; |-----------------|-------------|---------:|--------------:|------------|-------:| +;; | CZ_1 | FG_1 | 100 | 0 | DC_1 | 0.5 | +;; | CZ_1 | FG_1 | 100 | 0 | DC_2 | 0.5 | + +(ds/concat ds ds) + +;; => _unnamed [4 6]: +;; | DestinationName | ProductName | Quantity | Allocated-Qty | SourceName | :ratio | +;; |-----------------|-------------|---------:|--------------:|------------|-------:| +;; | CZ_1 | FG_1 | 100 | 0 | DC_1 | 0.5 | +;; | CZ_1 | FG_1 | 100 | 0 | DC_2 | 0.5 | +;; | CZ_1 | FG_1 | 100 | 0 | DC_1 | 0.5 | +;; | CZ_1 | FG_1 | 100 | 0 | DC_2 | 0.5 | + +(ds/concat-copying ds ds) + +;; => _unnamed [4 6]: +;; | DestinationName | ProductName | Quantity | Allocated-Qty | SourceName | :ratio | +;; |-----------------|-------------|---------:|--------------:|------------|-------:| +;; | CZ_1 | FG_1 | 100 | 0 | DC_1 | 0.5 | +;; | CZ_1 | FG_1 | 100 | 0 | DC_2 | 0.5 | +;; | CZ_1 | FG_1 | 100 | 0 | DC_1 | 0.5 | +;; | CZ_1 | FG_1 | 100 | 0 | DC_2 | 0.5 | + + + +;; + +(def joinrds (tc/dataset {:a (range 1 7) + :b (range 7 13) + :c (range 13 19) + :ID (seq "bbbaac") + :d ["hello" "hello" "hello" "water" "water" "world"]})) + +;; => _unnamed [6 5]: +;; | :a | :b | :c | :ID | :d | +;; |---:|---:|---:|-----|-------| +;; | 1 | 7 | 13 | b | hello | +;; | 2 | 8 | 14 | b | hello | +;; | 3 | 9 | 15 | b | hello | +;; | 4 | 10 | 16 | a | water | +;; | 5 | 11 | 17 | a | water | +;; | 6 | 12 | 18 | c | world | + +(-> joinrds + (tc/group-by [:ID :d]) + (tc/ungroup)) + +;; => _unnamed [6 5]: +;; | :a | :b | :c | :ID | :d | +;; |---:|---:|---:|-----|-------| +;; | 1 | 7 | 13 | b | hello | +;; | 2 | 8 | 14 | b | hello | +;; | 3 | 9 | 15 | b | hello | +;; | 4 | 10 | 16 | a | water | +;; | 5 | 11 | 17 | a | water | +;; | 6 | 12 | 18 | c | world | + +(-> joinrds + (tc/group-by [:ID :d]) + (tc/ungroup {:add-group-id-as-column :blah})) + +;; => _unnamed [6 6]: +;; | :blah | :a | :b | :c | :ID | :d | +;; |------:|---:|---:|---:|-----|-------| +;; | 0 | 1 | 7 | 13 | b | hello | +;; | 0 | 2 | 8 | 14 | b | hello | +;; | 0 | 3 | 9 | 15 | b | hello | +;; | 1 | 4 | 10 | 16 | a | water | +;; | 1 | 5 | 11 | 17 | a | water | +;; | 2 | 6 | 12 | 18 | c | world | + +(-> joinrds + (tc/group-by [:ID :d]) + (tc/unmark-group)) + +;; => _unnamed [3 3]: +;; | :name | :group-id | :data | +;; |----------------------|----------:|------------------------------------| +;; | {:ID \b, :d "hello"} | 0 | Group: {:ID \b, :d "hello"} [3 5]: | +;; | {:ID \a, :d "water"} | 1 | Group: {:ID \a, :d "water"} [2 5]: | +;; | {:ID \c, :d "world"} | 2 | Group: {:ID \c, :d "world"} [1 5]: | + +(-> joinrds + (tc/group-by [:ID :d]) + (tc/ungroup {:add-group-as-column :blah + :separate? false})) + +;; => _unnamed [6 6]: +;; | :blah | :a | :b | :c | :ID | :d | +;; |----------------------|---:|---:|---:|-----|-------| +;; | {:ID \b, :d "hello"} | 1 | 7 | 13 | b | hello | +;; | {:ID \b, :d "hello"} | 2 | 8 | 14 | b | hello | +;; | {:ID \b, :d "hello"} | 3 | 9 | 15 | b | hello | +;; | {:ID \a, :d "water"} | 4 | 10 | 16 | a | water | +;; | {:ID \a, :d "water"} | 5 | 11 | 17 | a | water | +;; | {:ID \c, :d "world"} | 6 | 12 | 18 | c | world | + + +(-> joinrds + (tc/group-by :ID) + (tc/ungroup {:add-group-as-column :blah})) + +;; => _unnamed [6 6]: +;; | :blah | :a | :b | :c | :ID | :d | +;; |-------|---:|---:|---:|-----|-------| +;; | b | 1 | 7 | 13 | b | hello | +;; | b | 2 | 8 | 14 | b | hello | +;; | b | 3 | 9 | 15 | b | hello | +;; | a | 4 | 10 | 16 | a | water | +;; | a | 5 | 11 | 17 | a | water | +;; | c | 6 | 12 | 18 | c | world | + + +(-> joinrds + (tc/group-by (juxt :ID :d)) + (tc/unmark-group)) + +;; => _unnamed [3 3]: +;; | :name | :group-id | :data | +;; |--------------|----------:|----------------------------| +;; | [\b "hello"] | 0 | Group: [\b "hello"] [3 5]: | +;; | [\a "water"] | 1 | Group: [\a "water"] [2 5]: | +;; | [\c "world"] | 2 | Group: [\c "world"] [1 5]: | + +(-> joinrds + (tc/group-by (juxt :ID :d)) + (tc/ungroup {:add-group-as-column :blah})) + +;; => _unnamed [6 7]: +;; | :blah-0 | :blah-1 | :a | :b | :c | :ID | :d | +;; |---------|---------|---:|---:|---:|-----|-------| +;; | b | hello | 1 | 7 | 13 | b | hello | +;; | b | hello | 2 | 8 | 14 | b | hello | +;; | b | hello | 3 | 9 | 15 | b | hello | +;; | a | water | 4 | 10 | 16 | a | water | +;; | a | water | 5 | 11 | 17 | a | water | +;; | c | world | 6 | 12 | 18 | c | world | + +(-> joinrds + (tc/group-by (juxt :ID :d)) + (tc/ungroup {:add-group-as-column :blah + :separate? false})) + +;; => _unnamed [6 6]: +;; | :blah | :a | :b | :c | :ID | :d | +;; |--------------|---:|---:|---:|-----|-------| +;; | [\b "hello"] | 1 | 7 | 13 | b | hello | +;; | [\b "hello"] | 2 | 8 | 14 | b | hello | +;; | [\b "hello"] | 3 | 9 | 15 | b | hello | +;; | [\a "water"] | 4 | 10 | 16 | a | water | +;; | [\a "water"] | 5 | 11 | 17 | a | water | +;; | [\c "world"] | 6 | 12 | 18 | c | world | + + +(-> joinrds + (tc/group-by [:ID :d]) + (tc/aggregate-columns [:a :b :c] dfn/mean)) + +;; => _unnamed [3 5]: +;; | :ID | :d | :a | :b | :c | +;; |-----|-------|----:|-----:|-----:| +;; | b | hello | 2.0 | 8.0 | 14.0 | +;; | a | water | 4.5 | 10.5 | 16.5 | +;; | c | world | 6.0 | 12.0 | 18.0 | + +(-> joinrds + (tc/group-by [:ID :d]) + (tc/aggregate-columns [:a :b :c] dfn/mean {:separate? false})) + +;; => _unnamed [3 4]: +;; | :$group-name | :a | :b | :c | +;; |----------------------|----:|-----:|-----:| +;; | {:ID \b, :d "hello"} | 2.0 | 8.0 | 14.0 | +;; | {:ID \a, :d "water"} | 4.5 | 10.5 | 16.5 | +;; | {:ID \c, :d "world"} | 6.0 | 12.0 | 18.0 | + + +;; #108 + +(let [qids ["AGYSUB" "LOC" "AGELVL" "EDLVL"] + per-val (-> (tc/dataset "per-val.csv.gz") + (tc/set-dataset-name "per-val")) + per-qid (-> (tc/dataset "per-qid.csv.gz") + (tc/set-dataset-name "per-qid"))] + (-> (tc/left-join per-val per-qid qids) + (tc/select-rows (fn [row] + (or (not= (get row "per-qid.AGYSUB") (get row "AGYSUB")) + (not= (get row "per-qid.LOC") (get row "LOC")) + (not= (get row "per-qid.AGELVL") (get row "AGELVL")) + (not= (get row "per-qid.EDLVL") (get row "EDLVL"))))))) + +(ds/select-rows (ds/->dataset []) [0]) +;; => _unnamed [0 0] + + +;; + +(get-in (read-string (slurp "deps.edn")) [:deps 'techascent/tech.ml.dataset :mvn/version]) +;; => "7.000-beta-50" + +(nth (read-string (slurp "project.clj")) 2) + +(def ds1 (tc/dataset {:a [1 2 1 2 3 4 nil nil 4] + :b (range 101 110) + :c (map str "abs tract")})) +(def ds2 (tc/dataset {:a [nil 1 2 5 4 3 2 1 nil] + :b (range 110 101 -1) + :c (map str "datatable") + :d (symbol "X") + :e [3 4 5 6 7 nil 8 1 1]})) + +(tc/left-join ds1 ds2 :b {:hashing (fn [[v]] (mod v 5))}) + +(defn last-char + [ds] + (->> (ds/value-reader ds) + (map (comp last str first)))) + +(last-char ds1) +;; => (\1 \2 \3 \4 \5 \6 \7 \8 \9) + +(last-char ds2) +;; => (\0 \9 \8 \7 \6 \5 \4 \3 \2) + +(def new-ds1 (ds/add-or-update-column ds1 :z (last-char ds1))) +(def new-ds2 (ds/add-or-update-column ds2 :z (last-char ds2))) + +(j/left-join :z new-ds1 new-ds2) + + +(def ds1 (ds/->dataset {:a '(\1 \2 \3 \4 \5 \6 \7 \8 \9)})) +(def ds2 (ds/->dataset {:a '(\0 \9 \8 \7 \6 \5 \4 \3 \2)})) + +(ds1 :a) +;; => #tech.v3.dataset.column[9] +;; :a +;; [1, 2, 3, 4, 5, 6, 7, 8, 9] + +(ds2 :a) +;; => #tech.v3.dataset.column[9] +;; :a +;; [0, 9, 8, 7, 6, 5, 4, 3, 2] + +(j/left-join :a ds1 ds2) + +(j/left-join :a ds1 ds1) +;; => left-outer-join [9 2]: +;; | :a | :right.a | +;; |----|----------| +;; | 1 | 1 | +;; | 2 | 2 | +;; | 3 | 3 | +;; | 4 | 4 | +;; | 5 | 5 | +;; | 6 | 6 | +;; | 7 | 7 | +;; | 8 | 8 | +;; | 9 | 9 | + + +(j/left-join :a ds2 ds2) +;; => left-outer-join [9 2]: +;; | :a | :right.a | +;; |----|----------| +;; | 0 | 0 | +;; | 9 | 9 | +;; | 8 | 8 | +;; | 7 | 7 | +;; | 6 | 6 | +;; | 5 | 5 | +;; | 4 | 4 | +;; | 3 | 3 | +;; | 2 | 2 | + + +(tc/dataset "data/data/billboard/billboard.csv.gz") + +(with-open [io (-> (tio/input-stream "data.zip") + (java.util.zip.ZipInputStream.))] + (ds-io/str->file-info (.getName (.getNextEntry io)))) +;; => {:gzipped? false, :file-type :unknown} + +(zip/zipfile->dataset-seq "data/data.zip") + +;; + +(defn get-rand [n col] (repeatedly n #(rand-nth col))) + +(def actions (tc/dataset {:campaign (get-rand 1000 [1000 1001 1002 1000 1000]) + :click (get-rand 1000 [true false false false]) + :skip (get-rand 1000 [true false]) + :abandon (get-rand 1000 [true true true false])})) + +(-> actions + (tc/convert-types :type/boolean :int16) ;; convert true/false to 1/0 + (tc/group-by [:campaign]) + (tc/aggregate {:impressions tc/row-count + :clicks #(dfn/sum (:click %)) + :skips #(dfn/sum (:skip %)) + :abandons #(dfn/sum (:abandon %))}) + (tc/map-rows (fn [{:keys [clicks abandons impressions]}] + {:ctr% (* 100 (/ clicks impressions)) + :atr% (* 100 (/ abandons impressions))}))) + +;; => _unnamed [3 7]: +;; | :campaign | :impressions | :clicks | :skips | :abandons | :ctr% | :atr% | +;; |----------:|-------------:|--------:|-------:|----------:|------------:|------------:| +;; | 1001 | 182 | 52.0 | 82.0 | 127.0 | 28.57142857 | 69.78021978 | +;; | 1000 | 609 | 157.0 | 314.0 | 450.0 | 25.77996716 | 73.89162562 | +;; | 1002 | 209 | 47.0 | 113.0 | 160.0 | 22.48803828 | 76.55502392 | + + +(-> actions + (tc/convert-types :type/boolean :int16) ;; convert true/false to 1/0 + (tc/add-column :impressions 1) ;; add artificial column filled with '1' + (tc/group-by [:campaign]) + (tc/aggregate-columns [:impressions :click :skip :abandon] dfn/sum) ;; just sum selected columns + (tc/map-rows (fn [{:keys [click abandon impressions]}] ;; calculate + {:ctr% (* 100 (/ click impressions)) + :atr% (* 100 (/ abandon impressions))})) + (tc/convert-types [:impressions :click :skip :abandon] :int32) + (tc/rename-columns {:click :clicks :skip :skips :abandon :abandons})) + +;; => _unnamed [3 7]: +;; | :campaign | :impressions | :clicks | :skips | :abandons | :ctr% | :atr% | +;; |----------:|-------------:|--------:|-------:|----------:|------------:|------------:| +;; | 1001 | 182 | 52 | 82 | 127 | 28.57142857 | 69.78021978 | +;; | 1000 | 609 | 157 | 314 | 450 | 25.77996716 | 73.89162562 | +;; | 1002 | 209 | 47 | 113 | 160 | 22.48803828 | 76.55502392 | + + +(def ds1 (tc/dataset [{:a 1 :b "test"} {:a 2 :b "hi"}])) +(def ds2 (tc/dataset [{:a 2 :b "hi"}])) + +(tc/difference ds1 ds2) +;; => difference [1 2]: +;; | :a | :b | +;; |---:|------| +;; | 1 | test | + + +(def ds (tc/dataset {:a ["a" "" " " "b"]})) + +ds +;; => _unnamed [4 1]: +;; | :a | +;; |----| +;; | a | +;; | | +;; | | +;; | b | + +(tc/info ds) +;; => _unnamed: descriptive-stats [1 7]: +;; | :col-name | :datatype | :n-valid | :n-missing | :mode | :first | :last | +;; |-----------|-----------|---------:|-----------:|-------|--------|-------| +;; | :a | :string | 3 | 1 | a | a | b | + +(tc/replace-missing ds :a :value "it was a missing value") +;; => _unnamed [4 1]: +;; | :a | +;; |------------------------| +;; | a | +;; | it was a missing value | +;; | | +;; | b | + + +(def ds (tc/dataset {:a [1 2 3 4]})) +(def c (ds :a)) + +c +;; => #tech.v3.dataset.column[4] +;; :a +;; [1, 2, 3, 4] + +(associative? c) ;; => true +(assoc c 2 11) ;; => [1 2 11 4] + +(sequential? c) ;; => true +(seqable? c) ;; => true +(seq c) ;; => (1 2 3 4) + +(reversible? c) ;; => true +(reverse c) ;; => (4 3 2 1) + +(indexed? c) ;; => true +(c 2) ;; => 3 + +;; however + +(vector? c) ;; => false +(seq? c) ;; => false + + +(-> {:a [1 nil 2] + :b [3 4 nil]} + (tc/dataset) + (tc/rows :as-maps {:nil-missing? false})) diff --git a/project.clj b/project.clj index 7147585..e420ef5 100644 --- a/project.clj +++ b/project.clj @@ -1,4 +1,4 @@ -(defproject scicloj/tablecloth "7.000-beta-27" +(defproject scicloj/tablecloth "7.007" :description "Dataset manipulation library built on the top of tech.ml.dataset." :url "https://github.com/scicloj/tablecloth" :license {:name "The MIT Licence" @@ -7,6 +7,6 @@ :middleware [lein-tools-deps.plugin/resolve-dependencies-with-deps-edn] :lein-tools-deps/config {:config-files [:install :user :project]} :profiles {:dev {:cloverage {:runner :midje} - :dependencies [[midje "1.9.9"]] + :dependencies [[midje "1.10.9"]] :plugins [[lein-midje "3.2.1"] - [lein-cloverage "1.1.2"]]}}) + [lein-cloverage "1.2.4"]]}}) diff --git a/src/tablecloth/api.clj b/src/tablecloth/api.clj index f5f770e..71b71ea 100644 --- a/src/tablecloth/api.clj +++ b/src/tablecloth/api.clj @@ -295,7 +295,7 @@ column-names function returns names according to columns-selector (defn dataset - "Create `dataset`. + "Create a `dataset`. Dataset can be created from: @@ -306,7 +306,111 @@ column-names function returns names according to columns-selector * array of arrays * single value - Single value is set only when it's not possible to find a path for given data. If tech.ml.dataset throws an exception, it's won;t be printed. To print a stack trace, set `stack-trace?` option to `true`." + Single value is set only when it's not possible to find a path for given data. If tech.ml.dataset throws an exception, it's won;t be printed. To print a stack trace, set `stack-trace?` option to `true`. + + ds/->dataset documentation: + + Create a dataset from either csv/tsv or a sequence of maps. + + * A `String` be interpreted as a file (or gzipped file if it + ends with .gz) of tsv or csv data. The system will attempt to autodetect if this + is csv or tsv and then engineering around detecting datatypes all of which can + be overridden. + + * InputStreams have no file type and thus a `file-type` must be provided in the + options. + + * A sequence of maps may be passed in in which case the first N maps are scanned in + order to derive the column datatypes before the actual columns are created. + + Parquet, xlsx, and xls formats require that you require the appropriate libraries + which are `tech.v3.libs.parquet` for parquet, `tech.v3.libs.fastexcel` for xlsx, + and `tech.v3.libs.poi` for xls. + + + Arrow support is provided via the tech.v3.libs.Arrow namespace not via a file-type + overload as the Arrow project current has 3 different file types and it is not clear + what their final suffix will be or which of the three file types it will indicate. + Please see documentation in the `tech.v3.libs.arrow` namespace for further information + on Arrow file types. + + Options: + + - `:dataset-name` - set the name of the dataset. + - `:file-type` - Override filetype discovery mechanism for strings or force a particular + parser for an input stream. Note that parquet must have paths on disk + and cannot currently load from input stream. Acceptible file types are: + #{:csv :tsv :xlsx :xls :parquet}. + - `:gzipped?` - for file formats that support it, override autodetection and force + creation of a gzipped input stream as opposed to a normal input stream. + - `:column-whitelist` - either sequence of string column names or sequence of column + indices of columns to whitelist. + - `:column-blacklist` - either sequence of string column names or sequence of column + indices of columns to blacklist. + - `:num-rows` - Number of rows to read + - `:header-row?` - Defaults to true, indicates the first row is a header. + - `:key-fn` - function to be applied to column names. Typical use is: + `:key-fn keyword`. + - `:separator` - Add a character separator to the list of separators to auto-detect. + - `:csv-parser` - Implementation of univocity's AbstractParser to use. If not + provided a default permissive parser is used. This way you parse anything that + univocity supports (so flat files and such). + - `:bad-row-policy` - One of three options: :skip, :error, :carry-on. Defaults to + :carry-on. Some csv data has ragged rows and in this case we have several + options. If the option is :carry-on then we either create a new column or add + missing values for columns that had no data for that row. + - `:skip-bad-rows?` - Legacy option. Use :bad-row-policy. + - `:disable-comment-skipping?` - As default, the `#` character is recognised as a + line comment when found in the beginning of a line of text in a CSV file, + and the row will be ignored. Set `true` to disable this behavior. + - `:max-chars-per-column` - Defaults to 4096. Columns with more characters that this + will result in an exception. + - `:max-num-columns` - Defaults to 8192. CSV,TSV files with more columns than this + will fail to parse. For more information on this option, please visit: + https://github.com/uniVocity/univocity-parsers/issues/301 + - `:text-temp-dir` - The temporary directory to use for file-backed text. Setting + this value to boolean 'false' turns off file backed text which is the default. If a + tech.v3.resource stack context is opened the file will be deleted when the context + closes else it will be deleted when the gc cleans up the dataset. A shutdown hook is + added as a last resort to ensure the file is cleaned up. + - `:n-initial-skip-rows` - Skip N rows initially. This currently may include the + header row. Works across both csv and spreadsheet datasets. + - `:parser-type` - Default parser to use if no parser-fn is specified for that column. + For csv files, the default parser type is `:string` which indicates a promotional + string parser. For sequences of maps, the default parser type is :object. It can + be useful in some contexts to use the `:string` parser with sequences of maps or + maps of columns. + - `:parser-fn` - + - `keyword?` - all columns parsed to this datatype. For example: + `{:parser-fn :string}` + - `map?` - `{column-name parse-method}` parse each column with specified + `parse-method`. + The `parse-method` can be: + - `keyword?` - parse the specified column to this datatype. For example: + `{:parser-fn {:answer :boolean :id :int32}}` + - tuple - pair of `[datatype parse-data]` in which case container of type + `[datatype]` will be created. `parse-data` can be one of: + - `:relaxed?` - data will be parsed such that parse failures of the standard + parse functions do not stop the parsing process. :unparsed-values and + :unparsed-indexes are available in the metadata of the column that tell + you the values that failed to parse and their respective indexes. + - `fn?` - function from str-> one of `:tech.v3.dataset/missing`, + `:tech.v3.dataset/parse-failure`, or the parsed value. + Exceptions here always kill the parse process. :missing will get marked + in the missing indexes, and :parse-failure will result in the index being + added to missing, the unparsed the column's :unparsed-values and + :unparsed-indexes will be updated. + - `string?` - for datetime types, this will turned into a DateTimeFormatter via + DateTimeFormatter/ofPattern. For `:text` you can specify the backing file + to use. + - `DateTimeFormatter` - use with the appropriate temporal parse static function + to parse the value. + + - `map?` - the header-name-or-idx is used to lookup value. If not nil, then + value can be any of the above options. Else the default column parser + is used. + + Returns a new dataset" ([] (tablecloth.api.dataset/dataset )) ([data] @@ -508,8 +612,7 @@ column-names function returns names according to columns-selector (defn info "Returns a statistcial information about the columns of a dataset. - `result-type ` can be :descriptive or :columns - " + `result-type ` can be :descriptive or :columns" ([ds] (tablecloth.api.dataset/info ds)) ([ds result-type] @@ -532,9 +635,9 @@ column-names function returns names according to columns-selector (defn join-columns "Join clumns of dataset. Accepts: -dataset -column selector (as in select-columns) -options + dataset + column selector (as in select-columns) + options `:separator` (default -) `:drop-columns?` - whether to drop source columns or not (default true) `:result-type` @@ -649,7 +752,7 @@ options (defn print-dataset "Prints dataset into console. For options see tech.v3.dataset.print/dataset-data->str -" + " ([ds] (tablecloth.api.dataset/print-dataset ds)) ([ds options] @@ -747,14 +850,19 @@ options (defn rows "Returns rows of dataset. Result type can be any of: - * `:as-maps` - * `:as-double-arrays` - * `:as-seqs` - " + * `:as-maps` - maps + * `:as-double-arrays` - double arrays + * `:as-seqs` - reader (sequence, default) + * `:as-vecs` - vectors + + If you want to elide nils in maps set `:nil-missing?` option to false (default: `true`). + Another option - `:copying?` - when true row values are copied on read (default: `false`)." ([ds] (tablecloth.api.dataset/rows ds)) ([ds result-type] - (tablecloth.api.dataset/rows ds result-type))) + (tablecloth.api.dataset/rows ds result-type)) + ([ds result-type options] + (tablecloth.api.dataset/rows ds result-type options))) (defn select diff --git a/src/tablecloth/api/dataset.clj b/src/tablecloth/api/dataset.clj index 7d1d123..3eabfa0 100644 --- a/src/tablecloth/api/dataset.clj +++ b/src/tablecloth/api/dataset.clj @@ -47,7 +47,7 @@ (defn- array-of-arrays? [in] (and in (= "[[" (subs (.getName (class in)) 0 2)))) (defn dataset - "Create `dataset`. + "Create a `dataset`. Dataset can be created from: @@ -58,7 +58,11 @@ * array of arrays * single value - Single value is set only when it's not possible to find a path for given data. If tech.ml.dataset throws an exception, it's won;t be printed. To print a stack trace, set `stack-trace?` option to `true`." + Single value is set only when it's not possible to find a path for given data. If tech.ml.dataset throws an exception, it's won;t be printed. To print a stack trace, set `stack-trace?` option to `true`. + + ds/->dataset documentation: + + " ([] (ds/new-dataset nil)) ([data] (dataset data nil)) @@ -89,9 +93,12 @@ (do (when stack-trace? (.printStackTrace e)) (let [row {single-value-column-name data}] - (ds/->dataset [(if error-column? - (assoc row :$error (.getMessage e)) - row)] options)))))))) + (ds/->dataset (if error-column? + (assoc row :$error (.getMessage e)) + row) options)))))))) + +;; https://github.com/scicloj/tablecloth/issues/112 +(alter-meta! #'dataset update :doc str (:doc (meta #'ds/->dataset))) (defn shape "Returns shape of the dataset [rows, cols]" @@ -107,8 +114,7 @@ (defn info "Returns a statistcial information about the columns of a dataset. - `result-type ` can be :descriptive or :columns - " + `result-type ` can be :descriptive or :columns" ([ds] (info ds :descriptive)) ([ds result-type] (condp = result-type @@ -144,23 +150,29 @@ (defn rows "Returns rows of dataset. Result type can be any of: - * `:as-maps` - * `:as-double-arrays` - * `:as-seqs` - " + * `:as-maps` - maps + * `:as-double-arrays` - double arrays + * `:as-seqs` - reader (sequence, default) + * `:as-vecs` - vectors + + If you want to elide nils in maps set `:nil-missing?` option to false (default: `true`). + Another option - `:copying?` - when true row values are copied on read (default: `false`)." ([ds] (rows ds :as-seqs)) - ([ds result-type] - (case result-type - :as-maps (ds/mapseq-reader ds) - :as-double-arrays (into-array (map double-array (ds/value-reader ds))) - :as-seqs (ds/value-reader ds) - :as-vecs (ds/rowvecs ds) - (ds/value-reader ds)))) + ([ds result-type] (rows ds result-type nil)) + ([ds result-type {:keys [nil-missing?] + :or {nil-missing? true} + :as options}] + (let [options (assoc options :nil-missing? nil-missing?)] + (case result-type + :as-maps (ds/mapseq-reader ds options) + :as-double-arrays (into-array (map double-array (ds/value-reader ds))) + :as-seqs (ds/value-reader ds options) + :as-vecs (ds/rowvecs ds options) + (ds/value-reader ds options))))) (defn print-dataset "Prints dataset into console. For options see - tech.v3.dataset.print/dataset-data->str -" + tech.v3.dataset.print/dataset-data->str" ([ds] (println (p/dataset->str ds))) ([ds options] (println (p/dataset->str ds options)))) diff --git a/src/tablecloth/api/join_concat_ds.clj b/src/tablecloth/api/join_concat_ds.clj index 2126bb7..e263281 100644 --- a/src/tablecloth/api/join_concat_ds.clj +++ b/src/tablecloth/api/join_concat_ds.clj @@ -16,12 +16,15 @@ ;; joins (defn- multi-join - [ds-left ds-right join-fn cols-left cols-right options] + [ds-left ds-right join-fn cols-left cols-right {:keys [hashing] + :or {hashing identity} :as options}] (let [join-column-name (gensym "^___join_column_hash") - dsl (join-columns ds-left join-column-name cols-left {:result-type hash - :drop-columns? false}) - dsr (join-columns ds-right join-column-name cols-right {:result-type hash - :drop-columns? false}) + dsl (join-columns ds-left join-column-name cols-left (assoc options + :result-type hashing + :drop-columns? false)) + dsr (join-columns ds-right join-column-name cols-right (assoc options + :result-type hashing + :drop-columns? false)) joined-ds (join-fn join-column-name dsl dsr options)] (-> joined-ds (ds/drop-columns [join-column-name (-> joined-ds @@ -49,8 +52,9 @@ (let [cols# (resolve-join-column-names ~'ds-left ~'ds-right ~'columns-selector) cols-left# (:left cols#) cols-right# (:right cols#) - opts# (or ~'options {})] - (if (= 1 (count cols-left#)) + opts# (or ~'options {}) + hashing# (:hashing opts#)] + (if (and (= 1 (count cols-left#)) (not hashing#)) (~impl [(first cols-left#) (first cols-right#)] ~'ds-left ~'ds-right opts#) (multi-join ~'ds-left ~'ds-right ~impl cols-left# cols-right# opts#)))))))) diff --git a/src/tablecloth/api/join_separate.clj b/src/tablecloth/api/join_separate.clj index b77f578..9fba74d 100644 --- a/src/tablecloth/api/join_separate.clj +++ b/src/tablecloth/api/join_separate.clj @@ -14,14 +14,14 @@ [ds target-column join-function col-names drop-columns?] (let [cols (select-columns ds col-names) result (add-column ds target-column (when (seq cols) (->> (ds/value-reader cols) - (map join-function))))] + (map join-function))))] (if drop-columns? (drop-columns result col-names) result))) (defn join-columns "Join clumns of dataset. Accepts: -dataset -column selector (as in select-columns) -options + dataset + column selector (as in select-columns) + options `:separator` (default -) `:drop-columns?` - whether to drop source columns or not (default true) `:result-type` @@ -36,7 +36,7 @@ options :or {separator "-" drop-columns? true result-type :string} :as _conf}] - (let [missing-subst-fn #(map (fn [v] (or v missing-subst)) %) + (let [missing-subst-fn #(mapv (fn [v] (or v missing-subst)) %) col-names (column-names ds columns-selector) join-function (comp (cond (= :map result-type) #(zipmap col-names %) diff --git a/src/tablecloth/api/lift_operators.clj b/src/tablecloth/api/lift_operators.clj index 5257387..a22c170 100644 --- a/src/tablecloth/api/lift_operators.clj +++ b/src/tablecloth/api/lift_operators.clj @@ -1,29 +1,201 @@ (ns tablecloth.api.lift-operators - (:require [tablecloth.api :refer [select-columns]])) + (:require [tablecloth.api :refer [select-columns add-or-replace-column]] + [tablecloth.utils.codegen :refer [do-lift]])) -(require '[tablecloth.column.api.operators]) +(defn get-meta [fn-sym] + (-> fn-sym resolve meta)) -(def ops-mappings (ns-publics 'tablecloth.column.api.operators)) +(defn get-arglists [fn-sym] + (-> fn-sym get-meta :arglists)) -(defn lift-op [fn-sym] - (let [defn (symbol "defn") - let (symbol "let")] - `(~defn ~(symbol (name fn-sym)) - ~'[ds & columns-selector] - (~let [just-selected-ds# (select-columns ~'ds ~'columns-selector)] - #_cols# - (apply ~fn-sym (tablecloth.api.dataset/columns just-selected-ds#)))))) +(defn get-docstring [fn-sym] + (-> fn-sym get-meta :docstring)) + +(defn max-cols-allowed [arglists] + (let [col-symbol-set #{'x 'y 'z} + longest-arglist (reduce + #(if (> (count %1) (count %2)) %1 %2) arglists)] + (if (= longest-arglist '[x y & args]) + Double/POSITIVE_INFINITY + (count + (clojure.set/intersection + col-symbol-set + (set longest-arglist)))))) -(lift-op 'tablecloth.column.api.operators/+) -(eval (lift-op 'tablecloth.column.api.operators/+)) +(defn convert-arglists [arglists target-column?] + (let [convert-arglist + (fn [arglist] + (apply conj + (if target-column? + '[ds target-col columns-selector] + '[ds columns-selector]) + (apply vector (clojure.set/difference (set arglist) #{'x 'y 'z '& 'args}))))] + (->> arglists (map convert-arglist) set (apply list)))) -(def ds (tablecloth.api/dataset {:a [1 2 3 4 5] - :b [6 7 8 9 10] - :c [11 12 13 14 16]})) +(defn build-docstring [fn-sym] + (let [original-docstring (get-docstring fn-sym) + max-allowed (max-cols-allowed (get-arglists fn-sym))] + (format + "Applies the operation %s to the columns selected by + `columns-selector` and returns a new ds with the the result in + `target-col`. %s + + `columns-selector can be: + - name + - sequence of names + - map of names with new names (rename) + - function which filter names (via column metadata)" + fn-sym + (when (< max-allowed Double/POSITIVE_INFINITY) + (format + "This operation takes a maximum of %s columns, so + `columns-selector` can yield no more than that many columns." + max-allowed))))) -(+ ds :a :c) +(defn lift-op + "Takes a function symbol `fn-sym` and generates a function that + applies that function to one or more columns of a dataset, placing + the result in the target column. + Resulting signature: + (lift-op [fn-sym]) => (fn [ds columns-selector target-col] ...)" + [fn-sym {:keys [return-ds?] + :or {return-ds? false}}] + (let [defn (symbol "defn") + let (symbol "let") + arglists (get-arglists fn-sym) + max-cols (max-cols-allowed arglists) + lifted-arglists (convert-arglists arglists return-ds?) + new-fn-sym (symbol (name fn-sym)) + new-docstring (build-docstring fn-sym)] + `(~defn ~new-fn-sym + ~new-docstring + ~@(for [args lifted-arglists] + `(~args + (~let [selected-cols# (apply vector (tablecloth.api.dataset/columns + (select-columns ~'ds ~'columns-selector))) + + args-to-pass# (concat selected-cols# [~@(drop 3 args)])] + (if (>= ~max-cols (count selected-cols#)) + (->> args-to-pass# + (apply ~fn-sym) + ~(if return-ds? `(add-or-replace-column ~'ds ~'target-col) `(identity))) + (throw (Exception. (str "Exceeded maximum number of columns allowed for operation.")))))))))) +(def serialized-lift-fn-lookup + {'[distance + distance-squared + dot-product + kurtosis + magnitude + magnitude-squared + mean + mean-fast + median + quartile-1 + quartile-3 + #_quartiles ;; this returns a vector of quartiles not sure it fits here + reduce-* + reduce-+ + reduce-max + reduce-min + skew + sum + sum-fast + variance] + {:lift-fn lift-op :optional-args {:return-ds? false}} + '[* + + + - + / + < + <= + > + >= + abs + acos + and + asin + atan + atan2 + bit-and + bit-and-not + bit-clear + bit-flip + bit-not + bit-or + bit-set + bit-shift-left + bit-shift-right + bit-xor + cbrt + ceil + cos + cosh + cummax + cummin + cumprod + cumsum + eq + ;; equals ;; leaving this one out. not clear its signature is right. + even? + exp + expm1 + ;; fill-range ;; this one has an odd return value, not a column + finite? + floor + get-significand + hypot + identity + ieee-remainder + infinite? + log + log10 + log1p + logistic + mathematical-integer? + max + min + nan? + neg? + next-down + next-up + normalize + not + not-eq + odd? + or + percentiles + pos? + pow + quot + rem + rint + round + shift + signum + sin + sinh + sq + sqrt + tan + tanh + to-degrees + to-radians + ulp + unsigned-bit-shift-right + zero?] {:lift-fn lift-op :optional-args {:return-ds? true}}}) +(comment + (do-lift {:target-ns 'tablecloth.api.operators + :source-ns 'tablecloth.column.api.operators + :lift-fn-lookup serialized-lift-fn-lookup + :deps ['tablecloth.api.lift_operators] + :exclusions + '[* + - / < <= > >= abs and bit-and bit-and-not bit-clear bit-flip + bit-not bit-or bit-set bit-shift-left bit-shift-right bit-test bit-xor + even? identity infinite? max min neg? not odd? odd? or pos? quot rem + unsigned-bit-shift-right zero?]}) + ,) diff --git a/src/tablecloth/api/operators.clj b/src/tablecloth/api/operators.clj new file mode 100644 index 0000000..d58bd85 --- /dev/null +++ b/src/tablecloth/api/operators.clj @@ -0,0 +1,3661 @@ +(ns + tablecloth.api.operators + (:require + [tablecloth.column.api.operators] + [tablecloth.api.lift_operators]) + (:refer-clojure + :exclude + [* + + + - + / + < + <= + > + >= + abs + and + bit-and + bit-and-not + bit-clear + bit-flip + bit-not + bit-or + bit-set + bit-shift-left + bit-shift-right + bit-test + bit-xor + even? + identity + infinite? + max + min + neg? + not + odd? + odd? + or + pos? + quot + rem + unsigned-bit-shift-right + zero?])) + +(defn + kurtosis + "Applies the operation tablecloth.column.api.operators/kurtosis to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" + ([ds columns-selector options] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [])] + (if + (clojure.core/>= + 1 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/kurtosis) + (clojure.core/identity)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation.")))))) + ([ds columns-selector] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [])] + (if + (clojure.core/>= + 1 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/kurtosis) + (clojure.core/identity)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))) + +(defn + bit-set + "Applies the operation tablecloth.column.api.operators/bit-set to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. null\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" + ([ds target-col columns-selector] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [])] + (if + (clojure.core/>= + ##Inf + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/bit-set) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))) + +(defn + finite? + "Applies the operation tablecloth.column.api.operators/finite? to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" + ([ds target-col columns-selector options] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [options])] + (if + (clojure.core/>= + 1 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/finite?) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation.")))))) + ([ds target-col columns-selector] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [])] + (if + (clojure.core/>= + 1 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/finite?) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))) + +(defn + distance + "Applies the operation tablecloth.column.api.operators/distance to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 2 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" + ([ds columns-selector] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [])] + (if + (clojure.core/>= + 2 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/distance) + (clojure.core/identity)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))) + +(defn + reduce-min + "Applies the operation tablecloth.column.api.operators/reduce-min to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" + ([ds columns-selector] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [])] + (if + (clojure.core/>= + 1 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/reduce-min) + (clojure.core/identity)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))) + +(defn + to-radians + "Applies the operation tablecloth.column.api.operators/to-radians to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" + ([ds target-col columns-selector options] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [options])] + (if + (clojure.core/>= + 1 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/to-radians) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation.")))))) + ([ds target-col columns-selector] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [])] + (if + (clojure.core/>= + 1 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/to-radians) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))) + +(defn + bit-shift-right + "Applies the operation tablecloth.column.api.operators/bit-shift-right to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. null\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" + ([ds target-col columns-selector] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [])] + (if + (clojure.core/>= + ##Inf + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply + tablecloth.column.api.operators/bit-shift-right) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))) + +(defn + ieee-remainder + "Applies the operation tablecloth.column.api.operators/ieee-remainder to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. null\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" + ([ds target-col columns-selector] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [])] + (if + (clojure.core/>= + ##Inf + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply + tablecloth.column.api.operators/ieee-remainder) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))) + +(defn + log + "Applies the operation tablecloth.column.api.operators/log to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" + ([ds target-col columns-selector options] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [options])] + (if + (clojure.core/>= + 1 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/log) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation.")))))) + ([ds target-col columns-selector] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [])] + (if + (clojure.core/>= + 1 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/log) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))) + +(defn + bit-shift-left + "Applies the operation tablecloth.column.api.operators/bit-shift-left to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. null\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" + ([ds target-col columns-selector] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [])] + (if + (clojure.core/>= + ##Inf + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply + tablecloth.column.api.operators/bit-shift-left) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))) + +(defn + acos + "Applies the operation tablecloth.column.api.operators/acos to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" + ([ds target-col columns-selector options] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [options])] + (if + (clojure.core/>= + 1 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/acos) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation.")))))) + ([ds target-col columns-selector] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [])] + (if + (clojure.core/>= + 1 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/acos) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))) + +(defn + to-degrees + "Applies the operation tablecloth.column.api.operators/to-degrees to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" + ([ds target-col columns-selector options] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [options])] + (if + (clojure.core/>= + 1 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/to-degrees) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation.")))))) + ([ds target-col columns-selector] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [])] + (if + (clojure.core/>= + 1 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/to-degrees) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))) + +(defn + < + "Applies the operation tablecloth.column.api.operators/< to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 3 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" + ([ds target-col columns-selector] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [])] + (if + (clojure.core/>= + 3 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/<) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))) + +(defn + floor + "Applies the operation tablecloth.column.api.operators/floor to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" + ([ds target-col columns-selector options] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [options])] + (if + (clojure.core/>= + 1 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/floor) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation.")))))) + ([ds target-col columns-selector] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [])] + (if + (clojure.core/>= + 1 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/floor) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))) + +(defn + atan2 + "Applies the operation tablecloth.column.api.operators/atan2 to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. null\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" + ([ds target-col columns-selector] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [])] + (if + (clojure.core/>= + ##Inf + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/atan2) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))) + +(defn + normalize + "Applies the operation tablecloth.column.api.operators/normalize to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" + ([ds target-col columns-selector] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [])] + (if + (clojure.core/>= + 1 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/normalize) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))) + +(defn + hypot + "Applies the operation tablecloth.column.api.operators/hypot to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. null\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" + ([ds target-col columns-selector] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [])] + (if + (clojure.core/>= + ##Inf + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/hypot) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))) + +(defn + tanh + "Applies the operation tablecloth.column.api.operators/tanh to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" + ([ds target-col columns-selector options] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [options])] + (if + (clojure.core/>= + 1 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/tanh) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation.")))))) + ([ds target-col columns-selector] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [])] + (if + (clojure.core/>= + 1 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/tanh) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))) + +(defn + sq + "Applies the operation tablecloth.column.api.operators/sq to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" + ([ds target-col columns-selector options] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [options])] + (if + (clojure.core/>= + 1 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/sq) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation.")))))) + ([ds target-col columns-selector] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [])] + (if + (clojure.core/>= + 1 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/sq) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))) + +(defn + sum + "Applies the operation tablecloth.column.api.operators/sum to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" + ([ds columns-selector options] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [])] + (if + (clojure.core/>= + 1 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/sum) + (clojure.core/identity)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation.")))))) + ([ds columns-selector] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [])] + (if + (clojure.core/>= + 1 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/sum) + (clojure.core/identity)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))) + +(defn + pos? + "Applies the operation tablecloth.column.api.operators/pos? to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" + ([ds target-col columns-selector options] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [options])] + (if + (clojure.core/>= + 1 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/pos?) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation.")))))) + ([ds target-col columns-selector] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [])] + (if + (clojure.core/>= + 1 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/pos?) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))) + +(defn + shift + "Applies the operation tablecloth.column.api.operators/shift to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" + ([ds target-col columns-selector n] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [n])] + (if + (clojure.core/>= + 1 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/shift) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))) + +(defn + ceil + "Applies the operation tablecloth.column.api.operators/ceil to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" + ([ds target-col columns-selector options] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [options])] + (if + (clojure.core/>= + 1 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/ceil) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation.")))))) + ([ds target-col columns-selector] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [])] + (if + (clojure.core/>= + 1 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/ceil) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))) + +(defn + bit-xor + "Applies the operation tablecloth.column.api.operators/bit-xor to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. null\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" + ([ds target-col columns-selector] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [])] + (if + (clojure.core/>= + ##Inf + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/bit-xor) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))) + +(defn + unsigned-bit-shift-right + "Applies the operation tablecloth.column.api.operators/unsigned-bit-shift-right to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. null\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" + ([ds target-col columns-selector] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [])] + (if + (clojure.core/>= + ##Inf + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply + tablecloth.column.api.operators/unsigned-bit-shift-right) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))) + +(defn + neg? + "Applies the operation tablecloth.column.api.operators/neg? to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" + ([ds target-col columns-selector options] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [options])] + (if + (clojure.core/>= + 1 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/neg?) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation.")))))) + ([ds target-col columns-selector] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [])] + (if + (clojure.core/>= + 1 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/neg?) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))) + +(defn + <= + "Applies the operation tablecloth.column.api.operators/<= to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 3 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" + ([ds target-col columns-selector] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [])] + (if + (clojure.core/>= + 3 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/<=) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))) + +(defn + * + "Applies the operation tablecloth.column.api.operators/* to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. null\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" + ([ds target-col columns-selector] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [])] + (if + (clojure.core/>= + ##Inf + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/*) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))) + +(defn + min + "Applies the operation tablecloth.column.api.operators/min to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. null\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" + ([ds target-col columns-selector] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [])] + (if + (clojure.core/>= + ##Inf + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/min) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))) + +(defn + atan + "Applies the operation tablecloth.column.api.operators/atan to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" + ([ds target-col columns-selector options] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [options])] + (if + (clojure.core/>= + 1 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/atan) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation.")))))) + ([ds target-col columns-selector] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [])] + (if + (clojure.core/>= + 1 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/atan) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))) + +(defn + mathematical-integer? + "Applies the operation tablecloth.column.api.operators/mathematical-integer? to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" + ([ds target-col columns-selector options] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [options])] + (if + (clojure.core/>= + 1 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply + tablecloth.column.api.operators/mathematical-integer?) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation.")))))) + ([ds target-col columns-selector] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [])] + (if + (clojure.core/>= + 1 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply + tablecloth.column.api.operators/mathematical-integer?) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))) + +(defn + cumprod + "Applies the operation tablecloth.column.api.operators/cumprod to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" + ([ds target-col columns-selector options] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [options])] + (if + (clojure.core/>= + 1 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/cumprod) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation.")))))) + ([ds target-col columns-selector] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [])] + (if + (clojure.core/>= + 1 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/cumprod) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))) + +(defn + expm1 + "Applies the operation tablecloth.column.api.operators/expm1 to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" + ([ds target-col columns-selector options] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [options])] + (if + (clojure.core/>= + 1 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/expm1) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation.")))))) + ([ds target-col columns-selector] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [])] + (if + (clojure.core/>= + 1 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/expm1) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))) + +(defn + identity + "Applies the operation tablecloth.column.api.operators/identity to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" + ([ds target-col columns-selector options] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [options])] + (if + (clojure.core/>= + 1 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/identity) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation.")))))) + ([ds target-col columns-selector] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [])] + (if + (clojure.core/>= + 1 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/identity) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))) + +(defn + reduce-max + "Applies the operation tablecloth.column.api.operators/reduce-max to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" + ([ds columns-selector] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [])] + (if + (clojure.core/>= + 1 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/reduce-max) + (clojure.core/identity)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))) + +(defn + cumsum + "Applies the operation tablecloth.column.api.operators/cumsum to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" + ([ds target-col columns-selector options] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [options])] + (if + (clojure.core/>= + 1 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/cumsum) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation.")))))) + ([ds target-col columns-selector] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [])] + (if + (clojure.core/>= + 1 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/cumsum) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))) + +(defn + nan? + "Applies the operation tablecloth.column.api.operators/nan? to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" + ([ds target-col columns-selector options] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [options])] + (if + (clojure.core/>= + 1 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/nan?) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation.")))))) + ([ds target-col columns-selector] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [])] + (if + (clojure.core/>= + 1 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/nan?) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))) + +(defn + bit-and-not + "Applies the operation tablecloth.column.api.operators/bit-and-not to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. null\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" + ([ds target-col columns-selector] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [])] + (if + (clojure.core/>= + ##Inf + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/bit-and-not) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))) + +(defn + logistic + "Applies the operation tablecloth.column.api.operators/logistic to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" + ([ds target-col columns-selector options] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [options])] + (if + (clojure.core/>= + 1 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/logistic) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation.")))))) + ([ds target-col columns-selector] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [])] + (if + (clojure.core/>= + 1 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/logistic) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))) + +(defn + cos + "Applies the operation tablecloth.column.api.operators/cos to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" + ([ds target-col columns-selector options] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [options])] + (if + (clojure.core/>= + 1 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/cos) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation.")))))) + ([ds target-col columns-selector] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [])] + (if + (clojure.core/>= + 1 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/cos) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))) + +(defn + log10 + "Applies the operation tablecloth.column.api.operators/log10 to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" + ([ds target-col columns-selector options] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [options])] + (if + (clojure.core/>= + 1 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/log10) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation.")))))) + ([ds target-col columns-selector] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [])] + (if + (clojure.core/>= + 1 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/log10) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))) + +(defn + quot + "Applies the operation tablecloth.column.api.operators/quot to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. null\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" + ([ds target-col columns-selector] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [])] + (if + (clojure.core/>= + ##Inf + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/quot) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))) + +(defn + dot-product + "Applies the operation tablecloth.column.api.operators/dot-product to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 2 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" + ([ds columns-selector] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [])] + (if + (clojure.core/>= + 2 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/dot-product) + (clojure.core/identity)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))) + +(defn + tan + "Applies the operation tablecloth.column.api.operators/tan to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" + ([ds target-col columns-selector options] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [options])] + (if + (clojure.core/>= + 1 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/tan) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation.")))))) + ([ds target-col columns-selector] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [])] + (if + (clojure.core/>= + 1 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/tan) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))) + +(defn + cbrt + "Applies the operation tablecloth.column.api.operators/cbrt to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" + ([ds target-col columns-selector options] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [options])] + (if + (clojure.core/>= + 1 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/cbrt) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation.")))))) + ([ds target-col columns-selector] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [])] + (if + (clojure.core/>= + 1 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/cbrt) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))) + +(defn + eq + "Applies the operation tablecloth.column.api.operators/eq to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 2 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" + ([ds target-col columns-selector] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [])] + (if + (clojure.core/>= + 2 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/eq) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))) + +(defn + mean + "Applies the operation tablecloth.column.api.operators/mean to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" + ([ds columns-selector options] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [])] + (if + (clojure.core/>= + 1 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/mean) + (clojure.core/identity)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation.")))))) + ([ds columns-selector] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [])] + (if + (clojure.core/>= + 1 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/mean) + (clojure.core/identity)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))) + +(defn + > + "Applies the operation tablecloth.column.api.operators/> to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 3 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" + ([ds target-col columns-selector] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [])] + (if + (clojure.core/>= + 3 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/>) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))) + +(defn + not-eq + "Applies the operation tablecloth.column.api.operators/not-eq to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 2 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" + ([ds target-col columns-selector] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [])] + (if + (clojure.core/>= + 2 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/not-eq) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))) + +(defn + even? + "Applies the operation tablecloth.column.api.operators/even? to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" + ([ds target-col columns-selector options] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [options])] + (if + (clojure.core/>= + 1 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/even?) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation.")))))) + ([ds target-col columns-selector] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [])] + (if + (clojure.core/>= + 1 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/even?) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))) + +(defn + sqrt + "Applies the operation tablecloth.column.api.operators/sqrt to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" + ([ds target-col columns-selector options] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [options])] + (if + (clojure.core/>= + 1 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/sqrt) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation.")))))) + ([ds target-col columns-selector] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [])] + (if + (clojure.core/>= + 1 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/sqrt) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))) + +(defn + reduce-* + "Applies the operation tablecloth.column.api.operators/reduce-* to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" + ([ds columns-selector] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [])] + (if + (clojure.core/>= + 1 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/reduce-*) + (clojure.core/identity)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))) + +(defn + next-down + "Applies the operation tablecloth.column.api.operators/next-down to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" + ([ds target-col columns-selector options] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [options])] + (if + (clojure.core/>= + 1 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/next-down) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation.")))))) + ([ds target-col columns-selector] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [])] + (if + (clojure.core/>= + 1 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/next-down) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))) + +(defn + - + "Applies the operation tablecloth.column.api.operators/- to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. null\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" + ([ds target-col columns-selector] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [])] + (if + (clojure.core/>= + ##Inf + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/-) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))) + +(defn + or + "Applies the operation tablecloth.column.api.operators/or to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 2 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" + ([ds target-col columns-selector] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [])] + (if + (clojure.core/>= + 2 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/or) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))) + +(defn + distance-squared + "Applies the operation tablecloth.column.api.operators/distance-squared to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 2 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" + ([ds columns-selector] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [])] + (if + (clojure.core/>= + 2 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply + tablecloth.column.api.operators/distance-squared) + (clojure.core/identity)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))) + +(defn + pow + "Applies the operation tablecloth.column.api.operators/pow to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. null\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" + ([ds target-col columns-selector] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [])] + (if + (clojure.core/>= + ##Inf + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/pow) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))) + +(defn + next-up + "Applies the operation tablecloth.column.api.operators/next-up to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" + ([ds target-col columns-selector options] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [options])] + (if + (clojure.core/>= + 1 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/next-up) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation.")))))) + ([ds target-col columns-selector] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [])] + (if + (clojure.core/>= + 1 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/next-up) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))) + +(defn + skew + "Applies the operation tablecloth.column.api.operators/skew to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" + ([ds columns-selector options] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [])] + (if + (clojure.core/>= + 1 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/skew) + (clojure.core/identity)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation.")))))) + ([ds columns-selector] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [])] + (if + (clojure.core/>= + 1 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/skew) + (clojure.core/identity)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))) + +(defn + exp + "Applies the operation tablecloth.column.api.operators/exp to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" + ([ds target-col columns-selector options] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [options])] + (if + (clojure.core/>= + 1 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/exp) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation.")))))) + ([ds target-col columns-selector] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [])] + (if + (clojure.core/>= + 1 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/exp) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))) + +(defn + mean-fast + "Applies the operation tablecloth.column.api.operators/mean-fast to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" + ([ds columns-selector] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [])] + (if + (clojure.core/>= + 1 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/mean-fast) + (clojure.core/identity)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))) + +(defn + zero? + "Applies the operation tablecloth.column.api.operators/zero? to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" + ([ds target-col columns-selector options] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [options])] + (if + (clojure.core/>= + 1 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/zero?) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation.")))))) + ([ds target-col columns-selector] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [])] + (if + (clojure.core/>= + 1 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/zero?) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))) + +(defn + rem + "Applies the operation tablecloth.column.api.operators/rem to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. null\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" + ([ds target-col columns-selector] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [])] + (if + (clojure.core/>= + ##Inf + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/rem) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))) + +(defn + cosh + "Applies the operation tablecloth.column.api.operators/cosh to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" + ([ds target-col columns-selector options] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [options])] + (if + (clojure.core/>= + 1 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/cosh) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation.")))))) + ([ds target-col columns-selector] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [])] + (if + (clojure.core/>= + 1 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/cosh) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))) + +(defn + variance + "Applies the operation tablecloth.column.api.operators/variance to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" + ([ds columns-selector options] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [])] + (if + (clojure.core/>= + 1 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/variance) + (clojure.core/identity)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation.")))))) + ([ds columns-selector] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [])] + (if + (clojure.core/>= + 1 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/variance) + (clojure.core/identity)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))) + +(defn + reduce-+ + "Applies the operation tablecloth.column.api.operators/reduce-+ to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" + ([ds columns-selector] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [])] + (if + (clojure.core/>= + 1 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/reduce-+) + (clojure.core/identity)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))) + +(defn + get-significand + "Applies the operation tablecloth.column.api.operators/get-significand to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" + ([ds target-col columns-selector options] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [options])] + (if + (clojure.core/>= + 1 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply + tablecloth.column.api.operators/get-significand) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation.")))))) + ([ds target-col columns-selector] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [])] + (if + (clojure.core/>= + 1 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply + tablecloth.column.api.operators/get-significand) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))) + +(defn + bit-and + "Applies the operation tablecloth.column.api.operators/bit-and to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. null\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" + ([ds target-col columns-selector] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [])] + (if + (clojure.core/>= + ##Inf + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/bit-and) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))) + +(defn + not + "Applies the operation tablecloth.column.api.operators/not to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" + ([ds target-col columns-selector options] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [options])] + (if + (clojure.core/>= + 1 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/not) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation.")))))) + ([ds target-col columns-selector] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [])] + (if + (clojure.core/>= + 1 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/not) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))) + +(defn + cummin + "Applies the operation tablecloth.column.api.operators/cummin to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" + ([ds target-col columns-selector options] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [options])] + (if + (clojure.core/>= + 1 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/cummin) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation.")))))) + ([ds target-col columns-selector] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [])] + (if + (clojure.core/>= + 1 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/cummin) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))) + +(defn + magnitude + "Applies the operation tablecloth.column.api.operators/magnitude to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" + ([ds columns-selector] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [])] + (if + (clojure.core/>= + 1 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/magnitude) + (clojure.core/identity)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))) + +(defn + cummax + "Applies the operation tablecloth.column.api.operators/cummax to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" + ([ds target-col columns-selector options] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [options])] + (if + (clojure.core/>= + 1 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/cummax) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation.")))))) + ([ds target-col columns-selector] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [])] + (if + (clojure.core/>= + 1 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/cummax) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))) + +(defn + / + "Applies the operation tablecloth.column.api.operators// to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. null\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" + ([ds target-col columns-selector] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [])] + (if + (clojure.core/>= + ##Inf + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators//) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))) + +(defn + bit-or + "Applies the operation tablecloth.column.api.operators/bit-or to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. null\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" + ([ds target-col columns-selector] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [])] + (if + (clojure.core/>= + ##Inf + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/bit-or) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))) + +(defn + >= + "Applies the operation tablecloth.column.api.operators/>= to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 3 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" + ([ds target-col columns-selector] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [])] + (if + (clojure.core/>= + 3 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/>=) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))) + +(defn + bit-flip + "Applies the operation tablecloth.column.api.operators/bit-flip to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. null\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" + ([ds target-col columns-selector] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [])] + (if + (clojure.core/>= + ##Inf + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/bit-flip) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))) + +(defn + log1p + "Applies the operation tablecloth.column.api.operators/log1p to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" + ([ds target-col columns-selector options] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [options])] + (if + (clojure.core/>= + 1 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/log1p) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation.")))))) + ([ds target-col columns-selector] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [])] + (if + (clojure.core/>= + 1 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/log1p) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))) + +(defn + asin + "Applies the operation tablecloth.column.api.operators/asin to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" + ([ds target-col columns-selector options] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [options])] + (if + (clojure.core/>= + 1 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/asin) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation.")))))) + ([ds target-col columns-selector] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [])] + (if + (clojure.core/>= + 1 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/asin) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))) + +(defn + quartile-3 + "Applies the operation tablecloth.column.api.operators/quartile-3 to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" + ([ds columns-selector options] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [])] + (if + (clojure.core/>= + 1 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/quartile-3) + (clojure.core/identity)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation.")))))) + ([ds columns-selector] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [])] + (if + (clojure.core/>= + 1 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/quartile-3) + (clojure.core/identity)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))) + +(defn + infinite? + "Applies the operation tablecloth.column.api.operators/infinite? to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" + ([ds target-col columns-selector options] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [options])] + (if + (clojure.core/>= + 1 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/infinite?) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation.")))))) + ([ds target-col columns-selector] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [])] + (if + (clojure.core/>= + 1 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/infinite?) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))) + +(defn + round + "Applies the operation tablecloth.column.api.operators/round to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" + ([ds target-col columns-selector options] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [options])] + (if + (clojure.core/>= + 1 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/round) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation.")))))) + ([ds target-col columns-selector] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [])] + (if + (clojure.core/>= + 1 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/round) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))) + +(defn + quartile-1 + "Applies the operation tablecloth.column.api.operators/quartile-1 to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" + ([ds columns-selector options] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [])] + (if + (clojure.core/>= + 1 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/quartile-1) + (clojure.core/identity)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation.")))))) + ([ds columns-selector] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [])] + (if + (clojure.core/>= + 1 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/quartile-1) + (clojure.core/identity)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))) + +(defn + odd? + "Applies the operation tablecloth.column.api.operators/odd? to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" + ([ds target-col columns-selector options] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [options])] + (if + (clojure.core/>= + 1 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/odd?) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation.")))))) + ([ds target-col columns-selector] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [])] + (if + (clojure.core/>= + 1 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/odd?) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))) + +(defn + bit-clear + "Applies the operation tablecloth.column.api.operators/bit-clear to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. null\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" + ([ds target-col columns-selector] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [])] + (if + (clojure.core/>= + ##Inf + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/bit-clear) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))) + +(defn + + + "Applies the operation tablecloth.column.api.operators/+ to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. null\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" + ([ds target-col columns-selector] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [])] + (if + (clojure.core/>= + ##Inf + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/+) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))) + +(defn + abs + "Applies the operation tablecloth.column.api.operators/abs to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" + ([ds target-col columns-selector options] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [options])] + (if + (clojure.core/>= + 1 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/abs) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation.")))))) + ([ds target-col columns-selector] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [])] + (if + (clojure.core/>= + 1 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/abs) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))) + +(defn + median + "Applies the operation tablecloth.column.api.operators/median to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" + ([ds columns-selector options] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [])] + (if + (clojure.core/>= + 1 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/median) + (clojure.core/identity)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation.")))))) + ([ds columns-selector] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [])] + (if + (clojure.core/>= + 1 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/median) + (clojure.core/identity)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))) + +(defn + sinh + "Applies the operation tablecloth.column.api.operators/sinh to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" + ([ds target-col columns-selector options] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [options])] + (if + (clojure.core/>= + 1 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/sinh) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation.")))))) + ([ds target-col columns-selector] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [])] + (if + (clojure.core/>= + 1 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/sinh) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))) + +(defn + rint + "Applies the operation tablecloth.column.api.operators/rint to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" + ([ds target-col columns-selector options] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [options])] + (if + (clojure.core/>= + 1 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/rint) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation.")))))) + ([ds target-col columns-selector] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [])] + (if + (clojure.core/>= + 1 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/rint) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))) + +(defn + bit-not + "Applies the operation tablecloth.column.api.operators/bit-not to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" + ([ds target-col columns-selector options] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [options])] + (if + (clojure.core/>= + 1 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/bit-not) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation.")))))) + ([ds target-col columns-selector] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [])] + (if + (clojure.core/>= + 1 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/bit-not) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))) + +(defn + max + "Applies the operation tablecloth.column.api.operators/max to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. null\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" + ([ds target-col columns-selector] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [])] + (if + (clojure.core/>= + ##Inf + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/max) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))) + +(defn + ulp + "Applies the operation tablecloth.column.api.operators/ulp to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" + ([ds target-col columns-selector options] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [options])] + (if + (clojure.core/>= + 1 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/ulp) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation.")))))) + ([ds target-col columns-selector] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [])] + (if + (clojure.core/>= + 1 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/ulp) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))) + +(defn + percentiles + "Applies the operation tablecloth.column.api.operators/percentiles to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" + ([ds target-col columns-selector percentages options] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat + selected-cols__42927__auto__ + [percentages options])] + (if + (clojure.core/>= + 1 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/percentiles) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation.")))))) + ([ds target-col columns-selector percentages] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [percentages])] + (if + (clojure.core/>= + 1 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/percentiles) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))) + +(defn + sin + "Applies the operation tablecloth.column.api.operators/sin to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" + ([ds target-col columns-selector options] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [options])] + (if + (clojure.core/>= + 1 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/sin) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation.")))))) + ([ds target-col columns-selector] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [])] + (if + (clojure.core/>= + 1 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/sin) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))) + +(defn + sum-fast + "Applies the operation tablecloth.column.api.operators/sum-fast to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" + ([ds columns-selector] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [])] + (if + (clojure.core/>= + 1 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/sum-fast) + (clojure.core/identity)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))) + +(defn + signum + "Applies the operation tablecloth.column.api.operators/signum to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" + ([ds target-col columns-selector options] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [options])] + (if + (clojure.core/>= + 1 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/signum) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation.")))))) + ([ds target-col columns-selector] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [])] + (if + (clojure.core/>= + 1 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/signum) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))) + +(defn + magnitude-squared + "Applies the operation tablecloth.column.api.operators/magnitude-squared to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" + ([ds columns-selector] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [])] + (if + (clojure.core/>= + 1 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply + tablecloth.column.api.operators/magnitude-squared) + (clojure.core/identity)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))) + +(defn + and + "Applies the operation tablecloth.column.api.operators/and to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 2 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" + ([ds target-col columns-selector] + (let + [selected-cols__42927__auto__ + (clojure.core/apply + clojure.core/vector + (tablecloth.api.dataset/columns + (tablecloth.api/select-columns ds columns-selector))) + args-to-pass__42928__auto__ + (clojure.core/concat selected-cols__42927__auto__ [])] + (if + (clojure.core/>= + 2 + (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/->> + args-to-pass__42928__auto__ + (clojure.core/apply tablecloth.column.api.operators/and) + (tablecloth.api/add-or-replace-column ds target-col)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))) + diff --git a/src/tablecloth/api/reshape.clj b/src/tablecloth/api/reshape.clj index fdc4352..abcde6d 100644 --- a/src/tablecloth/api/reshape.clj +++ b/src/tablecloth/api/reshape.clj @@ -234,10 +234,11 @@ join-name starting-ds-count fold-fn concat-columns-with concat-value-with) starting-ds - (ds/mapseq-reader grouped-ds))] ;; perform join on groups and create new columns + (ds/mapseq-reader grouped-ds {:nil-missing? true}))] ;; perform join on groups and create new columns (cond-> (-> (if join-on-single? ;; finalize, recreate original columns from join column, and reorder stuff result (-> (separate-column result join-name rest-cols identity {:drop-column? true}) (reorder-columns rest-cols))) (ds/set-dataset-name (ds/dataset-name ds))) drop-missing? (drop-missing))))) + diff --git a/src/tablecloth/column/api/lift_operators.clj b/src/tablecloth/column/api/lift_operators.clj index 305d9d4..2c398c6 100644 --- a/src/tablecloth/column/api/lift_operators.clj +++ b/src/tablecloth/column/api/lift_operators.clj @@ -1,13 +1,72 @@ (ns tablecloth.column.api.lift-operators - (:require [tablecloth.column.api.utils :refer [do-lift lift-op]])) + (:require [tablecloth.utils.codegen :refer [do-lift]] + [tablecloth.column.api :refer [column]] + [tech.v3.datatype.argtypes :refer [arg-type]])) + +(defn get-meta [fn-sym] + (-> fn-sym resolve meta)) + +(defn get-arglists [fn-sym] + (-> fn-sym get-meta :arglists)) + +(defn get-docstring [fn-sym] + (-> fn-sym get-meta :doc)) + +(defn return-scalar-or-column [item] + (let [item-type (arg-type item)] + (if (= item-type :reader) + (column item) + item))) + +(defn lift-op + ([fn-sym] + (lift-op fn-sym nil)) + ([fn-sym {:keys [new-args]}] + (let [defn (symbol "defn") + let (symbol "let") + docstring (get-docstring fn-sym) + original-args (get-arglists fn-sym) + sort-by-arg-count (fn [argslist] + (sort #(< (count %1) (count %2)) argslist))] + (if new-args + `(~defn ~(symbol (name fn-sym)) + ~(or docstring "") + ~@(for [[new-arg new-arg-lookup original-arg] + (map vector (sort-by-arg-count (keys new-args)) + (sort-by-arg-count (vals new-args)) + (sort-by-arg-count original-args)) + :let [filtered-original-arg (filter (partial not= '&) original-arg)]] + (list + (if new-arg new-arg original-arg) + `(~let [original-result# (~fn-sym + ~@(for [oldarg filtered-original-arg] + (if (nil? (get new-arg-lookup oldarg)) + oldarg + (get new-arg-lookup oldarg))))] + (return-scalar-or-column original-result#))))) + `(~defn ~(symbol (name fn-sym)) + ~(or docstring "") + ~@(for [arg original-args + :let [[explicit-args rest-arg-expr] (split-with (partial not= '&) arg)]] + (list + arg + `(~let [original-result# ~(if (empty? rest-arg-expr) + `(~fn-sym ~@explicit-args) + `(apply ~fn-sym ~@explicit-args ~(second rest-arg-expr)))] + (return-scalar-or-column original-result#))))))))) (def serialized-lift-fn-lookup - {['* + {['< + '<= + '> + '>= + '* '+ '- '/ 'abs 'acos + 'and 'asin 'atan 'atan2 @@ -26,198 +85,94 @@ 'ceil 'cos 'cosh + 'cumprod + 'cumsum + 'cummax + 'cummin + 'descriptive-statistics + 'distance + 'distance-squared + 'dot-product + 'even? + 'equals 'exp 'expm1 + 'eq + 'fill-range + 'finite? 'floor 'get-significand 'hypot 'identity 'ieee-remainder + 'infinite? + 'kendalls-correlation + 'kurtosis 'log 'log10 'log1p 'logistic + 'mathematical-integer? 'magnitude + 'magnitude-squared 'max + 'mean + 'mean-fast + 'median 'min + 'nan? + 'neg? 'next-down 'next-up - + 'normalize + 'not + 'not-eq + 'odd? + 'or + 'pearsons-correlation + 'percentiles + 'pos? 'pow + 'quartiles + 'quartile-1 + 'quartile-3 'quot + 'reduce-min + 'reduce-max + 'reduce-* + 'reduce-+ 'rem 'rint + 'round + 'skew + 'shift 'signum 'sin 'sinh + 'spearmans-correlation 'sq 'sqrt + 'standard-deviation + 'sum + 'sum-fast 'tan 'tanh 'to-degrees 'to-radians 'ulp - 'unsigned-bit-shift-right] lift-op - ['kurtosis - 'sum - 'mean - 'skew + 'unsigned-bit-shift-right 'variance - 'standard-deviation - 'quartile-3 - 'quartile-1 - 'median] (fn [fn-sym fn-meta] - (lift-op - fn-sym fn-meta - {:new-args {'[x] {'data 'x} - '[x options] {'data 'x}}})) - ['even? - 'finite? - 'infinite? - 'mathematical-integer? - 'nan? - 'neg? - 'not - 'odd? - 'pos? - 'round - 'zero?] - (fn [fn-sym fn-meta] - (lift-op - fn-sym fn-meta - {:new-args {'[x] {'arg 'x} - '[x options] {'arg 'x}}})) - ['percentiles] (fn [fn-sym fn-meta] - (lift-op - fn-sym fn-meta - {:new-args {'[x percentiles] {'data 'x - 'percentages 'percentiles} - '[x percentiles options] {'data 'x - 'percentages 'percentiles}}})) - ['shift] (fn [fn-sym fn-meta] - (lift-op - fn-sym fn-meta - {:new-args {'[x n] {'rdr 'x}}})) - ['descriptive-statistics] (fn [fn-sym fn-meta] - (lift-op - fn-sym fn-meta - {:new-args {'[x] {'rdr 'x} - '[x stats-names] {'rdr 'x} - '[x stats-names options] {'rdr 'x} - '[x stats-names stats-data options] {'src-rdr 'x}}})) - ['quartiles] (fn [fn-sym fn-meta] - (lift-op - fn-sym fn-meta - {:new-args {'[x] {'item 'x} - '[x options] {'item 'x}}})) - ['fill-range] (fn [fn-sym fn-meta] - (lift-op - fn-sym fn-meta - {:new-args {'[x max-span] {'numeric-data 'x}}})) - ['reduce-min - 'reduce-max - 'reduce-* - 'reduce-+] (fn [fn-sym fn-meta] - (lift-op + 'zero?] {:lift-fn lift-op}}) - fn-sym fn-meta - {:new-args {'[x] {'rdr 'x}}})) - ['mean-fast - 'sum-fast - 'magnitude-squared] (fn [fn-sym fn-meta] - (lift-op - fn-sym fn-meta - {:new-args {'[x] {'data 'x}}})) - ['kendalls-correlation - 'pearsons-correlation - 'spearmans-correlation] (fn [fn-sym fn-meta] - (lift-op - fn-sym fn-meta - {:new-args {'[x y] {'lhs 'x - 'rhs 'y} - '[x y options] {'lhs 'x - 'rhs 'y}}})) - ['cumprod - 'cumsum - 'cummax - 'cummin] (fn [fn-sym fn-meta] - (lift-op - fn-sym fn-meta - {:new-args {'[x] {'data 'x}}})) - ['normalize] (fn [fn-sym fn-meta] - (lift-op - fn-sym fn-meta - {:new-args {'[x] {'item 'x}}})) - ['< - '<= - '> - '>=] (fn [fn-sym fn-meta] - (lift-op - fn-sym fn-meta - {:new-args {'[x y] {'lhs 'x - 'rhs 'y} - '[x y z] {'lhs 'x - 'mid 'y - 'rhs 'z}}})) - ['equals] (fn [fn-sym fn-meta] - (lift-op - fn-sym fn-meta - {:new-args {'[x y & args] {'lhs 'x - 'rhs 'y}}})) - ['distance - 'dot-product - 'eq - 'not-eq - 'or - 'distance-squared - 'and] (fn [fn-sym fn-meta] - (lift-op - fn-sym fn-meta - {:new-args {'[x y] {'lhs 'x - 'rhs 'y}}}))}) - - -(defn deserialize-lift-fn-lookup [] - (reduce (fn [m [symlist liftfn]] - (loop [syms symlist - result m] - (if (empty? syms) - result - (recur (rest syms) (assoc result (first syms) liftfn))))) - {} - serialized-lift-fn-lookup)) (comment - (do-lift (deserialize-lift-fn-lookup) - 'tablecloth.column.api.operators - 'tech.v3.datatype.functional - '[* + - / < <= > >= abs and bit-and bit-and-not bit-clear bit-flip + (do-lift {:target-ns 'tablecloth.column.api.operators + :source-ns 'tech.v3.datatype.functional + :lift-fn-lookup serialized-lift-fn-lookup + :deps ['tablecloth.column.api.lift_operators] + :exclusions + '[* + - / < <= > >= abs and bit-and bit-and-not bit-clear bit-flip bit-not bit-or bit-set bit-shift-left bit-shift-right bit-test bit-xor even? identity infinite? max min neg? not odd? odd? or pos? quot rem - unsigned-bit-shift-right zero?] - "src/tablecloth/column/api/operators.clj") + unsigned-bit-shift-right zero?]}) ,) - - -(comment - - (def mylift (fn [fn-sym fn-meta] - (lift-op - fn-sym fn-meta - {:new-args {'[x y] {'lhs 'x - 'rhs 'y} - '[x y z] {'lhs 'x - 'mid 'y - 'rhs 'z}}} - #_{:new-args '([x y z]) - :new-args-lookup {'lhs 'x - 'mid 'y - 'rhs 'z}}))) - - (def mappings (ns-publics 'tech.v3.datatype.functional)) - - (mylift 'tech.v3.datatype.functional/> (meta (get mappings '>))) - - tech.v3.datatype.functional/> - - ) diff --git a/src/tablecloth/column/api/operators.clj b/src/tablecloth/column/api/operators.clj index 51b8934..de724d5 100644 --- a/src/tablecloth/column/api/operators.clj +++ b/src/tablecloth/column/api/operators.clj @@ -1,6 +1,8 @@ (ns tablecloth.column.api.operators - (:require [tech.v3.datatype.functional] [tablecloth.column.api.utils]) + (:require + [tech.v3.datatype.functional] + [tablecloth.column.api.lift_operators]) (:refer-clojure :exclude [* @@ -43,1616 +45,1634 @@ (defn kurtosis "" - ([x] - (let - [original-result__34672__auto__ - (tech.v3.datatype.functional/kurtosis x)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34672__auto__))) ([x options] (let - [original-result__34672__auto__ + [original-result__30648__auto__ (tech.v3.datatype.functional/kurtosis x options)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34672__auto__)))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__))) + ([x] + (let + [original-result__30648__auto__ + (tech.v3.datatype.functional/kurtosis x)] + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__)))) (defn bit-set "" ([x y] (let - [original-result__34673__auto__ + [original-result__30648__auto__ (tech.v3.datatype.functional/bit-set x y)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34673__auto__))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__))) ([x y & args] (let - [original-result__34673__auto__ + [original-result__30648__auto__ (clojure.core/apply tech.v3.datatype.functional/bit-set x y args)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34673__auto__)))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__)))) (defn finite? "" - ([x] - (let - [original-result__34672__auto__ - (tech.v3.datatype.functional/finite? x)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34672__auto__))) ([x options] (let - [original-result__34672__auto__ + [original-result__30648__auto__ (tech.v3.datatype.functional/finite? x options)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34672__auto__)))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__))) + ([x] + (let + [original-result__30648__auto__ + (tech.v3.datatype.functional/finite? x)] + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__)))) (defn distance "" ([x y] (let - [original-result__34672__auto__ + [original-result__30648__auto__ (tech.v3.datatype.functional/distance x y)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34672__auto__)))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__)))) (defn reduce-min "" ([x] (let - [original-result__34672__auto__ + [original-result__30648__auto__ (tech.v3.datatype.functional/reduce-min x)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34672__auto__)))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__)))) (defn to-radians "" ([x options] (let - [original-result__34673__auto__ + [original-result__30648__auto__ (tech.v3.datatype.functional/to-radians x options)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34673__auto__))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__))) ([x] (let - [original-result__34673__auto__ + [original-result__30648__auto__ (tech.v3.datatype.functional/to-radians x)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34673__auto__)))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__)))) (defn bit-shift-right "" ([x y] (let - [original-result__34673__auto__ + [original-result__30648__auto__ (tech.v3.datatype.functional/bit-shift-right x y)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34673__auto__))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__))) ([x y & args] (let - [original-result__34673__auto__ + [original-result__30648__auto__ (clojure.core/apply tech.v3.datatype.functional/bit-shift-right x y args)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34673__auto__)))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__)))) (defn ieee-remainder "" ([x y] (let - [original-result__34673__auto__ + [original-result__30648__auto__ (tech.v3.datatype.functional/ieee-remainder x y)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34673__auto__))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__))) ([x y & args] (let - [original-result__34673__auto__ + [original-result__30648__auto__ (clojure.core/apply tech.v3.datatype.functional/ieee-remainder x y args)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34673__auto__)))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__)))) (defn log "" ([x options] (let - [original-result__34673__auto__ + [original-result__30648__auto__ (tech.v3.datatype.functional/log x options)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34673__auto__))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__))) ([x] (let - [original-result__34673__auto__ (tech.v3.datatype.functional/log x)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34673__auto__)))) + [original-result__30648__auto__ (tech.v3.datatype.functional/log x)] + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__)))) (defn bit-shift-left "" ([x y] (let - [original-result__34673__auto__ + [original-result__30648__auto__ (tech.v3.datatype.functional/bit-shift-left x y)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34673__auto__))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__))) ([x y & args] (let - [original-result__34673__auto__ + [original-result__30648__auto__ (clojure.core/apply tech.v3.datatype.functional/bit-shift-left x y args)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34673__auto__)))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__)))) (defn acos "" ([x options] (let - [original-result__34673__auto__ + [original-result__30648__auto__ (tech.v3.datatype.functional/acos x options)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34673__auto__))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__))) ([x] (let - [original-result__34673__auto__ + [original-result__30648__auto__ (tech.v3.datatype.functional/acos x)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34673__auto__)))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__)))) (defn to-degrees "" ([x options] (let - [original-result__34673__auto__ + [original-result__30648__auto__ (tech.v3.datatype.functional/to-degrees x options)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34673__auto__))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__))) ([x] (let - [original-result__34673__auto__ + [original-result__30648__auto__ (tech.v3.datatype.functional/to-degrees x)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34673__auto__)))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__)))) (defn < "" - ([x y] - (let - [original-result__34672__auto__ (tech.v3.datatype.functional/< x y)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34672__auto__))) ([x y z] (let - [original-result__34672__auto__ + [original-result__30648__auto__ (tech.v3.datatype.functional/< x y z)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34672__auto__)))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__))) + ([x y] + (let + [original-result__30648__auto__ (tech.v3.datatype.functional/< x y)] + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__)))) (defn floor "" ([x options] (let - [original-result__34673__auto__ + [original-result__30648__auto__ (tech.v3.datatype.functional/floor x options)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34673__auto__))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__))) ([x] (let - [original-result__34673__auto__ + [original-result__30648__auto__ (tech.v3.datatype.functional/floor x)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34673__auto__)))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__)))) (defn atan2 "" ([x y] (let - [original-result__34673__auto__ + [original-result__30648__auto__ (tech.v3.datatype.functional/atan2 x y)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34673__auto__))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__))) ([x y & args] (let - [original-result__34673__auto__ + [original-result__30648__auto__ (clojure.core/apply tech.v3.datatype.functional/atan2 x y args)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34673__auto__)))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__)))) (defn normalize "" ([x] (let - [original-result__34672__auto__ + [original-result__30648__auto__ (tech.v3.datatype.functional/normalize x)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34672__auto__)))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__)))) (defn hypot "" ([x y] (let - [original-result__34673__auto__ + [original-result__30648__auto__ (tech.v3.datatype.functional/hypot x y)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34673__auto__))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__))) ([x y & args] (let - [original-result__34673__auto__ + [original-result__30648__auto__ (clojure.core/apply tech.v3.datatype.functional/hypot x y args)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34673__auto__)))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__)))) (defn tanh "" ([x options] (let - [original-result__34673__auto__ + [original-result__30648__auto__ (tech.v3.datatype.functional/tanh x options)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34673__auto__))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__))) ([x] (let - [original-result__34673__auto__ + [original-result__30648__auto__ (tech.v3.datatype.functional/tanh x)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34673__auto__)))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__)))) (defn sq "" ([x options] (let - [original-result__34673__auto__ + [original-result__30648__auto__ (tech.v3.datatype.functional/sq x options)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34673__auto__))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__))) ([x] (let - [original-result__34673__auto__ (tech.v3.datatype.functional/sq x)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34673__auto__)))) + [original-result__30648__auto__ (tech.v3.datatype.functional/sq x)] + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__)))) (defn fill-range "Given a reader of numeric data and a max span amount, produce\n a new reader where the difference between any two consecutive elements\n is less than or equal to the max span amount. Also return a bitmap of the added\n indexes. Uses linear interpolation to fill in areas, operates in double space.\n Returns\n {:result :missing}" ([x max-span] (let - [original-result__34672__auto__ + [original-result__30648__auto__ (tech.v3.datatype.functional/fill-range x max-span)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34672__auto__)))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__)))) (defn sum "Double sum of data using\n [Kahan compensated summation](https://en.wikipedia.org/wiki/Kahan_summation_algorithm)." - ([x] - (let - [original-result__34672__auto__ (tech.v3.datatype.functional/sum x)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34672__auto__))) ([x options] (let - [original-result__34672__auto__ + [original-result__30648__auto__ (tech.v3.datatype.functional/sum x options)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34672__auto__)))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__))) + ([x] + (let + [original-result__30648__auto__ (tech.v3.datatype.functional/sum x)] + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__)))) (defn pos? "" - ([x] - (let - [original-result__34672__auto__ - (tech.v3.datatype.functional/pos? x)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34672__auto__))) ([x options] (let - [original-result__34672__auto__ + [original-result__30648__auto__ (tech.v3.datatype.functional/pos? x options)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34672__auto__)))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__))) + ([x] + (let + [original-result__30648__auto__ + (tech.v3.datatype.functional/pos? x)] + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__)))) (defn shift "Shift by n and fill in with the first element for n>0 or last element for n<0.\n\n Examples:\n\n```clojure\nuser> (dfn/shift (range 10) 2)\n[0 0 0 1 2 3 4 5 6 7]\nuser> (dfn/shift (range 10) -2)\n[2 3 4 5 6 7 8 9 9 9]\n```" ([x n] (let - [original-result__34672__auto__ + [original-result__30648__auto__ (tech.v3.datatype.functional/shift x n)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34672__auto__)))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__)))) (defn ceil "" ([x options] (let - [original-result__34673__auto__ + [original-result__30648__auto__ (tech.v3.datatype.functional/ceil x options)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34673__auto__))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__))) ([x] (let - [original-result__34673__auto__ + [original-result__30648__auto__ (tech.v3.datatype.functional/ceil x)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34673__auto__)))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__)))) (defn bit-xor "" ([x y] (let - [original-result__34673__auto__ + [original-result__30648__auto__ (tech.v3.datatype.functional/bit-xor x y)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34673__auto__))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__))) ([x y & args] (let - [original-result__34673__auto__ + [original-result__30648__auto__ (clojure.core/apply tech.v3.datatype.functional/bit-xor x y args)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34673__auto__)))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__)))) (defn unsigned-bit-shift-right "" ([x y] (let - [original-result__34673__auto__ + [original-result__30648__auto__ (tech.v3.datatype.functional/unsigned-bit-shift-right x y)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34673__auto__))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__))) ([x y & args] (let - [original-result__34673__auto__ + [original-result__30648__auto__ (clojure.core/apply tech.v3.datatype.functional/unsigned-bit-shift-right x y args)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34673__auto__)))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__)))) (defn neg? "" - ([x] - (let - [original-result__34672__auto__ - (tech.v3.datatype.functional/neg? x)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34672__auto__))) ([x options] (let - [original-result__34672__auto__ + [original-result__30648__auto__ (tech.v3.datatype.functional/neg? x options)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34672__auto__)))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__))) + ([x] + (let + [original-result__30648__auto__ + (tech.v3.datatype.functional/neg? x)] + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__)))) (defn <= "" - ([x y] - (let - [original-result__34672__auto__ - (tech.v3.datatype.functional/<= x y)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34672__auto__))) ([x y z] (let - [original-result__34672__auto__ + [original-result__30648__auto__ (tech.v3.datatype.functional/<= x y z)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34672__auto__)))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__))) + ([x y] + (let + [original-result__30648__auto__ + (tech.v3.datatype.functional/<= x y)] + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__)))) (defn * "" ([x y] (let - [original-result__34673__auto__ (tech.v3.datatype.functional/* x y)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34673__auto__))) + [original-result__30648__auto__ (tech.v3.datatype.functional/* x y)] + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__))) ([x y & args] (let - [original-result__34673__auto__ + [original-result__30648__auto__ (clojure.core/apply tech.v3.datatype.functional/* x y args)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34673__auto__)))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__)))) (defn min "" ([x] (let - [original-result__34673__auto__ (tech.v3.datatype.functional/min x)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34673__auto__))) + [original-result__30648__auto__ (tech.v3.datatype.functional/min x)] + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__))) ([x y] (let - [original-result__34673__auto__ + [original-result__30648__auto__ (tech.v3.datatype.functional/min x y)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34673__auto__))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__))) ([x y & args] (let - [original-result__34673__auto__ + [original-result__30648__auto__ (clojure.core/apply tech.v3.datatype.functional/min x y args)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34673__auto__)))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__)))) (defn atan "" ([x options] (let - [original-result__34673__auto__ + [original-result__30648__auto__ (tech.v3.datatype.functional/atan x options)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34673__auto__))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__))) ([x] (let - [original-result__34673__auto__ + [original-result__30648__auto__ (tech.v3.datatype.functional/atan x)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34673__auto__)))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__)))) (defn mathematical-integer? "" - ([x] - (let - [original-result__34672__auto__ - (tech.v3.datatype.functional/mathematical-integer? x)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34672__auto__))) ([x options] (let - [original-result__34672__auto__ + [original-result__30648__auto__ (tech.v3.datatype.functional/mathematical-integer? x options)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34672__auto__)))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__))) + ([x] + (let + [original-result__30648__auto__ + (tech.v3.datatype.functional/mathematical-integer? x)] + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__)))) (defn cumprod "Cumulative running product; returns result in double space.\n\n Options:\n\n * `:nan-strategy` - one of `:keep`, `:remove`, `:exception`. Defaults to `:remove`." + ([x options] + (let + [original-result__30648__auto__ + (tech.v3.datatype.functional/cumprod x options)] + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__))) ([x] (let - [original-result__34672__auto__ + [original-result__30648__auto__ (tech.v3.datatype.functional/cumprod x)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34672__auto__)))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__)))) (defn expm1 "" ([x options] (let - [original-result__34673__auto__ + [original-result__30648__auto__ (tech.v3.datatype.functional/expm1 x options)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34673__auto__))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__))) ([x] (let - [original-result__34673__auto__ + [original-result__30648__auto__ (tech.v3.datatype.functional/expm1 x)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34673__auto__)))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__)))) (defn identity "" ([x options] (let - [original-result__34673__auto__ + [original-result__30648__auto__ (tech.v3.datatype.functional/identity x options)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34673__auto__))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__))) ([x] (let - [original-result__34673__auto__ + [original-result__30648__auto__ (tech.v3.datatype.functional/identity x)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34673__auto__)))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__)))) (defn reduce-max "" ([x] (let - [original-result__34672__auto__ + [original-result__30648__auto__ (tech.v3.datatype.functional/reduce-max x)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34672__auto__)))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__)))) (defn cumsum "Cumulative running summation; returns result in double space.\n\n Options:\n\n * `:nan-strategy` - one of `:keep`, `:remove`, `:exception`. Defaults to `:remove`." + ([x options] + (let + [original-result__30648__auto__ + (tech.v3.datatype.functional/cumsum x options)] + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__))) ([x] (let - [original-result__34672__auto__ + [original-result__30648__auto__ (tech.v3.datatype.functional/cumsum x)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34672__auto__)))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__)))) (defn descriptive-statistics "Calculate a set of descriptive statistics on a single reader.\n\n Available stats:\n #{:min :quartile-1 :sum :mean :mode :median :quartile-3 :max\n :variance :standard-deviation :skew :n-elems :kurtosis}\n\n options\n - `:nan-strategy` - defaults to :remove, one of\n [:keep :remove :exception]. The fastest option is :keep but this\n may result in your results having NaN's in them. You can also pass\n in a double predicate to filter custom double values." - ([x] - (let - [original-result__34672__auto__ - (tech.v3.datatype.functional/descriptive-statistics x)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34672__auto__))) - ([x stats-names] - (let - [original-result__34672__auto__ - (tech.v3.datatype.functional/descriptive-statistics stats-names x)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34672__auto__))) - ([x stats-names options] + ([x stats-names stats-data options] (let - [original-result__34672__auto__ + [original-result__30648__auto__ (tech.v3.datatype.functional/descriptive-statistics + x stats-names - options - x)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34672__auto__))) - ([x stats-names stats-data options] + stats-data + options)] + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__))) + ([x stats-names options] (let - [original-result__34672__auto__ + [original-result__30648__auto__ (tech.v3.datatype.functional/descriptive-statistics + x stats-names - stats-data - options - x)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34672__auto__)))) + options)] + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__))) + ([x stats-names] + (let + [original-result__30648__auto__ + (tech.v3.datatype.functional/descriptive-statistics x stats-names)] + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__))) + ([x] + (let + [original-result__30648__auto__ + (tech.v3.datatype.functional/descriptive-statistics x)] + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__)))) (defn nan? "" - ([x] - (let - [original-result__34672__auto__ - (tech.v3.datatype.functional/nan? x)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34672__auto__))) ([x options] (let - [original-result__34672__auto__ + [original-result__30648__auto__ (tech.v3.datatype.functional/nan? x options)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34672__auto__)))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__))) + ([x] + (let + [original-result__30648__auto__ + (tech.v3.datatype.functional/nan? x)] + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__)))) (defn bit-and-not "" ([x y] (let - [original-result__34673__auto__ + [original-result__30648__auto__ (tech.v3.datatype.functional/bit-and-not x y)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34673__auto__))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__))) ([x y & args] (let - [original-result__34673__auto__ + [original-result__30648__auto__ (clojure.core/apply tech.v3.datatype.functional/bit-and-not x y args)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34673__auto__)))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__)))) (defn logistic "" ([x options] (let - [original-result__34673__auto__ + [original-result__30648__auto__ (tech.v3.datatype.functional/logistic x options)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34673__auto__))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__))) ([x] (let - [original-result__34673__auto__ + [original-result__30648__auto__ (tech.v3.datatype.functional/logistic x)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34673__auto__)))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__)))) (defn cos "" ([x options] (let - [original-result__34673__auto__ + [original-result__30648__auto__ (tech.v3.datatype.functional/cos x options)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34673__auto__))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__))) ([x] (let - [original-result__34673__auto__ (tech.v3.datatype.functional/cos x)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34673__auto__)))) + [original-result__30648__auto__ (tech.v3.datatype.functional/cos x)] + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__)))) (defn log10 "" ([x options] (let - [original-result__34673__auto__ + [original-result__30648__auto__ (tech.v3.datatype.functional/log10 x options)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34673__auto__))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__))) ([x] (let - [original-result__34673__auto__ + [original-result__30648__auto__ (tech.v3.datatype.functional/log10 x)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34673__auto__)))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__)))) (defn quot "" ([x y] (let - [original-result__34673__auto__ + [original-result__30648__auto__ (tech.v3.datatype.functional/quot x y)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34673__auto__))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__))) ([x y & args] (let - [original-result__34673__auto__ + [original-result__30648__auto__ (clojure.core/apply tech.v3.datatype.functional/quot x y args)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34673__auto__)))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__)))) (defn dot-product "" ([x y] (let - [original-result__34672__auto__ + [original-result__30648__auto__ (tech.v3.datatype.functional/dot-product x y)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34672__auto__)))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__)))) (defn tan "" ([x options] (let - [original-result__34673__auto__ + [original-result__30648__auto__ (tech.v3.datatype.functional/tan x options)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34673__auto__))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__))) ([x] (let - [original-result__34673__auto__ (tech.v3.datatype.functional/tan x)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34673__auto__)))) + [original-result__30648__auto__ (tech.v3.datatype.functional/tan x)] + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__)))) (defn cbrt "" ([x options] (let - [original-result__34673__auto__ + [original-result__30648__auto__ (tech.v3.datatype.functional/cbrt x options)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34673__auto__))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__))) ([x] (let - [original-result__34673__auto__ + [original-result__30648__auto__ (tech.v3.datatype.functional/cbrt x)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34673__auto__)))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__)))) (defn eq "" ([x y] (let - [original-result__34672__auto__ + [original-result__30648__auto__ (tech.v3.datatype.functional/eq x y)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34672__auto__)))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__)))) (defn mean - "double mean of data" - ([x] - (let - [original-result__34672__auto__ - (tech.v3.datatype.functional/mean x)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34672__auto__))) + "double mean of x" ([x options] (let - [original-result__34672__auto__ + [original-result__30648__auto__ (tech.v3.datatype.functional/mean x options)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34672__auto__)))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__))) + ([x] + (let + [original-result__30648__auto__ + (tech.v3.datatype.functional/mean x)] + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__)))) (defn > "" - ([x y] - (let - [original-result__34672__auto__ (tech.v3.datatype.functional/> x y)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34672__auto__))) ([x y z] (let - [original-result__34672__auto__ + [original-result__30648__auto__ (tech.v3.datatype.functional/> x y z)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34672__auto__)))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__))) + ([x y] + (let + [original-result__30648__auto__ (tech.v3.datatype.functional/> x y)] + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__)))) (defn not-eq "" ([x y] (let - [original-result__34672__auto__ + [original-result__30648__auto__ (tech.v3.datatype.functional/not-eq x y)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34672__auto__)))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__)))) (defn even? "" - ([x] - (let - [original-result__34672__auto__ - (tech.v3.datatype.functional/even? x)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34672__auto__))) ([x options] (let - [original-result__34672__auto__ + [original-result__30648__auto__ (tech.v3.datatype.functional/even? x options)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34672__auto__)))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__))) + ([x] + (let + [original-result__30648__auto__ + (tech.v3.datatype.functional/even? x)] + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__)))) (defn spearmans-correlation "" + ([x y options] + (let + [original-result__30648__auto__ + (tech.v3.datatype.functional/spearmans-correlation x y options)] + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__))) ([x y] (let - [original-result__34672__auto__ + [original-result__30648__auto__ (tech.v3.datatype.functional/spearmans-correlation x y)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34672__auto__))) - ([x y options] - (let - [original-result__34672__auto__ - (tech.v3.datatype.functional/spearmans-correlation options x y)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34672__auto__)))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__)))) (defn sqrt "" ([x options] (let - [original-result__34673__auto__ + [original-result__30648__auto__ (tech.v3.datatype.functional/sqrt x options)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34673__auto__))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__))) ([x] (let - [original-result__34673__auto__ + [original-result__30648__auto__ (tech.v3.datatype.functional/sqrt x)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34673__auto__)))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__)))) (defn reduce-* "" ([x] (let - [original-result__34672__auto__ + [original-result__30648__auto__ (tech.v3.datatype.functional/reduce-* x)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34672__auto__)))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__)))) (defn next-down "" ([x options] (let - [original-result__34673__auto__ + [original-result__30648__auto__ (tech.v3.datatype.functional/next-down x options)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34673__auto__))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__))) ([x] (let - [original-result__34673__auto__ + [original-result__30648__auto__ (tech.v3.datatype.functional/next-down x)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34673__auto__)))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__)))) (defn - "" ([x] (let - [original-result__34673__auto__ (tech.v3.datatype.functional/- x)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34673__auto__))) + [original-result__30648__auto__ (tech.v3.datatype.functional/- x)] + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__))) ([x y] (let - [original-result__34673__auto__ (tech.v3.datatype.functional/- x y)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34673__auto__))) + [original-result__30648__auto__ (tech.v3.datatype.functional/- x y)] + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__))) ([x y & args] (let - [original-result__34673__auto__ + [original-result__30648__auto__ (clojure.core/apply tech.v3.datatype.functional/- x y args)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34673__auto__)))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__)))) (defn or "" ([x y] (let - [original-result__34672__auto__ + [original-result__30648__auto__ (tech.v3.datatype.functional/or x y)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34672__auto__)))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__)))) (defn distance-squared "" ([x y] (let - [original-result__34672__auto__ + [original-result__30648__auto__ (tech.v3.datatype.functional/distance-squared x y)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34672__auto__)))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__)))) (defn pow "" ([x y] (let - [original-result__34673__auto__ + [original-result__30648__auto__ (tech.v3.datatype.functional/pow x y)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34673__auto__))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__))) ([x y & args] (let - [original-result__34673__auto__ + [original-result__30648__auto__ (clojure.core/apply tech.v3.datatype.functional/pow x y args)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34673__auto__)))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__)))) (defn next-up "" ([x options] (let - [original-result__34673__auto__ + [original-result__30648__auto__ (tech.v3.datatype.functional/next-up x options)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34673__auto__))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__))) ([x] (let - [original-result__34673__auto__ + [original-result__30648__auto__ (tech.v3.datatype.functional/next-up x)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34673__auto__)))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__)))) (defn skew "" - ([x] - (let - [original-result__34672__auto__ - (tech.v3.datatype.functional/skew x)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34672__auto__))) ([x options] (let - [original-result__34672__auto__ + [original-result__30648__auto__ (tech.v3.datatype.functional/skew x options)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34672__auto__)))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__))) + ([x] + (let + [original-result__30648__auto__ + (tech.v3.datatype.functional/skew x)] + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__)))) (defn exp "" ([x options] (let - [original-result__34673__auto__ + [original-result__30648__auto__ (tech.v3.datatype.functional/exp x options)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34673__auto__))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__))) ([x] (let - [original-result__34673__auto__ (tech.v3.datatype.functional/exp x)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34673__auto__)))) + [original-result__30648__auto__ (tech.v3.datatype.functional/exp x)] + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__)))) (defn mean-fast - "Take the mean of the data. This operation doesn't know anything about nan hence it is\n a bit faster than the base [[mean]] fn." + "Take the mean of the x. This operation doesn't know anything about nan hence it is\n a bit faster than the base [[mean]] fn." ([x] (let - [original-result__34672__auto__ + [original-result__30648__auto__ (tech.v3.datatype.functional/mean-fast x)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34672__auto__)))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__)))) (defn zero? "" - ([x] - (let - [original-result__34672__auto__ - (tech.v3.datatype.functional/zero? x)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34672__auto__))) ([x options] (let - [original-result__34672__auto__ + [original-result__30648__auto__ (tech.v3.datatype.functional/zero? x options)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34672__auto__)))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__))) + ([x] + (let + [original-result__30648__auto__ + (tech.v3.datatype.functional/zero? x)] + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__)))) (defn rem "" ([x y] (let - [original-result__34673__auto__ + [original-result__30648__auto__ (tech.v3.datatype.functional/rem x y)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34673__auto__))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__))) ([x y & args] (let - [original-result__34673__auto__ + [original-result__30648__auto__ (clojure.core/apply tech.v3.datatype.functional/rem x y args)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34673__auto__)))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__)))) (defn cosh "" ([x options] (let - [original-result__34673__auto__ + [original-result__30648__auto__ (tech.v3.datatype.functional/cosh x options)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34673__auto__))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__))) ([x] (let - [original-result__34673__auto__ + [original-result__30648__auto__ (tech.v3.datatype.functional/cosh x)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34673__auto__)))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__)))) (defn variance "" - ([x] - (let - [original-result__34672__auto__ - (tech.v3.datatype.functional/variance x)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34672__auto__))) ([x options] (let - [original-result__34672__auto__ + [original-result__30648__auto__ (tech.v3.datatype.functional/variance x options)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34672__auto__)))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__))) + ([x] + (let + [original-result__30648__auto__ + (tech.v3.datatype.functional/variance x)] + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__)))) (defn reduce-+ "" ([x] (let - [original-result__34672__auto__ + [original-result__30648__auto__ (tech.v3.datatype.functional/reduce-+ x)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34672__auto__)))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__)))) (defn get-significand "" ([x options] (let - [original-result__34673__auto__ + [original-result__30648__auto__ (tech.v3.datatype.functional/get-significand x options)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34673__auto__))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__))) ([x] (let - [original-result__34673__auto__ + [original-result__30648__auto__ (tech.v3.datatype.functional/get-significand x)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34673__auto__)))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__)))) (defn bit-and "" ([x y] (let - [original-result__34673__auto__ + [original-result__30648__auto__ (tech.v3.datatype.functional/bit-and x y)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34673__auto__))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__))) ([x y & args] (let - [original-result__34673__auto__ + [original-result__30648__auto__ (clojure.core/apply tech.v3.datatype.functional/bit-and x y args)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34673__auto__)))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__)))) (defn kendalls-correlation "" + ([x y options] + (let + [original-result__30648__auto__ + (tech.v3.datatype.functional/kendalls-correlation x y options)] + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__))) ([x y] (let - [original-result__34672__auto__ + [original-result__30648__auto__ (tech.v3.datatype.functional/kendalls-correlation x y)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34672__auto__))) - ([x y options] - (let - [original-result__34672__auto__ - (tech.v3.datatype.functional/kendalls-correlation options x y)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34672__auto__)))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__)))) (defn not "" - ([x] - (let - [original-result__34672__auto__ (tech.v3.datatype.functional/not x)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34672__auto__))) ([x options] (let - [original-result__34672__auto__ + [original-result__30648__auto__ (tech.v3.datatype.functional/not x options)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34672__auto__)))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__))) + ([x] + (let + [original-result__30648__auto__ (tech.v3.datatype.functional/not x)] + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__)))) (defn standard-deviation "" - ([x] - (let - [original-result__34672__auto__ - (tech.v3.datatype.functional/standard-deviation x)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34672__auto__))) ([x options] (let - [original-result__34672__auto__ + [original-result__30648__auto__ (tech.v3.datatype.functional/standard-deviation x options)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34672__auto__)))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__))) + ([x] + (let + [original-result__30648__auto__ + (tech.v3.datatype.functional/standard-deviation x)] + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__)))) (defn cummin "Cumulative running min; returns result in double space.\n\n Options:\n\n * `:nan-strategy` - one of `:keep`, `:remove`, `:exception`. Defaults to `:remove`." + ([x options] + (let + [original-result__30648__auto__ + (tech.v3.datatype.functional/cummin x options)] + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__))) ([x] (let - [original-result__34672__auto__ + [original-result__30648__auto__ (tech.v3.datatype.functional/cummin x)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34672__auto__)))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__)))) (defn magnitude "" - ([item _options] - (let - [original-result__34673__auto__ - (tech.v3.datatype.functional/magnitude item _options)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34673__auto__))) - ([item] + ([x] (let - [original-result__34673__auto__ - (tech.v3.datatype.functional/magnitude item)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34673__auto__)))) + [original-result__30648__auto__ + (tech.v3.datatype.functional/magnitude x)] + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__)))) (defn cummax "Cumulative running max; returns result in double space.\n\n Options:\n\n * `:nan-strategy` - one of `:keep`, `:remove`, `:exception`. Defaults to `:remove`." + ([x options] + (let + [original-result__30648__auto__ + (tech.v3.datatype.functional/cummax x options)] + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__))) ([x] (let - [original-result__34672__auto__ + [original-result__30648__auto__ (tech.v3.datatype.functional/cummax x)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34672__auto__)))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__)))) (defn / "" ([x] (let - [original-result__34673__auto__ (tech.v3.datatype.functional// x)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34673__auto__))) + [original-result__30648__auto__ (tech.v3.datatype.functional// x)] + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__))) ([x y] (let - [original-result__34673__auto__ (tech.v3.datatype.functional// x y)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34673__auto__))) + [original-result__30648__auto__ (tech.v3.datatype.functional// x y)] + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__))) ([x y & args] (let - [original-result__34673__auto__ + [original-result__30648__auto__ (clojure.core/apply tech.v3.datatype.functional// x y args)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34673__auto__)))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__)))) (defn bit-or "" ([x y] (let - [original-result__34673__auto__ + [original-result__30648__auto__ (tech.v3.datatype.functional/bit-or x y)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34673__auto__))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__))) ([x y & args] (let - [original-result__34673__auto__ + [original-result__30648__auto__ (clojure.core/apply tech.v3.datatype.functional/bit-or x y args)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34673__auto__)))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__)))) (defn equals "" ([x y & args] (let - [original-result__34672__auto__ - (tech.v3.datatype.functional/equals x y args)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34672__auto__)))) + [original-result__30648__auto__ + (clojure.core/apply tech.v3.datatype.functional/equals x y args)] + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__)))) (defn >= "" - ([x y] - (let - [original-result__34672__auto__ - (tech.v3.datatype.functional/>= x y)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34672__auto__))) ([x y z] (let - [original-result__34672__auto__ + [original-result__30648__auto__ (tech.v3.datatype.functional/>= x y z)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34672__auto__)))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__))) + ([x y] + (let + [original-result__30648__auto__ + (tech.v3.datatype.functional/>= x y)] + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__)))) (defn bit-flip "" ([x y] (let - [original-result__34673__auto__ + [original-result__30648__auto__ (tech.v3.datatype.functional/bit-flip x y)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34673__auto__))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__))) ([x y & args] (let - [original-result__34673__auto__ + [original-result__30648__auto__ (clojure.core/apply tech.v3.datatype.functional/bit-flip x y args)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34673__auto__)))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__)))) (defn log1p "" ([x options] (let - [original-result__34673__auto__ + [original-result__30648__auto__ (tech.v3.datatype.functional/log1p x options)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34673__auto__))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__))) ([x] (let - [original-result__34673__auto__ + [original-result__30648__auto__ (tech.v3.datatype.functional/log1p x)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34673__auto__)))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__)))) (defn asin "" ([x options] (let - [original-result__34673__auto__ + [original-result__30648__auto__ (tech.v3.datatype.functional/asin x options)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34673__auto__))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__))) ([x] (let - [original-result__34673__auto__ + [original-result__30648__auto__ (tech.v3.datatype.functional/asin x)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34673__auto__)))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__)))) (defn quartiles "return [min, 25 50 75 max] of item" ([x] (let - [original-result__34672__auto__ + [original-result__30648__auto__ (tech.v3.datatype.functional/quartiles x)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34672__auto__))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__))) ([x options] (let - [original-result__34672__auto__ - (tech.v3.datatype.functional/quartiles options x)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34672__auto__)))) + [original-result__30648__auto__ + (tech.v3.datatype.functional/quartiles x options)] + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__)))) (defn quartile-3 "" - ([x] - (let - [original-result__34672__auto__ - (tech.v3.datatype.functional/quartile-3 x)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34672__auto__))) ([x options] (let - [original-result__34672__auto__ + [original-result__30648__auto__ (tech.v3.datatype.functional/quartile-3 x options)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34672__auto__)))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__))) + ([x] + (let + [original-result__30648__auto__ + (tech.v3.datatype.functional/quartile-3 x)] + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__)))) (defn infinite? "" - ([x] - (let - [original-result__34672__auto__ - (tech.v3.datatype.functional/infinite? x)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34672__auto__))) ([x options] (let - [original-result__34672__auto__ + [original-result__30648__auto__ (tech.v3.datatype.functional/infinite? x options)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34672__auto__)))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__))) + ([x] + (let + [original-result__30648__auto__ + (tech.v3.datatype.functional/infinite? x)] + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__)))) (defn round "Vectorized implementation of Math/round. Operates in double space\n but returns a long or long reader." - ([x] - (let - [original-result__34672__auto__ - (tech.v3.datatype.functional/round x)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34672__auto__))) ([x options] (let - [original-result__34672__auto__ + [original-result__30648__auto__ (tech.v3.datatype.functional/round x options)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34672__auto__)))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__))) + ([x] + (let + [original-result__30648__auto__ + (tech.v3.datatype.functional/round x)] + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__)))) (defn quartile-1 "" - ([x] - (let - [original-result__34672__auto__ - (tech.v3.datatype.functional/quartile-1 x)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34672__auto__))) ([x options] (let - [original-result__34672__auto__ + [original-result__30648__auto__ (tech.v3.datatype.functional/quartile-1 x options)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34672__auto__)))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__))) + ([x] + (let + [original-result__30648__auto__ + (tech.v3.datatype.functional/quartile-1 x)] + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__)))) (defn odd? "" - ([x] - (let - [original-result__34672__auto__ - (tech.v3.datatype.functional/odd? x)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34672__auto__))) ([x options] (let - [original-result__34672__auto__ + [original-result__30648__auto__ (tech.v3.datatype.functional/odd? x options)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34672__auto__)))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__))) + ([x] + (let + [original-result__30648__auto__ + (tech.v3.datatype.functional/odd? x)] + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__)))) (defn bit-clear "" ([x y] (let - [original-result__34673__auto__ + [original-result__30648__auto__ (tech.v3.datatype.functional/bit-clear x y)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34673__auto__))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__))) ([x y & args] (let - [original-result__34673__auto__ + [original-result__30648__auto__ (clojure.core/apply tech.v3.datatype.functional/bit-clear x y args)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34673__auto__)))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__)))) (defn + "" ([x] (let - [original-result__34673__auto__ (tech.v3.datatype.functional/+ x)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34673__auto__))) + [original-result__30648__auto__ (tech.v3.datatype.functional/+ x)] + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__))) ([x y] (let - [original-result__34673__auto__ (tech.v3.datatype.functional/+ x y)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34673__auto__))) + [original-result__30648__auto__ (tech.v3.datatype.functional/+ x y)] + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__))) ([x y & args] (let - [original-result__34673__auto__ + [original-result__30648__auto__ (clojure.core/apply tech.v3.datatype.functional/+ x y args)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34673__auto__)))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__)))) (defn abs "" ([x options] (let - [original-result__34673__auto__ + [original-result__30648__auto__ (tech.v3.datatype.functional/abs x options)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34673__auto__))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__))) ([x] (let - [original-result__34673__auto__ (tech.v3.datatype.functional/abs x)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34673__auto__)))) + [original-result__30648__auto__ (tech.v3.datatype.functional/abs x)] + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__)))) (defn median "" - ([x] - (let - [original-result__34672__auto__ - (tech.v3.datatype.functional/median x)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34672__auto__))) ([x options] (let - [original-result__34672__auto__ + [original-result__30648__auto__ (tech.v3.datatype.functional/median x options)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34672__auto__)))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__))) + ([x] + (let + [original-result__30648__auto__ + (tech.v3.datatype.functional/median x)] + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__)))) (defn pearsons-correlation "" + ([x y options] + (let + [original-result__30648__auto__ + (tech.v3.datatype.functional/pearsons-correlation x y options)] + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__))) ([x y] (let - [original-result__34672__auto__ + [original-result__30648__auto__ (tech.v3.datatype.functional/pearsons-correlation x y)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34672__auto__))) - ([x y options] - (let - [original-result__34672__auto__ - (tech.v3.datatype.functional/pearsons-correlation options x y)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34672__auto__)))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__)))) (defn sinh "" ([x options] (let - [original-result__34673__auto__ + [original-result__30648__auto__ (tech.v3.datatype.functional/sinh x options)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34673__auto__))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__))) ([x] (let - [original-result__34673__auto__ + [original-result__30648__auto__ (tech.v3.datatype.functional/sinh x)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34673__auto__)))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__)))) (defn rint "" ([x options] (let - [original-result__34673__auto__ + [original-result__30648__auto__ (tech.v3.datatype.functional/rint x options)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34673__auto__))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__))) ([x] (let - [original-result__34673__auto__ + [original-result__30648__auto__ (tech.v3.datatype.functional/rint x)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34673__auto__)))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__)))) (defn bit-not "" ([x options] (let - [original-result__34673__auto__ + [original-result__30648__auto__ (tech.v3.datatype.functional/bit-not x options)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34673__auto__))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__))) ([x] (let - [original-result__34673__auto__ + [original-result__30648__auto__ (tech.v3.datatype.functional/bit-not x)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34673__auto__)))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__)))) (defn max "" ([x] (let - [original-result__34673__auto__ (tech.v3.datatype.functional/max x)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34673__auto__))) + [original-result__30648__auto__ (tech.v3.datatype.functional/max x)] + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__))) ([x y] (let - [original-result__34673__auto__ + [original-result__30648__auto__ (tech.v3.datatype.functional/max x y)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34673__auto__))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__))) ([x y & args] (let - [original-result__34673__auto__ + [original-result__30648__auto__ (clojure.core/apply tech.v3.datatype.functional/max x y args)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34673__auto__)))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__)))) (defn ulp "" ([x options] (let - [original-result__34673__auto__ + [original-result__30648__auto__ (tech.v3.datatype.functional/ulp x options)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34673__auto__))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__))) ([x] (let - [original-result__34673__auto__ (tech.v3.datatype.functional/ulp x)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34673__auto__)))) + [original-result__30648__auto__ (tech.v3.datatype.functional/ulp x)] + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__)))) (defn percentiles "Create a reader of percentile values, one for each percentage passed in.\n Estimation types are in the set of #{:r1,r2...legacy} and are described\n here: https://commons.apache.org/proper/commons-math/javadocs/api-3.3/index.html.\n\n nan-strategy can be one of [:keep :remove :exception] and defaults to :exception." - ([x percentiles] + ([x percentages options] (let - [original-result__34672__auto__ - (tech.v3.datatype.functional/percentiles percentiles x)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34672__auto__))) - ([x percentiles options] + [original-result__30648__auto__ + (tech.v3.datatype.functional/percentiles x percentages options)] + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__))) + ([x percentages] (let - [original-result__34672__auto__ - (tech.v3.datatype.functional/percentiles percentiles options x)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34672__auto__)))) + [original-result__30648__auto__ + (tech.v3.datatype.functional/percentiles x percentages)] + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__)))) (defn sin "" ([x options] (let - [original-result__34673__auto__ + [original-result__30648__auto__ (tech.v3.datatype.functional/sin x options)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34673__auto__))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__))) ([x] (let - [original-result__34673__auto__ (tech.v3.datatype.functional/sin x)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34673__auto__)))) + [original-result__30648__auto__ (tech.v3.datatype.functional/sin x)] + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__)))) (defn sum-fast "Find the sum of the data. This operation is neither nan-aware nor does it implement\n kahans compensation although via parallelization it implements pairwise summation\n compensation. For a more but slightly slower but far more correct sum operator,\n use [[sum]]." ([x] (let - [original-result__34672__auto__ + [original-result__30648__auto__ (tech.v3.datatype.functional/sum-fast x)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34672__auto__)))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__)))) (defn signum "" ([x options] (let - [original-result__34673__auto__ + [original-result__30648__auto__ (tech.v3.datatype.functional/signum x options)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34673__auto__))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__))) ([x] (let - [original-result__34673__auto__ + [original-result__30648__auto__ (tech.v3.datatype.functional/signum x)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34673__auto__)))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__)))) (defn magnitude-squared "" ([x] (let - [original-result__34672__auto__ + [original-result__30648__auto__ (tech.v3.datatype.functional/magnitude-squared x)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34672__auto__)))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__)))) (defn and "" ([x y] (let - [original-result__34672__auto__ + [original-result__30648__auto__ (tech.v3.datatype.functional/and x y)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__34672__auto__)))) + (tablecloth.column.api.lift-operators/return-scalar-or-column + original-result__30648__auto__)))) diff --git a/src/tablecloth/column/api/utils.clj b/src/tablecloth/column/api/utils.clj index 9aa0203..f7811e0 100644 --- a/src/tablecloth/column/api/utils.clj +++ b/src/tablecloth/column/api/utils.clj @@ -6,86 +6,5 @@ [tech.v3.datatype.functional :as fun] [clojure.java.io :as io])) -(defn return-scalar-or-column [item] - (let [item-type (arg-type item)] - (if (= item-type :reader) - (column item) - item))) -(defn lift-op - ([fn-sym fn-meta] - (lift-op fn-sym fn-meta nil)) - ([fn-sym fn-meta {:keys [new-args]}] - (let [defn (symbol "defn") - let (symbol "let") - docstring (:doc fn-meta) - original-args (:arglists fn-meta) - sort-by-arg-count (fn [argslist] - (sort #(< (count %1) (count %2)) argslist))] - (if new-args - `(~defn ~(symbol (name fn-sym)) - ~(or docstring "") - ~@(for [[new-arg new-arg-lookup original-arg] - (map vector (sort-by-arg-count (keys new-args)) - (sort-by-arg-count (vals new-args)) - (sort-by-arg-count original-args)) - :let [filtered-original-arg (filter (partial not= '&) original-arg)]] - (list - (if new-arg new-arg original-arg) - `(~let [original-result# (~fn-sym - ~@(for [oldarg filtered-original-arg] - (if (nil? (get new-arg-lookup oldarg)) - oldarg - (get new-arg-lookup oldarg))))] - (return-scalar-or-column original-result#))))) - `(~defn ~(symbol (name fn-sym)) - ~(or docstring "") - ~@(for [arg original-args - :let [[explicit-args rest-arg-expr] (split-with (partial not= '&) arg)]] - (list - arg - `(~let [original-result# ~(if (empty? rest-arg-expr) - `(~fn-sym ~@explicit-args) - `(apply ~fn-sym ~@explicit-args ~(second rest-arg-expr)))] - (return-scalar-or-column original-result#))))))))) - -(defn- writeln! - ^Writer [^Writer writer strdata & strdatas] - (.append writer (str strdata)) - (doseq [data strdatas] - (when data - (.append writer (str data)))) - (.append writer "\n") - writer) - -(defn- write-empty-ln! ^Writer [^Writer writer] - (writeln! writer "") - writer) - -(defn- write-pp ^Writer [^Writer writer item] - (clojure.pprint/pprint item writer) - writer) - -(defn get-lifted [lift-fn-lookup source-ns] - (let [fun-mappings (ns-publics source-ns)] - (map (fn [[fnsym lift-fn]] - (lift-fn (symbol (name source-ns) (name fnsym)) - (meta (get fun-mappings fnsym)))) - lift-fn-lookup))) - -(defn get-ns-header [target-ns source-ns ns-exclusions] - (let [ns (symbol "ns")] - `(~ns ~target-ns - (:require [~source-ns] - [tablecloth.column.api.utils]) - (:refer-clojure :exclude ~ns-exclusions)))) - -(defn do-lift [lift-plan target-ns source-ns ns-exclusions filename] - (with-open [writer (io/writer filename :append false)] - (write-pp writer (get-ns-header target-ns source-ns ns-exclusions)) - (write-empty-ln! writer) - (doseq [f (get-lifted lift-plan source-ns)] - (-> writer - (write-pp f) - (write-empty-ln!))))) diff --git a/src/tablecloth/utils/codegen.clj b/src/tablecloth/utils/codegen.clj new file mode 100644 index 0000000..6411ce7 --- /dev/null +++ b/src/tablecloth/utils/codegen.clj @@ -0,0 +1,81 @@ +(ns tablecloth.utils.codegen + (:import [java.io Writer]) + (:require [tech.v3.datatype.export-symbols :as exporter] + [clojure.java.io :as io])) + +(defn- writeln! + ^Writer [^Writer writer strdata & strdatas] + (.append writer (str strdata)) + (doseq [data strdatas] + (when data + (.append writer (str data)))) + (.append writer "\n") + writer) + +(defn- write-empty-ln! ^Writer [^Writer writer] + (writeln! writer "") + writer) + +(defn- write-pp ^Writer [^Writer writer item] + (clojure.pprint/pprint item writer) + writer) + +(defn deserialize-lift-fn-lookup [serialized-lift-fn-lookup] + (reduce (fn [m [symlist liftfn]] + (loop [syms symlist + result m] + (if (empty? syms) + result + (recur (rest syms) (assoc result (first syms) liftfn))))) + {} + serialized-lift-fn-lookup)) + +(defn get-lifted [lift-fn-lookup source-ns] + (let [fun-mappings (ns-publics source-ns)] + (map (fn [[fnsym {:keys [lift-fn optional-args]}]] + (lift-fn (symbol (name source-ns) (name fnsym)) optional-args)) + (deserialize-lift-fn-lookup lift-fn-lookup)))) + +(defn namespace-to-path [ns-str] + (-> ns-str + (name) + (clojure.string/replace "." "/") + (clojure.string/replace "-" "_") + (->> (str "./src/")) + (str ".clj"))) + +(defn build-ns-header + "Generates a namespace header with the specified target-ns and + source-ns, along with optional additional dependencies and + exclusions. If exclusions are provided, they will be used to exclude + the specified symbol(s) from the :refer-clojure directive." + ([target-ns source-ns] + (build-ns-header target-ns source-ns nil nil)) + ([target-ns source-ns additional-deps] + (build-ns-header target-ns source-ns additional-deps nil)) + ([target-ns source-ns additional-deps exclusions] + (let [ns (symbol "ns")] + `(~ns ~target-ns + (:require [~source-ns] + ~@(for [dep additional-deps] + [dep])) + ~@(when exclusions `((:refer-clojure :exclude ~exclusions))))))) + +(defn do-lift + "Writes the lifted functions to target namespace. + + Example: + {:target-ns 'tablecloth.api.operators + :source-ns 'tablecloth.column.api.operators + :lift-fn-lookup {['+ '- '*] lift-fn} + :deps ['tablecloth.api.lift_operators] + :exclusions + '[* + -]}" +[{:keys [target-ns source-ns lift-fn-lookup deps exclusions]}] + (with-open [writer (io/writer (namespace-to-path target-ns) :append false)] + (write-pp writer (build-ns-header target-ns source-ns deps exclusions)) + (write-empty-ln! writer) + (doseq [f (get-lifted lift-fn-lookup source-ns)] + (-> writer + (write-pp f) + (write-empty-ln!))))) diff --git a/test/tablecloth/api/dataset_test.clj b/test/tablecloth/api/dataset_test.clj index 283f91c..d931101 100644 --- a/test/tablecloth/api/dataset_test.clj +++ b/test/tablecloth/api/dataset_test.clj @@ -86,25 +86,32 @@ (fact "dataset-info" (fact - (-> (api/info DS) - (select-keys [:col-name :datatype])) - => {:col-name [:V1 :V2 :V3 :V4] - :datatype [:int64 :int64 :float64 :string]}) + (-> (api/info DS) + (select-keys [:col-name :datatype])) + => {:col-name [:V1 :V2 :V3 :V4] + :datatype [:int64 :int64 :float64 :string]}) (fact - (-> (api/info DS) - (api/column-names)) - => '(:col-name :datatype :n-valid :n-missing :min :mean :mode :max :standard-deviation :skew :first :last)) + (-> (api/info DS) + (api/column-names)) + => '(:col-name :datatype :n-valid :n-missing :min :mean :mode :max :standard-deviation :skew :first :last)) (fact - (-> (api/info DS :basic) - (api/rows :as-maps)) - => [{:name "DS", :columns 4, :rows 9, :grouped? false}]) + (-> (api/info DS :basic) + (api/rows :as-maps)) + => [{:name "DS", :columns 4, :rows 9, :grouped? false}]) (fact - (-> (api/info DS :columns) - (api/rows :as-maps)) - => [{:name :V1, :n-elems 9, :categorical? nil, :datatype :int64} - {:name :V2, :n-elems 9, :categorical? nil, :datatype :int64} - {:name :V3, :n-elems 9, :categorical? nil, :datatype :float64} - {:name :V4, :n-elems 9, :categorical? true, :datatype :string}])) + (-> (api/info DS :columns) + (api/rows :as-maps)) + => [{:name :V1, :n-elems 9, :categorical? nil, :datatype :int64} + {:name :V2, :n-elems 9, :categorical? nil, :datatype :int64} + {:name :V3, :n-elems 9, :categorical? nil, :datatype :float64} + {:name :V4, :n-elems 9, :categorical? true, :datatype :string}]) + (fact + (-> (api/info DS :columns) + (api/rows :as-maps {:nil-missing? false})) + => [{:name :V1, :n-elems 9, :datatype :int64} + {:name :V2, :n-elems 9, :datatype :int64} + {:name :V3, :n-elems 9, :datatype :float64} + {:name :V4, :n-elems 9, :categorical? true, :datatype :string}])) (fact "as-double-arrays" (tabular (fact (-> (api/dataset {:a [1 2 3] diff --git a/test/tablecloth/api/operators_test.clj b/test/tablecloth/api/operators_test.clj new file mode 100644 index 0000000..23fa381 --- /dev/null +++ b/test/tablecloth/api/operators_test.clj @@ -0,0 +1,180 @@ +(ns tablecloth.api.operators-test + (:refer-clojure :exclude [* + - / < <= > >= abs and bit-and bit-and-not bit-clear bit-flip + bit-not bit-or bit-set bit-shift-left bit-shift-right bit-test bit-xor + even? identity infinite? max min neg? not odd? odd? or pos? quot rem + unsigned-bit-shift-right zero?]) + (:require [tablecloth.api :refer [dataset]] + [tech.v3.datatype :refer [elemwise-datatype]] + [midje.sweet :refer [fact facts =>]]) + (:use [tablecloth.api.operators])) + + +(defn scalar? [item] + (= (tech.v3.datatype.argtypes/arg-type item) + :scalar)) + +(facts + "about ops that return the op result" + + (facts + "about ops that take a maximum of one column and return a scalar" + (let [ds (dataset {:a [1 2 3]})] + (let [ops [kurtosis + magnitude + magnitude-squared + mean + mean-fast + median + quartile-1 + quartile-3 + reduce-* + reduce-+ + reduce-max + reduce-min + skew + sum + sum-fast + variance]] + (doseq [op ops] + (let [result (op ds [:a])] + result => scalar?))))) + + (facts + "about ops that take a maximum of two columns and return a scalar" + (let [ds (dataset {:a [1 2 3] + :b [4 5 6]})] + (let [ops [distance + distance-squared + dot-product]] + (doseq [op ops] + (let [result (op ds [:a :b])] + result => scalar?)))))) + +(facts + "about ops that return a dataset with a new column" + + (facts + "about ops that take a maximum of one column" + (let [ds (dataset {:a [1 2 3]})] + (let [result (shift ds :b [:a] 1)] + (:b result) => [1 1 2]) + + (let [ops [cummax + cummin + cumprod + cumsum + abs + acos + asin + atan + bit-not + cbrt + ceil + cos + cosh + even? + exp + expm1 + finite? + floor + get-significand + identity + infinite? + log + log10 + log1p + logistic + mathematical-integer? + nan? + neg? + next-down + next-up + normalize + not + odd? + pos? + rint + round + signum + sin + sinh + sq + sqrt + tan + tanh + to-degrees + to-radians + ulp + zero?]] + (doseq [op ops] + (let [result (op ds :b [:a])] + (contains? result :b) => true))))) + + (facts + "about ops that take a maximum of two columns" + (let [ops [and eq not-eq or] + ds (dataset {:a [1 2 3] + :b [4 5 6]})] + (doseq [op ops] + (let [result (op ds :c [:a :b :c])] + (contains? result :c) => true)))) + + (facts + "about ops that take a maximum of three columns" + (let [ops [< > <= >=] + ds (dataset {:a [1 2 3] + :b [4 5 6] + :c [7 8 9]})] + (doseq [op ops] + (let [result (op ds :d [:a :b :c])] + (contains? result :d) => true)))) + + (facts + "about ops that can take an unlimited number of columns" + (let [ops [/ + - + + + * + atan2 + ;; equals // this function doesn't seem to handle more than two cols + hypot + bit-and + bit-and-not + bit-clear + bit-flip + bit-or + bit-set + bit-shift-right + bit-shift-left + bit-xor + ieee-remainder + max + min + pow + quot + rem + unsigned-bit-shift-right] + ds (dataset {:a [1 2 3] + :b [4 5 6] + :c [7 8 9] + :d [10 11 12]})] + (doseq [op ops] + (let [result (op ds :e [:a :b :c :d])] + (contains? result :e) => true))))) + + +(comment + ;; some analysis I'll keep around for now b/c it may be useful later + (defn longest-vector [lst] + (reduce #(max-key count %1 %2) lst)) + + (->> (ns-publics 'tablecloth.column.api.operators) + (map (fn [[sym var]] [sym (-> var meta :arglists)])) + (map (fn [[sym arglist]] [sym (longest-vector arglist)])) + (reduce (fn [memo [sym longest-arglist]] + (if (contains? memo longest-arglist) + (update memo longest-arglist conj sym) + (assoc memo longest-arglist [sym]))) + {}) + (reduce (fn [m [k v]] (update m k sort v)) {}) + )) diff --git a/test/tablecloth/column/api/operators_test.clj b/test/tablecloth/column/api/operators_test.clj index 6c4d2ac..1e8cfce 100644 --- a/test/tablecloth/column/api/operators_test.clj +++ b/test/tablecloth/column/api/operators_test.clj @@ -8,8 +8,6 @@ [tablecloth.column.api :refer [column column? typeof]]) (:use [tablecloth.column.api.operators])) -(tech.v3.datatype.functional/spearmans-correlation [1 2] [2 1]) - (defn sample-column [n] (column (repeatedly n #(rand-int 100)))) @@ -78,7 +76,8 @@ tanh to-degrees to-radians - ulp] + ulp + ] a (sample-column 5)] (doseq [op ops] (op a) => column?))) From eee60d39dfc0138eb06bfa1c4812a33d401cba07 Mon Sep 17 00:00:00 2001 From: Ethan Miller Date: Fri, 3 Nov 2023 15:25:26 -0400 Subject: [PATCH 31/42] Ethan/lift scalar ops to ds as aggregators (#118) * Fix indentation * Save rough working example Not fully tested * Fix tests for new aggregator form of ops that return scalar --- src/tablecloth/api/lift_operators.clj | 47 +- src/tablecloth/api/operators.clj | 2504 +++++++++++++----------- test/tablecloth/api/operators_test.clj | 53 +- 3 files changed, 1418 insertions(+), 1186 deletions(-) diff --git a/src/tablecloth/api/lift_operators.clj b/src/tablecloth/api/lift_operators.clj index a22c170..b2b758a 100644 --- a/src/tablecloth/api/lift_operators.clj +++ b/src/tablecloth/api/lift_operators.clj @@ -61,8 +61,9 @@ Resulting signature: (lift-op [fn-sym]) => (fn [ds columns-selector target-col] ...)" - [fn-sym {:keys [return-ds?] - :or {return-ds? false}}] + [fn-sym {:keys [return-ds? make-aggregator?] + :or {return-ds? false + make-aggregator? false}}] (let [defn (symbol "defn") let (symbol "let") arglists (get-arglists fn-sym) @@ -73,16 +74,36 @@ `(~defn ~new-fn-sym ~new-docstring ~@(for [args lifted-arglists] - `(~args - (~let [selected-cols# (apply vector (tablecloth.api.dataset/columns - (select-columns ~'ds ~'columns-selector))) - - args-to-pass# (concat selected-cols# [~@(drop 3 args)])] - (if (>= ~max-cols (count selected-cols#)) - (->> args-to-pass# - (apply ~fn-sym) - ~(if return-ds? `(add-or-replace-column ~'ds ~'target-col) `(identity))) - (throw (Exception. (str "Exceeded maximum number of columns allowed for operation.")))))))))) + (if make-aggregator? + ;; build an aggregator fn + `(~args + (~let [aggregator# + (fn [ds#] + (~let [ds-with-selected-cols# + (select-columns ds# ~'columns-selector) + cols-count# + (-> ds-with-selected-cols# + tablecloth.api/column-names + count) + selected-cols# (tablecloth.api/columns ds-with-selected-cols#)] + (if (>= ~max-cols cols-count#) + (apply ~fn-sym (apply vector selected-cols#)) + (throw (Exception. (str "Exceeded maximum number of columns allowed for operation."))))))] + (tablecloth.api/aggregate ~'ds aggregator#))) + ;; build either a fn that returns a dataset or the result of the operation + `(~args + (~let [selected-cols# (apply vector (tablecloth.api.dataset/columns + (select-columns ~'ds ~'columns-selector))) + args-to-pass# (concat selected-cols# [~@(drop 3 args)])] + (if (>= ~max-cols (count selected-cols#)) + (->> args-to-pass# + (apply ~fn-sym) + ~(if return-ds? `(add-or-replace-column ~'ds ~'target-col) `(identity))) + (throw (Exception. (str "Exceeded maximum number of columns allowed for operation."))))))))))) + +(lift-op 'tablecloth.column.api.operators/bit-set {}) + +(lift-op 'tablecloth.column.api.operators/mean {:make-aggregator? true}) (def serialized-lift-fn-lookup {'[distance @@ -105,7 +126,7 @@ sum sum-fast variance] - {:lift-fn lift-op :optional-args {:return-ds? false}} + {:lift-fn lift-op :optional-args {:make-aggregator? true}} '[* + - diff --git a/src/tablecloth/api/operators.clj b/src/tablecloth/api/operators.clj index d58bd85..3649b90 100644 --- a/src/tablecloth/api/operators.clj +++ b/src/tablecloth/api/operators.clj @@ -47,65 +47,81 @@ "Applies the operation tablecloth.column.api.operators/kurtosis to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds columns-selector options] (let - [selected-cols__42927__auto__ - (clojure.core/apply - clojure.core/vector - (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [])] - (if - (clojure.core/>= - 1 - (clojure.core/count selected-cols__42927__auto__)) - (clojure.core/->> - args-to-pass__42928__auto__ - (clojure.core/apply tablecloth.column.api.operators/kurtosis) - (clojure.core/identity)) - (throw - (java.lang.Exception. - (clojure.core/str - "Exceeded maximum number of columns allowed for operation.")))))) + [aggregator__47425__auto__ + (clojure.core/fn + [ds__47426__auto__] + (let + [ds-with-selected-cols__47427__auto__ + (tablecloth.api/select-columns + ds__47426__auto__ + columns-selector) + cols-count__47428__auto__ + (clojure.core/-> + ds-with-selected-cols__47427__auto__ + tablecloth.api/column-names + clojure.core/count) + selected-cols__47429__auto__ + (tablecloth.api/columns ds-with-selected-cols__47427__auto__)] + (if + (clojure.core/>= 1 cols-count__47428__auto__) + (clojure.core/apply + tablecloth.column.api.operators/kurtosis + (clojure.core/apply + clojure.core/vector + selected-cols__47429__auto__)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))] + (tablecloth.api/aggregate ds aggregator__47425__auto__))) ([ds columns-selector] (let - [selected-cols__42927__auto__ - (clojure.core/apply - clojure.core/vector - (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [])] - (if - (clojure.core/>= - 1 - (clojure.core/count selected-cols__42927__auto__)) - (clojure.core/->> - args-to-pass__42928__auto__ - (clojure.core/apply tablecloth.column.api.operators/kurtosis) - (clojure.core/identity)) - (throw - (java.lang.Exception. - (clojure.core/str - "Exceeded maximum number of columns allowed for operation."))))))) + [aggregator__47425__auto__ + (clojure.core/fn + [ds__47426__auto__] + (let + [ds-with-selected-cols__47427__auto__ + (tablecloth.api/select-columns + ds__47426__auto__ + columns-selector) + cols-count__47428__auto__ + (clojure.core/-> + ds-with-selected-cols__47427__auto__ + tablecloth.api/column-names + clojure.core/count) + selected-cols__47429__auto__ + (tablecloth.api/columns ds-with-selected-cols__47427__auto__)] + (if + (clojure.core/>= 1 cols-count__47428__auto__) + (clojure.core/apply + tablecloth.column.api.operators/kurtosis + (clojure.core/apply + clojure.core/vector + selected-cols__47429__auto__)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))] + (tablecloth.api/aggregate ds aggregator__47425__auto__)))) (defn bit-set "Applies the operation tablecloth.column.api.operators/bit-set to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. null\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [])] (if (clojure.core/>= ##Inf - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/bit-set) (tablecloth.api/add-or-replace-column ds target-col)) (throw @@ -118,19 +134,19 @@ "Applies the operation tablecloth.column.api.operators/finite? to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector options] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [options])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [options])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/finite?) (tablecloth.api/add-or-replace-column ds target-col)) (throw @@ -139,19 +155,19 @@ "Exceeded maximum number of columns allowed for operation.")))))) ([ds target-col columns-selector] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/finite?) (tablecloth.api/add-or-replace-column ds target-col)) (throw @@ -164,69 +180,85 @@ "Applies the operation tablecloth.column.api.operators/distance to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 2 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds columns-selector] (let - [selected-cols__42927__auto__ - (clojure.core/apply - clojure.core/vector - (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [])] - (if - (clojure.core/>= - 2 - (clojure.core/count selected-cols__42927__auto__)) - (clojure.core/->> - args-to-pass__42928__auto__ - (clojure.core/apply tablecloth.column.api.operators/distance) - (clojure.core/identity)) - (throw - (java.lang.Exception. - (clojure.core/str - "Exceeded maximum number of columns allowed for operation."))))))) + [aggregator__47425__auto__ + (clojure.core/fn + [ds__47426__auto__] + (let + [ds-with-selected-cols__47427__auto__ + (tablecloth.api/select-columns + ds__47426__auto__ + columns-selector) + cols-count__47428__auto__ + (clojure.core/-> + ds-with-selected-cols__47427__auto__ + tablecloth.api/column-names + clojure.core/count) + selected-cols__47429__auto__ + (tablecloth.api/columns ds-with-selected-cols__47427__auto__)] + (if + (clojure.core/>= 2 cols-count__47428__auto__) + (clojure.core/apply + tablecloth.column.api.operators/distance + (clojure.core/apply + clojure.core/vector + selected-cols__47429__auto__)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))] + (tablecloth.api/aggregate ds aggregator__47425__auto__)))) (defn reduce-min "Applies the operation tablecloth.column.api.operators/reduce-min to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds columns-selector] (let - [selected-cols__42927__auto__ - (clojure.core/apply - clojure.core/vector - (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [])] - (if - (clojure.core/>= - 1 - (clojure.core/count selected-cols__42927__auto__)) - (clojure.core/->> - args-to-pass__42928__auto__ - (clojure.core/apply tablecloth.column.api.operators/reduce-min) - (clojure.core/identity)) - (throw - (java.lang.Exception. - (clojure.core/str - "Exceeded maximum number of columns allowed for operation."))))))) + [aggregator__47425__auto__ + (clojure.core/fn + [ds__47426__auto__] + (let + [ds-with-selected-cols__47427__auto__ + (tablecloth.api/select-columns + ds__47426__auto__ + columns-selector) + cols-count__47428__auto__ + (clojure.core/-> + ds-with-selected-cols__47427__auto__ + tablecloth.api/column-names + clojure.core/count) + selected-cols__47429__auto__ + (tablecloth.api/columns ds-with-selected-cols__47427__auto__)] + (if + (clojure.core/>= 1 cols-count__47428__auto__) + (clojure.core/apply + tablecloth.column.api.operators/reduce-min + (clojure.core/apply + clojure.core/vector + selected-cols__47429__auto__)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))] + (tablecloth.api/aggregate ds aggregator__47425__auto__)))) (defn to-radians "Applies the operation tablecloth.column.api.operators/to-radians to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector options] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [options])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [options])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/to-radians) (tablecloth.api/add-or-replace-column ds target-col)) (throw @@ -235,19 +267,19 @@ "Exceeded maximum number of columns allowed for operation.")))))) ([ds target-col columns-selector] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/to-radians) (tablecloth.api/add-or-replace-column ds target-col)) (throw @@ -260,19 +292,19 @@ "Applies the operation tablecloth.column.api.operators/bit-shift-right to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. null\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [])] (if (clojure.core/>= ##Inf - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/bit-shift-right) (tablecloth.api/add-or-replace-column ds target-col)) @@ -286,19 +318,19 @@ "Applies the operation tablecloth.column.api.operators/ieee-remainder to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. null\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [])] (if (clojure.core/>= ##Inf - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/ieee-remainder) (tablecloth.api/add-or-replace-column ds target-col)) @@ -312,19 +344,19 @@ "Applies the operation tablecloth.column.api.operators/log to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector options] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [options])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [options])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/log) (tablecloth.api/add-or-replace-column ds target-col)) (throw @@ -333,19 +365,19 @@ "Exceeded maximum number of columns allowed for operation.")))))) ([ds target-col columns-selector] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/log) (tablecloth.api/add-or-replace-column ds target-col)) (throw @@ -358,19 +390,19 @@ "Applies the operation tablecloth.column.api.operators/bit-shift-left to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. null\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [])] (if (clojure.core/>= ##Inf - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/bit-shift-left) (tablecloth.api/add-or-replace-column ds target-col)) @@ -384,19 +416,19 @@ "Applies the operation tablecloth.column.api.operators/acos to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector options] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [options])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [options])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/acos) (tablecloth.api/add-or-replace-column ds target-col)) (throw @@ -405,19 +437,19 @@ "Exceeded maximum number of columns allowed for operation.")))))) ([ds target-col columns-selector] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/acos) (tablecloth.api/add-or-replace-column ds target-col)) (throw @@ -430,19 +462,19 @@ "Applies the operation tablecloth.column.api.operators/to-degrees to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector options] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [options])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [options])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/to-degrees) (tablecloth.api/add-or-replace-column ds target-col)) (throw @@ -451,19 +483,19 @@ "Exceeded maximum number of columns allowed for operation.")))))) ([ds target-col columns-selector] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/to-degrees) (tablecloth.api/add-or-replace-column ds target-col)) (throw @@ -476,19 +508,19 @@ "Applies the operation tablecloth.column.api.operators/< to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 3 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [])] (if (clojure.core/>= 3 - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/<) (tablecloth.api/add-or-replace-column ds target-col)) (throw @@ -501,19 +533,19 @@ "Applies the operation tablecloth.column.api.operators/floor to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector options] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [options])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [options])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/floor) (tablecloth.api/add-or-replace-column ds target-col)) (throw @@ -522,19 +554,19 @@ "Exceeded maximum number of columns allowed for operation.")))))) ([ds target-col columns-selector] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/floor) (tablecloth.api/add-or-replace-column ds target-col)) (throw @@ -547,19 +579,19 @@ "Applies the operation tablecloth.column.api.operators/atan2 to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. null\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [])] (if (clojure.core/>= ##Inf - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/atan2) (tablecloth.api/add-or-replace-column ds target-col)) (throw @@ -572,19 +604,19 @@ "Applies the operation tablecloth.column.api.operators/normalize to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/normalize) (tablecloth.api/add-or-replace-column ds target-col)) (throw @@ -597,19 +629,19 @@ "Applies the operation tablecloth.column.api.operators/hypot to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. null\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [])] (if (clojure.core/>= ##Inf - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/hypot) (tablecloth.api/add-or-replace-column ds target-col)) (throw @@ -622,19 +654,19 @@ "Applies the operation tablecloth.column.api.operators/tanh to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector options] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [options])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [options])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/tanh) (tablecloth.api/add-or-replace-column ds target-col)) (throw @@ -643,19 +675,19 @@ "Exceeded maximum number of columns allowed for operation.")))))) ([ds target-col columns-selector] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/tanh) (tablecloth.api/add-or-replace-column ds target-col)) (throw @@ -668,19 +700,19 @@ "Applies the operation tablecloth.column.api.operators/sq to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector options] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [options])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [options])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/sq) (tablecloth.api/add-or-replace-column ds target-col)) (throw @@ -689,19 +721,19 @@ "Exceeded maximum number of columns allowed for operation.")))))) ([ds target-col columns-selector] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/sq) (tablecloth.api/add-or-replace-column ds target-col)) (throw @@ -714,65 +746,81 @@ "Applies the operation tablecloth.column.api.operators/sum to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds columns-selector options] (let - [selected-cols__42927__auto__ - (clojure.core/apply - clojure.core/vector - (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [])] - (if - (clojure.core/>= - 1 - (clojure.core/count selected-cols__42927__auto__)) - (clojure.core/->> - args-to-pass__42928__auto__ - (clojure.core/apply tablecloth.column.api.operators/sum) - (clojure.core/identity)) - (throw - (java.lang.Exception. - (clojure.core/str - "Exceeded maximum number of columns allowed for operation.")))))) + [aggregator__47425__auto__ + (clojure.core/fn + [ds__47426__auto__] + (let + [ds-with-selected-cols__47427__auto__ + (tablecloth.api/select-columns + ds__47426__auto__ + columns-selector) + cols-count__47428__auto__ + (clojure.core/-> + ds-with-selected-cols__47427__auto__ + tablecloth.api/column-names + clojure.core/count) + selected-cols__47429__auto__ + (tablecloth.api/columns ds-with-selected-cols__47427__auto__)] + (if + (clojure.core/>= 1 cols-count__47428__auto__) + (clojure.core/apply + tablecloth.column.api.operators/sum + (clojure.core/apply + clojure.core/vector + selected-cols__47429__auto__)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))] + (tablecloth.api/aggregate ds aggregator__47425__auto__))) ([ds columns-selector] (let - [selected-cols__42927__auto__ - (clojure.core/apply - clojure.core/vector - (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [])] - (if - (clojure.core/>= - 1 - (clojure.core/count selected-cols__42927__auto__)) - (clojure.core/->> - args-to-pass__42928__auto__ - (clojure.core/apply tablecloth.column.api.operators/sum) - (clojure.core/identity)) - (throw - (java.lang.Exception. - (clojure.core/str - "Exceeded maximum number of columns allowed for operation."))))))) + [aggregator__47425__auto__ + (clojure.core/fn + [ds__47426__auto__] + (let + [ds-with-selected-cols__47427__auto__ + (tablecloth.api/select-columns + ds__47426__auto__ + columns-selector) + cols-count__47428__auto__ + (clojure.core/-> + ds-with-selected-cols__47427__auto__ + tablecloth.api/column-names + clojure.core/count) + selected-cols__47429__auto__ + (tablecloth.api/columns ds-with-selected-cols__47427__auto__)] + (if + (clojure.core/>= 1 cols-count__47428__auto__) + (clojure.core/apply + tablecloth.column.api.operators/sum + (clojure.core/apply + clojure.core/vector + selected-cols__47429__auto__)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))] + (tablecloth.api/aggregate ds aggregator__47425__auto__)))) (defn pos? "Applies the operation tablecloth.column.api.operators/pos? to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector options] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [options])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [options])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/pos?) (tablecloth.api/add-or-replace-column ds target-col)) (throw @@ -781,19 +829,19 @@ "Exceeded maximum number of columns allowed for operation.")))))) ([ds target-col columns-selector] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/pos?) (tablecloth.api/add-or-replace-column ds target-col)) (throw @@ -806,19 +854,19 @@ "Applies the operation tablecloth.column.api.operators/shift to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector n] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [n])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [n])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/shift) (tablecloth.api/add-or-replace-column ds target-col)) (throw @@ -831,19 +879,19 @@ "Applies the operation tablecloth.column.api.operators/ceil to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector options] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [options])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [options])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/ceil) (tablecloth.api/add-or-replace-column ds target-col)) (throw @@ -852,19 +900,19 @@ "Exceeded maximum number of columns allowed for operation.")))))) ([ds target-col columns-selector] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/ceil) (tablecloth.api/add-or-replace-column ds target-col)) (throw @@ -877,19 +925,19 @@ "Applies the operation tablecloth.column.api.operators/bit-xor to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. null\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [])] (if (clojure.core/>= ##Inf - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/bit-xor) (tablecloth.api/add-or-replace-column ds target-col)) (throw @@ -902,19 +950,19 @@ "Applies the operation tablecloth.column.api.operators/unsigned-bit-shift-right to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. null\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [])] (if (clojure.core/>= ##Inf - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/unsigned-bit-shift-right) (tablecloth.api/add-or-replace-column ds target-col)) @@ -928,19 +976,19 @@ "Applies the operation tablecloth.column.api.operators/neg? to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector options] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [options])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [options])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/neg?) (tablecloth.api/add-or-replace-column ds target-col)) (throw @@ -949,19 +997,19 @@ "Exceeded maximum number of columns allowed for operation.")))))) ([ds target-col columns-selector] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/neg?) (tablecloth.api/add-or-replace-column ds target-col)) (throw @@ -974,19 +1022,19 @@ "Applies the operation tablecloth.column.api.operators/<= to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 3 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [])] (if (clojure.core/>= 3 - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/<=) (tablecloth.api/add-or-replace-column ds target-col)) (throw @@ -999,19 +1047,19 @@ "Applies the operation tablecloth.column.api.operators/* to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. null\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [])] (if (clojure.core/>= ##Inf - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/*) (tablecloth.api/add-or-replace-column ds target-col)) (throw @@ -1024,19 +1072,19 @@ "Applies the operation tablecloth.column.api.operators/min to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. null\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [])] (if (clojure.core/>= ##Inf - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/min) (tablecloth.api/add-or-replace-column ds target-col)) (throw @@ -1049,19 +1097,19 @@ "Applies the operation tablecloth.column.api.operators/atan to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector options] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [options])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [options])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/atan) (tablecloth.api/add-or-replace-column ds target-col)) (throw @@ -1070,19 +1118,19 @@ "Exceeded maximum number of columns allowed for operation.")))))) ([ds target-col columns-selector] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/atan) (tablecloth.api/add-or-replace-column ds target-col)) (throw @@ -1095,19 +1143,19 @@ "Applies the operation tablecloth.column.api.operators/mathematical-integer? to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector options] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [options])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [options])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/mathematical-integer?) (tablecloth.api/add-or-replace-column ds target-col)) @@ -1117,19 +1165,19 @@ "Exceeded maximum number of columns allowed for operation.")))))) ([ds target-col columns-selector] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/mathematical-integer?) (tablecloth.api/add-or-replace-column ds target-col)) @@ -1143,19 +1191,19 @@ "Applies the operation tablecloth.column.api.operators/cumprod to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector options] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [options])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [options])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/cumprod) (tablecloth.api/add-or-replace-column ds target-col)) (throw @@ -1164,19 +1212,19 @@ "Exceeded maximum number of columns allowed for operation.")))))) ([ds target-col columns-selector] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/cumprod) (tablecloth.api/add-or-replace-column ds target-col)) (throw @@ -1189,19 +1237,19 @@ "Applies the operation tablecloth.column.api.operators/expm1 to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector options] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [options])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [options])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/expm1) (tablecloth.api/add-or-replace-column ds target-col)) (throw @@ -1210,19 +1258,19 @@ "Exceeded maximum number of columns allowed for operation.")))))) ([ds target-col columns-selector] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/expm1) (tablecloth.api/add-or-replace-column ds target-col)) (throw @@ -1235,19 +1283,19 @@ "Applies the operation tablecloth.column.api.operators/identity to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector options] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [options])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [options])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/identity) (tablecloth.api/add-or-replace-column ds target-col)) (throw @@ -1256,19 +1304,19 @@ "Exceeded maximum number of columns allowed for operation.")))))) ([ds target-col columns-selector] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/identity) (tablecloth.api/add-or-replace-column ds target-col)) (throw @@ -1281,44 +1329,52 @@ "Applies the operation tablecloth.column.api.operators/reduce-max to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds columns-selector] (let - [selected-cols__42927__auto__ - (clojure.core/apply - clojure.core/vector - (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [])] - (if - (clojure.core/>= - 1 - (clojure.core/count selected-cols__42927__auto__)) - (clojure.core/->> - args-to-pass__42928__auto__ - (clojure.core/apply tablecloth.column.api.operators/reduce-max) - (clojure.core/identity)) - (throw - (java.lang.Exception. - (clojure.core/str - "Exceeded maximum number of columns allowed for operation."))))))) + [aggregator__47425__auto__ + (clojure.core/fn + [ds__47426__auto__] + (let + [ds-with-selected-cols__47427__auto__ + (tablecloth.api/select-columns + ds__47426__auto__ + columns-selector) + cols-count__47428__auto__ + (clojure.core/-> + ds-with-selected-cols__47427__auto__ + tablecloth.api/column-names + clojure.core/count) + selected-cols__47429__auto__ + (tablecloth.api/columns ds-with-selected-cols__47427__auto__)] + (if + (clojure.core/>= 1 cols-count__47428__auto__) + (clojure.core/apply + tablecloth.column.api.operators/reduce-max + (clojure.core/apply + clojure.core/vector + selected-cols__47429__auto__)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))] + (tablecloth.api/aggregate ds aggregator__47425__auto__)))) (defn cumsum "Applies the operation tablecloth.column.api.operators/cumsum to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector options] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [options])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [options])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/cumsum) (tablecloth.api/add-or-replace-column ds target-col)) (throw @@ -1327,19 +1383,19 @@ "Exceeded maximum number of columns allowed for operation.")))))) ([ds target-col columns-selector] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/cumsum) (tablecloth.api/add-or-replace-column ds target-col)) (throw @@ -1352,19 +1408,19 @@ "Applies the operation tablecloth.column.api.operators/nan? to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector options] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [options])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [options])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/nan?) (tablecloth.api/add-or-replace-column ds target-col)) (throw @@ -1373,19 +1429,19 @@ "Exceeded maximum number of columns allowed for operation.")))))) ([ds target-col columns-selector] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/nan?) (tablecloth.api/add-or-replace-column ds target-col)) (throw @@ -1398,19 +1454,19 @@ "Applies the operation tablecloth.column.api.operators/bit-and-not to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. null\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [])] (if (clojure.core/>= ##Inf - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/bit-and-not) (tablecloth.api/add-or-replace-column ds target-col)) (throw @@ -1423,19 +1479,19 @@ "Applies the operation tablecloth.column.api.operators/logistic to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector options] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [options])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [options])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/logistic) (tablecloth.api/add-or-replace-column ds target-col)) (throw @@ -1444,19 +1500,19 @@ "Exceeded maximum number of columns allowed for operation.")))))) ([ds target-col columns-selector] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/logistic) (tablecloth.api/add-or-replace-column ds target-col)) (throw @@ -1469,19 +1525,19 @@ "Applies the operation tablecloth.column.api.operators/cos to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector options] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [options])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [options])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/cos) (tablecloth.api/add-or-replace-column ds target-col)) (throw @@ -1490,19 +1546,19 @@ "Exceeded maximum number of columns allowed for operation.")))))) ([ds target-col columns-selector] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/cos) (tablecloth.api/add-or-replace-column ds target-col)) (throw @@ -1515,19 +1571,19 @@ "Applies the operation tablecloth.column.api.operators/log10 to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector options] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [options])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [options])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/log10) (tablecloth.api/add-or-replace-column ds target-col)) (throw @@ -1536,19 +1592,19 @@ "Exceeded maximum number of columns allowed for operation.")))))) ([ds target-col columns-selector] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/log10) (tablecloth.api/add-or-replace-column ds target-col)) (throw @@ -1561,19 +1617,19 @@ "Applies the operation tablecloth.column.api.operators/quot to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. null\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [])] (if (clojure.core/>= ##Inf - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/quot) (tablecloth.api/add-or-replace-column ds target-col)) (throw @@ -1586,44 +1642,52 @@ "Applies the operation tablecloth.column.api.operators/dot-product to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 2 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds columns-selector] (let - [selected-cols__42927__auto__ - (clojure.core/apply - clojure.core/vector - (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [])] - (if - (clojure.core/>= - 2 - (clojure.core/count selected-cols__42927__auto__)) - (clojure.core/->> - args-to-pass__42928__auto__ - (clojure.core/apply tablecloth.column.api.operators/dot-product) - (clojure.core/identity)) - (throw - (java.lang.Exception. - (clojure.core/str - "Exceeded maximum number of columns allowed for operation."))))))) + [aggregator__47425__auto__ + (clojure.core/fn + [ds__47426__auto__] + (let + [ds-with-selected-cols__47427__auto__ + (tablecloth.api/select-columns + ds__47426__auto__ + columns-selector) + cols-count__47428__auto__ + (clojure.core/-> + ds-with-selected-cols__47427__auto__ + tablecloth.api/column-names + clojure.core/count) + selected-cols__47429__auto__ + (tablecloth.api/columns ds-with-selected-cols__47427__auto__)] + (if + (clojure.core/>= 2 cols-count__47428__auto__) + (clojure.core/apply + tablecloth.column.api.operators/dot-product + (clojure.core/apply + clojure.core/vector + selected-cols__47429__auto__)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))] + (tablecloth.api/aggregate ds aggregator__47425__auto__)))) (defn tan "Applies the operation tablecloth.column.api.operators/tan to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector options] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [options])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [options])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/tan) (tablecloth.api/add-or-replace-column ds target-col)) (throw @@ -1632,19 +1696,19 @@ "Exceeded maximum number of columns allowed for operation.")))))) ([ds target-col columns-selector] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/tan) (tablecloth.api/add-or-replace-column ds target-col)) (throw @@ -1657,19 +1721,19 @@ "Applies the operation tablecloth.column.api.operators/cbrt to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector options] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [options])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [options])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/cbrt) (tablecloth.api/add-or-replace-column ds target-col)) (throw @@ -1678,19 +1742,19 @@ "Exceeded maximum number of columns allowed for operation.")))))) ([ds target-col columns-selector] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/cbrt) (tablecloth.api/add-or-replace-column ds target-col)) (throw @@ -1703,19 +1767,19 @@ "Applies the operation tablecloth.column.api.operators/eq to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 2 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [])] (if (clojure.core/>= 2 - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/eq) (tablecloth.api/add-or-replace-column ds target-col)) (throw @@ -1728,65 +1792,81 @@ "Applies the operation tablecloth.column.api.operators/mean to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds columns-selector options] (let - [selected-cols__42927__auto__ - (clojure.core/apply - clojure.core/vector - (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [])] - (if - (clojure.core/>= - 1 - (clojure.core/count selected-cols__42927__auto__)) - (clojure.core/->> - args-to-pass__42928__auto__ - (clojure.core/apply tablecloth.column.api.operators/mean) - (clojure.core/identity)) - (throw - (java.lang.Exception. - (clojure.core/str - "Exceeded maximum number of columns allowed for operation.")))))) + [aggregator__47425__auto__ + (clojure.core/fn + [ds__47426__auto__] + (let + [ds-with-selected-cols__47427__auto__ + (tablecloth.api/select-columns + ds__47426__auto__ + columns-selector) + cols-count__47428__auto__ + (clojure.core/-> + ds-with-selected-cols__47427__auto__ + tablecloth.api/column-names + clojure.core/count) + selected-cols__47429__auto__ + (tablecloth.api/columns ds-with-selected-cols__47427__auto__)] + (if + (clojure.core/>= 1 cols-count__47428__auto__) + (clojure.core/apply + tablecloth.column.api.operators/mean + (clojure.core/apply + clojure.core/vector + selected-cols__47429__auto__)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))] + (tablecloth.api/aggregate ds aggregator__47425__auto__))) ([ds columns-selector] (let - [selected-cols__42927__auto__ - (clojure.core/apply - clojure.core/vector - (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [])] - (if - (clojure.core/>= - 1 - (clojure.core/count selected-cols__42927__auto__)) - (clojure.core/->> - args-to-pass__42928__auto__ - (clojure.core/apply tablecloth.column.api.operators/mean) - (clojure.core/identity)) - (throw - (java.lang.Exception. - (clojure.core/str - "Exceeded maximum number of columns allowed for operation."))))))) + [aggregator__47425__auto__ + (clojure.core/fn + [ds__47426__auto__] + (let + [ds-with-selected-cols__47427__auto__ + (tablecloth.api/select-columns + ds__47426__auto__ + columns-selector) + cols-count__47428__auto__ + (clojure.core/-> + ds-with-selected-cols__47427__auto__ + tablecloth.api/column-names + clojure.core/count) + selected-cols__47429__auto__ + (tablecloth.api/columns ds-with-selected-cols__47427__auto__)] + (if + (clojure.core/>= 1 cols-count__47428__auto__) + (clojure.core/apply + tablecloth.column.api.operators/mean + (clojure.core/apply + clojure.core/vector + selected-cols__47429__auto__)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))] + (tablecloth.api/aggregate ds aggregator__47425__auto__)))) (defn > "Applies the operation tablecloth.column.api.operators/> to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 3 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [])] (if (clojure.core/>= 3 - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/>) (tablecloth.api/add-or-replace-column ds target-col)) (throw @@ -1799,19 +1879,19 @@ "Applies the operation tablecloth.column.api.operators/not-eq to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 2 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [])] (if (clojure.core/>= 2 - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/not-eq) (tablecloth.api/add-or-replace-column ds target-col)) (throw @@ -1824,19 +1904,19 @@ "Applies the operation tablecloth.column.api.operators/even? to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector options] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [options])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [options])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/even?) (tablecloth.api/add-or-replace-column ds target-col)) (throw @@ -1845,19 +1925,19 @@ "Exceeded maximum number of columns allowed for operation.")))))) ([ds target-col columns-selector] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/even?) (tablecloth.api/add-or-replace-column ds target-col)) (throw @@ -1870,19 +1950,19 @@ "Applies the operation tablecloth.column.api.operators/sqrt to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector options] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [options])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [options])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/sqrt) (tablecloth.api/add-or-replace-column ds target-col)) (throw @@ -1891,19 +1971,19 @@ "Exceeded maximum number of columns allowed for operation.")))))) ([ds target-col columns-selector] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/sqrt) (tablecloth.api/add-or-replace-column ds target-col)) (throw @@ -1916,44 +1996,52 @@ "Applies the operation tablecloth.column.api.operators/reduce-* to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds columns-selector] (let - [selected-cols__42927__auto__ - (clojure.core/apply - clojure.core/vector - (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [])] - (if - (clojure.core/>= - 1 - (clojure.core/count selected-cols__42927__auto__)) - (clojure.core/->> - args-to-pass__42928__auto__ - (clojure.core/apply tablecloth.column.api.operators/reduce-*) - (clojure.core/identity)) - (throw - (java.lang.Exception. - (clojure.core/str - "Exceeded maximum number of columns allowed for operation."))))))) + [aggregator__47425__auto__ + (clojure.core/fn + [ds__47426__auto__] + (let + [ds-with-selected-cols__47427__auto__ + (tablecloth.api/select-columns + ds__47426__auto__ + columns-selector) + cols-count__47428__auto__ + (clojure.core/-> + ds-with-selected-cols__47427__auto__ + tablecloth.api/column-names + clojure.core/count) + selected-cols__47429__auto__ + (tablecloth.api/columns ds-with-selected-cols__47427__auto__)] + (if + (clojure.core/>= 1 cols-count__47428__auto__) + (clojure.core/apply + tablecloth.column.api.operators/reduce-* + (clojure.core/apply + clojure.core/vector + selected-cols__47429__auto__)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))] + (tablecloth.api/aggregate ds aggregator__47425__auto__)))) (defn next-down "Applies the operation tablecloth.column.api.operators/next-down to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector options] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [options])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [options])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/next-down) (tablecloth.api/add-or-replace-column ds target-col)) (throw @@ -1962,19 +2050,19 @@ "Exceeded maximum number of columns allowed for operation.")))))) ([ds target-col columns-selector] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/next-down) (tablecloth.api/add-or-replace-column ds target-col)) (throw @@ -1987,19 +2075,19 @@ "Applies the operation tablecloth.column.api.operators/- to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. null\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [])] (if (clojure.core/>= ##Inf - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/-) (tablecloth.api/add-or-replace-column ds target-col)) (throw @@ -2012,19 +2100,19 @@ "Applies the operation tablecloth.column.api.operators/or to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 2 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [])] (if (clojure.core/>= 2 - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/or) (tablecloth.api/add-or-replace-column ds target-col)) (throw @@ -2037,45 +2125,52 @@ "Applies the operation tablecloth.column.api.operators/distance-squared to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 2 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds columns-selector] (let - [selected-cols__42927__auto__ - (clojure.core/apply - clojure.core/vector - (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [])] - (if - (clojure.core/>= - 2 - (clojure.core/count selected-cols__42927__auto__)) - (clojure.core/->> - args-to-pass__42928__auto__ - (clojure.core/apply - tablecloth.column.api.operators/distance-squared) - (clojure.core/identity)) - (throw - (java.lang.Exception. - (clojure.core/str - "Exceeded maximum number of columns allowed for operation."))))))) + [aggregator__47425__auto__ + (clojure.core/fn + [ds__47426__auto__] + (let + [ds-with-selected-cols__47427__auto__ + (tablecloth.api/select-columns + ds__47426__auto__ + columns-selector) + cols-count__47428__auto__ + (clojure.core/-> + ds-with-selected-cols__47427__auto__ + tablecloth.api/column-names + clojure.core/count) + selected-cols__47429__auto__ + (tablecloth.api/columns ds-with-selected-cols__47427__auto__)] + (if + (clojure.core/>= 2 cols-count__47428__auto__) + (clojure.core/apply + tablecloth.column.api.operators/distance-squared + (clojure.core/apply + clojure.core/vector + selected-cols__47429__auto__)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))] + (tablecloth.api/aggregate ds aggregator__47425__auto__)))) (defn pow "Applies the operation tablecloth.column.api.operators/pow to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. null\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [])] (if (clojure.core/>= ##Inf - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/pow) (tablecloth.api/add-or-replace-column ds target-col)) (throw @@ -2088,19 +2183,19 @@ "Applies the operation tablecloth.column.api.operators/next-up to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector options] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [options])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [options])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/next-up) (tablecloth.api/add-or-replace-column ds target-col)) (throw @@ -2109,19 +2204,19 @@ "Exceeded maximum number of columns allowed for operation.")))))) ([ds target-col columns-selector] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/next-up) (tablecloth.api/add-or-replace-column ds target-col)) (throw @@ -2134,65 +2229,81 @@ "Applies the operation tablecloth.column.api.operators/skew to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds columns-selector options] (let - [selected-cols__42927__auto__ - (clojure.core/apply - clojure.core/vector - (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [])] - (if - (clojure.core/>= - 1 - (clojure.core/count selected-cols__42927__auto__)) - (clojure.core/->> - args-to-pass__42928__auto__ - (clojure.core/apply tablecloth.column.api.operators/skew) - (clojure.core/identity)) - (throw - (java.lang.Exception. - (clojure.core/str - "Exceeded maximum number of columns allowed for operation.")))))) + [aggregator__47425__auto__ + (clojure.core/fn + [ds__47426__auto__] + (let + [ds-with-selected-cols__47427__auto__ + (tablecloth.api/select-columns + ds__47426__auto__ + columns-selector) + cols-count__47428__auto__ + (clojure.core/-> + ds-with-selected-cols__47427__auto__ + tablecloth.api/column-names + clojure.core/count) + selected-cols__47429__auto__ + (tablecloth.api/columns ds-with-selected-cols__47427__auto__)] + (if + (clojure.core/>= 1 cols-count__47428__auto__) + (clojure.core/apply + tablecloth.column.api.operators/skew + (clojure.core/apply + clojure.core/vector + selected-cols__47429__auto__)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))] + (tablecloth.api/aggregate ds aggregator__47425__auto__))) ([ds columns-selector] (let - [selected-cols__42927__auto__ - (clojure.core/apply - clojure.core/vector - (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [])] - (if - (clojure.core/>= - 1 - (clojure.core/count selected-cols__42927__auto__)) - (clojure.core/->> - args-to-pass__42928__auto__ - (clojure.core/apply tablecloth.column.api.operators/skew) - (clojure.core/identity)) - (throw - (java.lang.Exception. - (clojure.core/str - "Exceeded maximum number of columns allowed for operation."))))))) + [aggregator__47425__auto__ + (clojure.core/fn + [ds__47426__auto__] + (let + [ds-with-selected-cols__47427__auto__ + (tablecloth.api/select-columns + ds__47426__auto__ + columns-selector) + cols-count__47428__auto__ + (clojure.core/-> + ds-with-selected-cols__47427__auto__ + tablecloth.api/column-names + clojure.core/count) + selected-cols__47429__auto__ + (tablecloth.api/columns ds-with-selected-cols__47427__auto__)] + (if + (clojure.core/>= 1 cols-count__47428__auto__) + (clojure.core/apply + tablecloth.column.api.operators/skew + (clojure.core/apply + clojure.core/vector + selected-cols__47429__auto__)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))] + (tablecloth.api/aggregate ds aggregator__47425__auto__)))) (defn exp "Applies the operation tablecloth.column.api.operators/exp to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector options] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [options])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [options])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/exp) (tablecloth.api/add-or-replace-column ds target-col)) (throw @@ -2201,19 +2312,19 @@ "Exceeded maximum number of columns allowed for operation.")))))) ([ds target-col columns-selector] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/exp) (tablecloth.api/add-or-replace-column ds target-col)) (throw @@ -2226,44 +2337,52 @@ "Applies the operation tablecloth.column.api.operators/mean-fast to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds columns-selector] (let - [selected-cols__42927__auto__ - (clojure.core/apply - clojure.core/vector - (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [])] - (if - (clojure.core/>= - 1 - (clojure.core/count selected-cols__42927__auto__)) - (clojure.core/->> - args-to-pass__42928__auto__ - (clojure.core/apply tablecloth.column.api.operators/mean-fast) - (clojure.core/identity)) - (throw - (java.lang.Exception. - (clojure.core/str - "Exceeded maximum number of columns allowed for operation."))))))) + [aggregator__47425__auto__ + (clojure.core/fn + [ds__47426__auto__] + (let + [ds-with-selected-cols__47427__auto__ + (tablecloth.api/select-columns + ds__47426__auto__ + columns-selector) + cols-count__47428__auto__ + (clojure.core/-> + ds-with-selected-cols__47427__auto__ + tablecloth.api/column-names + clojure.core/count) + selected-cols__47429__auto__ + (tablecloth.api/columns ds-with-selected-cols__47427__auto__)] + (if + (clojure.core/>= 1 cols-count__47428__auto__) + (clojure.core/apply + tablecloth.column.api.operators/mean-fast + (clojure.core/apply + clojure.core/vector + selected-cols__47429__auto__)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))] + (tablecloth.api/aggregate ds aggregator__47425__auto__)))) (defn zero? "Applies the operation tablecloth.column.api.operators/zero? to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector options] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [options])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [options])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/zero?) (tablecloth.api/add-or-replace-column ds target-col)) (throw @@ -2272,19 +2391,19 @@ "Exceeded maximum number of columns allowed for operation.")))))) ([ds target-col columns-selector] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/zero?) (tablecloth.api/add-or-replace-column ds target-col)) (throw @@ -2297,19 +2416,19 @@ "Applies the operation tablecloth.column.api.operators/rem to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. null\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [])] (if (clojure.core/>= ##Inf - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/rem) (tablecloth.api/add-or-replace-column ds target-col)) (throw @@ -2322,19 +2441,19 @@ "Applies the operation tablecloth.column.api.operators/cosh to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector options] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [options])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [options])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/cosh) (tablecloth.api/add-or-replace-column ds target-col)) (throw @@ -2343,19 +2462,19 @@ "Exceeded maximum number of columns allowed for operation.")))))) ([ds target-col columns-selector] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/cosh) (tablecloth.api/add-or-replace-column ds target-col)) (throw @@ -2368,90 +2487,114 @@ "Applies the operation tablecloth.column.api.operators/variance to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds columns-selector options] (let - [selected-cols__42927__auto__ - (clojure.core/apply - clojure.core/vector - (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [])] - (if - (clojure.core/>= - 1 - (clojure.core/count selected-cols__42927__auto__)) - (clojure.core/->> - args-to-pass__42928__auto__ - (clojure.core/apply tablecloth.column.api.operators/variance) - (clojure.core/identity)) - (throw - (java.lang.Exception. - (clojure.core/str - "Exceeded maximum number of columns allowed for operation.")))))) + [aggregator__47425__auto__ + (clojure.core/fn + [ds__47426__auto__] + (let + [ds-with-selected-cols__47427__auto__ + (tablecloth.api/select-columns + ds__47426__auto__ + columns-selector) + cols-count__47428__auto__ + (clojure.core/-> + ds-with-selected-cols__47427__auto__ + tablecloth.api/column-names + clojure.core/count) + selected-cols__47429__auto__ + (tablecloth.api/columns ds-with-selected-cols__47427__auto__)] + (if + (clojure.core/>= 1 cols-count__47428__auto__) + (clojure.core/apply + tablecloth.column.api.operators/variance + (clojure.core/apply + clojure.core/vector + selected-cols__47429__auto__)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))] + (tablecloth.api/aggregate ds aggregator__47425__auto__))) ([ds columns-selector] (let - [selected-cols__42927__auto__ - (clojure.core/apply - clojure.core/vector - (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [])] - (if - (clojure.core/>= - 1 - (clojure.core/count selected-cols__42927__auto__)) - (clojure.core/->> - args-to-pass__42928__auto__ - (clojure.core/apply tablecloth.column.api.operators/variance) - (clojure.core/identity)) - (throw - (java.lang.Exception. - (clojure.core/str - "Exceeded maximum number of columns allowed for operation."))))))) + [aggregator__47425__auto__ + (clojure.core/fn + [ds__47426__auto__] + (let + [ds-with-selected-cols__47427__auto__ + (tablecloth.api/select-columns + ds__47426__auto__ + columns-selector) + cols-count__47428__auto__ + (clojure.core/-> + ds-with-selected-cols__47427__auto__ + tablecloth.api/column-names + clojure.core/count) + selected-cols__47429__auto__ + (tablecloth.api/columns ds-with-selected-cols__47427__auto__)] + (if + (clojure.core/>= 1 cols-count__47428__auto__) + (clojure.core/apply + tablecloth.column.api.operators/variance + (clojure.core/apply + clojure.core/vector + selected-cols__47429__auto__)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))] + (tablecloth.api/aggregate ds aggregator__47425__auto__)))) (defn reduce-+ "Applies the operation tablecloth.column.api.operators/reduce-+ to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds columns-selector] (let - [selected-cols__42927__auto__ - (clojure.core/apply - clojure.core/vector - (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [])] - (if - (clojure.core/>= - 1 - (clojure.core/count selected-cols__42927__auto__)) - (clojure.core/->> - args-to-pass__42928__auto__ - (clojure.core/apply tablecloth.column.api.operators/reduce-+) - (clojure.core/identity)) - (throw - (java.lang.Exception. - (clojure.core/str - "Exceeded maximum number of columns allowed for operation."))))))) + [aggregator__47425__auto__ + (clojure.core/fn + [ds__47426__auto__] + (let + [ds-with-selected-cols__47427__auto__ + (tablecloth.api/select-columns + ds__47426__auto__ + columns-selector) + cols-count__47428__auto__ + (clojure.core/-> + ds-with-selected-cols__47427__auto__ + tablecloth.api/column-names + clojure.core/count) + selected-cols__47429__auto__ + (tablecloth.api/columns ds-with-selected-cols__47427__auto__)] + (if + (clojure.core/>= 1 cols-count__47428__auto__) + (clojure.core/apply + tablecloth.column.api.operators/reduce-+ + (clojure.core/apply + clojure.core/vector + selected-cols__47429__auto__)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))] + (tablecloth.api/aggregate ds aggregator__47425__auto__)))) (defn get-significand "Applies the operation tablecloth.column.api.operators/get-significand to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector options] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [options])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [options])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/get-significand) (tablecloth.api/add-or-replace-column ds target-col)) @@ -2461,19 +2604,19 @@ "Exceeded maximum number of columns allowed for operation.")))))) ([ds target-col columns-selector] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/get-significand) (tablecloth.api/add-or-replace-column ds target-col)) @@ -2487,19 +2630,19 @@ "Applies the operation tablecloth.column.api.operators/bit-and to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. null\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [])] (if (clojure.core/>= ##Inf - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/bit-and) (tablecloth.api/add-or-replace-column ds target-col)) (throw @@ -2512,19 +2655,19 @@ "Applies the operation tablecloth.column.api.operators/not to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector options] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [options])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [options])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/not) (tablecloth.api/add-or-replace-column ds target-col)) (throw @@ -2533,19 +2676,19 @@ "Exceeded maximum number of columns allowed for operation.")))))) ([ds target-col columns-selector] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/not) (tablecloth.api/add-or-replace-column ds target-col)) (throw @@ -2558,19 +2701,19 @@ "Applies the operation tablecloth.column.api.operators/cummin to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector options] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [options])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [options])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/cummin) (tablecloth.api/add-or-replace-column ds target-col)) (throw @@ -2579,19 +2722,19 @@ "Exceeded maximum number of columns allowed for operation.")))))) ([ds target-col columns-selector] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/cummin) (tablecloth.api/add-or-replace-column ds target-col)) (throw @@ -2604,44 +2747,52 @@ "Applies the operation tablecloth.column.api.operators/magnitude to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds columns-selector] (let - [selected-cols__42927__auto__ - (clojure.core/apply - clojure.core/vector - (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [])] - (if - (clojure.core/>= - 1 - (clojure.core/count selected-cols__42927__auto__)) - (clojure.core/->> - args-to-pass__42928__auto__ - (clojure.core/apply tablecloth.column.api.operators/magnitude) - (clojure.core/identity)) - (throw - (java.lang.Exception. - (clojure.core/str - "Exceeded maximum number of columns allowed for operation."))))))) + [aggregator__47425__auto__ + (clojure.core/fn + [ds__47426__auto__] + (let + [ds-with-selected-cols__47427__auto__ + (tablecloth.api/select-columns + ds__47426__auto__ + columns-selector) + cols-count__47428__auto__ + (clojure.core/-> + ds-with-selected-cols__47427__auto__ + tablecloth.api/column-names + clojure.core/count) + selected-cols__47429__auto__ + (tablecloth.api/columns ds-with-selected-cols__47427__auto__)] + (if + (clojure.core/>= 1 cols-count__47428__auto__) + (clojure.core/apply + tablecloth.column.api.operators/magnitude + (clojure.core/apply + clojure.core/vector + selected-cols__47429__auto__)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))] + (tablecloth.api/aggregate ds aggregator__47425__auto__)))) (defn cummax "Applies the operation tablecloth.column.api.operators/cummax to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector options] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [options])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [options])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/cummax) (tablecloth.api/add-or-replace-column ds target-col)) (throw @@ -2650,19 +2801,19 @@ "Exceeded maximum number of columns allowed for operation.")))))) ([ds target-col columns-selector] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/cummax) (tablecloth.api/add-or-replace-column ds target-col)) (throw @@ -2675,19 +2826,19 @@ "Applies the operation tablecloth.column.api.operators// to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. null\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [])] (if (clojure.core/>= ##Inf - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators//) (tablecloth.api/add-or-replace-column ds target-col)) (throw @@ -2700,19 +2851,19 @@ "Applies the operation tablecloth.column.api.operators/bit-or to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. null\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [])] (if (clojure.core/>= ##Inf - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/bit-or) (tablecloth.api/add-or-replace-column ds target-col)) (throw @@ -2725,19 +2876,19 @@ "Applies the operation tablecloth.column.api.operators/>= to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 3 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [])] (if (clojure.core/>= 3 - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/>=) (tablecloth.api/add-or-replace-column ds target-col)) (throw @@ -2750,19 +2901,19 @@ "Applies the operation tablecloth.column.api.operators/bit-flip to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. null\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [])] (if (clojure.core/>= ##Inf - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/bit-flip) (tablecloth.api/add-or-replace-column ds target-col)) (throw @@ -2775,19 +2926,19 @@ "Applies the operation tablecloth.column.api.operators/log1p to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector options] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [options])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [options])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/log1p) (tablecloth.api/add-or-replace-column ds target-col)) (throw @@ -2796,19 +2947,19 @@ "Exceeded maximum number of columns allowed for operation.")))))) ([ds target-col columns-selector] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/log1p) (tablecloth.api/add-or-replace-column ds target-col)) (throw @@ -2821,19 +2972,19 @@ "Applies the operation tablecloth.column.api.operators/asin to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector options] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [options])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [options])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/asin) (tablecloth.api/add-or-replace-column ds target-col)) (throw @@ -2842,19 +2993,19 @@ "Exceeded maximum number of columns allowed for operation.")))))) ([ds target-col columns-selector] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/asin) (tablecloth.api/add-or-replace-column ds target-col)) (throw @@ -2867,65 +3018,81 @@ "Applies the operation tablecloth.column.api.operators/quartile-3 to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds columns-selector options] (let - [selected-cols__42927__auto__ - (clojure.core/apply - clojure.core/vector - (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [])] - (if - (clojure.core/>= - 1 - (clojure.core/count selected-cols__42927__auto__)) - (clojure.core/->> - args-to-pass__42928__auto__ - (clojure.core/apply tablecloth.column.api.operators/quartile-3) - (clojure.core/identity)) - (throw - (java.lang.Exception. - (clojure.core/str - "Exceeded maximum number of columns allowed for operation.")))))) + [aggregator__47425__auto__ + (clojure.core/fn + [ds__47426__auto__] + (let + [ds-with-selected-cols__47427__auto__ + (tablecloth.api/select-columns + ds__47426__auto__ + columns-selector) + cols-count__47428__auto__ + (clojure.core/-> + ds-with-selected-cols__47427__auto__ + tablecloth.api/column-names + clojure.core/count) + selected-cols__47429__auto__ + (tablecloth.api/columns ds-with-selected-cols__47427__auto__)] + (if + (clojure.core/>= 1 cols-count__47428__auto__) + (clojure.core/apply + tablecloth.column.api.operators/quartile-3 + (clojure.core/apply + clojure.core/vector + selected-cols__47429__auto__)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))] + (tablecloth.api/aggregate ds aggregator__47425__auto__))) ([ds columns-selector] (let - [selected-cols__42927__auto__ - (clojure.core/apply - clojure.core/vector - (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [])] - (if - (clojure.core/>= - 1 - (clojure.core/count selected-cols__42927__auto__)) - (clojure.core/->> - args-to-pass__42928__auto__ - (clojure.core/apply tablecloth.column.api.operators/quartile-3) - (clojure.core/identity)) - (throw - (java.lang.Exception. - (clojure.core/str - "Exceeded maximum number of columns allowed for operation."))))))) + [aggregator__47425__auto__ + (clojure.core/fn + [ds__47426__auto__] + (let + [ds-with-selected-cols__47427__auto__ + (tablecloth.api/select-columns + ds__47426__auto__ + columns-selector) + cols-count__47428__auto__ + (clojure.core/-> + ds-with-selected-cols__47427__auto__ + tablecloth.api/column-names + clojure.core/count) + selected-cols__47429__auto__ + (tablecloth.api/columns ds-with-selected-cols__47427__auto__)] + (if + (clojure.core/>= 1 cols-count__47428__auto__) + (clojure.core/apply + tablecloth.column.api.operators/quartile-3 + (clojure.core/apply + clojure.core/vector + selected-cols__47429__auto__)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))] + (tablecloth.api/aggregate ds aggregator__47425__auto__)))) (defn infinite? "Applies the operation tablecloth.column.api.operators/infinite? to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector options] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [options])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [options])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/infinite?) (tablecloth.api/add-or-replace-column ds target-col)) (throw @@ -2934,19 +3101,19 @@ "Exceeded maximum number of columns allowed for operation.")))))) ([ds target-col columns-selector] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/infinite?) (tablecloth.api/add-or-replace-column ds target-col)) (throw @@ -2959,19 +3126,19 @@ "Applies the operation tablecloth.column.api.operators/round to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector options] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [options])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [options])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/round) (tablecloth.api/add-or-replace-column ds target-col)) (throw @@ -2980,19 +3147,19 @@ "Exceeded maximum number of columns allowed for operation.")))))) ([ds target-col columns-selector] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/round) (tablecloth.api/add-or-replace-column ds target-col)) (throw @@ -3005,65 +3172,81 @@ "Applies the operation tablecloth.column.api.operators/quartile-1 to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds columns-selector options] (let - [selected-cols__42927__auto__ - (clojure.core/apply - clojure.core/vector - (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [])] - (if - (clojure.core/>= - 1 - (clojure.core/count selected-cols__42927__auto__)) - (clojure.core/->> - args-to-pass__42928__auto__ - (clojure.core/apply tablecloth.column.api.operators/quartile-1) - (clojure.core/identity)) - (throw - (java.lang.Exception. - (clojure.core/str - "Exceeded maximum number of columns allowed for operation.")))))) + [aggregator__47425__auto__ + (clojure.core/fn + [ds__47426__auto__] + (let + [ds-with-selected-cols__47427__auto__ + (tablecloth.api/select-columns + ds__47426__auto__ + columns-selector) + cols-count__47428__auto__ + (clojure.core/-> + ds-with-selected-cols__47427__auto__ + tablecloth.api/column-names + clojure.core/count) + selected-cols__47429__auto__ + (tablecloth.api/columns ds-with-selected-cols__47427__auto__)] + (if + (clojure.core/>= 1 cols-count__47428__auto__) + (clojure.core/apply + tablecloth.column.api.operators/quartile-1 + (clojure.core/apply + clojure.core/vector + selected-cols__47429__auto__)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))] + (tablecloth.api/aggregate ds aggregator__47425__auto__))) ([ds columns-selector] (let - [selected-cols__42927__auto__ - (clojure.core/apply - clojure.core/vector - (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [])] - (if - (clojure.core/>= - 1 - (clojure.core/count selected-cols__42927__auto__)) - (clojure.core/->> - args-to-pass__42928__auto__ - (clojure.core/apply tablecloth.column.api.operators/quartile-1) - (clojure.core/identity)) - (throw - (java.lang.Exception. - (clojure.core/str - "Exceeded maximum number of columns allowed for operation."))))))) + [aggregator__47425__auto__ + (clojure.core/fn + [ds__47426__auto__] + (let + [ds-with-selected-cols__47427__auto__ + (tablecloth.api/select-columns + ds__47426__auto__ + columns-selector) + cols-count__47428__auto__ + (clojure.core/-> + ds-with-selected-cols__47427__auto__ + tablecloth.api/column-names + clojure.core/count) + selected-cols__47429__auto__ + (tablecloth.api/columns ds-with-selected-cols__47427__auto__)] + (if + (clojure.core/>= 1 cols-count__47428__auto__) + (clojure.core/apply + tablecloth.column.api.operators/quartile-1 + (clojure.core/apply + clojure.core/vector + selected-cols__47429__auto__)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))] + (tablecloth.api/aggregate ds aggregator__47425__auto__)))) (defn odd? "Applies the operation tablecloth.column.api.operators/odd? to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector options] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [options])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [options])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/odd?) (tablecloth.api/add-or-replace-column ds target-col)) (throw @@ -3072,19 +3255,19 @@ "Exceeded maximum number of columns allowed for operation.")))))) ([ds target-col columns-selector] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/odd?) (tablecloth.api/add-or-replace-column ds target-col)) (throw @@ -3097,19 +3280,19 @@ "Applies the operation tablecloth.column.api.operators/bit-clear to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. null\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [])] (if (clojure.core/>= ##Inf - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/bit-clear) (tablecloth.api/add-or-replace-column ds target-col)) (throw @@ -3122,19 +3305,19 @@ "Applies the operation tablecloth.column.api.operators/+ to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. null\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [])] (if (clojure.core/>= ##Inf - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/+) (tablecloth.api/add-or-replace-column ds target-col)) (throw @@ -3147,19 +3330,19 @@ "Applies the operation tablecloth.column.api.operators/abs to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector options] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [options])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [options])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/abs) (tablecloth.api/add-or-replace-column ds target-col)) (throw @@ -3168,19 +3351,19 @@ "Exceeded maximum number of columns allowed for operation.")))))) ([ds target-col columns-selector] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/abs) (tablecloth.api/add-or-replace-column ds target-col)) (throw @@ -3193,65 +3376,81 @@ "Applies the operation tablecloth.column.api.operators/median to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds columns-selector options] (let - [selected-cols__42927__auto__ - (clojure.core/apply - clojure.core/vector - (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [])] - (if - (clojure.core/>= - 1 - (clojure.core/count selected-cols__42927__auto__)) - (clojure.core/->> - args-to-pass__42928__auto__ - (clojure.core/apply tablecloth.column.api.operators/median) - (clojure.core/identity)) - (throw - (java.lang.Exception. - (clojure.core/str - "Exceeded maximum number of columns allowed for operation.")))))) + [aggregator__47425__auto__ + (clojure.core/fn + [ds__47426__auto__] + (let + [ds-with-selected-cols__47427__auto__ + (tablecloth.api/select-columns + ds__47426__auto__ + columns-selector) + cols-count__47428__auto__ + (clojure.core/-> + ds-with-selected-cols__47427__auto__ + tablecloth.api/column-names + clojure.core/count) + selected-cols__47429__auto__ + (tablecloth.api/columns ds-with-selected-cols__47427__auto__)] + (if + (clojure.core/>= 1 cols-count__47428__auto__) + (clojure.core/apply + tablecloth.column.api.operators/median + (clojure.core/apply + clojure.core/vector + selected-cols__47429__auto__)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))] + (tablecloth.api/aggregate ds aggregator__47425__auto__))) ([ds columns-selector] (let - [selected-cols__42927__auto__ - (clojure.core/apply - clojure.core/vector - (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [])] - (if - (clojure.core/>= - 1 - (clojure.core/count selected-cols__42927__auto__)) - (clojure.core/->> - args-to-pass__42928__auto__ - (clojure.core/apply tablecloth.column.api.operators/median) - (clojure.core/identity)) - (throw - (java.lang.Exception. - (clojure.core/str - "Exceeded maximum number of columns allowed for operation."))))))) + [aggregator__47425__auto__ + (clojure.core/fn + [ds__47426__auto__] + (let + [ds-with-selected-cols__47427__auto__ + (tablecloth.api/select-columns + ds__47426__auto__ + columns-selector) + cols-count__47428__auto__ + (clojure.core/-> + ds-with-selected-cols__47427__auto__ + tablecloth.api/column-names + clojure.core/count) + selected-cols__47429__auto__ + (tablecloth.api/columns ds-with-selected-cols__47427__auto__)] + (if + (clojure.core/>= 1 cols-count__47428__auto__) + (clojure.core/apply + tablecloth.column.api.operators/median + (clojure.core/apply + clojure.core/vector + selected-cols__47429__auto__)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))] + (tablecloth.api/aggregate ds aggregator__47425__auto__)))) (defn sinh "Applies the operation tablecloth.column.api.operators/sinh to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector options] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [options])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [options])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/sinh) (tablecloth.api/add-or-replace-column ds target-col)) (throw @@ -3260,19 +3459,19 @@ "Exceeded maximum number of columns allowed for operation.")))))) ([ds target-col columns-selector] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/sinh) (tablecloth.api/add-or-replace-column ds target-col)) (throw @@ -3285,19 +3484,19 @@ "Applies the operation tablecloth.column.api.operators/rint to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector options] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [options])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [options])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/rint) (tablecloth.api/add-or-replace-column ds target-col)) (throw @@ -3306,19 +3505,19 @@ "Exceeded maximum number of columns allowed for operation.")))))) ([ds target-col columns-selector] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/rint) (tablecloth.api/add-or-replace-column ds target-col)) (throw @@ -3331,19 +3530,19 @@ "Applies the operation tablecloth.column.api.operators/bit-not to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector options] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [options])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [options])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/bit-not) (tablecloth.api/add-or-replace-column ds target-col)) (throw @@ -3352,19 +3551,19 @@ "Exceeded maximum number of columns allowed for operation.")))))) ([ds target-col columns-selector] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/bit-not) (tablecloth.api/add-or-replace-column ds target-col)) (throw @@ -3377,19 +3576,19 @@ "Applies the operation tablecloth.column.api.operators/max to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. null\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [])] (if (clojure.core/>= ##Inf - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/max) (tablecloth.api/add-or-replace-column ds target-col)) (throw @@ -3402,19 +3601,19 @@ "Applies the operation tablecloth.column.api.operators/ulp to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector options] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [options])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [options])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/ulp) (tablecloth.api/add-or-replace-column ds target-col)) (throw @@ -3423,19 +3622,19 @@ "Exceeded maximum number of columns allowed for operation.")))))) ([ds target-col columns-selector] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/ulp) (tablecloth.api/add-or-replace-column ds target-col)) (throw @@ -3448,21 +3647,21 @@ "Applies the operation tablecloth.column.api.operators/percentiles to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector percentages options] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/concat - selected-cols__42927__auto__ + selected-cols__47430__auto__ [percentages options])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/percentiles) (tablecloth.api/add-or-replace-column ds target-col)) (throw @@ -3471,19 +3670,19 @@ "Exceeded maximum number of columns allowed for operation.")))))) ([ds target-col columns-selector percentages] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [percentages])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [percentages])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/percentiles) (tablecloth.api/add-or-replace-column ds target-col)) (throw @@ -3496,19 +3695,19 @@ "Applies the operation tablecloth.column.api.operators/sin to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector options] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [options])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [options])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/sin) (tablecloth.api/add-or-replace-column ds target-col)) (throw @@ -3517,19 +3716,19 @@ "Exceeded maximum number of columns allowed for operation.")))))) ([ds target-col columns-selector] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/sin) (tablecloth.api/add-or-replace-column ds target-col)) (throw @@ -3542,44 +3741,52 @@ "Applies the operation tablecloth.column.api.operators/sum-fast to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds columns-selector] (let - [selected-cols__42927__auto__ - (clojure.core/apply - clojure.core/vector - (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [])] - (if - (clojure.core/>= - 1 - (clojure.core/count selected-cols__42927__auto__)) - (clojure.core/->> - args-to-pass__42928__auto__ - (clojure.core/apply tablecloth.column.api.operators/sum-fast) - (clojure.core/identity)) - (throw - (java.lang.Exception. - (clojure.core/str - "Exceeded maximum number of columns allowed for operation."))))))) + [aggregator__47425__auto__ + (clojure.core/fn + [ds__47426__auto__] + (let + [ds-with-selected-cols__47427__auto__ + (tablecloth.api/select-columns + ds__47426__auto__ + columns-selector) + cols-count__47428__auto__ + (clojure.core/-> + ds-with-selected-cols__47427__auto__ + tablecloth.api/column-names + clojure.core/count) + selected-cols__47429__auto__ + (tablecloth.api/columns ds-with-selected-cols__47427__auto__)] + (if + (clojure.core/>= 1 cols-count__47428__auto__) + (clojure.core/apply + tablecloth.column.api.operators/sum-fast + (clojure.core/apply + clojure.core/vector + selected-cols__47429__auto__)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))] + (tablecloth.api/aggregate ds aggregator__47425__auto__)))) (defn signum "Applies the operation tablecloth.column.api.operators/signum to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector options] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [options])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [options])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/signum) (tablecloth.api/add-or-replace-column ds target-col)) (throw @@ -3588,19 +3795,19 @@ "Exceeded maximum number of columns allowed for operation.")))))) ([ds target-col columns-selector] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/signum) (tablecloth.api/add-or-replace-column ds target-col)) (throw @@ -3613,45 +3820,52 @@ "Applies the operation tablecloth.column.api.operators/magnitude-squared to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds columns-selector] (let - [selected-cols__42927__auto__ - (clojure.core/apply - clojure.core/vector - (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [])] - (if - (clojure.core/>= - 1 - (clojure.core/count selected-cols__42927__auto__)) - (clojure.core/->> - args-to-pass__42928__auto__ - (clojure.core/apply - tablecloth.column.api.operators/magnitude-squared) - (clojure.core/identity)) - (throw - (java.lang.Exception. - (clojure.core/str - "Exceeded maximum number of columns allowed for operation."))))))) + [aggregator__47425__auto__ + (clojure.core/fn + [ds__47426__auto__] + (let + [ds-with-selected-cols__47427__auto__ + (tablecloth.api/select-columns + ds__47426__auto__ + columns-selector) + cols-count__47428__auto__ + (clojure.core/-> + ds-with-selected-cols__47427__auto__ + tablecloth.api/column-names + clojure.core/count) + selected-cols__47429__auto__ + (tablecloth.api/columns ds-with-selected-cols__47427__auto__)] + (if + (clojure.core/>= 1 cols-count__47428__auto__) + (clojure.core/apply + tablecloth.column.api.operators/magnitude-squared + (clojure.core/apply + clojure.core/vector + selected-cols__47429__auto__)) + (throw + (java.lang.Exception. + (clojure.core/str + "Exceeded maximum number of columns allowed for operation."))))))] + (tablecloth.api/aggregate ds aggregator__47425__auto__)))) (defn and "Applies the operation tablecloth.column.api.operators/and to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 2 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector] (let - [selected-cols__42927__auto__ + [selected-cols__47430__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__42928__auto__ - (clojure.core/concat selected-cols__42927__auto__ [])] + args-to-pass__47431__auto__ + (clojure.core/concat selected-cols__47430__auto__ [])] (if (clojure.core/>= 2 - (clojure.core/count selected-cols__42927__auto__)) + (clojure.core/count selected-cols__47430__auto__)) (clojure.core/->> - args-to-pass__42928__auto__ + args-to-pass__47431__auto__ (clojure.core/apply tablecloth.column.api.operators/and) (tablecloth.api/add-or-replace-column ds target-col)) (throw diff --git a/test/tablecloth/api/operators_test.clj b/test/tablecloth/api/operators_test.clj index 23fa381..ffd3bb7 100644 --- a/test/tablecloth/api/operators_test.clj +++ b/test/tablecloth/api/operators_test.clj @@ -9,16 +9,13 @@ (:use [tablecloth.api.operators])) -(defn scalar? [item] - (= (tech.v3.datatype.argtypes/arg-type item) - :scalar)) - (facts "about ops that return the op result" (facts "about ops that take a maximum of one column and return a scalar" - (let [ds (dataset {:a [1 2 3]})] + (let [ds (dataset {:label [:a :b :a :b] + :value [1 2 3 4]})] (let [ops [kurtosis magnitude magnitude-squared @@ -36,19 +33,36 @@ sum-fast variance]] (doseq [op ops] - (let [result (op ds [:a])] - result => scalar?))))) + (fact "ops can aggregate a regular dataset" + (let [result (op ds [:value])] + result => tablecloth.api/dataset? + (contains? result "summary") => true)) + (fact "ops can aggregate a grouped ds" + (let [result (-> ds + (tablecloth.api/group-by :label) + (op [:value]))] + result => tablecloth.api/dataset? + (contains? result "summary") => true)))))) (facts "about ops that take a maximum of two columns and return a scalar" - (let [ds (dataset {:a [1 2 3] - :b [4 5 6]})] + (let [ds (dataset {:label [:a :b :a :b] + :values1 [1 2 3 4] + :values2 [5 6 7 8]})] (let [ops [distance distance-squared dot-product]] (doseq [op ops] - (let [result (op ds [:a :b])] - result => scalar?)))))) + (fact "ops can aggregate a regular dataset" + (let [result (op ds [:values1 :values2])] + result => tablecloth.api/dataset? + (contains? result "summary"))) + (fact "ops can aggregate a grouped dataset" + (let [result (-> ds + (tablecloth.api/group-by :label) + (op [:values1 :values2]))] + result => tablecloth.api/dataset? + (contains? result "summary")))))))) (facts "about ops that return a dataset with a new column" @@ -161,20 +175,3 @@ (doseq [op ops] (let [result (op ds :e [:a :b :c :d])] (contains? result :e) => true))))) - - -(comment - ;; some analysis I'll keep around for now b/c it may be useful later - (defn longest-vector [lst] - (reduce #(max-key count %1 %2) lst)) - - (->> (ns-publics 'tablecloth.column.api.operators) - (map (fn [[sym var]] [sym (-> var meta :arglists)])) - (map (fn [[sym arglist]] [sym (longest-vector arglist)])) - (reduce (fn [memo [sym longest-arglist]] - (if (contains? memo longest-arglist) - (update memo longest-arglist conj sym) - (assoc memo longest-arglist [sym]))) - {}) - (reduce (fn [m [k v]] (update m k sort v)) {}) - )) From ea430d4d36559bbb82de5a525b0db84cc1648ed6 Mon Sep 17 00:00:00 2001 From: Ethan Miller Date: Sun, 4 Feb 2024 17:36:50 -0500 Subject: [PATCH 32/42] Add `column` API documentation (#120) * Add a sample notebook file * Save draft work on column api doc * Add doc entry for tcc/select boolean select This appears to be broken now, but ti shouldn't be. * Export column api operators in column api ns * Add in some documentation of operations * Hide namespace expression from generated doc * Fix circular dependency * Update generated docs * Update text in colum operations section * More updates to the docs * Remove "Functionality" header in TOC This way Dataset is an entry, and I can add Column after that. * Add Column API documentation * Add an indication of column op signature to docs * Export lifted column operators in dataset api template * Add documentation for column operations on datasets * Some minor changes * Rename the two headers for Dataset and Column, adding API onto the end. * A few small fixes. * Remove the `Functions` section This is essentially replaced by the Column API that lifts these functions into Tablecloth * Try to remove cyclical dependency * Revert "Try to remove cyclical dependency" This reverts commit fcb16c48400fe2bddae4fdf66bfff34bcef1d592. * Fix circular dependency * Actually fix cyclical dependency * Undo added line --- docs/.clay.html | 1375 +++++ docs/.clay_files/bootstrap0.css | 7 + docs/.clay_files/html-default1.js | 2 + docs/.clay_files/html-default2.js | 6 + docs/.clay_files/html-default3.js | 7 + docs/column_api.html | 716 +++ docs/column_api.qmd | 740 +++ docs/column_api_files/bootstrap0.css | 7 + docs/column_api_files/bootstrap2.css | 7 + docs/column_api_files/html-default1.js | 2 + docs/column_api_files/html-default2.js | 6 + docs/column_api_files/html-default3.js | 7 + .../libs/bootstrap/bootstrap-icons.css | 2018 +++++++ .../libs/bootstrap/bootstrap-icons.woff | Bin 0 -> 164168 bytes .../libs/bootstrap/bootstrap.min.css | 10 + .../libs/bootstrap/bootstrap.min.js | 7 + .../libs/clipboard/clipboard.min.js | 7 + .../libs/quarto-html/anchor.min.js | 9 + .../libs/quarto-html/popper.min.js | 6 + .../quarto-syntax-highlighting.css | 189 + .../libs/quarto-html/quarto.js | 902 ++++ .../libs/quarto-html/tippy.css | 1 + .../libs/quarto-html/tippy.umd.min.js | 2 + docs/column_api_files/md-default0.js | 2 + docs/column_api_files/md-default1.js | 6 + docs/index.html | 4641 ++++++++++------- .../libs/bootstrap/bootstrap.min.css | 6 +- .../quarto-syntax-highlighting.css | 5 + docs/notebooks/custom.scss | 11 + notebooks/column_api.clj | 168 + notebooks/index.clj | 264 +- src/tablecloth/api.clj | 1559 ++++++ src/tablecloth/api/api_template.clj | 4 + src/tablecloth/api/lift_operators.clj | 18 +- src/tablecloth/api/operators.clj | 2493 ++++----- src/tablecloth/column/api.clj | 783 +++ src/tablecloth/column/api/api_template.clj | 3 + src/tablecloth/column/api/lift_operators.clj | 2 +- 38 files changed, 12739 insertions(+), 3259 deletions(-) create mode 100644 docs/.clay.html create mode 100644 docs/.clay_files/bootstrap0.css create mode 100644 docs/.clay_files/html-default1.js create mode 100644 docs/.clay_files/html-default2.js create mode 100644 docs/.clay_files/html-default3.js create mode 100644 docs/column_api.html create mode 100644 docs/column_api.qmd create mode 100644 docs/column_api_files/bootstrap0.css create mode 100644 docs/column_api_files/bootstrap2.css create mode 100644 docs/column_api_files/html-default1.js create mode 100644 docs/column_api_files/html-default2.js create mode 100644 docs/column_api_files/html-default3.js create mode 100644 docs/column_api_files/libs/bootstrap/bootstrap-icons.css create mode 100644 docs/column_api_files/libs/bootstrap/bootstrap-icons.woff create mode 100644 docs/column_api_files/libs/bootstrap/bootstrap.min.css create mode 100644 docs/column_api_files/libs/bootstrap/bootstrap.min.js create mode 100644 docs/column_api_files/libs/clipboard/clipboard.min.js create mode 100644 docs/column_api_files/libs/quarto-html/anchor.min.js create mode 100644 docs/column_api_files/libs/quarto-html/popper.min.js create mode 100644 docs/column_api_files/libs/quarto-html/quarto-syntax-highlighting.css create mode 100644 docs/column_api_files/libs/quarto-html/quarto.js create mode 100644 docs/column_api_files/libs/quarto-html/tippy.css create mode 100644 docs/column_api_files/libs/quarto-html/tippy.umd.min.js create mode 100644 docs/column_api_files/md-default0.js create mode 100644 docs/column_api_files/md-default1.js create mode 100644 docs/notebooks/custom.scss create mode 100644 notebooks/column_api.clj diff --git a/docs/.clay.html b/docs/.clay.html new file mode 100644 index 0000000..2486ea1 --- /dev/null +++ b/docs/.clay.html @@ -0,0 +1,1375 @@ + + + + +Clay

    \ No newline at end of file diff --git a/docs/.clay_files/bootstrap0.css b/docs/.clay_files/bootstrap0.css new file mode 100644 index 0000000..6ee5956 --- /dev/null +++ b/docs/.clay_files/bootstrap0.css @@ -0,0 +1,7 @@ +/*! + * Bootstrap v4.6.1 (https://getbootstrap.com/) + * Copyright 2011-2021 The Bootstrap Authors + * Copyright 2011-2021 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + */:root{--blue:#007bff;--indigo:#6610f2;--purple:#6f42c1;--pink:#e83e8c;--red:#dc3545;--orange:#fd7e14;--yellow:#ffc107;--green:#28a745;--teal:#20c997;--cyan:#17a2b8;--white:#fff;--gray:#6c757d;--gray-dark:#343a40;--primary:#007bff;--secondary:#6c757d;--success:#28a745;--info:#17a2b8;--warning:#ffc107;--danger:#dc3545;--light:#f8f9fa;--dark:#343a40;--breakpoint-xs:0;--breakpoint-sm:576px;--breakpoint-md:768px;--breakpoint-lg:992px;--breakpoint-xl:1200px;--font-family-sans-serif:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}*,::after,::before{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}[tabindex="-1"]:focus:not(:focus-visible){outline:0!important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#007bff;text-decoration:none;background-color:transparent}a:hover{color:#0056b3;text-decoration:underline}a:not([href]):not([class]){color:inherit;text-decoration:none}a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto;-ms-overflow-style:scrollbar}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg{overflow:hidden;vertical-align:middle}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:left;caption-side:bottom}th{text-align:inherit;text-align:-webkit-match-parent}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus:not(:focus-visible){outline:0}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none!important}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-bottom:.5rem;font-weight:500;line-height:1.2}.h1,h1{font-size:2.5rem}.h2,h2{font-size:2rem}.h3,h3{font-size:1.75rem}.h4,h4{font-size:1.5rem}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:6rem;font-weight:300;line-height:1.2}.display-2{font-size:5.5rem;font-weight:300;line-height:1.2}.display-3{font-size:4.5rem;font-weight:300;line-height:1.2}.display-4{font-size:3.5rem;font-weight:300;line-height:1.2}hr{margin-top:1rem;margin-bottom:1rem;border:0;border-top:1px solid rgba(0,0,0,.1)}.small,small{font-size:80%;font-weight:400}.mark,mark{padding:.2em;background-color:#fcf8e3}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:90%;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote-footer{display:block;font-size:80%;color:#6c757d}.blockquote-footer::before{content:"\2014\00A0"}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:90%;color:#6c757d}code{font-size:87.5%;color:#e83e8c;word-wrap:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:87.5%;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:100%;font-weight:700}pre{display:block;font-size:87.5%;color:#212529}pre code{font-size:inherit;color:inherit;word-break:normal}.pre-scrollable{max-height:340px;overflow-y:scroll}.container,.container-fluid,.container-lg,.container-md,.container-sm,.container-xl{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:576px){.container,.container-sm{max-width:540px}}@media (min-width:768px){.container,.container-md,.container-sm{max-width:720px}}@media (min-width:992px){.container,.container-lg,.container-md,.container-sm{max-width:960px}}@media (min-width:1200px){.container,.container-lg,.container-md,.container-sm,.container-xl{max-width:1140px}}.row{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}.no-gutters{margin-right:0;margin-left:0}.no-gutters>.col,.no-gutters>[class*=col-]{padding-right:0;padding-left:0}.col,.col-1,.col-10,.col-11,.col-12,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-auto,.col-lg,.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-auto,.col-md,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-auto,.col-sm,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-auto,.col-xl,.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-auto{position:relative;width:100%;padding-right:15px;padding-left:15px}.col{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-3>*{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.row-cols-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-6>*{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-first{-ms-flex-order:-1;order:-1}.order-last{-ms-flex-order:13;order:13}.order-0{-ms-flex-order:0;order:0}.order-1{-ms-flex-order:1;order:1}.order-2{-ms-flex-order:2;order:2}.order-3{-ms-flex-order:3;order:3}.order-4{-ms-flex-order:4;order:4}.order-5{-ms-flex-order:5;order:5}.order-6{-ms-flex-order:6;order:6}.order-7{-ms-flex-order:7;order:7}.order-8{-ms-flex-order:8;order:8}.order-9{-ms-flex-order:9;order:9}.order-10{-ms-flex-order:10;order:10}.order-11{-ms-flex-order:11;order:11}.order-12{-ms-flex-order:12;order:12}.offset-1{margin-left:8.333333%}.offset-2{margin-left:16.666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.333333%}.offset-5{margin-left:41.666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.333333%}.offset-8{margin-left:66.666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.333333%}.offset-11{margin-left:91.666667%}@media (min-width:576px){.col-sm{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-sm-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-sm-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-sm-3>*{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.row-cols-sm-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-sm-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-sm-6>*{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-sm-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-sm-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-sm-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-sm-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-sm-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-sm-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-sm-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-sm-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-sm-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-sm-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-sm-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-sm-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-sm-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-sm-first{-ms-flex-order:-1;order:-1}.order-sm-last{-ms-flex-order:13;order:13}.order-sm-0{-ms-flex-order:0;order:0}.order-sm-1{-ms-flex-order:1;order:1}.order-sm-2{-ms-flex-order:2;order:2}.order-sm-3{-ms-flex-order:3;order:3}.order-sm-4{-ms-flex-order:4;order:4}.order-sm-5{-ms-flex-order:5;order:5}.order-sm-6{-ms-flex-order:6;order:6}.order-sm-7{-ms-flex-order:7;order:7}.order-sm-8{-ms-flex-order:8;order:8}.order-sm-9{-ms-flex-order:9;order:9}.order-sm-10{-ms-flex-order:10;order:10}.order-sm-11{-ms-flex-order:11;order:11}.order-sm-12{-ms-flex-order:12;order:12}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.333333%}.offset-sm-2{margin-left:16.666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.333333%}.offset-sm-5{margin-left:41.666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.333333%}.offset-sm-8{margin-left:66.666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.333333%}.offset-sm-11{margin-left:91.666667%}}@media (min-width:768px){.col-md{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-md-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-md-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-md-3>*{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.row-cols-md-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-md-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-md-6>*{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-md-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-md-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-md-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-md-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-md-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-md-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-md-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-md-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-md-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-md-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-md-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-md-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-md-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-md-first{-ms-flex-order:-1;order:-1}.order-md-last{-ms-flex-order:13;order:13}.order-md-0{-ms-flex-order:0;order:0}.order-md-1{-ms-flex-order:1;order:1}.order-md-2{-ms-flex-order:2;order:2}.order-md-3{-ms-flex-order:3;order:3}.order-md-4{-ms-flex-order:4;order:4}.order-md-5{-ms-flex-order:5;order:5}.order-md-6{-ms-flex-order:6;order:6}.order-md-7{-ms-flex-order:7;order:7}.order-md-8{-ms-flex-order:8;order:8}.order-md-9{-ms-flex-order:9;order:9}.order-md-10{-ms-flex-order:10;order:10}.order-md-11{-ms-flex-order:11;order:11}.order-md-12{-ms-flex-order:12;order:12}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.333333%}.offset-md-2{margin-left:16.666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.333333%}.offset-md-5{margin-left:41.666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.333333%}.offset-md-8{margin-left:66.666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.333333%}.offset-md-11{margin-left:91.666667%}}@media (min-width:992px){.col-lg{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-lg-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-lg-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-lg-3>*{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.row-cols-lg-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-lg-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-lg-6>*{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-lg-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-lg-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-lg-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-lg-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-lg-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-lg-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-lg-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-lg-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-lg-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-lg-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-lg-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-lg-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-lg-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-lg-first{-ms-flex-order:-1;order:-1}.order-lg-last{-ms-flex-order:13;order:13}.order-lg-0{-ms-flex-order:0;order:0}.order-lg-1{-ms-flex-order:1;order:1}.order-lg-2{-ms-flex-order:2;order:2}.order-lg-3{-ms-flex-order:3;order:3}.order-lg-4{-ms-flex-order:4;order:4}.order-lg-5{-ms-flex-order:5;order:5}.order-lg-6{-ms-flex-order:6;order:6}.order-lg-7{-ms-flex-order:7;order:7}.order-lg-8{-ms-flex-order:8;order:8}.order-lg-9{-ms-flex-order:9;order:9}.order-lg-10{-ms-flex-order:10;order:10}.order-lg-11{-ms-flex-order:11;order:11}.order-lg-12{-ms-flex-order:12;order:12}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.333333%}.offset-lg-2{margin-left:16.666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.333333%}.offset-lg-5{margin-left:41.666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.333333%}.offset-lg-8{margin-left:66.666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.333333%}.offset-lg-11{margin-left:91.666667%}}@media (min-width:1200px){.col-xl{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-xl-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-xl-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-xl-3>*{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.row-cols-xl-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-xl-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-xl-6>*{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-xl-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-xl-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-xl-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-xl-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-xl-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-xl-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-xl-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-xl-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-xl-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-xl-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-xl-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-xl-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-xl-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-xl-first{-ms-flex-order:-1;order:-1}.order-xl-last{-ms-flex-order:13;order:13}.order-xl-0{-ms-flex-order:0;order:0}.order-xl-1{-ms-flex-order:1;order:1}.order-xl-2{-ms-flex-order:2;order:2}.order-xl-3{-ms-flex-order:3;order:3}.order-xl-4{-ms-flex-order:4;order:4}.order-xl-5{-ms-flex-order:5;order:5}.order-xl-6{-ms-flex-order:6;order:6}.order-xl-7{-ms-flex-order:7;order:7}.order-xl-8{-ms-flex-order:8;order:8}.order-xl-9{-ms-flex-order:9;order:9}.order-xl-10{-ms-flex-order:10;order:10}.order-xl-11{-ms-flex-order:11;order:11}.order-xl-12{-ms-flex-order:12;order:12}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.333333%}.offset-xl-2{margin-left:16.666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.333333%}.offset-xl-5{margin-left:41.666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.333333%}.offset-xl-8{margin-left:66.666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.333333%}.offset-xl-11{margin-left:91.666667%}}.table{width:100%;margin-bottom:1rem;color:#212529}.table td,.table th{padding:.75rem;vertical-align:top;border-top:1px solid #dee2e6}.table thead th{vertical-align:bottom;border-bottom:2px solid #dee2e6}.table tbody+tbody{border-top:2px solid #dee2e6}.table-sm td,.table-sm th{padding:.3rem}.table-bordered{border:1px solid #dee2e6}.table-bordered td,.table-bordered th{border:1px solid #dee2e6}.table-bordered thead td,.table-bordered thead th{border-bottom-width:2px}.table-borderless tbody+tbody,.table-borderless td,.table-borderless th,.table-borderless thead th{border:0}.table-striped tbody tr:nth-of-type(odd){background-color:rgba(0,0,0,.05)}.table-hover tbody tr:hover{color:#212529;background-color:rgba(0,0,0,.075)}.table-primary,.table-primary>td,.table-primary>th{background-color:#b8daff}.table-primary tbody+tbody,.table-primary td,.table-primary th,.table-primary thead th{border-color:#7abaff}.table-hover .table-primary:hover{background-color:#9fcdff}.table-hover .table-primary:hover>td,.table-hover .table-primary:hover>th{background-color:#9fcdff}.table-secondary,.table-secondary>td,.table-secondary>th{background-color:#d6d8db}.table-secondary tbody+tbody,.table-secondary td,.table-secondary th,.table-secondary thead th{border-color:#b3b7bb}.table-hover .table-secondary:hover{background-color:#c8cbcf}.table-hover .table-secondary:hover>td,.table-hover .table-secondary:hover>th{background-color:#c8cbcf}.table-success,.table-success>td,.table-success>th{background-color:#c3e6cb}.table-success tbody+tbody,.table-success td,.table-success th,.table-success thead th{border-color:#8fd19e}.table-hover .table-success:hover{background-color:#b1dfbb}.table-hover .table-success:hover>td,.table-hover .table-success:hover>th{background-color:#b1dfbb}.table-info,.table-info>td,.table-info>th{background-color:#bee5eb}.table-info tbody+tbody,.table-info td,.table-info th,.table-info thead th{border-color:#86cfda}.table-hover .table-info:hover{background-color:#abdde5}.table-hover .table-info:hover>td,.table-hover .table-info:hover>th{background-color:#abdde5}.table-warning,.table-warning>td,.table-warning>th{background-color:#ffeeba}.table-warning tbody+tbody,.table-warning td,.table-warning th,.table-warning thead th{border-color:#ffdf7e}.table-hover .table-warning:hover{background-color:#ffe8a1}.table-hover .table-warning:hover>td,.table-hover .table-warning:hover>th{background-color:#ffe8a1}.table-danger,.table-danger>td,.table-danger>th{background-color:#f5c6cb}.table-danger tbody+tbody,.table-danger td,.table-danger th,.table-danger thead th{border-color:#ed969e}.table-hover .table-danger:hover{background-color:#f1b0b7}.table-hover .table-danger:hover>td,.table-hover .table-danger:hover>th{background-color:#f1b0b7}.table-light,.table-light>td,.table-light>th{background-color:#fdfdfe}.table-light tbody+tbody,.table-light td,.table-light th,.table-light thead th{border-color:#fbfcfc}.table-hover .table-light:hover{background-color:#ececf6}.table-hover .table-light:hover>td,.table-hover .table-light:hover>th{background-color:#ececf6}.table-dark,.table-dark>td,.table-dark>th{background-color:#c6c8ca}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#95999c}.table-hover .table-dark:hover{background-color:#b9bbbe}.table-hover .table-dark:hover>td,.table-hover .table-dark:hover>th{background-color:#b9bbbe}.table-active,.table-active>td,.table-active>th{background-color:rgba(0,0,0,.075)}.table-hover .table-active:hover{background-color:rgba(0,0,0,.075)}.table-hover .table-active:hover>td,.table-hover .table-active:hover>th{background-color:rgba(0,0,0,.075)}.table .thead-dark th{color:#fff;background-color:#343a40;border-color:#454d55}.table .thead-light th{color:#495057;background-color:#e9ecef;border-color:#dee2e6}.table-dark{color:#fff;background-color:#343a40}.table-dark td,.table-dark th,.table-dark thead th{border-color:#454d55}.table-dark.table-bordered{border:0}.table-dark.table-striped tbody tr:nth-of-type(odd){background-color:rgba(255,255,255,.05)}.table-dark.table-hover tbody tr:hover{color:#fff;background-color:rgba(255,255,255,.075)}@media (max-width:575.98px){.table-responsive-sm{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-sm>.table-bordered{border:0}}@media (max-width:767.98px){.table-responsive-md{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-md>.table-bordered{border:0}}@media (max-width:991.98px){.table-responsive-lg{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-lg>.table-bordered{border:0}}@media (max-width:1199.98px){.table-responsive-xl{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-xl>.table-bordered{border:0}}.table-responsive{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive>.table-bordered{border:0}.form-control{display:block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control{transition:none}}.form-control::-ms-expand{background-color:transparent;border:0}.form-control:focus{color:#495057;background-color:#fff;border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.form-control::-webkit-input-placeholder{color:#6c757d;opacity:1}.form-control::-moz-placeholder{color:#6c757d;opacity:1}.form-control:-ms-input-placeholder{color:#6c757d;opacity:1}.form-control::-ms-input-placeholder{color:#6c757d;opacity:1}.form-control::placeholder{color:#6c757d;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#e9ecef;opacity:1}input[type=date].form-control,input[type=datetime-local].form-control,input[type=month].form-control,input[type=time].form-control{-webkit-appearance:none;-moz-appearance:none;appearance:none}select.form-control:-moz-focusring{color:transparent;text-shadow:0 0 0 #495057}select.form-control:focus::-ms-value{color:#495057;background-color:#fff}.form-control-file,.form-control-range{display:block;width:100%}.col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem;line-height:1.5}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem;line-height:1.5}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;font-size:1rem;line-height:1.5;color:#212529;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm{padding-right:0;padding-left:0}.form-control-sm{height:calc(1.5em + .5rem + 2px);padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.form-control-lg{height:calc(1.5em + 1rem + 2px);padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}select.form-control[multiple],select.form-control[size]{height:auto}textarea.form-control{height:auto}.form-group{margin-bottom:1rem}.form-text{display:block;margin-top:.25rem}.form-row{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-5px;margin-left:-5px}.form-row>.col,.form-row>[class*=col-]{padding-right:5px;padding-left:5px}.form-check{position:relative;display:block;padding-left:1.25rem}.form-check-input{position:absolute;margin-top:.3rem;margin-left:-1.25rem}.form-check-input:disabled~.form-check-label,.form-check-input[disabled]~.form-check-label{color:#6c757d}.form-check-label{margin-bottom:0}.form-check-inline{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;padding-left:0;margin-right:.75rem}.form-check-inline .form-check-input{position:static;margin-top:0;margin-right:.3125rem;margin-left:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#28a745}.valid-tooltip{position:absolute;top:100%;left:0;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:rgba(40,167,69,.9);border-radius:.25rem}.form-row>.col>.valid-tooltip,.form-row>[class*=col-]>.valid-tooltip{left:5px}.is-valid~.valid-feedback,.is-valid~.valid-tooltip,.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip{display:block}.form-control.is-valid,.was-validated .form-control:valid{border-color:#28a745;padding-right:calc(1.5em + .75rem)!important;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-valid:focus,.was-validated .form-control:valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.was-validated select.form-control:valid,select.form-control.is-valid{padding-right:3rem!important;background-position:right 1.5rem center}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.custom-select.is-valid,.was-validated .custom-select:valid{border-color:#28a745;padding-right:calc(.75em + 2.3125rem)!important;background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") right .75rem center/8px 10px no-repeat,#fff url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e") center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem) no-repeat}.custom-select.is-valid:focus,.was-validated .custom-select:valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:#28a745}.form-check-input.is-valid~.valid-feedback,.form-check-input.is-valid~.valid-tooltip,.was-validated .form-check-input:valid~.valid-feedback,.was-validated .form-check-input:valid~.valid-tooltip{display:block}.custom-control-input.is-valid~.custom-control-label,.was-validated .custom-control-input:valid~.custom-control-label{color:#28a745}.custom-control-input.is-valid~.custom-control-label::before,.was-validated .custom-control-input:valid~.custom-control-label::before{border-color:#28a745}.custom-control-input.is-valid:checked~.custom-control-label::before,.was-validated .custom-control-input:valid:checked~.custom-control-label::before{border-color:#34ce57;background-color:#34ce57}.custom-control-input.is-valid:focus~.custom-control-label::before,.was-validated .custom-control-input:valid:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.custom-control-input.is-valid:focus:not(:checked)~.custom-control-label::before,.was-validated .custom-control-input:valid:focus:not(:checked)~.custom-control-label::before{border-color:#28a745}.custom-file-input.is-valid~.custom-file-label,.was-validated .custom-file-input:valid~.custom-file-label{border-color:#28a745}.custom-file-input.is-valid:focus~.custom-file-label,.was-validated .custom-file-input:valid:focus~.custom-file-label{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#dc3545}.invalid-tooltip{position:absolute;top:100%;left:0;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:rgba(220,53,69,.9);border-radius:.25rem}.form-row>.col>.invalid-tooltip,.form-row>[class*=col-]>.invalid-tooltip{left:5px}.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip,.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip{display:block}.form-control.is-invalid,.was-validated .form-control:invalid{border-color:#dc3545;padding-right:calc(1.5em + .75rem)!important;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-invalid:focus,.was-validated .form-control:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.was-validated select.form-control:invalid,select.form-control.is-invalid{padding-right:3rem!important;background-position:right 1.5rem center}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.custom-select.is-invalid,.was-validated .custom-select:invalid{border-color:#dc3545;padding-right:calc(.75em + 2.3125rem)!important;background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") right .75rem center/8px 10px no-repeat,#fff url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e") center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem) no-repeat}.custom-select.is-invalid:focus,.was-validated .custom-select:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:#dc3545}.form-check-input.is-invalid~.invalid-feedback,.form-check-input.is-invalid~.invalid-tooltip,.was-validated .form-check-input:invalid~.invalid-feedback,.was-validated .form-check-input:invalid~.invalid-tooltip{display:block}.custom-control-input.is-invalid~.custom-control-label,.was-validated .custom-control-input:invalid~.custom-control-label{color:#dc3545}.custom-control-input.is-invalid~.custom-control-label::before,.was-validated .custom-control-input:invalid~.custom-control-label::before{border-color:#dc3545}.custom-control-input.is-invalid:checked~.custom-control-label::before,.was-validated .custom-control-input:invalid:checked~.custom-control-label::before{border-color:#e4606d;background-color:#e4606d}.custom-control-input.is-invalid:focus~.custom-control-label::before,.was-validated .custom-control-input:invalid:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.custom-control-input.is-invalid:focus:not(:checked)~.custom-control-label::before,.was-validated .custom-control-input:invalid:focus:not(:checked)~.custom-control-label::before{border-color:#dc3545}.custom-file-input.is-invalid~.custom-file-label,.was-validated .custom-file-input:invalid~.custom-file-label{border-color:#dc3545}.custom-file-input.is-invalid:focus~.custom-file-label,.was-validated .custom-file-input:invalid:focus~.custom-file-label{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.form-inline{display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap;-ms-flex-align:center;align-items:center}.form-inline .form-check{width:100%}@media (min-width:576px){.form-inline label{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;margin-bottom:0}.form-inline .form-group{display:-ms-flexbox;display:flex;-ms-flex:0 0 auto;flex:0 0 auto;-ms-flex-flow:row wrap;flex-flow:row wrap;-ms-flex-align:center;align-items:center;margin-bottom:0}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-plaintext{display:inline-block}.form-inline .custom-select,.form-inline .input-group{width:auto}.form-inline .form-check{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:auto;padding-left:0}.form-inline .form-check-input{position:relative;-ms-flex-negative:0;flex-shrink:0;margin-top:0;margin-right:.25rem;margin-left:0}.form-inline .custom-control{-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}.form-inline .custom-control-label{margin-bottom:0}}.btn{display:inline-block;font-weight:400;color:#212529;text-align:center;vertical-align:middle;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:transparent;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;line-height:1.5;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.btn{transition:none}}.btn:hover{color:#212529;text-decoration:none}.btn.focus,.btn:focus{outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.btn.disabled,.btn:disabled{opacity:.65}.btn:not(:disabled):not(.disabled){cursor:pointer}a.btn.disabled,fieldset:disabled a.btn{pointer-events:none}.btn-primary{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:hover{color:#fff;background-color:#0069d9;border-color:#0062cc}.btn-primary.focus,.btn-primary:focus{color:#fff;background-color:#0069d9;border-color:#0062cc;box-shadow:0 0 0 .2rem rgba(38,143,255,.5)}.btn-primary.disabled,.btn-primary:disabled{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:not(:disabled):not(.disabled).active,.btn-primary:not(:disabled):not(.disabled):active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#0062cc;border-color:#005cbf}.btn-primary:not(:disabled):not(.disabled).active:focus,.btn-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(38,143,255,.5)}.btn-secondary{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:hover{color:#fff;background-color:#5a6268;border-color:#545b62}.btn-secondary.focus,.btn-secondary:focus{color:#fff;background-color:#5a6268;border-color:#545b62;box-shadow:0 0 0 .2rem rgba(130,138,145,.5)}.btn-secondary.disabled,.btn-secondary:disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:not(:disabled):not(.disabled).active,.btn-secondary:not(:disabled):not(.disabled):active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#545b62;border-color:#4e555b}.btn-secondary:not(:disabled):not(.disabled).active:focus,.btn-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(130,138,145,.5)}.btn-success{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:hover{color:#fff;background-color:#218838;border-color:#1e7e34}.btn-success.focus,.btn-success:focus{color:#fff;background-color:#218838;border-color:#1e7e34;box-shadow:0 0 0 .2rem rgba(72,180,97,.5)}.btn-success.disabled,.btn-success:disabled{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:not(:disabled):not(.disabled).active,.btn-success:not(:disabled):not(.disabled):active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#1e7e34;border-color:#1c7430}.btn-success:not(:disabled):not(.disabled).active:focus,.btn-success:not(:disabled):not(.disabled):active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(72,180,97,.5)}.btn-info{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:hover{color:#fff;background-color:#138496;border-color:#117a8b}.btn-info.focus,.btn-info:focus{color:#fff;background-color:#138496;border-color:#117a8b;box-shadow:0 0 0 .2rem rgba(58,176,195,.5)}.btn-info.disabled,.btn-info:disabled{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:not(:disabled):not(.disabled).active,.btn-info:not(:disabled):not(.disabled):active,.show>.btn-info.dropdown-toggle{color:#fff;background-color:#117a8b;border-color:#10707f}.btn-info:not(:disabled):not(.disabled).active:focus,.btn-info:not(:disabled):not(.disabled):active:focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(58,176,195,.5)}.btn-warning{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:hover{color:#212529;background-color:#e0a800;border-color:#d39e00}.btn-warning.focus,.btn-warning:focus{color:#212529;background-color:#e0a800;border-color:#d39e00;box-shadow:0 0 0 .2rem rgba(222,170,12,.5)}.btn-warning.disabled,.btn-warning:disabled{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:not(:disabled):not(.disabled).active,.btn-warning:not(:disabled):not(.disabled):active,.show>.btn-warning.dropdown-toggle{color:#212529;background-color:#d39e00;border-color:#c69500}.btn-warning:not(:disabled):not(.disabled).active:focus,.btn-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(222,170,12,.5)}.btn-danger{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:hover{color:#fff;background-color:#c82333;border-color:#bd2130}.btn-danger.focus,.btn-danger:focus{color:#fff;background-color:#c82333;border-color:#bd2130;box-shadow:0 0 0 .2rem rgba(225,83,97,.5)}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:not(:disabled):not(.disabled).active,.btn-danger:not(:disabled):not(.disabled):active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#bd2130;border-color:#b21f2d}.btn-danger:not(:disabled):not(.disabled).active:focus,.btn-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(225,83,97,.5)}.btn-light{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:hover{color:#212529;background-color:#e2e6ea;border-color:#dae0e5}.btn-light.focus,.btn-light:focus{color:#212529;background-color:#e2e6ea;border-color:#dae0e5;box-shadow:0 0 0 .2rem rgba(216,217,219,.5)}.btn-light.disabled,.btn-light:disabled{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:not(:disabled):not(.disabled).active,.btn-light:not(:disabled):not(.disabled):active,.show>.btn-light.dropdown-toggle{color:#212529;background-color:#dae0e5;border-color:#d3d9df}.btn-light:not(:disabled):not(.disabled).active:focus,.btn-light:not(:disabled):not(.disabled):active:focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(216,217,219,.5)}.btn-dark{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:hover{color:#fff;background-color:#23272b;border-color:#1d2124}.btn-dark.focus,.btn-dark:focus{color:#fff;background-color:#23272b;border-color:#1d2124;box-shadow:0 0 0 .2rem rgba(82,88,93,.5)}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:not(:disabled):not(.disabled).active,.btn-dark:not(:disabled):not(.disabled):active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#1d2124;border-color:#171a1d}.btn-dark:not(:disabled):not(.disabled).active:focus,.btn-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(82,88,93,.5)}.btn-outline-primary{color:#007bff;border-color:#007bff}.btn-outline-primary:hover{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary.focus,.btn-outline-primary:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#007bff;background-color:transparent}.btn-outline-primary:not(:disabled):not(.disabled).active,.btn-outline-primary:not(:disabled):not(.disabled):active,.show>.btn-outline-primary.dropdown-toggle{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary:not(:disabled):not(.disabled).active:focus,.btn-outline-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-outline-secondary{color:#6c757d;border-color:#6c757d}.btn-outline-secondary:hover{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary.focus,.btn-outline-secondary:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#6c757d;background-color:transparent}.btn-outline-secondary:not(:disabled):not(.disabled).active,.btn-outline-secondary:not(:disabled):not(.disabled):active,.show>.btn-outline-secondary.dropdown-toggle{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary:not(:disabled):not(.disabled).active:focus,.btn-outline-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-outline-success{color:#28a745;border-color:#28a745}.btn-outline-success:hover{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success.focus,.btn-outline-success:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#28a745;background-color:transparent}.btn-outline-success:not(:disabled):not(.disabled).active,.btn-outline-success:not(:disabled):not(.disabled):active,.show>.btn-outline-success.dropdown-toggle{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success:not(:disabled):not(.disabled).active:focus,.btn-outline-success:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-outline-info{color:#17a2b8;border-color:#17a2b8}.btn-outline-info:hover{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info.focus,.btn-outline-info:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#17a2b8;background-color:transparent}.btn-outline-info:not(:disabled):not(.disabled).active,.btn-outline-info:not(:disabled):not(.disabled):active,.show>.btn-outline-info.dropdown-toggle{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info:not(:disabled):not(.disabled).active:focus,.btn-outline-info:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-outline-warning{color:#ffc107;border-color:#ffc107}.btn-outline-warning:hover{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning.focus,.btn-outline-warning:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#ffc107;background-color:transparent}.btn-outline-warning:not(:disabled):not(.disabled).active,.btn-outline-warning:not(:disabled):not(.disabled):active,.show>.btn-outline-warning.dropdown-toggle{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning:not(:disabled):not(.disabled).active:focus,.btn-outline-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-outline-danger{color:#dc3545;border-color:#dc3545}.btn-outline-danger:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger.focus,.btn-outline-danger:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#dc3545;background-color:transparent}.btn-outline-danger:not(:disabled):not(.disabled).active,.btn-outline-danger:not(:disabled):not(.disabled):active,.show>.btn-outline-danger.dropdown-toggle{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger:not(:disabled):not(.disabled).active:focus,.btn-outline-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-outline-light{color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:hover{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light.focus,.btn-outline-light:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#f8f9fa;background-color:transparent}.btn-outline-light:not(:disabled):not(.disabled).active,.btn-outline-light:not(:disabled):not(.disabled):active,.show>.btn-outline-light.dropdown-toggle{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:not(:disabled):not(.disabled).active:focus,.btn-outline-light:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-dark{color:#343a40;border-color:#343a40}.btn-outline-dark:hover{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark.focus,.btn-outline-dark:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#343a40;background-color:transparent}.btn-outline-dark:not(:disabled):not(.disabled).active,.btn-outline-dark:not(:disabled):not(.disabled):active,.show>.btn-outline-dark.dropdown-toggle{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark:not(:disabled):not(.disabled).active:focus,.btn-outline-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-link{font-weight:400;color:#007bff;text-decoration:none}.btn-link:hover{color:#0056b3;text-decoration:underline}.btn-link.focus,.btn-link:focus{text-decoration:underline}.btn-link.disabled,.btn-link:disabled{color:#6c757d;pointer-events:none}.btn-group-lg>.btn,.btn-lg{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.btn-group-sm>.btn,.btn-sm{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:.5rem}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{transition:opacity .15s linear}@media (prefers-reduced-motion:reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{position:relative;height:0;overflow:hidden;transition:height .35s ease}@media (prefers-reduced-motion:reduce){.collapsing{transition:none}}.dropdown,.dropleft,.dropright,.dropup{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:10rem;padding:.5rem 0;margin:.125rem 0 0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.dropdown-menu-left{right:auto;left:0}.dropdown-menu-right{right:0;left:auto}@media (min-width:576px){.dropdown-menu-sm-left{right:auto;left:0}.dropdown-menu-sm-right{right:0;left:auto}}@media (min-width:768px){.dropdown-menu-md-left{right:auto;left:0}.dropdown-menu-md-right{right:0;left:auto}}@media (min-width:992px){.dropdown-menu-lg-left{right:auto;left:0}.dropdown-menu-lg-right{right:0;left:auto}}@media (min-width:1200px){.dropdown-menu-xl-left{right:auto;left:0}.dropdown-menu-xl-right{right:0;left:auto}}.dropup .dropdown-menu{top:auto;bottom:100%;margin-top:0;margin-bottom:.125rem}.dropup .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-menu{top:0;right:auto;left:100%;margin-top:0;margin-left:.125rem}.dropright .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}.dropright .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-toggle::after{vertical-align:0}.dropleft .dropdown-menu{top:0;right:100%;left:auto;margin-top:0;margin-right:.125rem}.dropleft .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}.dropleft .dropdown-toggle::after{display:none}.dropleft .dropdown-toggle::before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropleft .dropdown-toggle:empty::after{margin-left:0}.dropleft .dropdown-toggle::before{vertical-align:0}.dropdown-menu[x-placement^=bottom],.dropdown-menu[x-placement^=left],.dropdown-menu[x-placement^=right],.dropdown-menu[x-placement^=top]{right:auto;bottom:auto}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid #e9ecef}.dropdown-item{display:block;width:100%;padding:.25rem 1.5rem;clear:both;font-weight:400;color:#212529;text-align:inherit;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:focus,.dropdown-item:hover{color:#16181b;text-decoration:none;background-color:#e9ecef}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#007bff}.dropdown-item.disabled,.dropdown-item:disabled{color:#adb5bd;pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1.5rem;margin-bottom:0;font-size:.875rem;color:#6c757d;white-space:nowrap}.dropdown-item-text{display:block;padding:.25rem 1.5rem;color:#212529}.btn-group,.btn-group-vertical{position:relative;display:-ms-inline-flexbox;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;-ms-flex:1 1 auto;flex:1 1 auto}.btn-group-vertical>.btn:hover,.btn-group>.btn:hover{z-index:1}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus{z-index:1}.btn-toolbar{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-pack:start;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn-group:not(:first-child),.btn-group>.btn:not(:first-child){margin-left:-1px}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after,.dropright .dropdown-toggle-split::after,.dropup .dropdown-toggle-split::after{margin-left:0}.dropleft .dropdown-toggle-split::before{margin-right:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{-ms-flex-direction:column;flex-direction:column;-ms-flex-align:start;align-items:flex-start;-ms-flex-pack:center;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn-group:not(:first-child),.btn-group-vertical>.btn:not(:first-child){margin-top:-1px}.btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn:not(:first-child){border-top-left-radius:0;border-top-right-radius:0}.btn-group-toggle>.btn,.btn-group-toggle>.btn-group>.btn{margin-bottom:0}.btn-group-toggle>.btn input[type=checkbox],.btn-group-toggle>.btn input[type=radio],.btn-group-toggle>.btn-group>.btn input[type=checkbox],.btn-group-toggle>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:stretch;align-items:stretch;width:100%}.input-group>.custom-file,.input-group>.custom-select,.input-group>.form-control,.input-group>.form-control-plaintext{position:relative;-ms-flex:1 1 auto;flex:1 1 auto;width:1%;min-width:0;margin-bottom:0}.input-group>.custom-file+.custom-file,.input-group>.custom-file+.custom-select,.input-group>.custom-file+.form-control,.input-group>.custom-select+.custom-file,.input-group>.custom-select+.custom-select,.input-group>.custom-select+.form-control,.input-group>.form-control+.custom-file,.input-group>.form-control+.custom-select,.input-group>.form-control+.form-control,.input-group>.form-control-plaintext+.custom-file,.input-group>.form-control-plaintext+.custom-select,.input-group>.form-control-plaintext+.form-control{margin-left:-1px}.input-group>.custom-file .custom-file-input:focus~.custom-file-label,.input-group>.custom-select:focus,.input-group>.form-control:focus{z-index:3}.input-group>.custom-file .custom-file-input:focus{z-index:4}.input-group>.custom-select:not(:first-child),.input-group>.form-control:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.custom-file{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.input-group>.custom-file:not(:last-child) .custom-file-label,.input-group>.custom-file:not(:last-child) .custom-file-label::after{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-file:not(:first-child) .custom-file-label{border-top-left-radius:0;border-bottom-left-radius:0}.input-group:not(.has-validation)>.custom-file:not(:last-child) .custom-file-label,.input-group:not(.has-validation)>.custom-file:not(:last-child) .custom-file-label::after,.input-group:not(.has-validation)>.custom-select:not(:last-child),.input-group:not(.has-validation)>.form-control:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group.has-validation>.custom-file:nth-last-child(n+3) .custom-file-label,.input-group.has-validation>.custom-file:nth-last-child(n+3) .custom-file-label::after,.input-group.has-validation>.custom-select:nth-last-child(n+3),.input-group.has-validation>.form-control:nth-last-child(n+3){border-top-right-radius:0;border-bottom-right-radius:0}.input-group-append,.input-group-prepend{display:-ms-flexbox;display:flex}.input-group-append .btn,.input-group-prepend .btn{position:relative;z-index:2}.input-group-append .btn:focus,.input-group-prepend .btn:focus{z-index:3}.input-group-append .btn+.btn,.input-group-append .btn+.input-group-text,.input-group-append .input-group-text+.btn,.input-group-append .input-group-text+.input-group-text,.input-group-prepend .btn+.btn,.input-group-prepend .btn+.input-group-text,.input-group-prepend .input-group-text+.btn,.input-group-prepend .input-group-text+.input-group-text{margin-left:-1px}.input-group-prepend{margin-right:-1px}.input-group-append{margin-left:-1px}.input-group-text{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;padding:.375rem .75rem;margin-bottom:0;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.25rem}.input-group-text input[type=checkbox],.input-group-text input[type=radio]{margin-top:0}.input-group-lg>.custom-select,.input-group-lg>.form-control:not(textarea){height:calc(1.5em + 1rem + 2px)}.input-group-lg>.custom-select,.input-group-lg>.form-control,.input-group-lg>.input-group-append>.btn,.input-group-lg>.input-group-append>.input-group-text,.input-group-lg>.input-group-prepend>.btn,.input-group-lg>.input-group-prepend>.input-group-text{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.input-group-sm>.custom-select,.input-group-sm>.form-control:not(textarea){height:calc(1.5em + .5rem + 2px)}.input-group-sm>.custom-select,.input-group-sm>.form-control,.input-group-sm>.input-group-append>.btn,.input-group-sm>.input-group-append>.input-group-text,.input-group-sm>.input-group-prepend>.btn,.input-group-sm>.input-group-prepend>.input-group-text{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.input-group-lg>.custom-select,.input-group-sm>.custom-select{padding-right:1.75rem}.input-group.has-validation>.input-group-append:nth-last-child(n+3)>.btn,.input-group.has-validation>.input-group-append:nth-last-child(n+3)>.input-group-text,.input-group:not(.has-validation)>.input-group-append:not(:last-child)>.btn,.input-group:not(.has-validation)>.input-group-append:not(:last-child)>.input-group-text,.input-group>.input-group-append:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group>.input-group-append:last-child>.input-group-text:not(:last-child),.input-group>.input-group-prepend>.btn,.input-group>.input-group-prepend>.input-group-text{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.input-group-append>.btn,.input-group>.input-group-append>.input-group-text,.input-group>.input-group-prepend:first-child>.btn:not(:first-child),.input-group>.input-group-prepend:first-child>.input-group-text:not(:first-child),.input-group>.input-group-prepend:not(:first-child)>.btn,.input-group>.input-group-prepend:not(:first-child)>.input-group-text{border-top-left-radius:0;border-bottom-left-radius:0}.custom-control{position:relative;z-index:1;display:block;min-height:1.5rem;padding-left:1.5rem;-webkit-print-color-adjust:exact;color-adjust:exact}.custom-control-inline{display:-ms-inline-flexbox;display:inline-flex;margin-right:1rem}.custom-control-input{position:absolute;left:0;z-index:-1;width:1rem;height:1.25rem;opacity:0}.custom-control-input:checked~.custom-control-label::before{color:#fff;border-color:#007bff;background-color:#007bff}.custom-control-input:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-control-input:focus:not(:checked)~.custom-control-label::before{border-color:#80bdff}.custom-control-input:not(:disabled):active~.custom-control-label::before{color:#fff;background-color:#b3d7ff;border-color:#b3d7ff}.custom-control-input:disabled~.custom-control-label,.custom-control-input[disabled]~.custom-control-label{color:#6c757d}.custom-control-input:disabled~.custom-control-label::before,.custom-control-input[disabled]~.custom-control-label::before{background-color:#e9ecef}.custom-control-label{position:relative;margin-bottom:0;vertical-align:top}.custom-control-label::before{position:absolute;top:.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;pointer-events:none;content:"";background-color:#fff;border:#adb5bd solid 1px}.custom-control-label::after{position:absolute;top:.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;content:"";background:50%/50% 50% no-repeat}.custom-checkbox .custom-control-label::before{border-radius:.25rem}.custom-checkbox .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3e%3c/svg%3e")}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::before{border-color:#007bff;background-color:#007bff}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='4' viewBox='0 0 4 4'%3e%3cpath stroke='%23fff' d='M0 2h4'/%3e%3c/svg%3e")}.custom-checkbox .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-checkbox .custom-control-input:disabled:indeterminate~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-radio .custom-control-label::before{border-radius:50%}.custom-radio .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.custom-radio .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-switch{padding-left:2.25rem}.custom-switch .custom-control-label::before{left:-2.25rem;width:1.75rem;pointer-events:all;border-radius:.5rem}.custom-switch .custom-control-label::after{top:calc(.25rem + 2px);left:calc(-2.25rem + 2px);width:calc(1rem - 4px);height:calc(1rem - 4px);background-color:#adb5bd;border-radius:.5rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-transform .15s ease-in-out;transition:transform .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:transform .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-transform .15s ease-in-out}@media (prefers-reduced-motion:reduce){.custom-switch .custom-control-label::after{transition:none}}.custom-switch .custom-control-input:checked~.custom-control-label::after{background-color:#fff;-webkit-transform:translateX(.75rem);transform:translateX(.75rem)}.custom-switch .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-select{display:inline-block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem 1.75rem .375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;vertical-align:middle;background:#fff url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") right .75rem center/8px 10px no-repeat;border:1px solid #ced4da;border-radius:.25rem;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-select:focus{border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-select:focus::-ms-value{color:#495057;background-color:#fff}.custom-select[multiple],.custom-select[size]:not([size="1"]){height:auto;padding-right:.75rem;background-image:none}.custom-select:disabled{color:#6c757d;background-color:#e9ecef}.custom-select::-ms-expand{display:none}.custom-select:-moz-focusring{color:transparent;text-shadow:0 0 0 #495057}.custom-select-sm{height:calc(1.5em + .5rem + 2px);padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem}.custom-select-lg{height:calc(1.5em + 1rem + 2px);padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem}.custom-file{position:relative;display:inline-block;width:100%;height:calc(1.5em + .75rem + 2px);margin-bottom:0}.custom-file-input{position:relative;z-index:2;width:100%;height:calc(1.5em + .75rem + 2px);margin:0;overflow:hidden;opacity:0}.custom-file-input:focus~.custom-file-label{border-color:#80bdff;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-file-input:disabled~.custom-file-label,.custom-file-input[disabled]~.custom-file-label{background-color:#e9ecef}.custom-file-input:lang(en)~.custom-file-label::after{content:"Browse"}.custom-file-input~.custom-file-label[data-browse]::after{content:attr(data-browse)}.custom-file-label{position:absolute;top:0;right:0;left:0;z-index:1;height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem;overflow:hidden;font-weight:400;line-height:1.5;color:#495057;background-color:#fff;border:1px solid #ced4da;border-radius:.25rem}.custom-file-label::after{position:absolute;top:0;right:0;bottom:0;z-index:3;display:block;height:calc(1.5em + .75rem);padding:.375rem .75rem;line-height:1.5;color:#495057;content:"Browse";background-color:#e9ecef;border-left:inherit;border-radius:0 .25rem .25rem 0}.custom-range{width:100%;height:1.4rem;padding:0;background-color:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-range:focus{outline:0}.custom-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range:focus::-ms-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range::-moz-focus-outer{border:0}.custom-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#007bff;border:0;border-radius:1rem;-webkit-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-webkit-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-webkit-slider-thumb{-webkit-transition:none;transition:none}}.custom-range::-webkit-slider-thumb:active{background-color:#b3d7ff}.custom-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.custom-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#007bff;border:0;border-radius:1rem;-moz-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-moz-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-moz-range-thumb{-moz-transition:none;transition:none}}.custom-range::-moz-range-thumb:active{background-color:#b3d7ff}.custom-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.custom-range::-ms-thumb{width:1rem;height:1rem;margin-top:0;margin-right:.2rem;margin-left:.2rem;background-color:#007bff;border:0;border-radius:1rem;-ms-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-ms-thumb{-ms-transition:none;transition:none}}.custom-range::-ms-thumb:active{background-color:#b3d7ff}.custom-range::-ms-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:transparent;border-color:transparent;border-width:.5rem}.custom-range::-ms-fill-lower{background-color:#dee2e6;border-radius:1rem}.custom-range::-ms-fill-upper{margin-right:15px;background-color:#dee2e6;border-radius:1rem}.custom-range:disabled::-webkit-slider-thumb{background-color:#adb5bd}.custom-range:disabled::-webkit-slider-runnable-track{cursor:default}.custom-range:disabled::-moz-range-thumb{background-color:#adb5bd}.custom-range:disabled::-moz-range-track{cursor:default}.custom-range:disabled::-ms-thumb{background-color:#adb5bd}.custom-control-label::before,.custom-file-label,.custom-select{transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.custom-control-label::before,.custom-file-label,.custom-select{transition:none}}.nav{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5rem 1rem}.nav-link:focus,.nav-link:hover{text-decoration:none}.nav-link.disabled{color:#6c757d;pointer-events:none;cursor:default}.nav-tabs{border-bottom:1px solid #dee2e6}.nav-tabs .nav-link{margin-bottom:-1px;border:1px solid transparent;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{border-color:#e9ecef #e9ecef #dee2e6}.nav-tabs .nav-link.disabled{color:#6c757d;background-color:transparent;border-color:transparent}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:#495057;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{border-radius:.25rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#007bff}.nav-fill .nav-item,.nav-fill>.nav-link{-ms-flex:1 1 auto;flex:1 1 auto;text-align:center}.nav-justified .nav-item,.nav-justified>.nav-link{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;text-align:center}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between;padding:.5rem 1rem}.navbar .container,.navbar .container-fluid,.navbar .container-lg,.navbar .container-md,.navbar .container-sm,.navbar .container-xl{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between}.navbar-brand{display:inline-block;padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;line-height:inherit;white-space:nowrap}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-nav{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static;float:none}.navbar-text{display:inline-block;padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{-ms-flex-preferred-size:100%;flex-basis:100%;-ms-flex-positive:1;flex-grow:1;-ms-flex-align:center;align-items:center}.navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.25rem}.navbar-toggler:focus,.navbar-toggler:hover{text-decoration:none}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;content:"";background:50%/100% 100% no-repeat}.navbar-nav-scroll{max-height:75vh;overflow-y:auto}@media (max-width:575.98px){.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid,.navbar-expand-sm>.container-lg,.navbar-expand-sm>.container-md,.navbar-expand-sm>.container-sm,.navbar-expand-sm>.container-xl{padding-right:0;padding-left:0}}@media (min-width:576px){.navbar-expand-sm{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-sm .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid,.navbar-expand-sm>.container-lg,.navbar-expand-sm>.container-md,.navbar-expand-sm>.container-sm,.navbar-expand-sm>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-sm .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}}@media (max-width:767.98px){.navbar-expand-md>.container,.navbar-expand-md>.container-fluid,.navbar-expand-md>.container-lg,.navbar-expand-md>.container-md,.navbar-expand-md>.container-sm,.navbar-expand-md>.container-xl{padding-right:0;padding-left:0}}@media (min-width:768px){.navbar-expand-md{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-md .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md>.container,.navbar-expand-md>.container-fluid,.navbar-expand-md>.container-lg,.navbar-expand-md>.container-md,.navbar-expand-md>.container-sm,.navbar-expand-md>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}}@media (max-width:991.98px){.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid,.navbar-expand-lg>.container-lg,.navbar-expand-lg>.container-md,.navbar-expand-lg>.container-sm,.navbar-expand-lg>.container-xl{padding-right:0;padding-left:0}}@media (min-width:992px){.navbar-expand-lg{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-lg .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid,.navbar-expand-lg>.container-lg,.navbar-expand-lg>.container-md,.navbar-expand-lg>.container-sm,.navbar-expand-lg>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}}@media (max-width:1199.98px){.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid,.navbar-expand-xl>.container-lg,.navbar-expand-xl>.container-md,.navbar-expand-xl>.container-sm,.navbar-expand-xl>.container-xl{padding-right:0;padding-left:0}}@media (min-width:1200px){.navbar-expand-xl{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-xl .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid,.navbar-expand-xl>.container-lg,.navbar-expand-xl>.container-md,.navbar-expand-xl>.container-sm,.navbar-expand-xl>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}}.navbar-expand{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand>.container,.navbar-expand>.container-fluid,.navbar-expand>.container-lg,.navbar-expand>.container-md,.navbar-expand>.container-sm,.navbar-expand>.container-xl{padding-right:0;padding-left:0}.navbar-expand .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand>.container,.navbar-expand>.container-fluid,.navbar-expand>.container-lg,.navbar-expand>.container-md,.navbar-expand>.container-sm,.navbar-expand>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-light .navbar-brand{color:rgba(0,0,0,.9)}.navbar-light .navbar-brand:focus,.navbar-light .navbar-brand:hover{color:rgba(0,0,0,.9)}.navbar-light .navbar-nav .nav-link{color:rgba(0,0,0,.5)}.navbar-light .navbar-nav .nav-link:focus,.navbar-light .navbar-nav .nav-link:hover{color:rgba(0,0,0,.7)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(0,0,0,.3)}.navbar-light .navbar-nav .active>.nav-link,.navbar-light .navbar-nav .nav-link.active,.navbar-light .navbar-nav .nav-link.show,.navbar-light .navbar-nav .show>.nav-link{color:rgba(0,0,0,.9)}.navbar-light .navbar-toggler{color:rgba(0,0,0,.5);border-color:rgba(0,0,0,.1)}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%280, 0, 0, 0.5%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-light .navbar-text{color:rgba(0,0,0,.5)}.navbar-light .navbar-text a{color:rgba(0,0,0,.9)}.navbar-light .navbar-text a:focus,.navbar-light .navbar-text a:hover{color:rgba(0,0,0,.9)}.navbar-dark .navbar-brand{color:#fff}.navbar-dark .navbar-brand:focus,.navbar-dark .navbar-brand:hover{color:#fff}.navbar-dark .navbar-nav .nav-link{color:rgba(255,255,255,.5)}.navbar-dark .navbar-nav .nav-link:focus,.navbar-dark .navbar-nav .nav-link:hover{color:rgba(255,255,255,.75)}.navbar-dark .navbar-nav .nav-link.disabled{color:rgba(255,255,255,.25)}.navbar-dark .navbar-nav .active>.nav-link,.navbar-dark .navbar-nav .nav-link.active,.navbar-dark .navbar-nav .nav-link.show,.navbar-dark .navbar-nav .show>.nav-link{color:#fff}.navbar-dark .navbar-toggler{color:rgba(255,255,255,.5);border-color:rgba(255,255,255,.1)}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.5%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-dark .navbar-text{color:rgba(255,255,255,.5)}.navbar-dark .navbar-text a{color:#fff}.navbar-dark .navbar-text a:focus,.navbar-dark .navbar-text a:hover{color:#fff}.card{position:relative;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,.125);border-radius:.25rem}.card>hr{margin-right:0;margin-left:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-width:0;border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{-ms-flex:1 1 auto;flex:1 1 auto;min-height:1px;padding:1.25rem}.card-title{margin-bottom:.75rem}.card-subtitle{margin-top:-.375rem;margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:1.25rem}.card-header{padding:.75rem 1.25rem;margin-bottom:0;background-color:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.125)}.card-header:first-child{border-radius:calc(.25rem - 1px) calc(.25rem - 1px) 0 0}.card-footer{padding:.75rem 1.25rem;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.125)}.card-footer:last-child{border-radius:0 0 calc(.25rem - 1px) calc(.25rem - 1px)}.card-header-tabs{margin-right:-.625rem;margin-bottom:-.75rem;margin-left:-.625rem;border-bottom:0}.card-header-pills{margin-right:-.625rem;margin-left:-.625rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1.25rem;border-radius:calc(.25rem - 1px)}.card-img,.card-img-bottom,.card-img-top{-ms-flex-negative:0;flex-shrink:0;width:100%}.card-img,.card-img-top{border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card-img,.card-img-bottom{border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card-deck .card{margin-bottom:15px}@media (min-width:576px){.card-deck{display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap;margin-right:-15px;margin-left:-15px}.card-deck .card{-ms-flex:1 0 0%;flex:1 0 0%;margin-right:15px;margin-bottom:0;margin-left:15px}}.card-group>.card{margin-bottom:15px}@media (min-width:576px){.card-group{display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap}.card-group>.card{-ms-flex:1 0 0%;flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-header,.card-group>.card:not(:last-child) .card-img-top{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-footer,.card-group>.card:not(:last-child) .card-img-bottom{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-header,.card-group>.card:not(:first-child) .card-img-top{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-footer,.card-group>.card:not(:first-child) .card-img-bottom{border-bottom-left-radius:0}}.card-columns .card{margin-bottom:.75rem}@media (min-width:576px){.card-columns{-webkit-column-count:3;-moz-column-count:3;column-count:3;-webkit-column-gap:1.25rem;-moz-column-gap:1.25rem;column-gap:1.25rem;orphans:1;widows:1}.card-columns .card{display:inline-block;width:100%}}.accordion{overflow-anchor:none}.accordion>.card{overflow:hidden}.accordion>.card:not(:last-of-type){border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.accordion>.card:not(:first-of-type){border-top-left-radius:0;border-top-right-radius:0}.accordion>.card>.card-header{border-radius:0;margin-bottom:-1px}.breadcrumb{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:.75rem 1rem;margin-bottom:1rem;list-style:none;background-color:#e9ecef;border-radius:.25rem}.breadcrumb-item+.breadcrumb-item{padding-left:.5rem}.breadcrumb-item+.breadcrumb-item::before{float:left;padding-right:.5rem;color:#6c757d;content:"/"}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:underline}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:none}.breadcrumb-item.active{color:#6c757d}.pagination{display:-ms-flexbox;display:flex;padding-left:0;list-style:none;border-radius:.25rem}.page-link{position:relative;display:block;padding:.5rem .75rem;margin-left:-1px;line-height:1.25;color:#007bff;background-color:#fff;border:1px solid #dee2e6}.page-link:hover{z-index:2;color:#0056b3;text-decoration:none;background-color:#e9ecef;border-color:#dee2e6}.page-link:focus{z-index:3;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.page-item:first-child .page-link{margin-left:0;border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.page-item:last-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.page-item.active .page-link{z-index:3;color:#fff;background-color:#007bff;border-color:#007bff}.page-item.disabled .page-link{color:#6c757d;pointer-events:none;cursor:auto;background-color:#fff;border-color:#dee2e6}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem;line-height:1.5}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.pagination-sm .page-link{padding:.25rem .5rem;font-size:.875rem;line-height:1.5}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.badge{display:inline-block;padding:.25em .4em;font-size:75%;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.badge{transition:none}}a.badge:focus,a.badge:hover{text-decoration:none}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.badge-pill{padding-right:.6em;padding-left:.6em;border-radius:10rem}.badge-primary{color:#fff;background-color:#007bff}a.badge-primary:focus,a.badge-primary:hover{color:#fff;background-color:#0062cc}a.badge-primary.focus,a.badge-primary:focus{outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.badge-secondary{color:#fff;background-color:#6c757d}a.badge-secondary:focus,a.badge-secondary:hover{color:#fff;background-color:#545b62}a.badge-secondary.focus,a.badge-secondary:focus{outline:0;box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.badge-success{color:#fff;background-color:#28a745}a.badge-success:focus,a.badge-success:hover{color:#fff;background-color:#1e7e34}a.badge-success.focus,a.badge-success:focus{outline:0;box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.badge-info{color:#fff;background-color:#17a2b8}a.badge-info:focus,a.badge-info:hover{color:#fff;background-color:#117a8b}a.badge-info.focus,a.badge-info:focus{outline:0;box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.badge-warning{color:#212529;background-color:#ffc107}a.badge-warning:focus,a.badge-warning:hover{color:#212529;background-color:#d39e00}a.badge-warning.focus,a.badge-warning:focus{outline:0;box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.badge-danger{color:#fff;background-color:#dc3545}a.badge-danger:focus,a.badge-danger:hover{color:#fff;background-color:#bd2130}a.badge-danger.focus,a.badge-danger:focus{outline:0;box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.badge-light{color:#212529;background-color:#f8f9fa}a.badge-light:focus,a.badge-light:hover{color:#212529;background-color:#dae0e5}a.badge-light.focus,a.badge-light:focus{outline:0;box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.badge-dark{color:#fff;background-color:#343a40}a.badge-dark:focus,a.badge-dark:hover{color:#fff;background-color:#1d2124}a.badge-dark.focus,a.badge-dark:focus{outline:0;box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.jumbotron{padding:2rem 1rem;margin-bottom:2rem;background-color:#e9ecef;border-radius:.3rem}@media (min-width:576px){.jumbotron{padding:4rem 2rem}}.jumbotron-fluid{padding-right:0;padding-left:0;border-radius:0}.alert{position:relative;padding:.75rem 1.25rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:4rem}.alert-dismissible .close{position:absolute;top:0;right:0;z-index:2;padding:.75rem 1.25rem;color:inherit}.alert-primary{color:#004085;background-color:#cce5ff;border-color:#b8daff}.alert-primary hr{border-top-color:#9fcdff}.alert-primary .alert-link{color:#002752}.alert-secondary{color:#383d41;background-color:#e2e3e5;border-color:#d6d8db}.alert-secondary hr{border-top-color:#c8cbcf}.alert-secondary .alert-link{color:#202326}.alert-success{color:#155724;background-color:#d4edda;border-color:#c3e6cb}.alert-success hr{border-top-color:#b1dfbb}.alert-success .alert-link{color:#0b2e13}.alert-info{color:#0c5460;background-color:#d1ecf1;border-color:#bee5eb}.alert-info hr{border-top-color:#abdde5}.alert-info .alert-link{color:#062c33}.alert-warning{color:#856404;background-color:#fff3cd;border-color:#ffeeba}.alert-warning hr{border-top-color:#ffe8a1}.alert-warning .alert-link{color:#533f03}.alert-danger{color:#721c24;background-color:#f8d7da;border-color:#f5c6cb}.alert-danger hr{border-top-color:#f1b0b7}.alert-danger .alert-link{color:#491217}.alert-light{color:#818182;background-color:#fefefe;border-color:#fdfdfe}.alert-light hr{border-top-color:#ececf6}.alert-light .alert-link{color:#686868}.alert-dark{color:#1b1e21;background-color:#d6d8d9;border-color:#c6c8ca}.alert-dark hr{border-top-color:#b9bbbe}.alert-dark .alert-link{color:#040505}@-webkit-keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}.progress{display:-ms-flexbox;display:flex;height:1rem;overflow:hidden;line-height:0;font-size:.75rem;background-color:#e9ecef;border-radius:.25rem}.progress-bar{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center;overflow:hidden;color:#fff;text-align:center;white-space:nowrap;background-color:#007bff;transition:width .6s ease}@media (prefers-reduced-motion:reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:1rem 1rem}.progress-bar-animated{-webkit-animation:1s linear infinite progress-bar-stripes;animation:1s linear infinite progress-bar-stripes}@media (prefers-reduced-motion:reduce){.progress-bar-animated{-webkit-animation:none;animation:none}}.media{display:-ms-flexbox;display:flex;-ms-flex-align:start;align-items:flex-start}.media-body{-ms-flex:1;flex:1}.list-group{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0;border-radius:.25rem}.list-group-item-action{width:100%;color:#495057;text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{z-index:1;color:#495057;text-decoration:none;background-color:#f8f9fa}.list-group-item-action:active{color:#212529;background-color:#e9ecef}.list-group-item{position:relative;display:block;padding:.75rem 1.25rem;background-color:#fff;border:1px solid rgba(0,0,0,.125)}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:#6c757d;pointer-events:none;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#007bff;border-color:#007bff}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:-1px;border-top-width:1px}.list-group-horizontal{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}@media (min-width:576px){.list-group-horizontal-sm{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:768px){.list-group-horizontal-md{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:992px){.list-group-horizontal-lg{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:1200px){.list-group-horizontal-xl{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 1px}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-primary{color:#004085;background-color:#b8daff}.list-group-item-primary.list-group-item-action:focus,.list-group-item-primary.list-group-item-action:hover{color:#004085;background-color:#9fcdff}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#004085;border-color:#004085}.list-group-item-secondary{color:#383d41;background-color:#d6d8db}.list-group-item-secondary.list-group-item-action:focus,.list-group-item-secondary.list-group-item-action:hover{color:#383d41;background-color:#c8cbcf}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#383d41;border-color:#383d41}.list-group-item-success{color:#155724;background-color:#c3e6cb}.list-group-item-success.list-group-item-action:focus,.list-group-item-success.list-group-item-action:hover{color:#155724;background-color:#b1dfbb}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#155724;border-color:#155724}.list-group-item-info{color:#0c5460;background-color:#bee5eb}.list-group-item-info.list-group-item-action:focus,.list-group-item-info.list-group-item-action:hover{color:#0c5460;background-color:#abdde5}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#0c5460;border-color:#0c5460}.list-group-item-warning{color:#856404;background-color:#ffeeba}.list-group-item-warning.list-group-item-action:focus,.list-group-item-warning.list-group-item-action:hover{color:#856404;background-color:#ffe8a1}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#856404;border-color:#856404}.list-group-item-danger{color:#721c24;background-color:#f5c6cb}.list-group-item-danger.list-group-item-action:focus,.list-group-item-danger.list-group-item-action:hover{color:#721c24;background-color:#f1b0b7}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#721c24;border-color:#721c24}.list-group-item-light{color:#818182;background-color:#fdfdfe}.list-group-item-light.list-group-item-action:focus,.list-group-item-light.list-group-item-action:hover{color:#818182;background-color:#ececf6}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#818182;border-color:#818182}.list-group-item-dark{color:#1b1e21;background-color:#c6c8ca}.list-group-item-dark.list-group-item-action:focus,.list-group-item-dark.list-group-item-action:hover{color:#1b1e21;background-color:#b9bbbe}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#1b1e21;border-color:#1b1e21}.close{float:right;font-size:1.5rem;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.5}.close:hover{color:#000;text-decoration:none}.close:not(:disabled):not(.disabled):focus,.close:not(:disabled):not(.disabled):hover{opacity:.75}button.close{padding:0;background-color:transparent;border:0}a.close.disabled{pointer-events:none}.toast{-ms-flex-preferred-size:350px;flex-basis:350px;max-width:350px;font-size:.875rem;background-color:rgba(255,255,255,.85);background-clip:padding-box;border:1px solid rgba(0,0,0,.1);box-shadow:0 .25rem .75rem rgba(0,0,0,.1);opacity:0;border-radius:.25rem}.toast:not(:last-child){margin-bottom:.75rem}.toast.showing{opacity:1}.toast.show{display:block;opacity:1}.toast.hide{display:none}.toast-header{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;padding:.25rem .75rem;color:#6c757d;background-color:rgba(255,255,255,.85);background-clip:padding-box;border-bottom:1px solid rgba(0,0,0,.05);border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.toast-body{padding:.75rem}.modal-open{overflow:hidden}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal{position:fixed;top:0;left:0;z-index:1050;display:none;width:100%;height:100%;overflow:hidden;outline:0}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{transition:-webkit-transform .3s ease-out;transition:transform .3s ease-out;transition:transform .3s ease-out,-webkit-transform .3s ease-out;-webkit-transform:translate(0,-50px);transform:translate(0,-50px)}@media (prefers-reduced-motion:reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{-webkit-transform:none;transform:none}.modal.modal-static .modal-dialog{-webkit-transform:scale(1.02);transform:scale(1.02)}.modal-dialog-scrollable{display:-ms-flexbox;display:flex;max-height:calc(100% - 1rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 1rem);overflow:hidden}.modal-dialog-scrollable .modal-footer,.modal-dialog-scrollable .modal-header{-ms-flex-negative:0;flex-shrink:0}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;min-height:calc(100% - 1rem)}.modal-dialog-centered::before{display:block;height:calc(100vh - 1rem);height:-webkit-min-content;height:-moz-min-content;height:min-content;content:""}.modal-dialog-centered.modal-dialog-scrollable{-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center;height:100%}.modal-dialog-centered.modal-dialog-scrollable .modal-content{max-height:none}.modal-dialog-centered.modal-dialog-scrollable::before{content:none}.modal-content{position:relative;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem;outline:0}.modal-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:-ms-flexbox;display:flex;-ms-flex-align:start;align-items:flex-start;-ms-flex-pack:justify;justify-content:space-between;padding:1rem 1rem;border-bottom:1px solid #dee2e6;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.modal-header .close{padding:1rem 1rem;margin:-1rem -1rem -1rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;-ms-flex:1 1 auto;flex:1 1 auto;padding:1rem}.modal-footer{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:center;align-items:center;-ms-flex-pack:end;justify-content:flex-end;padding:.75rem;border-top:1px solid #dee2e6;border-bottom-right-radius:calc(.3rem - 1px);border-bottom-left-radius:calc(.3rem - 1px)}.modal-footer>*{margin:.25rem}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-scrollable{max-height:calc(100% - 3.5rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 3.5rem)}.modal-dialog-centered{min-height:calc(100% - 3.5rem)}.modal-dialog-centered::before{height:calc(100vh - 3.5rem);height:-webkit-min-content;height:-moz-min-content;height:min-content}.modal-sm{max-width:300px}}@media (min-width:992px){.modal-lg,.modal-xl{max-width:800px}}@media (min-width:1200px){.modal-xl{max-width:1140px}}.tooltip{position:absolute;z-index:1070;display:block;margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip .arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .arrow::before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-auto[x-placement^=top],.bs-tooltip-top{padding:.4rem 0}.bs-tooltip-auto[x-placement^=top] .arrow,.bs-tooltip-top .arrow{bottom:0}.bs-tooltip-auto[x-placement^=top] .arrow::before,.bs-tooltip-top .arrow::before{top:0;border-width:.4rem .4rem 0;border-top-color:#000}.bs-tooltip-auto[x-placement^=right],.bs-tooltip-right{padding:0 .4rem}.bs-tooltip-auto[x-placement^=right] .arrow,.bs-tooltip-right .arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=right] .arrow::before,.bs-tooltip-right .arrow::before{right:0;border-width:.4rem .4rem .4rem 0;border-right-color:#000}.bs-tooltip-auto[x-placement^=bottom],.bs-tooltip-bottom{padding:.4rem 0}.bs-tooltip-auto[x-placement^=bottom] .arrow,.bs-tooltip-bottom .arrow{top:0}.bs-tooltip-auto[x-placement^=bottom] .arrow::before,.bs-tooltip-bottom .arrow::before{bottom:0;border-width:0 .4rem .4rem;border-bottom-color:#000}.bs-tooltip-auto[x-placement^=left],.bs-tooltip-left{padding:0 .4rem}.bs-tooltip-auto[x-placement^=left] .arrow,.bs-tooltip-left .arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=left] .arrow::before,.bs-tooltip-left .arrow::before{left:0;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}.tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000;border-radius:.25rem}.popover{position:absolute;top:0;left:0;z-index:1060;display:block;max-width:276px;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem}.popover .arrow{position:absolute;display:block;width:1rem;height:.5rem;margin:0 .3rem}.popover .arrow::after,.popover .arrow::before{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}.bs-popover-auto[x-placement^=top],.bs-popover-top{margin-bottom:.5rem}.bs-popover-auto[x-placement^=top]>.arrow,.bs-popover-top>.arrow{bottom:calc(-.5rem - 1px)}.bs-popover-auto[x-placement^=top]>.arrow::before,.bs-popover-top>.arrow::before{bottom:0;border-width:.5rem .5rem 0;border-top-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=top]>.arrow::after,.bs-popover-top>.arrow::after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}.bs-popover-auto[x-placement^=right],.bs-popover-right{margin-left:.5rem}.bs-popover-auto[x-placement^=right]>.arrow,.bs-popover-right>.arrow{left:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=right]>.arrow::before,.bs-popover-right>.arrow::before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=right]>.arrow::after,.bs-popover-right>.arrow::after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}.bs-popover-auto[x-placement^=bottom],.bs-popover-bottom{margin-top:.5rem}.bs-popover-auto[x-placement^=bottom]>.arrow,.bs-popover-bottom>.arrow{top:calc(-.5rem - 1px)}.bs-popover-auto[x-placement^=bottom]>.arrow::before,.bs-popover-bottom>.arrow::before{top:0;border-width:0 .5rem .5rem .5rem;border-bottom-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=bottom]>.arrow::after,.bs-popover-bottom>.arrow::after{top:1px;border-width:0 .5rem .5rem .5rem;border-bottom-color:#fff}.bs-popover-auto[x-placement^=bottom] .popover-header::before,.bs-popover-bottom .popover-header::before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:"";border-bottom:1px solid #f7f7f7}.bs-popover-auto[x-placement^=left],.bs-popover-left{margin-right:.5rem}.bs-popover-auto[x-placement^=left]>.arrow,.bs-popover-left>.arrow{right:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=left]>.arrow::before,.bs-popover-left>.arrow::before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=left]>.arrow::after,.bs-popover-left>.arrow::after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}.popover-header{padding:.5rem .75rem;margin-bottom:0;font-size:1rem;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:.5rem .75rem;color:#212529}.carousel{position:relative}.carousel.pointer-event{-ms-touch-action:pan-y;touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner::after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;-webkit-backface-visibility:hidden;backface-visibility:hidden;transition:-webkit-transform .6s ease-in-out;transition:transform .6s ease-in-out;transition:transform .6s ease-in-out,-webkit-transform .6s ease-in-out}@media (prefers-reduced-motion:reduce){.carousel-item{transition:none}}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block}.active.carousel-item-right,.carousel-item-next:not(.carousel-item-left){-webkit-transform:translateX(100%);transform:translateX(100%)}.active.carousel-item-left,.carousel-item-prev:not(.carousel-item-right){-webkit-transform:translateX(-100%);transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;-webkit-transform:none;transform:none}.carousel-fade .carousel-item-next.carousel-item-left,.carousel-fade .carousel-item-prev.carousel-item-right,.carousel-fade .carousel-item.active{z-index:1;opacity:1}.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{z-index:0;opacity:0;transition:opacity 0s .6s}@media (prefers-reduced-motion:reduce){.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{transition:none}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;z-index:1;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:15%;padding:0;color:#fff;text-align:center;background:0 0;border:0;opacity:.5;transition:opacity .15s ease}@media (prefers-reduced-motion:reduce){.carousel-control-next,.carousel-control-prev{transition:none}}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:20px;height:20px;background:50%/100% 100% no-repeat}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath d='M5.25 0l-4 4 4 4 1.5-1.5L4.25 4l2.5-2.5L5.25 0z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath d='M2.75 0l-1.5 1.5L3.75 4l-2.5 2.5L2.75 8l4-4-4-4z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:15;display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;padding-left:0;margin-right:15%;margin-left:15%;list-style:none}.carousel-indicators li{box-sizing:content-box;-ms-flex:0 1 auto;flex:0 1 auto;width:30px;height:3px;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}@media (prefers-reduced-motion:reduce){.carousel-indicators li{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center}@-webkit-keyframes spinner-border{to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes spinner-border{to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.spinner-border{display:inline-block;width:2rem;height:2rem;vertical-align:-.125em;border:.25em solid currentColor;border-right-color:transparent;border-radius:50%;-webkit-animation:.75s linear infinite spinner-border;animation:.75s linear infinite spinner-border}.spinner-border-sm{width:1rem;height:1rem;border-width:.2em}@-webkit-keyframes spinner-grow{0%{-webkit-transform:scale(0);transform:scale(0)}50%{opacity:1;-webkit-transform:none;transform:none}}@keyframes spinner-grow{0%{-webkit-transform:scale(0);transform:scale(0)}50%{opacity:1;-webkit-transform:none;transform:none}}.spinner-grow{display:inline-block;width:2rem;height:2rem;vertical-align:-.125em;background-color:currentColor;border-radius:50%;opacity:0;-webkit-animation:.75s linear infinite spinner-grow;animation:.75s linear infinite spinner-grow}.spinner-grow-sm{width:1rem;height:1rem}@media (prefers-reduced-motion:reduce){.spinner-border,.spinner-grow{-webkit-animation-duration:1.5s;animation-duration:1.5s}}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.bg-primary{background-color:#007bff!important}a.bg-primary:focus,a.bg-primary:hover,button.bg-primary:focus,button.bg-primary:hover{background-color:#0062cc!important}.bg-secondary{background-color:#6c757d!important}a.bg-secondary:focus,a.bg-secondary:hover,button.bg-secondary:focus,button.bg-secondary:hover{background-color:#545b62!important}.bg-success{background-color:#28a745!important}a.bg-success:focus,a.bg-success:hover,button.bg-success:focus,button.bg-success:hover{background-color:#1e7e34!important}.bg-info{background-color:#17a2b8!important}a.bg-info:focus,a.bg-info:hover,button.bg-info:focus,button.bg-info:hover{background-color:#117a8b!important}.bg-warning{background-color:#ffc107!important}a.bg-warning:focus,a.bg-warning:hover,button.bg-warning:focus,button.bg-warning:hover{background-color:#d39e00!important}.bg-danger{background-color:#dc3545!important}a.bg-danger:focus,a.bg-danger:hover,button.bg-danger:focus,button.bg-danger:hover{background-color:#bd2130!important}.bg-light{background-color:#f8f9fa!important}a.bg-light:focus,a.bg-light:hover,button.bg-light:focus,button.bg-light:hover{background-color:#dae0e5!important}.bg-dark{background-color:#343a40!important}a.bg-dark:focus,a.bg-dark:hover,button.bg-dark:focus,button.bg-dark:hover{background-color:#1d2124!important}.bg-white{background-color:#fff!important}.bg-transparent{background-color:transparent!important}.border{border:1px solid #dee2e6!important}.border-top{border-top:1px solid #dee2e6!important}.border-right{border-right:1px solid #dee2e6!important}.border-bottom{border-bottom:1px solid #dee2e6!important}.border-left{border-left:1px solid #dee2e6!important}.border-0{border:0!important}.border-top-0{border-top:0!important}.border-right-0{border-right:0!important}.border-bottom-0{border-bottom:0!important}.border-left-0{border-left:0!important}.border-primary{border-color:#007bff!important}.border-secondary{border-color:#6c757d!important}.border-success{border-color:#28a745!important}.border-info{border-color:#17a2b8!important}.border-warning{border-color:#ffc107!important}.border-danger{border-color:#dc3545!important}.border-light{border-color:#f8f9fa!important}.border-dark{border-color:#343a40!important}.border-white{border-color:#fff!important}.rounded-sm{border-radius:.2rem!important}.rounded{border-radius:.25rem!important}.rounded-top{border-top-left-radius:.25rem!important;border-top-right-radius:.25rem!important}.rounded-right{border-top-right-radius:.25rem!important;border-bottom-right-radius:.25rem!important}.rounded-bottom{border-bottom-right-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-left{border-top-left-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-lg{border-radius:.3rem!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:50rem!important}.rounded-0{border-radius:0!important}.clearfix::after{display:block;clear:both;content:""}.d-none{display:none!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:-ms-flexbox!important;display:flex!important}.d-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}@media (min-width:576px){.d-sm-none{display:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:-ms-flexbox!important;display:flex!important}.d-sm-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:768px){.d-md-none{display:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:-ms-flexbox!important;display:flex!important}.d-md-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:992px){.d-lg-none{display:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:-ms-flexbox!important;display:flex!important}.d-lg-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:1200px){.d-xl-none{display:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:-ms-flexbox!important;display:flex!important}.d-xl-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media print{.d-print-none{display:none!important}.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:-ms-flexbox!important;display:flex!important}.d-print-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}.embed-responsive{position:relative;display:block;width:100%;padding:0;overflow:hidden}.embed-responsive::before{display:block;content:""}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-21by9::before{padding-top:42.857143%}.embed-responsive-16by9::before{padding-top:56.25%}.embed-responsive-4by3::before{padding-top:75%}.embed-responsive-1by1::before{padding-top:100%}.flex-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-center{-ms-flex-align:center!important;align-items:center!important}.align-items-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}@media (min-width:576px){.flex-sm-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-sm-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-sm-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-sm-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-sm-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-sm-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-sm-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-sm-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-sm-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-sm-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-sm-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-sm-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-sm-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-sm-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-sm-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-sm-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-sm-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-sm-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-sm-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-sm-center{-ms-flex-align:center!important;align-items:center!important}.align-items-sm-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-sm-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-sm-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-sm-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-sm-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-sm-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-sm-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-sm-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-sm-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-sm-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-sm-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-sm-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-sm-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-sm-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:768px){.flex-md-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-md-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-md-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-md-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-md-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-md-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-md-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-md-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-md-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-md-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-md-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-md-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-md-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-md-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-md-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-md-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-md-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-md-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-md-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-md-center{-ms-flex-align:center!important;align-items:center!important}.align-items-md-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-md-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-md-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-md-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-md-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-md-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-md-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-md-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-md-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-md-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-md-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-md-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-md-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-md-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:992px){.flex-lg-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-lg-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-lg-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-lg-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-lg-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-lg-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-lg-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-lg-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-lg-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-lg-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-lg-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-lg-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-lg-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-lg-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-lg-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-lg-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-lg-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-lg-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-lg-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-lg-center{-ms-flex-align:center!important;align-items:center!important}.align-items-lg-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-lg-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-lg-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-lg-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-lg-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-lg-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-lg-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-lg-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-lg-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-lg-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-lg-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-lg-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-lg-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-lg-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:1200px){.flex-xl-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-xl-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-xl-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-xl-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-xl-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-xl-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-xl-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-xl-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-xl-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-xl-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-xl-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-xl-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-xl-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-xl-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-xl-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-xl-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-xl-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-xl-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-xl-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-xl-center{-ms-flex-align:center!important;align-items:center!important}.align-items-xl-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-xl-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-xl-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-xl-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-xl-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-xl-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-xl-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-xl-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-xl-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-xl-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-xl-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-xl-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-xl-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-xl-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}.float-left{float:left!important}.float-right{float:right!important}.float-none{float:none!important}@media (min-width:576px){.float-sm-left{float:left!important}.float-sm-right{float:right!important}.float-sm-none{float:none!important}}@media (min-width:768px){.float-md-left{float:left!important}.float-md-right{float:right!important}.float-md-none{float:none!important}}@media (min-width:992px){.float-lg-left{float:left!important}.float-lg-right{float:right!important}.float-lg-none{float:none!important}}@media (min-width:1200px){.float-xl-left{float:left!important}.float-xl-right{float:right!important}.float-xl-none{float:none!important}}.user-select-all{-webkit-user-select:all!important;-moz-user-select:all!important;user-select:all!important}.user-select-auto{-webkit-user-select:auto!important;-moz-user-select:auto!important;-ms-user-select:auto!important;user-select:auto!important}.user-select-none{-webkit-user-select:none!important;-moz-user-select:none!important;-ms-user-select:none!important;user-select:none!important}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:-webkit-sticky!important;position:sticky!important}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}@supports ((position:-webkit-sticky) or (position:sticky)){.sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;overflow:visible;clip:auto;white-space:normal}.shadow-sm{box-shadow:0 .125rem .25rem rgba(0,0,0,.075)!important}.shadow{box-shadow:0 .5rem 1rem rgba(0,0,0,.15)!important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,.175)!important}.shadow-none{box-shadow:none!important}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mw-100{max-width:100%!important}.mh-100{max-height:100%!important}.min-vw-100{min-width:100vw!important}.min-vh-100{min-height:100vh!important}.vw-100{width:100vw!important}.vh-100{height:100vh!important}.m-0{margin:0!important}.mt-0,.my-0{margin-top:0!important}.mr-0,.mx-0{margin-right:0!important}.mb-0,.my-0{margin-bottom:0!important}.ml-0,.mx-0{margin-left:0!important}.m-1{margin:.25rem!important}.mt-1,.my-1{margin-top:.25rem!important}.mr-1,.mx-1{margin-right:.25rem!important}.mb-1,.my-1{margin-bottom:.25rem!important}.ml-1,.mx-1{margin-left:.25rem!important}.m-2{margin:.5rem!important}.mt-2,.my-2{margin-top:.5rem!important}.mr-2,.mx-2{margin-right:.5rem!important}.mb-2,.my-2{margin-bottom:.5rem!important}.ml-2,.mx-2{margin-left:.5rem!important}.m-3{margin:1rem!important}.mt-3,.my-3{margin-top:1rem!important}.mr-3,.mx-3{margin-right:1rem!important}.mb-3,.my-3{margin-bottom:1rem!important}.ml-3,.mx-3{margin-left:1rem!important}.m-4{margin:1.5rem!important}.mt-4,.my-4{margin-top:1.5rem!important}.mr-4,.mx-4{margin-right:1.5rem!important}.mb-4,.my-4{margin-bottom:1.5rem!important}.ml-4,.mx-4{margin-left:1.5rem!important}.m-5{margin:3rem!important}.mt-5,.my-5{margin-top:3rem!important}.mr-5,.mx-5{margin-right:3rem!important}.mb-5,.my-5{margin-bottom:3rem!important}.ml-5,.mx-5{margin-left:3rem!important}.p-0{padding:0!important}.pt-0,.py-0{padding-top:0!important}.pr-0,.px-0{padding-right:0!important}.pb-0,.py-0{padding-bottom:0!important}.pl-0,.px-0{padding-left:0!important}.p-1{padding:.25rem!important}.pt-1,.py-1{padding-top:.25rem!important}.pr-1,.px-1{padding-right:.25rem!important}.pb-1,.py-1{padding-bottom:.25rem!important}.pl-1,.px-1{padding-left:.25rem!important}.p-2{padding:.5rem!important}.pt-2,.py-2{padding-top:.5rem!important}.pr-2,.px-2{padding-right:.5rem!important}.pb-2,.py-2{padding-bottom:.5rem!important}.pl-2,.px-2{padding-left:.5rem!important}.p-3{padding:1rem!important}.pt-3,.py-3{padding-top:1rem!important}.pr-3,.px-3{padding-right:1rem!important}.pb-3,.py-3{padding-bottom:1rem!important}.pl-3,.px-3{padding-left:1rem!important}.p-4{padding:1.5rem!important}.pt-4,.py-4{padding-top:1.5rem!important}.pr-4,.px-4{padding-right:1.5rem!important}.pb-4,.py-4{padding-bottom:1.5rem!important}.pl-4,.px-4{padding-left:1.5rem!important}.p-5{padding:3rem!important}.pt-5,.py-5{padding-top:3rem!important}.pr-5,.px-5{padding-right:3rem!important}.pb-5,.py-5{padding-bottom:3rem!important}.pl-5,.px-5{padding-left:3rem!important}.m-n1{margin:-.25rem!important}.mt-n1,.my-n1{margin-top:-.25rem!important}.mr-n1,.mx-n1{margin-right:-.25rem!important}.mb-n1,.my-n1{margin-bottom:-.25rem!important}.ml-n1,.mx-n1{margin-left:-.25rem!important}.m-n2{margin:-.5rem!important}.mt-n2,.my-n2{margin-top:-.5rem!important}.mr-n2,.mx-n2{margin-right:-.5rem!important}.mb-n2,.my-n2{margin-bottom:-.5rem!important}.ml-n2,.mx-n2{margin-left:-.5rem!important}.m-n3{margin:-1rem!important}.mt-n3,.my-n3{margin-top:-1rem!important}.mr-n3,.mx-n3{margin-right:-1rem!important}.mb-n3,.my-n3{margin-bottom:-1rem!important}.ml-n3,.mx-n3{margin-left:-1rem!important}.m-n4{margin:-1.5rem!important}.mt-n4,.my-n4{margin-top:-1.5rem!important}.mr-n4,.mx-n4{margin-right:-1.5rem!important}.mb-n4,.my-n4{margin-bottom:-1.5rem!important}.ml-n4,.mx-n4{margin-left:-1.5rem!important}.m-n5{margin:-3rem!important}.mt-n5,.my-n5{margin-top:-3rem!important}.mr-n5,.mx-n5{margin-right:-3rem!important}.mb-n5,.my-n5{margin-bottom:-3rem!important}.ml-n5,.mx-n5{margin-left:-3rem!important}.m-auto{margin:auto!important}.mt-auto,.my-auto{margin-top:auto!important}.mr-auto,.mx-auto{margin-right:auto!important}.mb-auto,.my-auto{margin-bottom:auto!important}.ml-auto,.mx-auto{margin-left:auto!important}@media (min-width:576px){.m-sm-0{margin:0!important}.mt-sm-0,.my-sm-0{margin-top:0!important}.mr-sm-0,.mx-sm-0{margin-right:0!important}.mb-sm-0,.my-sm-0{margin-bottom:0!important}.ml-sm-0,.mx-sm-0{margin-left:0!important}.m-sm-1{margin:.25rem!important}.mt-sm-1,.my-sm-1{margin-top:.25rem!important}.mr-sm-1,.mx-sm-1{margin-right:.25rem!important}.mb-sm-1,.my-sm-1{margin-bottom:.25rem!important}.ml-sm-1,.mx-sm-1{margin-left:.25rem!important}.m-sm-2{margin:.5rem!important}.mt-sm-2,.my-sm-2{margin-top:.5rem!important}.mr-sm-2,.mx-sm-2{margin-right:.5rem!important}.mb-sm-2,.my-sm-2{margin-bottom:.5rem!important}.ml-sm-2,.mx-sm-2{margin-left:.5rem!important}.m-sm-3{margin:1rem!important}.mt-sm-3,.my-sm-3{margin-top:1rem!important}.mr-sm-3,.mx-sm-3{margin-right:1rem!important}.mb-sm-3,.my-sm-3{margin-bottom:1rem!important}.ml-sm-3,.mx-sm-3{margin-left:1rem!important}.m-sm-4{margin:1.5rem!important}.mt-sm-4,.my-sm-4{margin-top:1.5rem!important}.mr-sm-4,.mx-sm-4{margin-right:1.5rem!important}.mb-sm-4,.my-sm-4{margin-bottom:1.5rem!important}.ml-sm-4,.mx-sm-4{margin-left:1.5rem!important}.m-sm-5{margin:3rem!important}.mt-sm-5,.my-sm-5{margin-top:3rem!important}.mr-sm-5,.mx-sm-5{margin-right:3rem!important}.mb-sm-5,.my-sm-5{margin-bottom:3rem!important}.ml-sm-5,.mx-sm-5{margin-left:3rem!important}.p-sm-0{padding:0!important}.pt-sm-0,.py-sm-0{padding-top:0!important}.pr-sm-0,.px-sm-0{padding-right:0!important}.pb-sm-0,.py-sm-0{padding-bottom:0!important}.pl-sm-0,.px-sm-0{padding-left:0!important}.p-sm-1{padding:.25rem!important}.pt-sm-1,.py-sm-1{padding-top:.25rem!important}.pr-sm-1,.px-sm-1{padding-right:.25rem!important}.pb-sm-1,.py-sm-1{padding-bottom:.25rem!important}.pl-sm-1,.px-sm-1{padding-left:.25rem!important}.p-sm-2{padding:.5rem!important}.pt-sm-2,.py-sm-2{padding-top:.5rem!important}.pr-sm-2,.px-sm-2{padding-right:.5rem!important}.pb-sm-2,.py-sm-2{padding-bottom:.5rem!important}.pl-sm-2,.px-sm-2{padding-left:.5rem!important}.p-sm-3{padding:1rem!important}.pt-sm-3,.py-sm-3{padding-top:1rem!important}.pr-sm-3,.px-sm-3{padding-right:1rem!important}.pb-sm-3,.py-sm-3{padding-bottom:1rem!important}.pl-sm-3,.px-sm-3{padding-left:1rem!important}.p-sm-4{padding:1.5rem!important}.pt-sm-4,.py-sm-4{padding-top:1.5rem!important}.pr-sm-4,.px-sm-4{padding-right:1.5rem!important}.pb-sm-4,.py-sm-4{padding-bottom:1.5rem!important}.pl-sm-4,.px-sm-4{padding-left:1.5rem!important}.p-sm-5{padding:3rem!important}.pt-sm-5,.py-sm-5{padding-top:3rem!important}.pr-sm-5,.px-sm-5{padding-right:3rem!important}.pb-sm-5,.py-sm-5{padding-bottom:3rem!important}.pl-sm-5,.px-sm-5{padding-left:3rem!important}.m-sm-n1{margin:-.25rem!important}.mt-sm-n1,.my-sm-n1{margin-top:-.25rem!important}.mr-sm-n1,.mx-sm-n1{margin-right:-.25rem!important}.mb-sm-n1,.my-sm-n1{margin-bottom:-.25rem!important}.ml-sm-n1,.mx-sm-n1{margin-left:-.25rem!important}.m-sm-n2{margin:-.5rem!important}.mt-sm-n2,.my-sm-n2{margin-top:-.5rem!important}.mr-sm-n2,.mx-sm-n2{margin-right:-.5rem!important}.mb-sm-n2,.my-sm-n2{margin-bottom:-.5rem!important}.ml-sm-n2,.mx-sm-n2{margin-left:-.5rem!important}.m-sm-n3{margin:-1rem!important}.mt-sm-n3,.my-sm-n3{margin-top:-1rem!important}.mr-sm-n3,.mx-sm-n3{margin-right:-1rem!important}.mb-sm-n3,.my-sm-n3{margin-bottom:-1rem!important}.ml-sm-n3,.mx-sm-n3{margin-left:-1rem!important}.m-sm-n4{margin:-1.5rem!important}.mt-sm-n4,.my-sm-n4{margin-top:-1.5rem!important}.mr-sm-n4,.mx-sm-n4{margin-right:-1.5rem!important}.mb-sm-n4,.my-sm-n4{margin-bottom:-1.5rem!important}.ml-sm-n4,.mx-sm-n4{margin-left:-1.5rem!important}.m-sm-n5{margin:-3rem!important}.mt-sm-n5,.my-sm-n5{margin-top:-3rem!important}.mr-sm-n5,.mx-sm-n5{margin-right:-3rem!important}.mb-sm-n5,.my-sm-n5{margin-bottom:-3rem!important}.ml-sm-n5,.mx-sm-n5{margin-left:-3rem!important}.m-sm-auto{margin:auto!important}.mt-sm-auto,.my-sm-auto{margin-top:auto!important}.mr-sm-auto,.mx-sm-auto{margin-right:auto!important}.mb-sm-auto,.my-sm-auto{margin-bottom:auto!important}.ml-sm-auto,.mx-sm-auto{margin-left:auto!important}}@media (min-width:768px){.m-md-0{margin:0!important}.mt-md-0,.my-md-0{margin-top:0!important}.mr-md-0,.mx-md-0{margin-right:0!important}.mb-md-0,.my-md-0{margin-bottom:0!important}.ml-md-0,.mx-md-0{margin-left:0!important}.m-md-1{margin:.25rem!important}.mt-md-1,.my-md-1{margin-top:.25rem!important}.mr-md-1,.mx-md-1{margin-right:.25rem!important}.mb-md-1,.my-md-1{margin-bottom:.25rem!important}.ml-md-1,.mx-md-1{margin-left:.25rem!important}.m-md-2{margin:.5rem!important}.mt-md-2,.my-md-2{margin-top:.5rem!important}.mr-md-2,.mx-md-2{margin-right:.5rem!important}.mb-md-2,.my-md-2{margin-bottom:.5rem!important}.ml-md-2,.mx-md-2{margin-left:.5rem!important}.m-md-3{margin:1rem!important}.mt-md-3,.my-md-3{margin-top:1rem!important}.mr-md-3,.mx-md-3{margin-right:1rem!important}.mb-md-3,.my-md-3{margin-bottom:1rem!important}.ml-md-3,.mx-md-3{margin-left:1rem!important}.m-md-4{margin:1.5rem!important}.mt-md-4,.my-md-4{margin-top:1.5rem!important}.mr-md-4,.mx-md-4{margin-right:1.5rem!important}.mb-md-4,.my-md-4{margin-bottom:1.5rem!important}.ml-md-4,.mx-md-4{margin-left:1.5rem!important}.m-md-5{margin:3rem!important}.mt-md-5,.my-md-5{margin-top:3rem!important}.mr-md-5,.mx-md-5{margin-right:3rem!important}.mb-md-5,.my-md-5{margin-bottom:3rem!important}.ml-md-5,.mx-md-5{margin-left:3rem!important}.p-md-0{padding:0!important}.pt-md-0,.py-md-0{padding-top:0!important}.pr-md-0,.px-md-0{padding-right:0!important}.pb-md-0,.py-md-0{padding-bottom:0!important}.pl-md-0,.px-md-0{padding-left:0!important}.p-md-1{padding:.25rem!important}.pt-md-1,.py-md-1{padding-top:.25rem!important}.pr-md-1,.px-md-1{padding-right:.25rem!important}.pb-md-1,.py-md-1{padding-bottom:.25rem!important}.pl-md-1,.px-md-1{padding-left:.25rem!important}.p-md-2{padding:.5rem!important}.pt-md-2,.py-md-2{padding-top:.5rem!important}.pr-md-2,.px-md-2{padding-right:.5rem!important}.pb-md-2,.py-md-2{padding-bottom:.5rem!important}.pl-md-2,.px-md-2{padding-left:.5rem!important}.p-md-3{padding:1rem!important}.pt-md-3,.py-md-3{padding-top:1rem!important}.pr-md-3,.px-md-3{padding-right:1rem!important}.pb-md-3,.py-md-3{padding-bottom:1rem!important}.pl-md-3,.px-md-3{padding-left:1rem!important}.p-md-4{padding:1.5rem!important}.pt-md-4,.py-md-4{padding-top:1.5rem!important}.pr-md-4,.px-md-4{padding-right:1.5rem!important}.pb-md-4,.py-md-4{padding-bottom:1.5rem!important}.pl-md-4,.px-md-4{padding-left:1.5rem!important}.p-md-5{padding:3rem!important}.pt-md-5,.py-md-5{padding-top:3rem!important}.pr-md-5,.px-md-5{padding-right:3rem!important}.pb-md-5,.py-md-5{padding-bottom:3rem!important}.pl-md-5,.px-md-5{padding-left:3rem!important}.m-md-n1{margin:-.25rem!important}.mt-md-n1,.my-md-n1{margin-top:-.25rem!important}.mr-md-n1,.mx-md-n1{margin-right:-.25rem!important}.mb-md-n1,.my-md-n1{margin-bottom:-.25rem!important}.ml-md-n1,.mx-md-n1{margin-left:-.25rem!important}.m-md-n2{margin:-.5rem!important}.mt-md-n2,.my-md-n2{margin-top:-.5rem!important}.mr-md-n2,.mx-md-n2{margin-right:-.5rem!important}.mb-md-n2,.my-md-n2{margin-bottom:-.5rem!important}.ml-md-n2,.mx-md-n2{margin-left:-.5rem!important}.m-md-n3{margin:-1rem!important}.mt-md-n3,.my-md-n3{margin-top:-1rem!important}.mr-md-n3,.mx-md-n3{margin-right:-1rem!important}.mb-md-n3,.my-md-n3{margin-bottom:-1rem!important}.ml-md-n3,.mx-md-n3{margin-left:-1rem!important}.m-md-n4{margin:-1.5rem!important}.mt-md-n4,.my-md-n4{margin-top:-1.5rem!important}.mr-md-n4,.mx-md-n4{margin-right:-1.5rem!important}.mb-md-n4,.my-md-n4{margin-bottom:-1.5rem!important}.ml-md-n4,.mx-md-n4{margin-left:-1.5rem!important}.m-md-n5{margin:-3rem!important}.mt-md-n5,.my-md-n5{margin-top:-3rem!important}.mr-md-n5,.mx-md-n5{margin-right:-3rem!important}.mb-md-n5,.my-md-n5{margin-bottom:-3rem!important}.ml-md-n5,.mx-md-n5{margin-left:-3rem!important}.m-md-auto{margin:auto!important}.mt-md-auto,.my-md-auto{margin-top:auto!important}.mr-md-auto,.mx-md-auto{margin-right:auto!important}.mb-md-auto,.my-md-auto{margin-bottom:auto!important}.ml-md-auto,.mx-md-auto{margin-left:auto!important}}@media (min-width:992px){.m-lg-0{margin:0!important}.mt-lg-0,.my-lg-0{margin-top:0!important}.mr-lg-0,.mx-lg-0{margin-right:0!important}.mb-lg-0,.my-lg-0{margin-bottom:0!important}.ml-lg-0,.mx-lg-0{margin-left:0!important}.m-lg-1{margin:.25rem!important}.mt-lg-1,.my-lg-1{margin-top:.25rem!important}.mr-lg-1,.mx-lg-1{margin-right:.25rem!important}.mb-lg-1,.my-lg-1{margin-bottom:.25rem!important}.ml-lg-1,.mx-lg-1{margin-left:.25rem!important}.m-lg-2{margin:.5rem!important}.mt-lg-2,.my-lg-2{margin-top:.5rem!important}.mr-lg-2,.mx-lg-2{margin-right:.5rem!important}.mb-lg-2,.my-lg-2{margin-bottom:.5rem!important}.ml-lg-2,.mx-lg-2{margin-left:.5rem!important}.m-lg-3{margin:1rem!important}.mt-lg-3,.my-lg-3{margin-top:1rem!important}.mr-lg-3,.mx-lg-3{margin-right:1rem!important}.mb-lg-3,.my-lg-3{margin-bottom:1rem!important}.ml-lg-3,.mx-lg-3{margin-left:1rem!important}.m-lg-4{margin:1.5rem!important}.mt-lg-4,.my-lg-4{margin-top:1.5rem!important}.mr-lg-4,.mx-lg-4{margin-right:1.5rem!important}.mb-lg-4,.my-lg-4{margin-bottom:1.5rem!important}.ml-lg-4,.mx-lg-4{margin-left:1.5rem!important}.m-lg-5{margin:3rem!important}.mt-lg-5,.my-lg-5{margin-top:3rem!important}.mr-lg-5,.mx-lg-5{margin-right:3rem!important}.mb-lg-5,.my-lg-5{margin-bottom:3rem!important}.ml-lg-5,.mx-lg-5{margin-left:3rem!important}.p-lg-0{padding:0!important}.pt-lg-0,.py-lg-0{padding-top:0!important}.pr-lg-0,.px-lg-0{padding-right:0!important}.pb-lg-0,.py-lg-0{padding-bottom:0!important}.pl-lg-0,.px-lg-0{padding-left:0!important}.p-lg-1{padding:.25rem!important}.pt-lg-1,.py-lg-1{padding-top:.25rem!important}.pr-lg-1,.px-lg-1{padding-right:.25rem!important}.pb-lg-1,.py-lg-1{padding-bottom:.25rem!important}.pl-lg-1,.px-lg-1{padding-left:.25rem!important}.p-lg-2{padding:.5rem!important}.pt-lg-2,.py-lg-2{padding-top:.5rem!important}.pr-lg-2,.px-lg-2{padding-right:.5rem!important}.pb-lg-2,.py-lg-2{padding-bottom:.5rem!important}.pl-lg-2,.px-lg-2{padding-left:.5rem!important}.p-lg-3{padding:1rem!important}.pt-lg-3,.py-lg-3{padding-top:1rem!important}.pr-lg-3,.px-lg-3{padding-right:1rem!important}.pb-lg-3,.py-lg-3{padding-bottom:1rem!important}.pl-lg-3,.px-lg-3{padding-left:1rem!important}.p-lg-4{padding:1.5rem!important}.pt-lg-4,.py-lg-4{padding-top:1.5rem!important}.pr-lg-4,.px-lg-4{padding-right:1.5rem!important}.pb-lg-4,.py-lg-4{padding-bottom:1.5rem!important}.pl-lg-4,.px-lg-4{padding-left:1.5rem!important}.p-lg-5{padding:3rem!important}.pt-lg-5,.py-lg-5{padding-top:3rem!important}.pr-lg-5,.px-lg-5{padding-right:3rem!important}.pb-lg-5,.py-lg-5{padding-bottom:3rem!important}.pl-lg-5,.px-lg-5{padding-left:3rem!important}.m-lg-n1{margin:-.25rem!important}.mt-lg-n1,.my-lg-n1{margin-top:-.25rem!important}.mr-lg-n1,.mx-lg-n1{margin-right:-.25rem!important}.mb-lg-n1,.my-lg-n1{margin-bottom:-.25rem!important}.ml-lg-n1,.mx-lg-n1{margin-left:-.25rem!important}.m-lg-n2{margin:-.5rem!important}.mt-lg-n2,.my-lg-n2{margin-top:-.5rem!important}.mr-lg-n2,.mx-lg-n2{margin-right:-.5rem!important}.mb-lg-n2,.my-lg-n2{margin-bottom:-.5rem!important}.ml-lg-n2,.mx-lg-n2{margin-left:-.5rem!important}.m-lg-n3{margin:-1rem!important}.mt-lg-n3,.my-lg-n3{margin-top:-1rem!important}.mr-lg-n3,.mx-lg-n3{margin-right:-1rem!important}.mb-lg-n3,.my-lg-n3{margin-bottom:-1rem!important}.ml-lg-n3,.mx-lg-n3{margin-left:-1rem!important}.m-lg-n4{margin:-1.5rem!important}.mt-lg-n4,.my-lg-n4{margin-top:-1.5rem!important}.mr-lg-n4,.mx-lg-n4{margin-right:-1.5rem!important}.mb-lg-n4,.my-lg-n4{margin-bottom:-1.5rem!important}.ml-lg-n4,.mx-lg-n4{margin-left:-1.5rem!important}.m-lg-n5{margin:-3rem!important}.mt-lg-n5,.my-lg-n5{margin-top:-3rem!important}.mr-lg-n5,.mx-lg-n5{margin-right:-3rem!important}.mb-lg-n5,.my-lg-n5{margin-bottom:-3rem!important}.ml-lg-n5,.mx-lg-n5{margin-left:-3rem!important}.m-lg-auto{margin:auto!important}.mt-lg-auto,.my-lg-auto{margin-top:auto!important}.mr-lg-auto,.mx-lg-auto{margin-right:auto!important}.mb-lg-auto,.my-lg-auto{margin-bottom:auto!important}.ml-lg-auto,.mx-lg-auto{margin-left:auto!important}}@media (min-width:1200px){.m-xl-0{margin:0!important}.mt-xl-0,.my-xl-0{margin-top:0!important}.mr-xl-0,.mx-xl-0{margin-right:0!important}.mb-xl-0,.my-xl-0{margin-bottom:0!important}.ml-xl-0,.mx-xl-0{margin-left:0!important}.m-xl-1{margin:.25rem!important}.mt-xl-1,.my-xl-1{margin-top:.25rem!important}.mr-xl-1,.mx-xl-1{margin-right:.25rem!important}.mb-xl-1,.my-xl-1{margin-bottom:.25rem!important}.ml-xl-1,.mx-xl-1{margin-left:.25rem!important}.m-xl-2{margin:.5rem!important}.mt-xl-2,.my-xl-2{margin-top:.5rem!important}.mr-xl-2,.mx-xl-2{margin-right:.5rem!important}.mb-xl-2,.my-xl-2{margin-bottom:.5rem!important}.ml-xl-2,.mx-xl-2{margin-left:.5rem!important}.m-xl-3{margin:1rem!important}.mt-xl-3,.my-xl-3{margin-top:1rem!important}.mr-xl-3,.mx-xl-3{margin-right:1rem!important}.mb-xl-3,.my-xl-3{margin-bottom:1rem!important}.ml-xl-3,.mx-xl-3{margin-left:1rem!important}.m-xl-4{margin:1.5rem!important}.mt-xl-4,.my-xl-4{margin-top:1.5rem!important}.mr-xl-4,.mx-xl-4{margin-right:1.5rem!important}.mb-xl-4,.my-xl-4{margin-bottom:1.5rem!important}.ml-xl-4,.mx-xl-4{margin-left:1.5rem!important}.m-xl-5{margin:3rem!important}.mt-xl-5,.my-xl-5{margin-top:3rem!important}.mr-xl-5,.mx-xl-5{margin-right:3rem!important}.mb-xl-5,.my-xl-5{margin-bottom:3rem!important}.ml-xl-5,.mx-xl-5{margin-left:3rem!important}.p-xl-0{padding:0!important}.pt-xl-0,.py-xl-0{padding-top:0!important}.pr-xl-0,.px-xl-0{padding-right:0!important}.pb-xl-0,.py-xl-0{padding-bottom:0!important}.pl-xl-0,.px-xl-0{padding-left:0!important}.p-xl-1{padding:.25rem!important}.pt-xl-1,.py-xl-1{padding-top:.25rem!important}.pr-xl-1,.px-xl-1{padding-right:.25rem!important}.pb-xl-1,.py-xl-1{padding-bottom:.25rem!important}.pl-xl-1,.px-xl-1{padding-left:.25rem!important}.p-xl-2{padding:.5rem!important}.pt-xl-2,.py-xl-2{padding-top:.5rem!important}.pr-xl-2,.px-xl-2{padding-right:.5rem!important}.pb-xl-2,.py-xl-2{padding-bottom:.5rem!important}.pl-xl-2,.px-xl-2{padding-left:.5rem!important}.p-xl-3{padding:1rem!important}.pt-xl-3,.py-xl-3{padding-top:1rem!important}.pr-xl-3,.px-xl-3{padding-right:1rem!important}.pb-xl-3,.py-xl-3{padding-bottom:1rem!important}.pl-xl-3,.px-xl-3{padding-left:1rem!important}.p-xl-4{padding:1.5rem!important}.pt-xl-4,.py-xl-4{padding-top:1.5rem!important}.pr-xl-4,.px-xl-4{padding-right:1.5rem!important}.pb-xl-4,.py-xl-4{padding-bottom:1.5rem!important}.pl-xl-4,.px-xl-4{padding-left:1.5rem!important}.p-xl-5{padding:3rem!important}.pt-xl-5,.py-xl-5{padding-top:3rem!important}.pr-xl-5,.px-xl-5{padding-right:3rem!important}.pb-xl-5,.py-xl-5{padding-bottom:3rem!important}.pl-xl-5,.px-xl-5{padding-left:3rem!important}.m-xl-n1{margin:-.25rem!important}.mt-xl-n1,.my-xl-n1{margin-top:-.25rem!important}.mr-xl-n1,.mx-xl-n1{margin-right:-.25rem!important}.mb-xl-n1,.my-xl-n1{margin-bottom:-.25rem!important}.ml-xl-n1,.mx-xl-n1{margin-left:-.25rem!important}.m-xl-n2{margin:-.5rem!important}.mt-xl-n2,.my-xl-n2{margin-top:-.5rem!important}.mr-xl-n2,.mx-xl-n2{margin-right:-.5rem!important}.mb-xl-n2,.my-xl-n2{margin-bottom:-.5rem!important}.ml-xl-n2,.mx-xl-n2{margin-left:-.5rem!important}.m-xl-n3{margin:-1rem!important}.mt-xl-n3,.my-xl-n3{margin-top:-1rem!important}.mr-xl-n3,.mx-xl-n3{margin-right:-1rem!important}.mb-xl-n3,.my-xl-n3{margin-bottom:-1rem!important}.ml-xl-n3,.mx-xl-n3{margin-left:-1rem!important}.m-xl-n4{margin:-1.5rem!important}.mt-xl-n4,.my-xl-n4{margin-top:-1.5rem!important}.mr-xl-n4,.mx-xl-n4{margin-right:-1.5rem!important}.mb-xl-n4,.my-xl-n4{margin-bottom:-1.5rem!important}.ml-xl-n4,.mx-xl-n4{margin-left:-1.5rem!important}.m-xl-n5{margin:-3rem!important}.mt-xl-n5,.my-xl-n5{margin-top:-3rem!important}.mr-xl-n5,.mx-xl-n5{margin-right:-3rem!important}.mb-xl-n5,.my-xl-n5{margin-bottom:-3rem!important}.ml-xl-n5,.mx-xl-n5{margin-left:-3rem!important}.m-xl-auto{margin:auto!important}.mt-xl-auto,.my-xl-auto{margin-top:auto!important}.mr-xl-auto,.mx-xl-auto{margin-right:auto!important}.mb-xl-auto,.my-xl-auto{margin-bottom:auto!important}.ml-xl-auto,.mx-xl-auto{margin-left:auto!important}}.stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;pointer-events:auto;content:"";background-color:rgba(0,0,0,0)}.text-monospace{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace!important}.text-justify{text-align:justify!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-left{text-align:left!important}.text-right{text-align:right!important}.text-center{text-align:center!important}@media (min-width:576px){.text-sm-left{text-align:left!important}.text-sm-right{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.text-md-left{text-align:left!important}.text-md-right{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.text-lg-left{text-align:left!important}.text-lg-right{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.text-xl-left{text-align:left!important}.text-xl-right{text-align:right!important}.text-xl-center{text-align:center!important}}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.font-weight-light{font-weight:300!important}.font-weight-lighter{font-weight:lighter!important}.font-weight-normal{font-weight:400!important}.font-weight-bold{font-weight:700!important}.font-weight-bolder{font-weight:bolder!important}.font-italic{font-style:italic!important}.text-white{color:#fff!important}.text-primary{color:#007bff!important}a.text-primary:focus,a.text-primary:hover{color:#0056b3!important}.text-secondary{color:#6c757d!important}a.text-secondary:focus,a.text-secondary:hover{color:#494f54!important}.text-success{color:#28a745!important}a.text-success:focus,a.text-success:hover{color:#19692c!important}.text-info{color:#17a2b8!important}a.text-info:focus,a.text-info:hover{color:#0f6674!important}.text-warning{color:#ffc107!important}a.text-warning:focus,a.text-warning:hover{color:#ba8b00!important}.text-danger{color:#dc3545!important}a.text-danger:focus,a.text-danger:hover{color:#a71d2a!important}.text-light{color:#f8f9fa!important}a.text-light:focus,a.text-light:hover{color:#cbd3da!important}.text-dark{color:#343a40!important}a.text-dark:focus,a.text-dark:hover{color:#121416!important}.text-body{color:#212529!important}.text-muted{color:#6c757d!important}.text-black-50{color:rgba(0,0,0,.5)!important}.text-white-50{color:rgba(255,255,255,.5)!important}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.text-decoration-none{text-decoration:none!important}.text-break{word-break:break-word!important;word-wrap:break-word!important}.text-reset{color:inherit!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}@media print{*,::after,::before{text-shadow:none!important;box-shadow:none!important}a:not(.btn){text-decoration:underline}abbr[title]::after{content:" (" attr(title) ")"}pre{white-space:pre-wrap!important}blockquote,pre{border:1px solid #adb5bd;page-break-inside:avoid}img,tr{page-break-inside:avoid}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}@page{size:a3}body{min-width:992px!important}.container{min-width:992px!important}.navbar{display:none}.badge{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #dee2e6!important}.table-dark{color:inherit}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#dee2e6}.table .thead-dark th{color:inherit;border-color:#dee2e6}} +/*# sourceMappingURL=bootstrap.min.css.map */ \ No newline at end of file diff --git a/docs/.clay_files/html-default1.js b/docs/.clay_files/html-default1.js new file mode 100644 index 0000000..c4c6022 --- /dev/null +++ b/docs/.clay_files/html-default1.js @@ -0,0 +1,2 @@ +/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"
    ","
    "],col:[2,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="
    ",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0",options:{classes:{},disabled:!1,create:null},_createWidget:function(t,e){e=V(e||this.defaultElement||this)[0],this.element=V(e),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=V(),this.hoverable=V(),this.focusable=V(),this.classesElementLookup={},e!==this&&(V.data(e,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===e&&this.destroy()}}),this.document=V(e.style?e.ownerDocument:e.document||e),this.window=V(this.document[0].defaultView||this.document[0].parentWindow)),this.options=V.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:V.noop,_create:V.noop,_init:V.noop,destroy:function(){var i=this;this._destroy(),V.each(this.classesElementLookup,function(t,e){i._removeClass(e,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:V.noop,widget:function(){return this.element},option:function(t,e){var i,s,n,o=t;if(0===arguments.length)return V.widget.extend({},this.options);if("string"==typeof t)if(o={},t=(i=t.split(".")).shift(),i.length){for(s=o[t]=V.widget.extend({},this.options[t]),n=0;n
    "),i=e.children()[0];return V("body").append(e),t=i.offsetWidth,e.css("overflow","scroll"),t===(i=i.offsetWidth)&&(i=e[0].clientWidth),e.remove(),s=t-i},getScrollInfo:function(t){var e=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),i=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),e="scroll"===e||"auto"===e&&t.widthx(k(s),k(n))?o.important="horizontal":o.important="vertical",u.using.call(this,t,o)}),a.offset(V.extend(h,{using:t}))})},V.ui.position={fit:{left:function(t,e){var i=e.within,s=i.isWindow?i.scrollLeft:i.offset.left,n=i.width,o=t.left-e.collisionPosition.marginLeft,a=s-o,r=o+e.collisionWidth-n-s;e.collisionWidth>n?0n?0")[0],w=d.each;function P(t){return null==t?t+"":"object"==typeof t?p[e.call(t)]||"object":typeof t}function M(t,e,i){var s=v[e.type]||{};return null==t?i||!e.def?null:e.def:(t=s.floor?~~t:parseFloat(t),isNaN(t)?e.def:s.mod?(t+s.mod)%s.mod:Math.min(s.max,Math.max(0,t)))}function S(s){var n=m(),o=n._rgba=[];return s=s.toLowerCase(),w(g,function(t,e){var i=e.re.exec(s),i=i&&e.parse(i),e=e.space||"rgba";if(i)return i=n[e](i),n[_[e].cache]=i[_[e].cache],o=n._rgba=i._rgba,!1}),o.length?("0,0,0,0"===o.join()&&d.extend(o,B.transparent),n):B[s]}function H(t,e,i){return 6*(i=(i+1)%1)<1?t+(e-t)*i*6:2*i<1?e:3*i<2?t+(e-t)*(2/3-i)*6:t}y.style.cssText="background-color:rgba(1,1,1,.5)",b.rgba=-1o.mod/2?s+=o.mod:s-n>o.mod/2&&(s-=o.mod)),l[i]=M((n-s)*a+s,e)))}),this[e](l)},blend:function(t){if(1===this._rgba[3])return this;var e=this._rgba.slice(),i=e.pop(),s=m(t)._rgba;return m(d.map(e,function(t,e){return(1-i)*s[e]+i*t}))},toRgbaString:function(){var t="rgba(",e=d.map(this._rgba,function(t,e){return null!=t?t:2
    ").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}),e={width:i.width(),height:i.height()},n=document.activeElement;try{n.id}catch(t){n=document.body}return i.wrap(t),i[0]!==n&&!V.contains(i[0],n)||V(n).trigger("focus"),t=i.parent(),"static"===i.css("position")?(t.css({position:"relative"}),i.css({position:"relative"})):(V.extend(s,{position:i.css("position"),zIndex:i.css("z-index")}),V.each(["top","left","bottom","right"],function(t,e){s[e]=i.css(e),isNaN(parseInt(s[e],10))&&(s[e]="auto")}),i.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})),i.css(e),t.css(s).show()},removeWrapper:function(t){var e=document.activeElement;return t.parent().is(".ui-effects-wrapper")&&(t.parent().replaceWith(t),t[0]!==e&&!V.contains(t[0],e)||V(e).trigger("focus")),t}}),V.extend(V.effects,{version:"1.13.1",define:function(t,e,i){return i||(i=e,e="effect"),V.effects.effect[t]=i,V.effects.effect[t].mode=e,i},scaledDimensions:function(t,e,i){if(0===e)return{height:0,width:0,outerHeight:0,outerWidth:0};var s="horizontal"!==i?(e||100)/100:1,e="vertical"!==i?(e||100)/100:1;return{height:t.height()*e,width:t.width()*s,outerHeight:t.outerHeight()*e,outerWidth:t.outerWidth()*s}},clipToBox:function(t){return{width:t.clip.right-t.clip.left,height:t.clip.bottom-t.clip.top,left:t.clip.left,top:t.clip.top}},unshift:function(t,e,i){var s=t.queue();1").insertAfter(t).css({display:/^(inline|ruby)/.test(t.css("display"))?"inline-block":"block",visibility:"hidden",marginTop:t.css("marginTop"),marginBottom:t.css("marginBottom"),marginLeft:t.css("marginLeft"),marginRight:t.css("marginRight"),float:t.css("float")}).outerWidth(t.outerWidth()).outerHeight(t.outerHeight()).addClass("ui-effects-placeholder"),t.data(j+"placeholder",e)),t.css({position:i,left:s.left,top:s.top}),e},removePlaceholder:function(t){var e=j+"placeholder",i=t.data(e);i&&(i.remove(),t.removeData(e))},cleanUp:function(t){V.effects.restoreStyle(t),V.effects.removePlaceholder(t)},setTransition:function(s,t,n,o){return o=o||{},V.each(t,function(t,e){var i=s.cssUnit(e);0
    ");l.appendTo("body").addClass(t.className).css({top:s.top-a,left:s.left-r,height:i.innerHeight(),width:i.innerWidth(),position:n?"fixed":"absolute"}).animate(o,t.duration,t.easing,function(){l.remove(),"function"==typeof e&&e()})}}),V.fx.step.clip=function(t){t.clipInit||(t.start=V(t.elem).cssClip(),"string"==typeof t.end&&(t.end=G(t.end,t.elem)),t.clipInit=!0),V(t.elem).cssClip({top:t.pos*(t.end.top-t.start.top)+t.start.top,right:t.pos*(t.end.right-t.start.right)+t.start.right,bottom:t.pos*(t.end.bottom-t.start.bottom)+t.start.bottom,left:t.pos*(t.end.left-t.start.left)+t.start.left})},Y={},V.each(["Quad","Cubic","Quart","Quint","Expo"],function(e,t){Y[t]=function(t){return Math.pow(t,e+2)}}),V.extend(Y,{Sine:function(t){return 1-Math.cos(t*Math.PI/2)},Circ:function(t){return 1-Math.sqrt(1-t*t)},Elastic:function(t){return 0===t||1===t?t:-Math.pow(2,8*(t-1))*Math.sin((80*(t-1)-7.5)*Math.PI/15)},Back:function(t){return t*t*(3*t-2)},Bounce:function(t){for(var e,i=4;t<((e=Math.pow(2,--i))-1)/11;);return 1/Math.pow(4,3-i)-7.5625*Math.pow((3*e-2)/22-t,2)}}),V.each(Y,function(t,e){V.easing["easeIn"+t]=e,V.easing["easeOut"+t]=function(t){return 1-e(1-t)},V.easing["easeInOut"+t]=function(t){return t<.5?e(2*t)/2:1-e(-2*t+2)/2}});y=V.effects,V.effects.define("blind","hide",function(t,e){var i={up:["bottom","top"],vertical:["bottom","top"],down:["top","bottom"],left:["right","left"],horizontal:["right","left"],right:["left","right"]},s=V(this),n=t.direction||"up",o=s.cssClip(),a={clip:V.extend({},o)},r=V.effects.createPlaceholder(s);a.clip[i[n][0]]=a.clip[i[n][1]],"show"===t.mode&&(s.cssClip(a.clip),r&&r.css(V.effects.clipToBox(a)),a.clip=o),r&&r.animate(V.effects.clipToBox(a),t.duration,t.easing),s.animate(a,{queue:!1,duration:t.duration,easing:t.easing,complete:e})}),V.effects.define("bounce",function(t,e){var i,s,n=V(this),o=t.mode,a="hide"===o,r="show"===o,l=t.direction||"up",h=t.distance,c=t.times||5,o=2*c+(r||a?1:0),u=t.duration/o,d=t.easing,p="up"===l||"down"===l?"top":"left",f="up"===l||"left"===l,g=0,t=n.queue().length;for(V.effects.createPlaceholder(n),l=n.css(p),h=h||n["top"==p?"outerHeight":"outerWidth"]()/3,r&&((s={opacity:1})[p]=l,n.css("opacity",0).css(p,f?2*-h:2*h).animate(s,u,d)),a&&(h/=Math.pow(2,c-1)),(s={})[p]=l;g
    ").css({position:"absolute",visibility:"visible",left:-s*p,top:-i*f}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:p,height:f,left:n+(u?a*p:0),top:o+(u?r*f:0),opacity:u?0:1}).animate({left:n+(u?0:a*p),top:o+(u?0:r*f),opacity:u?1:0},t.duration||500,t.easing,m)}),V.effects.define("fade","toggle",function(t,e){var i="show"===t.mode;V(this).css("opacity",i?0:1).animate({opacity:i?1:0},{queue:!1,duration:t.duration,easing:t.easing,complete:e})}),V.effects.define("fold","hide",function(e,t){var i=V(this),s=e.mode,n="show"===s,o="hide"===s,a=e.size||15,r=/([0-9]+)%/.exec(a),l=!!e.horizFirst?["right","bottom"]:["bottom","right"],h=e.duration/2,c=V.effects.createPlaceholder(i),u=i.cssClip(),d={clip:V.extend({},u)},p={clip:V.extend({},u)},f=[u[l[0]],u[l[1]]],s=i.queue().length;r&&(a=parseInt(r[1],10)/100*f[o?0:1]),d.clip[l[0]]=a,p.clip[l[0]]=a,p.clip[l[1]]=0,n&&(i.cssClip(p.clip),c&&c.css(V.effects.clipToBox(p)),p.clip=u),i.queue(function(t){c&&c.animate(V.effects.clipToBox(d),h,e.easing).animate(V.effects.clipToBox(p),h,e.easing),t()}).animate(d,h,e.easing).animate(p,h,e.easing).queue(t),V.effects.unshift(i,s,4)}),V.effects.define("highlight","show",function(t,e){var i=V(this),s={backgroundColor:i.css("backgroundColor")};"hide"===t.mode&&(s.opacity=0),V.effects.saveStyle(i),i.css({backgroundImage:"none",backgroundColor:t.color||"#ffff99"}).animate(s,{queue:!1,duration:t.duration,easing:t.easing,complete:e})}),V.effects.define("size",function(s,e){var n,i=V(this),t=["fontSize"],o=["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"],a=["borderLeftWidth","borderRightWidth","paddingLeft","paddingRight"],r=s.mode,l="effect"!==r,h=s.scale||"both",c=s.origin||["middle","center"],u=i.css("position"),d=i.position(),p=V.effects.scaledDimensions(i),f=s.from||p,g=s.to||V.effects.scaledDimensions(i,0);V.effects.createPlaceholder(i),"show"===r&&(r=f,f=g,g=r),n={from:{y:f.height/p.height,x:f.width/p.width},to:{y:g.height/p.height,x:g.width/p.width}},"box"!==h&&"both"!==h||(n.from.y!==n.to.y&&(f=V.effects.setTransition(i,o,n.from.y,f),g=V.effects.setTransition(i,o,n.to.y,g)),n.from.x!==n.to.x&&(f=V.effects.setTransition(i,a,n.from.x,f),g=V.effects.setTransition(i,a,n.to.x,g))),"content"!==h&&"both"!==h||n.from.y!==n.to.y&&(f=V.effects.setTransition(i,t,n.from.y,f),g=V.effects.setTransition(i,t,n.to.y,g)),c&&(c=V.effects.getBaseline(c,p),f.top=(p.outerHeight-f.outerHeight)*c.y+d.top,f.left=(p.outerWidth-f.outerWidth)*c.x+d.left,g.top=(p.outerHeight-g.outerHeight)*c.y+d.top,g.left=(p.outerWidth-g.outerWidth)*c.x+d.left),delete f.outerHeight,delete f.outerWidth,i.css(f),"content"!==h&&"both"!==h||(o=o.concat(["marginTop","marginBottom"]).concat(t),a=a.concat(["marginLeft","marginRight"]),i.find("*[width]").each(function(){var t=V(this),e=V.effects.scaledDimensions(t),i={height:e.height*n.from.y,width:e.width*n.from.x,outerHeight:e.outerHeight*n.from.y,outerWidth:e.outerWidth*n.from.x},e={height:e.height*n.to.y,width:e.width*n.to.x,outerHeight:e.height*n.to.y,outerWidth:e.width*n.to.x};n.from.y!==n.to.y&&(i=V.effects.setTransition(t,o,n.from.y,i),e=V.effects.setTransition(t,o,n.to.y,e)),n.from.x!==n.to.x&&(i=V.effects.setTransition(t,a,n.from.x,i),e=V.effects.setTransition(t,a,n.to.x,e)),l&&V.effects.saveStyle(t),t.css(i),t.animate(e,s.duration,s.easing,function(){l&&V.effects.restoreStyle(t)})})),i.animate(g,{queue:!1,duration:s.duration,easing:s.easing,complete:function(){var t=i.offset();0===g.opacity&&i.css("opacity",f.opacity),l||(i.css("position","static"===u?"relative":u).offset(t),V.effects.saveStyle(i)),e()}})}),V.effects.define("scale",function(t,e){var i=V(this),s=t.mode,s=parseInt(t.percent,10)||(0===parseInt(t.percent,10)||"effect"!==s?0:100),s=V.extend(!0,{from:V.effects.scaledDimensions(i),to:V.effects.scaledDimensions(i,s,t.direction||"both"),origin:t.origin||["middle","center"]},t);t.fade&&(s.from.opacity=1,s.to.opacity=0),V.effects.effect.size.call(this,s,e)}),V.effects.define("puff","hide",function(t,e){t=V.extend(!0,{},t,{fade:!0,percent:parseInt(t.percent,10)||150});V.effects.effect.scale.call(this,t,e)}),V.effects.define("pulsate","show",function(t,e){var i=V(this),s=t.mode,n="show"===s,o=2*(t.times||5)+(n||"hide"===s?1:0),a=t.duration/o,r=0,l=1,s=i.queue().length;for(!n&&i.is(":visible")||(i.css("opacity",0).show(),r=1);l li > :first-child").add(t.find("> :not(li)").even())},heightStyle:"auto",icons:{activeHeader:"ui-icon-triangle-1-s",header:"ui-icon-triangle-1-e"},activate:null,beforeActivate:null},hideProps:{borderTopWidth:"hide",borderBottomWidth:"hide",paddingTop:"hide",paddingBottom:"hide",height:"hide"},showProps:{borderTopWidth:"show",borderBottomWidth:"show",paddingTop:"show",paddingBottom:"show",height:"show"},_create:function(){var t=this.options;this.prevShow=this.prevHide=V(),this._addClass("ui-accordion","ui-widget ui-helper-reset"),this.element.attr("role","tablist"),t.collapsible||!1!==t.active&&null!=t.active||(t.active=0),this._processPanels(),t.active<0&&(t.active+=this.headers.length),this._refresh()},_getCreateEventData:function(){return{header:this.active,panel:this.active.length?this.active.next():V()}},_createIcons:function(){var t,e=this.options.icons;e&&(t=V(""),this._addClass(t,"ui-accordion-header-icon","ui-icon "+e.header),t.prependTo(this.headers),t=this.active.children(".ui-accordion-header-icon"),this._removeClass(t,e.header)._addClass(t,null,e.activeHeader)._addClass(this.headers,"ui-accordion-icons"))},_destroyIcons:function(){this._removeClass(this.headers,"ui-accordion-icons"),this.headers.children(".ui-accordion-header-icon").remove()},_destroy:function(){var t;this.element.removeAttr("role"),this.headers.removeAttr("role aria-expanded aria-selected aria-controls tabIndex").removeUniqueId(),this._destroyIcons(),t=this.headers.next().css("display","").removeAttr("role aria-hidden aria-labelledby").removeUniqueId(),"content"!==this.options.heightStyle&&t.css("height","")},_setOption:function(t,e){"active"!==t?("event"===t&&(this.options.event&&this._off(this.headers,this.options.event),this._setupEvents(e)),this._super(t,e),"collapsible"!==t||e||!1!==this.options.active||this._activate(0),"icons"===t&&(this._destroyIcons(),e&&this._createIcons())):this._activate(e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",t),this._toggleClass(null,"ui-state-disabled",!!t),this._toggleClass(this.headers.add(this.headers.next()),null,"ui-state-disabled",!!t)},_keydown:function(t){if(!t.altKey&&!t.ctrlKey){var e=V.ui.keyCode,i=this.headers.length,s=this.headers.index(t.target),n=!1;switch(t.keyCode){case e.RIGHT:case e.DOWN:n=this.headers[(s+1)%i];break;case e.LEFT:case e.UP:n=this.headers[(s-1+i)%i];break;case e.SPACE:case e.ENTER:this._eventHandler(t);break;case e.HOME:n=this.headers[0];break;case e.END:n=this.headers[i-1]}n&&(V(t.target).attr("tabIndex",-1),V(n).attr("tabIndex",0),V(n).trigger("focus"),t.preventDefault())}},_panelKeyDown:function(t){t.keyCode===V.ui.keyCode.UP&&t.ctrlKey&&V(t.currentTarget).prev().trigger("focus")},refresh:function(){var t=this.options;this._processPanels(),!1===t.active&&!0===t.collapsible||!this.headers.length?(t.active=!1,this.active=V()):!1===t.active?this._activate(0):this.active.length&&!V.contains(this.element[0],this.active[0])?this.headers.length===this.headers.find(".ui-state-disabled").length?(t.active=!1,this.active=V()):this._activate(Math.max(0,t.active-1)):t.active=this.headers.index(this.active),this._destroyIcons(),this._refresh()},_processPanels:function(){var t=this.headers,e=this.panels;"function"==typeof this.options.header?this.headers=this.options.header(this.element):this.headers=this.element.find(this.options.header),this._addClass(this.headers,"ui-accordion-header ui-accordion-header-collapsed","ui-state-default"),this.panels=this.headers.next().filter(":not(.ui-accordion-content-active)").hide(),this._addClass(this.panels,"ui-accordion-content","ui-helper-reset ui-widget-content"),e&&(this._off(t.not(this.headers)),this._off(e.not(this.panels)))},_refresh:function(){var i,t=this.options,e=t.heightStyle,s=this.element.parent();this.active=this._findActive(t.active),this._addClass(this.active,"ui-accordion-header-active","ui-state-active")._removeClass(this.active,"ui-accordion-header-collapsed"),this._addClass(this.active.next(),"ui-accordion-content-active"),this.active.next().show(),this.headers.attr("role","tab").each(function(){var t=V(this),e=t.uniqueId().attr("id"),i=t.next(),s=i.uniqueId().attr("id");t.attr("aria-controls",s),i.attr("aria-labelledby",e)}).next().attr("role","tabpanel"),this.headers.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}).next().attr({"aria-hidden":"true"}).hide(),this.active.length?this.active.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}).next().attr({"aria-hidden":"false"}):this.headers.eq(0).attr("tabIndex",0),this._createIcons(),this._setupEvents(t.event),"fill"===e?(i=s.height(),this.element.siblings(":visible").each(function(){var t=V(this),e=t.css("position");"absolute"!==e&&"fixed"!==e&&(i-=t.outerHeight(!0))}),this.headers.each(function(){i-=V(this).outerHeight(!0)}),this.headers.next().each(function(){V(this).height(Math.max(0,i-V(this).innerHeight()+V(this).height()))}).css("overflow","auto")):"auto"===e&&(i=0,this.headers.next().each(function(){var t=V(this).is(":visible");t||V(this).show(),i=Math.max(i,V(this).css("height","").height()),t||V(this).hide()}).height(i))},_activate:function(t){t=this._findActive(t)[0];t!==this.active[0]&&(t=t||this.active[0],this._eventHandler({target:t,currentTarget:t,preventDefault:V.noop}))},_findActive:function(t){return"number"==typeof t?this.headers.eq(t):V()},_setupEvents:function(t){var i={keydown:"_keydown"};t&&V.each(t.split(" "),function(t,e){i[e]="_eventHandler"}),this._off(this.headers.add(this.headers.next())),this._on(this.headers,i),this._on(this.headers.next(),{keydown:"_panelKeyDown"}),this._hoverable(this.headers),this._focusable(this.headers)},_eventHandler:function(t){var e=this.options,i=this.active,s=V(t.currentTarget),n=s[0]===i[0],o=n&&e.collapsible,a=o?V():s.next(),r=i.next(),a={oldHeader:i,oldPanel:r,newHeader:o?V():s,newPanel:a};t.preventDefault(),n&&!e.collapsible||!1===this._trigger("beforeActivate",t,a)||(e.active=!o&&this.headers.index(s),this.active=n?V():s,this._toggle(a),this._removeClass(i,"ui-accordion-header-active","ui-state-active"),e.icons&&(i=i.children(".ui-accordion-header-icon"),this._removeClass(i,null,e.icons.activeHeader)._addClass(i,null,e.icons.header)),n||(this._removeClass(s,"ui-accordion-header-collapsed")._addClass(s,"ui-accordion-header-active","ui-state-active"),e.icons&&(n=s.children(".ui-accordion-header-icon"),this._removeClass(n,null,e.icons.header)._addClass(n,null,e.icons.activeHeader)),this._addClass(s.next(),"ui-accordion-content-active")))},_toggle:function(t){var e=t.newPanel,i=this.prevShow.length?this.prevShow:t.oldPanel;this.prevShow.add(this.prevHide).stop(!0,!0),this.prevShow=e,this.prevHide=i,this.options.animate?this._animate(e,i,t):(i.hide(),e.show(),this._toggleComplete(t)),i.attr({"aria-hidden":"true"}),i.prev().attr({"aria-selected":"false","aria-expanded":"false"}),e.length&&i.length?i.prev().attr({tabIndex:-1,"aria-expanded":"false"}):e.length&&this.headers.filter(function(){return 0===parseInt(V(this).attr("tabIndex"),10)}).attr("tabIndex",-1),e.attr("aria-hidden","false").prev().attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_animate:function(t,i,e){var s,n,o,a=this,r=0,l=t.css("box-sizing"),h=t.length&&(!i.length||t.index()",delay:300,options:{icons:{submenu:"ui-icon-caret-1-e"},items:"> *",menus:"ul",position:{my:"left top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.lastMousePosition={x:null,y:null},this.element.uniqueId().attr({role:this.options.role,tabIndex:0}),this._addClass("ui-menu","ui-widget ui-widget-content"),this._on({"mousedown .ui-menu-item":function(t){t.preventDefault(),this._activateItem(t)},"click .ui-menu-item":function(t){var e=V(t.target),i=V(V.ui.safeActiveElement(this.document[0]));!this.mouseHandled&&e.not(".ui-state-disabled").length&&(this.select(t),t.isPropagationStopped()||(this.mouseHandled=!0),e.has(".ui-menu").length?this.expand(t):!this.element.is(":focus")&&i.closest(".ui-menu").length&&(this.element.trigger("focus",[!0]),this.active&&1===this.active.parents(".ui-menu").length&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":"_activateItem","mousemove .ui-menu-item":"_activateItem",mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(t,e){var i=this.active||this._menuItems().first();e||this.focus(t,i)},blur:function(t){this._delay(function(){V.contains(this.element[0],V.ui.safeActiveElement(this.document[0]))||this.collapseAll(t)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(t){this._closeOnDocumentClick(t)&&this.collapseAll(t,!0),this.mouseHandled=!1}})},_activateItem:function(t){var e,i;this.previousFilter||t.clientX===this.lastMousePosition.x&&t.clientY===this.lastMousePosition.y||(this.lastMousePosition={x:t.clientX,y:t.clientY},e=V(t.target).closest(".ui-menu-item"),i=V(t.currentTarget),e[0]===i[0]&&(i.is(".ui-state-active")||(this._removeClass(i.siblings().children(".ui-state-active"),null,"ui-state-active"),this.focus(t,i))))},_destroy:function(){var t=this.element.find(".ui-menu-item").removeAttr("role aria-disabled").children(".ui-menu-item-wrapper").removeUniqueId().removeAttr("tabIndex role aria-haspopup");this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeAttr("role aria-labelledby aria-expanded aria-hidden aria-disabled tabIndex").removeUniqueId().show(),t.children().each(function(){var t=V(this);t.data("ui-menu-submenu-caret")&&t.remove()})},_keydown:function(t){var e,i,s,n=!0;switch(t.keyCode){case V.ui.keyCode.PAGE_UP:this.previousPage(t);break;case V.ui.keyCode.PAGE_DOWN:this.nextPage(t);break;case V.ui.keyCode.HOME:this._move("first","first",t);break;case V.ui.keyCode.END:this._move("last","last",t);break;case V.ui.keyCode.UP:this.previous(t);break;case V.ui.keyCode.DOWN:this.next(t);break;case V.ui.keyCode.LEFT:this.collapse(t);break;case V.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(t);break;case V.ui.keyCode.ENTER:case V.ui.keyCode.SPACE:this._activate(t);break;case V.ui.keyCode.ESCAPE:this.collapse(t);break;default:e=this.previousFilter||"",s=n=!1,i=96<=t.keyCode&&t.keyCode<=105?(t.keyCode-96).toString():String.fromCharCode(t.keyCode),clearTimeout(this.filterTimer),i===e?s=!0:i=e+i,e=this._filterMenuItems(i),(e=s&&-1!==e.index(this.active.next())?this.active.nextAll(".ui-menu-item"):e).length||(i=String.fromCharCode(t.keyCode),e=this._filterMenuItems(i)),e.length?(this.focus(t,e),this.previousFilter=i,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter}n&&t.preventDefault()},_activate:function(t){this.active&&!this.active.is(".ui-state-disabled")&&(this.active.children("[aria-haspopup='true']").length?this.expand(t):this.select(t))},refresh:function(){var t,e,s=this,n=this.options.icons.submenu,i=this.element.find(this.options.menus);this._toggleClass("ui-menu-icons",null,!!this.element.find(".ui-icon").length),e=i.filter(":not(.ui-menu)").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var t=V(this),e=t.prev(),i=V("").data("ui-menu-submenu-caret",!0);s._addClass(i,"ui-menu-icon","ui-icon "+n),e.attr("aria-haspopup","true").prepend(i),t.attr("aria-labelledby",e.attr("id"))}),this._addClass(e,"ui-menu","ui-widget ui-widget-content ui-front"),(t=i.add(this.element).find(this.options.items)).not(".ui-menu-item").each(function(){var t=V(this);s._isDivider(t)&&s._addClass(t,"ui-menu-divider","ui-widget-content")}),i=(e=t.not(".ui-menu-item, .ui-menu-divider")).children().not(".ui-menu").uniqueId().attr({tabIndex:-1,role:this._itemRole()}),this._addClass(e,"ui-menu-item")._addClass(i,"ui-menu-item-wrapper"),t.filter(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!V.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(t,e){var i;"icons"===t&&(i=this.element.find(".ui-menu-icon"),this._removeClass(i,null,this.options.icons.submenu)._addClass(i,null,e.submenu)),this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",String(t)),this._toggleClass(null,"ui-state-disabled",!!t)},focus:function(t,e){var i;this.blur(t,t&&"focus"===t.type),this._scrollIntoView(e),this.active=e.first(),i=this.active.children(".ui-menu-item-wrapper"),this._addClass(i,null,"ui-state-active"),this.options.role&&this.element.attr("aria-activedescendant",i.attr("id")),i=this.active.parent().closest(".ui-menu-item").children(".ui-menu-item-wrapper"),this._addClass(i,null,"ui-state-active"),t&&"keydown"===t.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),(i=e.children(".ui-menu")).length&&t&&/^mouse/.test(t.type)&&this._startOpening(i),this.activeMenu=e.parent(),this._trigger("focus",t,{item:e})},_scrollIntoView:function(t){var e,i,s;this._hasScroll()&&(i=parseFloat(V.css(this.activeMenu[0],"borderTopWidth"))||0,s=parseFloat(V.css(this.activeMenu[0],"paddingTop"))||0,e=t.offset().top-this.activeMenu.offset().top-i-s,i=this.activeMenu.scrollTop(),s=this.activeMenu.height(),t=t.outerHeight(),e<0?this.activeMenu.scrollTop(i+e):s",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},requestIndex:0,pending:0,liveRegionTimer:null,_create:function(){var i,s,n,t=this.element[0].nodeName.toLowerCase(),e="textarea"===t,t="input"===t;this.isMultiLine=e||!t&&this._isContentEditable(this.element),this.valueMethod=this.element[e||t?"val":"text"],this.isNewMenu=!0,this._addClass("ui-autocomplete-input"),this.element.attr("autocomplete","off"),this._on(this.element,{keydown:function(t){if(this.element.prop("readOnly"))s=n=i=!0;else{s=n=i=!1;var e=V.ui.keyCode;switch(t.keyCode){case e.PAGE_UP:i=!0,this._move("previousPage",t);break;case e.PAGE_DOWN:i=!0,this._move("nextPage",t);break;case e.UP:i=!0,this._keyEvent("previous",t);break;case e.DOWN:i=!0,this._keyEvent("next",t);break;case e.ENTER:this.menu.active&&(i=!0,t.preventDefault(),this.menu.select(t));break;case e.TAB:this.menu.active&&this.menu.select(t);break;case e.ESCAPE:this.menu.element.is(":visible")&&(this.isMultiLine||this._value(this.term),this.close(t),t.preventDefault());break;default:s=!0,this._searchTimeout(t)}}},keypress:function(t){if(i)return i=!1,void(this.isMultiLine&&!this.menu.element.is(":visible")||t.preventDefault());if(!s){var e=V.ui.keyCode;switch(t.keyCode){case e.PAGE_UP:this._move("previousPage",t);break;case e.PAGE_DOWN:this._move("nextPage",t);break;case e.UP:this._keyEvent("previous",t);break;case e.DOWN:this._keyEvent("next",t)}}},input:function(t){if(n)return n=!1,void t.preventDefault();this._searchTimeout(t)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(t){clearTimeout(this.searching),this.close(t),this._change(t)}}),this._initSource(),this.menu=V("
      ").appendTo(this._appendTo()).menu({role:null}).hide().attr({unselectable:"on"}).menu("instance"),this._addClass(this.menu.element,"ui-autocomplete","ui-front"),this._on(this.menu.element,{mousedown:function(t){t.preventDefault()},menufocus:function(t,e){var i,s;if(this.isNewMenu&&(this.isNewMenu=!1,t.originalEvent&&/^mouse/.test(t.originalEvent.type)))return this.menu.blur(),void this.document.one("mousemove",function(){V(t.target).trigger(t.originalEvent)});s=e.item.data("ui-autocomplete-item"),!1!==this._trigger("focus",t,{item:s})&&t.originalEvent&&/^key/.test(t.originalEvent.type)&&this._value(s.value),(i=e.item.attr("aria-label")||s.value)&&String.prototype.trim.call(i).length&&(clearTimeout(this.liveRegionTimer),this.liveRegionTimer=this._delay(function(){this.liveRegion.html(V("
      ").text(i))},100))},menuselect:function(t,e){var i=e.item.data("ui-autocomplete-item"),s=this.previous;this.element[0]!==V.ui.safeActiveElement(this.document[0])&&(this.element.trigger("focus"),this.previous=s,this._delay(function(){this.previous=s,this.selectedItem=i})),!1!==this._trigger("select",t,{item:i})&&this._value(i.value),this.term=this._value(),this.close(t),this.selectedItem=i}}),this.liveRegion=V("
      ",{role:"status","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(t,e){this._super(t,e),"source"===t&&this._initSource(),"appendTo"===t&&this.menu.element.appendTo(this._appendTo()),"disabled"===t&&e&&this.xhr&&this.xhr.abort()},_isEventTargetInWidget:function(t){var e=this.menu.element[0];return t.target===this.element[0]||t.target===e||V.contains(e,t.target)},_closeOnClickOutside:function(t){this._isEventTargetInWidget(t)||this.close()},_appendTo:function(){var t=this.options.appendTo;return t=!(t=!(t=t&&(t.jquery||t.nodeType?V(t):this.document.find(t).eq(0)))||!t[0]?this.element.closest(".ui-front, dialog"):t).length?this.document[0].body:t},_initSource:function(){var i,s,n=this;Array.isArray(this.options.source)?(i=this.options.source,this.source=function(t,e){e(V.ui.autocomplete.filter(i,t.term))}):"string"==typeof this.options.source?(s=this.options.source,this.source=function(t,e){n.xhr&&n.xhr.abort(),n.xhr=V.ajax({url:s,data:t,dataType:"json",success:function(t){e(t)},error:function(){e([])}})}):this.source=this.options.source},_searchTimeout:function(s){clearTimeout(this.searching),this.searching=this._delay(function(){var t=this.term===this._value(),e=this.menu.element.is(":visible"),i=s.altKey||s.ctrlKey||s.metaKey||s.shiftKey;t&&(e||i)||(this.selectedItem=null,this.search(null,s))},this.options.delay)},search:function(t,e){return t=null!=t?t:this._value(),this.term=this._value(),t.length").append(V("
      ").text(e.label)).appendTo(t)},_move:function(t,e){if(this.menu.element.is(":visible"))return this.menu.isFirstItem()&&/^previous/.test(t)||this.menu.isLastItem()&&/^next/.test(t)?(this.isMultiLine||this._value(this.term),void this.menu.blur()):void this.menu[t](e);this.search(null,e)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(t,e){this.isMultiLine&&!this.menu.element.is(":visible")||(this._move(t,e),e.preventDefault())},_isContentEditable:function(t){if(!t.length)return!1;var e=t.prop("contentEditable");return"inherit"===e?this._isContentEditable(t.parent()):"true"===e}}),V.extend(V.ui.autocomplete,{escapeRegex:function(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(t,e){var i=new RegExp(V.ui.autocomplete.escapeRegex(e),"i");return V.grep(t,function(t){return i.test(t.label||t.value||t)})}}),V.widget("ui.autocomplete",V.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(t){return t+(1").text(e))},100))}});V.ui.autocomplete;var tt=/ui-corner-([a-z]){2,6}/g;V.widget("ui.controlgroup",{version:"1.13.1",defaultElement:"
      ",options:{direction:"horizontal",disabled:null,onlyVisible:!0,items:{button:"input[type=button], input[type=submit], input[type=reset], button, a",controlgroupLabel:".ui-controlgroup-label",checkboxradio:"input[type='checkbox'], input[type='radio']",selectmenu:"select",spinner:".ui-spinner-input"}},_create:function(){this._enhance()},_enhance:function(){this.element.attr("role","toolbar"),this.refresh()},_destroy:function(){this._callChildMethod("destroy"),this.childWidgets.removeData("ui-controlgroup-data"),this.element.removeAttr("role"),this.options.items.controlgroupLabel&&this.element.find(this.options.items.controlgroupLabel).find(".ui-controlgroup-label-contents").contents().unwrap()},_initWidgets:function(){var o=this,a=[];V.each(this.options.items,function(s,t){var e,n={};if(t)return"controlgroupLabel"===s?((e=o.element.find(t)).each(function(){var t=V(this);t.children(".ui-controlgroup-label-contents").length||t.contents().wrapAll("")}),o._addClass(e,null,"ui-widget ui-widget-content ui-state-default"),void(a=a.concat(e.get()))):void(V.fn[s]&&(n=o["_"+s+"Options"]?o["_"+s+"Options"]("middle"):{classes:{}},o.element.find(t).each(function(){var t=V(this),e=t[s]("instance"),i=V.widget.extend({},n);"button"===s&&t.parent(".ui-spinner").length||((e=e||t[s]()[s]("instance"))&&(i.classes=o._resolveClassesValues(i.classes,e)),t[s](i),i=t[s]("widget"),V.data(i[0],"ui-controlgroup-data",e||t[s]("instance")),a.push(i[0]))})))}),this.childWidgets=V(V.uniqueSort(a)),this._addClass(this.childWidgets,"ui-controlgroup-item")},_callChildMethod:function(e){this.childWidgets.each(function(){var t=V(this).data("ui-controlgroup-data");t&&t[e]&&t[e]()})},_updateCornerClass:function(t,e){e=this._buildSimpleOptions(e,"label").classes.label;this._removeClass(t,null,"ui-corner-top ui-corner-bottom ui-corner-left ui-corner-right ui-corner-all"),this._addClass(t,null,e)},_buildSimpleOptions:function(t,e){var i="vertical"===this.options.direction,s={classes:{}};return s.classes[e]={middle:"",first:"ui-corner-"+(i?"top":"left"),last:"ui-corner-"+(i?"bottom":"right"),only:"ui-corner-all"}[t],s},_spinnerOptions:function(t){t=this._buildSimpleOptions(t,"ui-spinner");return t.classes["ui-spinner-up"]="",t.classes["ui-spinner-down"]="",t},_buttonOptions:function(t){return this._buildSimpleOptions(t,"ui-button")},_checkboxradioOptions:function(t){return this._buildSimpleOptions(t,"ui-checkboxradio-label")},_selectmenuOptions:function(t){var e="vertical"===this.options.direction;return{width:e&&"auto",classes:{middle:{"ui-selectmenu-button-open":"","ui-selectmenu-button-closed":""},first:{"ui-selectmenu-button-open":"ui-corner-"+(e?"top":"tl"),"ui-selectmenu-button-closed":"ui-corner-"+(e?"top":"left")},last:{"ui-selectmenu-button-open":e?"":"ui-corner-tr","ui-selectmenu-button-closed":"ui-corner-"+(e?"bottom":"right")},only:{"ui-selectmenu-button-open":"ui-corner-top","ui-selectmenu-button-closed":"ui-corner-all"}}[t]}},_resolveClassesValues:function(i,s){var n={};return V.each(i,function(t){var e=s.options.classes[t]||"",e=String.prototype.trim.call(e.replace(tt,""));n[t]=(e+" "+i[t]).replace(/\s+/g," ")}),n},_setOption:function(t,e){"direction"===t&&this._removeClass("ui-controlgroup-"+this.options.direction),this._super(t,e),"disabled"!==t?this.refresh():this._callChildMethod(e?"disable":"enable")},refresh:function(){var n,o=this;this._addClass("ui-controlgroup ui-controlgroup-"+this.options.direction),"horizontal"===this.options.direction&&this._addClass(null,"ui-helper-clearfix"),this._initWidgets(),n=this.childWidgets,(n=this.options.onlyVisible?n.filter(":visible"):n).length&&(V.each(["first","last"],function(t,e){var i,s=n[e]().data("ui-controlgroup-data");s&&o["_"+s.widgetName+"Options"]?((i=o["_"+s.widgetName+"Options"](1===n.length?"only":e)).classes=o._resolveClassesValues(i.classes,s),s.element[s.widgetName](i)):o._updateCornerClass(n[e](),e)}),this._callChildMethod("refresh"))}});V.widget("ui.checkboxradio",[V.ui.formResetMixin,{version:"1.13.1",options:{disabled:null,label:null,icon:!0,classes:{"ui-checkboxradio-label":"ui-corner-all","ui-checkboxradio-icon":"ui-corner-all"}},_getCreateOptions:function(){var t,e=this,i=this._super()||{};return this._readType(),t=this.element.labels(),this.label=V(t[t.length-1]),this.label.length||V.error("No label found for checkboxradio widget"),this.originalLabel="",this.label.contents().not(this.element[0]).each(function(){e.originalLabel+=3===this.nodeType?V(this).text():this.outerHTML}),this.originalLabel&&(i.label=this.originalLabel),null!=(t=this.element[0].disabled)&&(i.disabled=t),i},_create:function(){var t=this.element[0].checked;this._bindFormResetHandler(),null==this.options.disabled&&(this.options.disabled=this.element[0].disabled),this._setOption("disabled",this.options.disabled),this._addClass("ui-checkboxradio","ui-helper-hidden-accessible"),this._addClass(this.label,"ui-checkboxradio-label","ui-button ui-widget"),"radio"===this.type&&this._addClass(this.label,"ui-checkboxradio-radio-label"),this.options.label&&this.options.label!==this.originalLabel?this._updateLabel():this.originalLabel&&(this.options.label=this.originalLabel),this._enhance(),t&&this._addClass(this.label,"ui-checkboxradio-checked","ui-state-active"),this._on({change:"_toggleClasses",focus:function(){this._addClass(this.label,null,"ui-state-focus ui-visual-focus")},blur:function(){this._removeClass(this.label,null,"ui-state-focus ui-visual-focus")}})},_readType:function(){var t=this.element[0].nodeName.toLowerCase();this.type=this.element[0].type,"input"===t&&/radio|checkbox/.test(this.type)||V.error("Can't create checkboxradio on element.nodeName="+t+" and element.type="+this.type)},_enhance:function(){this._updateIcon(this.element[0].checked)},widget:function(){return this.label},_getRadioGroup:function(){var t=this.element[0].name,e="input[name='"+V.escapeSelector(t)+"']";return t?(this.form.length?V(this.form[0].elements).filter(e):V(e).filter(function(){return 0===V(this)._form().length})).not(this.element):V([])},_toggleClasses:function(){var t=this.element[0].checked;this._toggleClass(this.label,"ui-checkboxradio-checked","ui-state-active",t),this.options.icon&&"checkbox"===this.type&&this._toggleClass(this.icon,null,"ui-icon-check ui-state-checked",t)._toggleClass(this.icon,null,"ui-icon-blank",!t),"radio"===this.type&&this._getRadioGroup().each(function(){var t=V(this).checkboxradio("instance");t&&t._removeClass(t.label,"ui-checkboxradio-checked","ui-state-active")})},_destroy:function(){this._unbindFormResetHandler(),this.icon&&(this.icon.remove(),this.iconSpace.remove())},_setOption:function(t,e){if("label"!==t||e){if(this._super(t,e),"disabled"===t)return this._toggleClass(this.label,null,"ui-state-disabled",e),void(this.element[0].disabled=e);this.refresh()}},_updateIcon:function(t){var e="ui-icon ui-icon-background ";this.options.icon?(this.icon||(this.icon=V(""),this.iconSpace=V(" "),this._addClass(this.iconSpace,"ui-checkboxradio-icon-space")),"checkbox"===this.type?(e+=t?"ui-icon-check ui-state-checked":"ui-icon-blank",this._removeClass(this.icon,null,t?"ui-icon-blank":"ui-icon-check")):e+="ui-icon-blank",this._addClass(this.icon,"ui-checkboxradio-icon",e),t||this._removeClass(this.icon,null,"ui-icon-check ui-state-checked"),this.icon.prependTo(this.label).after(this.iconSpace)):void 0!==this.icon&&(this.icon.remove(),this.iconSpace.remove(),delete this.icon)},_updateLabel:function(){var t=this.label.contents().not(this.element[0]);this.icon&&(t=t.not(this.icon[0])),(t=this.iconSpace?t.not(this.iconSpace[0]):t).remove(),this.label.append(this.options.label)},refresh:function(){var t=this.element[0].checked,e=this.element[0].disabled;this._updateIcon(t),this._toggleClass(this.label,"ui-checkboxradio-checked","ui-state-active",t),null!==this.options.label&&this._updateLabel(),e!==this.options.disabled&&this._setOptions({disabled:e})}}]);var et;V.ui.checkboxradio;V.widget("ui.button",{version:"1.13.1",defaultElement:"
      "+(0
      ":""):"")}f+=_}return f+=F,t._keyEvent=!1,f},_generateMonthYearHeader:function(t,e,i,s,n,o,a,r){var l,h,c,u,d,p,f=this._get(t,"changeMonth"),g=this._get(t,"changeYear"),m=this._get(t,"showMonthAfterYear"),_=this._get(t,"selectMonthLabel"),v=this._get(t,"selectYearLabel"),b="
      ",y="";if(o||!f)y+=""+a[e]+"";else{for(l=s&&s.getFullYear()===i,h=n&&n.getFullYear()===i,y+=""}if(m||(b+=y+(!o&&f&&g?"":" ")),!t.yearshtml)if(t.yearshtml="",o||!g)b+=""+i+"";else{for(a=this._get(t,"yearRange").split(":"),u=(new Date).getFullYear(),d=(_=function(t){t=t.match(/c[+\-].*/)?i+parseInt(t.substring(1),10):t.match(/[+\-].*/)?u+parseInt(t,10):parseInt(t,10);return isNaN(t)?u:t})(a[0]),p=Math.max(d,_(a[1]||"")),d=s?Math.max(d,s.getFullYear()):d,p=n?Math.min(p,n.getFullYear()):p,t.yearshtml+="",b+=t.yearshtml,t.yearshtml=null}return b+=this._get(t,"yearSuffix"),m&&(b+=(!o&&f&&g?"":" ")+y),b+="
      "},_adjustInstDate:function(t,e,i){var s=t.selectedYear+("Y"===i?e:0),n=t.selectedMonth+("M"===i?e:0),e=Math.min(t.selectedDay,this._getDaysInMonth(s,n))+("D"===i?e:0),e=this._restrictMinMax(t,this._daylightSavingAdjust(new Date(s,n,e)));t.selectedDay=e.getDate(),t.drawMonth=t.selectedMonth=e.getMonth(),t.drawYear=t.selectedYear=e.getFullYear(),"M"!==i&&"Y"!==i||this._notifyChange(t)},_restrictMinMax:function(t,e){var i=this._getMinMaxDate(t,"min"),t=this._getMinMaxDate(t,"max"),e=i&&e=i.getTime())&&(!s||e.getTime()<=s.getTime())&&(!n||e.getFullYear()>=n)&&(!o||e.getFullYear()<=o)},_getFormatConfig:function(t){var e=this._get(t,"shortYearCutoff");return{shortYearCutoff:e="string"!=typeof e?e:(new Date).getFullYear()%100+parseInt(e,10),dayNamesShort:this._get(t,"dayNamesShort"),dayNames:this._get(t,"dayNames"),monthNamesShort:this._get(t,"monthNamesShort"),monthNames:this._get(t,"monthNames")}},_formatDate:function(t,e,i,s){e||(t.currentDay=t.selectedDay,t.currentMonth=t.selectedMonth,t.currentYear=t.selectedYear);e=e?"object"==typeof e?e:this._daylightSavingAdjust(new Date(s,i,e)):this._daylightSavingAdjust(new Date(t.currentYear,t.currentMonth,t.currentDay));return this.formatDate(this._get(t,"dateFormat"),e,this._getFormatConfig(t))}}),V.fn.datepicker=function(t){if(!this.length)return this;V.datepicker.initialized||(V(document).on("mousedown",V.datepicker._checkExternalClick),V.datepicker.initialized=!0),0===V("#"+V.datepicker._mainDivId).length&&V("body").append(V.datepicker.dpDiv);var e=Array.prototype.slice.call(arguments,1);return"string"==typeof t&&("isDisabled"===t||"getDate"===t||"widget"===t)||"option"===t&&2===arguments.length&&"string"==typeof arguments[1]?V.datepicker["_"+t+"Datepicker"].apply(V.datepicker,[this[0]].concat(e)):this.each(function(){"string"==typeof t?V.datepicker["_"+t+"Datepicker"].apply(V.datepicker,[this].concat(e)):V.datepicker._attachDatepicker(this,t)})},V.datepicker=new st,V.datepicker.initialized=!1,V.datepicker.uuid=(new Date).getTime(),V.datepicker.version="1.13.1";V.datepicker,V.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase());var rt=!1;V(document).on("mouseup",function(){rt=!1});V.widget("ui.mouse",{version:"1.13.1",options:{cancel:"input, textarea, button, select, option",distance:1,delay:0},_mouseInit:function(){var e=this;this.element.on("mousedown."+this.widgetName,function(t){return e._mouseDown(t)}).on("click."+this.widgetName,function(t){if(!0===V.data(t.target,e.widgetName+".preventClickEvent"))return V.removeData(t.target,e.widgetName+".preventClickEvent"),t.stopImmediatePropagation(),!1}),this.started=!1},_mouseDestroy:function(){this.element.off("."+this.widgetName),this._mouseMoveDelegate&&this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(t){if(!rt){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(t),this._mouseDownEvent=t;var e=this,i=1===t.which,s=!("string"!=typeof this.options.cancel||!t.target.nodeName)&&V(t.target).closest(this.options.cancel).length;return i&&!s&&this._mouseCapture(t)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){e.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=!1!==this._mouseStart(t),!this._mouseStarted)?(t.preventDefault(),!0):(!0===V.data(t.target,this.widgetName+".preventClickEvent")&&V.removeData(t.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(t){return e._mouseMove(t)},this._mouseUpDelegate=function(t){return e._mouseUp(t)},this.document.on("mousemove."+this.widgetName,this._mouseMoveDelegate).on("mouseup."+this.widgetName,this._mouseUpDelegate),t.preventDefault(),rt=!0)):!0}},_mouseMove:function(t){if(this._mouseMoved){if(V.ui.ie&&(!document.documentMode||document.documentMode<9)&&!t.button)return this._mouseUp(t);if(!t.which)if(t.originalEvent.altKey||t.originalEvent.ctrlKey||t.originalEvent.metaKey||t.originalEvent.shiftKey)this.ignoreMissingWhich=!0;else if(!this.ignoreMissingWhich)return this._mouseUp(t)}return(t.which||t.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(t),t.preventDefault()):(this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=!1!==this._mouseStart(this._mouseDownEvent,t),this._mouseStarted?this._mouseDrag(t):this._mouseUp(t)),!this._mouseStarted)},_mouseUp:function(t){this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,t.target===this._mouseDownEvent.target&&V.data(t.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(t)),this._mouseDelayTimer&&(clearTimeout(this._mouseDelayTimer),delete this._mouseDelayTimer),this.ignoreMissingWhich=!1,rt=!1,t.preventDefault()},_mouseDistanceMet:function(t){return Math.max(Math.abs(this._mouseDownEvent.pageX-t.pageX),Math.abs(this._mouseDownEvent.pageY-t.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),V.ui.plugin={add:function(t,e,i){var s,n=V.ui[t].prototype;for(s in i)n.plugins[s]=n.plugins[s]||[],n.plugins[s].push([e,i[s]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;n").css("position","absolute").appendTo(t.parent()).outerWidth(t.outerWidth()).outerHeight(t.outerHeight()).offset(t.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_blurActiveElement:function(t){var e=V.ui.safeActiveElement(this.document[0]);V(t.target).closest(e).length||V.ui.safeBlur(e)},_mouseStart:function(t){var e=this.options;return this.helper=this._createHelper(t),this._addClass(this.helper,"ui-draggable-dragging"),this._cacheHelperProportions(),V.ui.ddmanager&&(V.ui.ddmanager.current=this),this._cacheMargins(),this.cssPosition=this.helper.css("position"),this.scrollParent=this.helper.scrollParent(!0),this.offsetParent=this.helper.offsetParent(),this.hasFixedAncestor=0i[2]&&(o=i[2]+this.offset.click.left),t.pageY-this.offset.click.top>i[3]&&(a=i[3]+this.offset.click.top)),s.grid&&(t=s.grid[1]?this.originalPageY+Math.round((a-this.originalPageY)/s.grid[1])*s.grid[1]:this.originalPageY,a=!i||t-this.offset.click.top>=i[1]||t-this.offset.click.top>i[3]?t:t-this.offset.click.top>=i[1]?t-s.grid[1]:t+s.grid[1],t=s.grid[0]?this.originalPageX+Math.round((o-this.originalPageX)/s.grid[0])*s.grid[0]:this.originalPageX,o=!i||t-this.offset.click.left>=i[0]||t-this.offset.click.left>i[2]?t:t-this.offset.click.left>=i[0]?t-s.grid[0]:t+s.grid[0]),"y"===s.axis&&(o=this.originalPageX),"x"===s.axis&&(a=this.originalPageY)),{top:a-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.offset.scroll.top:n?0:this.offset.scroll.top),left:o-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.offset.scroll.left:n?0:this.offset.scroll.left)}},_clear:function(){this._removeClass(this.helper,"ui-draggable-dragging"),this.helper[0]===this.element[0]||this.cancelHelperRemoval||this.helper.remove(),this.helper=null,this.cancelHelperRemoval=!1,this.destroyOnClear&&this.destroy()},_trigger:function(t,e,i){return i=i||this._uiHash(),V.ui.plugin.call(this,t,[e,i,this],!0),/^(drag|start|stop)/.test(t)&&(this.positionAbs=this._convertPositionTo("absolute"),i.offset=this.positionAbs),V.Widget.prototype._trigger.call(this,t,e,i)},plugins:{},_uiHash:function(){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}}),V.ui.plugin.add("draggable","connectToSortable",{start:function(e,t,i){var s=V.extend({},t,{item:i.element});i.sortables=[],V(i.options.connectToSortable).each(function(){var t=V(this).sortable("instance");t&&!t.options.disabled&&(i.sortables.push(t),t.refreshPositions(),t._trigger("activate",e,s))})},stop:function(e,t,i){var s=V.extend({},t,{item:i.element});i.cancelHelperRemoval=!1,V.each(i.sortables,function(){var t=this;t.isOver?(t.isOver=0,i.cancelHelperRemoval=!0,t.cancelHelperRemoval=!1,t._storedCSS={position:t.placeholder.css("position"),top:t.placeholder.css("top"),left:t.placeholder.css("left")},t._mouseStop(e),t.options.helper=t.options._helper):(t.cancelHelperRemoval=!0,t._trigger("deactivate",e,s))})},drag:function(i,s,n){V.each(n.sortables,function(){var t=!1,e=this;e.positionAbs=n.positionAbs,e.helperProportions=n.helperProportions,e.offset.click=n.offset.click,e._intersectsWith(e.containerCache)&&(t=!0,V.each(n.sortables,function(){return this.positionAbs=n.positionAbs,this.helperProportions=n.helperProportions,this.offset.click=n.offset.click,t=this!==e&&this._intersectsWith(this.containerCache)&&V.contains(e.element[0],this.element[0])?!1:t})),t?(e.isOver||(e.isOver=1,n._parent=s.helper.parent(),e.currentItem=s.helper.appendTo(e.element).data("ui-sortable-item",!0),e.options._helper=e.options.helper,e.options.helper=function(){return s.helper[0]},i.target=e.currentItem[0],e._mouseCapture(i,!0),e._mouseStart(i,!0,!0),e.offset.click.top=n.offset.click.top,e.offset.click.left=n.offset.click.left,e.offset.parent.left-=n.offset.parent.left-e.offset.parent.left,e.offset.parent.top-=n.offset.parent.top-e.offset.parent.top,n._trigger("toSortable",i),n.dropped=e.element,V.each(n.sortables,function(){this.refreshPositions()}),n.currentItem=n.element,e.fromOutside=n),e.currentItem&&(e._mouseDrag(i),s.position=e.position)):e.isOver&&(e.isOver=0,e.cancelHelperRemoval=!0,e.options._revert=e.options.revert,e.options.revert=!1,e._trigger("out",i,e._uiHash(e)),e._mouseStop(i,!0),e.options.revert=e.options._revert,e.options.helper=e.options._helper,e.placeholder&&e.placeholder.remove(),s.helper.appendTo(n._parent),n._refreshOffsets(i),s.position=n._generatePosition(i,!0),n._trigger("fromSortable",i),n.dropped=!1,V.each(n.sortables,function(){this.refreshPositions()}))})}}),V.ui.plugin.add("draggable","cursor",{start:function(t,e,i){var s=V("body"),i=i.options;s.css("cursor")&&(i._cursor=s.css("cursor")),s.css("cursor",i.cursor)},stop:function(t,e,i){i=i.options;i._cursor&&V("body").css("cursor",i._cursor)}}),V.ui.plugin.add("draggable","opacity",{start:function(t,e,i){e=V(e.helper),i=i.options;e.css("opacity")&&(i._opacity=e.css("opacity")),e.css("opacity",i.opacity)},stop:function(t,e,i){i=i.options;i._opacity&&V(e.helper).css("opacity",i._opacity)}}),V.ui.plugin.add("draggable","scroll",{start:function(t,e,i){i.scrollParentNotHidden||(i.scrollParentNotHidden=i.helper.scrollParent(!1)),i.scrollParentNotHidden[0]!==i.document[0]&&"HTML"!==i.scrollParentNotHidden[0].tagName&&(i.overflowOffset=i.scrollParentNotHidden.offset())},drag:function(t,e,i){var s=i.options,n=!1,o=i.scrollParentNotHidden[0],a=i.document[0];o!==a&&"HTML"!==o.tagName?(s.axis&&"x"===s.axis||(i.overflowOffset.top+o.offsetHeight-t.pageY
      ").css({overflow:"hidden",position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,t={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(t),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(t),this._proportionallyResize()),this._setupHandles(),e.autoHide&&V(this.element).on("mouseenter",function(){e.disabled||(i._removeClass("ui-resizable-autohide"),i._handles.show())}).on("mouseleave",function(){e.disabled||i.resizing||(i._addClass("ui-resizable-autohide"),i._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy(),this._addedHandles.remove();function t(t){V(t).removeData("resizable").removeData("ui-resizable").off(".resizable")}var e;return this.elementIsWrapper&&(t(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),t(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;case"aspectRatio":this._aspectRatio=!!e}},_setupHandles:function(){var t,e,i,s,n,o=this.options,a=this;if(this.handles=o.handles||(V(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=V(),this._addedHandles=V(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),i=this.handles.split(","),this.handles={},e=0;e"),this._addClass(n,"ui-resizable-handle "+s),n.css({zIndex:o.zIndex}),this.handles[t]=".ui-resizable-"+t,this.element.children(this.handles[t]).length||(this.element.append(n),this._addedHandles=this._addedHandles.add(n));this._renderAxis=function(t){var e,i,s;for(e in t=t||this.element,this.handles)this.handles[e].constructor===String?this.handles[e]=this.element.children(this.handles[e]).first().show():(this.handles[e].jquery||this.handles[e].nodeType)&&(this.handles[e]=V(this.handles[e]),this._on(this.handles[e],{mousedown:a._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(i=V(this.handles[e],this.element),s=/sw|ne|nw|se|n|s/.test(e)?i.outerHeight():i.outerWidth(),i=["padding",/ne|nw|n/.test(e)?"Top":/se|sw|s/.test(e)?"Bottom":/^e$/.test(e)?"Right":"Left"].join(""),t.css(i,s),this._proportionallyResize()),this._handles=this._handles.add(this.handles[e])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){a.resizing||(this.className&&(n=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),a.axis=n&&n[1]?n[1]:"se")}),o.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._addedHandles.remove()},_mouseCapture:function(t){var e,i,s=!1;for(e in this.handles)(i=V(this.handles[e])[0])!==t.target&&!V.contains(i,t.target)||(s=!0);return!this.options.disabled&&s},_mouseStart:function(t){var e,i,s=this.options,n=this.element;return this.resizing=!0,this._renderProxy(),e=this._num(this.helper.css("left")),i=this._num(this.helper.css("top")),s.containment&&(e+=V(s.containment).scrollLeft()||0,i+=V(s.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:e,top:i},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:n.width(),height:n.height()},this.originalSize=this._helper?{width:n.outerWidth(),height:n.outerHeight()}:{width:n.width(),height:n.height()},this.sizeDiff={width:n.outerWidth()-n.width(),height:n.outerHeight()-n.height()},this.originalPosition={left:e,top:i},this.originalMousePosition={left:t.pageX,top:t.pageY},this.aspectRatio="number"==typeof s.aspectRatio?s.aspectRatio:this.originalSize.width/this.originalSize.height||1,s=V(".ui-resizable-"+this.axis).css("cursor"),V("body").css("cursor","auto"===s?this.axis+"-resize":s),this._addClass("ui-resizable-resizing"),this._propagate("start",t),!0},_mouseDrag:function(t){var e=this.originalMousePosition,i=this.axis,s=t.pageX-e.left||0,e=t.pageY-e.top||0,i=this._change[i];return this._updatePrevProperties(),i&&(e=i.apply(this,[t,s,e]),this._updateVirtualBoundaries(t.shiftKey),(this._aspectRatio||t.shiftKey)&&(e=this._updateRatio(e,t)),e=this._respectSize(e,t),this._updateCache(e),this._propagate("resize",t),e=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),V.isEmptyObject(e)||(this._updatePrevProperties(),this._trigger("resize",t,this.ui()),this._applyChanges())),!1},_mouseStop:function(t){this.resizing=!1;var e,i,s,n=this.options,o=this;return this._helper&&(s=(e=(i=this._proportionallyResizeElements).length&&/textarea/i.test(i[0].nodeName))&&this._hasScroll(i[0],"left")?0:o.sizeDiff.height,i=e?0:o.sizeDiff.width,e={width:o.helper.width()-i,height:o.helper.height()-s},i=parseFloat(o.element.css("left"))+(o.position.left-o.originalPosition.left)||null,s=parseFloat(o.element.css("top"))+(o.position.top-o.originalPosition.top)||null,n.animate||this.element.css(V.extend(e,{top:s,left:i})),o.helper.height(o.size.height),o.helper.width(o.size.width),this._helper&&!n.animate&&this._proportionallyResize()),V("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",t),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s=this.options,n={minWidth:this._isNumber(s.minWidth)?s.minWidth:0,maxWidth:this._isNumber(s.maxWidth)?s.maxWidth:1/0,minHeight:this._isNumber(s.minHeight)?s.minHeight:0,maxHeight:this._isNumber(s.maxHeight)?s.maxHeight:1/0};(this._aspectRatio||t)&&(e=n.minHeight*this.aspectRatio,i=n.minWidth/this.aspectRatio,s=n.maxHeight*this.aspectRatio,t=n.maxWidth/this.aspectRatio,e>n.minWidth&&(n.minWidth=e),i>n.minHeight&&(n.minHeight=i),st.width,a=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,r=this.originalPosition.left+this.originalSize.width,l=this.originalPosition.top+this.originalSize.height,h=/sw|nw|w/.test(i),i=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),a&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&h&&(t.left=r-e.minWidth),s&&h&&(t.left=r-e.maxWidth),a&&i&&(t.top=l-e.minHeight),n&&i&&(t.top=l-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];e<4;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;e
      ").css({overflow:"hidden"}),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++e.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize;return{left:this.originalPosition.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize;return{top:this.originalPosition.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(t,e,i){return V.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},sw:function(t,e,i){return V.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,e,i]))},ne:function(t,e,i){return V.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},nw:function(t,e,i){return V.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,e,i]))}},_propagate:function(t,e){V.ui.plugin.call(this,t,[e,this.ui()]),"resize"!==t&&this._trigger(t,e,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),V.ui.plugin.add("resizable","animate",{stop:function(e){var i=V(this).resizable("instance"),t=i.options,s=i._proportionallyResizeElements,n=s.length&&/textarea/i.test(s[0].nodeName),o=n&&i._hasScroll(s[0],"left")?0:i.sizeDiff.height,a=n?0:i.sizeDiff.width,n={width:i.size.width-a,height:i.size.height-o},a=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,o=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(V.extend(n,o&&a?{top:o,left:a}:{}),{duration:t.animateDuration,easing:t.animateEasing,step:function(){var t={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};s&&s.length&&V(s[0]).css({width:t.width,height:t.height}),i._updateCache(t),i._propagate("resize",e)}})}}),V.ui.plugin.add("resizable","containment",{start:function(){var i,s,n=V(this).resizable("instance"),t=n.options,e=n.element,o=t.containment,a=o instanceof V?o.get(0):/parent/.test(o)?e.parent().get(0):o;a&&(n.containerElement=V(a),/document/.test(o)||o===document?(n.containerOffset={left:0,top:0},n.containerPosition={left:0,top:0},n.parentData={element:V(document),left:0,top:0,width:V(document).width(),height:V(document).height()||document.body.parentNode.scrollHeight}):(i=V(a),s=[],V(["Top","Right","Left","Bottom"]).each(function(t,e){s[t]=n._num(i.css("padding"+e))}),n.containerOffset=i.offset(),n.containerPosition=i.position(),n.containerSize={height:i.innerHeight()-s[3],width:i.innerWidth()-s[1]},t=n.containerOffset,e=n.containerSize.height,o=n.containerSize.width,o=n._hasScroll(a,"left")?a.scrollWidth:o,e=n._hasScroll(a)?a.scrollHeight:e,n.parentData={element:a,left:t.left,top:t.top,width:o,height:e}))},resize:function(t){var e=V(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.position,o=e._aspectRatio||t.shiftKey,a={top:0,left:0},r=e.containerElement,t=!0;r[0]!==document&&/static/.test(r.css("position"))&&(a=s),n.left<(e._helper?s.left:0)&&(e.size.width=e.size.width+(e._helper?e.position.left-s.left:e.position.left-a.left),o&&(e.size.height=e.size.width/e.aspectRatio,t=!1),e.position.left=i.helper?s.left:0),n.top<(e._helper?s.top:0)&&(e.size.height=e.size.height+(e._helper?e.position.top-s.top:e.position.top),o&&(e.size.width=e.size.height*e.aspectRatio,t=!1),e.position.top=e._helper?s.top:0),i=e.containerElement.get(0)===e.element.parent().get(0),n=/relative|absolute/.test(e.containerElement.css("position")),i&&n?(e.offset.left=e.parentData.left+e.position.left,e.offset.top=e.parentData.top+e.position.top):(e.offset.left=e.element.offset().left,e.offset.top=e.element.offset().top),n=Math.abs(e.sizeDiff.width+(e._helper?e.offset.left-a.left:e.offset.left-s.left)),s=Math.abs(e.sizeDiff.height+(e._helper?e.offset.top-a.top:e.offset.top-s.top)),n+e.size.width>=e.parentData.width&&(e.size.width=e.parentData.width-n,o&&(e.size.height=e.size.width/e.aspectRatio,t=!1)),s+e.size.height>=e.parentData.height&&(e.size.height=e.parentData.height-s,o&&(e.size.width=e.size.height*e.aspectRatio,t=!1)),t||(e.position.left=e.prevPosition.left,e.position.top=e.prevPosition.top,e.size.width=e.prevSize.width,e.size.height=e.prevSize.height)},stop:function(){var t=V(this).resizable("instance"),e=t.options,i=t.containerOffset,s=t.containerPosition,n=t.containerElement,o=V(t.helper),a=o.offset(),r=o.outerWidth()-t.sizeDiff.width,o=o.outerHeight()-t.sizeDiff.height;t._helper&&!e.animate&&/relative/.test(n.css("position"))&&V(this).css({left:a.left-s.left-i.left,width:r,height:o}),t._helper&&!e.animate&&/static/.test(n.css("position"))&&V(this).css({left:a.left-s.left-i.left,width:r,height:o})}}),V.ui.plugin.add("resizable","alsoResize",{start:function(){var t=V(this).resizable("instance").options;V(t.alsoResize).each(function(){var t=V(this);t.data("ui-resizable-alsoresize",{width:parseFloat(t.width()),height:parseFloat(t.height()),left:parseFloat(t.css("left")),top:parseFloat(t.css("top"))})})},resize:function(t,i){var e=V(this).resizable("instance"),s=e.options,n=e.originalSize,o=e.originalPosition,a={height:e.size.height-n.height||0,width:e.size.width-n.width||0,top:e.position.top-o.top||0,left:e.position.left-o.left||0};V(s.alsoResize).each(function(){var t=V(this),s=V(this).data("ui-resizable-alsoresize"),n={},e=t.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];V.each(e,function(t,e){var i=(s[e]||0)+(a[e]||0);i&&0<=i&&(n[e]=i||null)}),t.css(n)})},stop:function(){V(this).removeData("ui-resizable-alsoresize")}}),V.ui.plugin.add("resizable","ghost",{start:function(){var t=V(this).resizable("instance"),e=t.size;t.ghost=t.originalElement.clone(),t.ghost.css({opacity:.25,display:"block",position:"relative",height:e.height,width:e.width,margin:0,left:0,top:0}),t._addClass(t.ghost,"ui-resizable-ghost"),!1!==V.uiBackCompat&&"string"==typeof t.options.ghost&&t.ghost.addClass(this.options.ghost),t.ghost.appendTo(t.helper)},resize:function(){var t=V(this).resizable("instance");t.ghost&&t.ghost.css({position:"relative",height:t.size.height,width:t.size.width})},stop:function(){var t=V(this).resizable("instance");t.ghost&&t.helper&&t.helper.get(0).removeChild(t.ghost.get(0))}}),V.ui.plugin.add("resizable","grid",{resize:function(){var t,e=V(this).resizable("instance"),i=e.options,s=e.size,n=e.originalSize,o=e.originalPosition,a=e.axis,r="number"==typeof i.grid?[i.grid,i.grid]:i.grid,l=r[0]||1,h=r[1]||1,c=Math.round((s.width-n.width)/l)*l,u=Math.round((s.height-n.height)/h)*h,d=n.width+c,p=n.height+u,f=i.maxWidth&&i.maxWidthd,s=i.minHeight&&i.minHeight>p;i.grid=r,m&&(d+=l),s&&(p+=h),f&&(d-=l),g&&(p-=h),/^(se|s|e)$/.test(a)?(e.size.width=d,e.size.height=p):/^(ne)$/.test(a)?(e.size.width=d,e.size.height=p,e.position.top=o.top-u):/^(sw)$/.test(a)?(e.size.width=d,e.size.height=p,e.position.left=o.left-c):((p-h<=0||d-l<=0)&&(t=e._getPaddingPlusBorderDimensions(this)),0=+this.uiDialog.css("z-index")&&(this.uiDialog.css("z-index",s+1),i=!0),i&&!e&&this._trigger("focus",t),i},open:function(){var t=this;this._isOpen?this._moveToTop()&&this._focusTabbable():(this._isOpen=!0,this.opener=V(V.ui.safeActiveElement(this.document[0])),this._size(),this._position(),this._createOverlay(),this._moveToTop(null,!0),this.overlay&&this.overlay.css("z-index",this.uiDialog.css("z-index")-1),this._show(this.uiDialog,this.options.show,function(){t._focusTabbable(),t._trigger("focus")}),this._makeFocusTarget(),this._trigger("open"))},_focusTabbable:function(){var t=this._focusedElement;(t=!(t=!(t=!(t=!(t=t||this.element.find("[autofocus]")).length?this.element.find(":tabbable"):t).length?this.uiDialogButtonPane.find(":tabbable"):t).length?this.uiDialogTitlebarClose.filter(":tabbable"):t).length?this.uiDialog:t).eq(0).trigger("focus")},_restoreTabbableFocus:function(){var t=V.ui.safeActiveElement(this.document[0]);this.uiDialog[0]===t||V.contains(this.uiDialog[0],t)||this._focusTabbable()},_keepFocus:function(t){t.preventDefault(),this._restoreTabbableFocus(),this._delay(this._restoreTabbableFocus)},_createWrapper:function(){this.uiDialog=V("
      ").hide().attr({tabIndex:-1,role:"dialog"}).appendTo(this._appendTo()),this._addClass(this.uiDialog,"ui-dialog","ui-widget ui-widget-content ui-front"),this._on(this.uiDialog,{keydown:function(t){if(this.options.closeOnEscape&&!t.isDefaultPrevented()&&t.keyCode&&t.keyCode===V.ui.keyCode.ESCAPE)return t.preventDefault(),void this.close(t);var e,i,s;t.keyCode!==V.ui.keyCode.TAB||t.isDefaultPrevented()||(e=this.uiDialog.find(":tabbable"),i=e.first(),s=e.last(),t.target!==s[0]&&t.target!==this.uiDialog[0]||t.shiftKey?t.target!==i[0]&&t.target!==this.uiDialog[0]||!t.shiftKey||(this._delay(function(){s.trigger("focus")}),t.preventDefault()):(this._delay(function(){i.trigger("focus")}),t.preventDefault()))},mousedown:function(t){this._moveToTop(t)&&this._focusTabbable()}}),this.element.find("[aria-describedby]").length||this.uiDialog.attr({"aria-describedby":this.element.uniqueId().attr("id")})},_createTitlebar:function(){var t;this.uiDialogTitlebar=V("
      "),this._addClass(this.uiDialogTitlebar,"ui-dialog-titlebar","ui-widget-header ui-helper-clearfix"),this._on(this.uiDialogTitlebar,{mousedown:function(t){V(t.target).closest(".ui-dialog-titlebar-close")||this.uiDialog.trigger("focus")}}),this.uiDialogTitlebarClose=V("").button({label:V("").text(this.options.closeText).html(),icon:"ui-icon-closethick",showLabel:!1}).appendTo(this.uiDialogTitlebar),this._addClass(this.uiDialogTitlebarClose,"ui-dialog-titlebar-close"),this._on(this.uiDialogTitlebarClose,{click:function(t){t.preventDefault(),this.close(t)}}),t=V("").uniqueId().prependTo(this.uiDialogTitlebar),this._addClass(t,"ui-dialog-title"),this._title(t),this.uiDialogTitlebar.prependTo(this.uiDialog),this.uiDialog.attr({"aria-labelledby":t.attr("id")})},_title:function(t){this.options.title?t.text(this.options.title):t.html(" ")},_createButtonPane:function(){this.uiDialogButtonPane=V("
      "),this._addClass(this.uiDialogButtonPane,"ui-dialog-buttonpane","ui-widget-content ui-helper-clearfix"),this.uiButtonSet=V("
      ").appendTo(this.uiDialogButtonPane),this._addClass(this.uiButtonSet,"ui-dialog-buttonset"),this._createButtons()},_createButtons:function(){var s=this,t=this.options.buttons;this.uiDialogButtonPane.remove(),this.uiButtonSet.empty(),V.isEmptyObject(t)||Array.isArray(t)&&!t.length?this._removeClass(this.uiDialog,"ui-dialog-buttons"):(V.each(t,function(t,e){var i;e=V.extend({type:"button"},e="function"==typeof e?{click:e,text:t}:e),i=e.click,t={icon:e.icon,iconPosition:e.iconPosition,showLabel:e.showLabel,icons:e.icons,text:e.text},delete e.click,delete e.icon,delete e.iconPosition,delete e.showLabel,delete e.icons,"boolean"==typeof e.text&&delete e.text,V("",e).button(t).appendTo(s.uiButtonSet).on("click",function(){i.apply(s.element[0],arguments)})}),this._addClass(this.uiDialog,"ui-dialog-buttons"),this.uiDialogButtonPane.appendTo(this.uiDialog))},_makeDraggable:function(){var n=this,o=this.options;function a(t){return{position:t.position,offset:t.offset}}this.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(t,e){n._addClass(V(this),"ui-dialog-dragging"),n._blockFrames(),n._trigger("dragStart",t,a(e))},drag:function(t,e){n._trigger("drag",t,a(e))},stop:function(t,e){var i=e.offset.left-n.document.scrollLeft(),s=e.offset.top-n.document.scrollTop();o.position={my:"left top",at:"left"+(0<=i?"+":"")+i+" top"+(0<=s?"+":"")+s,of:n.window},n._removeClass(V(this),"ui-dialog-dragging"),n._unblockFrames(),n._trigger("dragStop",t,a(e))}})},_makeResizable:function(){var n=this,o=this.options,t=o.resizable,e=this.uiDialog.css("position"),t="string"==typeof t?t:"n,e,s,w,se,sw,ne,nw";function a(t){return{originalPosition:t.originalPosition,originalSize:t.originalSize,position:t.position,size:t.size}}this.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:this.element,maxWidth:o.maxWidth,maxHeight:o.maxHeight,minWidth:o.minWidth,minHeight:this._minHeight(),handles:t,start:function(t,e){n._addClass(V(this),"ui-dialog-resizing"),n._blockFrames(),n._trigger("resizeStart",t,a(e))},resize:function(t,e){n._trigger("resize",t,a(e))},stop:function(t,e){var i=n.uiDialog.offset(),s=i.left-n.document.scrollLeft(),i=i.top-n.document.scrollTop();o.height=n.uiDialog.height(),o.width=n.uiDialog.width(),o.position={my:"left top",at:"left"+(0<=s?"+":"")+s+" top"+(0<=i?"+":"")+i,of:n.window},n._removeClass(V(this),"ui-dialog-resizing"),n._unblockFrames(),n._trigger("resizeStop",t,a(e))}}).css("position",e)},_trackFocus:function(){this._on(this.widget(),{focusin:function(t){this._makeFocusTarget(),this._focusedElement=V(t.target)}})},_makeFocusTarget:function(){this._untrackInstance(),this._trackingInstances().unshift(this)},_untrackInstance:function(){var t=this._trackingInstances(),e=V.inArray(this,t);-1!==e&&t.splice(e,1)},_trackingInstances:function(){var t=this.document.data("ui-dialog-instances");return t||this.document.data("ui-dialog-instances",t=[]),t},_minHeight:function(){var t=this.options;return"auto"===t.height?t.minHeight:Math.min(t.minHeight,t.height)},_position:function(){var t=this.uiDialog.is(":visible");t||this.uiDialog.show(),this.uiDialog.position(this.options.position),t||this.uiDialog.hide()},_setOptions:function(t){var i=this,s=!1,n={};V.each(t,function(t,e){i._setOption(t,e),t in i.sizeRelatedOptions&&(s=!0),t in i.resizableRelatedOptions&&(n[t]=e)}),s&&(this._size(),this._position()),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option",n)},_setOption:function(t,e){var i,s=this.uiDialog;"disabled"!==t&&(this._super(t,e),"appendTo"===t&&this.uiDialog.appendTo(this._appendTo()),"buttons"===t&&this._createButtons(),"closeText"===t&&this.uiDialogTitlebarClose.button({label:V("").text(""+this.options.closeText).html()}),"draggable"===t&&((i=s.is(":data(ui-draggable)"))&&!e&&s.draggable("destroy"),!i&&e&&this._makeDraggable()),"position"===t&&this._position(),"resizable"===t&&((i=s.is(":data(ui-resizable)"))&&!e&&s.resizable("destroy"),i&&"string"==typeof e&&s.resizable("option","handles",e),i||!1===e||this._makeResizable()),"title"===t&&this._title(this.uiDialogTitlebar.find(".ui-dialog-title")))},_size:function(){var t,e,i,s=this.options;this.element.show().css({width:"auto",minHeight:0,maxHeight:"none",height:0}),s.minWidth>s.width&&(s.width=s.minWidth),t=this.uiDialog.css({height:"auto",width:s.width}).outerHeight(),e=Math.max(0,s.minHeight-t),i="number"==typeof s.maxHeight?Math.max(0,s.maxHeight-t):"none","auto"===s.height?this.element.css({minHeight:e,maxHeight:i,height:"auto"}):this.element.height(Math.max(0,s.height-t)),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())},_blockFrames:function(){this.iframeBlocks=this.document.find("iframe").map(function(){var t=V(this);return V("
      ").css({position:"absolute",width:t.outerWidth(),height:t.outerHeight()}).appendTo(t.parent()).offset(t.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_allowInteraction:function(t){return!!V(t.target).closest(".ui-dialog").length||!!V(t.target).closest(".ui-datepicker").length},_createOverlay:function(){var i,s;this.options.modal&&(i=V.fn.jquery.substring(0,4),s=!0,this._delay(function(){s=!1}),this.document.data("ui-dialog-overlays")||this.document.on("focusin.ui-dialog",function(t){var e;s||((e=this._trackingInstances()[0])._allowInteraction(t)||(t.preventDefault(),e._focusTabbable(),"3.4."!==i&&"3.5."!==i||e._delay(e._restoreTabbableFocus)))}.bind(this)),this.overlay=V("
      ").appendTo(this._appendTo()),this._addClass(this.overlay,null,"ui-widget-overlay ui-front"),this._on(this.overlay,{mousedown:"_keepFocus"}),this.document.data("ui-dialog-overlays",(this.document.data("ui-dialog-overlays")||0)+1))},_destroyOverlay:function(){var t;this.options.modal&&this.overlay&&((t=this.document.data("ui-dialog-overlays")-1)?this.document.data("ui-dialog-overlays",t):(this.document.off("focusin.ui-dialog"),this.document.removeData("ui-dialog-overlays")),this.overlay.remove(),this.overlay=null)}}),!1!==V.uiBackCompat&&V.widget("ui.dialog",V.ui.dialog,{options:{dialogClass:""},_createWrapper:function(){this._super(),this.uiDialog.addClass(this.options.dialogClass)},_setOption:function(t,e){"dialogClass"===t&&this.uiDialog.removeClass(this.options.dialogClass).addClass(e),this._superApply(arguments)}});V.ui.dialog;function lt(t,e,i){return e<=t&&t").appendTo(this.element),this._addClass(this.valueDiv,"ui-progressbar-value","ui-widget-header"),this._refreshValue()},_destroy:function(){this.element.removeAttr("role aria-valuemin aria-valuemax aria-valuenow"),this.valueDiv.remove()},value:function(t){if(void 0===t)return this.options.value;this.options.value=this._constrainedValue(t),this._refreshValue()},_constrainedValue:function(t){return void 0===t&&(t=this.options.value),this.indeterminate=!1===t,"number"!=typeof t&&(t=0),!this.indeterminate&&Math.min(this.options.max,Math.max(this.min,t))},_setOptions:function(t){var e=t.value;delete t.value,this._super(t),this.options.value=this._constrainedValue(e),this._refreshValue()},_setOption:function(t,e){"max"===t&&(e=Math.max(this.min,e)),this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",t),this._toggleClass(null,"ui-state-disabled",!!t)},_percentage:function(){return this.indeterminate?100:100*(this.options.value-this.min)/(this.options.max-this.min)},_refreshValue:function(){var t=this.options.value,e=this._percentage();this.valueDiv.toggle(this.indeterminate||t>this.min).width(e.toFixed(0)+"%"),this._toggleClass(this.valueDiv,"ui-progressbar-complete",null,t===this.options.max)._toggleClass("ui-progressbar-indeterminate",null,this.indeterminate),this.indeterminate?(this.element.removeAttr("aria-valuenow"),this.overlayDiv||(this.overlayDiv=V("
      ").appendTo(this.valueDiv),this._addClass(this.overlayDiv,"ui-progressbar-overlay"))):(this.element.attr({"aria-valuemax":this.options.max,"aria-valuenow":t}),this.overlayDiv&&(this.overlayDiv.remove(),this.overlayDiv=null)),this.oldValue!==t&&(this.oldValue=t,this._trigger("change")),t===this.options.max&&this._trigger("complete")}}),V.widget("ui.selectable",V.ui.mouse,{version:"1.13.1",options:{appendTo:"body",autoRefresh:!0,distance:0,filter:"*",tolerance:"touch",selected:null,selecting:null,start:null,stop:null,unselected:null,unselecting:null},_create:function(){var i=this;this._addClass("ui-selectable"),this.dragged=!1,this.refresh=function(){i.elementPos=V(i.element[0]).offset(),i.selectees=V(i.options.filter,i.element[0]),i._addClass(i.selectees,"ui-selectee"),i.selectees.each(function(){var t=V(this),e=t.offset(),e={left:e.left-i.elementPos.left,top:e.top-i.elementPos.top};V.data(this,"selectable-item",{element:this,$element:t,left:e.left,top:e.top,right:e.left+t.outerWidth(),bottom:e.top+t.outerHeight(),startselected:!1,selected:t.hasClass("ui-selected"),selecting:t.hasClass("ui-selecting"),unselecting:t.hasClass("ui-unselecting")})})},this.refresh(),this._mouseInit(),this.helper=V("
      "),this._addClass(this.helper,"ui-selectable-helper")},_destroy:function(){this.selectees.removeData("selectable-item"),this._mouseDestroy()},_mouseStart:function(i){var s=this,t=this.options;this.opos=[i.pageX,i.pageY],this.elementPos=V(this.element[0]).offset(),this.options.disabled||(this.selectees=V(t.filter,this.element[0]),this._trigger("start",i),V(t.appendTo).append(this.helper),this.helper.css({left:i.pageX,top:i.pageY,width:0,height:0}),t.autoRefresh&&this.refresh(),this.selectees.filter(".ui-selected").each(function(){var t=V.data(this,"selectable-item");t.startselected=!0,i.metaKey||i.ctrlKey||(s._removeClass(t.$element,"ui-selected"),t.selected=!1,s._addClass(t.$element,"ui-unselecting"),t.unselecting=!0,s._trigger("unselecting",i,{unselecting:t.element}))}),V(i.target).parents().addBack().each(function(){var t,e=V.data(this,"selectable-item");if(e)return t=!i.metaKey&&!i.ctrlKey||!e.$element.hasClass("ui-selected"),s._removeClass(e.$element,t?"ui-unselecting":"ui-selected")._addClass(e.$element,t?"ui-selecting":"ui-unselecting"),e.unselecting=!t,e.selecting=t,(e.selected=t)?s._trigger("selecting",i,{selecting:e.element}):s._trigger("unselecting",i,{unselecting:e.element}),!1}))},_mouseDrag:function(s){if(this.dragged=!0,!this.options.disabled){var t,n=this,o=this.options,a=this.opos[0],r=this.opos[1],l=s.pageX,h=s.pageY;return ll||i.righth||i.bottoma&&i.rightr&&i.bottom",options:{appendTo:null,classes:{"ui-selectmenu-button-open":"ui-corner-top","ui-selectmenu-button-closed":"ui-corner-all"},disabled:null,icons:{button:"ui-icon-triangle-1-s"},position:{my:"left top",at:"left bottom",collision:"none"},width:!1,change:null,close:null,focus:null,open:null,select:null},_create:function(){var t=this.element.uniqueId().attr("id");this.ids={element:t,button:t+"-button",menu:t+"-menu"},this._drawButton(),this._drawMenu(),this._bindFormResetHandler(),this._rendered=!1,this.menuItems=V()},_drawButton:function(){var t,e=this,i=this._parseOption(this.element.find("option:selected"),this.element[0].selectedIndex);this.labels=this.element.labels().attr("for",this.ids.button),this._on(this.labels,{click:function(t){this.button.trigger("focus"),t.preventDefault()}}),this.element.hide(),this.button=V("",{tabindex:this.options.disabled?-1:0,id:this.ids.button,role:"combobox","aria-expanded":"false","aria-autocomplete":"list","aria-owns":this.ids.menu,"aria-haspopup":"true",title:this.element.attr("title")}).insertAfter(this.element),this._addClass(this.button,"ui-selectmenu-button ui-selectmenu-button-closed","ui-button ui-widget"),t=V("").appendTo(this.button),this._addClass(t,"ui-selectmenu-icon","ui-icon "+this.options.icons.button),this.buttonItem=this._renderButtonItem(i).appendTo(this.button),!1!==this.options.width&&this._resizeButton(),this._on(this.button,this._buttonEvents),this.button.one("focusin",function(){e._rendered||e._refreshMenu()})},_drawMenu:function(){var i=this;this.menu=V("
        ",{"aria-hidden":"true","aria-labelledby":this.ids.button,id:this.ids.menu}),this.menuWrap=V("
        ").append(this.menu),this._addClass(this.menuWrap,"ui-selectmenu-menu","ui-front"),this.menuWrap.appendTo(this._appendTo()),this.menuInstance=this.menu.menu({classes:{"ui-menu":"ui-corner-bottom"},role:"listbox",select:function(t,e){t.preventDefault(),i._setSelection(),i._select(e.item.data("ui-selectmenu-item"),t)},focus:function(t,e){e=e.item.data("ui-selectmenu-item");null!=i.focusIndex&&e.index!==i.focusIndex&&(i._trigger("focus",t,{item:e}),i.isOpen||i._select(e,t)),i.focusIndex=e.index,i.button.attr("aria-activedescendant",i.menuItems.eq(e.index).attr("id"))}}).menu("instance"),this.menuInstance._off(this.menu,"mouseleave"),this.menuInstance._closeOnDocumentClick=function(){return!1},this.menuInstance._isDivider=function(){return!1}},refresh:function(){this._refreshMenu(),this.buttonItem.replaceWith(this.buttonItem=this._renderButtonItem(this._getSelectedItem().data("ui-selectmenu-item")||{})),null===this.options.width&&this._resizeButton()},_refreshMenu:function(){var t=this.element.find("option");this.menu.empty(),this._parseOptions(t),this._renderMenu(this.menu,this.items),this.menuInstance.refresh(),this.menuItems=this.menu.find("li").not(".ui-selectmenu-optgroup").find(".ui-menu-item-wrapper"),this._rendered=!0,t.length&&(t=this._getSelectedItem(),this.menuInstance.focus(null,t),this._setAria(t.data("ui-selectmenu-item")),this._setOption("disabled",this.element.prop("disabled")))},open:function(t){this.options.disabled||(this._rendered?(this._removeClass(this.menu.find(".ui-state-active"),null,"ui-state-active"),this.menuInstance.focus(null,this._getSelectedItem())):this._refreshMenu(),this.menuItems.length&&(this.isOpen=!0,this._toggleAttr(),this._resizeMenu(),this._position(),this._on(this.document,this._documentClick),this._trigger("open",t)))},_position:function(){this.menuWrap.position(V.extend({of:this.button},this.options.position))},close:function(t){this.isOpen&&(this.isOpen=!1,this._toggleAttr(),this.range=null,this._off(this.document),this._trigger("close",t))},widget:function(){return this.button},menuWidget:function(){return this.menu},_renderButtonItem:function(t){var e=V("");return this._setText(e,t.label),this._addClass(e,"ui-selectmenu-text"),e},_renderMenu:function(s,t){var n=this,o="";V.each(t,function(t,e){var i;e.optgroup!==o&&(i=V("
      • ",{text:e.optgroup}),n._addClass(i,"ui-selectmenu-optgroup","ui-menu-divider"+(e.element.parent("optgroup").prop("disabled")?" ui-state-disabled":"")),i.appendTo(s),o=e.optgroup),n._renderItemData(s,e)})},_renderItemData:function(t,e){return this._renderItem(t,e).data("ui-selectmenu-item",e)},_renderItem:function(t,e){var i=V("
      • "),s=V("
        ",{title:e.element.attr("title")});return e.disabled&&this._addClass(i,null,"ui-state-disabled"),this._setText(s,e.label),i.append(s).appendTo(t)},_setText:function(t,e){e?t.text(e):t.html(" ")},_move:function(t,e){var i,s=".ui-menu-item";this.isOpen?i=this.menuItems.eq(this.focusIndex).parent("li"):(i=this.menuItems.eq(this.element[0].selectedIndex).parent("li"),s+=":not(.ui-state-disabled)"),(s="first"===t||"last"===t?i["first"===t?"prevAll":"nextAll"](s).eq(-1):i[t+"All"](s).eq(0)).length&&this.menuInstance.focus(e,s)},_getSelectedItem:function(){return this.menuItems.eq(this.element[0].selectedIndex).parent("li")},_toggle:function(t){this[this.isOpen?"close":"open"](t)},_setSelection:function(){var t;this.range&&(window.getSelection?((t=window.getSelection()).removeAllRanges(),t.addRange(this.range)):this.range.select(),this.button.focus())},_documentClick:{mousedown:function(t){this.isOpen&&(V(t.target).closest(".ui-selectmenu-menu, #"+V.escapeSelector(this.ids.button)).length||this.close(t))}},_buttonEvents:{mousedown:function(){var t;window.getSelection?(t=window.getSelection()).rangeCount&&(this.range=t.getRangeAt(0)):this.range=document.selection.createRange()},click:function(t){this._setSelection(),this._toggle(t)},keydown:function(t){var e=!0;switch(t.keyCode){case V.ui.keyCode.TAB:case V.ui.keyCode.ESCAPE:this.close(t),e=!1;break;case V.ui.keyCode.ENTER:this.isOpen&&this._selectFocusedItem(t);break;case V.ui.keyCode.UP:t.altKey?this._toggle(t):this._move("prev",t);break;case V.ui.keyCode.DOWN:t.altKey?this._toggle(t):this._move("next",t);break;case V.ui.keyCode.SPACE:this.isOpen?this._selectFocusedItem(t):this._toggle(t);break;case V.ui.keyCode.LEFT:this._move("prev",t);break;case V.ui.keyCode.RIGHT:this._move("next",t);break;case V.ui.keyCode.HOME:case V.ui.keyCode.PAGE_UP:this._move("first",t);break;case V.ui.keyCode.END:case V.ui.keyCode.PAGE_DOWN:this._move("last",t);break;default:this.menu.trigger(t),e=!1}e&&t.preventDefault()}},_selectFocusedItem:function(t){var e=this.menuItems.eq(this.focusIndex).parent("li");e.hasClass("ui-state-disabled")||this._select(e.data("ui-selectmenu-item"),t)},_select:function(t,e){var i=this.element[0].selectedIndex;this.element[0].selectedIndex=t.index,this.buttonItem.replaceWith(this.buttonItem=this._renderButtonItem(t)),this._setAria(t),this._trigger("select",e,{item:t}),t.index!==i&&this._trigger("change",e,{item:t}),this.close(e)},_setAria:function(t){t=this.menuItems.eq(t.index).attr("id");this.button.attr({"aria-labelledby":t,"aria-activedescendant":t}),this.menu.attr("aria-activedescendant",t)},_setOption:function(t,e){var i;"icons"===t&&(i=this.button.find("span.ui-icon"),this._removeClass(i,null,this.options.icons.button)._addClass(i,null,e.button)),this._super(t,e),"appendTo"===t&&this.menuWrap.appendTo(this._appendTo()),"width"===t&&this._resizeButton()},_setOptionDisabled:function(t){this._super(t),this.menuInstance.option("disabled",t),this.button.attr("aria-disabled",t),this._toggleClass(this.button,null,"ui-state-disabled",t),this.element.prop("disabled",t),t?(this.button.attr("tabindex",-1),this.close()):this.button.attr("tabindex",0)},_appendTo:function(){var t=this.options.appendTo;return t=!(t=!(t=t&&(t.jquery||t.nodeType?V(t):this.document.find(t).eq(0)))||!t[0]?this.element.closest(".ui-front, dialog"):t).length?this.document[0].body:t},_toggleAttr:function(){this.button.attr("aria-expanded",this.isOpen),this._removeClass(this.button,"ui-selectmenu-button-"+(this.isOpen?"closed":"open"))._addClass(this.button,"ui-selectmenu-button-"+(this.isOpen?"open":"closed"))._toggleClass(this.menuWrap,"ui-selectmenu-open",null,this.isOpen),this.menu.attr("aria-hidden",!this.isOpen)},_resizeButton:function(){var t=this.options.width;!1!==t?(null===t&&(t=this.element.show().outerWidth(),this.element.hide()),this.button.outerWidth(t)):this.button.css("width","")},_resizeMenu:function(){this.menu.outerWidth(Math.max(this.button.outerWidth(),this.menu.width("").outerWidth()+1))},_getCreateOptions:function(){var t=this._super();return t.disabled=this.element.prop("disabled"),t},_parseOptions:function(t){var i=this,s=[];t.each(function(t,e){e.hidden||s.push(i._parseOption(V(e),t))}),this.items=s},_parseOption:function(t,e){var i=t.parent("optgroup");return{element:t,index:e,value:t.val(),label:t.text(),optgroup:i.attr("label")||"",disabled:i.prop("disabled")||t.prop("disabled")}},_destroy:function(){this._unbindFormResetHandler(),this.menuWrap.remove(),this.button.remove(),this.element.show(),this.element.removeUniqueId(),this.labels.attr("for",this.ids.element)}}]),V.widget("ui.slider",V.ui.mouse,{version:"1.13.1",widgetEventPrefix:"slide",options:{animate:!1,classes:{"ui-slider":"ui-corner-all","ui-slider-handle":"ui-corner-all","ui-slider-range":"ui-corner-all ui-widget-header"},distance:0,max:100,min:0,orientation:"horizontal",range:!1,step:1,value:0,values:null,change:null,slide:null,start:null,stop:null},numPages:5,_create:function(){this._keySliding=!1,this._mouseSliding=!1,this._animateOff=!0,this._handleIndex=null,this._detectOrientation(),this._mouseInit(),this._calculateNewMax(),this._addClass("ui-slider ui-slider-"+this.orientation,"ui-widget ui-widget-content"),this._refresh(),this._animateOff=!1},_refresh:function(){this._createRange(),this._createHandles(),this._setupEvents(),this._refreshValue()},_createHandles:function(){var t,e=this.options,i=this.element.find(".ui-slider-handle"),s=[],n=e.values&&e.values.length||1;for(i.length>n&&(i.slice(n).remove(),i=i.slice(0,n)),t=i.length;t");this.handles=i.add(V(s.join("")).appendTo(this.element)),this._addClass(this.handles,"ui-slider-handle","ui-state-default"),this.handle=this.handles.eq(0),this.handles.each(function(t){V(this).data("ui-slider-handle-index",t).attr("tabIndex",0)})},_createRange:function(){var t=this.options;t.range?(!0===t.range&&(t.values?t.values.length&&2!==t.values.length?t.values=[t.values[0],t.values[0]]:Array.isArray(t.values)&&(t.values=t.values.slice(0)):t.values=[this._valueMin(),this._valueMin()]),this.range&&this.range.length?(this._removeClass(this.range,"ui-slider-range-min ui-slider-range-max"),this.range.css({left:"",bottom:""})):(this.range=V("
        ").appendTo(this.element),this._addClass(this.range,"ui-slider-range")),"min"!==t.range&&"max"!==t.range||this._addClass(this.range,"ui-slider-range-"+t.range)):(this.range&&this.range.remove(),this.range=null)},_setupEvents:function(){this._off(this.handles),this._on(this.handles,this._handleEvents),this._hoverable(this.handles),this._focusable(this.handles)},_destroy:function(){this.handles.remove(),this.range&&this.range.remove(),this._mouseDestroy()},_mouseCapture:function(t){var i,s,n,o,e,a,r=this,l=this.options;return!l.disabled&&(this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()},this.elementOffset=this.element.offset(),a={x:t.pageX,y:t.pageY},i=this._normValueFromMouse(a),s=this._valueMax()-this._valueMin()+1,this.handles.each(function(t){var e=Math.abs(i-r.values(t));(e=this._valueMax())return this._valueMax();var e=0=e&&(t+=0this.options.max&&(t-=i),this.max=parseFloat(t.toFixed(this._precision()))},_precision:function(){var t=this._precisionOf(this.options.step);return t=null!==this.options.min?Math.max(t,this._precisionOf(this.options.min)):t},_precisionOf:function(t){var e=t.toString(),t=e.indexOf(".");return-1===t?0:e.length-t-1},_valueMin:function(){return this.options.min},_valueMax:function(){return this.max},_refreshRange:function(t){"vertical"===t&&this.range.css({width:"",left:""}),"horizontal"===t&&this.range.css({height:"",bottom:""})},_refreshValue:function(){var e,i,t,s,n,o=this.options.range,a=this.options,r=this,l=!this._animateOff&&a.animate,h={};this._hasMultipleValues()?this.handles.each(function(t){i=(r.values(t)-r._valueMin())/(r._valueMax()-r._valueMin())*100,h["horizontal"===r.orientation?"left":"bottom"]=i+"%",V(this).stop(1,1)[l?"animate":"css"](h,a.animate),!0===r.options.range&&("horizontal"===r.orientation?(0===t&&r.range.stop(1,1)[l?"animate":"css"]({left:i+"%"},a.animate),1===t&&r.range[l?"animate":"css"]({width:i-e+"%"},{queue:!1,duration:a.animate})):(0===t&&r.range.stop(1,1)[l?"animate":"css"]({bottom:i+"%"},a.animate),1===t&&r.range[l?"animate":"css"]({height:i-e+"%"},{queue:!1,duration:a.animate}))),e=i}):(t=this.value(),s=this._valueMin(),n=this._valueMax(),i=n!==s?(t-s)/(n-s)*100:0,h["horizontal"===this.orientation?"left":"bottom"]=i+"%",this.handle.stop(1,1)[l?"animate":"css"](h,a.animate),"min"===o&&"horizontal"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({width:i+"%"},a.animate),"max"===o&&"horizontal"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({width:100-i+"%"},a.animate),"min"===o&&"vertical"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({height:i+"%"},a.animate),"max"===o&&"vertical"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({height:100-i+"%"},a.animate))},_handleEvents:{keydown:function(t){var e,i,s,n=V(t.target).data("ui-slider-handle-index");switch(t.keyCode){case V.ui.keyCode.HOME:case V.ui.keyCode.END:case V.ui.keyCode.PAGE_UP:case V.ui.keyCode.PAGE_DOWN:case V.ui.keyCode.UP:case V.ui.keyCode.RIGHT:case V.ui.keyCode.DOWN:case V.ui.keyCode.LEFT:if(t.preventDefault(),!this._keySliding&&(this._keySliding=!0,this._addClass(V(t.target),null,"ui-state-active"),!1===this._start(t,n)))return}switch(s=this.options.step,e=i=this._hasMultipleValues()?this.values(n):this.value(),t.keyCode){case V.ui.keyCode.HOME:i=this._valueMin();break;case V.ui.keyCode.END:i=this._valueMax();break;case V.ui.keyCode.PAGE_UP:i=this._trimAlignValue(e+(this._valueMax()-this._valueMin())/this.numPages);break;case V.ui.keyCode.PAGE_DOWN:i=this._trimAlignValue(e-(this._valueMax()-this._valueMin())/this.numPages);break;case V.ui.keyCode.UP:case V.ui.keyCode.RIGHT:if(e===this._valueMax())return;i=this._trimAlignValue(e+s);break;case V.ui.keyCode.DOWN:case V.ui.keyCode.LEFT:if(e===this._valueMin())return;i=this._trimAlignValue(e-s)}this._slide(t,n,i)},keyup:function(t){var e=V(t.target).data("ui-slider-handle-index");this._keySliding&&(this._keySliding=!1,this._stop(t,e),this._change(t,e),this._removeClass(V(t.target),null,"ui-state-active"))}}}),V.widget("ui.sortable",V.ui.mouse,{version:"1.13.1",widgetEventPrefix:"sort",ready:!1,options:{appendTo:"parent",axis:!1,connectWith:!1,containment:!1,cursor:"auto",cursorAt:!1,dropOnEmpty:!0,forcePlaceholderSize:!1,forceHelperSize:!1,grid:!1,handle:!1,helper:"original",items:"> *",opacity:!1,placeholder:!1,revert:!1,scroll:!0,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1e3,activate:null,beforeStop:null,change:null,deactivate:null,out:null,over:null,receive:null,remove:null,sort:null,start:null,stop:null,update:null},_isOverAxis:function(t,e,i){return e<=t&&t*{ cursor: "+o.cursor+" !important; }").appendTo(n)),o.zIndex&&(this.helper.css("zIndex")&&(this._storedZIndex=this.helper.css("zIndex")),this.helper.css("zIndex",o.zIndex)),o.opacity&&(this.helper.css("opacity")&&(this._storedOpacity=this.helper.css("opacity")),this.helper.css("opacity",o.opacity)),this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName&&(this.overflowOffset=this.scrollParent.offset()),this._trigger("start",t,this._uiHash()),this._preserveHelperProportions||this._cacheHelperProportions(),!i)for(s=this.containers.length-1;0<=s;s--)this.containers[s]._trigger("activate",t,this._uiHash(this));return V.ui.ddmanager&&(V.ui.ddmanager.current=this),V.ui.ddmanager&&!o.dropBehaviour&&V.ui.ddmanager.prepareOffsets(this,t),this.dragging=!0,this._addClass(this.helper,"ui-sortable-helper"),this.helper.parent().is(this.appendTo)||(this.helper.detach().appendTo(this.appendTo),this.offset.parent=this._getParentOffset()),this.position=this.originalPosition=this._generatePosition(t),this.originalPageX=t.pageX,this.originalPageY=t.pageY,this.lastPositionAbs=this.positionAbs=this._convertPositionTo("absolute"),this._mouseDrag(t),!0},_scroll:function(t){var e=this.options,i=!1;return this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName?(this.overflowOffset.top+this.scrollParent[0].offsetHeight-t.pageYt[this.floating?"width":"height"]?h&&c:o",i.document[0]);return i._addClass(t,"ui-sortable-placeholder",s||i.currentItem[0].className)._removeClass(t,"ui-sortable-helper"),"tbody"===n?i._createTrPlaceholder(i.currentItem.find("tr").eq(0),V("",i.document[0]).appendTo(t)):"tr"===n?i._createTrPlaceholder(i.currentItem,t):"img"===n&&t.attr("src",i.currentItem.attr("src")),s||t.css("visibility","hidden"),t},update:function(t,e){s&&!o.forcePlaceholderSize||(e.height()&&(!o.forcePlaceholderSize||"tbody"!==n&&"tr"!==n)||e.height(i.currentItem.innerHeight()-parseInt(i.currentItem.css("paddingTop")||0,10)-parseInt(i.currentItem.css("paddingBottom")||0,10)),e.width()||e.width(i.currentItem.innerWidth()-parseInt(i.currentItem.css("paddingLeft")||0,10)-parseInt(i.currentItem.css("paddingRight")||0,10)))}}),i.placeholder=V(o.placeholder.element.call(i.element,i.currentItem)),i.currentItem.after(i.placeholder),o.placeholder.update(i,i.placeholder)},_createTrPlaceholder:function(t,e){var i=this;t.children().each(function(){V(" ",i.document[0]).attr("colspan",V(this).attr("colspan")||1).appendTo(e)})},_contactContainers:function(t){for(var e,i,s,n,o,a,r,l,h,c=null,u=null,d=this.containers.length-1;0<=d;d--)V.contains(this.currentItem[0],this.containers[d].element[0])||(this._intersectsWith(this.containers[d].containerCache)?c&&V.contains(this.containers[d].element[0],c.element[0])||(c=this.containers[d],u=d):this.containers[d].containerCache.over&&(this.containers[d]._trigger("out",t,this._uiHash(this)),this.containers[d].containerCache.over=0));if(c)if(1===this.containers.length)this.containers[u].containerCache.over||(this.containers[u]._trigger("over",t,this._uiHash(this)),this.containers[u].containerCache.over=1);else{for(i=1e4,s=null,n=(l=c.floating||this._isFloating(this.currentItem))?"left":"top",o=l?"width":"height",h=l?"pageX":"pageY",e=this.items.length-1;0<=e;e--)V.contains(this.containers[u].element[0],this.items[e].item[0])&&this.items[e].item[0]!==this.currentItem[0]&&(a=this.items[e].item.offset()[n],r=!1,t[h]-a>this.items[e][o]/2&&(r=!0),Math.abs(t[h]-a)this.containment[2]&&(i=this.containment[2]+this.offset.click.left),t.pageY-this.offset.click.top>this.containment[3]&&(s=this.containment[3]+this.offset.click.top)),e.grid&&(t=this.originalPageY+Math.round((s-this.originalPageY)/e.grid[1])*e.grid[1],s=!this.containment||t-this.offset.click.top>=this.containment[1]&&t-this.offset.click.top<=this.containment[3]?t:t-this.offset.click.top>=this.containment[1]?t-e.grid[1]:t+e.grid[1],t=this.originalPageX+Math.round((i-this.originalPageX)/e.grid[0])*e.grid[0],i=!this.containment||t-this.offset.click.left>=this.containment[0]&&t-this.offset.click.left<=this.containment[2]?t:t-this.offset.click.left>=this.containment[0]?t-e.grid[0]:t+e.grid[0])),{top:s-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.scrollParent.scrollTop():o?0:n.scrollTop()),left:i-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():o?0:n.scrollLeft())}},_rearrange:function(t,e,i,s){i?i[0].appendChild(this.placeholder[0]):e.item[0].parentNode.insertBefore(this.placeholder[0],"down"===this.direction?e.item[0]:e.item[0].nextSibling),this.counter=this.counter?++this.counter:1;var n=this.counter;this._delay(function(){n===this.counter&&this.refreshPositions(!s)})},_clear:function(t,e){this.reverting=!1;var i,s=[];if(!this._noFinalSort&&this.currentItem.parent().length&&this.placeholder.before(this.currentItem),this._noFinalSort=null,this.helper[0]===this.currentItem[0]){for(i in this._storedCSS)"auto"!==this._storedCSS[i]&&"static"!==this._storedCSS[i]||(this._storedCSS[i]="");this.currentItem.css(this._storedCSS),this._removeClass(this.currentItem,"ui-sortable-helper")}else this.currentItem.show();function n(e,i,s){return function(t){s._trigger(e,t,i._uiHash(i))}}for(this.fromOutside&&!e&&s.push(function(t){this._trigger("receive",t,this._uiHash(this.fromOutside))}),!this.fromOutside&&this.domPosition.prev===this.currentItem.prev().not(".ui-sortable-helper")[0]&&this.domPosition.parent===this.currentItem.parent()[0]||e||s.push(function(t){this._trigger("update",t,this._uiHash())}),this!==this.currentContainer&&(e||(s.push(function(t){this._trigger("remove",t,this._uiHash())}),s.push(function(e){return function(t){e._trigger("receive",t,this._uiHash(this))}}.call(this,this.currentContainer)),s.push(function(e){return function(t){e._trigger("update",t,this._uiHash(this))}}.call(this,this.currentContainer)))),i=this.containers.length-1;0<=i;i--)e||s.push(n("deactivate",this,this.containers[i])),this.containers[i].containerCache.over&&(s.push(n("out",this,this.containers[i])),this.containers[i].containerCache.over=0);if(this.storedCursor&&(this.document.find("body").css("cursor",this.storedCursor),this.storedStylesheet.remove()),this._storedOpacity&&this.helper.css("opacity",this._storedOpacity),this._storedZIndex&&this.helper.css("zIndex","auto"===this._storedZIndex?"":this._storedZIndex),this.dragging=!1,e||this._trigger("beforeStop",t,this._uiHash()),this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.cancelHelperRemoval||(this.helper[0]!==this.currentItem[0]&&this.helper.remove(),this.helper=null),!e){for(i=0;i",widgetEventPrefix:"spin",options:{classes:{"ui-spinner":"ui-corner-all","ui-spinner-down":"ui-corner-br","ui-spinner-up":"ui-corner-tr"},culture:null,icons:{down:"ui-icon-triangle-1-s",up:"ui-icon-triangle-1-n"},incremental:!0,max:null,min:null,numberFormat:null,page:10,step:1,change:null,spin:null,start:null,stop:null},_create:function(){this._setOption("max",this.options.max),this._setOption("min",this.options.min),this._setOption("step",this.options.step),""!==this.value()&&this._value(this.element.val(),!0),this._draw(),this._on(this._events),this._refresh(),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_getCreateOptions:function(){var s=this._super(),n=this.element;return V.each(["min","max","step"],function(t,e){var i=n.attr(e);null!=i&&i.length&&(s[e]=i)}),s},_events:{keydown:function(t){this._start(t)&&this._keydown(t)&&t.preventDefault()},keyup:"_stop",focus:function(){this.previous=this.element.val()},blur:function(t){this.cancelBlur?delete this.cancelBlur:(this._stop(),this._refresh(),this.previous!==this.element.val()&&this._trigger("change",t))},mousewheel:function(t,e){var i=V.ui.safeActiveElement(this.document[0]);if(this.element[0]===i&&e){if(!this.spinning&&!this._start(t))return!1;this._spin((0").parent().append("")},_draw:function(){this._enhance(),this._addClass(this.uiSpinner,"ui-spinner","ui-widget ui-widget-content"),this._addClass("ui-spinner-input"),this.element.attr("role","spinbutton"),this.buttons=this.uiSpinner.children("a").attr("tabIndex",-1).attr("aria-hidden",!0).button({classes:{"ui-button":""}}),this._removeClass(this.buttons,"ui-corner-all"),this._addClass(this.buttons.first(),"ui-spinner-button ui-spinner-up"),this._addClass(this.buttons.last(),"ui-spinner-button ui-spinner-down"),this.buttons.first().button({icon:this.options.icons.up,showLabel:!1}),this.buttons.last().button({icon:this.options.icons.down,showLabel:!1}),this.buttons.height()>Math.ceil(.5*this.uiSpinner.height())&&0e.max?e.max:null!==e.min&&t"},_buttonHtml:function(){return""}});var ct;V.ui.spinner;V.widget("ui.tabs",{version:"1.13.1",delay:300,options:{active:null,classes:{"ui-tabs":"ui-corner-all","ui-tabs-nav":"ui-corner-all","ui-tabs-panel":"ui-corner-bottom","ui-tabs-tab":"ui-corner-top"},collapsible:!1,event:"click",heightStyle:"content",hide:null,show:null,activate:null,beforeActivate:null,beforeLoad:null,load:null},_isLocal:(ct=/#.*$/,function(t){var e=t.href.replace(ct,""),i=location.href.replace(ct,"");try{e=decodeURIComponent(e)}catch(t){}try{i=decodeURIComponent(i)}catch(t){}return 1?@\[\]\^`{|}~]/g,"\\$&"):""},refresh:function(){var t=this.options,e=this.tablist.children(":has(a[href])");t.disabled=V.map(e.filter(".ui-state-disabled"),function(t){return e.index(t)}),this._processTabs(),!1!==t.active&&this.anchors.length?this.active.length&&!V.contains(this.tablist[0],this.active[0])?this.tabs.length===t.disabled.length?(t.active=!1,this.active=V()):this._activate(this._findNextTab(Math.max(0,t.active-1),!1)):t.active=this.tabs.index(this.active):(t.active=!1,this.active=V()),this._refresh()},_refresh:function(){this._setOptionDisabled(this.options.disabled),this._setupEvents(this.options.event),this._setupHeightStyle(this.options.heightStyle),this.tabs.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}),this.panels.not(this._getPanelForTab(this.active)).hide().attr({"aria-hidden":"true"}),this.active.length?(this.active.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}),this._addClass(this.active,"ui-tabs-active","ui-state-active"),this._getPanelForTab(this.active).show().attr({"aria-hidden":"false"})):this.tabs.eq(0).attr("tabIndex",0)},_processTabs:function(){var l=this,t=this.tabs,e=this.anchors,i=this.panels;this.tablist=this._getList().attr("role","tablist"),this._addClass(this.tablist,"ui-tabs-nav","ui-helper-reset ui-helper-clearfix ui-widget-header"),this.tablist.on("mousedown"+this.eventNamespace,"> li",function(t){V(this).is(".ui-state-disabled")&&t.preventDefault()}).on("focus"+this.eventNamespace,".ui-tabs-anchor",function(){V(this).closest("li").is(".ui-state-disabled")&&this.blur()}),this.tabs=this.tablist.find("> li:has(a[href])").attr({role:"tab",tabIndex:-1}),this._addClass(this.tabs,"ui-tabs-tab","ui-state-default"),this.anchors=this.tabs.map(function(){return V("a",this)[0]}).attr({tabIndex:-1}),this._addClass(this.anchors,"ui-tabs-anchor"),this.panels=V(),this.anchors.each(function(t,e){var i,s,n,o=V(e).uniqueId().attr("id"),a=V(e).closest("li"),r=a.attr("aria-controls");l._isLocal(e)?(n=(i=e.hash).substring(1),s=l.element.find(l._sanitizeSelector(i))):(n=a.attr("aria-controls")||V({}).uniqueId()[0].id,(s=l.element.find(i="#"+n)).length||(s=l._createPanel(n)).insertAfter(l.panels[t-1]||l.tablist),s.attr("aria-live","polite")),s.length&&(l.panels=l.panels.add(s)),r&&a.data("ui-tabs-aria-controls",r),a.attr({"aria-controls":n,"aria-labelledby":o}),s.attr("aria-labelledby",o)}),this.panels.attr("role","tabpanel"),this._addClass(this.panels,"ui-tabs-panel","ui-widget-content"),t&&(this._off(t.not(this.tabs)),this._off(e.not(this.anchors)),this._off(i.not(this.panels)))},_getList:function(){return this.tablist||this.element.find("ol, ul").eq(0)},_createPanel:function(t){return V("
        ").attr("id",t).data("ui-tabs-destroy",!0)},_setOptionDisabled:function(t){var e,i;for(Array.isArray(t)&&(t.length?t.length===this.anchors.length&&(t=!0):t=!1),i=0;e=this.tabs[i];i++)e=V(e),!0===t||-1!==V.inArray(i,t)?(e.attr("aria-disabled","true"),this._addClass(e,null,"ui-state-disabled")):(e.removeAttr("aria-disabled"),this._removeClass(e,null,"ui-state-disabled"));this.options.disabled=t,this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!0===t)},_setupEvents:function(t){var i={};t&&V.each(t.split(" "),function(t,e){i[e]="_eventHandler"}),this._off(this.anchors.add(this.tabs).add(this.panels)),this._on(!0,this.anchors,{click:function(t){t.preventDefault()}}),this._on(this.anchors,i),this._on(this.tabs,{keydown:"_tabKeydown"}),this._on(this.panels,{keydown:"_panelKeydown"}),this._focusable(this.tabs),this._hoverable(this.tabs)},_setupHeightStyle:function(t){var i,e=this.element.parent();"fill"===t?(i=e.height(),i-=this.element.outerHeight()-this.element.height(),this.element.siblings(":visible").each(function(){var t=V(this),e=t.css("position");"absolute"!==e&&"fixed"!==e&&(i-=t.outerHeight(!0))}),this.element.children().not(this.panels).each(function(){i-=V(this).outerHeight(!0)}),this.panels.each(function(){V(this).height(Math.max(0,i-V(this).innerHeight()+V(this).height()))}).css("overflow","auto")):"auto"===t&&(i=0,this.panels.each(function(){i=Math.max(i,V(this).height("").height())}).height(i))},_eventHandler:function(t){var e=this.options,i=this.active,s=V(t.currentTarget).closest("li"),n=s[0]===i[0],o=n&&e.collapsible,a=o?V():this._getPanelForTab(s),r=i.length?this._getPanelForTab(i):V(),i={oldTab:i,oldPanel:r,newTab:o?V():s,newPanel:a};t.preventDefault(),s.hasClass("ui-state-disabled")||s.hasClass("ui-tabs-loading")||this.running||n&&!e.collapsible||!1===this._trigger("beforeActivate",t,i)||(e.active=!o&&this.tabs.index(s),this.active=n?V():s,this.xhr&&this.xhr.abort(),r.length||a.length||V.error("jQuery UI Tabs: Mismatching fragment identifier."),a.length&&this.load(this.tabs.index(s),t),this._toggle(t,i))},_toggle:function(t,e){var i=this,s=e.newPanel,n=e.oldPanel;function o(){i.running=!1,i._trigger("activate",t,e)}function a(){i._addClass(e.newTab.closest("li"),"ui-tabs-active","ui-state-active"),s.length&&i.options.show?i._show(s,i.options.show,o):(s.show(),o())}this.running=!0,n.length&&this.options.hide?this._hide(n,this.options.hide,function(){i._removeClass(e.oldTab.closest("li"),"ui-tabs-active","ui-state-active"),a()}):(this._removeClass(e.oldTab.closest("li"),"ui-tabs-active","ui-state-active"),n.hide(),a()),n.attr("aria-hidden","true"),e.oldTab.attr({"aria-selected":"false","aria-expanded":"false"}),s.length&&n.length?e.oldTab.attr("tabIndex",-1):s.length&&this.tabs.filter(function(){return 0===V(this).attr("tabIndex")}).attr("tabIndex",-1),s.attr("aria-hidden","false"),e.newTab.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_activate:function(t){var t=this._findActive(t);t[0]!==this.active[0]&&(t=(t=!t.length?this.active:t).find(".ui-tabs-anchor")[0],this._eventHandler({target:t,currentTarget:t,preventDefault:V.noop}))},_findActive:function(t){return!1===t?V():this.tabs.eq(t)},_getIndex:function(t){return t="string"==typeof t?this.anchors.index(this.anchors.filter("[href$='"+V.escapeSelector(t)+"']")):t},_destroy:function(){this.xhr&&this.xhr.abort(),this.tablist.removeAttr("role").off(this.eventNamespace),this.anchors.removeAttr("role tabIndex").removeUniqueId(),this.tabs.add(this.panels).each(function(){V.data(this,"ui-tabs-destroy")?V(this).remove():V(this).removeAttr("role tabIndex aria-live aria-busy aria-selected aria-labelledby aria-hidden aria-expanded")}),this.tabs.each(function(){var t=V(this),e=t.data("ui-tabs-aria-controls");e?t.attr("aria-controls",e).removeData("ui-tabs-aria-controls"):t.removeAttr("aria-controls")}),this.panels.show(),"content"!==this.options.heightStyle&&this.panels.css("height","")},enable:function(i){var t=this.options.disabled;!1!==t&&(t=void 0!==i&&(i=this._getIndex(i),Array.isArray(t)?V.map(t,function(t){return t!==i?t:null}):V.map(this.tabs,function(t,e){return e!==i?e:null})),this._setOptionDisabled(t))},disable:function(t){var e=this.options.disabled;if(!0!==e){if(void 0===t)e=!0;else{if(t=this._getIndex(t),-1!==V.inArray(t,e))return;e=Array.isArray(e)?V.merge([t],e).sort():[t]}this._setOptionDisabled(e)}},load:function(t,s){t=this._getIndex(t);function n(t,e){"abort"===e&&o.panels.stop(!1,!0),o._removeClass(i,"ui-tabs-loading"),a.removeAttr("aria-busy"),t===o.xhr&&delete o.xhr}var o=this,i=this.tabs.eq(t),t=i.find(".ui-tabs-anchor"),a=this._getPanelForTab(i),r={tab:i,panel:a};this._isLocal(t[0])||(this.xhr=V.ajax(this._ajaxSettings(t,s,r)),this.xhr&&"canceled"!==this.xhr.statusText&&(this._addClass(i,"ui-tabs-loading"),a.attr("aria-busy","true"),this.xhr.done(function(t,e,i){setTimeout(function(){a.html(t),o._trigger("load",s,r),n(i,e)},1)}).fail(function(t,e){setTimeout(function(){n(t,e)},1)})))},_ajaxSettings:function(t,i,s){var n=this;return{url:t.attr("href").replace(/#.*$/,""),beforeSend:function(t,e){return n._trigger("beforeLoad",i,V.extend({jqXHR:t,ajaxSettings:e},s))}}},_getPanelForTab:function(t){t=V(t).attr("aria-controls");return this.element.find(this._sanitizeSelector("#"+t))}}),!1!==V.uiBackCompat&&V.widget("ui.tabs",V.ui.tabs,{_processTabs:function(){this._superApply(arguments),this._addClass(this.tabs,"ui-tab")}});V.ui.tabs;V.widget("ui.tooltip",{version:"1.13.1",options:{classes:{"ui-tooltip":"ui-corner-all ui-widget-shadow"},content:function(){var t=V(this).attr("title");return V("").text(t).html()},hide:!0,items:"[title]:not([disabled])",position:{my:"left top+15",at:"left bottom",collision:"flipfit flip"},show:!0,track:!1,close:null,open:null},_addDescribedBy:function(t,e){var i=(t.attr("aria-describedby")||"").split(/\s+/);i.push(e),t.data("ui-tooltip-id",e).attr("aria-describedby",String.prototype.trim.call(i.join(" ")))},_removeDescribedBy:function(t){var e=t.data("ui-tooltip-id"),i=(t.attr("aria-describedby")||"").split(/\s+/),e=V.inArray(e,i);-1!==e&&i.splice(e,1),t.removeData("ui-tooltip-id"),(i=String.prototype.trim.call(i.join(" ")))?t.attr("aria-describedby",i):t.removeAttr("aria-describedby")},_create:function(){this._on({mouseover:"open",focusin:"open"}),this.tooltips={},this.parents={},this.liveRegion=V("
        ").attr({role:"log","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this.disabledTitles=V([])},_setOption:function(t,e){var i=this;this._super(t,e),"content"===t&&V.each(this.tooltips,function(t,e){i._updateContent(e.element)})},_setOptionDisabled:function(t){this[t?"_disable":"_enable"]()},_disable:function(){var s=this;V.each(this.tooltips,function(t,e){var i=V.Event("blur");i.target=i.currentTarget=e.element[0],s.close(i,!0)}),this.disabledTitles=this.disabledTitles.add(this.element.find(this.options.items).addBack().filter(function(){var t=V(this);if(t.is("[title]"))return t.data("ui-tooltip-title",t.attr("title")).removeAttr("title")}))},_enable:function(){this.disabledTitles.each(function(){var t=V(this);t.data("ui-tooltip-title")&&t.attr("title",t.data("ui-tooltip-title"))}),this.disabledTitles=V([])},open:function(t){var i=this,e=V(t?t.target:this.element).closest(this.options.items);e.length&&!e.data("ui-tooltip-id")&&(e.attr("title")&&e.data("ui-tooltip-title",e.attr("title")),e.data("ui-tooltip-open",!0),t&&"mouseover"===t.type&&e.parents().each(function(){var t,e=V(this);e.data("ui-tooltip-open")&&((t=V.Event("blur")).target=t.currentTarget=this,i.close(t,!0)),e.attr("title")&&(e.uniqueId(),i.parents[this.id]={element:this,title:e.attr("title")},e.attr("title",""))}),this._registerCloseHandlers(t,e),this._updateContent(e,t))},_updateContent:function(e,i){var t=this.options.content,s=this,n=i?i.type:null;if("string"==typeof t||t.nodeType||t.jquery)return this._open(i,e,t);(t=t.call(e[0],function(t){s._delay(function(){e.data("ui-tooltip-open")&&(i&&(i.type=n),this._open(i,e,t))})}))&&this._open(i,e,t)},_open:function(t,e,i){var s,n,o,a=V.extend({},this.options.position);function r(t){a.of=t,n.is(":hidden")||n.position(a)}i&&((s=this._find(e))?s.tooltip.find(".ui-tooltip-content").html(i):(e.is("[title]")&&(t&&"mouseover"===t.type?e.attr("title",""):e.removeAttr("title")),s=this._tooltip(e),n=s.tooltip,this._addDescribedBy(e,n.attr("id")),n.find(".ui-tooltip-content").html(i),this.liveRegion.children().hide(),(i=V("
        ").html(n.find(".ui-tooltip-content").html())).removeAttr("name").find("[name]").removeAttr("name"),i.removeAttr("id").find("[id]").removeAttr("id"),i.appendTo(this.liveRegion),this.options.track&&t&&/^mouse/.test(t.type)?(this._on(this.document,{mousemove:r}),r(t)):n.position(V.extend({of:e},this.options.position)),n.hide(),this._show(n,this.options.show),this.options.track&&this.options.show&&this.options.show.delay&&(o=this.delayedShow=setInterval(function(){n.is(":visible")&&(r(a.of),clearInterval(o))},13)),this._trigger("open",t,{tooltip:n})))},_registerCloseHandlers:function(t,e){var i={keyup:function(t){t.keyCode===V.ui.keyCode.ESCAPE&&((t=V.Event(t)).currentTarget=e[0],this.close(t,!0))}};e[0]!==this.element[0]&&(i.remove=function(){var t=this._find(e);t&&this._removeTooltip(t.tooltip)}),t&&"mouseover"!==t.type||(i.mouseleave="close"),t&&"focusin"!==t.type||(i.focusout="close"),this._on(!0,e,i)},close:function(t){var e,i=this,s=V(t?t.currentTarget:this.element),n=this._find(s);n?(e=n.tooltip,n.closing||(clearInterval(this.delayedShow),s.data("ui-tooltip-title")&&!s.attr("title")&&s.attr("title",s.data("ui-tooltip-title")),this._removeDescribedBy(s),n.hiding=!0,e.stop(!0),this._hide(e,this.options.hide,function(){i._removeTooltip(V(this))}),s.removeData("ui-tooltip-open"),this._off(s,"mouseleave focusout keyup"),s[0]!==this.element[0]&&this._off(s,"remove"),this._off(this.document,"mousemove"),t&&"mouseleave"===t.type&&V.each(this.parents,function(t,e){V(e.element).attr("title",e.title),delete i.parents[t]}),n.closing=!0,this._trigger("close",t,{tooltip:e}),n.hiding||(n.closing=!1))):s.removeData("ui-tooltip-open")},_tooltip:function(t){var e=V("
        ").attr("role","tooltip"),i=V("
        ").appendTo(e),s=e.uniqueId().attr("id");return this._addClass(i,"ui-tooltip-content"),this._addClass(e,"ui-tooltip","ui-widget ui-widget-content"),e.appendTo(this._appendTo(t)),this.tooltips[s]={element:t,tooltip:e}},_find:function(t){t=t.data("ui-tooltip-id");return t?this.tooltips[t]:null},_removeTooltip:function(t){clearInterval(this.delayedShow),t.remove(),delete this.tooltips[t.attr("id")]},_appendTo:function(t){t=t.closest(".ui-front, dialog");return t=!t.length?this.document[0].body:t},_destroy:function(){var s=this;V.each(this.tooltips,function(t,e){var i=V.Event("blur"),e=e.element;i.target=i.currentTarget=e[0],s.close(i,!0),V("#"+t).remove(),e.data("ui-tooltip-title")&&(e.attr("title")||e.attr("title",e.data("ui-tooltip-title")),e.removeData("ui-tooltip-title"))}),this.liveRegion.remove()}}),!1!==V.uiBackCompat&&V.widget("ui.tooltip",V.ui.tooltip,{options:{tooltipClass:null},_tooltip:function(){var t=this._superApply(arguments);return this.options.tooltipClass&&t.tooltip.addClass(this.options.tooltipClass),t}});V.ui.tooltip}); \ No newline at end of file diff --git a/docs/.clay_files/html-default3.js b/docs/.clay_files/html-default3.js new file mode 100644 index 0000000..cc0a255 --- /dev/null +++ b/docs/.clay_files/html-default3.js @@ -0,0 +1,7 @@ +/*! + * Bootstrap v5.1.3 (https://getbootstrap.com/) + * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + */ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).bootstrap=e()}(this,(function(){"use strict";const t="transitionend",e=t=>{let e=t.getAttribute("data-bs-target");if(!e||"#"===e){let i=t.getAttribute("href");if(!i||!i.includes("#")&&!i.startsWith("."))return null;i.includes("#")&&!i.startsWith("#")&&(i=`#${i.split("#")[1]}`),e=i&&"#"!==i?i.trim():null}return e},i=t=>{const i=e(t);return i&&document.querySelector(i)?i:null},n=t=>{const i=e(t);return i?document.querySelector(i):null},s=e=>{e.dispatchEvent(new Event(t))},o=t=>!(!t||"object"!=typeof t)&&(void 0!==t.jquery&&(t=t[0]),void 0!==t.nodeType),r=t=>o(t)?t.jquery?t[0]:t:"string"==typeof t&&t.length>0?document.querySelector(t):null,a=(t,e,i)=>{Object.keys(i).forEach((n=>{const s=i[n],r=e[n],a=r&&o(r)?"element":null==(l=r)?`${l}`:{}.toString.call(l).match(/\s([a-z]+)/i)[1].toLowerCase();var l;if(!new RegExp(s).test(a))throw new TypeError(`${t.toUpperCase()}: Option "${n}" provided type "${a}" but expected type "${s}".`)}))},l=t=>!(!o(t)||0===t.getClientRects().length)&&"visible"===getComputedStyle(t).getPropertyValue("visibility"),c=t=>!t||t.nodeType!==Node.ELEMENT_NODE||!!t.classList.contains("disabled")||(void 0!==t.disabled?t.disabled:t.hasAttribute("disabled")&&"false"!==t.getAttribute("disabled")),h=t=>{if(!document.documentElement.attachShadow)return null;if("function"==typeof t.getRootNode){const e=t.getRootNode();return e instanceof ShadowRoot?e:null}return t instanceof ShadowRoot?t:t.parentNode?h(t.parentNode):null},d=()=>{},u=t=>{t.offsetHeight},f=()=>{const{jQuery:t}=window;return t&&!document.body.hasAttribute("data-bs-no-jquery")?t:null},p=[],m=()=>"rtl"===document.documentElement.dir,g=t=>{var e;e=()=>{const e=f();if(e){const i=t.NAME,n=e.fn[i];e.fn[i]=t.jQueryInterface,e.fn[i].Constructor=t,e.fn[i].noConflict=()=>(e.fn[i]=n,t.jQueryInterface)}},"loading"===document.readyState?(p.length||document.addEventListener("DOMContentLoaded",(()=>{p.forEach((t=>t()))})),p.push(e)):e()},_=t=>{"function"==typeof t&&t()},b=(e,i,n=!0)=>{if(!n)return void _(e);const o=(t=>{if(!t)return 0;let{transitionDuration:e,transitionDelay:i}=window.getComputedStyle(t);const n=Number.parseFloat(e),s=Number.parseFloat(i);return n||s?(e=e.split(",")[0],i=i.split(",")[0],1e3*(Number.parseFloat(e)+Number.parseFloat(i))):0})(i)+5;let r=!1;const a=({target:n})=>{n===i&&(r=!0,i.removeEventListener(t,a),_(e))};i.addEventListener(t,a),setTimeout((()=>{r||s(i)}),o)},v=(t,e,i,n)=>{let s=t.indexOf(e);if(-1===s)return t[!i&&n?t.length-1:0];const o=t.length;return s+=i?1:-1,n&&(s=(s+o)%o),t[Math.max(0,Math.min(s,o-1))]},y=/[^.]*(?=\..*)\.|.*/,w=/\..*/,E=/::\d+$/,A={};let T=1;const O={mouseenter:"mouseover",mouseleave:"mouseout"},C=/^(mouseenter|mouseleave)/i,k=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function L(t,e){return e&&`${e}::${T++}`||t.uidEvent||T++}function x(t){const e=L(t);return t.uidEvent=e,A[e]=A[e]||{},A[e]}function D(t,e,i=null){const n=Object.keys(t);for(let s=0,o=n.length;sfunction(e){if(!e.relatedTarget||e.relatedTarget!==e.delegateTarget&&!e.delegateTarget.contains(e.relatedTarget))return t.call(this,e)};n?n=t(n):i=t(i)}const[o,r,a]=S(e,i,n),l=x(t),c=l[a]||(l[a]={}),h=D(c,r,o?i:null);if(h)return void(h.oneOff=h.oneOff&&s);const d=L(r,e.replace(y,"")),u=o?function(t,e,i){return function n(s){const o=t.querySelectorAll(e);for(let{target:r}=s;r&&r!==this;r=r.parentNode)for(let a=o.length;a--;)if(o[a]===r)return s.delegateTarget=r,n.oneOff&&j.off(t,s.type,e,i),i.apply(r,[s]);return null}}(t,i,n):function(t,e){return function i(n){return n.delegateTarget=t,i.oneOff&&j.off(t,n.type,e),e.apply(t,[n])}}(t,i);u.delegationSelector=o?i:null,u.originalHandler=r,u.oneOff=s,u.uidEvent=d,c[d]=u,t.addEventListener(a,u,o)}function I(t,e,i,n,s){const o=D(e[i],n,s);o&&(t.removeEventListener(i,o,Boolean(s)),delete e[i][o.uidEvent])}function P(t){return t=t.replace(w,""),O[t]||t}const j={on(t,e,i,n){N(t,e,i,n,!1)},one(t,e,i,n){N(t,e,i,n,!0)},off(t,e,i,n){if("string"!=typeof e||!t)return;const[s,o,r]=S(e,i,n),a=r!==e,l=x(t),c=e.startsWith(".");if(void 0!==o){if(!l||!l[r])return;return void I(t,l,r,o,s?i:null)}c&&Object.keys(l).forEach((i=>{!function(t,e,i,n){const s=e[i]||{};Object.keys(s).forEach((o=>{if(o.includes(n)){const n=s[o];I(t,e,i,n.originalHandler,n.delegationSelector)}}))}(t,l,i,e.slice(1))}));const h=l[r]||{};Object.keys(h).forEach((i=>{const n=i.replace(E,"");if(!a||e.includes(n)){const e=h[i];I(t,l,r,e.originalHandler,e.delegationSelector)}}))},trigger(t,e,i){if("string"!=typeof e||!t)return null;const n=f(),s=P(e),o=e!==s,r=k.has(s);let a,l=!0,c=!0,h=!1,d=null;return o&&n&&(a=n.Event(e,i),n(t).trigger(a),l=!a.isPropagationStopped(),c=!a.isImmediatePropagationStopped(),h=a.isDefaultPrevented()),r?(d=document.createEvent("HTMLEvents"),d.initEvent(s,l,!0)):d=new CustomEvent(e,{bubbles:l,cancelable:!0}),void 0!==i&&Object.keys(i).forEach((t=>{Object.defineProperty(d,t,{get:()=>i[t]})})),h&&d.preventDefault(),c&&t.dispatchEvent(d),d.defaultPrevented&&void 0!==a&&a.preventDefault(),d}},M=new Map,H={set(t,e,i){M.has(t)||M.set(t,new Map);const n=M.get(t);n.has(e)||0===n.size?n.set(e,i):console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(n.keys())[0]}.`)},get:(t,e)=>M.has(t)&&M.get(t).get(e)||null,remove(t,e){if(!M.has(t))return;const i=M.get(t);i.delete(e),0===i.size&&M.delete(t)}};class B{constructor(t){(t=r(t))&&(this._element=t,H.set(this._element,this.constructor.DATA_KEY,this))}dispose(){H.remove(this._element,this.constructor.DATA_KEY),j.off(this._element,this.constructor.EVENT_KEY),Object.getOwnPropertyNames(this).forEach((t=>{this[t]=null}))}_queueCallback(t,e,i=!0){b(t,e,i)}static getInstance(t){return H.get(r(t),this.DATA_KEY)}static getOrCreateInstance(t,e={}){return this.getInstance(t)||new this(t,"object"==typeof e?e:null)}static get VERSION(){return"5.1.3"}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}static get DATA_KEY(){return`bs.${this.NAME}`}static get EVENT_KEY(){return`.${this.DATA_KEY}`}}const R=(t,e="hide")=>{const i=`click.dismiss${t.EVENT_KEY}`,s=t.NAME;j.on(document,i,`[data-bs-dismiss="${s}"]`,(function(i){if(["A","AREA"].includes(this.tagName)&&i.preventDefault(),c(this))return;const o=n(this)||this.closest(`.${s}`);t.getOrCreateInstance(o)[e]()}))};class W extends B{static get NAME(){return"alert"}close(){if(j.trigger(this._element,"close.bs.alert").defaultPrevented)return;this._element.classList.remove("show");const t=this._element.classList.contains("fade");this._queueCallback((()=>this._destroyElement()),this._element,t)}_destroyElement(){this._element.remove(),j.trigger(this._element,"closed.bs.alert"),this.dispose()}static jQueryInterface(t){return this.each((function(){const e=W.getOrCreateInstance(this);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}R(W,"close"),g(W);const $='[data-bs-toggle="button"]';class z extends B{static get NAME(){return"button"}toggle(){this._element.setAttribute("aria-pressed",this._element.classList.toggle("active"))}static jQueryInterface(t){return this.each((function(){const e=z.getOrCreateInstance(this);"toggle"===t&&e[t]()}))}}function q(t){return"true"===t||"false"!==t&&(t===Number(t).toString()?Number(t):""===t||"null"===t?null:t)}function F(t){return t.replace(/[A-Z]/g,(t=>`-${t.toLowerCase()}`))}j.on(document,"click.bs.button.data-api",$,(t=>{t.preventDefault();const e=t.target.closest($);z.getOrCreateInstance(e).toggle()})),g(z);const U={setDataAttribute(t,e,i){t.setAttribute(`data-bs-${F(e)}`,i)},removeDataAttribute(t,e){t.removeAttribute(`data-bs-${F(e)}`)},getDataAttributes(t){if(!t)return{};const e={};return Object.keys(t.dataset).filter((t=>t.startsWith("bs"))).forEach((i=>{let n=i.replace(/^bs/,"");n=n.charAt(0).toLowerCase()+n.slice(1,n.length),e[n]=q(t.dataset[i])})),e},getDataAttribute:(t,e)=>q(t.getAttribute(`data-bs-${F(e)}`)),offset(t){const e=t.getBoundingClientRect();return{top:e.top+window.pageYOffset,left:e.left+window.pageXOffset}},position:t=>({top:t.offsetTop,left:t.offsetLeft})},V={find:(t,e=document.documentElement)=>[].concat(...Element.prototype.querySelectorAll.call(e,t)),findOne:(t,e=document.documentElement)=>Element.prototype.querySelector.call(e,t),children:(t,e)=>[].concat(...t.children).filter((t=>t.matches(e))),parents(t,e){const i=[];let n=t.parentNode;for(;n&&n.nodeType===Node.ELEMENT_NODE&&3!==n.nodeType;)n.matches(e)&&i.push(n),n=n.parentNode;return i},prev(t,e){let i=t.previousElementSibling;for(;i;){if(i.matches(e))return[i];i=i.previousElementSibling}return[]},next(t,e){let i=t.nextElementSibling;for(;i;){if(i.matches(e))return[i];i=i.nextElementSibling}return[]},focusableChildren(t){const e=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map((t=>`${t}:not([tabindex^="-"])`)).join(", ");return this.find(e,t).filter((t=>!c(t)&&l(t)))}},K="carousel",X={interval:5e3,keyboard:!0,slide:!1,pause:"hover",wrap:!0,touch:!0},Y={interval:"(number|boolean)",keyboard:"boolean",slide:"(boolean|string)",pause:"(string|boolean)",wrap:"boolean",touch:"boolean"},Q="next",G="prev",Z="left",J="right",tt={ArrowLeft:J,ArrowRight:Z},et="slid.bs.carousel",it="active",nt=".active.carousel-item";class st extends B{constructor(t,e){super(t),this._items=null,this._interval=null,this._activeElement=null,this._isPaused=!1,this._isSliding=!1,this.touchTimeout=null,this.touchStartX=0,this.touchDeltaX=0,this._config=this._getConfig(e),this._indicatorsElement=V.findOne(".carousel-indicators",this._element),this._touchSupported="ontouchstart"in document.documentElement||navigator.maxTouchPoints>0,this._pointerEvent=Boolean(window.PointerEvent),this._addEventListeners()}static get Default(){return X}static get NAME(){return K}next(){this._slide(Q)}nextWhenVisible(){!document.hidden&&l(this._element)&&this.next()}prev(){this._slide(G)}pause(t){t||(this._isPaused=!0),V.findOne(".carousel-item-next, .carousel-item-prev",this._element)&&(s(this._element),this.cycle(!0)),clearInterval(this._interval),this._interval=null}cycle(t){t||(this._isPaused=!1),this._interval&&(clearInterval(this._interval),this._interval=null),this._config&&this._config.interval&&!this._isPaused&&(this._updateInterval(),this._interval=setInterval((document.visibilityState?this.nextWhenVisible:this.next).bind(this),this._config.interval))}to(t){this._activeElement=V.findOne(nt,this._element);const e=this._getItemIndex(this._activeElement);if(t>this._items.length-1||t<0)return;if(this._isSliding)return void j.one(this._element,et,(()=>this.to(t)));if(e===t)return this.pause(),void this.cycle();const i=t>e?Q:G;this._slide(i,this._items[t])}_getConfig(t){return t={...X,...U.getDataAttributes(this._element),..."object"==typeof t?t:{}},a(K,t,Y),t}_handleSwipe(){const t=Math.abs(this.touchDeltaX);if(t<=40)return;const e=t/this.touchDeltaX;this.touchDeltaX=0,e&&this._slide(e>0?J:Z)}_addEventListeners(){this._config.keyboard&&j.on(this._element,"keydown.bs.carousel",(t=>this._keydown(t))),"hover"===this._config.pause&&(j.on(this._element,"mouseenter.bs.carousel",(t=>this.pause(t))),j.on(this._element,"mouseleave.bs.carousel",(t=>this.cycle(t)))),this._config.touch&&this._touchSupported&&this._addTouchEventListeners()}_addTouchEventListeners(){const t=t=>this._pointerEvent&&("pen"===t.pointerType||"touch"===t.pointerType),e=e=>{t(e)?this.touchStartX=e.clientX:this._pointerEvent||(this.touchStartX=e.touches[0].clientX)},i=t=>{this.touchDeltaX=t.touches&&t.touches.length>1?0:t.touches[0].clientX-this.touchStartX},n=e=>{t(e)&&(this.touchDeltaX=e.clientX-this.touchStartX),this._handleSwipe(),"hover"===this._config.pause&&(this.pause(),this.touchTimeout&&clearTimeout(this.touchTimeout),this.touchTimeout=setTimeout((t=>this.cycle(t)),500+this._config.interval))};V.find(".carousel-item img",this._element).forEach((t=>{j.on(t,"dragstart.bs.carousel",(t=>t.preventDefault()))})),this._pointerEvent?(j.on(this._element,"pointerdown.bs.carousel",(t=>e(t))),j.on(this._element,"pointerup.bs.carousel",(t=>n(t))),this._element.classList.add("pointer-event")):(j.on(this._element,"touchstart.bs.carousel",(t=>e(t))),j.on(this._element,"touchmove.bs.carousel",(t=>i(t))),j.on(this._element,"touchend.bs.carousel",(t=>n(t))))}_keydown(t){if(/input|textarea/i.test(t.target.tagName))return;const e=tt[t.key];e&&(t.preventDefault(),this._slide(e))}_getItemIndex(t){return this._items=t&&t.parentNode?V.find(".carousel-item",t.parentNode):[],this._items.indexOf(t)}_getItemByOrder(t,e){const i=t===Q;return v(this._items,e,i,this._config.wrap)}_triggerSlideEvent(t,e){const i=this._getItemIndex(t),n=this._getItemIndex(V.findOne(nt,this._element));return j.trigger(this._element,"slide.bs.carousel",{relatedTarget:t,direction:e,from:n,to:i})}_setActiveIndicatorElement(t){if(this._indicatorsElement){const e=V.findOne(".active",this._indicatorsElement);e.classList.remove(it),e.removeAttribute("aria-current");const i=V.find("[data-bs-target]",this._indicatorsElement);for(let e=0;e{j.trigger(this._element,et,{relatedTarget:o,direction:d,from:s,to:r})};if(this._element.classList.contains("slide")){o.classList.add(h),u(o),n.classList.add(c),o.classList.add(c);const t=()=>{o.classList.remove(c,h),o.classList.add(it),n.classList.remove(it,h,c),this._isSliding=!1,setTimeout(f,0)};this._queueCallback(t,n,!0)}else n.classList.remove(it),o.classList.add(it),this._isSliding=!1,f();a&&this.cycle()}_directionToOrder(t){return[J,Z].includes(t)?m()?t===Z?G:Q:t===Z?Q:G:t}_orderToDirection(t){return[Q,G].includes(t)?m()?t===G?Z:J:t===G?J:Z:t}static carouselInterface(t,e){const i=st.getOrCreateInstance(t,e);let{_config:n}=i;"object"==typeof e&&(n={...n,...e});const s="string"==typeof e?e:n.slide;if("number"==typeof e)i.to(e);else if("string"==typeof s){if(void 0===i[s])throw new TypeError(`No method named "${s}"`);i[s]()}else n.interval&&n.ride&&(i.pause(),i.cycle())}static jQueryInterface(t){return this.each((function(){st.carouselInterface(this,t)}))}static dataApiClickHandler(t){const e=n(this);if(!e||!e.classList.contains("carousel"))return;const i={...U.getDataAttributes(e),...U.getDataAttributes(this)},s=this.getAttribute("data-bs-slide-to");s&&(i.interval=!1),st.carouselInterface(e,i),s&&st.getInstance(e).to(s),t.preventDefault()}}j.on(document,"click.bs.carousel.data-api","[data-bs-slide], [data-bs-slide-to]",st.dataApiClickHandler),j.on(window,"load.bs.carousel.data-api",(()=>{const t=V.find('[data-bs-ride="carousel"]');for(let e=0,i=t.length;et===this._element));null!==s&&o.length&&(this._selector=s,this._triggerArray.push(e))}this._initializeChildren(),this._config.parent||this._addAriaAndCollapsedClass(this._triggerArray,this._isShown()),this._config.toggle&&this.toggle()}static get Default(){return rt}static get NAME(){return ot}toggle(){this._isShown()?this.hide():this.show()}show(){if(this._isTransitioning||this._isShown())return;let t,e=[];if(this._config.parent){const t=V.find(ut,this._config.parent);e=V.find(".collapse.show, .collapse.collapsing",this._config.parent).filter((e=>!t.includes(e)))}const i=V.findOne(this._selector);if(e.length){const n=e.find((t=>i!==t));if(t=n?pt.getInstance(n):null,t&&t._isTransitioning)return}if(j.trigger(this._element,"show.bs.collapse").defaultPrevented)return;e.forEach((e=>{i!==e&&pt.getOrCreateInstance(e,{toggle:!1}).hide(),t||H.set(e,"bs.collapse",null)}));const n=this._getDimension();this._element.classList.remove(ct),this._element.classList.add(ht),this._element.style[n]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;const s=`scroll${n[0].toUpperCase()+n.slice(1)}`;this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(ht),this._element.classList.add(ct,lt),this._element.style[n]="",j.trigger(this._element,"shown.bs.collapse")}),this._element,!0),this._element.style[n]=`${this._element[s]}px`}hide(){if(this._isTransitioning||!this._isShown())return;if(j.trigger(this._element,"hide.bs.collapse").defaultPrevented)return;const t=this._getDimension();this._element.style[t]=`${this._element.getBoundingClientRect()[t]}px`,u(this._element),this._element.classList.add(ht),this._element.classList.remove(ct,lt);const e=this._triggerArray.length;for(let t=0;t{this._isTransitioning=!1,this._element.classList.remove(ht),this._element.classList.add(ct),j.trigger(this._element,"hidden.bs.collapse")}),this._element,!0)}_isShown(t=this._element){return t.classList.contains(lt)}_getConfig(t){return(t={...rt,...U.getDataAttributes(this._element),...t}).toggle=Boolean(t.toggle),t.parent=r(t.parent),a(ot,t,at),t}_getDimension(){return this._element.classList.contains("collapse-horizontal")?"width":"height"}_initializeChildren(){if(!this._config.parent)return;const t=V.find(ut,this._config.parent);V.find(ft,this._config.parent).filter((e=>!t.includes(e))).forEach((t=>{const e=n(t);e&&this._addAriaAndCollapsedClass([t],this._isShown(e))}))}_addAriaAndCollapsedClass(t,e){t.length&&t.forEach((t=>{e?t.classList.remove(dt):t.classList.add(dt),t.setAttribute("aria-expanded",e)}))}static jQueryInterface(t){return this.each((function(){const e={};"string"==typeof t&&/show|hide/.test(t)&&(e.toggle=!1);const i=pt.getOrCreateInstance(this,e);if("string"==typeof t){if(void 0===i[t])throw new TypeError(`No method named "${t}"`);i[t]()}}))}}j.on(document,"click.bs.collapse.data-api",ft,(function(t){("A"===t.target.tagName||t.delegateTarget&&"A"===t.delegateTarget.tagName)&&t.preventDefault();const e=i(this);V.find(e).forEach((t=>{pt.getOrCreateInstance(t,{toggle:!1}).toggle()}))})),g(pt);var mt="top",gt="bottom",_t="right",bt="left",vt="auto",yt=[mt,gt,_t,bt],wt="start",Et="end",At="clippingParents",Tt="viewport",Ot="popper",Ct="reference",kt=yt.reduce((function(t,e){return t.concat([e+"-"+wt,e+"-"+Et])}),[]),Lt=[].concat(yt,[vt]).reduce((function(t,e){return t.concat([e,e+"-"+wt,e+"-"+Et])}),[]),xt="beforeRead",Dt="read",St="afterRead",Nt="beforeMain",It="main",Pt="afterMain",jt="beforeWrite",Mt="write",Ht="afterWrite",Bt=[xt,Dt,St,Nt,It,Pt,jt,Mt,Ht];function Rt(t){return t?(t.nodeName||"").toLowerCase():null}function Wt(t){if(null==t)return window;if("[object Window]"!==t.toString()){var e=t.ownerDocument;return e&&e.defaultView||window}return t}function $t(t){return t instanceof Wt(t).Element||t instanceof Element}function zt(t){return t instanceof Wt(t).HTMLElement||t instanceof HTMLElement}function qt(t){return"undefined"!=typeof ShadowRoot&&(t instanceof Wt(t).ShadowRoot||t instanceof ShadowRoot)}const Ft={name:"applyStyles",enabled:!0,phase:"write",fn:function(t){var e=t.state;Object.keys(e.elements).forEach((function(t){var i=e.styles[t]||{},n=e.attributes[t]||{},s=e.elements[t];zt(s)&&Rt(s)&&(Object.assign(s.style,i),Object.keys(n).forEach((function(t){var e=n[t];!1===e?s.removeAttribute(t):s.setAttribute(t,!0===e?"":e)})))}))},effect:function(t){var e=t.state,i={popper:{position:e.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(e.elements.popper.style,i.popper),e.styles=i,e.elements.arrow&&Object.assign(e.elements.arrow.style,i.arrow),function(){Object.keys(e.elements).forEach((function(t){var n=e.elements[t],s=e.attributes[t]||{},o=Object.keys(e.styles.hasOwnProperty(t)?e.styles[t]:i[t]).reduce((function(t,e){return t[e]="",t}),{});zt(n)&&Rt(n)&&(Object.assign(n.style,o),Object.keys(s).forEach((function(t){n.removeAttribute(t)})))}))}},requires:["computeStyles"]};function Ut(t){return t.split("-")[0]}function Vt(t,e){var i=t.getBoundingClientRect();return{width:i.width/1,height:i.height/1,top:i.top/1,right:i.right/1,bottom:i.bottom/1,left:i.left/1,x:i.left/1,y:i.top/1}}function Kt(t){var e=Vt(t),i=t.offsetWidth,n=t.offsetHeight;return Math.abs(e.width-i)<=1&&(i=e.width),Math.abs(e.height-n)<=1&&(n=e.height),{x:t.offsetLeft,y:t.offsetTop,width:i,height:n}}function Xt(t,e){var i=e.getRootNode&&e.getRootNode();if(t.contains(e))return!0;if(i&&qt(i)){var n=e;do{if(n&&t.isSameNode(n))return!0;n=n.parentNode||n.host}while(n)}return!1}function Yt(t){return Wt(t).getComputedStyle(t)}function Qt(t){return["table","td","th"].indexOf(Rt(t))>=0}function Gt(t){return(($t(t)?t.ownerDocument:t.document)||window.document).documentElement}function Zt(t){return"html"===Rt(t)?t:t.assignedSlot||t.parentNode||(qt(t)?t.host:null)||Gt(t)}function Jt(t){return zt(t)&&"fixed"!==Yt(t).position?t.offsetParent:null}function te(t){for(var e=Wt(t),i=Jt(t);i&&Qt(i)&&"static"===Yt(i).position;)i=Jt(i);return i&&("html"===Rt(i)||"body"===Rt(i)&&"static"===Yt(i).position)?e:i||function(t){var e=-1!==navigator.userAgent.toLowerCase().indexOf("firefox");if(-1!==navigator.userAgent.indexOf("Trident")&&zt(t)&&"fixed"===Yt(t).position)return null;for(var i=Zt(t);zt(i)&&["html","body"].indexOf(Rt(i))<0;){var n=Yt(i);if("none"!==n.transform||"none"!==n.perspective||"paint"===n.contain||-1!==["transform","perspective"].indexOf(n.willChange)||e&&"filter"===n.willChange||e&&n.filter&&"none"!==n.filter)return i;i=i.parentNode}return null}(t)||e}function ee(t){return["top","bottom"].indexOf(t)>=0?"x":"y"}var ie=Math.max,ne=Math.min,se=Math.round;function oe(t,e,i){return ie(t,ne(e,i))}function re(t){return Object.assign({},{top:0,right:0,bottom:0,left:0},t)}function ae(t,e){return e.reduce((function(e,i){return e[i]=t,e}),{})}const le={name:"arrow",enabled:!0,phase:"main",fn:function(t){var e,i=t.state,n=t.name,s=t.options,o=i.elements.arrow,r=i.modifiersData.popperOffsets,a=Ut(i.placement),l=ee(a),c=[bt,_t].indexOf(a)>=0?"height":"width";if(o&&r){var h=function(t,e){return re("number"!=typeof(t="function"==typeof t?t(Object.assign({},e.rects,{placement:e.placement})):t)?t:ae(t,yt))}(s.padding,i),d=Kt(o),u="y"===l?mt:bt,f="y"===l?gt:_t,p=i.rects.reference[c]+i.rects.reference[l]-r[l]-i.rects.popper[c],m=r[l]-i.rects.reference[l],g=te(o),_=g?"y"===l?g.clientHeight||0:g.clientWidth||0:0,b=p/2-m/2,v=h[u],y=_-d[c]-h[f],w=_/2-d[c]/2+b,E=oe(v,w,y),A=l;i.modifiersData[n]=((e={})[A]=E,e.centerOffset=E-w,e)}},effect:function(t){var e=t.state,i=t.options.element,n=void 0===i?"[data-popper-arrow]":i;null!=n&&("string"!=typeof n||(n=e.elements.popper.querySelector(n)))&&Xt(e.elements.popper,n)&&(e.elements.arrow=n)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function ce(t){return t.split("-")[1]}var he={top:"auto",right:"auto",bottom:"auto",left:"auto"};function de(t){var e,i=t.popper,n=t.popperRect,s=t.placement,o=t.variation,r=t.offsets,a=t.position,l=t.gpuAcceleration,c=t.adaptive,h=t.roundOffsets,d=!0===h?function(t){var e=t.x,i=t.y,n=window.devicePixelRatio||1;return{x:se(se(e*n)/n)||0,y:se(se(i*n)/n)||0}}(r):"function"==typeof h?h(r):r,u=d.x,f=void 0===u?0:u,p=d.y,m=void 0===p?0:p,g=r.hasOwnProperty("x"),_=r.hasOwnProperty("y"),b=bt,v=mt,y=window;if(c){var w=te(i),E="clientHeight",A="clientWidth";w===Wt(i)&&"static"!==Yt(w=Gt(i)).position&&"absolute"===a&&(E="scrollHeight",A="scrollWidth"),w=w,s!==mt&&(s!==bt&&s!==_t||o!==Et)||(v=gt,m-=w[E]-n.height,m*=l?1:-1),s!==bt&&(s!==mt&&s!==gt||o!==Et)||(b=_t,f-=w[A]-n.width,f*=l?1:-1)}var T,O=Object.assign({position:a},c&&he);return l?Object.assign({},O,((T={})[v]=_?"0":"",T[b]=g?"0":"",T.transform=(y.devicePixelRatio||1)<=1?"translate("+f+"px, "+m+"px)":"translate3d("+f+"px, "+m+"px, 0)",T)):Object.assign({},O,((e={})[v]=_?m+"px":"",e[b]=g?f+"px":"",e.transform="",e))}const ue={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(t){var e=t.state,i=t.options,n=i.gpuAcceleration,s=void 0===n||n,o=i.adaptive,r=void 0===o||o,a=i.roundOffsets,l=void 0===a||a,c={placement:Ut(e.placement),variation:ce(e.placement),popper:e.elements.popper,popperRect:e.rects.popper,gpuAcceleration:s};null!=e.modifiersData.popperOffsets&&(e.styles.popper=Object.assign({},e.styles.popper,de(Object.assign({},c,{offsets:e.modifiersData.popperOffsets,position:e.options.strategy,adaptive:r,roundOffsets:l})))),null!=e.modifiersData.arrow&&(e.styles.arrow=Object.assign({},e.styles.arrow,de(Object.assign({},c,{offsets:e.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-placement":e.placement})},data:{}};var fe={passive:!0};const pe={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(t){var e=t.state,i=t.instance,n=t.options,s=n.scroll,o=void 0===s||s,r=n.resize,a=void 0===r||r,l=Wt(e.elements.popper),c=[].concat(e.scrollParents.reference,e.scrollParents.popper);return o&&c.forEach((function(t){t.addEventListener("scroll",i.update,fe)})),a&&l.addEventListener("resize",i.update,fe),function(){o&&c.forEach((function(t){t.removeEventListener("scroll",i.update,fe)})),a&&l.removeEventListener("resize",i.update,fe)}},data:{}};var me={left:"right",right:"left",bottom:"top",top:"bottom"};function ge(t){return t.replace(/left|right|bottom|top/g,(function(t){return me[t]}))}var _e={start:"end",end:"start"};function be(t){return t.replace(/start|end/g,(function(t){return _e[t]}))}function ve(t){var e=Wt(t);return{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function ye(t){return Vt(Gt(t)).left+ve(t).scrollLeft}function we(t){var e=Yt(t),i=e.overflow,n=e.overflowX,s=e.overflowY;return/auto|scroll|overlay|hidden/.test(i+s+n)}function Ee(t){return["html","body","#document"].indexOf(Rt(t))>=0?t.ownerDocument.body:zt(t)&&we(t)?t:Ee(Zt(t))}function Ae(t,e){var i;void 0===e&&(e=[]);var n=Ee(t),s=n===(null==(i=t.ownerDocument)?void 0:i.body),o=Wt(n),r=s?[o].concat(o.visualViewport||[],we(n)?n:[]):n,a=e.concat(r);return s?a:a.concat(Ae(Zt(r)))}function Te(t){return Object.assign({},t,{left:t.x,top:t.y,right:t.x+t.width,bottom:t.y+t.height})}function Oe(t,e){return e===Tt?Te(function(t){var e=Wt(t),i=Gt(t),n=e.visualViewport,s=i.clientWidth,o=i.clientHeight,r=0,a=0;return n&&(s=n.width,o=n.height,/^((?!chrome|android).)*safari/i.test(navigator.userAgent)||(r=n.offsetLeft,a=n.offsetTop)),{width:s,height:o,x:r+ye(t),y:a}}(t)):zt(e)?function(t){var e=Vt(t);return e.top=e.top+t.clientTop,e.left=e.left+t.clientLeft,e.bottom=e.top+t.clientHeight,e.right=e.left+t.clientWidth,e.width=t.clientWidth,e.height=t.clientHeight,e.x=e.left,e.y=e.top,e}(e):Te(function(t){var e,i=Gt(t),n=ve(t),s=null==(e=t.ownerDocument)?void 0:e.body,o=ie(i.scrollWidth,i.clientWidth,s?s.scrollWidth:0,s?s.clientWidth:0),r=ie(i.scrollHeight,i.clientHeight,s?s.scrollHeight:0,s?s.clientHeight:0),a=-n.scrollLeft+ye(t),l=-n.scrollTop;return"rtl"===Yt(s||i).direction&&(a+=ie(i.clientWidth,s?s.clientWidth:0)-o),{width:o,height:r,x:a,y:l}}(Gt(t)))}function Ce(t){var e,i=t.reference,n=t.element,s=t.placement,o=s?Ut(s):null,r=s?ce(s):null,a=i.x+i.width/2-n.width/2,l=i.y+i.height/2-n.height/2;switch(o){case mt:e={x:a,y:i.y-n.height};break;case gt:e={x:a,y:i.y+i.height};break;case _t:e={x:i.x+i.width,y:l};break;case bt:e={x:i.x-n.width,y:l};break;default:e={x:i.x,y:i.y}}var c=o?ee(o):null;if(null!=c){var h="y"===c?"height":"width";switch(r){case wt:e[c]=e[c]-(i[h]/2-n[h]/2);break;case Et:e[c]=e[c]+(i[h]/2-n[h]/2)}}return e}function ke(t,e){void 0===e&&(e={});var i=e,n=i.placement,s=void 0===n?t.placement:n,o=i.boundary,r=void 0===o?At:o,a=i.rootBoundary,l=void 0===a?Tt:a,c=i.elementContext,h=void 0===c?Ot:c,d=i.altBoundary,u=void 0!==d&&d,f=i.padding,p=void 0===f?0:f,m=re("number"!=typeof p?p:ae(p,yt)),g=h===Ot?Ct:Ot,_=t.rects.popper,b=t.elements[u?g:h],v=function(t,e,i){var n="clippingParents"===e?function(t){var e=Ae(Zt(t)),i=["absolute","fixed"].indexOf(Yt(t).position)>=0&&zt(t)?te(t):t;return $t(i)?e.filter((function(t){return $t(t)&&Xt(t,i)&&"body"!==Rt(t)})):[]}(t):[].concat(e),s=[].concat(n,[i]),o=s[0],r=s.reduce((function(e,i){var n=Oe(t,i);return e.top=ie(n.top,e.top),e.right=ne(n.right,e.right),e.bottom=ne(n.bottom,e.bottom),e.left=ie(n.left,e.left),e}),Oe(t,o));return r.width=r.right-r.left,r.height=r.bottom-r.top,r.x=r.left,r.y=r.top,r}($t(b)?b:b.contextElement||Gt(t.elements.popper),r,l),y=Vt(t.elements.reference),w=Ce({reference:y,element:_,strategy:"absolute",placement:s}),E=Te(Object.assign({},_,w)),A=h===Ot?E:y,T={top:v.top-A.top+m.top,bottom:A.bottom-v.bottom+m.bottom,left:v.left-A.left+m.left,right:A.right-v.right+m.right},O=t.modifiersData.offset;if(h===Ot&&O){var C=O[s];Object.keys(T).forEach((function(t){var e=[_t,gt].indexOf(t)>=0?1:-1,i=[mt,gt].indexOf(t)>=0?"y":"x";T[t]+=C[i]*e}))}return T}function Le(t,e){void 0===e&&(e={});var i=e,n=i.placement,s=i.boundary,o=i.rootBoundary,r=i.padding,a=i.flipVariations,l=i.allowedAutoPlacements,c=void 0===l?Lt:l,h=ce(n),d=h?a?kt:kt.filter((function(t){return ce(t)===h})):yt,u=d.filter((function(t){return c.indexOf(t)>=0}));0===u.length&&(u=d);var f=u.reduce((function(e,i){return e[i]=ke(t,{placement:i,boundary:s,rootBoundary:o,padding:r})[Ut(i)],e}),{});return Object.keys(f).sort((function(t,e){return f[t]-f[e]}))}const xe={name:"flip",enabled:!0,phase:"main",fn:function(t){var e=t.state,i=t.options,n=t.name;if(!e.modifiersData[n]._skip){for(var s=i.mainAxis,o=void 0===s||s,r=i.altAxis,a=void 0===r||r,l=i.fallbackPlacements,c=i.padding,h=i.boundary,d=i.rootBoundary,u=i.altBoundary,f=i.flipVariations,p=void 0===f||f,m=i.allowedAutoPlacements,g=e.options.placement,_=Ut(g),b=l||(_!==g&&p?function(t){if(Ut(t)===vt)return[];var e=ge(t);return[be(t),e,be(e)]}(g):[ge(g)]),v=[g].concat(b).reduce((function(t,i){return t.concat(Ut(i)===vt?Le(e,{placement:i,boundary:h,rootBoundary:d,padding:c,flipVariations:p,allowedAutoPlacements:m}):i)}),[]),y=e.rects.reference,w=e.rects.popper,E=new Map,A=!0,T=v[0],O=0;O=0,D=x?"width":"height",S=ke(e,{placement:C,boundary:h,rootBoundary:d,altBoundary:u,padding:c}),N=x?L?_t:bt:L?gt:mt;y[D]>w[D]&&(N=ge(N));var I=ge(N),P=[];if(o&&P.push(S[k]<=0),a&&P.push(S[N]<=0,S[I]<=0),P.every((function(t){return t}))){T=C,A=!1;break}E.set(C,P)}if(A)for(var j=function(t){var e=v.find((function(e){var i=E.get(e);if(i)return i.slice(0,t).every((function(t){return t}))}));if(e)return T=e,"break"},M=p?3:1;M>0&&"break"!==j(M);M--);e.placement!==T&&(e.modifiersData[n]._skip=!0,e.placement=T,e.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function De(t,e,i){return void 0===i&&(i={x:0,y:0}),{top:t.top-e.height-i.y,right:t.right-e.width+i.x,bottom:t.bottom-e.height+i.y,left:t.left-e.width-i.x}}function Se(t){return[mt,_t,gt,bt].some((function(e){return t[e]>=0}))}const Ne={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(t){var e=t.state,i=t.name,n=e.rects.reference,s=e.rects.popper,o=e.modifiersData.preventOverflow,r=ke(e,{elementContext:"reference"}),a=ke(e,{altBoundary:!0}),l=De(r,n),c=De(a,s,o),h=Se(l),d=Se(c);e.modifiersData[i]={referenceClippingOffsets:l,popperEscapeOffsets:c,isReferenceHidden:h,hasPopperEscaped:d},e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-reference-hidden":h,"data-popper-escaped":d})}},Ie={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(t){var e=t.state,i=t.options,n=t.name,s=i.offset,o=void 0===s?[0,0]:s,r=Lt.reduce((function(t,i){return t[i]=function(t,e,i){var n=Ut(t),s=[bt,mt].indexOf(n)>=0?-1:1,o="function"==typeof i?i(Object.assign({},e,{placement:t})):i,r=o[0],a=o[1];return r=r||0,a=(a||0)*s,[bt,_t].indexOf(n)>=0?{x:a,y:r}:{x:r,y:a}}(i,e.rects,o),t}),{}),a=r[e.placement],l=a.x,c=a.y;null!=e.modifiersData.popperOffsets&&(e.modifiersData.popperOffsets.x+=l,e.modifiersData.popperOffsets.y+=c),e.modifiersData[n]=r}},Pe={name:"popperOffsets",enabled:!0,phase:"read",fn:function(t){var e=t.state,i=t.name;e.modifiersData[i]=Ce({reference:e.rects.reference,element:e.rects.popper,strategy:"absolute",placement:e.placement})},data:{}},je={name:"preventOverflow",enabled:!0,phase:"main",fn:function(t){var e=t.state,i=t.options,n=t.name,s=i.mainAxis,o=void 0===s||s,r=i.altAxis,a=void 0!==r&&r,l=i.boundary,c=i.rootBoundary,h=i.altBoundary,d=i.padding,u=i.tether,f=void 0===u||u,p=i.tetherOffset,m=void 0===p?0:p,g=ke(e,{boundary:l,rootBoundary:c,padding:d,altBoundary:h}),_=Ut(e.placement),b=ce(e.placement),v=!b,y=ee(_),w="x"===y?"y":"x",E=e.modifiersData.popperOffsets,A=e.rects.reference,T=e.rects.popper,O="function"==typeof m?m(Object.assign({},e.rects,{placement:e.placement})):m,C={x:0,y:0};if(E){if(o||a){var k="y"===y?mt:bt,L="y"===y?gt:_t,x="y"===y?"height":"width",D=E[y],S=E[y]+g[k],N=E[y]-g[L],I=f?-T[x]/2:0,P=b===wt?A[x]:T[x],j=b===wt?-T[x]:-A[x],M=e.elements.arrow,H=f&&M?Kt(M):{width:0,height:0},B=e.modifiersData["arrow#persistent"]?e.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},R=B[k],W=B[L],$=oe(0,A[x],H[x]),z=v?A[x]/2-I-$-R-O:P-$-R-O,q=v?-A[x]/2+I+$+W+O:j+$+W+O,F=e.elements.arrow&&te(e.elements.arrow),U=F?"y"===y?F.clientTop||0:F.clientLeft||0:0,V=e.modifiersData.offset?e.modifiersData.offset[e.placement][y]:0,K=E[y]+z-V-U,X=E[y]+q-V;if(o){var Y=oe(f?ne(S,K):S,D,f?ie(N,X):N);E[y]=Y,C[y]=Y-D}if(a){var Q="x"===y?mt:bt,G="x"===y?gt:_t,Z=E[w],J=Z+g[Q],tt=Z-g[G],et=oe(f?ne(J,K):J,Z,f?ie(tt,X):tt);E[w]=et,C[w]=et-Z}}e.modifiersData[n]=C}},requiresIfExists:["offset"]};function Me(t,e,i){void 0===i&&(i=!1);var n=zt(e);zt(e)&&function(t){var e=t.getBoundingClientRect();e.width,t.offsetWidth,e.height,t.offsetHeight}(e);var s,o,r=Gt(e),a=Vt(t),l={scrollLeft:0,scrollTop:0},c={x:0,y:0};return(n||!n&&!i)&&(("body"!==Rt(e)||we(r))&&(l=(s=e)!==Wt(s)&&zt(s)?{scrollLeft:(o=s).scrollLeft,scrollTop:o.scrollTop}:ve(s)),zt(e)?((c=Vt(e)).x+=e.clientLeft,c.y+=e.clientTop):r&&(c.x=ye(r))),{x:a.left+l.scrollLeft-c.x,y:a.top+l.scrollTop-c.y,width:a.width,height:a.height}}function He(t){var e=new Map,i=new Set,n=[];function s(t){i.add(t.name),[].concat(t.requires||[],t.requiresIfExists||[]).forEach((function(t){if(!i.has(t)){var n=e.get(t);n&&s(n)}})),n.push(t)}return t.forEach((function(t){e.set(t.name,t)})),t.forEach((function(t){i.has(t.name)||s(t)})),n}var Be={placement:"bottom",modifiers:[],strategy:"absolute"};function Re(){for(var t=arguments.length,e=new Array(t),i=0;ij.on(t,"mouseover",d))),this._element.focus(),this._element.setAttribute("aria-expanded",!0),this._menu.classList.add(Je),this._element.classList.add(Je),j.trigger(this._element,"shown.bs.dropdown",t)}hide(){if(c(this._element)||!this._isShown(this._menu))return;const t={relatedTarget:this._element};this._completeHide(t)}dispose(){this._popper&&this._popper.destroy(),super.dispose()}update(){this._inNavbar=this._detectNavbar(),this._popper&&this._popper.update()}_completeHide(t){j.trigger(this._element,"hide.bs.dropdown",t).defaultPrevented||("ontouchstart"in document.documentElement&&[].concat(...document.body.children).forEach((t=>j.off(t,"mouseover",d))),this._popper&&this._popper.destroy(),this._menu.classList.remove(Je),this._element.classList.remove(Je),this._element.setAttribute("aria-expanded","false"),U.removeDataAttribute(this._menu,"popper"),j.trigger(this._element,"hidden.bs.dropdown",t))}_getConfig(t){if(t={...this.constructor.Default,...U.getDataAttributes(this._element),...t},a(Ue,t,this.constructor.DefaultType),"object"==typeof t.reference&&!o(t.reference)&&"function"!=typeof t.reference.getBoundingClientRect)throw new TypeError(`${Ue.toUpperCase()}: Option "reference" provided type "object" without a required "getBoundingClientRect" method.`);return t}_createPopper(t){if(void 0===Fe)throw new TypeError("Bootstrap's dropdowns require Popper (https://popper.js.org)");let e=this._element;"parent"===this._config.reference?e=t:o(this._config.reference)?e=r(this._config.reference):"object"==typeof this._config.reference&&(e=this._config.reference);const i=this._getPopperConfig(),n=i.modifiers.find((t=>"applyStyles"===t.name&&!1===t.enabled));this._popper=qe(e,this._menu,i),n&&U.setDataAttribute(this._menu,"popper","static")}_isShown(t=this._element){return t.classList.contains(Je)}_getMenuElement(){return V.next(this._element,ei)[0]}_getPlacement(){const t=this._element.parentNode;if(t.classList.contains("dropend"))return ri;if(t.classList.contains("dropstart"))return ai;const e="end"===getComputedStyle(this._menu).getPropertyValue("--bs-position").trim();return t.classList.contains("dropup")?e?ni:ii:e?oi:si}_detectNavbar(){return null!==this._element.closest(".navbar")}_getOffset(){const{offset:t}=this._config;return"string"==typeof t?t.split(",").map((t=>Number.parseInt(t,10))):"function"==typeof t?e=>t(e,this._element):t}_getPopperConfig(){const t={placement:this._getPlacement(),modifiers:[{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"offset",options:{offset:this._getOffset()}}]};return"static"===this._config.display&&(t.modifiers=[{name:"applyStyles",enabled:!1}]),{...t,..."function"==typeof this._config.popperConfig?this._config.popperConfig(t):this._config.popperConfig}}_selectMenuItem({key:t,target:e}){const i=V.find(".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)",this._menu).filter(l);i.length&&v(i,e,t===Ye,!i.includes(e)).focus()}static jQueryInterface(t){return this.each((function(){const e=hi.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}static clearMenus(t){if(t&&(2===t.button||"keyup"===t.type&&"Tab"!==t.key))return;const e=V.find(ti);for(let i=0,n=e.length;ie+t)),this._setElementAttributes(di,"paddingRight",(e=>e+t)),this._setElementAttributes(ui,"marginRight",(e=>e-t))}_disableOverFlow(){this._saveInitialAttribute(this._element,"overflow"),this._element.style.overflow="hidden"}_setElementAttributes(t,e,i){const n=this.getWidth();this._applyManipulationCallback(t,(t=>{if(t!==this._element&&window.innerWidth>t.clientWidth+n)return;this._saveInitialAttribute(t,e);const s=window.getComputedStyle(t)[e];t.style[e]=`${i(Number.parseFloat(s))}px`}))}reset(){this._resetElementAttributes(this._element,"overflow"),this._resetElementAttributes(this._element,"paddingRight"),this._resetElementAttributes(di,"paddingRight"),this._resetElementAttributes(ui,"marginRight")}_saveInitialAttribute(t,e){const i=t.style[e];i&&U.setDataAttribute(t,e,i)}_resetElementAttributes(t,e){this._applyManipulationCallback(t,(t=>{const i=U.getDataAttribute(t,e);void 0===i?t.style.removeProperty(e):(U.removeDataAttribute(t,e),t.style[e]=i)}))}_applyManipulationCallback(t,e){o(t)?e(t):V.find(t,this._element).forEach(e)}isOverflowing(){return this.getWidth()>0}}const pi={className:"modal-backdrop",isVisible:!0,isAnimated:!1,rootElement:"body",clickCallback:null},mi={className:"string",isVisible:"boolean",isAnimated:"boolean",rootElement:"(element|string)",clickCallback:"(function|null)"},gi="show",_i="mousedown.bs.backdrop";class bi{constructor(t){this._config=this._getConfig(t),this._isAppended=!1,this._element=null}show(t){this._config.isVisible?(this._append(),this._config.isAnimated&&u(this._getElement()),this._getElement().classList.add(gi),this._emulateAnimation((()=>{_(t)}))):_(t)}hide(t){this._config.isVisible?(this._getElement().classList.remove(gi),this._emulateAnimation((()=>{this.dispose(),_(t)}))):_(t)}_getElement(){if(!this._element){const t=document.createElement("div");t.className=this._config.className,this._config.isAnimated&&t.classList.add("fade"),this._element=t}return this._element}_getConfig(t){return(t={...pi,..."object"==typeof t?t:{}}).rootElement=r(t.rootElement),a("backdrop",t,mi),t}_append(){this._isAppended||(this._config.rootElement.append(this._getElement()),j.on(this._getElement(),_i,(()=>{_(this._config.clickCallback)})),this._isAppended=!0)}dispose(){this._isAppended&&(j.off(this._element,_i),this._element.remove(),this._isAppended=!1)}_emulateAnimation(t){b(t,this._getElement(),this._config.isAnimated)}}const vi={trapElement:null,autofocus:!0},yi={trapElement:"element",autofocus:"boolean"},wi=".bs.focustrap",Ei="backward";class Ai{constructor(t){this._config=this._getConfig(t),this._isActive=!1,this._lastTabNavDirection=null}activate(){const{trapElement:t,autofocus:e}=this._config;this._isActive||(e&&t.focus(),j.off(document,wi),j.on(document,"focusin.bs.focustrap",(t=>this._handleFocusin(t))),j.on(document,"keydown.tab.bs.focustrap",(t=>this._handleKeydown(t))),this._isActive=!0)}deactivate(){this._isActive&&(this._isActive=!1,j.off(document,wi))}_handleFocusin(t){const{target:e}=t,{trapElement:i}=this._config;if(e===document||e===i||i.contains(e))return;const n=V.focusableChildren(i);0===n.length?i.focus():this._lastTabNavDirection===Ei?n[n.length-1].focus():n[0].focus()}_handleKeydown(t){"Tab"===t.key&&(this._lastTabNavDirection=t.shiftKey?Ei:"forward")}_getConfig(t){return t={...vi,..."object"==typeof t?t:{}},a("focustrap",t,yi),t}}const Ti="modal",Oi="Escape",Ci={backdrop:!0,keyboard:!0,focus:!0},ki={backdrop:"(boolean|string)",keyboard:"boolean",focus:"boolean"},Li="hidden.bs.modal",xi="show.bs.modal",Di="resize.bs.modal",Si="click.dismiss.bs.modal",Ni="keydown.dismiss.bs.modal",Ii="mousedown.dismiss.bs.modal",Pi="modal-open",ji="show",Mi="modal-static";class Hi extends B{constructor(t,e){super(t),this._config=this._getConfig(e),this._dialog=V.findOne(".modal-dialog",this._element),this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._isShown=!1,this._ignoreBackdropClick=!1,this._isTransitioning=!1,this._scrollBar=new fi}static get Default(){return Ci}static get NAME(){return Ti}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||this._isTransitioning||j.trigger(this._element,xi,{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._isAnimated()&&(this._isTransitioning=!0),this._scrollBar.hide(),document.body.classList.add(Pi),this._adjustDialog(),this._setEscapeEvent(),this._setResizeEvent(),j.on(this._dialog,Ii,(()=>{j.one(this._element,"mouseup.dismiss.bs.modal",(t=>{t.target===this._element&&(this._ignoreBackdropClick=!0)}))})),this._showBackdrop((()=>this._showElement(t))))}hide(){if(!this._isShown||this._isTransitioning)return;if(j.trigger(this._element,"hide.bs.modal").defaultPrevented)return;this._isShown=!1;const t=this._isAnimated();t&&(this._isTransitioning=!0),this._setEscapeEvent(),this._setResizeEvent(),this._focustrap.deactivate(),this._element.classList.remove(ji),j.off(this._element,Si),j.off(this._dialog,Ii),this._queueCallback((()=>this._hideModal()),this._element,t)}dispose(){[window,this._dialog].forEach((t=>j.off(t,".bs.modal"))),this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}handleUpdate(){this._adjustDialog()}_initializeBackDrop(){return new bi({isVisible:Boolean(this._config.backdrop),isAnimated:this._isAnimated()})}_initializeFocusTrap(){return new Ai({trapElement:this._element})}_getConfig(t){return t={...Ci,...U.getDataAttributes(this._element),..."object"==typeof t?t:{}},a(Ti,t,ki),t}_showElement(t){const e=this._isAnimated(),i=V.findOne(".modal-body",this._dialog);this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE||document.body.append(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.scrollTop=0,i&&(i.scrollTop=0),e&&u(this._element),this._element.classList.add(ji),this._queueCallback((()=>{this._config.focus&&this._focustrap.activate(),this._isTransitioning=!1,j.trigger(this._element,"shown.bs.modal",{relatedTarget:t})}),this._dialog,e)}_setEscapeEvent(){this._isShown?j.on(this._element,Ni,(t=>{this._config.keyboard&&t.key===Oi?(t.preventDefault(),this.hide()):this._config.keyboard||t.key!==Oi||this._triggerBackdropTransition()})):j.off(this._element,Ni)}_setResizeEvent(){this._isShown?j.on(window,Di,(()=>this._adjustDialog())):j.off(window,Di)}_hideModal(){this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._isTransitioning=!1,this._backdrop.hide((()=>{document.body.classList.remove(Pi),this._resetAdjustments(),this._scrollBar.reset(),j.trigger(this._element,Li)}))}_showBackdrop(t){j.on(this._element,Si,(t=>{this._ignoreBackdropClick?this._ignoreBackdropClick=!1:t.target===t.currentTarget&&(!0===this._config.backdrop?this.hide():"static"===this._config.backdrop&&this._triggerBackdropTransition())})),this._backdrop.show(t)}_isAnimated(){return this._element.classList.contains("fade")}_triggerBackdropTransition(){if(j.trigger(this._element,"hidePrevented.bs.modal").defaultPrevented)return;const{classList:t,scrollHeight:e,style:i}=this._element,n=e>document.documentElement.clientHeight;!n&&"hidden"===i.overflowY||t.contains(Mi)||(n||(i.overflowY="hidden"),t.add(Mi),this._queueCallback((()=>{t.remove(Mi),n||this._queueCallback((()=>{i.overflowY=""}),this._dialog)}),this._dialog),this._element.focus())}_adjustDialog(){const t=this._element.scrollHeight>document.documentElement.clientHeight,e=this._scrollBar.getWidth(),i=e>0;(!i&&t&&!m()||i&&!t&&m())&&(this._element.style.paddingLeft=`${e}px`),(i&&!t&&!m()||!i&&t&&m())&&(this._element.style.paddingRight=`${e}px`)}_resetAdjustments(){this._element.style.paddingLeft="",this._element.style.paddingRight=""}static jQueryInterface(t,e){return this.each((function(){const i=Hi.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===i[t])throw new TypeError(`No method named "${t}"`);i[t](e)}}))}}j.on(document,"click.bs.modal.data-api",'[data-bs-toggle="modal"]',(function(t){const e=n(this);["A","AREA"].includes(this.tagName)&&t.preventDefault(),j.one(e,xi,(t=>{t.defaultPrevented||j.one(e,Li,(()=>{l(this)&&this.focus()}))}));const i=V.findOne(".modal.show");i&&Hi.getInstance(i).hide(),Hi.getOrCreateInstance(e).toggle(this)})),R(Hi),g(Hi);const Bi="offcanvas",Ri={backdrop:!0,keyboard:!0,scroll:!1},Wi={backdrop:"boolean",keyboard:"boolean",scroll:"boolean"},$i="show",zi=".offcanvas.show",qi="hidden.bs.offcanvas";class Fi extends B{constructor(t,e){super(t),this._config=this._getConfig(e),this._isShown=!1,this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._addEventListeners()}static get NAME(){return Bi}static get Default(){return Ri}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||j.trigger(this._element,"show.bs.offcanvas",{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._element.style.visibility="visible",this._backdrop.show(),this._config.scroll||(new fi).hide(),this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.classList.add($i),this._queueCallback((()=>{this._config.scroll||this._focustrap.activate(),j.trigger(this._element,"shown.bs.offcanvas",{relatedTarget:t})}),this._element,!0))}hide(){this._isShown&&(j.trigger(this._element,"hide.bs.offcanvas").defaultPrevented||(this._focustrap.deactivate(),this._element.blur(),this._isShown=!1,this._element.classList.remove($i),this._backdrop.hide(),this._queueCallback((()=>{this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._element.style.visibility="hidden",this._config.scroll||(new fi).reset(),j.trigger(this._element,qi)}),this._element,!0)))}dispose(){this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}_getConfig(t){return t={...Ri,...U.getDataAttributes(this._element),..."object"==typeof t?t:{}},a(Bi,t,Wi),t}_initializeBackDrop(){return new bi({className:"offcanvas-backdrop",isVisible:this._config.backdrop,isAnimated:!0,rootElement:this._element.parentNode,clickCallback:()=>this.hide()})}_initializeFocusTrap(){return new Ai({trapElement:this._element})}_addEventListeners(){j.on(this._element,"keydown.dismiss.bs.offcanvas",(t=>{this._config.keyboard&&"Escape"===t.key&&this.hide()}))}static jQueryInterface(t){return this.each((function(){const e=Fi.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}j.on(document,"click.bs.offcanvas.data-api",'[data-bs-toggle="offcanvas"]',(function(t){const e=n(this);if(["A","AREA"].includes(this.tagName)&&t.preventDefault(),c(this))return;j.one(e,qi,(()=>{l(this)&&this.focus()}));const i=V.findOne(zi);i&&i!==e&&Fi.getInstance(i).hide(),Fi.getOrCreateInstance(e).toggle(this)})),j.on(window,"load.bs.offcanvas.data-api",(()=>V.find(zi).forEach((t=>Fi.getOrCreateInstance(t).show())))),R(Fi),g(Fi);const Ui=new Set(["background","cite","href","itemtype","longdesc","poster","src","xlink:href"]),Vi=/^(?:(?:https?|mailto|ftp|tel|file|sms):|[^#&/:?]*(?:[#/?]|$))/i,Ki=/^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[\d+/a-z]+=*$/i,Xi=(t,e)=>{const i=t.nodeName.toLowerCase();if(e.includes(i))return!Ui.has(i)||Boolean(Vi.test(t.nodeValue)||Ki.test(t.nodeValue));const n=e.filter((t=>t instanceof RegExp));for(let t=0,e=n.length;t{Xi(t,r)||i.removeAttribute(t.nodeName)}))}return n.body.innerHTML}const Qi="tooltip",Gi=new Set(["sanitize","allowList","sanitizeFn"]),Zi={animation:"boolean",template:"string",title:"(string|element|function)",trigger:"string",delay:"(number|object)",html:"boolean",selector:"(string|boolean)",placement:"(string|function)",offset:"(array|string|function)",container:"(string|element|boolean)",fallbackPlacements:"array",boundary:"(string|element)",customClass:"(string|function)",sanitize:"boolean",sanitizeFn:"(null|function)",allowList:"object",popperConfig:"(null|object|function)"},Ji={AUTO:"auto",TOP:"top",RIGHT:m()?"left":"right",BOTTOM:"bottom",LEFT:m()?"right":"left"},tn={animation:!0,template:'',trigger:"hover focus",title:"",delay:0,html:!1,selector:!1,placement:"top",offset:[0,0],container:!1,fallbackPlacements:["top","right","bottom","left"],boundary:"clippingParents",customClass:"",sanitize:!0,sanitizeFn:null,allowList:{"*":["class","dir","id","lang","role",/^aria-[\w-]*$/i],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],div:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","srcset","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},popperConfig:null},en={HIDE:"hide.bs.tooltip",HIDDEN:"hidden.bs.tooltip",SHOW:"show.bs.tooltip",SHOWN:"shown.bs.tooltip",INSERTED:"inserted.bs.tooltip",CLICK:"click.bs.tooltip",FOCUSIN:"focusin.bs.tooltip",FOCUSOUT:"focusout.bs.tooltip",MOUSEENTER:"mouseenter.bs.tooltip",MOUSELEAVE:"mouseleave.bs.tooltip"},nn="fade",sn="show",on="show",rn="out",an=".tooltip-inner",ln=".modal",cn="hide.bs.modal",hn="hover",dn="focus";class un extends B{constructor(t,e){if(void 0===Fe)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");super(t),this._isEnabled=!0,this._timeout=0,this._hoverState="",this._activeTrigger={},this._popper=null,this._config=this._getConfig(e),this.tip=null,this._setListeners()}static get Default(){return tn}static get NAME(){return Qi}static get Event(){return en}static get DefaultType(){return Zi}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(t){if(this._isEnabled)if(t){const e=this._initializeOnDelegatedTarget(t);e._activeTrigger.click=!e._activeTrigger.click,e._isWithActiveTrigger()?e._enter(null,e):e._leave(null,e)}else{if(this.getTipElement().classList.contains(sn))return void this._leave(null,this);this._enter(null,this)}}dispose(){clearTimeout(this._timeout),j.off(this._element.closest(ln),cn,this._hideModalHandler),this.tip&&this.tip.remove(),this._disposePopper(),super.dispose()}show(){if("none"===this._element.style.display)throw new Error("Please use show on visible elements");if(!this.isWithContent()||!this._isEnabled)return;const t=j.trigger(this._element,this.constructor.Event.SHOW),e=h(this._element),i=null===e?this._element.ownerDocument.documentElement.contains(this._element):e.contains(this._element);if(t.defaultPrevented||!i)return;"tooltip"===this.constructor.NAME&&this.tip&&this.getTitle()!==this.tip.querySelector(an).innerHTML&&(this._disposePopper(),this.tip.remove(),this.tip=null);const n=this.getTipElement(),s=(t=>{do{t+=Math.floor(1e6*Math.random())}while(document.getElementById(t));return t})(this.constructor.NAME);n.setAttribute("id",s),this._element.setAttribute("aria-describedby",s),this._config.animation&&n.classList.add(nn);const o="function"==typeof this._config.placement?this._config.placement.call(this,n,this._element):this._config.placement,r=this._getAttachment(o);this._addAttachmentClass(r);const{container:a}=this._config;H.set(n,this.constructor.DATA_KEY,this),this._element.ownerDocument.documentElement.contains(this.tip)||(a.append(n),j.trigger(this._element,this.constructor.Event.INSERTED)),this._popper?this._popper.update():this._popper=qe(this._element,n,this._getPopperConfig(r)),n.classList.add(sn);const l=this._resolvePossibleFunction(this._config.customClass);l&&n.classList.add(...l.split(" ")),"ontouchstart"in document.documentElement&&[].concat(...document.body.children).forEach((t=>{j.on(t,"mouseover",d)}));const c=this.tip.classList.contains(nn);this._queueCallback((()=>{const t=this._hoverState;this._hoverState=null,j.trigger(this._element,this.constructor.Event.SHOWN),t===rn&&this._leave(null,this)}),this.tip,c)}hide(){if(!this._popper)return;const t=this.getTipElement();if(j.trigger(this._element,this.constructor.Event.HIDE).defaultPrevented)return;t.classList.remove(sn),"ontouchstart"in document.documentElement&&[].concat(...document.body.children).forEach((t=>j.off(t,"mouseover",d))),this._activeTrigger.click=!1,this._activeTrigger.focus=!1,this._activeTrigger.hover=!1;const e=this.tip.classList.contains(nn);this._queueCallback((()=>{this._isWithActiveTrigger()||(this._hoverState!==on&&t.remove(),this._cleanTipClass(),this._element.removeAttribute("aria-describedby"),j.trigger(this._element,this.constructor.Event.HIDDEN),this._disposePopper())}),this.tip,e),this._hoverState=""}update(){null!==this._popper&&this._popper.update()}isWithContent(){return Boolean(this.getTitle())}getTipElement(){if(this.tip)return this.tip;const t=document.createElement("div");t.innerHTML=this._config.template;const e=t.children[0];return this.setContent(e),e.classList.remove(nn,sn),this.tip=e,this.tip}setContent(t){this._sanitizeAndSetContent(t,this.getTitle(),an)}_sanitizeAndSetContent(t,e,i){const n=V.findOne(i,t);e||!n?this.setElementContent(n,e):n.remove()}setElementContent(t,e){if(null!==t)return o(e)?(e=r(e),void(this._config.html?e.parentNode!==t&&(t.innerHTML="",t.append(e)):t.textContent=e.textContent)):void(this._config.html?(this._config.sanitize&&(e=Yi(e,this._config.allowList,this._config.sanitizeFn)),t.innerHTML=e):t.textContent=e)}getTitle(){const t=this._element.getAttribute("data-bs-original-title")||this._config.title;return this._resolvePossibleFunction(t)}updateAttachment(t){return"right"===t?"end":"left"===t?"start":t}_initializeOnDelegatedTarget(t,e){return e||this.constructor.getOrCreateInstance(t.delegateTarget,this._getDelegateConfig())}_getOffset(){const{offset:t}=this._config;return"string"==typeof t?t.split(",").map((t=>Number.parseInt(t,10))):"function"==typeof t?e=>t(e,this._element):t}_resolvePossibleFunction(t){return"function"==typeof t?t.call(this._element):t}_getPopperConfig(t){const e={placement:t,modifiers:[{name:"flip",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"arrow",options:{element:`.${this.constructor.NAME}-arrow`}},{name:"onChange",enabled:!0,phase:"afterWrite",fn:t=>this._handlePopperPlacementChange(t)}],onFirstUpdate:t=>{t.options.placement!==t.placement&&this._handlePopperPlacementChange(t)}};return{...e,..."function"==typeof this._config.popperConfig?this._config.popperConfig(e):this._config.popperConfig}}_addAttachmentClass(t){this.getTipElement().classList.add(`${this._getBasicClassPrefix()}-${this.updateAttachment(t)}`)}_getAttachment(t){return Ji[t.toUpperCase()]}_setListeners(){this._config.trigger.split(" ").forEach((t=>{if("click"===t)j.on(this._element,this.constructor.Event.CLICK,this._config.selector,(t=>this.toggle(t)));else if("manual"!==t){const e=t===hn?this.constructor.Event.MOUSEENTER:this.constructor.Event.FOCUSIN,i=t===hn?this.constructor.Event.MOUSELEAVE:this.constructor.Event.FOCUSOUT;j.on(this._element,e,this._config.selector,(t=>this._enter(t))),j.on(this._element,i,this._config.selector,(t=>this._leave(t)))}})),this._hideModalHandler=()=>{this._element&&this.hide()},j.on(this._element.closest(ln),cn,this._hideModalHandler),this._config.selector?this._config={...this._config,trigger:"manual",selector:""}:this._fixTitle()}_fixTitle(){const t=this._element.getAttribute("title"),e=typeof this._element.getAttribute("data-bs-original-title");(t||"string"!==e)&&(this._element.setAttribute("data-bs-original-title",t||""),!t||this._element.getAttribute("aria-label")||this._element.textContent||this._element.setAttribute("aria-label",t),this._element.setAttribute("title",""))}_enter(t,e){e=this._initializeOnDelegatedTarget(t,e),t&&(e._activeTrigger["focusin"===t.type?dn:hn]=!0),e.getTipElement().classList.contains(sn)||e._hoverState===on?e._hoverState=on:(clearTimeout(e._timeout),e._hoverState=on,e._config.delay&&e._config.delay.show?e._timeout=setTimeout((()=>{e._hoverState===on&&e.show()}),e._config.delay.show):e.show())}_leave(t,e){e=this._initializeOnDelegatedTarget(t,e),t&&(e._activeTrigger["focusout"===t.type?dn:hn]=e._element.contains(t.relatedTarget)),e._isWithActiveTrigger()||(clearTimeout(e._timeout),e._hoverState=rn,e._config.delay&&e._config.delay.hide?e._timeout=setTimeout((()=>{e._hoverState===rn&&e.hide()}),e._config.delay.hide):e.hide())}_isWithActiveTrigger(){for(const t in this._activeTrigger)if(this._activeTrigger[t])return!0;return!1}_getConfig(t){const e=U.getDataAttributes(this._element);return Object.keys(e).forEach((t=>{Gi.has(t)&&delete e[t]})),(t={...this.constructor.Default,...e,..."object"==typeof t&&t?t:{}}).container=!1===t.container?document.body:r(t.container),"number"==typeof t.delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),a(Qi,t,this.constructor.DefaultType),t.sanitize&&(t.template=Yi(t.template,t.allowList,t.sanitizeFn)),t}_getDelegateConfig(){const t={};for(const e in this._config)this.constructor.Default[e]!==this._config[e]&&(t[e]=this._config[e]);return t}_cleanTipClass(){const t=this.getTipElement(),e=new RegExp(`(^|\\s)${this._getBasicClassPrefix()}\\S+`,"g"),i=t.getAttribute("class").match(e);null!==i&&i.length>0&&i.map((t=>t.trim())).forEach((e=>t.classList.remove(e)))}_getBasicClassPrefix(){return"bs-tooltip"}_handlePopperPlacementChange(t){const{state:e}=t;e&&(this.tip=e.elements.popper,this._cleanTipClass(),this._addAttachmentClass(this._getAttachment(e.placement)))}_disposePopper(){this._popper&&(this._popper.destroy(),this._popper=null)}static jQueryInterface(t){return this.each((function(){const e=un.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}g(un);const fn={...un.Default,placement:"right",offset:[0,8],trigger:"click",content:"",template:''},pn={...un.DefaultType,content:"(string|element|function)"},mn={HIDE:"hide.bs.popover",HIDDEN:"hidden.bs.popover",SHOW:"show.bs.popover",SHOWN:"shown.bs.popover",INSERTED:"inserted.bs.popover",CLICK:"click.bs.popover",FOCUSIN:"focusin.bs.popover",FOCUSOUT:"focusout.bs.popover",MOUSEENTER:"mouseenter.bs.popover",MOUSELEAVE:"mouseleave.bs.popover"};class gn extends un{static get Default(){return fn}static get NAME(){return"popover"}static get Event(){return mn}static get DefaultType(){return pn}isWithContent(){return this.getTitle()||this._getContent()}setContent(t){this._sanitizeAndSetContent(t,this.getTitle(),".popover-header"),this._sanitizeAndSetContent(t,this._getContent(),".popover-body")}_getContent(){return this._resolvePossibleFunction(this._config.content)}_getBasicClassPrefix(){return"bs-popover"}static jQueryInterface(t){return this.each((function(){const e=gn.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}g(gn);const _n="scrollspy",bn={offset:10,method:"auto",target:""},vn={offset:"number",method:"string",target:"(string|element)"},yn="active",wn=".nav-link, .list-group-item, .dropdown-item",En="position";class An extends B{constructor(t,e){super(t),this._scrollElement="BODY"===this._element.tagName?window:this._element,this._config=this._getConfig(e),this._offsets=[],this._targets=[],this._activeTarget=null,this._scrollHeight=0,j.on(this._scrollElement,"scroll.bs.scrollspy",(()=>this._process())),this.refresh(),this._process()}static get Default(){return bn}static get NAME(){return _n}refresh(){const t=this._scrollElement===this._scrollElement.window?"offset":En,e="auto"===this._config.method?t:this._config.method,n=e===En?this._getScrollTop():0;this._offsets=[],this._targets=[],this._scrollHeight=this._getScrollHeight(),V.find(wn,this._config.target).map((t=>{const s=i(t),o=s?V.findOne(s):null;if(o){const t=o.getBoundingClientRect();if(t.width||t.height)return[U[e](o).top+n,s]}return null})).filter((t=>t)).sort(((t,e)=>t[0]-e[0])).forEach((t=>{this._offsets.push(t[0]),this._targets.push(t[1])}))}dispose(){j.off(this._scrollElement,".bs.scrollspy"),super.dispose()}_getConfig(t){return(t={...bn,...U.getDataAttributes(this._element),..."object"==typeof t&&t?t:{}}).target=r(t.target)||document.documentElement,a(_n,t,vn),t}_getScrollTop(){return this._scrollElement===window?this._scrollElement.pageYOffset:this._scrollElement.scrollTop}_getScrollHeight(){return this._scrollElement.scrollHeight||Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)}_getOffsetHeight(){return this._scrollElement===window?window.innerHeight:this._scrollElement.getBoundingClientRect().height}_process(){const t=this._getScrollTop()+this._config.offset,e=this._getScrollHeight(),i=this._config.offset+e-this._getOffsetHeight();if(this._scrollHeight!==e&&this.refresh(),t>=i){const t=this._targets[this._targets.length-1];this._activeTarget!==t&&this._activate(t)}else{if(this._activeTarget&&t0)return this._activeTarget=null,void this._clear();for(let e=this._offsets.length;e--;)this._activeTarget!==this._targets[e]&&t>=this._offsets[e]&&(void 0===this._offsets[e+1]||t`${e}[data-bs-target="${t}"],${e}[href="${t}"]`)),i=V.findOne(e.join(","),this._config.target);i.classList.add(yn),i.classList.contains("dropdown-item")?V.findOne(".dropdown-toggle",i.closest(".dropdown")).classList.add(yn):V.parents(i,".nav, .list-group").forEach((t=>{V.prev(t,".nav-link, .list-group-item").forEach((t=>t.classList.add(yn))),V.prev(t,".nav-item").forEach((t=>{V.children(t,".nav-link").forEach((t=>t.classList.add(yn)))}))})),j.trigger(this._scrollElement,"activate.bs.scrollspy",{relatedTarget:t})}_clear(){V.find(wn,this._config.target).filter((t=>t.classList.contains(yn))).forEach((t=>t.classList.remove(yn)))}static jQueryInterface(t){return this.each((function(){const e=An.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}j.on(window,"load.bs.scrollspy.data-api",(()=>{V.find('[data-bs-spy="scroll"]').forEach((t=>new An(t)))})),g(An);const Tn="active",On="fade",Cn="show",kn=".active",Ln=":scope > li > .active";class xn extends B{static get NAME(){return"tab"}show(){if(this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE&&this._element.classList.contains(Tn))return;let t;const e=n(this._element),i=this._element.closest(".nav, .list-group");if(i){const e="UL"===i.nodeName||"OL"===i.nodeName?Ln:kn;t=V.find(e,i),t=t[t.length-1]}const s=t?j.trigger(t,"hide.bs.tab",{relatedTarget:this._element}):null;if(j.trigger(this._element,"show.bs.tab",{relatedTarget:t}).defaultPrevented||null!==s&&s.defaultPrevented)return;this._activate(this._element,i);const o=()=>{j.trigger(t,"hidden.bs.tab",{relatedTarget:this._element}),j.trigger(this._element,"shown.bs.tab",{relatedTarget:t})};e?this._activate(e,e.parentNode,o):o()}_activate(t,e,i){const n=(!e||"UL"!==e.nodeName&&"OL"!==e.nodeName?V.children(e,kn):V.find(Ln,e))[0],s=i&&n&&n.classList.contains(On),o=()=>this._transitionComplete(t,n,i);n&&s?(n.classList.remove(Cn),this._queueCallback(o,t,!0)):o()}_transitionComplete(t,e,i){if(e){e.classList.remove(Tn);const t=V.findOne(":scope > .dropdown-menu .active",e.parentNode);t&&t.classList.remove(Tn),"tab"===e.getAttribute("role")&&e.setAttribute("aria-selected",!1)}t.classList.add(Tn),"tab"===t.getAttribute("role")&&t.setAttribute("aria-selected",!0),u(t),t.classList.contains(On)&&t.classList.add(Cn);let n=t.parentNode;if(n&&"LI"===n.nodeName&&(n=n.parentNode),n&&n.classList.contains("dropdown-menu")){const e=t.closest(".dropdown");e&&V.find(".dropdown-toggle",e).forEach((t=>t.classList.add(Tn))),t.setAttribute("aria-expanded",!0)}i&&i()}static jQueryInterface(t){return this.each((function(){const e=xn.getOrCreateInstance(this);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}j.on(document,"click.bs.tab.data-api",'[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]',(function(t){["A","AREA"].includes(this.tagName)&&t.preventDefault(),c(this)||xn.getOrCreateInstance(this).show()})),g(xn);const Dn="toast",Sn="hide",Nn="show",In="showing",Pn={animation:"boolean",autohide:"boolean",delay:"number"},jn={animation:!0,autohide:!0,delay:5e3};class Mn extends B{constructor(t,e){super(t),this._config=this._getConfig(e),this._timeout=null,this._hasMouseInteraction=!1,this._hasKeyboardInteraction=!1,this._setListeners()}static get DefaultType(){return Pn}static get Default(){return jn}static get NAME(){return Dn}show(){j.trigger(this._element,"show.bs.toast").defaultPrevented||(this._clearTimeout(),this._config.animation&&this._element.classList.add("fade"),this._element.classList.remove(Sn),u(this._element),this._element.classList.add(Nn),this._element.classList.add(In),this._queueCallback((()=>{this._element.classList.remove(In),j.trigger(this._element,"shown.bs.toast"),this._maybeScheduleHide()}),this._element,this._config.animation))}hide(){this._element.classList.contains(Nn)&&(j.trigger(this._element,"hide.bs.toast").defaultPrevented||(this._element.classList.add(In),this._queueCallback((()=>{this._element.classList.add(Sn),this._element.classList.remove(In),this._element.classList.remove(Nn),j.trigger(this._element,"hidden.bs.toast")}),this._element,this._config.animation)))}dispose(){this._clearTimeout(),this._element.classList.contains(Nn)&&this._element.classList.remove(Nn),super.dispose()}_getConfig(t){return t={...jn,...U.getDataAttributes(this._element),..."object"==typeof t&&t?t:{}},a(Dn,t,this.constructor.DefaultType),t}_maybeScheduleHide(){this._config.autohide&&(this._hasMouseInteraction||this._hasKeyboardInteraction||(this._timeout=setTimeout((()=>{this.hide()}),this._config.delay)))}_onInteraction(t,e){switch(t.type){case"mouseover":case"mouseout":this._hasMouseInteraction=e;break;case"focusin":case"focusout":this._hasKeyboardInteraction=e}if(e)return void this._clearTimeout();const i=t.relatedTarget;this._element===i||this._element.contains(i)||this._maybeScheduleHide()}_setListeners(){j.on(this._element,"mouseover.bs.toast",(t=>this._onInteraction(t,!0))),j.on(this._element,"mouseout.bs.toast",(t=>this._onInteraction(t,!1))),j.on(this._element,"focusin.bs.toast",(t=>this._onInteraction(t,!0))),j.on(this._element,"focusout.bs.toast",(t=>this._onInteraction(t,!1)))}_clearTimeout(){clearTimeout(this._timeout),this._timeout=null}static jQueryInterface(t){return this.each((function(){const e=Mn.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}return R(Mn),g(Mn),{Alert:W,Button:z,Carousel:st,Collapse:pt,Dropdown:hi,Modal:Hi,Offcanvas:Fi,Popover:gn,ScrollSpy:An,Tab:xn,Toast:Mn,Tooltip:un}})); +//# sourceMappingURL=bootstrap.bundle.min.js.map \ No newline at end of file diff --git a/docs/column_api.html b/docs/column_api.html new file mode 100644 index 0000000..2578fff --- /dev/null +++ b/docs/column_api.html @@ -0,0 +1,716 @@ + + + + + + + + + +column_api + + + + + + + + + + + + + + + + + + + + +
        + +
        + + + + + + + + +
        +

        Column API

        +

        A column in tablecloth is a named sequence of typed data. This special type is defined in the tech.ml.dataset. It is roughly comparable to a R vector.

        +
        +

        Column Creation

        +

        Empty column

        +
        +
        (tcc/column)
        +
        +
        +
        #tech.v3.dataset.column&lt;boolean&gt;[0]
        +null
        +[]
        +
        +

        Column from a vector or a sequence

        +
        +
        (tcc/column [1 2 3 4 5])
        +
        +
        +
        #tech.v3.dataset.column&lt;int64&gt;[5]
        +null
        +[1, 2, 3, 4, 5]
        +
        +
        +
        (tcc/column `(1 2 3 4 5))
        +
        +
        +
        #tech.v3.dataset.column&lt;int64&gt;[5]
        +null
        +[1, 2, 3, 4, 5]
        +
        +
        +

        Ones & Zeros

        +

        You can also quickly create columns of ones or zeros:

        +
        +
        (tcc/ones 10)
        +
        +
        +
        #tech.v3.dataset.column&lt;int64&gt;[10]
        +null
        +[1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
        +
        +
        +
        (tcc/zeros 10)
        +
        +
        +
        #tech.v3.dataset.column&lt;int64&gt;[10]
        +null
        +[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        +
        +
        +
        +

        Column?

        +

        Finally, you can use the column? function to check if an item is a column:

        +
        +
        (tcc/column? [1 2 3 4 5])
        +
        +
        +
        false
        +
        +
        +
        (tcc/column? (tcc/column))
        +
        +
        +
        true
        +
        +

        Tablecloth’s datasets of course consists of columns:

        +
        +
        (tcc/column? (-> (tc/dataset {:a [1 2 3 4 5]})
        +                 :a))
        +
        +
        +
        true
        +
        +
        +
        +
        +

        Types and Type detection

        +

        The default set of types for a column are defined in the underlying “tech ml” system. We can see the set here:

        +
        +
        (tech.v3.datatype.casting/all-datatypes)
        +
        +
        +
        (:int32
        + :int16
        + :float32
        + :float64
        + :int64
        + :uint64
        + :string
        + :uint16
        + :int8
        + :uint32
        + :keyword
        + :decimal
        + :uuid
        + :boolean
        + :object
        + :char
        + :uint8)
        +
        +
        +

        Typeof & Typeof?

        +

        When you create a column, the underlying system will try to autodetect its type. We can see that here using the tcc/typeof function to check the type of a column:

        +
        +
        (-> (tcc/column [1 2 3 4 5])
        +    (tcc/typeof))
        +
        +
        +
        :int64
        +
        +
        +
        (-> (tcc/column [:a :b :c :d :e])
        +    (tcc/typeof))
        +
        +
        +
        :keyword
        +
        +

        Columns containing heterogenous data will receive type :object:

        +
        +
        (-> (tcc/column [1 :b 3 :c 5])
        +    (tcc/typeof))
        +
        +
        +
        :object
        +
        +

        You can also use the tcc/typeof? function to check the value of a function as an asssertion:

        +
        +
        (-> (tcc/column [1 2 3 4 6])
        +    (tcc/typeof? :boolean))
        +
        +
        +
        false
        +
        +
        +
        (-> (tcc/column [1 2 3 4 6])
        +    (tcc/typeof? :int64))
        +
        +
        +
        true
        +
        +

        Tablecloth has a concept of “concrete” and “general” types. A general type is the broad category of type and the concrete type is the actual type in memory. For example, a concrete type is a 64-bit integer :int64, which is also of the general type :integer. The typeof? function supports checking both.

        +
        +
        (-> (tcc/column [1 2 3 4 6])
        +    (tcc/typeof? :int64))
        +
        +
        +
        true
        +
        +
        +
        (-> (tcc/column [1 2 3 4 6])
        +    (tcc/typeof? :integer))
        +
        +
        +
        true
        +
        +
        +
        +
        +

        Column Access & Manipulation

        +
        +

        Column Access

        +

        The method for accessing a particular index position in a column is the same as for Clojure vectors:

        +
        +
        (-> (tcc/column [1 2 3 4 5])
        +    (get 3))
        +
        +
        +
        4
        +
        +
        +
        (-> (tcc/column [1 2 3 4 5])
        +    (nth 3))
        +
        +
        +
        4
        +
        +
        +
        +

        Slice

        +

        You can also slice a column

        +
        +
        (-> (tcc/column (range 10))
        +    (tcc/slice 5))
        +
        +
        +
        #tech.v3.dataset.column&lt;int64&gt;[5]
        +null
        +[5, 6, 7, 8, 9]
        +
        +
        +
        (-> (tcc/column (range 10))
        +    (tcc/slice 1 4))
        +
        +
        +
        #tech.v3.dataset.column&lt;int64&gt;[4]
        +null
        +[1, 2, 3, 4]
        +
        +
        +
        (-> (tcc/column (range 10))
        +    (tcc/slice 0 9 2))
        +
        +
        +
        #tech.v3.dataset.column&lt;int64&gt;[5]
        +null
        +[0, 2, 4, 6, 8]
        +
        +

        For clarity, the slice method supports the :end and :start keywords:

        +
        +
        (-> (tcc/column (range 10))
        +    (tcc/slice :start :end 2))
        +
        +
        +
        #tech.v3.dataset.column&lt;int64&gt;[5]
        +null
        +[0, 2, 4, 6, 8]
        +
        +

        If you need to create a discontinuous subset of the column, you can use the select function. This method accepts an array of index positions or an array of booleans. When using boolean select, a true value will select the value at the index positions containing true values:

        +
        +
        +

        Select

        +

        Select the values at index positions 1 and 9:

        +
        +
        (-> (tcc/column (range 10))
        +    (tcc/select [1 9]))
        +
        +
        +
        #tech.v3.dataset.column&lt;int64&gt;[2]
        +null
        +[1, 9]
        +
        +

        Select the values at index positions 0 and 2 using booelan select:

        +
        +
        (-> (tcc/column (range 10))
        +    (tcc/select (tcc/column [true false true])))
        +
        +
        +
        #tech.v3.dataset.column&lt;int64&gt;[2]
        +null
        +[0, 2]
        +
        +
        +
        +

        Sort

        +

        Use sort-column to sort a column: Default sort is in ascending order:

        +
        +
        (-> (tcc/column [:c :z :a :f])
        +    (tcc/sort-column))
        +
        +
        +
        #tech.v3.dataset.column&lt;keyword&gt;[4]
        +null
        +[:a, :c, :f, :z]
        +
        +

        You can provide the :desc and :asc keywords to change the default behavior:

        +
        +
        (-> (tcc/column [:c :z :a :f])
        +    (tcc/sort-column :desc))
        +
        +
        +
        #tech.v3.dataset.column&lt;keyword&gt;[4]
        +null
        +[:z, :f, :c, :a]
        +
        +

        You can also provide a comparator fn:

        +
        +
        (-> (tcc/column [{:position 2
        +                  :text "and then stopped"}
        +                 {:position 1
        +                  :text "I ran fast"}])
        +    (tcc/sort-column (fn [a b] (< (:position a) (:position b)))))
        +
        +
        +
        #tech.v3.dataset.column&lt;persistent-map&gt;[2]
        +null
        +[{:position 1, :text "I ran fast"}, {:position 2, :text "and then stopped"}]
        +
        +
        +
        +
        +

        Column Operations

        +

        The Column API contains a large number of operations. These operations all take one or more columns as an argument, and they return either a scalar value or a new column, depending on the operations. These operations all take a column as the first argument so they are easy to use with the pipe -> macro, as with all functions in Tablecloth.

        +
        +
        (def a (tcc/column [20 30 40 50]))
        +
        +
        +
        (def b (tcc/column (range 4)))
        +
        +
        +
        (tcc/- a b)
        +
        +
        +
        #tech.v3.dataset.column&lt;int64&gt;[4]
        +null
        +[20, 29, 38, 47]
        +
        +
        +
        (tcc/pow a 2)
        +
        +
        +
        #tech.v3.dataset.column&lt;float64&gt;[4]
        +null
        +[400.0, 900.0, 1600, 2500]
        +
        +
        +
        (tcc/* 10 (tcc/sin a))
        +
        +
        +
        #tech.v3.dataset.column&lt;float64&gt;[4]
        +null
        +[9.129, -9.880, 7.451, -2.624]
        +
        +
        +
        (tcc/< a 35)
        +
        +
        +
        #tech.v3.dataset.column&lt;boolean&gt;[4]
        +null
        +[true, true, false, false]
        +
        +

        All these operations take a column as their first argument and return a column, so they can be chained easily.

        +
        +
        (-> a
        +    (tcc/* b)
        +    (tcc/< 70))
        +
        +
        +
        #tech.v3.dataset.column&lt;boolean&gt;[4]
        +null
        +[true, true, false, false]
        +
        +
        + +
        + +
        +
        + +
        + + +
        + + + + \ No newline at end of file diff --git a/docs/column_api.qmd b/docs/column_api.qmd new file mode 100644 index 0000000..c6976b8 --- /dev/null +++ b/docs/column_api.qmd @@ -0,0 +1,740 @@ + +--- +format: + html: {toc: true, toc-depth: 4, theme: spacelab, output-file: column_api.html} +highlight-style: solarized +code-block-background: true +include-in-header: {text: ''} + +--- + + + +## Column API +A `column` in tablecloth is a named sequence of typed data. This special type is defined in the `tech.ml.dataset`. It is roughly comparable to a R vector. + +### Column Creation +Empty column + + +
        +```clojure +(tcc/column) +``` +
        + + + +
        +```clojure +#tech.v3.dataset.column<boolean>[0] +null +[] + +``` +
        + + +Column from a vector or a sequence + + +
        +```clojure +(tcc/column [1 2 3 4 5]) +``` +
        + + + +
        +```clojure +#tech.v3.dataset.column<int64>[5] +null +[1, 2, 3, 4, 5] + +``` +
        + + + +
        +```clojure +(tcc/column `(1 2 3 4 5)) +``` +
        + + + +
        +```clojure +#tech.v3.dataset.column<int64>[5] +null +[1, 2, 3, 4, 5] + +``` +
        + + + +#### Ones & Zeros +You can also quickly create columns of ones or zeros: + + +
        +```clojure +(tcc/ones 10) +``` +
        + + + +
        +```clojure +#tech.v3.dataset.column<int64>[10] +null +[1, 1, 1, 1, 1, 1, 1, 1, 1, 1] + +``` +
        + + + +
        +```clojure +(tcc/zeros 10) +``` +
        + + + +
        +```clojure +#tech.v3.dataset.column<int64>[10] +null +[0, 0, 0, 0, 0, 0, 0, 0, 0, 0] + +``` +
        + + + +#### Column? +Finally, you can use the `column?` function to check if an item is a column: + + +
        +```clojure +(tcc/column? [1 2 3 4 5]) +``` +
        + + + +
        +```clojure +false + +``` +
        + + + +
        +```clojure +(tcc/column? (tcc/column)) +``` +
        + + + +
        +```clojure +true + +``` +
        + + +Tablecloth's datasets of course consists of columns: + + +
        +```clojure +(tcc/column? (-> (tc/dataset {:a [1 2 3 4 5]}) + :a)) +``` +
        + + + +
        +```clojure +true + +``` +
        + + + +### Types and Type detection +The default set of types for a column are defined in the underlying "tech ml" system. We can see the set here: + + +
        +```clojure +(tech.v3.datatype.casting/all-datatypes) +``` +
        + + + +
        +```clojure +(:int32 + :int16 + :float32 + :float64 + :int64 + :uint64 + :string + :uint16 + :int8 + :uint32 + :keyword + :decimal + :uuid + :boolean + :object + :char + :uint8) + +``` +
        + + + +#### Typeof & Typeof? +When you create a column, the underlying system will try to autodetect its type. We can see that here using the `tcc/typeof` function to check the type of a column: + + +
        +```clojure +(-> (tcc/column [1 2 3 4 5]) + (tcc/typeof)) +``` +
        + + + +
        +```clojure +:int64 + +``` +
        + + + +
        +```clojure +(-> (tcc/column [:a :b :c :d :e]) + (tcc/typeof)) +``` +
        + + + +
        +```clojure +:keyword + +``` +
        + + +Columns containing heterogenous data will receive type `:object`: + + +
        +```clojure +(-> (tcc/column [1 :b 3 :c 5]) + (tcc/typeof)) +``` +
        + + + +
        +```clojure +:object + +``` +
        + + +You can also use the `tcc/typeof?` function to check the value of a function as an asssertion: + + +
        +```clojure +(-> (tcc/column [1 2 3 4 6]) + (tcc/typeof? :boolean)) +``` +
        + + + +
        +```clojure +false + +``` +
        + + + +
        +```clojure +(-> (tcc/column [1 2 3 4 6]) + (tcc/typeof? :int64)) +``` +
        + + + +
        +```clojure +true + +``` +
        + + +Tablecloth has a concept of "concrete" and "general" types. A general type is the broad category of type and the concrete type is the actual type in memory. For example, a concrete type is a 64-bit integer `:int64`, which is also of the general type `:integer`. The `typeof?` function supports checking both. + + +
        +```clojure +(-> (tcc/column [1 2 3 4 6]) + (tcc/typeof? :int64)) +``` +
        + + + +
        +```clojure +true + +``` +
        + + + +
        +```clojure +(-> (tcc/column [1 2 3 4 6]) + (tcc/typeof? :integer)) +``` +
        + + + +
        +```clojure +true + +``` +
        + + + +### Column Access & Manipulation + +#### Column Access +The method for accessing a particular index position in a column is the same as for Clojure vectors: + + +
        +```clojure +(-> (tcc/column [1 2 3 4 5]) + (get 3)) +``` +
        + + + +
        +```clojure +4 + +``` +
        + + + +
        +```clojure +(-> (tcc/column [1 2 3 4 5]) + (nth 3)) +``` +
        + + + +
        +```clojure +4 + +``` +
        + + + +#### Slice +You can also slice a column + + +
        +```clojure +(-> (tcc/column (range 10)) + (tcc/slice 5)) +``` +
        + + + +
        +```clojure +#tech.v3.dataset.column<int64>[5] +null +[5, 6, 7, 8, 9] + +``` +
        + + + +
        +```clojure +(-> (tcc/column (range 10)) + (tcc/slice 1 4)) +``` +
        + + + +
        +```clojure +#tech.v3.dataset.column<int64>[4] +null +[1, 2, 3, 4] + +``` +
        + + + +
        +```clojure +(-> (tcc/column (range 10)) + (tcc/slice 0 9 2)) +``` +
        + + + +
        +```clojure +#tech.v3.dataset.column<int64>[5] +null +[0, 2, 4, 6, 8] + +``` +
        + + +For clarity, the `slice` method supports the `:end` and `:start` keywords: + + +
        +```clojure +(-> (tcc/column (range 10)) + (tcc/slice :start :end 2)) +``` +
        + + + +
        +```clojure +#tech.v3.dataset.column<int64>[5] +null +[0, 2, 4, 6, 8] + +``` +
        + + +If you need to create a discontinuous subset of the column, you can use the `select` function. This method accepts an array of index positions or an array of booleans. When using boolean select, a true value will select the value at the index positions containing true values: + +#### Select +Select the values at index positions 1 and 9: + + +
        +```clojure +(-> (tcc/column (range 10)) + (tcc/select [1 9])) +``` +
        + + + +
        +```clojure +#tech.v3.dataset.column<int64>[2] +null +[1, 9] + +``` +
        + + +Select the values at index positions 0 and 2 using booelan select: + + +
        +```clojure +(-> (tcc/column (range 10)) + (tcc/select (tcc/column [true false true]))) +``` +
        + + + +
        +```clojure +#tech.v3.dataset.column<int64>[2] +null +[0, 2] + +``` +
        + + + +#### Sort +Use `sort-column` to sort a column: +Default sort is in ascending order: + + +
        +```clojure +(-> (tcc/column [:c :z :a :f]) + (tcc/sort-column)) +``` +
        + + + +
        +```clojure +#tech.v3.dataset.column<keyword>[4] +null +[:a, :c, :f, :z] + +``` +
        + + +You can provide the `:desc` and `:asc` keywords to change the default behavior: + + +
        +```clojure +(-> (tcc/column [:c :z :a :f]) + (tcc/sort-column :desc)) +``` +
        + + + +
        +```clojure +#tech.v3.dataset.column<keyword>[4] +null +[:z, :f, :c, :a] + +``` +
        + + +You can also provide a comparator fn: + + +
        +```clojure +(-> (tcc/column [{:position 2 + :text "and then stopped"} + {:position 1 + :text "I ran fast"}]) + (tcc/sort-column (fn [a b] (< (:position a) (:position b))))) +``` +
        + + + +
        +```clojure +#tech.v3.dataset.column<persistent-map>[2] +null +[{:position 1, :text "I ran fast"}, {:position 2, :text "and then stopped"}] + +``` +
        + + + +### Column Operations +The Column API contains a large number of operations. These operations all take one or more columns as an argument, and they return either a scalar value or a new column, depending on the operations. These operations all take a column as the first argument so they are easy to use with the pipe `->` macro, as with all functions in Tablecloth. + + +
        +```clojure +(def a (tcc/column [20 30 40 50])) +``` +
        + + + +
        +```clojure +(def b (tcc/column (range 4))) +``` +
        + + + +
        +```clojure +(tcc/- a b) +``` +
        + + + +
        +```clojure +#tech.v3.dataset.column<int64>[4] +null +[20, 29, 38, 47] + +``` +
        + + + +
        +```clojure +(tcc/pow a 2) +``` +
        + + + +
        +```clojure +#tech.v3.dataset.column<float64>[4] +null +[400.0, 900.0, 1600, 2500] + +``` +
        + + + +
        +```clojure +(tcc/* 10 (tcc/sin a)) +``` +
        + + + +
        +```clojure +#tech.v3.dataset.column<float64>[4] +null +[9.129, -9.880, 7.451, -2.624] + +``` +
        + + + +
        +```clojure +(tcc/< a 35) +``` +
        + + + +
        +```clojure +#tech.v3.dataset.column<boolean>[4] +null +[true, true, false, false] + +``` +
        + + +All these operations take a column as their first argument and +return a column, so they can be chained easily. + + +
        +```clojure +(-> a + (tcc/* b) + (tcc/< 70)) +``` +
        + + + +
        +```clojure +#tech.v3.dataset.column<boolean>[4] +null +[true, true, false, false] + +``` +
        + + +
        + + \ No newline at end of file diff --git a/docs/column_api_files/bootstrap0.css b/docs/column_api_files/bootstrap0.css new file mode 100644 index 0000000..6ee5956 --- /dev/null +++ b/docs/column_api_files/bootstrap0.css @@ -0,0 +1,7 @@ +/*! + * Bootstrap v4.6.1 (https://getbootstrap.com/) + * Copyright 2011-2021 The Bootstrap Authors + * Copyright 2011-2021 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + */:root{--blue:#007bff;--indigo:#6610f2;--purple:#6f42c1;--pink:#e83e8c;--red:#dc3545;--orange:#fd7e14;--yellow:#ffc107;--green:#28a745;--teal:#20c997;--cyan:#17a2b8;--white:#fff;--gray:#6c757d;--gray-dark:#343a40;--primary:#007bff;--secondary:#6c757d;--success:#28a745;--info:#17a2b8;--warning:#ffc107;--danger:#dc3545;--light:#f8f9fa;--dark:#343a40;--breakpoint-xs:0;--breakpoint-sm:576px;--breakpoint-md:768px;--breakpoint-lg:992px;--breakpoint-xl:1200px;--font-family-sans-serif:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}*,::after,::before{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}[tabindex="-1"]:focus:not(:focus-visible){outline:0!important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#007bff;text-decoration:none;background-color:transparent}a:hover{color:#0056b3;text-decoration:underline}a:not([href]):not([class]){color:inherit;text-decoration:none}a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto;-ms-overflow-style:scrollbar}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg{overflow:hidden;vertical-align:middle}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:left;caption-side:bottom}th{text-align:inherit;text-align:-webkit-match-parent}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus:not(:focus-visible){outline:0}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none!important}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-bottom:.5rem;font-weight:500;line-height:1.2}.h1,h1{font-size:2.5rem}.h2,h2{font-size:2rem}.h3,h3{font-size:1.75rem}.h4,h4{font-size:1.5rem}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:6rem;font-weight:300;line-height:1.2}.display-2{font-size:5.5rem;font-weight:300;line-height:1.2}.display-3{font-size:4.5rem;font-weight:300;line-height:1.2}.display-4{font-size:3.5rem;font-weight:300;line-height:1.2}hr{margin-top:1rem;margin-bottom:1rem;border:0;border-top:1px solid rgba(0,0,0,.1)}.small,small{font-size:80%;font-weight:400}.mark,mark{padding:.2em;background-color:#fcf8e3}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:90%;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote-footer{display:block;font-size:80%;color:#6c757d}.blockquote-footer::before{content:"\2014\00A0"}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:90%;color:#6c757d}code{font-size:87.5%;color:#e83e8c;word-wrap:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:87.5%;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:100%;font-weight:700}pre{display:block;font-size:87.5%;color:#212529}pre code{font-size:inherit;color:inherit;word-break:normal}.pre-scrollable{max-height:340px;overflow-y:scroll}.container,.container-fluid,.container-lg,.container-md,.container-sm,.container-xl{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:576px){.container,.container-sm{max-width:540px}}@media (min-width:768px){.container,.container-md,.container-sm{max-width:720px}}@media (min-width:992px){.container,.container-lg,.container-md,.container-sm{max-width:960px}}@media (min-width:1200px){.container,.container-lg,.container-md,.container-sm,.container-xl{max-width:1140px}}.row{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}.no-gutters{margin-right:0;margin-left:0}.no-gutters>.col,.no-gutters>[class*=col-]{padding-right:0;padding-left:0}.col,.col-1,.col-10,.col-11,.col-12,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-auto,.col-lg,.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-auto,.col-md,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-auto,.col-sm,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-auto,.col-xl,.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-auto{position:relative;width:100%;padding-right:15px;padding-left:15px}.col{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-3>*{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.row-cols-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-6>*{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-first{-ms-flex-order:-1;order:-1}.order-last{-ms-flex-order:13;order:13}.order-0{-ms-flex-order:0;order:0}.order-1{-ms-flex-order:1;order:1}.order-2{-ms-flex-order:2;order:2}.order-3{-ms-flex-order:3;order:3}.order-4{-ms-flex-order:4;order:4}.order-5{-ms-flex-order:5;order:5}.order-6{-ms-flex-order:6;order:6}.order-7{-ms-flex-order:7;order:7}.order-8{-ms-flex-order:8;order:8}.order-9{-ms-flex-order:9;order:9}.order-10{-ms-flex-order:10;order:10}.order-11{-ms-flex-order:11;order:11}.order-12{-ms-flex-order:12;order:12}.offset-1{margin-left:8.333333%}.offset-2{margin-left:16.666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.333333%}.offset-5{margin-left:41.666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.333333%}.offset-8{margin-left:66.666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.333333%}.offset-11{margin-left:91.666667%}@media (min-width:576px){.col-sm{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-sm-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-sm-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-sm-3>*{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.row-cols-sm-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-sm-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-sm-6>*{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-sm-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-sm-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-sm-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-sm-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-sm-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-sm-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-sm-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-sm-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-sm-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-sm-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-sm-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-sm-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-sm-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-sm-first{-ms-flex-order:-1;order:-1}.order-sm-last{-ms-flex-order:13;order:13}.order-sm-0{-ms-flex-order:0;order:0}.order-sm-1{-ms-flex-order:1;order:1}.order-sm-2{-ms-flex-order:2;order:2}.order-sm-3{-ms-flex-order:3;order:3}.order-sm-4{-ms-flex-order:4;order:4}.order-sm-5{-ms-flex-order:5;order:5}.order-sm-6{-ms-flex-order:6;order:6}.order-sm-7{-ms-flex-order:7;order:7}.order-sm-8{-ms-flex-order:8;order:8}.order-sm-9{-ms-flex-order:9;order:9}.order-sm-10{-ms-flex-order:10;order:10}.order-sm-11{-ms-flex-order:11;order:11}.order-sm-12{-ms-flex-order:12;order:12}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.333333%}.offset-sm-2{margin-left:16.666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.333333%}.offset-sm-5{margin-left:41.666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.333333%}.offset-sm-8{margin-left:66.666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.333333%}.offset-sm-11{margin-left:91.666667%}}@media (min-width:768px){.col-md{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-md-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-md-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-md-3>*{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.row-cols-md-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-md-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-md-6>*{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-md-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-md-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-md-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-md-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-md-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-md-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-md-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-md-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-md-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-md-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-md-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-md-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-md-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-md-first{-ms-flex-order:-1;order:-1}.order-md-last{-ms-flex-order:13;order:13}.order-md-0{-ms-flex-order:0;order:0}.order-md-1{-ms-flex-order:1;order:1}.order-md-2{-ms-flex-order:2;order:2}.order-md-3{-ms-flex-order:3;order:3}.order-md-4{-ms-flex-order:4;order:4}.order-md-5{-ms-flex-order:5;order:5}.order-md-6{-ms-flex-order:6;order:6}.order-md-7{-ms-flex-order:7;order:7}.order-md-8{-ms-flex-order:8;order:8}.order-md-9{-ms-flex-order:9;order:9}.order-md-10{-ms-flex-order:10;order:10}.order-md-11{-ms-flex-order:11;order:11}.order-md-12{-ms-flex-order:12;order:12}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.333333%}.offset-md-2{margin-left:16.666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.333333%}.offset-md-5{margin-left:41.666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.333333%}.offset-md-8{margin-left:66.666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.333333%}.offset-md-11{margin-left:91.666667%}}@media (min-width:992px){.col-lg{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-lg-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-lg-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-lg-3>*{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.row-cols-lg-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-lg-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-lg-6>*{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-lg-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-lg-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-lg-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-lg-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-lg-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-lg-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-lg-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-lg-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-lg-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-lg-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-lg-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-lg-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-lg-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-lg-first{-ms-flex-order:-1;order:-1}.order-lg-last{-ms-flex-order:13;order:13}.order-lg-0{-ms-flex-order:0;order:0}.order-lg-1{-ms-flex-order:1;order:1}.order-lg-2{-ms-flex-order:2;order:2}.order-lg-3{-ms-flex-order:3;order:3}.order-lg-4{-ms-flex-order:4;order:4}.order-lg-5{-ms-flex-order:5;order:5}.order-lg-6{-ms-flex-order:6;order:6}.order-lg-7{-ms-flex-order:7;order:7}.order-lg-8{-ms-flex-order:8;order:8}.order-lg-9{-ms-flex-order:9;order:9}.order-lg-10{-ms-flex-order:10;order:10}.order-lg-11{-ms-flex-order:11;order:11}.order-lg-12{-ms-flex-order:12;order:12}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.333333%}.offset-lg-2{margin-left:16.666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.333333%}.offset-lg-5{margin-left:41.666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.333333%}.offset-lg-8{margin-left:66.666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.333333%}.offset-lg-11{margin-left:91.666667%}}@media (min-width:1200px){.col-xl{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-xl-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-xl-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-xl-3>*{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.row-cols-xl-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-xl-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-xl-6>*{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-xl-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-xl-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-xl-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-xl-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-xl-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-xl-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-xl-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-xl-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-xl-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-xl-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-xl-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-xl-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-xl-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-xl-first{-ms-flex-order:-1;order:-1}.order-xl-last{-ms-flex-order:13;order:13}.order-xl-0{-ms-flex-order:0;order:0}.order-xl-1{-ms-flex-order:1;order:1}.order-xl-2{-ms-flex-order:2;order:2}.order-xl-3{-ms-flex-order:3;order:3}.order-xl-4{-ms-flex-order:4;order:4}.order-xl-5{-ms-flex-order:5;order:5}.order-xl-6{-ms-flex-order:6;order:6}.order-xl-7{-ms-flex-order:7;order:7}.order-xl-8{-ms-flex-order:8;order:8}.order-xl-9{-ms-flex-order:9;order:9}.order-xl-10{-ms-flex-order:10;order:10}.order-xl-11{-ms-flex-order:11;order:11}.order-xl-12{-ms-flex-order:12;order:12}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.333333%}.offset-xl-2{margin-left:16.666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.333333%}.offset-xl-5{margin-left:41.666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.333333%}.offset-xl-8{margin-left:66.666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.333333%}.offset-xl-11{margin-left:91.666667%}}.table{width:100%;margin-bottom:1rem;color:#212529}.table td,.table th{padding:.75rem;vertical-align:top;border-top:1px solid #dee2e6}.table thead th{vertical-align:bottom;border-bottom:2px solid #dee2e6}.table tbody+tbody{border-top:2px solid #dee2e6}.table-sm td,.table-sm th{padding:.3rem}.table-bordered{border:1px solid #dee2e6}.table-bordered td,.table-bordered th{border:1px solid #dee2e6}.table-bordered thead td,.table-bordered thead th{border-bottom-width:2px}.table-borderless tbody+tbody,.table-borderless td,.table-borderless th,.table-borderless thead th{border:0}.table-striped tbody tr:nth-of-type(odd){background-color:rgba(0,0,0,.05)}.table-hover tbody tr:hover{color:#212529;background-color:rgba(0,0,0,.075)}.table-primary,.table-primary>td,.table-primary>th{background-color:#b8daff}.table-primary tbody+tbody,.table-primary td,.table-primary th,.table-primary thead th{border-color:#7abaff}.table-hover .table-primary:hover{background-color:#9fcdff}.table-hover .table-primary:hover>td,.table-hover .table-primary:hover>th{background-color:#9fcdff}.table-secondary,.table-secondary>td,.table-secondary>th{background-color:#d6d8db}.table-secondary tbody+tbody,.table-secondary td,.table-secondary th,.table-secondary thead th{border-color:#b3b7bb}.table-hover .table-secondary:hover{background-color:#c8cbcf}.table-hover .table-secondary:hover>td,.table-hover .table-secondary:hover>th{background-color:#c8cbcf}.table-success,.table-success>td,.table-success>th{background-color:#c3e6cb}.table-success tbody+tbody,.table-success td,.table-success th,.table-success thead th{border-color:#8fd19e}.table-hover .table-success:hover{background-color:#b1dfbb}.table-hover .table-success:hover>td,.table-hover .table-success:hover>th{background-color:#b1dfbb}.table-info,.table-info>td,.table-info>th{background-color:#bee5eb}.table-info tbody+tbody,.table-info td,.table-info th,.table-info thead th{border-color:#86cfda}.table-hover .table-info:hover{background-color:#abdde5}.table-hover .table-info:hover>td,.table-hover .table-info:hover>th{background-color:#abdde5}.table-warning,.table-warning>td,.table-warning>th{background-color:#ffeeba}.table-warning tbody+tbody,.table-warning td,.table-warning th,.table-warning thead th{border-color:#ffdf7e}.table-hover .table-warning:hover{background-color:#ffe8a1}.table-hover .table-warning:hover>td,.table-hover .table-warning:hover>th{background-color:#ffe8a1}.table-danger,.table-danger>td,.table-danger>th{background-color:#f5c6cb}.table-danger tbody+tbody,.table-danger td,.table-danger th,.table-danger thead th{border-color:#ed969e}.table-hover .table-danger:hover{background-color:#f1b0b7}.table-hover .table-danger:hover>td,.table-hover .table-danger:hover>th{background-color:#f1b0b7}.table-light,.table-light>td,.table-light>th{background-color:#fdfdfe}.table-light tbody+tbody,.table-light td,.table-light th,.table-light thead th{border-color:#fbfcfc}.table-hover .table-light:hover{background-color:#ececf6}.table-hover .table-light:hover>td,.table-hover .table-light:hover>th{background-color:#ececf6}.table-dark,.table-dark>td,.table-dark>th{background-color:#c6c8ca}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#95999c}.table-hover .table-dark:hover{background-color:#b9bbbe}.table-hover .table-dark:hover>td,.table-hover .table-dark:hover>th{background-color:#b9bbbe}.table-active,.table-active>td,.table-active>th{background-color:rgba(0,0,0,.075)}.table-hover .table-active:hover{background-color:rgba(0,0,0,.075)}.table-hover .table-active:hover>td,.table-hover .table-active:hover>th{background-color:rgba(0,0,0,.075)}.table .thead-dark th{color:#fff;background-color:#343a40;border-color:#454d55}.table .thead-light th{color:#495057;background-color:#e9ecef;border-color:#dee2e6}.table-dark{color:#fff;background-color:#343a40}.table-dark td,.table-dark th,.table-dark thead th{border-color:#454d55}.table-dark.table-bordered{border:0}.table-dark.table-striped tbody tr:nth-of-type(odd){background-color:rgba(255,255,255,.05)}.table-dark.table-hover tbody tr:hover{color:#fff;background-color:rgba(255,255,255,.075)}@media (max-width:575.98px){.table-responsive-sm{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-sm>.table-bordered{border:0}}@media (max-width:767.98px){.table-responsive-md{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-md>.table-bordered{border:0}}@media (max-width:991.98px){.table-responsive-lg{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-lg>.table-bordered{border:0}}@media (max-width:1199.98px){.table-responsive-xl{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-xl>.table-bordered{border:0}}.table-responsive{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive>.table-bordered{border:0}.form-control{display:block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control{transition:none}}.form-control::-ms-expand{background-color:transparent;border:0}.form-control:focus{color:#495057;background-color:#fff;border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.form-control::-webkit-input-placeholder{color:#6c757d;opacity:1}.form-control::-moz-placeholder{color:#6c757d;opacity:1}.form-control:-ms-input-placeholder{color:#6c757d;opacity:1}.form-control::-ms-input-placeholder{color:#6c757d;opacity:1}.form-control::placeholder{color:#6c757d;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#e9ecef;opacity:1}input[type=date].form-control,input[type=datetime-local].form-control,input[type=month].form-control,input[type=time].form-control{-webkit-appearance:none;-moz-appearance:none;appearance:none}select.form-control:-moz-focusring{color:transparent;text-shadow:0 0 0 #495057}select.form-control:focus::-ms-value{color:#495057;background-color:#fff}.form-control-file,.form-control-range{display:block;width:100%}.col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem;line-height:1.5}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem;line-height:1.5}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;font-size:1rem;line-height:1.5;color:#212529;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm{padding-right:0;padding-left:0}.form-control-sm{height:calc(1.5em + .5rem + 2px);padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.form-control-lg{height:calc(1.5em + 1rem + 2px);padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}select.form-control[multiple],select.form-control[size]{height:auto}textarea.form-control{height:auto}.form-group{margin-bottom:1rem}.form-text{display:block;margin-top:.25rem}.form-row{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-5px;margin-left:-5px}.form-row>.col,.form-row>[class*=col-]{padding-right:5px;padding-left:5px}.form-check{position:relative;display:block;padding-left:1.25rem}.form-check-input{position:absolute;margin-top:.3rem;margin-left:-1.25rem}.form-check-input:disabled~.form-check-label,.form-check-input[disabled]~.form-check-label{color:#6c757d}.form-check-label{margin-bottom:0}.form-check-inline{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;padding-left:0;margin-right:.75rem}.form-check-inline .form-check-input{position:static;margin-top:0;margin-right:.3125rem;margin-left:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#28a745}.valid-tooltip{position:absolute;top:100%;left:0;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:rgba(40,167,69,.9);border-radius:.25rem}.form-row>.col>.valid-tooltip,.form-row>[class*=col-]>.valid-tooltip{left:5px}.is-valid~.valid-feedback,.is-valid~.valid-tooltip,.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip{display:block}.form-control.is-valid,.was-validated .form-control:valid{border-color:#28a745;padding-right:calc(1.5em + .75rem)!important;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-valid:focus,.was-validated .form-control:valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.was-validated select.form-control:valid,select.form-control.is-valid{padding-right:3rem!important;background-position:right 1.5rem center}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.custom-select.is-valid,.was-validated .custom-select:valid{border-color:#28a745;padding-right:calc(.75em + 2.3125rem)!important;background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") right .75rem center/8px 10px no-repeat,#fff url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e") center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem) no-repeat}.custom-select.is-valid:focus,.was-validated .custom-select:valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:#28a745}.form-check-input.is-valid~.valid-feedback,.form-check-input.is-valid~.valid-tooltip,.was-validated .form-check-input:valid~.valid-feedback,.was-validated .form-check-input:valid~.valid-tooltip{display:block}.custom-control-input.is-valid~.custom-control-label,.was-validated .custom-control-input:valid~.custom-control-label{color:#28a745}.custom-control-input.is-valid~.custom-control-label::before,.was-validated .custom-control-input:valid~.custom-control-label::before{border-color:#28a745}.custom-control-input.is-valid:checked~.custom-control-label::before,.was-validated .custom-control-input:valid:checked~.custom-control-label::before{border-color:#34ce57;background-color:#34ce57}.custom-control-input.is-valid:focus~.custom-control-label::before,.was-validated .custom-control-input:valid:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.custom-control-input.is-valid:focus:not(:checked)~.custom-control-label::before,.was-validated .custom-control-input:valid:focus:not(:checked)~.custom-control-label::before{border-color:#28a745}.custom-file-input.is-valid~.custom-file-label,.was-validated .custom-file-input:valid~.custom-file-label{border-color:#28a745}.custom-file-input.is-valid:focus~.custom-file-label,.was-validated .custom-file-input:valid:focus~.custom-file-label{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#dc3545}.invalid-tooltip{position:absolute;top:100%;left:0;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:rgba(220,53,69,.9);border-radius:.25rem}.form-row>.col>.invalid-tooltip,.form-row>[class*=col-]>.invalid-tooltip{left:5px}.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip,.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip{display:block}.form-control.is-invalid,.was-validated .form-control:invalid{border-color:#dc3545;padding-right:calc(1.5em + .75rem)!important;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-invalid:focus,.was-validated .form-control:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.was-validated select.form-control:invalid,select.form-control.is-invalid{padding-right:3rem!important;background-position:right 1.5rem center}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.custom-select.is-invalid,.was-validated .custom-select:invalid{border-color:#dc3545;padding-right:calc(.75em + 2.3125rem)!important;background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") right .75rem center/8px 10px no-repeat,#fff url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e") center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem) no-repeat}.custom-select.is-invalid:focus,.was-validated .custom-select:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:#dc3545}.form-check-input.is-invalid~.invalid-feedback,.form-check-input.is-invalid~.invalid-tooltip,.was-validated .form-check-input:invalid~.invalid-feedback,.was-validated .form-check-input:invalid~.invalid-tooltip{display:block}.custom-control-input.is-invalid~.custom-control-label,.was-validated .custom-control-input:invalid~.custom-control-label{color:#dc3545}.custom-control-input.is-invalid~.custom-control-label::before,.was-validated .custom-control-input:invalid~.custom-control-label::before{border-color:#dc3545}.custom-control-input.is-invalid:checked~.custom-control-label::before,.was-validated .custom-control-input:invalid:checked~.custom-control-label::before{border-color:#e4606d;background-color:#e4606d}.custom-control-input.is-invalid:focus~.custom-control-label::before,.was-validated .custom-control-input:invalid:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.custom-control-input.is-invalid:focus:not(:checked)~.custom-control-label::before,.was-validated .custom-control-input:invalid:focus:not(:checked)~.custom-control-label::before{border-color:#dc3545}.custom-file-input.is-invalid~.custom-file-label,.was-validated .custom-file-input:invalid~.custom-file-label{border-color:#dc3545}.custom-file-input.is-invalid:focus~.custom-file-label,.was-validated .custom-file-input:invalid:focus~.custom-file-label{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.form-inline{display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap;-ms-flex-align:center;align-items:center}.form-inline .form-check{width:100%}@media (min-width:576px){.form-inline label{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;margin-bottom:0}.form-inline .form-group{display:-ms-flexbox;display:flex;-ms-flex:0 0 auto;flex:0 0 auto;-ms-flex-flow:row wrap;flex-flow:row wrap;-ms-flex-align:center;align-items:center;margin-bottom:0}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-plaintext{display:inline-block}.form-inline .custom-select,.form-inline .input-group{width:auto}.form-inline .form-check{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:auto;padding-left:0}.form-inline .form-check-input{position:relative;-ms-flex-negative:0;flex-shrink:0;margin-top:0;margin-right:.25rem;margin-left:0}.form-inline .custom-control{-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}.form-inline .custom-control-label{margin-bottom:0}}.btn{display:inline-block;font-weight:400;color:#212529;text-align:center;vertical-align:middle;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:transparent;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;line-height:1.5;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.btn{transition:none}}.btn:hover{color:#212529;text-decoration:none}.btn.focus,.btn:focus{outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.btn.disabled,.btn:disabled{opacity:.65}.btn:not(:disabled):not(.disabled){cursor:pointer}a.btn.disabled,fieldset:disabled a.btn{pointer-events:none}.btn-primary{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:hover{color:#fff;background-color:#0069d9;border-color:#0062cc}.btn-primary.focus,.btn-primary:focus{color:#fff;background-color:#0069d9;border-color:#0062cc;box-shadow:0 0 0 .2rem rgba(38,143,255,.5)}.btn-primary.disabled,.btn-primary:disabled{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:not(:disabled):not(.disabled).active,.btn-primary:not(:disabled):not(.disabled):active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#0062cc;border-color:#005cbf}.btn-primary:not(:disabled):not(.disabled).active:focus,.btn-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(38,143,255,.5)}.btn-secondary{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:hover{color:#fff;background-color:#5a6268;border-color:#545b62}.btn-secondary.focus,.btn-secondary:focus{color:#fff;background-color:#5a6268;border-color:#545b62;box-shadow:0 0 0 .2rem rgba(130,138,145,.5)}.btn-secondary.disabled,.btn-secondary:disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:not(:disabled):not(.disabled).active,.btn-secondary:not(:disabled):not(.disabled):active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#545b62;border-color:#4e555b}.btn-secondary:not(:disabled):not(.disabled).active:focus,.btn-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(130,138,145,.5)}.btn-success{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:hover{color:#fff;background-color:#218838;border-color:#1e7e34}.btn-success.focus,.btn-success:focus{color:#fff;background-color:#218838;border-color:#1e7e34;box-shadow:0 0 0 .2rem rgba(72,180,97,.5)}.btn-success.disabled,.btn-success:disabled{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:not(:disabled):not(.disabled).active,.btn-success:not(:disabled):not(.disabled):active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#1e7e34;border-color:#1c7430}.btn-success:not(:disabled):not(.disabled).active:focus,.btn-success:not(:disabled):not(.disabled):active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(72,180,97,.5)}.btn-info{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:hover{color:#fff;background-color:#138496;border-color:#117a8b}.btn-info.focus,.btn-info:focus{color:#fff;background-color:#138496;border-color:#117a8b;box-shadow:0 0 0 .2rem rgba(58,176,195,.5)}.btn-info.disabled,.btn-info:disabled{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:not(:disabled):not(.disabled).active,.btn-info:not(:disabled):not(.disabled):active,.show>.btn-info.dropdown-toggle{color:#fff;background-color:#117a8b;border-color:#10707f}.btn-info:not(:disabled):not(.disabled).active:focus,.btn-info:not(:disabled):not(.disabled):active:focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(58,176,195,.5)}.btn-warning{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:hover{color:#212529;background-color:#e0a800;border-color:#d39e00}.btn-warning.focus,.btn-warning:focus{color:#212529;background-color:#e0a800;border-color:#d39e00;box-shadow:0 0 0 .2rem rgba(222,170,12,.5)}.btn-warning.disabled,.btn-warning:disabled{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:not(:disabled):not(.disabled).active,.btn-warning:not(:disabled):not(.disabled):active,.show>.btn-warning.dropdown-toggle{color:#212529;background-color:#d39e00;border-color:#c69500}.btn-warning:not(:disabled):not(.disabled).active:focus,.btn-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(222,170,12,.5)}.btn-danger{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:hover{color:#fff;background-color:#c82333;border-color:#bd2130}.btn-danger.focus,.btn-danger:focus{color:#fff;background-color:#c82333;border-color:#bd2130;box-shadow:0 0 0 .2rem rgba(225,83,97,.5)}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:not(:disabled):not(.disabled).active,.btn-danger:not(:disabled):not(.disabled):active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#bd2130;border-color:#b21f2d}.btn-danger:not(:disabled):not(.disabled).active:focus,.btn-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(225,83,97,.5)}.btn-light{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:hover{color:#212529;background-color:#e2e6ea;border-color:#dae0e5}.btn-light.focus,.btn-light:focus{color:#212529;background-color:#e2e6ea;border-color:#dae0e5;box-shadow:0 0 0 .2rem rgba(216,217,219,.5)}.btn-light.disabled,.btn-light:disabled{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:not(:disabled):not(.disabled).active,.btn-light:not(:disabled):not(.disabled):active,.show>.btn-light.dropdown-toggle{color:#212529;background-color:#dae0e5;border-color:#d3d9df}.btn-light:not(:disabled):not(.disabled).active:focus,.btn-light:not(:disabled):not(.disabled):active:focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(216,217,219,.5)}.btn-dark{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:hover{color:#fff;background-color:#23272b;border-color:#1d2124}.btn-dark.focus,.btn-dark:focus{color:#fff;background-color:#23272b;border-color:#1d2124;box-shadow:0 0 0 .2rem rgba(82,88,93,.5)}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:not(:disabled):not(.disabled).active,.btn-dark:not(:disabled):not(.disabled):active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#1d2124;border-color:#171a1d}.btn-dark:not(:disabled):not(.disabled).active:focus,.btn-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(82,88,93,.5)}.btn-outline-primary{color:#007bff;border-color:#007bff}.btn-outline-primary:hover{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary.focus,.btn-outline-primary:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#007bff;background-color:transparent}.btn-outline-primary:not(:disabled):not(.disabled).active,.btn-outline-primary:not(:disabled):not(.disabled):active,.show>.btn-outline-primary.dropdown-toggle{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary:not(:disabled):not(.disabled).active:focus,.btn-outline-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-outline-secondary{color:#6c757d;border-color:#6c757d}.btn-outline-secondary:hover{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary.focus,.btn-outline-secondary:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#6c757d;background-color:transparent}.btn-outline-secondary:not(:disabled):not(.disabled).active,.btn-outline-secondary:not(:disabled):not(.disabled):active,.show>.btn-outline-secondary.dropdown-toggle{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary:not(:disabled):not(.disabled).active:focus,.btn-outline-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-outline-success{color:#28a745;border-color:#28a745}.btn-outline-success:hover{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success.focus,.btn-outline-success:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#28a745;background-color:transparent}.btn-outline-success:not(:disabled):not(.disabled).active,.btn-outline-success:not(:disabled):not(.disabled):active,.show>.btn-outline-success.dropdown-toggle{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success:not(:disabled):not(.disabled).active:focus,.btn-outline-success:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-outline-info{color:#17a2b8;border-color:#17a2b8}.btn-outline-info:hover{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info.focus,.btn-outline-info:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#17a2b8;background-color:transparent}.btn-outline-info:not(:disabled):not(.disabled).active,.btn-outline-info:not(:disabled):not(.disabled):active,.show>.btn-outline-info.dropdown-toggle{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info:not(:disabled):not(.disabled).active:focus,.btn-outline-info:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-outline-warning{color:#ffc107;border-color:#ffc107}.btn-outline-warning:hover{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning.focus,.btn-outline-warning:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#ffc107;background-color:transparent}.btn-outline-warning:not(:disabled):not(.disabled).active,.btn-outline-warning:not(:disabled):not(.disabled):active,.show>.btn-outline-warning.dropdown-toggle{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning:not(:disabled):not(.disabled).active:focus,.btn-outline-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-outline-danger{color:#dc3545;border-color:#dc3545}.btn-outline-danger:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger.focus,.btn-outline-danger:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#dc3545;background-color:transparent}.btn-outline-danger:not(:disabled):not(.disabled).active,.btn-outline-danger:not(:disabled):not(.disabled):active,.show>.btn-outline-danger.dropdown-toggle{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger:not(:disabled):not(.disabled).active:focus,.btn-outline-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-outline-light{color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:hover{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light.focus,.btn-outline-light:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#f8f9fa;background-color:transparent}.btn-outline-light:not(:disabled):not(.disabled).active,.btn-outline-light:not(:disabled):not(.disabled):active,.show>.btn-outline-light.dropdown-toggle{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:not(:disabled):not(.disabled).active:focus,.btn-outline-light:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-dark{color:#343a40;border-color:#343a40}.btn-outline-dark:hover{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark.focus,.btn-outline-dark:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#343a40;background-color:transparent}.btn-outline-dark:not(:disabled):not(.disabled).active,.btn-outline-dark:not(:disabled):not(.disabled):active,.show>.btn-outline-dark.dropdown-toggle{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark:not(:disabled):not(.disabled).active:focus,.btn-outline-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-link{font-weight:400;color:#007bff;text-decoration:none}.btn-link:hover{color:#0056b3;text-decoration:underline}.btn-link.focus,.btn-link:focus{text-decoration:underline}.btn-link.disabled,.btn-link:disabled{color:#6c757d;pointer-events:none}.btn-group-lg>.btn,.btn-lg{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.btn-group-sm>.btn,.btn-sm{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:.5rem}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{transition:opacity .15s linear}@media (prefers-reduced-motion:reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{position:relative;height:0;overflow:hidden;transition:height .35s ease}@media (prefers-reduced-motion:reduce){.collapsing{transition:none}}.dropdown,.dropleft,.dropright,.dropup{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:10rem;padding:.5rem 0;margin:.125rem 0 0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.dropdown-menu-left{right:auto;left:0}.dropdown-menu-right{right:0;left:auto}@media (min-width:576px){.dropdown-menu-sm-left{right:auto;left:0}.dropdown-menu-sm-right{right:0;left:auto}}@media (min-width:768px){.dropdown-menu-md-left{right:auto;left:0}.dropdown-menu-md-right{right:0;left:auto}}@media (min-width:992px){.dropdown-menu-lg-left{right:auto;left:0}.dropdown-menu-lg-right{right:0;left:auto}}@media (min-width:1200px){.dropdown-menu-xl-left{right:auto;left:0}.dropdown-menu-xl-right{right:0;left:auto}}.dropup .dropdown-menu{top:auto;bottom:100%;margin-top:0;margin-bottom:.125rem}.dropup .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-menu{top:0;right:auto;left:100%;margin-top:0;margin-left:.125rem}.dropright .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}.dropright .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-toggle::after{vertical-align:0}.dropleft .dropdown-menu{top:0;right:100%;left:auto;margin-top:0;margin-right:.125rem}.dropleft .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}.dropleft .dropdown-toggle::after{display:none}.dropleft .dropdown-toggle::before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropleft .dropdown-toggle:empty::after{margin-left:0}.dropleft .dropdown-toggle::before{vertical-align:0}.dropdown-menu[x-placement^=bottom],.dropdown-menu[x-placement^=left],.dropdown-menu[x-placement^=right],.dropdown-menu[x-placement^=top]{right:auto;bottom:auto}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid #e9ecef}.dropdown-item{display:block;width:100%;padding:.25rem 1.5rem;clear:both;font-weight:400;color:#212529;text-align:inherit;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:focus,.dropdown-item:hover{color:#16181b;text-decoration:none;background-color:#e9ecef}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#007bff}.dropdown-item.disabled,.dropdown-item:disabled{color:#adb5bd;pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1.5rem;margin-bottom:0;font-size:.875rem;color:#6c757d;white-space:nowrap}.dropdown-item-text{display:block;padding:.25rem 1.5rem;color:#212529}.btn-group,.btn-group-vertical{position:relative;display:-ms-inline-flexbox;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;-ms-flex:1 1 auto;flex:1 1 auto}.btn-group-vertical>.btn:hover,.btn-group>.btn:hover{z-index:1}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus{z-index:1}.btn-toolbar{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-pack:start;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn-group:not(:first-child),.btn-group>.btn:not(:first-child){margin-left:-1px}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after,.dropright .dropdown-toggle-split::after,.dropup .dropdown-toggle-split::after{margin-left:0}.dropleft .dropdown-toggle-split::before{margin-right:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{-ms-flex-direction:column;flex-direction:column;-ms-flex-align:start;align-items:flex-start;-ms-flex-pack:center;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn-group:not(:first-child),.btn-group-vertical>.btn:not(:first-child){margin-top:-1px}.btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn:not(:first-child){border-top-left-radius:0;border-top-right-radius:0}.btn-group-toggle>.btn,.btn-group-toggle>.btn-group>.btn{margin-bottom:0}.btn-group-toggle>.btn input[type=checkbox],.btn-group-toggle>.btn input[type=radio],.btn-group-toggle>.btn-group>.btn input[type=checkbox],.btn-group-toggle>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:stretch;align-items:stretch;width:100%}.input-group>.custom-file,.input-group>.custom-select,.input-group>.form-control,.input-group>.form-control-plaintext{position:relative;-ms-flex:1 1 auto;flex:1 1 auto;width:1%;min-width:0;margin-bottom:0}.input-group>.custom-file+.custom-file,.input-group>.custom-file+.custom-select,.input-group>.custom-file+.form-control,.input-group>.custom-select+.custom-file,.input-group>.custom-select+.custom-select,.input-group>.custom-select+.form-control,.input-group>.form-control+.custom-file,.input-group>.form-control+.custom-select,.input-group>.form-control+.form-control,.input-group>.form-control-plaintext+.custom-file,.input-group>.form-control-plaintext+.custom-select,.input-group>.form-control-plaintext+.form-control{margin-left:-1px}.input-group>.custom-file .custom-file-input:focus~.custom-file-label,.input-group>.custom-select:focus,.input-group>.form-control:focus{z-index:3}.input-group>.custom-file .custom-file-input:focus{z-index:4}.input-group>.custom-select:not(:first-child),.input-group>.form-control:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.custom-file{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.input-group>.custom-file:not(:last-child) .custom-file-label,.input-group>.custom-file:not(:last-child) .custom-file-label::after{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-file:not(:first-child) .custom-file-label{border-top-left-radius:0;border-bottom-left-radius:0}.input-group:not(.has-validation)>.custom-file:not(:last-child) .custom-file-label,.input-group:not(.has-validation)>.custom-file:not(:last-child) .custom-file-label::after,.input-group:not(.has-validation)>.custom-select:not(:last-child),.input-group:not(.has-validation)>.form-control:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group.has-validation>.custom-file:nth-last-child(n+3) .custom-file-label,.input-group.has-validation>.custom-file:nth-last-child(n+3) .custom-file-label::after,.input-group.has-validation>.custom-select:nth-last-child(n+3),.input-group.has-validation>.form-control:nth-last-child(n+3){border-top-right-radius:0;border-bottom-right-radius:0}.input-group-append,.input-group-prepend{display:-ms-flexbox;display:flex}.input-group-append .btn,.input-group-prepend .btn{position:relative;z-index:2}.input-group-append .btn:focus,.input-group-prepend .btn:focus{z-index:3}.input-group-append .btn+.btn,.input-group-append .btn+.input-group-text,.input-group-append .input-group-text+.btn,.input-group-append .input-group-text+.input-group-text,.input-group-prepend .btn+.btn,.input-group-prepend .btn+.input-group-text,.input-group-prepend .input-group-text+.btn,.input-group-prepend .input-group-text+.input-group-text{margin-left:-1px}.input-group-prepend{margin-right:-1px}.input-group-append{margin-left:-1px}.input-group-text{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;padding:.375rem .75rem;margin-bottom:0;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.25rem}.input-group-text input[type=checkbox],.input-group-text input[type=radio]{margin-top:0}.input-group-lg>.custom-select,.input-group-lg>.form-control:not(textarea){height:calc(1.5em + 1rem + 2px)}.input-group-lg>.custom-select,.input-group-lg>.form-control,.input-group-lg>.input-group-append>.btn,.input-group-lg>.input-group-append>.input-group-text,.input-group-lg>.input-group-prepend>.btn,.input-group-lg>.input-group-prepend>.input-group-text{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.input-group-sm>.custom-select,.input-group-sm>.form-control:not(textarea){height:calc(1.5em + .5rem + 2px)}.input-group-sm>.custom-select,.input-group-sm>.form-control,.input-group-sm>.input-group-append>.btn,.input-group-sm>.input-group-append>.input-group-text,.input-group-sm>.input-group-prepend>.btn,.input-group-sm>.input-group-prepend>.input-group-text{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.input-group-lg>.custom-select,.input-group-sm>.custom-select{padding-right:1.75rem}.input-group.has-validation>.input-group-append:nth-last-child(n+3)>.btn,.input-group.has-validation>.input-group-append:nth-last-child(n+3)>.input-group-text,.input-group:not(.has-validation)>.input-group-append:not(:last-child)>.btn,.input-group:not(.has-validation)>.input-group-append:not(:last-child)>.input-group-text,.input-group>.input-group-append:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group>.input-group-append:last-child>.input-group-text:not(:last-child),.input-group>.input-group-prepend>.btn,.input-group>.input-group-prepend>.input-group-text{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.input-group-append>.btn,.input-group>.input-group-append>.input-group-text,.input-group>.input-group-prepend:first-child>.btn:not(:first-child),.input-group>.input-group-prepend:first-child>.input-group-text:not(:first-child),.input-group>.input-group-prepend:not(:first-child)>.btn,.input-group>.input-group-prepend:not(:first-child)>.input-group-text{border-top-left-radius:0;border-bottom-left-radius:0}.custom-control{position:relative;z-index:1;display:block;min-height:1.5rem;padding-left:1.5rem;-webkit-print-color-adjust:exact;color-adjust:exact}.custom-control-inline{display:-ms-inline-flexbox;display:inline-flex;margin-right:1rem}.custom-control-input{position:absolute;left:0;z-index:-1;width:1rem;height:1.25rem;opacity:0}.custom-control-input:checked~.custom-control-label::before{color:#fff;border-color:#007bff;background-color:#007bff}.custom-control-input:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-control-input:focus:not(:checked)~.custom-control-label::before{border-color:#80bdff}.custom-control-input:not(:disabled):active~.custom-control-label::before{color:#fff;background-color:#b3d7ff;border-color:#b3d7ff}.custom-control-input:disabled~.custom-control-label,.custom-control-input[disabled]~.custom-control-label{color:#6c757d}.custom-control-input:disabled~.custom-control-label::before,.custom-control-input[disabled]~.custom-control-label::before{background-color:#e9ecef}.custom-control-label{position:relative;margin-bottom:0;vertical-align:top}.custom-control-label::before{position:absolute;top:.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;pointer-events:none;content:"";background-color:#fff;border:#adb5bd solid 1px}.custom-control-label::after{position:absolute;top:.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;content:"";background:50%/50% 50% no-repeat}.custom-checkbox .custom-control-label::before{border-radius:.25rem}.custom-checkbox .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3e%3c/svg%3e")}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::before{border-color:#007bff;background-color:#007bff}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='4' viewBox='0 0 4 4'%3e%3cpath stroke='%23fff' d='M0 2h4'/%3e%3c/svg%3e")}.custom-checkbox .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-checkbox .custom-control-input:disabled:indeterminate~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-radio .custom-control-label::before{border-radius:50%}.custom-radio .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.custom-radio .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-switch{padding-left:2.25rem}.custom-switch .custom-control-label::before{left:-2.25rem;width:1.75rem;pointer-events:all;border-radius:.5rem}.custom-switch .custom-control-label::after{top:calc(.25rem + 2px);left:calc(-2.25rem + 2px);width:calc(1rem - 4px);height:calc(1rem - 4px);background-color:#adb5bd;border-radius:.5rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-transform .15s ease-in-out;transition:transform .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:transform .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-transform .15s ease-in-out}@media (prefers-reduced-motion:reduce){.custom-switch .custom-control-label::after{transition:none}}.custom-switch .custom-control-input:checked~.custom-control-label::after{background-color:#fff;-webkit-transform:translateX(.75rem);transform:translateX(.75rem)}.custom-switch .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-select{display:inline-block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem 1.75rem .375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;vertical-align:middle;background:#fff url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") right .75rem center/8px 10px no-repeat;border:1px solid #ced4da;border-radius:.25rem;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-select:focus{border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-select:focus::-ms-value{color:#495057;background-color:#fff}.custom-select[multiple],.custom-select[size]:not([size="1"]){height:auto;padding-right:.75rem;background-image:none}.custom-select:disabled{color:#6c757d;background-color:#e9ecef}.custom-select::-ms-expand{display:none}.custom-select:-moz-focusring{color:transparent;text-shadow:0 0 0 #495057}.custom-select-sm{height:calc(1.5em + .5rem + 2px);padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem}.custom-select-lg{height:calc(1.5em + 1rem + 2px);padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem}.custom-file{position:relative;display:inline-block;width:100%;height:calc(1.5em + .75rem + 2px);margin-bottom:0}.custom-file-input{position:relative;z-index:2;width:100%;height:calc(1.5em + .75rem + 2px);margin:0;overflow:hidden;opacity:0}.custom-file-input:focus~.custom-file-label{border-color:#80bdff;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-file-input:disabled~.custom-file-label,.custom-file-input[disabled]~.custom-file-label{background-color:#e9ecef}.custom-file-input:lang(en)~.custom-file-label::after{content:"Browse"}.custom-file-input~.custom-file-label[data-browse]::after{content:attr(data-browse)}.custom-file-label{position:absolute;top:0;right:0;left:0;z-index:1;height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem;overflow:hidden;font-weight:400;line-height:1.5;color:#495057;background-color:#fff;border:1px solid #ced4da;border-radius:.25rem}.custom-file-label::after{position:absolute;top:0;right:0;bottom:0;z-index:3;display:block;height:calc(1.5em + .75rem);padding:.375rem .75rem;line-height:1.5;color:#495057;content:"Browse";background-color:#e9ecef;border-left:inherit;border-radius:0 .25rem .25rem 0}.custom-range{width:100%;height:1.4rem;padding:0;background-color:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-range:focus{outline:0}.custom-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range:focus::-ms-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range::-moz-focus-outer{border:0}.custom-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#007bff;border:0;border-radius:1rem;-webkit-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-webkit-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-webkit-slider-thumb{-webkit-transition:none;transition:none}}.custom-range::-webkit-slider-thumb:active{background-color:#b3d7ff}.custom-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.custom-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#007bff;border:0;border-radius:1rem;-moz-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-moz-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-moz-range-thumb{-moz-transition:none;transition:none}}.custom-range::-moz-range-thumb:active{background-color:#b3d7ff}.custom-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.custom-range::-ms-thumb{width:1rem;height:1rem;margin-top:0;margin-right:.2rem;margin-left:.2rem;background-color:#007bff;border:0;border-radius:1rem;-ms-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-ms-thumb{-ms-transition:none;transition:none}}.custom-range::-ms-thumb:active{background-color:#b3d7ff}.custom-range::-ms-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:transparent;border-color:transparent;border-width:.5rem}.custom-range::-ms-fill-lower{background-color:#dee2e6;border-radius:1rem}.custom-range::-ms-fill-upper{margin-right:15px;background-color:#dee2e6;border-radius:1rem}.custom-range:disabled::-webkit-slider-thumb{background-color:#adb5bd}.custom-range:disabled::-webkit-slider-runnable-track{cursor:default}.custom-range:disabled::-moz-range-thumb{background-color:#adb5bd}.custom-range:disabled::-moz-range-track{cursor:default}.custom-range:disabled::-ms-thumb{background-color:#adb5bd}.custom-control-label::before,.custom-file-label,.custom-select{transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.custom-control-label::before,.custom-file-label,.custom-select{transition:none}}.nav{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5rem 1rem}.nav-link:focus,.nav-link:hover{text-decoration:none}.nav-link.disabled{color:#6c757d;pointer-events:none;cursor:default}.nav-tabs{border-bottom:1px solid #dee2e6}.nav-tabs .nav-link{margin-bottom:-1px;border:1px solid transparent;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{border-color:#e9ecef #e9ecef #dee2e6}.nav-tabs .nav-link.disabled{color:#6c757d;background-color:transparent;border-color:transparent}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:#495057;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{border-radius:.25rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#007bff}.nav-fill .nav-item,.nav-fill>.nav-link{-ms-flex:1 1 auto;flex:1 1 auto;text-align:center}.nav-justified .nav-item,.nav-justified>.nav-link{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;text-align:center}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between;padding:.5rem 1rem}.navbar .container,.navbar .container-fluid,.navbar .container-lg,.navbar .container-md,.navbar .container-sm,.navbar .container-xl{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between}.navbar-brand{display:inline-block;padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;line-height:inherit;white-space:nowrap}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-nav{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static;float:none}.navbar-text{display:inline-block;padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{-ms-flex-preferred-size:100%;flex-basis:100%;-ms-flex-positive:1;flex-grow:1;-ms-flex-align:center;align-items:center}.navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.25rem}.navbar-toggler:focus,.navbar-toggler:hover{text-decoration:none}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;content:"";background:50%/100% 100% no-repeat}.navbar-nav-scroll{max-height:75vh;overflow-y:auto}@media (max-width:575.98px){.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid,.navbar-expand-sm>.container-lg,.navbar-expand-sm>.container-md,.navbar-expand-sm>.container-sm,.navbar-expand-sm>.container-xl{padding-right:0;padding-left:0}}@media (min-width:576px){.navbar-expand-sm{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-sm .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid,.navbar-expand-sm>.container-lg,.navbar-expand-sm>.container-md,.navbar-expand-sm>.container-sm,.navbar-expand-sm>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-sm .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}}@media (max-width:767.98px){.navbar-expand-md>.container,.navbar-expand-md>.container-fluid,.navbar-expand-md>.container-lg,.navbar-expand-md>.container-md,.navbar-expand-md>.container-sm,.navbar-expand-md>.container-xl{padding-right:0;padding-left:0}}@media (min-width:768px){.navbar-expand-md{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-md .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md>.container,.navbar-expand-md>.container-fluid,.navbar-expand-md>.container-lg,.navbar-expand-md>.container-md,.navbar-expand-md>.container-sm,.navbar-expand-md>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}}@media (max-width:991.98px){.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid,.navbar-expand-lg>.container-lg,.navbar-expand-lg>.container-md,.navbar-expand-lg>.container-sm,.navbar-expand-lg>.container-xl{padding-right:0;padding-left:0}}@media (min-width:992px){.navbar-expand-lg{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-lg .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid,.navbar-expand-lg>.container-lg,.navbar-expand-lg>.container-md,.navbar-expand-lg>.container-sm,.navbar-expand-lg>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}}@media (max-width:1199.98px){.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid,.navbar-expand-xl>.container-lg,.navbar-expand-xl>.container-md,.navbar-expand-xl>.container-sm,.navbar-expand-xl>.container-xl{padding-right:0;padding-left:0}}@media (min-width:1200px){.navbar-expand-xl{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-xl .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid,.navbar-expand-xl>.container-lg,.navbar-expand-xl>.container-md,.navbar-expand-xl>.container-sm,.navbar-expand-xl>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}}.navbar-expand{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand>.container,.navbar-expand>.container-fluid,.navbar-expand>.container-lg,.navbar-expand>.container-md,.navbar-expand>.container-sm,.navbar-expand>.container-xl{padding-right:0;padding-left:0}.navbar-expand .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand>.container,.navbar-expand>.container-fluid,.navbar-expand>.container-lg,.navbar-expand>.container-md,.navbar-expand>.container-sm,.navbar-expand>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-light .navbar-brand{color:rgba(0,0,0,.9)}.navbar-light .navbar-brand:focus,.navbar-light .navbar-brand:hover{color:rgba(0,0,0,.9)}.navbar-light .navbar-nav .nav-link{color:rgba(0,0,0,.5)}.navbar-light .navbar-nav .nav-link:focus,.navbar-light .navbar-nav .nav-link:hover{color:rgba(0,0,0,.7)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(0,0,0,.3)}.navbar-light .navbar-nav .active>.nav-link,.navbar-light .navbar-nav .nav-link.active,.navbar-light .navbar-nav .nav-link.show,.navbar-light .navbar-nav .show>.nav-link{color:rgba(0,0,0,.9)}.navbar-light .navbar-toggler{color:rgba(0,0,0,.5);border-color:rgba(0,0,0,.1)}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%280, 0, 0, 0.5%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-light .navbar-text{color:rgba(0,0,0,.5)}.navbar-light .navbar-text a{color:rgba(0,0,0,.9)}.navbar-light .navbar-text a:focus,.navbar-light .navbar-text a:hover{color:rgba(0,0,0,.9)}.navbar-dark .navbar-brand{color:#fff}.navbar-dark .navbar-brand:focus,.navbar-dark .navbar-brand:hover{color:#fff}.navbar-dark .navbar-nav .nav-link{color:rgba(255,255,255,.5)}.navbar-dark .navbar-nav .nav-link:focus,.navbar-dark .navbar-nav .nav-link:hover{color:rgba(255,255,255,.75)}.navbar-dark .navbar-nav .nav-link.disabled{color:rgba(255,255,255,.25)}.navbar-dark .navbar-nav .active>.nav-link,.navbar-dark .navbar-nav .nav-link.active,.navbar-dark .navbar-nav .nav-link.show,.navbar-dark .navbar-nav .show>.nav-link{color:#fff}.navbar-dark .navbar-toggler{color:rgba(255,255,255,.5);border-color:rgba(255,255,255,.1)}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.5%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-dark .navbar-text{color:rgba(255,255,255,.5)}.navbar-dark .navbar-text a{color:#fff}.navbar-dark .navbar-text a:focus,.navbar-dark .navbar-text a:hover{color:#fff}.card{position:relative;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,.125);border-radius:.25rem}.card>hr{margin-right:0;margin-left:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-width:0;border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{-ms-flex:1 1 auto;flex:1 1 auto;min-height:1px;padding:1.25rem}.card-title{margin-bottom:.75rem}.card-subtitle{margin-top:-.375rem;margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:1.25rem}.card-header{padding:.75rem 1.25rem;margin-bottom:0;background-color:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.125)}.card-header:first-child{border-radius:calc(.25rem - 1px) calc(.25rem - 1px) 0 0}.card-footer{padding:.75rem 1.25rem;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.125)}.card-footer:last-child{border-radius:0 0 calc(.25rem - 1px) calc(.25rem - 1px)}.card-header-tabs{margin-right:-.625rem;margin-bottom:-.75rem;margin-left:-.625rem;border-bottom:0}.card-header-pills{margin-right:-.625rem;margin-left:-.625rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1.25rem;border-radius:calc(.25rem - 1px)}.card-img,.card-img-bottom,.card-img-top{-ms-flex-negative:0;flex-shrink:0;width:100%}.card-img,.card-img-top{border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card-img,.card-img-bottom{border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card-deck .card{margin-bottom:15px}@media (min-width:576px){.card-deck{display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap;margin-right:-15px;margin-left:-15px}.card-deck .card{-ms-flex:1 0 0%;flex:1 0 0%;margin-right:15px;margin-bottom:0;margin-left:15px}}.card-group>.card{margin-bottom:15px}@media (min-width:576px){.card-group{display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap}.card-group>.card{-ms-flex:1 0 0%;flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-header,.card-group>.card:not(:last-child) .card-img-top{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-footer,.card-group>.card:not(:last-child) .card-img-bottom{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-header,.card-group>.card:not(:first-child) .card-img-top{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-footer,.card-group>.card:not(:first-child) .card-img-bottom{border-bottom-left-radius:0}}.card-columns .card{margin-bottom:.75rem}@media (min-width:576px){.card-columns{-webkit-column-count:3;-moz-column-count:3;column-count:3;-webkit-column-gap:1.25rem;-moz-column-gap:1.25rem;column-gap:1.25rem;orphans:1;widows:1}.card-columns .card{display:inline-block;width:100%}}.accordion{overflow-anchor:none}.accordion>.card{overflow:hidden}.accordion>.card:not(:last-of-type){border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.accordion>.card:not(:first-of-type){border-top-left-radius:0;border-top-right-radius:0}.accordion>.card>.card-header{border-radius:0;margin-bottom:-1px}.breadcrumb{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:.75rem 1rem;margin-bottom:1rem;list-style:none;background-color:#e9ecef;border-radius:.25rem}.breadcrumb-item+.breadcrumb-item{padding-left:.5rem}.breadcrumb-item+.breadcrumb-item::before{float:left;padding-right:.5rem;color:#6c757d;content:"/"}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:underline}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:none}.breadcrumb-item.active{color:#6c757d}.pagination{display:-ms-flexbox;display:flex;padding-left:0;list-style:none;border-radius:.25rem}.page-link{position:relative;display:block;padding:.5rem .75rem;margin-left:-1px;line-height:1.25;color:#007bff;background-color:#fff;border:1px solid #dee2e6}.page-link:hover{z-index:2;color:#0056b3;text-decoration:none;background-color:#e9ecef;border-color:#dee2e6}.page-link:focus{z-index:3;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.page-item:first-child .page-link{margin-left:0;border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.page-item:last-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.page-item.active .page-link{z-index:3;color:#fff;background-color:#007bff;border-color:#007bff}.page-item.disabled .page-link{color:#6c757d;pointer-events:none;cursor:auto;background-color:#fff;border-color:#dee2e6}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem;line-height:1.5}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.pagination-sm .page-link{padding:.25rem .5rem;font-size:.875rem;line-height:1.5}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.badge{display:inline-block;padding:.25em .4em;font-size:75%;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.badge{transition:none}}a.badge:focus,a.badge:hover{text-decoration:none}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.badge-pill{padding-right:.6em;padding-left:.6em;border-radius:10rem}.badge-primary{color:#fff;background-color:#007bff}a.badge-primary:focus,a.badge-primary:hover{color:#fff;background-color:#0062cc}a.badge-primary.focus,a.badge-primary:focus{outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.badge-secondary{color:#fff;background-color:#6c757d}a.badge-secondary:focus,a.badge-secondary:hover{color:#fff;background-color:#545b62}a.badge-secondary.focus,a.badge-secondary:focus{outline:0;box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.badge-success{color:#fff;background-color:#28a745}a.badge-success:focus,a.badge-success:hover{color:#fff;background-color:#1e7e34}a.badge-success.focus,a.badge-success:focus{outline:0;box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.badge-info{color:#fff;background-color:#17a2b8}a.badge-info:focus,a.badge-info:hover{color:#fff;background-color:#117a8b}a.badge-info.focus,a.badge-info:focus{outline:0;box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.badge-warning{color:#212529;background-color:#ffc107}a.badge-warning:focus,a.badge-warning:hover{color:#212529;background-color:#d39e00}a.badge-warning.focus,a.badge-warning:focus{outline:0;box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.badge-danger{color:#fff;background-color:#dc3545}a.badge-danger:focus,a.badge-danger:hover{color:#fff;background-color:#bd2130}a.badge-danger.focus,a.badge-danger:focus{outline:0;box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.badge-light{color:#212529;background-color:#f8f9fa}a.badge-light:focus,a.badge-light:hover{color:#212529;background-color:#dae0e5}a.badge-light.focus,a.badge-light:focus{outline:0;box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.badge-dark{color:#fff;background-color:#343a40}a.badge-dark:focus,a.badge-dark:hover{color:#fff;background-color:#1d2124}a.badge-dark.focus,a.badge-dark:focus{outline:0;box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.jumbotron{padding:2rem 1rem;margin-bottom:2rem;background-color:#e9ecef;border-radius:.3rem}@media (min-width:576px){.jumbotron{padding:4rem 2rem}}.jumbotron-fluid{padding-right:0;padding-left:0;border-radius:0}.alert{position:relative;padding:.75rem 1.25rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:4rem}.alert-dismissible .close{position:absolute;top:0;right:0;z-index:2;padding:.75rem 1.25rem;color:inherit}.alert-primary{color:#004085;background-color:#cce5ff;border-color:#b8daff}.alert-primary hr{border-top-color:#9fcdff}.alert-primary .alert-link{color:#002752}.alert-secondary{color:#383d41;background-color:#e2e3e5;border-color:#d6d8db}.alert-secondary hr{border-top-color:#c8cbcf}.alert-secondary .alert-link{color:#202326}.alert-success{color:#155724;background-color:#d4edda;border-color:#c3e6cb}.alert-success hr{border-top-color:#b1dfbb}.alert-success .alert-link{color:#0b2e13}.alert-info{color:#0c5460;background-color:#d1ecf1;border-color:#bee5eb}.alert-info hr{border-top-color:#abdde5}.alert-info .alert-link{color:#062c33}.alert-warning{color:#856404;background-color:#fff3cd;border-color:#ffeeba}.alert-warning hr{border-top-color:#ffe8a1}.alert-warning .alert-link{color:#533f03}.alert-danger{color:#721c24;background-color:#f8d7da;border-color:#f5c6cb}.alert-danger hr{border-top-color:#f1b0b7}.alert-danger .alert-link{color:#491217}.alert-light{color:#818182;background-color:#fefefe;border-color:#fdfdfe}.alert-light hr{border-top-color:#ececf6}.alert-light .alert-link{color:#686868}.alert-dark{color:#1b1e21;background-color:#d6d8d9;border-color:#c6c8ca}.alert-dark hr{border-top-color:#b9bbbe}.alert-dark .alert-link{color:#040505}@-webkit-keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}.progress{display:-ms-flexbox;display:flex;height:1rem;overflow:hidden;line-height:0;font-size:.75rem;background-color:#e9ecef;border-radius:.25rem}.progress-bar{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center;overflow:hidden;color:#fff;text-align:center;white-space:nowrap;background-color:#007bff;transition:width .6s ease}@media (prefers-reduced-motion:reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:1rem 1rem}.progress-bar-animated{-webkit-animation:1s linear infinite progress-bar-stripes;animation:1s linear infinite progress-bar-stripes}@media (prefers-reduced-motion:reduce){.progress-bar-animated{-webkit-animation:none;animation:none}}.media{display:-ms-flexbox;display:flex;-ms-flex-align:start;align-items:flex-start}.media-body{-ms-flex:1;flex:1}.list-group{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0;border-radius:.25rem}.list-group-item-action{width:100%;color:#495057;text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{z-index:1;color:#495057;text-decoration:none;background-color:#f8f9fa}.list-group-item-action:active{color:#212529;background-color:#e9ecef}.list-group-item{position:relative;display:block;padding:.75rem 1.25rem;background-color:#fff;border:1px solid rgba(0,0,0,.125)}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:#6c757d;pointer-events:none;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#007bff;border-color:#007bff}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:-1px;border-top-width:1px}.list-group-horizontal{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}@media (min-width:576px){.list-group-horizontal-sm{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:768px){.list-group-horizontal-md{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:992px){.list-group-horizontal-lg{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:1200px){.list-group-horizontal-xl{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 1px}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-primary{color:#004085;background-color:#b8daff}.list-group-item-primary.list-group-item-action:focus,.list-group-item-primary.list-group-item-action:hover{color:#004085;background-color:#9fcdff}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#004085;border-color:#004085}.list-group-item-secondary{color:#383d41;background-color:#d6d8db}.list-group-item-secondary.list-group-item-action:focus,.list-group-item-secondary.list-group-item-action:hover{color:#383d41;background-color:#c8cbcf}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#383d41;border-color:#383d41}.list-group-item-success{color:#155724;background-color:#c3e6cb}.list-group-item-success.list-group-item-action:focus,.list-group-item-success.list-group-item-action:hover{color:#155724;background-color:#b1dfbb}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#155724;border-color:#155724}.list-group-item-info{color:#0c5460;background-color:#bee5eb}.list-group-item-info.list-group-item-action:focus,.list-group-item-info.list-group-item-action:hover{color:#0c5460;background-color:#abdde5}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#0c5460;border-color:#0c5460}.list-group-item-warning{color:#856404;background-color:#ffeeba}.list-group-item-warning.list-group-item-action:focus,.list-group-item-warning.list-group-item-action:hover{color:#856404;background-color:#ffe8a1}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#856404;border-color:#856404}.list-group-item-danger{color:#721c24;background-color:#f5c6cb}.list-group-item-danger.list-group-item-action:focus,.list-group-item-danger.list-group-item-action:hover{color:#721c24;background-color:#f1b0b7}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#721c24;border-color:#721c24}.list-group-item-light{color:#818182;background-color:#fdfdfe}.list-group-item-light.list-group-item-action:focus,.list-group-item-light.list-group-item-action:hover{color:#818182;background-color:#ececf6}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#818182;border-color:#818182}.list-group-item-dark{color:#1b1e21;background-color:#c6c8ca}.list-group-item-dark.list-group-item-action:focus,.list-group-item-dark.list-group-item-action:hover{color:#1b1e21;background-color:#b9bbbe}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#1b1e21;border-color:#1b1e21}.close{float:right;font-size:1.5rem;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.5}.close:hover{color:#000;text-decoration:none}.close:not(:disabled):not(.disabled):focus,.close:not(:disabled):not(.disabled):hover{opacity:.75}button.close{padding:0;background-color:transparent;border:0}a.close.disabled{pointer-events:none}.toast{-ms-flex-preferred-size:350px;flex-basis:350px;max-width:350px;font-size:.875rem;background-color:rgba(255,255,255,.85);background-clip:padding-box;border:1px solid rgba(0,0,0,.1);box-shadow:0 .25rem .75rem rgba(0,0,0,.1);opacity:0;border-radius:.25rem}.toast:not(:last-child){margin-bottom:.75rem}.toast.showing{opacity:1}.toast.show{display:block;opacity:1}.toast.hide{display:none}.toast-header{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;padding:.25rem .75rem;color:#6c757d;background-color:rgba(255,255,255,.85);background-clip:padding-box;border-bottom:1px solid rgba(0,0,0,.05);border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.toast-body{padding:.75rem}.modal-open{overflow:hidden}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal{position:fixed;top:0;left:0;z-index:1050;display:none;width:100%;height:100%;overflow:hidden;outline:0}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{transition:-webkit-transform .3s ease-out;transition:transform .3s ease-out;transition:transform .3s ease-out,-webkit-transform .3s ease-out;-webkit-transform:translate(0,-50px);transform:translate(0,-50px)}@media (prefers-reduced-motion:reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{-webkit-transform:none;transform:none}.modal.modal-static .modal-dialog{-webkit-transform:scale(1.02);transform:scale(1.02)}.modal-dialog-scrollable{display:-ms-flexbox;display:flex;max-height:calc(100% - 1rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 1rem);overflow:hidden}.modal-dialog-scrollable .modal-footer,.modal-dialog-scrollable .modal-header{-ms-flex-negative:0;flex-shrink:0}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;min-height:calc(100% - 1rem)}.modal-dialog-centered::before{display:block;height:calc(100vh - 1rem);height:-webkit-min-content;height:-moz-min-content;height:min-content;content:""}.modal-dialog-centered.modal-dialog-scrollable{-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center;height:100%}.modal-dialog-centered.modal-dialog-scrollable .modal-content{max-height:none}.modal-dialog-centered.modal-dialog-scrollable::before{content:none}.modal-content{position:relative;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem;outline:0}.modal-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:-ms-flexbox;display:flex;-ms-flex-align:start;align-items:flex-start;-ms-flex-pack:justify;justify-content:space-between;padding:1rem 1rem;border-bottom:1px solid #dee2e6;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.modal-header .close{padding:1rem 1rem;margin:-1rem -1rem -1rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;-ms-flex:1 1 auto;flex:1 1 auto;padding:1rem}.modal-footer{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:center;align-items:center;-ms-flex-pack:end;justify-content:flex-end;padding:.75rem;border-top:1px solid #dee2e6;border-bottom-right-radius:calc(.3rem - 1px);border-bottom-left-radius:calc(.3rem - 1px)}.modal-footer>*{margin:.25rem}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-scrollable{max-height:calc(100% - 3.5rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 3.5rem)}.modal-dialog-centered{min-height:calc(100% - 3.5rem)}.modal-dialog-centered::before{height:calc(100vh - 3.5rem);height:-webkit-min-content;height:-moz-min-content;height:min-content}.modal-sm{max-width:300px}}@media (min-width:992px){.modal-lg,.modal-xl{max-width:800px}}@media (min-width:1200px){.modal-xl{max-width:1140px}}.tooltip{position:absolute;z-index:1070;display:block;margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip .arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .arrow::before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-auto[x-placement^=top],.bs-tooltip-top{padding:.4rem 0}.bs-tooltip-auto[x-placement^=top] .arrow,.bs-tooltip-top .arrow{bottom:0}.bs-tooltip-auto[x-placement^=top] .arrow::before,.bs-tooltip-top .arrow::before{top:0;border-width:.4rem .4rem 0;border-top-color:#000}.bs-tooltip-auto[x-placement^=right],.bs-tooltip-right{padding:0 .4rem}.bs-tooltip-auto[x-placement^=right] .arrow,.bs-tooltip-right .arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=right] .arrow::before,.bs-tooltip-right .arrow::before{right:0;border-width:.4rem .4rem .4rem 0;border-right-color:#000}.bs-tooltip-auto[x-placement^=bottom],.bs-tooltip-bottom{padding:.4rem 0}.bs-tooltip-auto[x-placement^=bottom] .arrow,.bs-tooltip-bottom .arrow{top:0}.bs-tooltip-auto[x-placement^=bottom] .arrow::before,.bs-tooltip-bottom .arrow::before{bottom:0;border-width:0 .4rem .4rem;border-bottom-color:#000}.bs-tooltip-auto[x-placement^=left],.bs-tooltip-left{padding:0 .4rem}.bs-tooltip-auto[x-placement^=left] .arrow,.bs-tooltip-left .arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=left] .arrow::before,.bs-tooltip-left .arrow::before{left:0;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}.tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000;border-radius:.25rem}.popover{position:absolute;top:0;left:0;z-index:1060;display:block;max-width:276px;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem}.popover .arrow{position:absolute;display:block;width:1rem;height:.5rem;margin:0 .3rem}.popover .arrow::after,.popover .arrow::before{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}.bs-popover-auto[x-placement^=top],.bs-popover-top{margin-bottom:.5rem}.bs-popover-auto[x-placement^=top]>.arrow,.bs-popover-top>.arrow{bottom:calc(-.5rem - 1px)}.bs-popover-auto[x-placement^=top]>.arrow::before,.bs-popover-top>.arrow::before{bottom:0;border-width:.5rem .5rem 0;border-top-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=top]>.arrow::after,.bs-popover-top>.arrow::after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}.bs-popover-auto[x-placement^=right],.bs-popover-right{margin-left:.5rem}.bs-popover-auto[x-placement^=right]>.arrow,.bs-popover-right>.arrow{left:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=right]>.arrow::before,.bs-popover-right>.arrow::before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=right]>.arrow::after,.bs-popover-right>.arrow::after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}.bs-popover-auto[x-placement^=bottom],.bs-popover-bottom{margin-top:.5rem}.bs-popover-auto[x-placement^=bottom]>.arrow,.bs-popover-bottom>.arrow{top:calc(-.5rem - 1px)}.bs-popover-auto[x-placement^=bottom]>.arrow::before,.bs-popover-bottom>.arrow::before{top:0;border-width:0 .5rem .5rem .5rem;border-bottom-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=bottom]>.arrow::after,.bs-popover-bottom>.arrow::after{top:1px;border-width:0 .5rem .5rem .5rem;border-bottom-color:#fff}.bs-popover-auto[x-placement^=bottom] .popover-header::before,.bs-popover-bottom .popover-header::before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:"";border-bottom:1px solid #f7f7f7}.bs-popover-auto[x-placement^=left],.bs-popover-left{margin-right:.5rem}.bs-popover-auto[x-placement^=left]>.arrow,.bs-popover-left>.arrow{right:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=left]>.arrow::before,.bs-popover-left>.arrow::before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=left]>.arrow::after,.bs-popover-left>.arrow::after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}.popover-header{padding:.5rem .75rem;margin-bottom:0;font-size:1rem;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:.5rem .75rem;color:#212529}.carousel{position:relative}.carousel.pointer-event{-ms-touch-action:pan-y;touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner::after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;-webkit-backface-visibility:hidden;backface-visibility:hidden;transition:-webkit-transform .6s ease-in-out;transition:transform .6s ease-in-out;transition:transform .6s ease-in-out,-webkit-transform .6s ease-in-out}@media (prefers-reduced-motion:reduce){.carousel-item{transition:none}}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block}.active.carousel-item-right,.carousel-item-next:not(.carousel-item-left){-webkit-transform:translateX(100%);transform:translateX(100%)}.active.carousel-item-left,.carousel-item-prev:not(.carousel-item-right){-webkit-transform:translateX(-100%);transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;-webkit-transform:none;transform:none}.carousel-fade .carousel-item-next.carousel-item-left,.carousel-fade .carousel-item-prev.carousel-item-right,.carousel-fade .carousel-item.active{z-index:1;opacity:1}.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{z-index:0;opacity:0;transition:opacity 0s .6s}@media (prefers-reduced-motion:reduce){.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{transition:none}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;z-index:1;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:15%;padding:0;color:#fff;text-align:center;background:0 0;border:0;opacity:.5;transition:opacity .15s ease}@media (prefers-reduced-motion:reduce){.carousel-control-next,.carousel-control-prev{transition:none}}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:20px;height:20px;background:50%/100% 100% no-repeat}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath d='M5.25 0l-4 4 4 4 1.5-1.5L4.25 4l2.5-2.5L5.25 0z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath d='M2.75 0l-1.5 1.5L3.75 4l-2.5 2.5L2.75 8l4-4-4-4z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:15;display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;padding-left:0;margin-right:15%;margin-left:15%;list-style:none}.carousel-indicators li{box-sizing:content-box;-ms-flex:0 1 auto;flex:0 1 auto;width:30px;height:3px;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}@media (prefers-reduced-motion:reduce){.carousel-indicators li{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center}@-webkit-keyframes spinner-border{to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes spinner-border{to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.spinner-border{display:inline-block;width:2rem;height:2rem;vertical-align:-.125em;border:.25em solid currentColor;border-right-color:transparent;border-radius:50%;-webkit-animation:.75s linear infinite spinner-border;animation:.75s linear infinite spinner-border}.spinner-border-sm{width:1rem;height:1rem;border-width:.2em}@-webkit-keyframes spinner-grow{0%{-webkit-transform:scale(0);transform:scale(0)}50%{opacity:1;-webkit-transform:none;transform:none}}@keyframes spinner-grow{0%{-webkit-transform:scale(0);transform:scale(0)}50%{opacity:1;-webkit-transform:none;transform:none}}.spinner-grow{display:inline-block;width:2rem;height:2rem;vertical-align:-.125em;background-color:currentColor;border-radius:50%;opacity:0;-webkit-animation:.75s linear infinite spinner-grow;animation:.75s linear infinite spinner-grow}.spinner-grow-sm{width:1rem;height:1rem}@media (prefers-reduced-motion:reduce){.spinner-border,.spinner-grow{-webkit-animation-duration:1.5s;animation-duration:1.5s}}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.bg-primary{background-color:#007bff!important}a.bg-primary:focus,a.bg-primary:hover,button.bg-primary:focus,button.bg-primary:hover{background-color:#0062cc!important}.bg-secondary{background-color:#6c757d!important}a.bg-secondary:focus,a.bg-secondary:hover,button.bg-secondary:focus,button.bg-secondary:hover{background-color:#545b62!important}.bg-success{background-color:#28a745!important}a.bg-success:focus,a.bg-success:hover,button.bg-success:focus,button.bg-success:hover{background-color:#1e7e34!important}.bg-info{background-color:#17a2b8!important}a.bg-info:focus,a.bg-info:hover,button.bg-info:focus,button.bg-info:hover{background-color:#117a8b!important}.bg-warning{background-color:#ffc107!important}a.bg-warning:focus,a.bg-warning:hover,button.bg-warning:focus,button.bg-warning:hover{background-color:#d39e00!important}.bg-danger{background-color:#dc3545!important}a.bg-danger:focus,a.bg-danger:hover,button.bg-danger:focus,button.bg-danger:hover{background-color:#bd2130!important}.bg-light{background-color:#f8f9fa!important}a.bg-light:focus,a.bg-light:hover,button.bg-light:focus,button.bg-light:hover{background-color:#dae0e5!important}.bg-dark{background-color:#343a40!important}a.bg-dark:focus,a.bg-dark:hover,button.bg-dark:focus,button.bg-dark:hover{background-color:#1d2124!important}.bg-white{background-color:#fff!important}.bg-transparent{background-color:transparent!important}.border{border:1px solid #dee2e6!important}.border-top{border-top:1px solid #dee2e6!important}.border-right{border-right:1px solid #dee2e6!important}.border-bottom{border-bottom:1px solid #dee2e6!important}.border-left{border-left:1px solid #dee2e6!important}.border-0{border:0!important}.border-top-0{border-top:0!important}.border-right-0{border-right:0!important}.border-bottom-0{border-bottom:0!important}.border-left-0{border-left:0!important}.border-primary{border-color:#007bff!important}.border-secondary{border-color:#6c757d!important}.border-success{border-color:#28a745!important}.border-info{border-color:#17a2b8!important}.border-warning{border-color:#ffc107!important}.border-danger{border-color:#dc3545!important}.border-light{border-color:#f8f9fa!important}.border-dark{border-color:#343a40!important}.border-white{border-color:#fff!important}.rounded-sm{border-radius:.2rem!important}.rounded{border-radius:.25rem!important}.rounded-top{border-top-left-radius:.25rem!important;border-top-right-radius:.25rem!important}.rounded-right{border-top-right-radius:.25rem!important;border-bottom-right-radius:.25rem!important}.rounded-bottom{border-bottom-right-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-left{border-top-left-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-lg{border-radius:.3rem!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:50rem!important}.rounded-0{border-radius:0!important}.clearfix::after{display:block;clear:both;content:""}.d-none{display:none!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:-ms-flexbox!important;display:flex!important}.d-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}@media (min-width:576px){.d-sm-none{display:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:-ms-flexbox!important;display:flex!important}.d-sm-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:768px){.d-md-none{display:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:-ms-flexbox!important;display:flex!important}.d-md-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:992px){.d-lg-none{display:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:-ms-flexbox!important;display:flex!important}.d-lg-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:1200px){.d-xl-none{display:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:-ms-flexbox!important;display:flex!important}.d-xl-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media print{.d-print-none{display:none!important}.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:-ms-flexbox!important;display:flex!important}.d-print-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}.embed-responsive{position:relative;display:block;width:100%;padding:0;overflow:hidden}.embed-responsive::before{display:block;content:""}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-21by9::before{padding-top:42.857143%}.embed-responsive-16by9::before{padding-top:56.25%}.embed-responsive-4by3::before{padding-top:75%}.embed-responsive-1by1::before{padding-top:100%}.flex-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-center{-ms-flex-align:center!important;align-items:center!important}.align-items-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}@media (min-width:576px){.flex-sm-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-sm-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-sm-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-sm-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-sm-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-sm-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-sm-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-sm-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-sm-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-sm-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-sm-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-sm-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-sm-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-sm-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-sm-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-sm-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-sm-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-sm-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-sm-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-sm-center{-ms-flex-align:center!important;align-items:center!important}.align-items-sm-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-sm-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-sm-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-sm-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-sm-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-sm-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-sm-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-sm-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-sm-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-sm-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-sm-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-sm-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-sm-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-sm-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:768px){.flex-md-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-md-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-md-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-md-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-md-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-md-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-md-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-md-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-md-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-md-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-md-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-md-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-md-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-md-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-md-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-md-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-md-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-md-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-md-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-md-center{-ms-flex-align:center!important;align-items:center!important}.align-items-md-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-md-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-md-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-md-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-md-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-md-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-md-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-md-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-md-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-md-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-md-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-md-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-md-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-md-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:992px){.flex-lg-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-lg-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-lg-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-lg-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-lg-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-lg-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-lg-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-lg-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-lg-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-lg-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-lg-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-lg-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-lg-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-lg-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-lg-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-lg-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-lg-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-lg-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-lg-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-lg-center{-ms-flex-align:center!important;align-items:center!important}.align-items-lg-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-lg-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-lg-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-lg-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-lg-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-lg-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-lg-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-lg-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-lg-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-lg-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-lg-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-lg-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-lg-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-lg-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:1200px){.flex-xl-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-xl-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-xl-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-xl-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-xl-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-xl-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-xl-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-xl-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-xl-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-xl-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-xl-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-xl-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-xl-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-xl-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-xl-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-xl-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-xl-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-xl-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-xl-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-xl-center{-ms-flex-align:center!important;align-items:center!important}.align-items-xl-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-xl-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-xl-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-xl-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-xl-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-xl-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-xl-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-xl-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-xl-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-xl-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-xl-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-xl-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-xl-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-xl-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}.float-left{float:left!important}.float-right{float:right!important}.float-none{float:none!important}@media (min-width:576px){.float-sm-left{float:left!important}.float-sm-right{float:right!important}.float-sm-none{float:none!important}}@media (min-width:768px){.float-md-left{float:left!important}.float-md-right{float:right!important}.float-md-none{float:none!important}}@media (min-width:992px){.float-lg-left{float:left!important}.float-lg-right{float:right!important}.float-lg-none{float:none!important}}@media (min-width:1200px){.float-xl-left{float:left!important}.float-xl-right{float:right!important}.float-xl-none{float:none!important}}.user-select-all{-webkit-user-select:all!important;-moz-user-select:all!important;user-select:all!important}.user-select-auto{-webkit-user-select:auto!important;-moz-user-select:auto!important;-ms-user-select:auto!important;user-select:auto!important}.user-select-none{-webkit-user-select:none!important;-moz-user-select:none!important;-ms-user-select:none!important;user-select:none!important}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:-webkit-sticky!important;position:sticky!important}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}@supports ((position:-webkit-sticky) or (position:sticky)){.sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;overflow:visible;clip:auto;white-space:normal}.shadow-sm{box-shadow:0 .125rem .25rem rgba(0,0,0,.075)!important}.shadow{box-shadow:0 .5rem 1rem rgba(0,0,0,.15)!important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,.175)!important}.shadow-none{box-shadow:none!important}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mw-100{max-width:100%!important}.mh-100{max-height:100%!important}.min-vw-100{min-width:100vw!important}.min-vh-100{min-height:100vh!important}.vw-100{width:100vw!important}.vh-100{height:100vh!important}.m-0{margin:0!important}.mt-0,.my-0{margin-top:0!important}.mr-0,.mx-0{margin-right:0!important}.mb-0,.my-0{margin-bottom:0!important}.ml-0,.mx-0{margin-left:0!important}.m-1{margin:.25rem!important}.mt-1,.my-1{margin-top:.25rem!important}.mr-1,.mx-1{margin-right:.25rem!important}.mb-1,.my-1{margin-bottom:.25rem!important}.ml-1,.mx-1{margin-left:.25rem!important}.m-2{margin:.5rem!important}.mt-2,.my-2{margin-top:.5rem!important}.mr-2,.mx-2{margin-right:.5rem!important}.mb-2,.my-2{margin-bottom:.5rem!important}.ml-2,.mx-2{margin-left:.5rem!important}.m-3{margin:1rem!important}.mt-3,.my-3{margin-top:1rem!important}.mr-3,.mx-3{margin-right:1rem!important}.mb-3,.my-3{margin-bottom:1rem!important}.ml-3,.mx-3{margin-left:1rem!important}.m-4{margin:1.5rem!important}.mt-4,.my-4{margin-top:1.5rem!important}.mr-4,.mx-4{margin-right:1.5rem!important}.mb-4,.my-4{margin-bottom:1.5rem!important}.ml-4,.mx-4{margin-left:1.5rem!important}.m-5{margin:3rem!important}.mt-5,.my-5{margin-top:3rem!important}.mr-5,.mx-5{margin-right:3rem!important}.mb-5,.my-5{margin-bottom:3rem!important}.ml-5,.mx-5{margin-left:3rem!important}.p-0{padding:0!important}.pt-0,.py-0{padding-top:0!important}.pr-0,.px-0{padding-right:0!important}.pb-0,.py-0{padding-bottom:0!important}.pl-0,.px-0{padding-left:0!important}.p-1{padding:.25rem!important}.pt-1,.py-1{padding-top:.25rem!important}.pr-1,.px-1{padding-right:.25rem!important}.pb-1,.py-1{padding-bottom:.25rem!important}.pl-1,.px-1{padding-left:.25rem!important}.p-2{padding:.5rem!important}.pt-2,.py-2{padding-top:.5rem!important}.pr-2,.px-2{padding-right:.5rem!important}.pb-2,.py-2{padding-bottom:.5rem!important}.pl-2,.px-2{padding-left:.5rem!important}.p-3{padding:1rem!important}.pt-3,.py-3{padding-top:1rem!important}.pr-3,.px-3{padding-right:1rem!important}.pb-3,.py-3{padding-bottom:1rem!important}.pl-3,.px-3{padding-left:1rem!important}.p-4{padding:1.5rem!important}.pt-4,.py-4{padding-top:1.5rem!important}.pr-4,.px-4{padding-right:1.5rem!important}.pb-4,.py-4{padding-bottom:1.5rem!important}.pl-4,.px-4{padding-left:1.5rem!important}.p-5{padding:3rem!important}.pt-5,.py-5{padding-top:3rem!important}.pr-5,.px-5{padding-right:3rem!important}.pb-5,.py-5{padding-bottom:3rem!important}.pl-5,.px-5{padding-left:3rem!important}.m-n1{margin:-.25rem!important}.mt-n1,.my-n1{margin-top:-.25rem!important}.mr-n1,.mx-n1{margin-right:-.25rem!important}.mb-n1,.my-n1{margin-bottom:-.25rem!important}.ml-n1,.mx-n1{margin-left:-.25rem!important}.m-n2{margin:-.5rem!important}.mt-n2,.my-n2{margin-top:-.5rem!important}.mr-n2,.mx-n2{margin-right:-.5rem!important}.mb-n2,.my-n2{margin-bottom:-.5rem!important}.ml-n2,.mx-n2{margin-left:-.5rem!important}.m-n3{margin:-1rem!important}.mt-n3,.my-n3{margin-top:-1rem!important}.mr-n3,.mx-n3{margin-right:-1rem!important}.mb-n3,.my-n3{margin-bottom:-1rem!important}.ml-n3,.mx-n3{margin-left:-1rem!important}.m-n4{margin:-1.5rem!important}.mt-n4,.my-n4{margin-top:-1.5rem!important}.mr-n4,.mx-n4{margin-right:-1.5rem!important}.mb-n4,.my-n4{margin-bottom:-1.5rem!important}.ml-n4,.mx-n4{margin-left:-1.5rem!important}.m-n5{margin:-3rem!important}.mt-n5,.my-n5{margin-top:-3rem!important}.mr-n5,.mx-n5{margin-right:-3rem!important}.mb-n5,.my-n5{margin-bottom:-3rem!important}.ml-n5,.mx-n5{margin-left:-3rem!important}.m-auto{margin:auto!important}.mt-auto,.my-auto{margin-top:auto!important}.mr-auto,.mx-auto{margin-right:auto!important}.mb-auto,.my-auto{margin-bottom:auto!important}.ml-auto,.mx-auto{margin-left:auto!important}@media (min-width:576px){.m-sm-0{margin:0!important}.mt-sm-0,.my-sm-0{margin-top:0!important}.mr-sm-0,.mx-sm-0{margin-right:0!important}.mb-sm-0,.my-sm-0{margin-bottom:0!important}.ml-sm-0,.mx-sm-0{margin-left:0!important}.m-sm-1{margin:.25rem!important}.mt-sm-1,.my-sm-1{margin-top:.25rem!important}.mr-sm-1,.mx-sm-1{margin-right:.25rem!important}.mb-sm-1,.my-sm-1{margin-bottom:.25rem!important}.ml-sm-1,.mx-sm-1{margin-left:.25rem!important}.m-sm-2{margin:.5rem!important}.mt-sm-2,.my-sm-2{margin-top:.5rem!important}.mr-sm-2,.mx-sm-2{margin-right:.5rem!important}.mb-sm-2,.my-sm-2{margin-bottom:.5rem!important}.ml-sm-2,.mx-sm-2{margin-left:.5rem!important}.m-sm-3{margin:1rem!important}.mt-sm-3,.my-sm-3{margin-top:1rem!important}.mr-sm-3,.mx-sm-3{margin-right:1rem!important}.mb-sm-3,.my-sm-3{margin-bottom:1rem!important}.ml-sm-3,.mx-sm-3{margin-left:1rem!important}.m-sm-4{margin:1.5rem!important}.mt-sm-4,.my-sm-4{margin-top:1.5rem!important}.mr-sm-4,.mx-sm-4{margin-right:1.5rem!important}.mb-sm-4,.my-sm-4{margin-bottom:1.5rem!important}.ml-sm-4,.mx-sm-4{margin-left:1.5rem!important}.m-sm-5{margin:3rem!important}.mt-sm-5,.my-sm-5{margin-top:3rem!important}.mr-sm-5,.mx-sm-5{margin-right:3rem!important}.mb-sm-5,.my-sm-5{margin-bottom:3rem!important}.ml-sm-5,.mx-sm-5{margin-left:3rem!important}.p-sm-0{padding:0!important}.pt-sm-0,.py-sm-0{padding-top:0!important}.pr-sm-0,.px-sm-0{padding-right:0!important}.pb-sm-0,.py-sm-0{padding-bottom:0!important}.pl-sm-0,.px-sm-0{padding-left:0!important}.p-sm-1{padding:.25rem!important}.pt-sm-1,.py-sm-1{padding-top:.25rem!important}.pr-sm-1,.px-sm-1{padding-right:.25rem!important}.pb-sm-1,.py-sm-1{padding-bottom:.25rem!important}.pl-sm-1,.px-sm-1{padding-left:.25rem!important}.p-sm-2{padding:.5rem!important}.pt-sm-2,.py-sm-2{padding-top:.5rem!important}.pr-sm-2,.px-sm-2{padding-right:.5rem!important}.pb-sm-2,.py-sm-2{padding-bottom:.5rem!important}.pl-sm-2,.px-sm-2{padding-left:.5rem!important}.p-sm-3{padding:1rem!important}.pt-sm-3,.py-sm-3{padding-top:1rem!important}.pr-sm-3,.px-sm-3{padding-right:1rem!important}.pb-sm-3,.py-sm-3{padding-bottom:1rem!important}.pl-sm-3,.px-sm-3{padding-left:1rem!important}.p-sm-4{padding:1.5rem!important}.pt-sm-4,.py-sm-4{padding-top:1.5rem!important}.pr-sm-4,.px-sm-4{padding-right:1.5rem!important}.pb-sm-4,.py-sm-4{padding-bottom:1.5rem!important}.pl-sm-4,.px-sm-4{padding-left:1.5rem!important}.p-sm-5{padding:3rem!important}.pt-sm-5,.py-sm-5{padding-top:3rem!important}.pr-sm-5,.px-sm-5{padding-right:3rem!important}.pb-sm-5,.py-sm-5{padding-bottom:3rem!important}.pl-sm-5,.px-sm-5{padding-left:3rem!important}.m-sm-n1{margin:-.25rem!important}.mt-sm-n1,.my-sm-n1{margin-top:-.25rem!important}.mr-sm-n1,.mx-sm-n1{margin-right:-.25rem!important}.mb-sm-n1,.my-sm-n1{margin-bottom:-.25rem!important}.ml-sm-n1,.mx-sm-n1{margin-left:-.25rem!important}.m-sm-n2{margin:-.5rem!important}.mt-sm-n2,.my-sm-n2{margin-top:-.5rem!important}.mr-sm-n2,.mx-sm-n2{margin-right:-.5rem!important}.mb-sm-n2,.my-sm-n2{margin-bottom:-.5rem!important}.ml-sm-n2,.mx-sm-n2{margin-left:-.5rem!important}.m-sm-n3{margin:-1rem!important}.mt-sm-n3,.my-sm-n3{margin-top:-1rem!important}.mr-sm-n3,.mx-sm-n3{margin-right:-1rem!important}.mb-sm-n3,.my-sm-n3{margin-bottom:-1rem!important}.ml-sm-n3,.mx-sm-n3{margin-left:-1rem!important}.m-sm-n4{margin:-1.5rem!important}.mt-sm-n4,.my-sm-n4{margin-top:-1.5rem!important}.mr-sm-n4,.mx-sm-n4{margin-right:-1.5rem!important}.mb-sm-n4,.my-sm-n4{margin-bottom:-1.5rem!important}.ml-sm-n4,.mx-sm-n4{margin-left:-1.5rem!important}.m-sm-n5{margin:-3rem!important}.mt-sm-n5,.my-sm-n5{margin-top:-3rem!important}.mr-sm-n5,.mx-sm-n5{margin-right:-3rem!important}.mb-sm-n5,.my-sm-n5{margin-bottom:-3rem!important}.ml-sm-n5,.mx-sm-n5{margin-left:-3rem!important}.m-sm-auto{margin:auto!important}.mt-sm-auto,.my-sm-auto{margin-top:auto!important}.mr-sm-auto,.mx-sm-auto{margin-right:auto!important}.mb-sm-auto,.my-sm-auto{margin-bottom:auto!important}.ml-sm-auto,.mx-sm-auto{margin-left:auto!important}}@media (min-width:768px){.m-md-0{margin:0!important}.mt-md-0,.my-md-0{margin-top:0!important}.mr-md-0,.mx-md-0{margin-right:0!important}.mb-md-0,.my-md-0{margin-bottom:0!important}.ml-md-0,.mx-md-0{margin-left:0!important}.m-md-1{margin:.25rem!important}.mt-md-1,.my-md-1{margin-top:.25rem!important}.mr-md-1,.mx-md-1{margin-right:.25rem!important}.mb-md-1,.my-md-1{margin-bottom:.25rem!important}.ml-md-1,.mx-md-1{margin-left:.25rem!important}.m-md-2{margin:.5rem!important}.mt-md-2,.my-md-2{margin-top:.5rem!important}.mr-md-2,.mx-md-2{margin-right:.5rem!important}.mb-md-2,.my-md-2{margin-bottom:.5rem!important}.ml-md-2,.mx-md-2{margin-left:.5rem!important}.m-md-3{margin:1rem!important}.mt-md-3,.my-md-3{margin-top:1rem!important}.mr-md-3,.mx-md-3{margin-right:1rem!important}.mb-md-3,.my-md-3{margin-bottom:1rem!important}.ml-md-3,.mx-md-3{margin-left:1rem!important}.m-md-4{margin:1.5rem!important}.mt-md-4,.my-md-4{margin-top:1.5rem!important}.mr-md-4,.mx-md-4{margin-right:1.5rem!important}.mb-md-4,.my-md-4{margin-bottom:1.5rem!important}.ml-md-4,.mx-md-4{margin-left:1.5rem!important}.m-md-5{margin:3rem!important}.mt-md-5,.my-md-5{margin-top:3rem!important}.mr-md-5,.mx-md-5{margin-right:3rem!important}.mb-md-5,.my-md-5{margin-bottom:3rem!important}.ml-md-5,.mx-md-5{margin-left:3rem!important}.p-md-0{padding:0!important}.pt-md-0,.py-md-0{padding-top:0!important}.pr-md-0,.px-md-0{padding-right:0!important}.pb-md-0,.py-md-0{padding-bottom:0!important}.pl-md-0,.px-md-0{padding-left:0!important}.p-md-1{padding:.25rem!important}.pt-md-1,.py-md-1{padding-top:.25rem!important}.pr-md-1,.px-md-1{padding-right:.25rem!important}.pb-md-1,.py-md-1{padding-bottom:.25rem!important}.pl-md-1,.px-md-1{padding-left:.25rem!important}.p-md-2{padding:.5rem!important}.pt-md-2,.py-md-2{padding-top:.5rem!important}.pr-md-2,.px-md-2{padding-right:.5rem!important}.pb-md-2,.py-md-2{padding-bottom:.5rem!important}.pl-md-2,.px-md-2{padding-left:.5rem!important}.p-md-3{padding:1rem!important}.pt-md-3,.py-md-3{padding-top:1rem!important}.pr-md-3,.px-md-3{padding-right:1rem!important}.pb-md-3,.py-md-3{padding-bottom:1rem!important}.pl-md-3,.px-md-3{padding-left:1rem!important}.p-md-4{padding:1.5rem!important}.pt-md-4,.py-md-4{padding-top:1.5rem!important}.pr-md-4,.px-md-4{padding-right:1.5rem!important}.pb-md-4,.py-md-4{padding-bottom:1.5rem!important}.pl-md-4,.px-md-4{padding-left:1.5rem!important}.p-md-5{padding:3rem!important}.pt-md-5,.py-md-5{padding-top:3rem!important}.pr-md-5,.px-md-5{padding-right:3rem!important}.pb-md-5,.py-md-5{padding-bottom:3rem!important}.pl-md-5,.px-md-5{padding-left:3rem!important}.m-md-n1{margin:-.25rem!important}.mt-md-n1,.my-md-n1{margin-top:-.25rem!important}.mr-md-n1,.mx-md-n1{margin-right:-.25rem!important}.mb-md-n1,.my-md-n1{margin-bottom:-.25rem!important}.ml-md-n1,.mx-md-n1{margin-left:-.25rem!important}.m-md-n2{margin:-.5rem!important}.mt-md-n2,.my-md-n2{margin-top:-.5rem!important}.mr-md-n2,.mx-md-n2{margin-right:-.5rem!important}.mb-md-n2,.my-md-n2{margin-bottom:-.5rem!important}.ml-md-n2,.mx-md-n2{margin-left:-.5rem!important}.m-md-n3{margin:-1rem!important}.mt-md-n3,.my-md-n3{margin-top:-1rem!important}.mr-md-n3,.mx-md-n3{margin-right:-1rem!important}.mb-md-n3,.my-md-n3{margin-bottom:-1rem!important}.ml-md-n3,.mx-md-n3{margin-left:-1rem!important}.m-md-n4{margin:-1.5rem!important}.mt-md-n4,.my-md-n4{margin-top:-1.5rem!important}.mr-md-n4,.mx-md-n4{margin-right:-1.5rem!important}.mb-md-n4,.my-md-n4{margin-bottom:-1.5rem!important}.ml-md-n4,.mx-md-n4{margin-left:-1.5rem!important}.m-md-n5{margin:-3rem!important}.mt-md-n5,.my-md-n5{margin-top:-3rem!important}.mr-md-n5,.mx-md-n5{margin-right:-3rem!important}.mb-md-n5,.my-md-n5{margin-bottom:-3rem!important}.ml-md-n5,.mx-md-n5{margin-left:-3rem!important}.m-md-auto{margin:auto!important}.mt-md-auto,.my-md-auto{margin-top:auto!important}.mr-md-auto,.mx-md-auto{margin-right:auto!important}.mb-md-auto,.my-md-auto{margin-bottom:auto!important}.ml-md-auto,.mx-md-auto{margin-left:auto!important}}@media (min-width:992px){.m-lg-0{margin:0!important}.mt-lg-0,.my-lg-0{margin-top:0!important}.mr-lg-0,.mx-lg-0{margin-right:0!important}.mb-lg-0,.my-lg-0{margin-bottom:0!important}.ml-lg-0,.mx-lg-0{margin-left:0!important}.m-lg-1{margin:.25rem!important}.mt-lg-1,.my-lg-1{margin-top:.25rem!important}.mr-lg-1,.mx-lg-1{margin-right:.25rem!important}.mb-lg-1,.my-lg-1{margin-bottom:.25rem!important}.ml-lg-1,.mx-lg-1{margin-left:.25rem!important}.m-lg-2{margin:.5rem!important}.mt-lg-2,.my-lg-2{margin-top:.5rem!important}.mr-lg-2,.mx-lg-2{margin-right:.5rem!important}.mb-lg-2,.my-lg-2{margin-bottom:.5rem!important}.ml-lg-2,.mx-lg-2{margin-left:.5rem!important}.m-lg-3{margin:1rem!important}.mt-lg-3,.my-lg-3{margin-top:1rem!important}.mr-lg-3,.mx-lg-3{margin-right:1rem!important}.mb-lg-3,.my-lg-3{margin-bottom:1rem!important}.ml-lg-3,.mx-lg-3{margin-left:1rem!important}.m-lg-4{margin:1.5rem!important}.mt-lg-4,.my-lg-4{margin-top:1.5rem!important}.mr-lg-4,.mx-lg-4{margin-right:1.5rem!important}.mb-lg-4,.my-lg-4{margin-bottom:1.5rem!important}.ml-lg-4,.mx-lg-4{margin-left:1.5rem!important}.m-lg-5{margin:3rem!important}.mt-lg-5,.my-lg-5{margin-top:3rem!important}.mr-lg-5,.mx-lg-5{margin-right:3rem!important}.mb-lg-5,.my-lg-5{margin-bottom:3rem!important}.ml-lg-5,.mx-lg-5{margin-left:3rem!important}.p-lg-0{padding:0!important}.pt-lg-0,.py-lg-0{padding-top:0!important}.pr-lg-0,.px-lg-0{padding-right:0!important}.pb-lg-0,.py-lg-0{padding-bottom:0!important}.pl-lg-0,.px-lg-0{padding-left:0!important}.p-lg-1{padding:.25rem!important}.pt-lg-1,.py-lg-1{padding-top:.25rem!important}.pr-lg-1,.px-lg-1{padding-right:.25rem!important}.pb-lg-1,.py-lg-1{padding-bottom:.25rem!important}.pl-lg-1,.px-lg-1{padding-left:.25rem!important}.p-lg-2{padding:.5rem!important}.pt-lg-2,.py-lg-2{padding-top:.5rem!important}.pr-lg-2,.px-lg-2{padding-right:.5rem!important}.pb-lg-2,.py-lg-2{padding-bottom:.5rem!important}.pl-lg-2,.px-lg-2{padding-left:.5rem!important}.p-lg-3{padding:1rem!important}.pt-lg-3,.py-lg-3{padding-top:1rem!important}.pr-lg-3,.px-lg-3{padding-right:1rem!important}.pb-lg-3,.py-lg-3{padding-bottom:1rem!important}.pl-lg-3,.px-lg-3{padding-left:1rem!important}.p-lg-4{padding:1.5rem!important}.pt-lg-4,.py-lg-4{padding-top:1.5rem!important}.pr-lg-4,.px-lg-4{padding-right:1.5rem!important}.pb-lg-4,.py-lg-4{padding-bottom:1.5rem!important}.pl-lg-4,.px-lg-4{padding-left:1.5rem!important}.p-lg-5{padding:3rem!important}.pt-lg-5,.py-lg-5{padding-top:3rem!important}.pr-lg-5,.px-lg-5{padding-right:3rem!important}.pb-lg-5,.py-lg-5{padding-bottom:3rem!important}.pl-lg-5,.px-lg-5{padding-left:3rem!important}.m-lg-n1{margin:-.25rem!important}.mt-lg-n1,.my-lg-n1{margin-top:-.25rem!important}.mr-lg-n1,.mx-lg-n1{margin-right:-.25rem!important}.mb-lg-n1,.my-lg-n1{margin-bottom:-.25rem!important}.ml-lg-n1,.mx-lg-n1{margin-left:-.25rem!important}.m-lg-n2{margin:-.5rem!important}.mt-lg-n2,.my-lg-n2{margin-top:-.5rem!important}.mr-lg-n2,.mx-lg-n2{margin-right:-.5rem!important}.mb-lg-n2,.my-lg-n2{margin-bottom:-.5rem!important}.ml-lg-n2,.mx-lg-n2{margin-left:-.5rem!important}.m-lg-n3{margin:-1rem!important}.mt-lg-n3,.my-lg-n3{margin-top:-1rem!important}.mr-lg-n3,.mx-lg-n3{margin-right:-1rem!important}.mb-lg-n3,.my-lg-n3{margin-bottom:-1rem!important}.ml-lg-n3,.mx-lg-n3{margin-left:-1rem!important}.m-lg-n4{margin:-1.5rem!important}.mt-lg-n4,.my-lg-n4{margin-top:-1.5rem!important}.mr-lg-n4,.mx-lg-n4{margin-right:-1.5rem!important}.mb-lg-n4,.my-lg-n4{margin-bottom:-1.5rem!important}.ml-lg-n4,.mx-lg-n4{margin-left:-1.5rem!important}.m-lg-n5{margin:-3rem!important}.mt-lg-n5,.my-lg-n5{margin-top:-3rem!important}.mr-lg-n5,.mx-lg-n5{margin-right:-3rem!important}.mb-lg-n5,.my-lg-n5{margin-bottom:-3rem!important}.ml-lg-n5,.mx-lg-n5{margin-left:-3rem!important}.m-lg-auto{margin:auto!important}.mt-lg-auto,.my-lg-auto{margin-top:auto!important}.mr-lg-auto,.mx-lg-auto{margin-right:auto!important}.mb-lg-auto,.my-lg-auto{margin-bottom:auto!important}.ml-lg-auto,.mx-lg-auto{margin-left:auto!important}}@media (min-width:1200px){.m-xl-0{margin:0!important}.mt-xl-0,.my-xl-0{margin-top:0!important}.mr-xl-0,.mx-xl-0{margin-right:0!important}.mb-xl-0,.my-xl-0{margin-bottom:0!important}.ml-xl-0,.mx-xl-0{margin-left:0!important}.m-xl-1{margin:.25rem!important}.mt-xl-1,.my-xl-1{margin-top:.25rem!important}.mr-xl-1,.mx-xl-1{margin-right:.25rem!important}.mb-xl-1,.my-xl-1{margin-bottom:.25rem!important}.ml-xl-1,.mx-xl-1{margin-left:.25rem!important}.m-xl-2{margin:.5rem!important}.mt-xl-2,.my-xl-2{margin-top:.5rem!important}.mr-xl-2,.mx-xl-2{margin-right:.5rem!important}.mb-xl-2,.my-xl-2{margin-bottom:.5rem!important}.ml-xl-2,.mx-xl-2{margin-left:.5rem!important}.m-xl-3{margin:1rem!important}.mt-xl-3,.my-xl-3{margin-top:1rem!important}.mr-xl-3,.mx-xl-3{margin-right:1rem!important}.mb-xl-3,.my-xl-3{margin-bottom:1rem!important}.ml-xl-3,.mx-xl-3{margin-left:1rem!important}.m-xl-4{margin:1.5rem!important}.mt-xl-4,.my-xl-4{margin-top:1.5rem!important}.mr-xl-4,.mx-xl-4{margin-right:1.5rem!important}.mb-xl-4,.my-xl-4{margin-bottom:1.5rem!important}.ml-xl-4,.mx-xl-4{margin-left:1.5rem!important}.m-xl-5{margin:3rem!important}.mt-xl-5,.my-xl-5{margin-top:3rem!important}.mr-xl-5,.mx-xl-5{margin-right:3rem!important}.mb-xl-5,.my-xl-5{margin-bottom:3rem!important}.ml-xl-5,.mx-xl-5{margin-left:3rem!important}.p-xl-0{padding:0!important}.pt-xl-0,.py-xl-0{padding-top:0!important}.pr-xl-0,.px-xl-0{padding-right:0!important}.pb-xl-0,.py-xl-0{padding-bottom:0!important}.pl-xl-0,.px-xl-0{padding-left:0!important}.p-xl-1{padding:.25rem!important}.pt-xl-1,.py-xl-1{padding-top:.25rem!important}.pr-xl-1,.px-xl-1{padding-right:.25rem!important}.pb-xl-1,.py-xl-1{padding-bottom:.25rem!important}.pl-xl-1,.px-xl-1{padding-left:.25rem!important}.p-xl-2{padding:.5rem!important}.pt-xl-2,.py-xl-2{padding-top:.5rem!important}.pr-xl-2,.px-xl-2{padding-right:.5rem!important}.pb-xl-2,.py-xl-2{padding-bottom:.5rem!important}.pl-xl-2,.px-xl-2{padding-left:.5rem!important}.p-xl-3{padding:1rem!important}.pt-xl-3,.py-xl-3{padding-top:1rem!important}.pr-xl-3,.px-xl-3{padding-right:1rem!important}.pb-xl-3,.py-xl-3{padding-bottom:1rem!important}.pl-xl-3,.px-xl-3{padding-left:1rem!important}.p-xl-4{padding:1.5rem!important}.pt-xl-4,.py-xl-4{padding-top:1.5rem!important}.pr-xl-4,.px-xl-4{padding-right:1.5rem!important}.pb-xl-4,.py-xl-4{padding-bottom:1.5rem!important}.pl-xl-4,.px-xl-4{padding-left:1.5rem!important}.p-xl-5{padding:3rem!important}.pt-xl-5,.py-xl-5{padding-top:3rem!important}.pr-xl-5,.px-xl-5{padding-right:3rem!important}.pb-xl-5,.py-xl-5{padding-bottom:3rem!important}.pl-xl-5,.px-xl-5{padding-left:3rem!important}.m-xl-n1{margin:-.25rem!important}.mt-xl-n1,.my-xl-n1{margin-top:-.25rem!important}.mr-xl-n1,.mx-xl-n1{margin-right:-.25rem!important}.mb-xl-n1,.my-xl-n1{margin-bottom:-.25rem!important}.ml-xl-n1,.mx-xl-n1{margin-left:-.25rem!important}.m-xl-n2{margin:-.5rem!important}.mt-xl-n2,.my-xl-n2{margin-top:-.5rem!important}.mr-xl-n2,.mx-xl-n2{margin-right:-.5rem!important}.mb-xl-n2,.my-xl-n2{margin-bottom:-.5rem!important}.ml-xl-n2,.mx-xl-n2{margin-left:-.5rem!important}.m-xl-n3{margin:-1rem!important}.mt-xl-n3,.my-xl-n3{margin-top:-1rem!important}.mr-xl-n3,.mx-xl-n3{margin-right:-1rem!important}.mb-xl-n3,.my-xl-n3{margin-bottom:-1rem!important}.ml-xl-n3,.mx-xl-n3{margin-left:-1rem!important}.m-xl-n4{margin:-1.5rem!important}.mt-xl-n4,.my-xl-n4{margin-top:-1.5rem!important}.mr-xl-n4,.mx-xl-n4{margin-right:-1.5rem!important}.mb-xl-n4,.my-xl-n4{margin-bottom:-1.5rem!important}.ml-xl-n4,.mx-xl-n4{margin-left:-1.5rem!important}.m-xl-n5{margin:-3rem!important}.mt-xl-n5,.my-xl-n5{margin-top:-3rem!important}.mr-xl-n5,.mx-xl-n5{margin-right:-3rem!important}.mb-xl-n5,.my-xl-n5{margin-bottom:-3rem!important}.ml-xl-n5,.mx-xl-n5{margin-left:-3rem!important}.m-xl-auto{margin:auto!important}.mt-xl-auto,.my-xl-auto{margin-top:auto!important}.mr-xl-auto,.mx-xl-auto{margin-right:auto!important}.mb-xl-auto,.my-xl-auto{margin-bottom:auto!important}.ml-xl-auto,.mx-xl-auto{margin-left:auto!important}}.stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;pointer-events:auto;content:"";background-color:rgba(0,0,0,0)}.text-monospace{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace!important}.text-justify{text-align:justify!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-left{text-align:left!important}.text-right{text-align:right!important}.text-center{text-align:center!important}@media (min-width:576px){.text-sm-left{text-align:left!important}.text-sm-right{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.text-md-left{text-align:left!important}.text-md-right{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.text-lg-left{text-align:left!important}.text-lg-right{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.text-xl-left{text-align:left!important}.text-xl-right{text-align:right!important}.text-xl-center{text-align:center!important}}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.font-weight-light{font-weight:300!important}.font-weight-lighter{font-weight:lighter!important}.font-weight-normal{font-weight:400!important}.font-weight-bold{font-weight:700!important}.font-weight-bolder{font-weight:bolder!important}.font-italic{font-style:italic!important}.text-white{color:#fff!important}.text-primary{color:#007bff!important}a.text-primary:focus,a.text-primary:hover{color:#0056b3!important}.text-secondary{color:#6c757d!important}a.text-secondary:focus,a.text-secondary:hover{color:#494f54!important}.text-success{color:#28a745!important}a.text-success:focus,a.text-success:hover{color:#19692c!important}.text-info{color:#17a2b8!important}a.text-info:focus,a.text-info:hover{color:#0f6674!important}.text-warning{color:#ffc107!important}a.text-warning:focus,a.text-warning:hover{color:#ba8b00!important}.text-danger{color:#dc3545!important}a.text-danger:focus,a.text-danger:hover{color:#a71d2a!important}.text-light{color:#f8f9fa!important}a.text-light:focus,a.text-light:hover{color:#cbd3da!important}.text-dark{color:#343a40!important}a.text-dark:focus,a.text-dark:hover{color:#121416!important}.text-body{color:#212529!important}.text-muted{color:#6c757d!important}.text-black-50{color:rgba(0,0,0,.5)!important}.text-white-50{color:rgba(255,255,255,.5)!important}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.text-decoration-none{text-decoration:none!important}.text-break{word-break:break-word!important;word-wrap:break-word!important}.text-reset{color:inherit!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}@media print{*,::after,::before{text-shadow:none!important;box-shadow:none!important}a:not(.btn){text-decoration:underline}abbr[title]::after{content:" (" attr(title) ")"}pre{white-space:pre-wrap!important}blockquote,pre{border:1px solid #adb5bd;page-break-inside:avoid}img,tr{page-break-inside:avoid}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}@page{size:a3}body{min-width:992px!important}.container{min-width:992px!important}.navbar{display:none}.badge{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #dee2e6!important}.table-dark{color:inherit}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#dee2e6}.table .thead-dark th{color:inherit;border-color:#dee2e6}} +/*# sourceMappingURL=bootstrap.min.css.map */ \ No newline at end of file diff --git a/docs/column_api_files/bootstrap2.css b/docs/column_api_files/bootstrap2.css new file mode 100644 index 0000000..6ee5956 --- /dev/null +++ b/docs/column_api_files/bootstrap2.css @@ -0,0 +1,7 @@ +/*! + * Bootstrap v4.6.1 (https://getbootstrap.com/) + * Copyright 2011-2021 The Bootstrap Authors + * Copyright 2011-2021 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + */:root{--blue:#007bff;--indigo:#6610f2;--purple:#6f42c1;--pink:#e83e8c;--red:#dc3545;--orange:#fd7e14;--yellow:#ffc107;--green:#28a745;--teal:#20c997;--cyan:#17a2b8;--white:#fff;--gray:#6c757d;--gray-dark:#343a40;--primary:#007bff;--secondary:#6c757d;--success:#28a745;--info:#17a2b8;--warning:#ffc107;--danger:#dc3545;--light:#f8f9fa;--dark:#343a40;--breakpoint-xs:0;--breakpoint-sm:576px;--breakpoint-md:768px;--breakpoint-lg:992px;--breakpoint-xl:1200px;--font-family-sans-serif:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}*,::after,::before{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}[tabindex="-1"]:focus:not(:focus-visible){outline:0!important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#007bff;text-decoration:none;background-color:transparent}a:hover{color:#0056b3;text-decoration:underline}a:not([href]):not([class]){color:inherit;text-decoration:none}a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto;-ms-overflow-style:scrollbar}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg{overflow:hidden;vertical-align:middle}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:left;caption-side:bottom}th{text-align:inherit;text-align:-webkit-match-parent}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus:not(:focus-visible){outline:0}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none!important}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-bottom:.5rem;font-weight:500;line-height:1.2}.h1,h1{font-size:2.5rem}.h2,h2{font-size:2rem}.h3,h3{font-size:1.75rem}.h4,h4{font-size:1.5rem}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:6rem;font-weight:300;line-height:1.2}.display-2{font-size:5.5rem;font-weight:300;line-height:1.2}.display-3{font-size:4.5rem;font-weight:300;line-height:1.2}.display-4{font-size:3.5rem;font-weight:300;line-height:1.2}hr{margin-top:1rem;margin-bottom:1rem;border:0;border-top:1px solid rgba(0,0,0,.1)}.small,small{font-size:80%;font-weight:400}.mark,mark{padding:.2em;background-color:#fcf8e3}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:90%;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote-footer{display:block;font-size:80%;color:#6c757d}.blockquote-footer::before{content:"\2014\00A0"}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:90%;color:#6c757d}code{font-size:87.5%;color:#e83e8c;word-wrap:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:87.5%;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:100%;font-weight:700}pre{display:block;font-size:87.5%;color:#212529}pre code{font-size:inherit;color:inherit;word-break:normal}.pre-scrollable{max-height:340px;overflow-y:scroll}.container,.container-fluid,.container-lg,.container-md,.container-sm,.container-xl{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:576px){.container,.container-sm{max-width:540px}}@media (min-width:768px){.container,.container-md,.container-sm{max-width:720px}}@media (min-width:992px){.container,.container-lg,.container-md,.container-sm{max-width:960px}}@media (min-width:1200px){.container,.container-lg,.container-md,.container-sm,.container-xl{max-width:1140px}}.row{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}.no-gutters{margin-right:0;margin-left:0}.no-gutters>.col,.no-gutters>[class*=col-]{padding-right:0;padding-left:0}.col,.col-1,.col-10,.col-11,.col-12,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-auto,.col-lg,.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-auto,.col-md,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-auto,.col-sm,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-auto,.col-xl,.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-auto{position:relative;width:100%;padding-right:15px;padding-left:15px}.col{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-3>*{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.row-cols-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-6>*{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-first{-ms-flex-order:-1;order:-1}.order-last{-ms-flex-order:13;order:13}.order-0{-ms-flex-order:0;order:0}.order-1{-ms-flex-order:1;order:1}.order-2{-ms-flex-order:2;order:2}.order-3{-ms-flex-order:3;order:3}.order-4{-ms-flex-order:4;order:4}.order-5{-ms-flex-order:5;order:5}.order-6{-ms-flex-order:6;order:6}.order-7{-ms-flex-order:7;order:7}.order-8{-ms-flex-order:8;order:8}.order-9{-ms-flex-order:9;order:9}.order-10{-ms-flex-order:10;order:10}.order-11{-ms-flex-order:11;order:11}.order-12{-ms-flex-order:12;order:12}.offset-1{margin-left:8.333333%}.offset-2{margin-left:16.666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.333333%}.offset-5{margin-left:41.666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.333333%}.offset-8{margin-left:66.666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.333333%}.offset-11{margin-left:91.666667%}@media (min-width:576px){.col-sm{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-sm-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-sm-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-sm-3>*{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.row-cols-sm-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-sm-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-sm-6>*{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-sm-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-sm-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-sm-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-sm-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-sm-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-sm-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-sm-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-sm-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-sm-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-sm-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-sm-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-sm-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-sm-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-sm-first{-ms-flex-order:-1;order:-1}.order-sm-last{-ms-flex-order:13;order:13}.order-sm-0{-ms-flex-order:0;order:0}.order-sm-1{-ms-flex-order:1;order:1}.order-sm-2{-ms-flex-order:2;order:2}.order-sm-3{-ms-flex-order:3;order:3}.order-sm-4{-ms-flex-order:4;order:4}.order-sm-5{-ms-flex-order:5;order:5}.order-sm-6{-ms-flex-order:6;order:6}.order-sm-7{-ms-flex-order:7;order:7}.order-sm-8{-ms-flex-order:8;order:8}.order-sm-9{-ms-flex-order:9;order:9}.order-sm-10{-ms-flex-order:10;order:10}.order-sm-11{-ms-flex-order:11;order:11}.order-sm-12{-ms-flex-order:12;order:12}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.333333%}.offset-sm-2{margin-left:16.666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.333333%}.offset-sm-5{margin-left:41.666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.333333%}.offset-sm-8{margin-left:66.666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.333333%}.offset-sm-11{margin-left:91.666667%}}@media (min-width:768px){.col-md{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-md-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-md-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-md-3>*{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.row-cols-md-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-md-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-md-6>*{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-md-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-md-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-md-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-md-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-md-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-md-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-md-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-md-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-md-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-md-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-md-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-md-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-md-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-md-first{-ms-flex-order:-1;order:-1}.order-md-last{-ms-flex-order:13;order:13}.order-md-0{-ms-flex-order:0;order:0}.order-md-1{-ms-flex-order:1;order:1}.order-md-2{-ms-flex-order:2;order:2}.order-md-3{-ms-flex-order:3;order:3}.order-md-4{-ms-flex-order:4;order:4}.order-md-5{-ms-flex-order:5;order:5}.order-md-6{-ms-flex-order:6;order:6}.order-md-7{-ms-flex-order:7;order:7}.order-md-8{-ms-flex-order:8;order:8}.order-md-9{-ms-flex-order:9;order:9}.order-md-10{-ms-flex-order:10;order:10}.order-md-11{-ms-flex-order:11;order:11}.order-md-12{-ms-flex-order:12;order:12}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.333333%}.offset-md-2{margin-left:16.666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.333333%}.offset-md-5{margin-left:41.666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.333333%}.offset-md-8{margin-left:66.666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.333333%}.offset-md-11{margin-left:91.666667%}}@media (min-width:992px){.col-lg{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-lg-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-lg-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-lg-3>*{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.row-cols-lg-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-lg-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-lg-6>*{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-lg-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-lg-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-lg-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-lg-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-lg-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-lg-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-lg-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-lg-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-lg-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-lg-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-lg-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-lg-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-lg-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-lg-first{-ms-flex-order:-1;order:-1}.order-lg-last{-ms-flex-order:13;order:13}.order-lg-0{-ms-flex-order:0;order:0}.order-lg-1{-ms-flex-order:1;order:1}.order-lg-2{-ms-flex-order:2;order:2}.order-lg-3{-ms-flex-order:3;order:3}.order-lg-4{-ms-flex-order:4;order:4}.order-lg-5{-ms-flex-order:5;order:5}.order-lg-6{-ms-flex-order:6;order:6}.order-lg-7{-ms-flex-order:7;order:7}.order-lg-8{-ms-flex-order:8;order:8}.order-lg-9{-ms-flex-order:9;order:9}.order-lg-10{-ms-flex-order:10;order:10}.order-lg-11{-ms-flex-order:11;order:11}.order-lg-12{-ms-flex-order:12;order:12}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.333333%}.offset-lg-2{margin-left:16.666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.333333%}.offset-lg-5{margin-left:41.666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.333333%}.offset-lg-8{margin-left:66.666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.333333%}.offset-lg-11{margin-left:91.666667%}}@media (min-width:1200px){.col-xl{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-xl-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-xl-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-xl-3>*{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.row-cols-xl-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-xl-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-xl-6>*{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-xl-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-xl-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-xl-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-xl-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-xl-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-xl-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-xl-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-xl-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-xl-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-xl-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-xl-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-xl-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-xl-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-xl-first{-ms-flex-order:-1;order:-1}.order-xl-last{-ms-flex-order:13;order:13}.order-xl-0{-ms-flex-order:0;order:0}.order-xl-1{-ms-flex-order:1;order:1}.order-xl-2{-ms-flex-order:2;order:2}.order-xl-3{-ms-flex-order:3;order:3}.order-xl-4{-ms-flex-order:4;order:4}.order-xl-5{-ms-flex-order:5;order:5}.order-xl-6{-ms-flex-order:6;order:6}.order-xl-7{-ms-flex-order:7;order:7}.order-xl-8{-ms-flex-order:8;order:8}.order-xl-9{-ms-flex-order:9;order:9}.order-xl-10{-ms-flex-order:10;order:10}.order-xl-11{-ms-flex-order:11;order:11}.order-xl-12{-ms-flex-order:12;order:12}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.333333%}.offset-xl-2{margin-left:16.666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.333333%}.offset-xl-5{margin-left:41.666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.333333%}.offset-xl-8{margin-left:66.666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.333333%}.offset-xl-11{margin-left:91.666667%}}.table{width:100%;margin-bottom:1rem;color:#212529}.table td,.table th{padding:.75rem;vertical-align:top;border-top:1px solid #dee2e6}.table thead th{vertical-align:bottom;border-bottom:2px solid #dee2e6}.table tbody+tbody{border-top:2px solid #dee2e6}.table-sm td,.table-sm th{padding:.3rem}.table-bordered{border:1px solid #dee2e6}.table-bordered td,.table-bordered th{border:1px solid #dee2e6}.table-bordered thead td,.table-bordered thead th{border-bottom-width:2px}.table-borderless tbody+tbody,.table-borderless td,.table-borderless th,.table-borderless thead th{border:0}.table-striped tbody tr:nth-of-type(odd){background-color:rgba(0,0,0,.05)}.table-hover tbody tr:hover{color:#212529;background-color:rgba(0,0,0,.075)}.table-primary,.table-primary>td,.table-primary>th{background-color:#b8daff}.table-primary tbody+tbody,.table-primary td,.table-primary th,.table-primary thead th{border-color:#7abaff}.table-hover .table-primary:hover{background-color:#9fcdff}.table-hover .table-primary:hover>td,.table-hover .table-primary:hover>th{background-color:#9fcdff}.table-secondary,.table-secondary>td,.table-secondary>th{background-color:#d6d8db}.table-secondary tbody+tbody,.table-secondary td,.table-secondary th,.table-secondary thead th{border-color:#b3b7bb}.table-hover .table-secondary:hover{background-color:#c8cbcf}.table-hover .table-secondary:hover>td,.table-hover .table-secondary:hover>th{background-color:#c8cbcf}.table-success,.table-success>td,.table-success>th{background-color:#c3e6cb}.table-success tbody+tbody,.table-success td,.table-success th,.table-success thead th{border-color:#8fd19e}.table-hover .table-success:hover{background-color:#b1dfbb}.table-hover .table-success:hover>td,.table-hover .table-success:hover>th{background-color:#b1dfbb}.table-info,.table-info>td,.table-info>th{background-color:#bee5eb}.table-info tbody+tbody,.table-info td,.table-info th,.table-info thead th{border-color:#86cfda}.table-hover .table-info:hover{background-color:#abdde5}.table-hover .table-info:hover>td,.table-hover .table-info:hover>th{background-color:#abdde5}.table-warning,.table-warning>td,.table-warning>th{background-color:#ffeeba}.table-warning tbody+tbody,.table-warning td,.table-warning th,.table-warning thead th{border-color:#ffdf7e}.table-hover .table-warning:hover{background-color:#ffe8a1}.table-hover .table-warning:hover>td,.table-hover .table-warning:hover>th{background-color:#ffe8a1}.table-danger,.table-danger>td,.table-danger>th{background-color:#f5c6cb}.table-danger tbody+tbody,.table-danger td,.table-danger th,.table-danger thead th{border-color:#ed969e}.table-hover .table-danger:hover{background-color:#f1b0b7}.table-hover .table-danger:hover>td,.table-hover .table-danger:hover>th{background-color:#f1b0b7}.table-light,.table-light>td,.table-light>th{background-color:#fdfdfe}.table-light tbody+tbody,.table-light td,.table-light th,.table-light thead th{border-color:#fbfcfc}.table-hover .table-light:hover{background-color:#ececf6}.table-hover .table-light:hover>td,.table-hover .table-light:hover>th{background-color:#ececf6}.table-dark,.table-dark>td,.table-dark>th{background-color:#c6c8ca}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#95999c}.table-hover .table-dark:hover{background-color:#b9bbbe}.table-hover .table-dark:hover>td,.table-hover .table-dark:hover>th{background-color:#b9bbbe}.table-active,.table-active>td,.table-active>th{background-color:rgba(0,0,0,.075)}.table-hover .table-active:hover{background-color:rgba(0,0,0,.075)}.table-hover .table-active:hover>td,.table-hover .table-active:hover>th{background-color:rgba(0,0,0,.075)}.table .thead-dark th{color:#fff;background-color:#343a40;border-color:#454d55}.table .thead-light th{color:#495057;background-color:#e9ecef;border-color:#dee2e6}.table-dark{color:#fff;background-color:#343a40}.table-dark td,.table-dark th,.table-dark thead th{border-color:#454d55}.table-dark.table-bordered{border:0}.table-dark.table-striped tbody tr:nth-of-type(odd){background-color:rgba(255,255,255,.05)}.table-dark.table-hover tbody tr:hover{color:#fff;background-color:rgba(255,255,255,.075)}@media (max-width:575.98px){.table-responsive-sm{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-sm>.table-bordered{border:0}}@media (max-width:767.98px){.table-responsive-md{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-md>.table-bordered{border:0}}@media (max-width:991.98px){.table-responsive-lg{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-lg>.table-bordered{border:0}}@media (max-width:1199.98px){.table-responsive-xl{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-xl>.table-bordered{border:0}}.table-responsive{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive>.table-bordered{border:0}.form-control{display:block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control{transition:none}}.form-control::-ms-expand{background-color:transparent;border:0}.form-control:focus{color:#495057;background-color:#fff;border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.form-control::-webkit-input-placeholder{color:#6c757d;opacity:1}.form-control::-moz-placeholder{color:#6c757d;opacity:1}.form-control:-ms-input-placeholder{color:#6c757d;opacity:1}.form-control::-ms-input-placeholder{color:#6c757d;opacity:1}.form-control::placeholder{color:#6c757d;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#e9ecef;opacity:1}input[type=date].form-control,input[type=datetime-local].form-control,input[type=month].form-control,input[type=time].form-control{-webkit-appearance:none;-moz-appearance:none;appearance:none}select.form-control:-moz-focusring{color:transparent;text-shadow:0 0 0 #495057}select.form-control:focus::-ms-value{color:#495057;background-color:#fff}.form-control-file,.form-control-range{display:block;width:100%}.col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem;line-height:1.5}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem;line-height:1.5}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;font-size:1rem;line-height:1.5;color:#212529;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm{padding-right:0;padding-left:0}.form-control-sm{height:calc(1.5em + .5rem + 2px);padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.form-control-lg{height:calc(1.5em + 1rem + 2px);padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}select.form-control[multiple],select.form-control[size]{height:auto}textarea.form-control{height:auto}.form-group{margin-bottom:1rem}.form-text{display:block;margin-top:.25rem}.form-row{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-5px;margin-left:-5px}.form-row>.col,.form-row>[class*=col-]{padding-right:5px;padding-left:5px}.form-check{position:relative;display:block;padding-left:1.25rem}.form-check-input{position:absolute;margin-top:.3rem;margin-left:-1.25rem}.form-check-input:disabled~.form-check-label,.form-check-input[disabled]~.form-check-label{color:#6c757d}.form-check-label{margin-bottom:0}.form-check-inline{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;padding-left:0;margin-right:.75rem}.form-check-inline .form-check-input{position:static;margin-top:0;margin-right:.3125rem;margin-left:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#28a745}.valid-tooltip{position:absolute;top:100%;left:0;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:rgba(40,167,69,.9);border-radius:.25rem}.form-row>.col>.valid-tooltip,.form-row>[class*=col-]>.valid-tooltip{left:5px}.is-valid~.valid-feedback,.is-valid~.valid-tooltip,.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip{display:block}.form-control.is-valid,.was-validated .form-control:valid{border-color:#28a745;padding-right:calc(1.5em + .75rem)!important;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-valid:focus,.was-validated .form-control:valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.was-validated select.form-control:valid,select.form-control.is-valid{padding-right:3rem!important;background-position:right 1.5rem center}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.custom-select.is-valid,.was-validated .custom-select:valid{border-color:#28a745;padding-right:calc(.75em + 2.3125rem)!important;background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") right .75rem center/8px 10px no-repeat,#fff url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e") center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem) no-repeat}.custom-select.is-valid:focus,.was-validated .custom-select:valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:#28a745}.form-check-input.is-valid~.valid-feedback,.form-check-input.is-valid~.valid-tooltip,.was-validated .form-check-input:valid~.valid-feedback,.was-validated .form-check-input:valid~.valid-tooltip{display:block}.custom-control-input.is-valid~.custom-control-label,.was-validated .custom-control-input:valid~.custom-control-label{color:#28a745}.custom-control-input.is-valid~.custom-control-label::before,.was-validated .custom-control-input:valid~.custom-control-label::before{border-color:#28a745}.custom-control-input.is-valid:checked~.custom-control-label::before,.was-validated .custom-control-input:valid:checked~.custom-control-label::before{border-color:#34ce57;background-color:#34ce57}.custom-control-input.is-valid:focus~.custom-control-label::before,.was-validated .custom-control-input:valid:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.custom-control-input.is-valid:focus:not(:checked)~.custom-control-label::before,.was-validated .custom-control-input:valid:focus:not(:checked)~.custom-control-label::before{border-color:#28a745}.custom-file-input.is-valid~.custom-file-label,.was-validated .custom-file-input:valid~.custom-file-label{border-color:#28a745}.custom-file-input.is-valid:focus~.custom-file-label,.was-validated .custom-file-input:valid:focus~.custom-file-label{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#dc3545}.invalid-tooltip{position:absolute;top:100%;left:0;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:rgba(220,53,69,.9);border-radius:.25rem}.form-row>.col>.invalid-tooltip,.form-row>[class*=col-]>.invalid-tooltip{left:5px}.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip,.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip{display:block}.form-control.is-invalid,.was-validated .form-control:invalid{border-color:#dc3545;padding-right:calc(1.5em + .75rem)!important;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-invalid:focus,.was-validated .form-control:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.was-validated select.form-control:invalid,select.form-control.is-invalid{padding-right:3rem!important;background-position:right 1.5rem center}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.custom-select.is-invalid,.was-validated .custom-select:invalid{border-color:#dc3545;padding-right:calc(.75em + 2.3125rem)!important;background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") right .75rem center/8px 10px no-repeat,#fff url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e") center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem) no-repeat}.custom-select.is-invalid:focus,.was-validated .custom-select:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:#dc3545}.form-check-input.is-invalid~.invalid-feedback,.form-check-input.is-invalid~.invalid-tooltip,.was-validated .form-check-input:invalid~.invalid-feedback,.was-validated .form-check-input:invalid~.invalid-tooltip{display:block}.custom-control-input.is-invalid~.custom-control-label,.was-validated .custom-control-input:invalid~.custom-control-label{color:#dc3545}.custom-control-input.is-invalid~.custom-control-label::before,.was-validated .custom-control-input:invalid~.custom-control-label::before{border-color:#dc3545}.custom-control-input.is-invalid:checked~.custom-control-label::before,.was-validated .custom-control-input:invalid:checked~.custom-control-label::before{border-color:#e4606d;background-color:#e4606d}.custom-control-input.is-invalid:focus~.custom-control-label::before,.was-validated .custom-control-input:invalid:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.custom-control-input.is-invalid:focus:not(:checked)~.custom-control-label::before,.was-validated .custom-control-input:invalid:focus:not(:checked)~.custom-control-label::before{border-color:#dc3545}.custom-file-input.is-invalid~.custom-file-label,.was-validated .custom-file-input:invalid~.custom-file-label{border-color:#dc3545}.custom-file-input.is-invalid:focus~.custom-file-label,.was-validated .custom-file-input:invalid:focus~.custom-file-label{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.form-inline{display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap;-ms-flex-align:center;align-items:center}.form-inline .form-check{width:100%}@media (min-width:576px){.form-inline label{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;margin-bottom:0}.form-inline .form-group{display:-ms-flexbox;display:flex;-ms-flex:0 0 auto;flex:0 0 auto;-ms-flex-flow:row wrap;flex-flow:row wrap;-ms-flex-align:center;align-items:center;margin-bottom:0}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-plaintext{display:inline-block}.form-inline .custom-select,.form-inline .input-group{width:auto}.form-inline .form-check{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:auto;padding-left:0}.form-inline .form-check-input{position:relative;-ms-flex-negative:0;flex-shrink:0;margin-top:0;margin-right:.25rem;margin-left:0}.form-inline .custom-control{-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}.form-inline .custom-control-label{margin-bottom:0}}.btn{display:inline-block;font-weight:400;color:#212529;text-align:center;vertical-align:middle;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:transparent;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;line-height:1.5;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.btn{transition:none}}.btn:hover{color:#212529;text-decoration:none}.btn.focus,.btn:focus{outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.btn.disabled,.btn:disabled{opacity:.65}.btn:not(:disabled):not(.disabled){cursor:pointer}a.btn.disabled,fieldset:disabled a.btn{pointer-events:none}.btn-primary{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:hover{color:#fff;background-color:#0069d9;border-color:#0062cc}.btn-primary.focus,.btn-primary:focus{color:#fff;background-color:#0069d9;border-color:#0062cc;box-shadow:0 0 0 .2rem rgba(38,143,255,.5)}.btn-primary.disabled,.btn-primary:disabled{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:not(:disabled):not(.disabled).active,.btn-primary:not(:disabled):not(.disabled):active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#0062cc;border-color:#005cbf}.btn-primary:not(:disabled):not(.disabled).active:focus,.btn-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(38,143,255,.5)}.btn-secondary{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:hover{color:#fff;background-color:#5a6268;border-color:#545b62}.btn-secondary.focus,.btn-secondary:focus{color:#fff;background-color:#5a6268;border-color:#545b62;box-shadow:0 0 0 .2rem rgba(130,138,145,.5)}.btn-secondary.disabled,.btn-secondary:disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:not(:disabled):not(.disabled).active,.btn-secondary:not(:disabled):not(.disabled):active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#545b62;border-color:#4e555b}.btn-secondary:not(:disabled):not(.disabled).active:focus,.btn-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(130,138,145,.5)}.btn-success{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:hover{color:#fff;background-color:#218838;border-color:#1e7e34}.btn-success.focus,.btn-success:focus{color:#fff;background-color:#218838;border-color:#1e7e34;box-shadow:0 0 0 .2rem rgba(72,180,97,.5)}.btn-success.disabled,.btn-success:disabled{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:not(:disabled):not(.disabled).active,.btn-success:not(:disabled):not(.disabled):active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#1e7e34;border-color:#1c7430}.btn-success:not(:disabled):not(.disabled).active:focus,.btn-success:not(:disabled):not(.disabled):active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(72,180,97,.5)}.btn-info{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:hover{color:#fff;background-color:#138496;border-color:#117a8b}.btn-info.focus,.btn-info:focus{color:#fff;background-color:#138496;border-color:#117a8b;box-shadow:0 0 0 .2rem rgba(58,176,195,.5)}.btn-info.disabled,.btn-info:disabled{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:not(:disabled):not(.disabled).active,.btn-info:not(:disabled):not(.disabled):active,.show>.btn-info.dropdown-toggle{color:#fff;background-color:#117a8b;border-color:#10707f}.btn-info:not(:disabled):not(.disabled).active:focus,.btn-info:not(:disabled):not(.disabled):active:focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(58,176,195,.5)}.btn-warning{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:hover{color:#212529;background-color:#e0a800;border-color:#d39e00}.btn-warning.focus,.btn-warning:focus{color:#212529;background-color:#e0a800;border-color:#d39e00;box-shadow:0 0 0 .2rem rgba(222,170,12,.5)}.btn-warning.disabled,.btn-warning:disabled{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:not(:disabled):not(.disabled).active,.btn-warning:not(:disabled):not(.disabled):active,.show>.btn-warning.dropdown-toggle{color:#212529;background-color:#d39e00;border-color:#c69500}.btn-warning:not(:disabled):not(.disabled).active:focus,.btn-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(222,170,12,.5)}.btn-danger{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:hover{color:#fff;background-color:#c82333;border-color:#bd2130}.btn-danger.focus,.btn-danger:focus{color:#fff;background-color:#c82333;border-color:#bd2130;box-shadow:0 0 0 .2rem rgba(225,83,97,.5)}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:not(:disabled):not(.disabled).active,.btn-danger:not(:disabled):not(.disabled):active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#bd2130;border-color:#b21f2d}.btn-danger:not(:disabled):not(.disabled).active:focus,.btn-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(225,83,97,.5)}.btn-light{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:hover{color:#212529;background-color:#e2e6ea;border-color:#dae0e5}.btn-light.focus,.btn-light:focus{color:#212529;background-color:#e2e6ea;border-color:#dae0e5;box-shadow:0 0 0 .2rem rgba(216,217,219,.5)}.btn-light.disabled,.btn-light:disabled{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:not(:disabled):not(.disabled).active,.btn-light:not(:disabled):not(.disabled):active,.show>.btn-light.dropdown-toggle{color:#212529;background-color:#dae0e5;border-color:#d3d9df}.btn-light:not(:disabled):not(.disabled).active:focus,.btn-light:not(:disabled):not(.disabled):active:focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(216,217,219,.5)}.btn-dark{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:hover{color:#fff;background-color:#23272b;border-color:#1d2124}.btn-dark.focus,.btn-dark:focus{color:#fff;background-color:#23272b;border-color:#1d2124;box-shadow:0 0 0 .2rem rgba(82,88,93,.5)}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:not(:disabled):not(.disabled).active,.btn-dark:not(:disabled):not(.disabled):active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#1d2124;border-color:#171a1d}.btn-dark:not(:disabled):not(.disabled).active:focus,.btn-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(82,88,93,.5)}.btn-outline-primary{color:#007bff;border-color:#007bff}.btn-outline-primary:hover{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary.focus,.btn-outline-primary:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#007bff;background-color:transparent}.btn-outline-primary:not(:disabled):not(.disabled).active,.btn-outline-primary:not(:disabled):not(.disabled):active,.show>.btn-outline-primary.dropdown-toggle{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary:not(:disabled):not(.disabled).active:focus,.btn-outline-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-outline-secondary{color:#6c757d;border-color:#6c757d}.btn-outline-secondary:hover{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary.focus,.btn-outline-secondary:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#6c757d;background-color:transparent}.btn-outline-secondary:not(:disabled):not(.disabled).active,.btn-outline-secondary:not(:disabled):not(.disabled):active,.show>.btn-outline-secondary.dropdown-toggle{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary:not(:disabled):not(.disabled).active:focus,.btn-outline-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-outline-success{color:#28a745;border-color:#28a745}.btn-outline-success:hover{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success.focus,.btn-outline-success:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#28a745;background-color:transparent}.btn-outline-success:not(:disabled):not(.disabled).active,.btn-outline-success:not(:disabled):not(.disabled):active,.show>.btn-outline-success.dropdown-toggle{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success:not(:disabled):not(.disabled).active:focus,.btn-outline-success:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-outline-info{color:#17a2b8;border-color:#17a2b8}.btn-outline-info:hover{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info.focus,.btn-outline-info:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#17a2b8;background-color:transparent}.btn-outline-info:not(:disabled):not(.disabled).active,.btn-outline-info:not(:disabled):not(.disabled):active,.show>.btn-outline-info.dropdown-toggle{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info:not(:disabled):not(.disabled).active:focus,.btn-outline-info:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-outline-warning{color:#ffc107;border-color:#ffc107}.btn-outline-warning:hover{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning.focus,.btn-outline-warning:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#ffc107;background-color:transparent}.btn-outline-warning:not(:disabled):not(.disabled).active,.btn-outline-warning:not(:disabled):not(.disabled):active,.show>.btn-outline-warning.dropdown-toggle{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning:not(:disabled):not(.disabled).active:focus,.btn-outline-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-outline-danger{color:#dc3545;border-color:#dc3545}.btn-outline-danger:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger.focus,.btn-outline-danger:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#dc3545;background-color:transparent}.btn-outline-danger:not(:disabled):not(.disabled).active,.btn-outline-danger:not(:disabled):not(.disabled):active,.show>.btn-outline-danger.dropdown-toggle{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger:not(:disabled):not(.disabled).active:focus,.btn-outline-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-outline-light{color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:hover{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light.focus,.btn-outline-light:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#f8f9fa;background-color:transparent}.btn-outline-light:not(:disabled):not(.disabled).active,.btn-outline-light:not(:disabled):not(.disabled):active,.show>.btn-outline-light.dropdown-toggle{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:not(:disabled):not(.disabled).active:focus,.btn-outline-light:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-dark{color:#343a40;border-color:#343a40}.btn-outline-dark:hover{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark.focus,.btn-outline-dark:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#343a40;background-color:transparent}.btn-outline-dark:not(:disabled):not(.disabled).active,.btn-outline-dark:not(:disabled):not(.disabled):active,.show>.btn-outline-dark.dropdown-toggle{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark:not(:disabled):not(.disabled).active:focus,.btn-outline-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-link{font-weight:400;color:#007bff;text-decoration:none}.btn-link:hover{color:#0056b3;text-decoration:underline}.btn-link.focus,.btn-link:focus{text-decoration:underline}.btn-link.disabled,.btn-link:disabled{color:#6c757d;pointer-events:none}.btn-group-lg>.btn,.btn-lg{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.btn-group-sm>.btn,.btn-sm{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:.5rem}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{transition:opacity .15s linear}@media (prefers-reduced-motion:reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{position:relative;height:0;overflow:hidden;transition:height .35s ease}@media (prefers-reduced-motion:reduce){.collapsing{transition:none}}.dropdown,.dropleft,.dropright,.dropup{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:10rem;padding:.5rem 0;margin:.125rem 0 0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.dropdown-menu-left{right:auto;left:0}.dropdown-menu-right{right:0;left:auto}@media (min-width:576px){.dropdown-menu-sm-left{right:auto;left:0}.dropdown-menu-sm-right{right:0;left:auto}}@media (min-width:768px){.dropdown-menu-md-left{right:auto;left:0}.dropdown-menu-md-right{right:0;left:auto}}@media (min-width:992px){.dropdown-menu-lg-left{right:auto;left:0}.dropdown-menu-lg-right{right:0;left:auto}}@media (min-width:1200px){.dropdown-menu-xl-left{right:auto;left:0}.dropdown-menu-xl-right{right:0;left:auto}}.dropup .dropdown-menu{top:auto;bottom:100%;margin-top:0;margin-bottom:.125rem}.dropup .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-menu{top:0;right:auto;left:100%;margin-top:0;margin-left:.125rem}.dropright .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}.dropright .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-toggle::after{vertical-align:0}.dropleft .dropdown-menu{top:0;right:100%;left:auto;margin-top:0;margin-right:.125rem}.dropleft .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}.dropleft .dropdown-toggle::after{display:none}.dropleft .dropdown-toggle::before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropleft .dropdown-toggle:empty::after{margin-left:0}.dropleft .dropdown-toggle::before{vertical-align:0}.dropdown-menu[x-placement^=bottom],.dropdown-menu[x-placement^=left],.dropdown-menu[x-placement^=right],.dropdown-menu[x-placement^=top]{right:auto;bottom:auto}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid #e9ecef}.dropdown-item{display:block;width:100%;padding:.25rem 1.5rem;clear:both;font-weight:400;color:#212529;text-align:inherit;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:focus,.dropdown-item:hover{color:#16181b;text-decoration:none;background-color:#e9ecef}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#007bff}.dropdown-item.disabled,.dropdown-item:disabled{color:#adb5bd;pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1.5rem;margin-bottom:0;font-size:.875rem;color:#6c757d;white-space:nowrap}.dropdown-item-text{display:block;padding:.25rem 1.5rem;color:#212529}.btn-group,.btn-group-vertical{position:relative;display:-ms-inline-flexbox;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;-ms-flex:1 1 auto;flex:1 1 auto}.btn-group-vertical>.btn:hover,.btn-group>.btn:hover{z-index:1}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus{z-index:1}.btn-toolbar{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-pack:start;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn-group:not(:first-child),.btn-group>.btn:not(:first-child){margin-left:-1px}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after,.dropright .dropdown-toggle-split::after,.dropup .dropdown-toggle-split::after{margin-left:0}.dropleft .dropdown-toggle-split::before{margin-right:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{-ms-flex-direction:column;flex-direction:column;-ms-flex-align:start;align-items:flex-start;-ms-flex-pack:center;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn-group:not(:first-child),.btn-group-vertical>.btn:not(:first-child){margin-top:-1px}.btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn:not(:first-child){border-top-left-radius:0;border-top-right-radius:0}.btn-group-toggle>.btn,.btn-group-toggle>.btn-group>.btn{margin-bottom:0}.btn-group-toggle>.btn input[type=checkbox],.btn-group-toggle>.btn input[type=radio],.btn-group-toggle>.btn-group>.btn input[type=checkbox],.btn-group-toggle>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:stretch;align-items:stretch;width:100%}.input-group>.custom-file,.input-group>.custom-select,.input-group>.form-control,.input-group>.form-control-plaintext{position:relative;-ms-flex:1 1 auto;flex:1 1 auto;width:1%;min-width:0;margin-bottom:0}.input-group>.custom-file+.custom-file,.input-group>.custom-file+.custom-select,.input-group>.custom-file+.form-control,.input-group>.custom-select+.custom-file,.input-group>.custom-select+.custom-select,.input-group>.custom-select+.form-control,.input-group>.form-control+.custom-file,.input-group>.form-control+.custom-select,.input-group>.form-control+.form-control,.input-group>.form-control-plaintext+.custom-file,.input-group>.form-control-plaintext+.custom-select,.input-group>.form-control-plaintext+.form-control{margin-left:-1px}.input-group>.custom-file .custom-file-input:focus~.custom-file-label,.input-group>.custom-select:focus,.input-group>.form-control:focus{z-index:3}.input-group>.custom-file .custom-file-input:focus{z-index:4}.input-group>.custom-select:not(:first-child),.input-group>.form-control:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.custom-file{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.input-group>.custom-file:not(:last-child) .custom-file-label,.input-group>.custom-file:not(:last-child) .custom-file-label::after{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-file:not(:first-child) .custom-file-label{border-top-left-radius:0;border-bottom-left-radius:0}.input-group:not(.has-validation)>.custom-file:not(:last-child) .custom-file-label,.input-group:not(.has-validation)>.custom-file:not(:last-child) .custom-file-label::after,.input-group:not(.has-validation)>.custom-select:not(:last-child),.input-group:not(.has-validation)>.form-control:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group.has-validation>.custom-file:nth-last-child(n+3) .custom-file-label,.input-group.has-validation>.custom-file:nth-last-child(n+3) .custom-file-label::after,.input-group.has-validation>.custom-select:nth-last-child(n+3),.input-group.has-validation>.form-control:nth-last-child(n+3){border-top-right-radius:0;border-bottom-right-radius:0}.input-group-append,.input-group-prepend{display:-ms-flexbox;display:flex}.input-group-append .btn,.input-group-prepend .btn{position:relative;z-index:2}.input-group-append .btn:focus,.input-group-prepend .btn:focus{z-index:3}.input-group-append .btn+.btn,.input-group-append .btn+.input-group-text,.input-group-append .input-group-text+.btn,.input-group-append .input-group-text+.input-group-text,.input-group-prepend .btn+.btn,.input-group-prepend .btn+.input-group-text,.input-group-prepend .input-group-text+.btn,.input-group-prepend .input-group-text+.input-group-text{margin-left:-1px}.input-group-prepend{margin-right:-1px}.input-group-append{margin-left:-1px}.input-group-text{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;padding:.375rem .75rem;margin-bottom:0;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.25rem}.input-group-text input[type=checkbox],.input-group-text input[type=radio]{margin-top:0}.input-group-lg>.custom-select,.input-group-lg>.form-control:not(textarea){height:calc(1.5em + 1rem + 2px)}.input-group-lg>.custom-select,.input-group-lg>.form-control,.input-group-lg>.input-group-append>.btn,.input-group-lg>.input-group-append>.input-group-text,.input-group-lg>.input-group-prepend>.btn,.input-group-lg>.input-group-prepend>.input-group-text{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.input-group-sm>.custom-select,.input-group-sm>.form-control:not(textarea){height:calc(1.5em + .5rem + 2px)}.input-group-sm>.custom-select,.input-group-sm>.form-control,.input-group-sm>.input-group-append>.btn,.input-group-sm>.input-group-append>.input-group-text,.input-group-sm>.input-group-prepend>.btn,.input-group-sm>.input-group-prepend>.input-group-text{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.input-group-lg>.custom-select,.input-group-sm>.custom-select{padding-right:1.75rem}.input-group.has-validation>.input-group-append:nth-last-child(n+3)>.btn,.input-group.has-validation>.input-group-append:nth-last-child(n+3)>.input-group-text,.input-group:not(.has-validation)>.input-group-append:not(:last-child)>.btn,.input-group:not(.has-validation)>.input-group-append:not(:last-child)>.input-group-text,.input-group>.input-group-append:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group>.input-group-append:last-child>.input-group-text:not(:last-child),.input-group>.input-group-prepend>.btn,.input-group>.input-group-prepend>.input-group-text{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.input-group-append>.btn,.input-group>.input-group-append>.input-group-text,.input-group>.input-group-prepend:first-child>.btn:not(:first-child),.input-group>.input-group-prepend:first-child>.input-group-text:not(:first-child),.input-group>.input-group-prepend:not(:first-child)>.btn,.input-group>.input-group-prepend:not(:first-child)>.input-group-text{border-top-left-radius:0;border-bottom-left-radius:0}.custom-control{position:relative;z-index:1;display:block;min-height:1.5rem;padding-left:1.5rem;-webkit-print-color-adjust:exact;color-adjust:exact}.custom-control-inline{display:-ms-inline-flexbox;display:inline-flex;margin-right:1rem}.custom-control-input{position:absolute;left:0;z-index:-1;width:1rem;height:1.25rem;opacity:0}.custom-control-input:checked~.custom-control-label::before{color:#fff;border-color:#007bff;background-color:#007bff}.custom-control-input:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-control-input:focus:not(:checked)~.custom-control-label::before{border-color:#80bdff}.custom-control-input:not(:disabled):active~.custom-control-label::before{color:#fff;background-color:#b3d7ff;border-color:#b3d7ff}.custom-control-input:disabled~.custom-control-label,.custom-control-input[disabled]~.custom-control-label{color:#6c757d}.custom-control-input:disabled~.custom-control-label::before,.custom-control-input[disabled]~.custom-control-label::before{background-color:#e9ecef}.custom-control-label{position:relative;margin-bottom:0;vertical-align:top}.custom-control-label::before{position:absolute;top:.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;pointer-events:none;content:"";background-color:#fff;border:#adb5bd solid 1px}.custom-control-label::after{position:absolute;top:.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;content:"";background:50%/50% 50% no-repeat}.custom-checkbox .custom-control-label::before{border-radius:.25rem}.custom-checkbox .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3e%3c/svg%3e")}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::before{border-color:#007bff;background-color:#007bff}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='4' viewBox='0 0 4 4'%3e%3cpath stroke='%23fff' d='M0 2h4'/%3e%3c/svg%3e")}.custom-checkbox .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-checkbox .custom-control-input:disabled:indeterminate~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-radio .custom-control-label::before{border-radius:50%}.custom-radio .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.custom-radio .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-switch{padding-left:2.25rem}.custom-switch .custom-control-label::before{left:-2.25rem;width:1.75rem;pointer-events:all;border-radius:.5rem}.custom-switch .custom-control-label::after{top:calc(.25rem + 2px);left:calc(-2.25rem + 2px);width:calc(1rem - 4px);height:calc(1rem - 4px);background-color:#adb5bd;border-radius:.5rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-transform .15s ease-in-out;transition:transform .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:transform .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-transform .15s ease-in-out}@media (prefers-reduced-motion:reduce){.custom-switch .custom-control-label::after{transition:none}}.custom-switch .custom-control-input:checked~.custom-control-label::after{background-color:#fff;-webkit-transform:translateX(.75rem);transform:translateX(.75rem)}.custom-switch .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-select{display:inline-block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem 1.75rem .375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;vertical-align:middle;background:#fff url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") right .75rem center/8px 10px no-repeat;border:1px solid #ced4da;border-radius:.25rem;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-select:focus{border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-select:focus::-ms-value{color:#495057;background-color:#fff}.custom-select[multiple],.custom-select[size]:not([size="1"]){height:auto;padding-right:.75rem;background-image:none}.custom-select:disabled{color:#6c757d;background-color:#e9ecef}.custom-select::-ms-expand{display:none}.custom-select:-moz-focusring{color:transparent;text-shadow:0 0 0 #495057}.custom-select-sm{height:calc(1.5em + .5rem + 2px);padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem}.custom-select-lg{height:calc(1.5em + 1rem + 2px);padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem}.custom-file{position:relative;display:inline-block;width:100%;height:calc(1.5em + .75rem + 2px);margin-bottom:0}.custom-file-input{position:relative;z-index:2;width:100%;height:calc(1.5em + .75rem + 2px);margin:0;overflow:hidden;opacity:0}.custom-file-input:focus~.custom-file-label{border-color:#80bdff;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-file-input:disabled~.custom-file-label,.custom-file-input[disabled]~.custom-file-label{background-color:#e9ecef}.custom-file-input:lang(en)~.custom-file-label::after{content:"Browse"}.custom-file-input~.custom-file-label[data-browse]::after{content:attr(data-browse)}.custom-file-label{position:absolute;top:0;right:0;left:0;z-index:1;height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem;overflow:hidden;font-weight:400;line-height:1.5;color:#495057;background-color:#fff;border:1px solid #ced4da;border-radius:.25rem}.custom-file-label::after{position:absolute;top:0;right:0;bottom:0;z-index:3;display:block;height:calc(1.5em + .75rem);padding:.375rem .75rem;line-height:1.5;color:#495057;content:"Browse";background-color:#e9ecef;border-left:inherit;border-radius:0 .25rem .25rem 0}.custom-range{width:100%;height:1.4rem;padding:0;background-color:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-range:focus{outline:0}.custom-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range:focus::-ms-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range::-moz-focus-outer{border:0}.custom-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#007bff;border:0;border-radius:1rem;-webkit-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-webkit-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-webkit-slider-thumb{-webkit-transition:none;transition:none}}.custom-range::-webkit-slider-thumb:active{background-color:#b3d7ff}.custom-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.custom-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#007bff;border:0;border-radius:1rem;-moz-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-moz-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-moz-range-thumb{-moz-transition:none;transition:none}}.custom-range::-moz-range-thumb:active{background-color:#b3d7ff}.custom-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.custom-range::-ms-thumb{width:1rem;height:1rem;margin-top:0;margin-right:.2rem;margin-left:.2rem;background-color:#007bff;border:0;border-radius:1rem;-ms-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-ms-thumb{-ms-transition:none;transition:none}}.custom-range::-ms-thumb:active{background-color:#b3d7ff}.custom-range::-ms-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:transparent;border-color:transparent;border-width:.5rem}.custom-range::-ms-fill-lower{background-color:#dee2e6;border-radius:1rem}.custom-range::-ms-fill-upper{margin-right:15px;background-color:#dee2e6;border-radius:1rem}.custom-range:disabled::-webkit-slider-thumb{background-color:#adb5bd}.custom-range:disabled::-webkit-slider-runnable-track{cursor:default}.custom-range:disabled::-moz-range-thumb{background-color:#adb5bd}.custom-range:disabled::-moz-range-track{cursor:default}.custom-range:disabled::-ms-thumb{background-color:#adb5bd}.custom-control-label::before,.custom-file-label,.custom-select{transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.custom-control-label::before,.custom-file-label,.custom-select{transition:none}}.nav{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5rem 1rem}.nav-link:focus,.nav-link:hover{text-decoration:none}.nav-link.disabled{color:#6c757d;pointer-events:none;cursor:default}.nav-tabs{border-bottom:1px solid #dee2e6}.nav-tabs .nav-link{margin-bottom:-1px;border:1px solid transparent;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{border-color:#e9ecef #e9ecef #dee2e6}.nav-tabs .nav-link.disabled{color:#6c757d;background-color:transparent;border-color:transparent}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:#495057;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{border-radius:.25rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#007bff}.nav-fill .nav-item,.nav-fill>.nav-link{-ms-flex:1 1 auto;flex:1 1 auto;text-align:center}.nav-justified .nav-item,.nav-justified>.nav-link{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;text-align:center}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between;padding:.5rem 1rem}.navbar .container,.navbar .container-fluid,.navbar .container-lg,.navbar .container-md,.navbar .container-sm,.navbar .container-xl{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between}.navbar-brand{display:inline-block;padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;line-height:inherit;white-space:nowrap}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-nav{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static;float:none}.navbar-text{display:inline-block;padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{-ms-flex-preferred-size:100%;flex-basis:100%;-ms-flex-positive:1;flex-grow:1;-ms-flex-align:center;align-items:center}.navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.25rem}.navbar-toggler:focus,.navbar-toggler:hover{text-decoration:none}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;content:"";background:50%/100% 100% no-repeat}.navbar-nav-scroll{max-height:75vh;overflow-y:auto}@media (max-width:575.98px){.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid,.navbar-expand-sm>.container-lg,.navbar-expand-sm>.container-md,.navbar-expand-sm>.container-sm,.navbar-expand-sm>.container-xl{padding-right:0;padding-left:0}}@media (min-width:576px){.navbar-expand-sm{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-sm .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid,.navbar-expand-sm>.container-lg,.navbar-expand-sm>.container-md,.navbar-expand-sm>.container-sm,.navbar-expand-sm>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-sm .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}}@media (max-width:767.98px){.navbar-expand-md>.container,.navbar-expand-md>.container-fluid,.navbar-expand-md>.container-lg,.navbar-expand-md>.container-md,.navbar-expand-md>.container-sm,.navbar-expand-md>.container-xl{padding-right:0;padding-left:0}}@media (min-width:768px){.navbar-expand-md{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-md .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md>.container,.navbar-expand-md>.container-fluid,.navbar-expand-md>.container-lg,.navbar-expand-md>.container-md,.navbar-expand-md>.container-sm,.navbar-expand-md>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}}@media (max-width:991.98px){.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid,.navbar-expand-lg>.container-lg,.navbar-expand-lg>.container-md,.navbar-expand-lg>.container-sm,.navbar-expand-lg>.container-xl{padding-right:0;padding-left:0}}@media (min-width:992px){.navbar-expand-lg{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-lg .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid,.navbar-expand-lg>.container-lg,.navbar-expand-lg>.container-md,.navbar-expand-lg>.container-sm,.navbar-expand-lg>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}}@media (max-width:1199.98px){.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid,.navbar-expand-xl>.container-lg,.navbar-expand-xl>.container-md,.navbar-expand-xl>.container-sm,.navbar-expand-xl>.container-xl{padding-right:0;padding-left:0}}@media (min-width:1200px){.navbar-expand-xl{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-xl .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid,.navbar-expand-xl>.container-lg,.navbar-expand-xl>.container-md,.navbar-expand-xl>.container-sm,.navbar-expand-xl>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}}.navbar-expand{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand>.container,.navbar-expand>.container-fluid,.navbar-expand>.container-lg,.navbar-expand>.container-md,.navbar-expand>.container-sm,.navbar-expand>.container-xl{padding-right:0;padding-left:0}.navbar-expand .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand>.container,.navbar-expand>.container-fluid,.navbar-expand>.container-lg,.navbar-expand>.container-md,.navbar-expand>.container-sm,.navbar-expand>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-light .navbar-brand{color:rgba(0,0,0,.9)}.navbar-light .navbar-brand:focus,.navbar-light .navbar-brand:hover{color:rgba(0,0,0,.9)}.navbar-light .navbar-nav .nav-link{color:rgba(0,0,0,.5)}.navbar-light .navbar-nav .nav-link:focus,.navbar-light .navbar-nav .nav-link:hover{color:rgba(0,0,0,.7)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(0,0,0,.3)}.navbar-light .navbar-nav .active>.nav-link,.navbar-light .navbar-nav .nav-link.active,.navbar-light .navbar-nav .nav-link.show,.navbar-light .navbar-nav .show>.nav-link{color:rgba(0,0,0,.9)}.navbar-light .navbar-toggler{color:rgba(0,0,0,.5);border-color:rgba(0,0,0,.1)}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%280, 0, 0, 0.5%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-light .navbar-text{color:rgba(0,0,0,.5)}.navbar-light .navbar-text a{color:rgba(0,0,0,.9)}.navbar-light .navbar-text a:focus,.navbar-light .navbar-text a:hover{color:rgba(0,0,0,.9)}.navbar-dark .navbar-brand{color:#fff}.navbar-dark .navbar-brand:focus,.navbar-dark .navbar-brand:hover{color:#fff}.navbar-dark .navbar-nav .nav-link{color:rgba(255,255,255,.5)}.navbar-dark .navbar-nav .nav-link:focus,.navbar-dark .navbar-nav .nav-link:hover{color:rgba(255,255,255,.75)}.navbar-dark .navbar-nav .nav-link.disabled{color:rgba(255,255,255,.25)}.navbar-dark .navbar-nav .active>.nav-link,.navbar-dark .navbar-nav .nav-link.active,.navbar-dark .navbar-nav .nav-link.show,.navbar-dark .navbar-nav .show>.nav-link{color:#fff}.navbar-dark .navbar-toggler{color:rgba(255,255,255,.5);border-color:rgba(255,255,255,.1)}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.5%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-dark .navbar-text{color:rgba(255,255,255,.5)}.navbar-dark .navbar-text a{color:#fff}.navbar-dark .navbar-text a:focus,.navbar-dark .navbar-text a:hover{color:#fff}.card{position:relative;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,.125);border-radius:.25rem}.card>hr{margin-right:0;margin-left:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-width:0;border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{-ms-flex:1 1 auto;flex:1 1 auto;min-height:1px;padding:1.25rem}.card-title{margin-bottom:.75rem}.card-subtitle{margin-top:-.375rem;margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:1.25rem}.card-header{padding:.75rem 1.25rem;margin-bottom:0;background-color:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.125)}.card-header:first-child{border-radius:calc(.25rem - 1px) calc(.25rem - 1px) 0 0}.card-footer{padding:.75rem 1.25rem;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.125)}.card-footer:last-child{border-radius:0 0 calc(.25rem - 1px) calc(.25rem - 1px)}.card-header-tabs{margin-right:-.625rem;margin-bottom:-.75rem;margin-left:-.625rem;border-bottom:0}.card-header-pills{margin-right:-.625rem;margin-left:-.625rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1.25rem;border-radius:calc(.25rem - 1px)}.card-img,.card-img-bottom,.card-img-top{-ms-flex-negative:0;flex-shrink:0;width:100%}.card-img,.card-img-top{border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card-img,.card-img-bottom{border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card-deck .card{margin-bottom:15px}@media (min-width:576px){.card-deck{display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap;margin-right:-15px;margin-left:-15px}.card-deck .card{-ms-flex:1 0 0%;flex:1 0 0%;margin-right:15px;margin-bottom:0;margin-left:15px}}.card-group>.card{margin-bottom:15px}@media (min-width:576px){.card-group{display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap}.card-group>.card{-ms-flex:1 0 0%;flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-header,.card-group>.card:not(:last-child) .card-img-top{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-footer,.card-group>.card:not(:last-child) .card-img-bottom{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-header,.card-group>.card:not(:first-child) .card-img-top{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-footer,.card-group>.card:not(:first-child) .card-img-bottom{border-bottom-left-radius:0}}.card-columns .card{margin-bottom:.75rem}@media (min-width:576px){.card-columns{-webkit-column-count:3;-moz-column-count:3;column-count:3;-webkit-column-gap:1.25rem;-moz-column-gap:1.25rem;column-gap:1.25rem;orphans:1;widows:1}.card-columns .card{display:inline-block;width:100%}}.accordion{overflow-anchor:none}.accordion>.card{overflow:hidden}.accordion>.card:not(:last-of-type){border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.accordion>.card:not(:first-of-type){border-top-left-radius:0;border-top-right-radius:0}.accordion>.card>.card-header{border-radius:0;margin-bottom:-1px}.breadcrumb{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:.75rem 1rem;margin-bottom:1rem;list-style:none;background-color:#e9ecef;border-radius:.25rem}.breadcrumb-item+.breadcrumb-item{padding-left:.5rem}.breadcrumb-item+.breadcrumb-item::before{float:left;padding-right:.5rem;color:#6c757d;content:"/"}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:underline}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:none}.breadcrumb-item.active{color:#6c757d}.pagination{display:-ms-flexbox;display:flex;padding-left:0;list-style:none;border-radius:.25rem}.page-link{position:relative;display:block;padding:.5rem .75rem;margin-left:-1px;line-height:1.25;color:#007bff;background-color:#fff;border:1px solid #dee2e6}.page-link:hover{z-index:2;color:#0056b3;text-decoration:none;background-color:#e9ecef;border-color:#dee2e6}.page-link:focus{z-index:3;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.page-item:first-child .page-link{margin-left:0;border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.page-item:last-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.page-item.active .page-link{z-index:3;color:#fff;background-color:#007bff;border-color:#007bff}.page-item.disabled .page-link{color:#6c757d;pointer-events:none;cursor:auto;background-color:#fff;border-color:#dee2e6}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem;line-height:1.5}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.pagination-sm .page-link{padding:.25rem .5rem;font-size:.875rem;line-height:1.5}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.badge{display:inline-block;padding:.25em .4em;font-size:75%;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.badge{transition:none}}a.badge:focus,a.badge:hover{text-decoration:none}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.badge-pill{padding-right:.6em;padding-left:.6em;border-radius:10rem}.badge-primary{color:#fff;background-color:#007bff}a.badge-primary:focus,a.badge-primary:hover{color:#fff;background-color:#0062cc}a.badge-primary.focus,a.badge-primary:focus{outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.badge-secondary{color:#fff;background-color:#6c757d}a.badge-secondary:focus,a.badge-secondary:hover{color:#fff;background-color:#545b62}a.badge-secondary.focus,a.badge-secondary:focus{outline:0;box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.badge-success{color:#fff;background-color:#28a745}a.badge-success:focus,a.badge-success:hover{color:#fff;background-color:#1e7e34}a.badge-success.focus,a.badge-success:focus{outline:0;box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.badge-info{color:#fff;background-color:#17a2b8}a.badge-info:focus,a.badge-info:hover{color:#fff;background-color:#117a8b}a.badge-info.focus,a.badge-info:focus{outline:0;box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.badge-warning{color:#212529;background-color:#ffc107}a.badge-warning:focus,a.badge-warning:hover{color:#212529;background-color:#d39e00}a.badge-warning.focus,a.badge-warning:focus{outline:0;box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.badge-danger{color:#fff;background-color:#dc3545}a.badge-danger:focus,a.badge-danger:hover{color:#fff;background-color:#bd2130}a.badge-danger.focus,a.badge-danger:focus{outline:0;box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.badge-light{color:#212529;background-color:#f8f9fa}a.badge-light:focus,a.badge-light:hover{color:#212529;background-color:#dae0e5}a.badge-light.focus,a.badge-light:focus{outline:0;box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.badge-dark{color:#fff;background-color:#343a40}a.badge-dark:focus,a.badge-dark:hover{color:#fff;background-color:#1d2124}a.badge-dark.focus,a.badge-dark:focus{outline:0;box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.jumbotron{padding:2rem 1rem;margin-bottom:2rem;background-color:#e9ecef;border-radius:.3rem}@media (min-width:576px){.jumbotron{padding:4rem 2rem}}.jumbotron-fluid{padding-right:0;padding-left:0;border-radius:0}.alert{position:relative;padding:.75rem 1.25rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:4rem}.alert-dismissible .close{position:absolute;top:0;right:0;z-index:2;padding:.75rem 1.25rem;color:inherit}.alert-primary{color:#004085;background-color:#cce5ff;border-color:#b8daff}.alert-primary hr{border-top-color:#9fcdff}.alert-primary .alert-link{color:#002752}.alert-secondary{color:#383d41;background-color:#e2e3e5;border-color:#d6d8db}.alert-secondary hr{border-top-color:#c8cbcf}.alert-secondary .alert-link{color:#202326}.alert-success{color:#155724;background-color:#d4edda;border-color:#c3e6cb}.alert-success hr{border-top-color:#b1dfbb}.alert-success .alert-link{color:#0b2e13}.alert-info{color:#0c5460;background-color:#d1ecf1;border-color:#bee5eb}.alert-info hr{border-top-color:#abdde5}.alert-info .alert-link{color:#062c33}.alert-warning{color:#856404;background-color:#fff3cd;border-color:#ffeeba}.alert-warning hr{border-top-color:#ffe8a1}.alert-warning .alert-link{color:#533f03}.alert-danger{color:#721c24;background-color:#f8d7da;border-color:#f5c6cb}.alert-danger hr{border-top-color:#f1b0b7}.alert-danger .alert-link{color:#491217}.alert-light{color:#818182;background-color:#fefefe;border-color:#fdfdfe}.alert-light hr{border-top-color:#ececf6}.alert-light .alert-link{color:#686868}.alert-dark{color:#1b1e21;background-color:#d6d8d9;border-color:#c6c8ca}.alert-dark hr{border-top-color:#b9bbbe}.alert-dark .alert-link{color:#040505}@-webkit-keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}.progress{display:-ms-flexbox;display:flex;height:1rem;overflow:hidden;line-height:0;font-size:.75rem;background-color:#e9ecef;border-radius:.25rem}.progress-bar{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center;overflow:hidden;color:#fff;text-align:center;white-space:nowrap;background-color:#007bff;transition:width .6s ease}@media (prefers-reduced-motion:reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:1rem 1rem}.progress-bar-animated{-webkit-animation:1s linear infinite progress-bar-stripes;animation:1s linear infinite progress-bar-stripes}@media (prefers-reduced-motion:reduce){.progress-bar-animated{-webkit-animation:none;animation:none}}.media{display:-ms-flexbox;display:flex;-ms-flex-align:start;align-items:flex-start}.media-body{-ms-flex:1;flex:1}.list-group{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0;border-radius:.25rem}.list-group-item-action{width:100%;color:#495057;text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{z-index:1;color:#495057;text-decoration:none;background-color:#f8f9fa}.list-group-item-action:active{color:#212529;background-color:#e9ecef}.list-group-item{position:relative;display:block;padding:.75rem 1.25rem;background-color:#fff;border:1px solid rgba(0,0,0,.125)}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:#6c757d;pointer-events:none;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#007bff;border-color:#007bff}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:-1px;border-top-width:1px}.list-group-horizontal{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}@media (min-width:576px){.list-group-horizontal-sm{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:768px){.list-group-horizontal-md{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:992px){.list-group-horizontal-lg{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:1200px){.list-group-horizontal-xl{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 1px}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-primary{color:#004085;background-color:#b8daff}.list-group-item-primary.list-group-item-action:focus,.list-group-item-primary.list-group-item-action:hover{color:#004085;background-color:#9fcdff}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#004085;border-color:#004085}.list-group-item-secondary{color:#383d41;background-color:#d6d8db}.list-group-item-secondary.list-group-item-action:focus,.list-group-item-secondary.list-group-item-action:hover{color:#383d41;background-color:#c8cbcf}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#383d41;border-color:#383d41}.list-group-item-success{color:#155724;background-color:#c3e6cb}.list-group-item-success.list-group-item-action:focus,.list-group-item-success.list-group-item-action:hover{color:#155724;background-color:#b1dfbb}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#155724;border-color:#155724}.list-group-item-info{color:#0c5460;background-color:#bee5eb}.list-group-item-info.list-group-item-action:focus,.list-group-item-info.list-group-item-action:hover{color:#0c5460;background-color:#abdde5}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#0c5460;border-color:#0c5460}.list-group-item-warning{color:#856404;background-color:#ffeeba}.list-group-item-warning.list-group-item-action:focus,.list-group-item-warning.list-group-item-action:hover{color:#856404;background-color:#ffe8a1}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#856404;border-color:#856404}.list-group-item-danger{color:#721c24;background-color:#f5c6cb}.list-group-item-danger.list-group-item-action:focus,.list-group-item-danger.list-group-item-action:hover{color:#721c24;background-color:#f1b0b7}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#721c24;border-color:#721c24}.list-group-item-light{color:#818182;background-color:#fdfdfe}.list-group-item-light.list-group-item-action:focus,.list-group-item-light.list-group-item-action:hover{color:#818182;background-color:#ececf6}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#818182;border-color:#818182}.list-group-item-dark{color:#1b1e21;background-color:#c6c8ca}.list-group-item-dark.list-group-item-action:focus,.list-group-item-dark.list-group-item-action:hover{color:#1b1e21;background-color:#b9bbbe}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#1b1e21;border-color:#1b1e21}.close{float:right;font-size:1.5rem;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.5}.close:hover{color:#000;text-decoration:none}.close:not(:disabled):not(.disabled):focus,.close:not(:disabled):not(.disabled):hover{opacity:.75}button.close{padding:0;background-color:transparent;border:0}a.close.disabled{pointer-events:none}.toast{-ms-flex-preferred-size:350px;flex-basis:350px;max-width:350px;font-size:.875rem;background-color:rgba(255,255,255,.85);background-clip:padding-box;border:1px solid rgba(0,0,0,.1);box-shadow:0 .25rem .75rem rgba(0,0,0,.1);opacity:0;border-radius:.25rem}.toast:not(:last-child){margin-bottom:.75rem}.toast.showing{opacity:1}.toast.show{display:block;opacity:1}.toast.hide{display:none}.toast-header{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;padding:.25rem .75rem;color:#6c757d;background-color:rgba(255,255,255,.85);background-clip:padding-box;border-bottom:1px solid rgba(0,0,0,.05);border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.toast-body{padding:.75rem}.modal-open{overflow:hidden}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal{position:fixed;top:0;left:0;z-index:1050;display:none;width:100%;height:100%;overflow:hidden;outline:0}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{transition:-webkit-transform .3s ease-out;transition:transform .3s ease-out;transition:transform .3s ease-out,-webkit-transform .3s ease-out;-webkit-transform:translate(0,-50px);transform:translate(0,-50px)}@media (prefers-reduced-motion:reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{-webkit-transform:none;transform:none}.modal.modal-static .modal-dialog{-webkit-transform:scale(1.02);transform:scale(1.02)}.modal-dialog-scrollable{display:-ms-flexbox;display:flex;max-height:calc(100% - 1rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 1rem);overflow:hidden}.modal-dialog-scrollable .modal-footer,.modal-dialog-scrollable .modal-header{-ms-flex-negative:0;flex-shrink:0}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;min-height:calc(100% - 1rem)}.modal-dialog-centered::before{display:block;height:calc(100vh - 1rem);height:-webkit-min-content;height:-moz-min-content;height:min-content;content:""}.modal-dialog-centered.modal-dialog-scrollable{-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center;height:100%}.modal-dialog-centered.modal-dialog-scrollable .modal-content{max-height:none}.modal-dialog-centered.modal-dialog-scrollable::before{content:none}.modal-content{position:relative;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem;outline:0}.modal-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:-ms-flexbox;display:flex;-ms-flex-align:start;align-items:flex-start;-ms-flex-pack:justify;justify-content:space-between;padding:1rem 1rem;border-bottom:1px solid #dee2e6;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.modal-header .close{padding:1rem 1rem;margin:-1rem -1rem -1rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;-ms-flex:1 1 auto;flex:1 1 auto;padding:1rem}.modal-footer{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:center;align-items:center;-ms-flex-pack:end;justify-content:flex-end;padding:.75rem;border-top:1px solid #dee2e6;border-bottom-right-radius:calc(.3rem - 1px);border-bottom-left-radius:calc(.3rem - 1px)}.modal-footer>*{margin:.25rem}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-scrollable{max-height:calc(100% - 3.5rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 3.5rem)}.modal-dialog-centered{min-height:calc(100% - 3.5rem)}.modal-dialog-centered::before{height:calc(100vh - 3.5rem);height:-webkit-min-content;height:-moz-min-content;height:min-content}.modal-sm{max-width:300px}}@media (min-width:992px){.modal-lg,.modal-xl{max-width:800px}}@media (min-width:1200px){.modal-xl{max-width:1140px}}.tooltip{position:absolute;z-index:1070;display:block;margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip .arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .arrow::before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-auto[x-placement^=top],.bs-tooltip-top{padding:.4rem 0}.bs-tooltip-auto[x-placement^=top] .arrow,.bs-tooltip-top .arrow{bottom:0}.bs-tooltip-auto[x-placement^=top] .arrow::before,.bs-tooltip-top .arrow::before{top:0;border-width:.4rem .4rem 0;border-top-color:#000}.bs-tooltip-auto[x-placement^=right],.bs-tooltip-right{padding:0 .4rem}.bs-tooltip-auto[x-placement^=right] .arrow,.bs-tooltip-right .arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=right] .arrow::before,.bs-tooltip-right .arrow::before{right:0;border-width:.4rem .4rem .4rem 0;border-right-color:#000}.bs-tooltip-auto[x-placement^=bottom],.bs-tooltip-bottom{padding:.4rem 0}.bs-tooltip-auto[x-placement^=bottom] .arrow,.bs-tooltip-bottom .arrow{top:0}.bs-tooltip-auto[x-placement^=bottom] .arrow::before,.bs-tooltip-bottom .arrow::before{bottom:0;border-width:0 .4rem .4rem;border-bottom-color:#000}.bs-tooltip-auto[x-placement^=left],.bs-tooltip-left{padding:0 .4rem}.bs-tooltip-auto[x-placement^=left] .arrow,.bs-tooltip-left .arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=left] .arrow::before,.bs-tooltip-left .arrow::before{left:0;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}.tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000;border-radius:.25rem}.popover{position:absolute;top:0;left:0;z-index:1060;display:block;max-width:276px;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem}.popover .arrow{position:absolute;display:block;width:1rem;height:.5rem;margin:0 .3rem}.popover .arrow::after,.popover .arrow::before{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}.bs-popover-auto[x-placement^=top],.bs-popover-top{margin-bottom:.5rem}.bs-popover-auto[x-placement^=top]>.arrow,.bs-popover-top>.arrow{bottom:calc(-.5rem - 1px)}.bs-popover-auto[x-placement^=top]>.arrow::before,.bs-popover-top>.arrow::before{bottom:0;border-width:.5rem .5rem 0;border-top-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=top]>.arrow::after,.bs-popover-top>.arrow::after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}.bs-popover-auto[x-placement^=right],.bs-popover-right{margin-left:.5rem}.bs-popover-auto[x-placement^=right]>.arrow,.bs-popover-right>.arrow{left:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=right]>.arrow::before,.bs-popover-right>.arrow::before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=right]>.arrow::after,.bs-popover-right>.arrow::after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}.bs-popover-auto[x-placement^=bottom],.bs-popover-bottom{margin-top:.5rem}.bs-popover-auto[x-placement^=bottom]>.arrow,.bs-popover-bottom>.arrow{top:calc(-.5rem - 1px)}.bs-popover-auto[x-placement^=bottom]>.arrow::before,.bs-popover-bottom>.arrow::before{top:0;border-width:0 .5rem .5rem .5rem;border-bottom-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=bottom]>.arrow::after,.bs-popover-bottom>.arrow::after{top:1px;border-width:0 .5rem .5rem .5rem;border-bottom-color:#fff}.bs-popover-auto[x-placement^=bottom] .popover-header::before,.bs-popover-bottom .popover-header::before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:"";border-bottom:1px solid #f7f7f7}.bs-popover-auto[x-placement^=left],.bs-popover-left{margin-right:.5rem}.bs-popover-auto[x-placement^=left]>.arrow,.bs-popover-left>.arrow{right:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=left]>.arrow::before,.bs-popover-left>.arrow::before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=left]>.arrow::after,.bs-popover-left>.arrow::after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}.popover-header{padding:.5rem .75rem;margin-bottom:0;font-size:1rem;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:.5rem .75rem;color:#212529}.carousel{position:relative}.carousel.pointer-event{-ms-touch-action:pan-y;touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner::after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;-webkit-backface-visibility:hidden;backface-visibility:hidden;transition:-webkit-transform .6s ease-in-out;transition:transform .6s ease-in-out;transition:transform .6s ease-in-out,-webkit-transform .6s ease-in-out}@media (prefers-reduced-motion:reduce){.carousel-item{transition:none}}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block}.active.carousel-item-right,.carousel-item-next:not(.carousel-item-left){-webkit-transform:translateX(100%);transform:translateX(100%)}.active.carousel-item-left,.carousel-item-prev:not(.carousel-item-right){-webkit-transform:translateX(-100%);transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;-webkit-transform:none;transform:none}.carousel-fade .carousel-item-next.carousel-item-left,.carousel-fade .carousel-item-prev.carousel-item-right,.carousel-fade .carousel-item.active{z-index:1;opacity:1}.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{z-index:0;opacity:0;transition:opacity 0s .6s}@media (prefers-reduced-motion:reduce){.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{transition:none}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;z-index:1;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:15%;padding:0;color:#fff;text-align:center;background:0 0;border:0;opacity:.5;transition:opacity .15s ease}@media (prefers-reduced-motion:reduce){.carousel-control-next,.carousel-control-prev{transition:none}}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:20px;height:20px;background:50%/100% 100% no-repeat}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath d='M5.25 0l-4 4 4 4 1.5-1.5L4.25 4l2.5-2.5L5.25 0z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath d='M2.75 0l-1.5 1.5L3.75 4l-2.5 2.5L2.75 8l4-4-4-4z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:15;display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;padding-left:0;margin-right:15%;margin-left:15%;list-style:none}.carousel-indicators li{box-sizing:content-box;-ms-flex:0 1 auto;flex:0 1 auto;width:30px;height:3px;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}@media (prefers-reduced-motion:reduce){.carousel-indicators li{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center}@-webkit-keyframes spinner-border{to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes spinner-border{to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.spinner-border{display:inline-block;width:2rem;height:2rem;vertical-align:-.125em;border:.25em solid currentColor;border-right-color:transparent;border-radius:50%;-webkit-animation:.75s linear infinite spinner-border;animation:.75s linear infinite spinner-border}.spinner-border-sm{width:1rem;height:1rem;border-width:.2em}@-webkit-keyframes spinner-grow{0%{-webkit-transform:scale(0);transform:scale(0)}50%{opacity:1;-webkit-transform:none;transform:none}}@keyframes spinner-grow{0%{-webkit-transform:scale(0);transform:scale(0)}50%{opacity:1;-webkit-transform:none;transform:none}}.spinner-grow{display:inline-block;width:2rem;height:2rem;vertical-align:-.125em;background-color:currentColor;border-radius:50%;opacity:0;-webkit-animation:.75s linear infinite spinner-grow;animation:.75s linear infinite spinner-grow}.spinner-grow-sm{width:1rem;height:1rem}@media (prefers-reduced-motion:reduce){.spinner-border,.spinner-grow{-webkit-animation-duration:1.5s;animation-duration:1.5s}}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.bg-primary{background-color:#007bff!important}a.bg-primary:focus,a.bg-primary:hover,button.bg-primary:focus,button.bg-primary:hover{background-color:#0062cc!important}.bg-secondary{background-color:#6c757d!important}a.bg-secondary:focus,a.bg-secondary:hover,button.bg-secondary:focus,button.bg-secondary:hover{background-color:#545b62!important}.bg-success{background-color:#28a745!important}a.bg-success:focus,a.bg-success:hover,button.bg-success:focus,button.bg-success:hover{background-color:#1e7e34!important}.bg-info{background-color:#17a2b8!important}a.bg-info:focus,a.bg-info:hover,button.bg-info:focus,button.bg-info:hover{background-color:#117a8b!important}.bg-warning{background-color:#ffc107!important}a.bg-warning:focus,a.bg-warning:hover,button.bg-warning:focus,button.bg-warning:hover{background-color:#d39e00!important}.bg-danger{background-color:#dc3545!important}a.bg-danger:focus,a.bg-danger:hover,button.bg-danger:focus,button.bg-danger:hover{background-color:#bd2130!important}.bg-light{background-color:#f8f9fa!important}a.bg-light:focus,a.bg-light:hover,button.bg-light:focus,button.bg-light:hover{background-color:#dae0e5!important}.bg-dark{background-color:#343a40!important}a.bg-dark:focus,a.bg-dark:hover,button.bg-dark:focus,button.bg-dark:hover{background-color:#1d2124!important}.bg-white{background-color:#fff!important}.bg-transparent{background-color:transparent!important}.border{border:1px solid #dee2e6!important}.border-top{border-top:1px solid #dee2e6!important}.border-right{border-right:1px solid #dee2e6!important}.border-bottom{border-bottom:1px solid #dee2e6!important}.border-left{border-left:1px solid #dee2e6!important}.border-0{border:0!important}.border-top-0{border-top:0!important}.border-right-0{border-right:0!important}.border-bottom-0{border-bottom:0!important}.border-left-0{border-left:0!important}.border-primary{border-color:#007bff!important}.border-secondary{border-color:#6c757d!important}.border-success{border-color:#28a745!important}.border-info{border-color:#17a2b8!important}.border-warning{border-color:#ffc107!important}.border-danger{border-color:#dc3545!important}.border-light{border-color:#f8f9fa!important}.border-dark{border-color:#343a40!important}.border-white{border-color:#fff!important}.rounded-sm{border-radius:.2rem!important}.rounded{border-radius:.25rem!important}.rounded-top{border-top-left-radius:.25rem!important;border-top-right-radius:.25rem!important}.rounded-right{border-top-right-radius:.25rem!important;border-bottom-right-radius:.25rem!important}.rounded-bottom{border-bottom-right-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-left{border-top-left-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-lg{border-radius:.3rem!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:50rem!important}.rounded-0{border-radius:0!important}.clearfix::after{display:block;clear:both;content:""}.d-none{display:none!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:-ms-flexbox!important;display:flex!important}.d-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}@media (min-width:576px){.d-sm-none{display:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:-ms-flexbox!important;display:flex!important}.d-sm-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:768px){.d-md-none{display:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:-ms-flexbox!important;display:flex!important}.d-md-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:992px){.d-lg-none{display:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:-ms-flexbox!important;display:flex!important}.d-lg-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:1200px){.d-xl-none{display:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:-ms-flexbox!important;display:flex!important}.d-xl-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media print{.d-print-none{display:none!important}.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:-ms-flexbox!important;display:flex!important}.d-print-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}.embed-responsive{position:relative;display:block;width:100%;padding:0;overflow:hidden}.embed-responsive::before{display:block;content:""}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-21by9::before{padding-top:42.857143%}.embed-responsive-16by9::before{padding-top:56.25%}.embed-responsive-4by3::before{padding-top:75%}.embed-responsive-1by1::before{padding-top:100%}.flex-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-center{-ms-flex-align:center!important;align-items:center!important}.align-items-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}@media (min-width:576px){.flex-sm-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-sm-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-sm-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-sm-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-sm-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-sm-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-sm-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-sm-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-sm-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-sm-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-sm-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-sm-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-sm-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-sm-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-sm-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-sm-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-sm-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-sm-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-sm-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-sm-center{-ms-flex-align:center!important;align-items:center!important}.align-items-sm-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-sm-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-sm-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-sm-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-sm-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-sm-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-sm-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-sm-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-sm-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-sm-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-sm-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-sm-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-sm-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-sm-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:768px){.flex-md-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-md-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-md-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-md-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-md-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-md-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-md-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-md-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-md-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-md-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-md-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-md-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-md-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-md-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-md-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-md-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-md-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-md-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-md-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-md-center{-ms-flex-align:center!important;align-items:center!important}.align-items-md-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-md-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-md-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-md-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-md-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-md-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-md-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-md-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-md-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-md-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-md-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-md-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-md-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-md-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:992px){.flex-lg-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-lg-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-lg-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-lg-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-lg-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-lg-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-lg-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-lg-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-lg-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-lg-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-lg-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-lg-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-lg-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-lg-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-lg-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-lg-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-lg-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-lg-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-lg-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-lg-center{-ms-flex-align:center!important;align-items:center!important}.align-items-lg-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-lg-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-lg-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-lg-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-lg-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-lg-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-lg-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-lg-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-lg-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-lg-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-lg-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-lg-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-lg-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-lg-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:1200px){.flex-xl-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-xl-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-xl-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-xl-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-xl-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-xl-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-xl-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-xl-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-xl-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-xl-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-xl-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-xl-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-xl-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-xl-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-xl-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-xl-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-xl-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-xl-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-xl-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-xl-center{-ms-flex-align:center!important;align-items:center!important}.align-items-xl-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-xl-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-xl-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-xl-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-xl-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-xl-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-xl-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-xl-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-xl-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-xl-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-xl-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-xl-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-xl-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-xl-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}.float-left{float:left!important}.float-right{float:right!important}.float-none{float:none!important}@media (min-width:576px){.float-sm-left{float:left!important}.float-sm-right{float:right!important}.float-sm-none{float:none!important}}@media (min-width:768px){.float-md-left{float:left!important}.float-md-right{float:right!important}.float-md-none{float:none!important}}@media (min-width:992px){.float-lg-left{float:left!important}.float-lg-right{float:right!important}.float-lg-none{float:none!important}}@media (min-width:1200px){.float-xl-left{float:left!important}.float-xl-right{float:right!important}.float-xl-none{float:none!important}}.user-select-all{-webkit-user-select:all!important;-moz-user-select:all!important;user-select:all!important}.user-select-auto{-webkit-user-select:auto!important;-moz-user-select:auto!important;-ms-user-select:auto!important;user-select:auto!important}.user-select-none{-webkit-user-select:none!important;-moz-user-select:none!important;-ms-user-select:none!important;user-select:none!important}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:-webkit-sticky!important;position:sticky!important}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}@supports ((position:-webkit-sticky) or (position:sticky)){.sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;overflow:visible;clip:auto;white-space:normal}.shadow-sm{box-shadow:0 .125rem .25rem rgba(0,0,0,.075)!important}.shadow{box-shadow:0 .5rem 1rem rgba(0,0,0,.15)!important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,.175)!important}.shadow-none{box-shadow:none!important}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mw-100{max-width:100%!important}.mh-100{max-height:100%!important}.min-vw-100{min-width:100vw!important}.min-vh-100{min-height:100vh!important}.vw-100{width:100vw!important}.vh-100{height:100vh!important}.m-0{margin:0!important}.mt-0,.my-0{margin-top:0!important}.mr-0,.mx-0{margin-right:0!important}.mb-0,.my-0{margin-bottom:0!important}.ml-0,.mx-0{margin-left:0!important}.m-1{margin:.25rem!important}.mt-1,.my-1{margin-top:.25rem!important}.mr-1,.mx-1{margin-right:.25rem!important}.mb-1,.my-1{margin-bottom:.25rem!important}.ml-1,.mx-1{margin-left:.25rem!important}.m-2{margin:.5rem!important}.mt-2,.my-2{margin-top:.5rem!important}.mr-2,.mx-2{margin-right:.5rem!important}.mb-2,.my-2{margin-bottom:.5rem!important}.ml-2,.mx-2{margin-left:.5rem!important}.m-3{margin:1rem!important}.mt-3,.my-3{margin-top:1rem!important}.mr-3,.mx-3{margin-right:1rem!important}.mb-3,.my-3{margin-bottom:1rem!important}.ml-3,.mx-3{margin-left:1rem!important}.m-4{margin:1.5rem!important}.mt-4,.my-4{margin-top:1.5rem!important}.mr-4,.mx-4{margin-right:1.5rem!important}.mb-4,.my-4{margin-bottom:1.5rem!important}.ml-4,.mx-4{margin-left:1.5rem!important}.m-5{margin:3rem!important}.mt-5,.my-5{margin-top:3rem!important}.mr-5,.mx-5{margin-right:3rem!important}.mb-5,.my-5{margin-bottom:3rem!important}.ml-5,.mx-5{margin-left:3rem!important}.p-0{padding:0!important}.pt-0,.py-0{padding-top:0!important}.pr-0,.px-0{padding-right:0!important}.pb-0,.py-0{padding-bottom:0!important}.pl-0,.px-0{padding-left:0!important}.p-1{padding:.25rem!important}.pt-1,.py-1{padding-top:.25rem!important}.pr-1,.px-1{padding-right:.25rem!important}.pb-1,.py-1{padding-bottom:.25rem!important}.pl-1,.px-1{padding-left:.25rem!important}.p-2{padding:.5rem!important}.pt-2,.py-2{padding-top:.5rem!important}.pr-2,.px-2{padding-right:.5rem!important}.pb-2,.py-2{padding-bottom:.5rem!important}.pl-2,.px-2{padding-left:.5rem!important}.p-3{padding:1rem!important}.pt-3,.py-3{padding-top:1rem!important}.pr-3,.px-3{padding-right:1rem!important}.pb-3,.py-3{padding-bottom:1rem!important}.pl-3,.px-3{padding-left:1rem!important}.p-4{padding:1.5rem!important}.pt-4,.py-4{padding-top:1.5rem!important}.pr-4,.px-4{padding-right:1.5rem!important}.pb-4,.py-4{padding-bottom:1.5rem!important}.pl-4,.px-4{padding-left:1.5rem!important}.p-5{padding:3rem!important}.pt-5,.py-5{padding-top:3rem!important}.pr-5,.px-5{padding-right:3rem!important}.pb-5,.py-5{padding-bottom:3rem!important}.pl-5,.px-5{padding-left:3rem!important}.m-n1{margin:-.25rem!important}.mt-n1,.my-n1{margin-top:-.25rem!important}.mr-n1,.mx-n1{margin-right:-.25rem!important}.mb-n1,.my-n1{margin-bottom:-.25rem!important}.ml-n1,.mx-n1{margin-left:-.25rem!important}.m-n2{margin:-.5rem!important}.mt-n2,.my-n2{margin-top:-.5rem!important}.mr-n2,.mx-n2{margin-right:-.5rem!important}.mb-n2,.my-n2{margin-bottom:-.5rem!important}.ml-n2,.mx-n2{margin-left:-.5rem!important}.m-n3{margin:-1rem!important}.mt-n3,.my-n3{margin-top:-1rem!important}.mr-n3,.mx-n3{margin-right:-1rem!important}.mb-n3,.my-n3{margin-bottom:-1rem!important}.ml-n3,.mx-n3{margin-left:-1rem!important}.m-n4{margin:-1.5rem!important}.mt-n4,.my-n4{margin-top:-1.5rem!important}.mr-n4,.mx-n4{margin-right:-1.5rem!important}.mb-n4,.my-n4{margin-bottom:-1.5rem!important}.ml-n4,.mx-n4{margin-left:-1.5rem!important}.m-n5{margin:-3rem!important}.mt-n5,.my-n5{margin-top:-3rem!important}.mr-n5,.mx-n5{margin-right:-3rem!important}.mb-n5,.my-n5{margin-bottom:-3rem!important}.ml-n5,.mx-n5{margin-left:-3rem!important}.m-auto{margin:auto!important}.mt-auto,.my-auto{margin-top:auto!important}.mr-auto,.mx-auto{margin-right:auto!important}.mb-auto,.my-auto{margin-bottom:auto!important}.ml-auto,.mx-auto{margin-left:auto!important}@media (min-width:576px){.m-sm-0{margin:0!important}.mt-sm-0,.my-sm-0{margin-top:0!important}.mr-sm-0,.mx-sm-0{margin-right:0!important}.mb-sm-0,.my-sm-0{margin-bottom:0!important}.ml-sm-0,.mx-sm-0{margin-left:0!important}.m-sm-1{margin:.25rem!important}.mt-sm-1,.my-sm-1{margin-top:.25rem!important}.mr-sm-1,.mx-sm-1{margin-right:.25rem!important}.mb-sm-1,.my-sm-1{margin-bottom:.25rem!important}.ml-sm-1,.mx-sm-1{margin-left:.25rem!important}.m-sm-2{margin:.5rem!important}.mt-sm-2,.my-sm-2{margin-top:.5rem!important}.mr-sm-2,.mx-sm-2{margin-right:.5rem!important}.mb-sm-2,.my-sm-2{margin-bottom:.5rem!important}.ml-sm-2,.mx-sm-2{margin-left:.5rem!important}.m-sm-3{margin:1rem!important}.mt-sm-3,.my-sm-3{margin-top:1rem!important}.mr-sm-3,.mx-sm-3{margin-right:1rem!important}.mb-sm-3,.my-sm-3{margin-bottom:1rem!important}.ml-sm-3,.mx-sm-3{margin-left:1rem!important}.m-sm-4{margin:1.5rem!important}.mt-sm-4,.my-sm-4{margin-top:1.5rem!important}.mr-sm-4,.mx-sm-4{margin-right:1.5rem!important}.mb-sm-4,.my-sm-4{margin-bottom:1.5rem!important}.ml-sm-4,.mx-sm-4{margin-left:1.5rem!important}.m-sm-5{margin:3rem!important}.mt-sm-5,.my-sm-5{margin-top:3rem!important}.mr-sm-5,.mx-sm-5{margin-right:3rem!important}.mb-sm-5,.my-sm-5{margin-bottom:3rem!important}.ml-sm-5,.mx-sm-5{margin-left:3rem!important}.p-sm-0{padding:0!important}.pt-sm-0,.py-sm-0{padding-top:0!important}.pr-sm-0,.px-sm-0{padding-right:0!important}.pb-sm-0,.py-sm-0{padding-bottom:0!important}.pl-sm-0,.px-sm-0{padding-left:0!important}.p-sm-1{padding:.25rem!important}.pt-sm-1,.py-sm-1{padding-top:.25rem!important}.pr-sm-1,.px-sm-1{padding-right:.25rem!important}.pb-sm-1,.py-sm-1{padding-bottom:.25rem!important}.pl-sm-1,.px-sm-1{padding-left:.25rem!important}.p-sm-2{padding:.5rem!important}.pt-sm-2,.py-sm-2{padding-top:.5rem!important}.pr-sm-2,.px-sm-2{padding-right:.5rem!important}.pb-sm-2,.py-sm-2{padding-bottom:.5rem!important}.pl-sm-2,.px-sm-2{padding-left:.5rem!important}.p-sm-3{padding:1rem!important}.pt-sm-3,.py-sm-3{padding-top:1rem!important}.pr-sm-3,.px-sm-3{padding-right:1rem!important}.pb-sm-3,.py-sm-3{padding-bottom:1rem!important}.pl-sm-3,.px-sm-3{padding-left:1rem!important}.p-sm-4{padding:1.5rem!important}.pt-sm-4,.py-sm-4{padding-top:1.5rem!important}.pr-sm-4,.px-sm-4{padding-right:1.5rem!important}.pb-sm-4,.py-sm-4{padding-bottom:1.5rem!important}.pl-sm-4,.px-sm-4{padding-left:1.5rem!important}.p-sm-5{padding:3rem!important}.pt-sm-5,.py-sm-5{padding-top:3rem!important}.pr-sm-5,.px-sm-5{padding-right:3rem!important}.pb-sm-5,.py-sm-5{padding-bottom:3rem!important}.pl-sm-5,.px-sm-5{padding-left:3rem!important}.m-sm-n1{margin:-.25rem!important}.mt-sm-n1,.my-sm-n1{margin-top:-.25rem!important}.mr-sm-n1,.mx-sm-n1{margin-right:-.25rem!important}.mb-sm-n1,.my-sm-n1{margin-bottom:-.25rem!important}.ml-sm-n1,.mx-sm-n1{margin-left:-.25rem!important}.m-sm-n2{margin:-.5rem!important}.mt-sm-n2,.my-sm-n2{margin-top:-.5rem!important}.mr-sm-n2,.mx-sm-n2{margin-right:-.5rem!important}.mb-sm-n2,.my-sm-n2{margin-bottom:-.5rem!important}.ml-sm-n2,.mx-sm-n2{margin-left:-.5rem!important}.m-sm-n3{margin:-1rem!important}.mt-sm-n3,.my-sm-n3{margin-top:-1rem!important}.mr-sm-n3,.mx-sm-n3{margin-right:-1rem!important}.mb-sm-n3,.my-sm-n3{margin-bottom:-1rem!important}.ml-sm-n3,.mx-sm-n3{margin-left:-1rem!important}.m-sm-n4{margin:-1.5rem!important}.mt-sm-n4,.my-sm-n4{margin-top:-1.5rem!important}.mr-sm-n4,.mx-sm-n4{margin-right:-1.5rem!important}.mb-sm-n4,.my-sm-n4{margin-bottom:-1.5rem!important}.ml-sm-n4,.mx-sm-n4{margin-left:-1.5rem!important}.m-sm-n5{margin:-3rem!important}.mt-sm-n5,.my-sm-n5{margin-top:-3rem!important}.mr-sm-n5,.mx-sm-n5{margin-right:-3rem!important}.mb-sm-n5,.my-sm-n5{margin-bottom:-3rem!important}.ml-sm-n5,.mx-sm-n5{margin-left:-3rem!important}.m-sm-auto{margin:auto!important}.mt-sm-auto,.my-sm-auto{margin-top:auto!important}.mr-sm-auto,.mx-sm-auto{margin-right:auto!important}.mb-sm-auto,.my-sm-auto{margin-bottom:auto!important}.ml-sm-auto,.mx-sm-auto{margin-left:auto!important}}@media (min-width:768px){.m-md-0{margin:0!important}.mt-md-0,.my-md-0{margin-top:0!important}.mr-md-0,.mx-md-0{margin-right:0!important}.mb-md-0,.my-md-0{margin-bottom:0!important}.ml-md-0,.mx-md-0{margin-left:0!important}.m-md-1{margin:.25rem!important}.mt-md-1,.my-md-1{margin-top:.25rem!important}.mr-md-1,.mx-md-1{margin-right:.25rem!important}.mb-md-1,.my-md-1{margin-bottom:.25rem!important}.ml-md-1,.mx-md-1{margin-left:.25rem!important}.m-md-2{margin:.5rem!important}.mt-md-2,.my-md-2{margin-top:.5rem!important}.mr-md-2,.mx-md-2{margin-right:.5rem!important}.mb-md-2,.my-md-2{margin-bottom:.5rem!important}.ml-md-2,.mx-md-2{margin-left:.5rem!important}.m-md-3{margin:1rem!important}.mt-md-3,.my-md-3{margin-top:1rem!important}.mr-md-3,.mx-md-3{margin-right:1rem!important}.mb-md-3,.my-md-3{margin-bottom:1rem!important}.ml-md-3,.mx-md-3{margin-left:1rem!important}.m-md-4{margin:1.5rem!important}.mt-md-4,.my-md-4{margin-top:1.5rem!important}.mr-md-4,.mx-md-4{margin-right:1.5rem!important}.mb-md-4,.my-md-4{margin-bottom:1.5rem!important}.ml-md-4,.mx-md-4{margin-left:1.5rem!important}.m-md-5{margin:3rem!important}.mt-md-5,.my-md-5{margin-top:3rem!important}.mr-md-5,.mx-md-5{margin-right:3rem!important}.mb-md-5,.my-md-5{margin-bottom:3rem!important}.ml-md-5,.mx-md-5{margin-left:3rem!important}.p-md-0{padding:0!important}.pt-md-0,.py-md-0{padding-top:0!important}.pr-md-0,.px-md-0{padding-right:0!important}.pb-md-0,.py-md-0{padding-bottom:0!important}.pl-md-0,.px-md-0{padding-left:0!important}.p-md-1{padding:.25rem!important}.pt-md-1,.py-md-1{padding-top:.25rem!important}.pr-md-1,.px-md-1{padding-right:.25rem!important}.pb-md-1,.py-md-1{padding-bottom:.25rem!important}.pl-md-1,.px-md-1{padding-left:.25rem!important}.p-md-2{padding:.5rem!important}.pt-md-2,.py-md-2{padding-top:.5rem!important}.pr-md-2,.px-md-2{padding-right:.5rem!important}.pb-md-2,.py-md-2{padding-bottom:.5rem!important}.pl-md-2,.px-md-2{padding-left:.5rem!important}.p-md-3{padding:1rem!important}.pt-md-3,.py-md-3{padding-top:1rem!important}.pr-md-3,.px-md-3{padding-right:1rem!important}.pb-md-3,.py-md-3{padding-bottom:1rem!important}.pl-md-3,.px-md-3{padding-left:1rem!important}.p-md-4{padding:1.5rem!important}.pt-md-4,.py-md-4{padding-top:1.5rem!important}.pr-md-4,.px-md-4{padding-right:1.5rem!important}.pb-md-4,.py-md-4{padding-bottom:1.5rem!important}.pl-md-4,.px-md-4{padding-left:1.5rem!important}.p-md-5{padding:3rem!important}.pt-md-5,.py-md-5{padding-top:3rem!important}.pr-md-5,.px-md-5{padding-right:3rem!important}.pb-md-5,.py-md-5{padding-bottom:3rem!important}.pl-md-5,.px-md-5{padding-left:3rem!important}.m-md-n1{margin:-.25rem!important}.mt-md-n1,.my-md-n1{margin-top:-.25rem!important}.mr-md-n1,.mx-md-n1{margin-right:-.25rem!important}.mb-md-n1,.my-md-n1{margin-bottom:-.25rem!important}.ml-md-n1,.mx-md-n1{margin-left:-.25rem!important}.m-md-n2{margin:-.5rem!important}.mt-md-n2,.my-md-n2{margin-top:-.5rem!important}.mr-md-n2,.mx-md-n2{margin-right:-.5rem!important}.mb-md-n2,.my-md-n2{margin-bottom:-.5rem!important}.ml-md-n2,.mx-md-n2{margin-left:-.5rem!important}.m-md-n3{margin:-1rem!important}.mt-md-n3,.my-md-n3{margin-top:-1rem!important}.mr-md-n3,.mx-md-n3{margin-right:-1rem!important}.mb-md-n3,.my-md-n3{margin-bottom:-1rem!important}.ml-md-n3,.mx-md-n3{margin-left:-1rem!important}.m-md-n4{margin:-1.5rem!important}.mt-md-n4,.my-md-n4{margin-top:-1.5rem!important}.mr-md-n4,.mx-md-n4{margin-right:-1.5rem!important}.mb-md-n4,.my-md-n4{margin-bottom:-1.5rem!important}.ml-md-n4,.mx-md-n4{margin-left:-1.5rem!important}.m-md-n5{margin:-3rem!important}.mt-md-n5,.my-md-n5{margin-top:-3rem!important}.mr-md-n5,.mx-md-n5{margin-right:-3rem!important}.mb-md-n5,.my-md-n5{margin-bottom:-3rem!important}.ml-md-n5,.mx-md-n5{margin-left:-3rem!important}.m-md-auto{margin:auto!important}.mt-md-auto,.my-md-auto{margin-top:auto!important}.mr-md-auto,.mx-md-auto{margin-right:auto!important}.mb-md-auto,.my-md-auto{margin-bottom:auto!important}.ml-md-auto,.mx-md-auto{margin-left:auto!important}}@media (min-width:992px){.m-lg-0{margin:0!important}.mt-lg-0,.my-lg-0{margin-top:0!important}.mr-lg-0,.mx-lg-0{margin-right:0!important}.mb-lg-0,.my-lg-0{margin-bottom:0!important}.ml-lg-0,.mx-lg-0{margin-left:0!important}.m-lg-1{margin:.25rem!important}.mt-lg-1,.my-lg-1{margin-top:.25rem!important}.mr-lg-1,.mx-lg-1{margin-right:.25rem!important}.mb-lg-1,.my-lg-1{margin-bottom:.25rem!important}.ml-lg-1,.mx-lg-1{margin-left:.25rem!important}.m-lg-2{margin:.5rem!important}.mt-lg-2,.my-lg-2{margin-top:.5rem!important}.mr-lg-2,.mx-lg-2{margin-right:.5rem!important}.mb-lg-2,.my-lg-2{margin-bottom:.5rem!important}.ml-lg-2,.mx-lg-2{margin-left:.5rem!important}.m-lg-3{margin:1rem!important}.mt-lg-3,.my-lg-3{margin-top:1rem!important}.mr-lg-3,.mx-lg-3{margin-right:1rem!important}.mb-lg-3,.my-lg-3{margin-bottom:1rem!important}.ml-lg-3,.mx-lg-3{margin-left:1rem!important}.m-lg-4{margin:1.5rem!important}.mt-lg-4,.my-lg-4{margin-top:1.5rem!important}.mr-lg-4,.mx-lg-4{margin-right:1.5rem!important}.mb-lg-4,.my-lg-4{margin-bottom:1.5rem!important}.ml-lg-4,.mx-lg-4{margin-left:1.5rem!important}.m-lg-5{margin:3rem!important}.mt-lg-5,.my-lg-5{margin-top:3rem!important}.mr-lg-5,.mx-lg-5{margin-right:3rem!important}.mb-lg-5,.my-lg-5{margin-bottom:3rem!important}.ml-lg-5,.mx-lg-5{margin-left:3rem!important}.p-lg-0{padding:0!important}.pt-lg-0,.py-lg-0{padding-top:0!important}.pr-lg-0,.px-lg-0{padding-right:0!important}.pb-lg-0,.py-lg-0{padding-bottom:0!important}.pl-lg-0,.px-lg-0{padding-left:0!important}.p-lg-1{padding:.25rem!important}.pt-lg-1,.py-lg-1{padding-top:.25rem!important}.pr-lg-1,.px-lg-1{padding-right:.25rem!important}.pb-lg-1,.py-lg-1{padding-bottom:.25rem!important}.pl-lg-1,.px-lg-1{padding-left:.25rem!important}.p-lg-2{padding:.5rem!important}.pt-lg-2,.py-lg-2{padding-top:.5rem!important}.pr-lg-2,.px-lg-2{padding-right:.5rem!important}.pb-lg-2,.py-lg-2{padding-bottom:.5rem!important}.pl-lg-2,.px-lg-2{padding-left:.5rem!important}.p-lg-3{padding:1rem!important}.pt-lg-3,.py-lg-3{padding-top:1rem!important}.pr-lg-3,.px-lg-3{padding-right:1rem!important}.pb-lg-3,.py-lg-3{padding-bottom:1rem!important}.pl-lg-3,.px-lg-3{padding-left:1rem!important}.p-lg-4{padding:1.5rem!important}.pt-lg-4,.py-lg-4{padding-top:1.5rem!important}.pr-lg-4,.px-lg-4{padding-right:1.5rem!important}.pb-lg-4,.py-lg-4{padding-bottom:1.5rem!important}.pl-lg-4,.px-lg-4{padding-left:1.5rem!important}.p-lg-5{padding:3rem!important}.pt-lg-5,.py-lg-5{padding-top:3rem!important}.pr-lg-5,.px-lg-5{padding-right:3rem!important}.pb-lg-5,.py-lg-5{padding-bottom:3rem!important}.pl-lg-5,.px-lg-5{padding-left:3rem!important}.m-lg-n1{margin:-.25rem!important}.mt-lg-n1,.my-lg-n1{margin-top:-.25rem!important}.mr-lg-n1,.mx-lg-n1{margin-right:-.25rem!important}.mb-lg-n1,.my-lg-n1{margin-bottom:-.25rem!important}.ml-lg-n1,.mx-lg-n1{margin-left:-.25rem!important}.m-lg-n2{margin:-.5rem!important}.mt-lg-n2,.my-lg-n2{margin-top:-.5rem!important}.mr-lg-n2,.mx-lg-n2{margin-right:-.5rem!important}.mb-lg-n2,.my-lg-n2{margin-bottom:-.5rem!important}.ml-lg-n2,.mx-lg-n2{margin-left:-.5rem!important}.m-lg-n3{margin:-1rem!important}.mt-lg-n3,.my-lg-n3{margin-top:-1rem!important}.mr-lg-n3,.mx-lg-n3{margin-right:-1rem!important}.mb-lg-n3,.my-lg-n3{margin-bottom:-1rem!important}.ml-lg-n3,.mx-lg-n3{margin-left:-1rem!important}.m-lg-n4{margin:-1.5rem!important}.mt-lg-n4,.my-lg-n4{margin-top:-1.5rem!important}.mr-lg-n4,.mx-lg-n4{margin-right:-1.5rem!important}.mb-lg-n4,.my-lg-n4{margin-bottom:-1.5rem!important}.ml-lg-n4,.mx-lg-n4{margin-left:-1.5rem!important}.m-lg-n5{margin:-3rem!important}.mt-lg-n5,.my-lg-n5{margin-top:-3rem!important}.mr-lg-n5,.mx-lg-n5{margin-right:-3rem!important}.mb-lg-n5,.my-lg-n5{margin-bottom:-3rem!important}.ml-lg-n5,.mx-lg-n5{margin-left:-3rem!important}.m-lg-auto{margin:auto!important}.mt-lg-auto,.my-lg-auto{margin-top:auto!important}.mr-lg-auto,.mx-lg-auto{margin-right:auto!important}.mb-lg-auto,.my-lg-auto{margin-bottom:auto!important}.ml-lg-auto,.mx-lg-auto{margin-left:auto!important}}@media (min-width:1200px){.m-xl-0{margin:0!important}.mt-xl-0,.my-xl-0{margin-top:0!important}.mr-xl-0,.mx-xl-0{margin-right:0!important}.mb-xl-0,.my-xl-0{margin-bottom:0!important}.ml-xl-0,.mx-xl-0{margin-left:0!important}.m-xl-1{margin:.25rem!important}.mt-xl-1,.my-xl-1{margin-top:.25rem!important}.mr-xl-1,.mx-xl-1{margin-right:.25rem!important}.mb-xl-1,.my-xl-1{margin-bottom:.25rem!important}.ml-xl-1,.mx-xl-1{margin-left:.25rem!important}.m-xl-2{margin:.5rem!important}.mt-xl-2,.my-xl-2{margin-top:.5rem!important}.mr-xl-2,.mx-xl-2{margin-right:.5rem!important}.mb-xl-2,.my-xl-2{margin-bottom:.5rem!important}.ml-xl-2,.mx-xl-2{margin-left:.5rem!important}.m-xl-3{margin:1rem!important}.mt-xl-3,.my-xl-3{margin-top:1rem!important}.mr-xl-3,.mx-xl-3{margin-right:1rem!important}.mb-xl-3,.my-xl-3{margin-bottom:1rem!important}.ml-xl-3,.mx-xl-3{margin-left:1rem!important}.m-xl-4{margin:1.5rem!important}.mt-xl-4,.my-xl-4{margin-top:1.5rem!important}.mr-xl-4,.mx-xl-4{margin-right:1.5rem!important}.mb-xl-4,.my-xl-4{margin-bottom:1.5rem!important}.ml-xl-4,.mx-xl-4{margin-left:1.5rem!important}.m-xl-5{margin:3rem!important}.mt-xl-5,.my-xl-5{margin-top:3rem!important}.mr-xl-5,.mx-xl-5{margin-right:3rem!important}.mb-xl-5,.my-xl-5{margin-bottom:3rem!important}.ml-xl-5,.mx-xl-5{margin-left:3rem!important}.p-xl-0{padding:0!important}.pt-xl-0,.py-xl-0{padding-top:0!important}.pr-xl-0,.px-xl-0{padding-right:0!important}.pb-xl-0,.py-xl-0{padding-bottom:0!important}.pl-xl-0,.px-xl-0{padding-left:0!important}.p-xl-1{padding:.25rem!important}.pt-xl-1,.py-xl-1{padding-top:.25rem!important}.pr-xl-1,.px-xl-1{padding-right:.25rem!important}.pb-xl-1,.py-xl-1{padding-bottom:.25rem!important}.pl-xl-1,.px-xl-1{padding-left:.25rem!important}.p-xl-2{padding:.5rem!important}.pt-xl-2,.py-xl-2{padding-top:.5rem!important}.pr-xl-2,.px-xl-2{padding-right:.5rem!important}.pb-xl-2,.py-xl-2{padding-bottom:.5rem!important}.pl-xl-2,.px-xl-2{padding-left:.5rem!important}.p-xl-3{padding:1rem!important}.pt-xl-3,.py-xl-3{padding-top:1rem!important}.pr-xl-3,.px-xl-3{padding-right:1rem!important}.pb-xl-3,.py-xl-3{padding-bottom:1rem!important}.pl-xl-3,.px-xl-3{padding-left:1rem!important}.p-xl-4{padding:1.5rem!important}.pt-xl-4,.py-xl-4{padding-top:1.5rem!important}.pr-xl-4,.px-xl-4{padding-right:1.5rem!important}.pb-xl-4,.py-xl-4{padding-bottom:1.5rem!important}.pl-xl-4,.px-xl-4{padding-left:1.5rem!important}.p-xl-5{padding:3rem!important}.pt-xl-5,.py-xl-5{padding-top:3rem!important}.pr-xl-5,.px-xl-5{padding-right:3rem!important}.pb-xl-5,.py-xl-5{padding-bottom:3rem!important}.pl-xl-5,.px-xl-5{padding-left:3rem!important}.m-xl-n1{margin:-.25rem!important}.mt-xl-n1,.my-xl-n1{margin-top:-.25rem!important}.mr-xl-n1,.mx-xl-n1{margin-right:-.25rem!important}.mb-xl-n1,.my-xl-n1{margin-bottom:-.25rem!important}.ml-xl-n1,.mx-xl-n1{margin-left:-.25rem!important}.m-xl-n2{margin:-.5rem!important}.mt-xl-n2,.my-xl-n2{margin-top:-.5rem!important}.mr-xl-n2,.mx-xl-n2{margin-right:-.5rem!important}.mb-xl-n2,.my-xl-n2{margin-bottom:-.5rem!important}.ml-xl-n2,.mx-xl-n2{margin-left:-.5rem!important}.m-xl-n3{margin:-1rem!important}.mt-xl-n3,.my-xl-n3{margin-top:-1rem!important}.mr-xl-n3,.mx-xl-n3{margin-right:-1rem!important}.mb-xl-n3,.my-xl-n3{margin-bottom:-1rem!important}.ml-xl-n3,.mx-xl-n3{margin-left:-1rem!important}.m-xl-n4{margin:-1.5rem!important}.mt-xl-n4,.my-xl-n4{margin-top:-1.5rem!important}.mr-xl-n4,.mx-xl-n4{margin-right:-1.5rem!important}.mb-xl-n4,.my-xl-n4{margin-bottom:-1.5rem!important}.ml-xl-n4,.mx-xl-n4{margin-left:-1.5rem!important}.m-xl-n5{margin:-3rem!important}.mt-xl-n5,.my-xl-n5{margin-top:-3rem!important}.mr-xl-n5,.mx-xl-n5{margin-right:-3rem!important}.mb-xl-n5,.my-xl-n5{margin-bottom:-3rem!important}.ml-xl-n5,.mx-xl-n5{margin-left:-3rem!important}.m-xl-auto{margin:auto!important}.mt-xl-auto,.my-xl-auto{margin-top:auto!important}.mr-xl-auto,.mx-xl-auto{margin-right:auto!important}.mb-xl-auto,.my-xl-auto{margin-bottom:auto!important}.ml-xl-auto,.mx-xl-auto{margin-left:auto!important}}.stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;pointer-events:auto;content:"";background-color:rgba(0,0,0,0)}.text-monospace{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace!important}.text-justify{text-align:justify!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-left{text-align:left!important}.text-right{text-align:right!important}.text-center{text-align:center!important}@media (min-width:576px){.text-sm-left{text-align:left!important}.text-sm-right{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.text-md-left{text-align:left!important}.text-md-right{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.text-lg-left{text-align:left!important}.text-lg-right{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.text-xl-left{text-align:left!important}.text-xl-right{text-align:right!important}.text-xl-center{text-align:center!important}}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.font-weight-light{font-weight:300!important}.font-weight-lighter{font-weight:lighter!important}.font-weight-normal{font-weight:400!important}.font-weight-bold{font-weight:700!important}.font-weight-bolder{font-weight:bolder!important}.font-italic{font-style:italic!important}.text-white{color:#fff!important}.text-primary{color:#007bff!important}a.text-primary:focus,a.text-primary:hover{color:#0056b3!important}.text-secondary{color:#6c757d!important}a.text-secondary:focus,a.text-secondary:hover{color:#494f54!important}.text-success{color:#28a745!important}a.text-success:focus,a.text-success:hover{color:#19692c!important}.text-info{color:#17a2b8!important}a.text-info:focus,a.text-info:hover{color:#0f6674!important}.text-warning{color:#ffc107!important}a.text-warning:focus,a.text-warning:hover{color:#ba8b00!important}.text-danger{color:#dc3545!important}a.text-danger:focus,a.text-danger:hover{color:#a71d2a!important}.text-light{color:#f8f9fa!important}a.text-light:focus,a.text-light:hover{color:#cbd3da!important}.text-dark{color:#343a40!important}a.text-dark:focus,a.text-dark:hover{color:#121416!important}.text-body{color:#212529!important}.text-muted{color:#6c757d!important}.text-black-50{color:rgba(0,0,0,.5)!important}.text-white-50{color:rgba(255,255,255,.5)!important}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.text-decoration-none{text-decoration:none!important}.text-break{word-break:break-word!important;word-wrap:break-word!important}.text-reset{color:inherit!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}@media print{*,::after,::before{text-shadow:none!important;box-shadow:none!important}a:not(.btn){text-decoration:underline}abbr[title]::after{content:" (" attr(title) ")"}pre{white-space:pre-wrap!important}blockquote,pre{border:1px solid #adb5bd;page-break-inside:avoid}img,tr{page-break-inside:avoid}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}@page{size:a3}body{min-width:992px!important}.container{min-width:992px!important}.navbar{display:none}.badge{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #dee2e6!important}.table-dark{color:inherit}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#dee2e6}.table .thead-dark th{color:inherit;border-color:#dee2e6}} +/*# sourceMappingURL=bootstrap.min.css.map */ \ No newline at end of file diff --git a/docs/column_api_files/html-default1.js b/docs/column_api_files/html-default1.js new file mode 100644 index 0000000..c4c6022 --- /dev/null +++ b/docs/column_api_files/html-default1.js @@ -0,0 +1,2 @@ +/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
        "],col:[2,"","
        "],tr:[2,"","
        "],td:[3,"","
        "],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="
        ",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0",options:{classes:{},disabled:!1,create:null},_createWidget:function(t,e){e=V(e||this.defaultElement||this)[0],this.element=V(e),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=V(),this.hoverable=V(),this.focusable=V(),this.classesElementLookup={},e!==this&&(V.data(e,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===e&&this.destroy()}}),this.document=V(e.style?e.ownerDocument:e.document||e),this.window=V(this.document[0].defaultView||this.document[0].parentWindow)),this.options=V.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:V.noop,_create:V.noop,_init:V.noop,destroy:function(){var i=this;this._destroy(),V.each(this.classesElementLookup,function(t,e){i._removeClass(e,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:V.noop,widget:function(){return this.element},option:function(t,e){var i,s,n,o=t;if(0===arguments.length)return V.widget.extend({},this.options);if("string"==typeof t)if(o={},t=(i=t.split(".")).shift(),i.length){for(s=o[t]=V.widget.extend({},this.options[t]),n=0;n
        "),i=e.children()[0];return V("body").append(e),t=i.offsetWidth,e.css("overflow","scroll"),t===(i=i.offsetWidth)&&(i=e[0].clientWidth),e.remove(),s=t-i},getScrollInfo:function(t){var e=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),i=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),e="scroll"===e||"auto"===e&&t.widthx(k(s),k(n))?o.important="horizontal":o.important="vertical",u.using.call(this,t,o)}),a.offset(V.extend(h,{using:t}))})},V.ui.position={fit:{left:function(t,e){var i=e.within,s=i.isWindow?i.scrollLeft:i.offset.left,n=i.width,o=t.left-e.collisionPosition.marginLeft,a=s-o,r=o+e.collisionWidth-n-s;e.collisionWidth>n?0n?0")[0],w=d.each;function P(t){return null==t?t+"":"object"==typeof t?p[e.call(t)]||"object":typeof t}function M(t,e,i){var s=v[e.type]||{};return null==t?i||!e.def?null:e.def:(t=s.floor?~~t:parseFloat(t),isNaN(t)?e.def:s.mod?(t+s.mod)%s.mod:Math.min(s.max,Math.max(0,t)))}function S(s){var n=m(),o=n._rgba=[];return s=s.toLowerCase(),w(g,function(t,e){var i=e.re.exec(s),i=i&&e.parse(i),e=e.space||"rgba";if(i)return i=n[e](i),n[_[e].cache]=i[_[e].cache],o=n._rgba=i._rgba,!1}),o.length?("0,0,0,0"===o.join()&&d.extend(o,B.transparent),n):B[s]}function H(t,e,i){return 6*(i=(i+1)%1)<1?t+(e-t)*i*6:2*i<1?e:3*i<2?t+(e-t)*(2/3-i)*6:t}y.style.cssText="background-color:rgba(1,1,1,.5)",b.rgba=-1o.mod/2?s+=o.mod:s-n>o.mod/2&&(s-=o.mod)),l[i]=M((n-s)*a+s,e)))}),this[e](l)},blend:function(t){if(1===this._rgba[3])return this;var e=this._rgba.slice(),i=e.pop(),s=m(t)._rgba;return m(d.map(e,function(t,e){return(1-i)*s[e]+i*t}))},toRgbaString:function(){var t="rgba(",e=d.map(this._rgba,function(t,e){return null!=t?t:2
        ").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}),e={width:i.width(),height:i.height()},n=document.activeElement;try{n.id}catch(t){n=document.body}return i.wrap(t),i[0]!==n&&!V.contains(i[0],n)||V(n).trigger("focus"),t=i.parent(),"static"===i.css("position")?(t.css({position:"relative"}),i.css({position:"relative"})):(V.extend(s,{position:i.css("position"),zIndex:i.css("z-index")}),V.each(["top","left","bottom","right"],function(t,e){s[e]=i.css(e),isNaN(parseInt(s[e],10))&&(s[e]="auto")}),i.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})),i.css(e),t.css(s).show()},removeWrapper:function(t){var e=document.activeElement;return t.parent().is(".ui-effects-wrapper")&&(t.parent().replaceWith(t),t[0]!==e&&!V.contains(t[0],e)||V(e).trigger("focus")),t}}),V.extend(V.effects,{version:"1.13.1",define:function(t,e,i){return i||(i=e,e="effect"),V.effects.effect[t]=i,V.effects.effect[t].mode=e,i},scaledDimensions:function(t,e,i){if(0===e)return{height:0,width:0,outerHeight:0,outerWidth:0};var s="horizontal"!==i?(e||100)/100:1,e="vertical"!==i?(e||100)/100:1;return{height:t.height()*e,width:t.width()*s,outerHeight:t.outerHeight()*e,outerWidth:t.outerWidth()*s}},clipToBox:function(t){return{width:t.clip.right-t.clip.left,height:t.clip.bottom-t.clip.top,left:t.clip.left,top:t.clip.top}},unshift:function(t,e,i){var s=t.queue();1").insertAfter(t).css({display:/^(inline|ruby)/.test(t.css("display"))?"inline-block":"block",visibility:"hidden",marginTop:t.css("marginTop"),marginBottom:t.css("marginBottom"),marginLeft:t.css("marginLeft"),marginRight:t.css("marginRight"),float:t.css("float")}).outerWidth(t.outerWidth()).outerHeight(t.outerHeight()).addClass("ui-effects-placeholder"),t.data(j+"placeholder",e)),t.css({position:i,left:s.left,top:s.top}),e},removePlaceholder:function(t){var e=j+"placeholder",i=t.data(e);i&&(i.remove(),t.removeData(e))},cleanUp:function(t){V.effects.restoreStyle(t),V.effects.removePlaceholder(t)},setTransition:function(s,t,n,o){return o=o||{},V.each(t,function(t,e){var i=s.cssUnit(e);0
        ");l.appendTo("body").addClass(t.className).css({top:s.top-a,left:s.left-r,height:i.innerHeight(),width:i.innerWidth(),position:n?"fixed":"absolute"}).animate(o,t.duration,t.easing,function(){l.remove(),"function"==typeof e&&e()})}}),V.fx.step.clip=function(t){t.clipInit||(t.start=V(t.elem).cssClip(),"string"==typeof t.end&&(t.end=G(t.end,t.elem)),t.clipInit=!0),V(t.elem).cssClip({top:t.pos*(t.end.top-t.start.top)+t.start.top,right:t.pos*(t.end.right-t.start.right)+t.start.right,bottom:t.pos*(t.end.bottom-t.start.bottom)+t.start.bottom,left:t.pos*(t.end.left-t.start.left)+t.start.left})},Y={},V.each(["Quad","Cubic","Quart","Quint","Expo"],function(e,t){Y[t]=function(t){return Math.pow(t,e+2)}}),V.extend(Y,{Sine:function(t){return 1-Math.cos(t*Math.PI/2)},Circ:function(t){return 1-Math.sqrt(1-t*t)},Elastic:function(t){return 0===t||1===t?t:-Math.pow(2,8*(t-1))*Math.sin((80*(t-1)-7.5)*Math.PI/15)},Back:function(t){return t*t*(3*t-2)},Bounce:function(t){for(var e,i=4;t<((e=Math.pow(2,--i))-1)/11;);return 1/Math.pow(4,3-i)-7.5625*Math.pow((3*e-2)/22-t,2)}}),V.each(Y,function(t,e){V.easing["easeIn"+t]=e,V.easing["easeOut"+t]=function(t){return 1-e(1-t)},V.easing["easeInOut"+t]=function(t){return t<.5?e(2*t)/2:1-e(-2*t+2)/2}});y=V.effects,V.effects.define("blind","hide",function(t,e){var i={up:["bottom","top"],vertical:["bottom","top"],down:["top","bottom"],left:["right","left"],horizontal:["right","left"],right:["left","right"]},s=V(this),n=t.direction||"up",o=s.cssClip(),a={clip:V.extend({},o)},r=V.effects.createPlaceholder(s);a.clip[i[n][0]]=a.clip[i[n][1]],"show"===t.mode&&(s.cssClip(a.clip),r&&r.css(V.effects.clipToBox(a)),a.clip=o),r&&r.animate(V.effects.clipToBox(a),t.duration,t.easing),s.animate(a,{queue:!1,duration:t.duration,easing:t.easing,complete:e})}),V.effects.define("bounce",function(t,e){var i,s,n=V(this),o=t.mode,a="hide"===o,r="show"===o,l=t.direction||"up",h=t.distance,c=t.times||5,o=2*c+(r||a?1:0),u=t.duration/o,d=t.easing,p="up"===l||"down"===l?"top":"left",f="up"===l||"left"===l,g=0,t=n.queue().length;for(V.effects.createPlaceholder(n),l=n.css(p),h=h||n["top"==p?"outerHeight":"outerWidth"]()/3,r&&((s={opacity:1})[p]=l,n.css("opacity",0).css(p,f?2*-h:2*h).animate(s,u,d)),a&&(h/=Math.pow(2,c-1)),(s={})[p]=l;g
        ").css({position:"absolute",visibility:"visible",left:-s*p,top:-i*f}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:p,height:f,left:n+(u?a*p:0),top:o+(u?r*f:0),opacity:u?0:1}).animate({left:n+(u?0:a*p),top:o+(u?0:r*f),opacity:u?1:0},t.duration||500,t.easing,m)}),V.effects.define("fade","toggle",function(t,e){var i="show"===t.mode;V(this).css("opacity",i?0:1).animate({opacity:i?1:0},{queue:!1,duration:t.duration,easing:t.easing,complete:e})}),V.effects.define("fold","hide",function(e,t){var i=V(this),s=e.mode,n="show"===s,o="hide"===s,a=e.size||15,r=/([0-9]+)%/.exec(a),l=!!e.horizFirst?["right","bottom"]:["bottom","right"],h=e.duration/2,c=V.effects.createPlaceholder(i),u=i.cssClip(),d={clip:V.extend({},u)},p={clip:V.extend({},u)},f=[u[l[0]],u[l[1]]],s=i.queue().length;r&&(a=parseInt(r[1],10)/100*f[o?0:1]),d.clip[l[0]]=a,p.clip[l[0]]=a,p.clip[l[1]]=0,n&&(i.cssClip(p.clip),c&&c.css(V.effects.clipToBox(p)),p.clip=u),i.queue(function(t){c&&c.animate(V.effects.clipToBox(d),h,e.easing).animate(V.effects.clipToBox(p),h,e.easing),t()}).animate(d,h,e.easing).animate(p,h,e.easing).queue(t),V.effects.unshift(i,s,4)}),V.effects.define("highlight","show",function(t,e){var i=V(this),s={backgroundColor:i.css("backgroundColor")};"hide"===t.mode&&(s.opacity=0),V.effects.saveStyle(i),i.css({backgroundImage:"none",backgroundColor:t.color||"#ffff99"}).animate(s,{queue:!1,duration:t.duration,easing:t.easing,complete:e})}),V.effects.define("size",function(s,e){var n,i=V(this),t=["fontSize"],o=["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"],a=["borderLeftWidth","borderRightWidth","paddingLeft","paddingRight"],r=s.mode,l="effect"!==r,h=s.scale||"both",c=s.origin||["middle","center"],u=i.css("position"),d=i.position(),p=V.effects.scaledDimensions(i),f=s.from||p,g=s.to||V.effects.scaledDimensions(i,0);V.effects.createPlaceholder(i),"show"===r&&(r=f,f=g,g=r),n={from:{y:f.height/p.height,x:f.width/p.width},to:{y:g.height/p.height,x:g.width/p.width}},"box"!==h&&"both"!==h||(n.from.y!==n.to.y&&(f=V.effects.setTransition(i,o,n.from.y,f),g=V.effects.setTransition(i,o,n.to.y,g)),n.from.x!==n.to.x&&(f=V.effects.setTransition(i,a,n.from.x,f),g=V.effects.setTransition(i,a,n.to.x,g))),"content"!==h&&"both"!==h||n.from.y!==n.to.y&&(f=V.effects.setTransition(i,t,n.from.y,f),g=V.effects.setTransition(i,t,n.to.y,g)),c&&(c=V.effects.getBaseline(c,p),f.top=(p.outerHeight-f.outerHeight)*c.y+d.top,f.left=(p.outerWidth-f.outerWidth)*c.x+d.left,g.top=(p.outerHeight-g.outerHeight)*c.y+d.top,g.left=(p.outerWidth-g.outerWidth)*c.x+d.left),delete f.outerHeight,delete f.outerWidth,i.css(f),"content"!==h&&"both"!==h||(o=o.concat(["marginTop","marginBottom"]).concat(t),a=a.concat(["marginLeft","marginRight"]),i.find("*[width]").each(function(){var t=V(this),e=V.effects.scaledDimensions(t),i={height:e.height*n.from.y,width:e.width*n.from.x,outerHeight:e.outerHeight*n.from.y,outerWidth:e.outerWidth*n.from.x},e={height:e.height*n.to.y,width:e.width*n.to.x,outerHeight:e.height*n.to.y,outerWidth:e.width*n.to.x};n.from.y!==n.to.y&&(i=V.effects.setTransition(t,o,n.from.y,i),e=V.effects.setTransition(t,o,n.to.y,e)),n.from.x!==n.to.x&&(i=V.effects.setTransition(t,a,n.from.x,i),e=V.effects.setTransition(t,a,n.to.x,e)),l&&V.effects.saveStyle(t),t.css(i),t.animate(e,s.duration,s.easing,function(){l&&V.effects.restoreStyle(t)})})),i.animate(g,{queue:!1,duration:s.duration,easing:s.easing,complete:function(){var t=i.offset();0===g.opacity&&i.css("opacity",f.opacity),l||(i.css("position","static"===u?"relative":u).offset(t),V.effects.saveStyle(i)),e()}})}),V.effects.define("scale",function(t,e){var i=V(this),s=t.mode,s=parseInt(t.percent,10)||(0===parseInt(t.percent,10)||"effect"!==s?0:100),s=V.extend(!0,{from:V.effects.scaledDimensions(i),to:V.effects.scaledDimensions(i,s,t.direction||"both"),origin:t.origin||["middle","center"]},t);t.fade&&(s.from.opacity=1,s.to.opacity=0),V.effects.effect.size.call(this,s,e)}),V.effects.define("puff","hide",function(t,e){t=V.extend(!0,{},t,{fade:!0,percent:parseInt(t.percent,10)||150});V.effects.effect.scale.call(this,t,e)}),V.effects.define("pulsate","show",function(t,e){var i=V(this),s=t.mode,n="show"===s,o=2*(t.times||5)+(n||"hide"===s?1:0),a=t.duration/o,r=0,l=1,s=i.queue().length;for(!n&&i.is(":visible")||(i.css("opacity",0).show(),r=1);l li > :first-child").add(t.find("> :not(li)").even())},heightStyle:"auto",icons:{activeHeader:"ui-icon-triangle-1-s",header:"ui-icon-triangle-1-e"},activate:null,beforeActivate:null},hideProps:{borderTopWidth:"hide",borderBottomWidth:"hide",paddingTop:"hide",paddingBottom:"hide",height:"hide"},showProps:{borderTopWidth:"show",borderBottomWidth:"show",paddingTop:"show",paddingBottom:"show",height:"show"},_create:function(){var t=this.options;this.prevShow=this.prevHide=V(),this._addClass("ui-accordion","ui-widget ui-helper-reset"),this.element.attr("role","tablist"),t.collapsible||!1!==t.active&&null!=t.active||(t.active=0),this._processPanels(),t.active<0&&(t.active+=this.headers.length),this._refresh()},_getCreateEventData:function(){return{header:this.active,panel:this.active.length?this.active.next():V()}},_createIcons:function(){var t,e=this.options.icons;e&&(t=V(""),this._addClass(t,"ui-accordion-header-icon","ui-icon "+e.header),t.prependTo(this.headers),t=this.active.children(".ui-accordion-header-icon"),this._removeClass(t,e.header)._addClass(t,null,e.activeHeader)._addClass(this.headers,"ui-accordion-icons"))},_destroyIcons:function(){this._removeClass(this.headers,"ui-accordion-icons"),this.headers.children(".ui-accordion-header-icon").remove()},_destroy:function(){var t;this.element.removeAttr("role"),this.headers.removeAttr("role aria-expanded aria-selected aria-controls tabIndex").removeUniqueId(),this._destroyIcons(),t=this.headers.next().css("display","").removeAttr("role aria-hidden aria-labelledby").removeUniqueId(),"content"!==this.options.heightStyle&&t.css("height","")},_setOption:function(t,e){"active"!==t?("event"===t&&(this.options.event&&this._off(this.headers,this.options.event),this._setupEvents(e)),this._super(t,e),"collapsible"!==t||e||!1!==this.options.active||this._activate(0),"icons"===t&&(this._destroyIcons(),e&&this._createIcons())):this._activate(e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",t),this._toggleClass(null,"ui-state-disabled",!!t),this._toggleClass(this.headers.add(this.headers.next()),null,"ui-state-disabled",!!t)},_keydown:function(t){if(!t.altKey&&!t.ctrlKey){var e=V.ui.keyCode,i=this.headers.length,s=this.headers.index(t.target),n=!1;switch(t.keyCode){case e.RIGHT:case e.DOWN:n=this.headers[(s+1)%i];break;case e.LEFT:case e.UP:n=this.headers[(s-1+i)%i];break;case e.SPACE:case e.ENTER:this._eventHandler(t);break;case e.HOME:n=this.headers[0];break;case e.END:n=this.headers[i-1]}n&&(V(t.target).attr("tabIndex",-1),V(n).attr("tabIndex",0),V(n).trigger("focus"),t.preventDefault())}},_panelKeyDown:function(t){t.keyCode===V.ui.keyCode.UP&&t.ctrlKey&&V(t.currentTarget).prev().trigger("focus")},refresh:function(){var t=this.options;this._processPanels(),!1===t.active&&!0===t.collapsible||!this.headers.length?(t.active=!1,this.active=V()):!1===t.active?this._activate(0):this.active.length&&!V.contains(this.element[0],this.active[0])?this.headers.length===this.headers.find(".ui-state-disabled").length?(t.active=!1,this.active=V()):this._activate(Math.max(0,t.active-1)):t.active=this.headers.index(this.active),this._destroyIcons(),this._refresh()},_processPanels:function(){var t=this.headers,e=this.panels;"function"==typeof this.options.header?this.headers=this.options.header(this.element):this.headers=this.element.find(this.options.header),this._addClass(this.headers,"ui-accordion-header ui-accordion-header-collapsed","ui-state-default"),this.panels=this.headers.next().filter(":not(.ui-accordion-content-active)").hide(),this._addClass(this.panels,"ui-accordion-content","ui-helper-reset ui-widget-content"),e&&(this._off(t.not(this.headers)),this._off(e.not(this.panels)))},_refresh:function(){var i,t=this.options,e=t.heightStyle,s=this.element.parent();this.active=this._findActive(t.active),this._addClass(this.active,"ui-accordion-header-active","ui-state-active")._removeClass(this.active,"ui-accordion-header-collapsed"),this._addClass(this.active.next(),"ui-accordion-content-active"),this.active.next().show(),this.headers.attr("role","tab").each(function(){var t=V(this),e=t.uniqueId().attr("id"),i=t.next(),s=i.uniqueId().attr("id");t.attr("aria-controls",s),i.attr("aria-labelledby",e)}).next().attr("role","tabpanel"),this.headers.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}).next().attr({"aria-hidden":"true"}).hide(),this.active.length?this.active.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}).next().attr({"aria-hidden":"false"}):this.headers.eq(0).attr("tabIndex",0),this._createIcons(),this._setupEvents(t.event),"fill"===e?(i=s.height(),this.element.siblings(":visible").each(function(){var t=V(this),e=t.css("position");"absolute"!==e&&"fixed"!==e&&(i-=t.outerHeight(!0))}),this.headers.each(function(){i-=V(this).outerHeight(!0)}),this.headers.next().each(function(){V(this).height(Math.max(0,i-V(this).innerHeight()+V(this).height()))}).css("overflow","auto")):"auto"===e&&(i=0,this.headers.next().each(function(){var t=V(this).is(":visible");t||V(this).show(),i=Math.max(i,V(this).css("height","").height()),t||V(this).hide()}).height(i))},_activate:function(t){t=this._findActive(t)[0];t!==this.active[0]&&(t=t||this.active[0],this._eventHandler({target:t,currentTarget:t,preventDefault:V.noop}))},_findActive:function(t){return"number"==typeof t?this.headers.eq(t):V()},_setupEvents:function(t){var i={keydown:"_keydown"};t&&V.each(t.split(" "),function(t,e){i[e]="_eventHandler"}),this._off(this.headers.add(this.headers.next())),this._on(this.headers,i),this._on(this.headers.next(),{keydown:"_panelKeyDown"}),this._hoverable(this.headers),this._focusable(this.headers)},_eventHandler:function(t){var e=this.options,i=this.active,s=V(t.currentTarget),n=s[0]===i[0],o=n&&e.collapsible,a=o?V():s.next(),r=i.next(),a={oldHeader:i,oldPanel:r,newHeader:o?V():s,newPanel:a};t.preventDefault(),n&&!e.collapsible||!1===this._trigger("beforeActivate",t,a)||(e.active=!o&&this.headers.index(s),this.active=n?V():s,this._toggle(a),this._removeClass(i,"ui-accordion-header-active","ui-state-active"),e.icons&&(i=i.children(".ui-accordion-header-icon"),this._removeClass(i,null,e.icons.activeHeader)._addClass(i,null,e.icons.header)),n||(this._removeClass(s,"ui-accordion-header-collapsed")._addClass(s,"ui-accordion-header-active","ui-state-active"),e.icons&&(n=s.children(".ui-accordion-header-icon"),this._removeClass(n,null,e.icons.header)._addClass(n,null,e.icons.activeHeader)),this._addClass(s.next(),"ui-accordion-content-active")))},_toggle:function(t){var e=t.newPanel,i=this.prevShow.length?this.prevShow:t.oldPanel;this.prevShow.add(this.prevHide).stop(!0,!0),this.prevShow=e,this.prevHide=i,this.options.animate?this._animate(e,i,t):(i.hide(),e.show(),this._toggleComplete(t)),i.attr({"aria-hidden":"true"}),i.prev().attr({"aria-selected":"false","aria-expanded":"false"}),e.length&&i.length?i.prev().attr({tabIndex:-1,"aria-expanded":"false"}):e.length&&this.headers.filter(function(){return 0===parseInt(V(this).attr("tabIndex"),10)}).attr("tabIndex",-1),e.attr("aria-hidden","false").prev().attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_animate:function(t,i,e){var s,n,o,a=this,r=0,l=t.css("box-sizing"),h=t.length&&(!i.length||t.index()",delay:300,options:{icons:{submenu:"ui-icon-caret-1-e"},items:"> *",menus:"ul",position:{my:"left top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.lastMousePosition={x:null,y:null},this.element.uniqueId().attr({role:this.options.role,tabIndex:0}),this._addClass("ui-menu","ui-widget ui-widget-content"),this._on({"mousedown .ui-menu-item":function(t){t.preventDefault(),this._activateItem(t)},"click .ui-menu-item":function(t){var e=V(t.target),i=V(V.ui.safeActiveElement(this.document[0]));!this.mouseHandled&&e.not(".ui-state-disabled").length&&(this.select(t),t.isPropagationStopped()||(this.mouseHandled=!0),e.has(".ui-menu").length?this.expand(t):!this.element.is(":focus")&&i.closest(".ui-menu").length&&(this.element.trigger("focus",[!0]),this.active&&1===this.active.parents(".ui-menu").length&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":"_activateItem","mousemove .ui-menu-item":"_activateItem",mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(t,e){var i=this.active||this._menuItems().first();e||this.focus(t,i)},blur:function(t){this._delay(function(){V.contains(this.element[0],V.ui.safeActiveElement(this.document[0]))||this.collapseAll(t)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(t){this._closeOnDocumentClick(t)&&this.collapseAll(t,!0),this.mouseHandled=!1}})},_activateItem:function(t){var e,i;this.previousFilter||t.clientX===this.lastMousePosition.x&&t.clientY===this.lastMousePosition.y||(this.lastMousePosition={x:t.clientX,y:t.clientY},e=V(t.target).closest(".ui-menu-item"),i=V(t.currentTarget),e[0]===i[0]&&(i.is(".ui-state-active")||(this._removeClass(i.siblings().children(".ui-state-active"),null,"ui-state-active"),this.focus(t,i))))},_destroy:function(){var t=this.element.find(".ui-menu-item").removeAttr("role aria-disabled").children(".ui-menu-item-wrapper").removeUniqueId().removeAttr("tabIndex role aria-haspopup");this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeAttr("role aria-labelledby aria-expanded aria-hidden aria-disabled tabIndex").removeUniqueId().show(),t.children().each(function(){var t=V(this);t.data("ui-menu-submenu-caret")&&t.remove()})},_keydown:function(t){var e,i,s,n=!0;switch(t.keyCode){case V.ui.keyCode.PAGE_UP:this.previousPage(t);break;case V.ui.keyCode.PAGE_DOWN:this.nextPage(t);break;case V.ui.keyCode.HOME:this._move("first","first",t);break;case V.ui.keyCode.END:this._move("last","last",t);break;case V.ui.keyCode.UP:this.previous(t);break;case V.ui.keyCode.DOWN:this.next(t);break;case V.ui.keyCode.LEFT:this.collapse(t);break;case V.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(t);break;case V.ui.keyCode.ENTER:case V.ui.keyCode.SPACE:this._activate(t);break;case V.ui.keyCode.ESCAPE:this.collapse(t);break;default:e=this.previousFilter||"",s=n=!1,i=96<=t.keyCode&&t.keyCode<=105?(t.keyCode-96).toString():String.fromCharCode(t.keyCode),clearTimeout(this.filterTimer),i===e?s=!0:i=e+i,e=this._filterMenuItems(i),(e=s&&-1!==e.index(this.active.next())?this.active.nextAll(".ui-menu-item"):e).length||(i=String.fromCharCode(t.keyCode),e=this._filterMenuItems(i)),e.length?(this.focus(t,e),this.previousFilter=i,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter}n&&t.preventDefault()},_activate:function(t){this.active&&!this.active.is(".ui-state-disabled")&&(this.active.children("[aria-haspopup='true']").length?this.expand(t):this.select(t))},refresh:function(){var t,e,s=this,n=this.options.icons.submenu,i=this.element.find(this.options.menus);this._toggleClass("ui-menu-icons",null,!!this.element.find(".ui-icon").length),e=i.filter(":not(.ui-menu)").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var t=V(this),e=t.prev(),i=V("").data("ui-menu-submenu-caret",!0);s._addClass(i,"ui-menu-icon","ui-icon "+n),e.attr("aria-haspopup","true").prepend(i),t.attr("aria-labelledby",e.attr("id"))}),this._addClass(e,"ui-menu","ui-widget ui-widget-content ui-front"),(t=i.add(this.element).find(this.options.items)).not(".ui-menu-item").each(function(){var t=V(this);s._isDivider(t)&&s._addClass(t,"ui-menu-divider","ui-widget-content")}),i=(e=t.not(".ui-menu-item, .ui-menu-divider")).children().not(".ui-menu").uniqueId().attr({tabIndex:-1,role:this._itemRole()}),this._addClass(e,"ui-menu-item")._addClass(i,"ui-menu-item-wrapper"),t.filter(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!V.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(t,e){var i;"icons"===t&&(i=this.element.find(".ui-menu-icon"),this._removeClass(i,null,this.options.icons.submenu)._addClass(i,null,e.submenu)),this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",String(t)),this._toggleClass(null,"ui-state-disabled",!!t)},focus:function(t,e){var i;this.blur(t,t&&"focus"===t.type),this._scrollIntoView(e),this.active=e.first(),i=this.active.children(".ui-menu-item-wrapper"),this._addClass(i,null,"ui-state-active"),this.options.role&&this.element.attr("aria-activedescendant",i.attr("id")),i=this.active.parent().closest(".ui-menu-item").children(".ui-menu-item-wrapper"),this._addClass(i,null,"ui-state-active"),t&&"keydown"===t.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),(i=e.children(".ui-menu")).length&&t&&/^mouse/.test(t.type)&&this._startOpening(i),this.activeMenu=e.parent(),this._trigger("focus",t,{item:e})},_scrollIntoView:function(t){var e,i,s;this._hasScroll()&&(i=parseFloat(V.css(this.activeMenu[0],"borderTopWidth"))||0,s=parseFloat(V.css(this.activeMenu[0],"paddingTop"))||0,e=t.offset().top-this.activeMenu.offset().top-i-s,i=this.activeMenu.scrollTop(),s=this.activeMenu.height(),t=t.outerHeight(),e<0?this.activeMenu.scrollTop(i+e):s",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},requestIndex:0,pending:0,liveRegionTimer:null,_create:function(){var i,s,n,t=this.element[0].nodeName.toLowerCase(),e="textarea"===t,t="input"===t;this.isMultiLine=e||!t&&this._isContentEditable(this.element),this.valueMethod=this.element[e||t?"val":"text"],this.isNewMenu=!0,this._addClass("ui-autocomplete-input"),this.element.attr("autocomplete","off"),this._on(this.element,{keydown:function(t){if(this.element.prop("readOnly"))s=n=i=!0;else{s=n=i=!1;var e=V.ui.keyCode;switch(t.keyCode){case e.PAGE_UP:i=!0,this._move("previousPage",t);break;case e.PAGE_DOWN:i=!0,this._move("nextPage",t);break;case e.UP:i=!0,this._keyEvent("previous",t);break;case e.DOWN:i=!0,this._keyEvent("next",t);break;case e.ENTER:this.menu.active&&(i=!0,t.preventDefault(),this.menu.select(t));break;case e.TAB:this.menu.active&&this.menu.select(t);break;case e.ESCAPE:this.menu.element.is(":visible")&&(this.isMultiLine||this._value(this.term),this.close(t),t.preventDefault());break;default:s=!0,this._searchTimeout(t)}}},keypress:function(t){if(i)return i=!1,void(this.isMultiLine&&!this.menu.element.is(":visible")||t.preventDefault());if(!s){var e=V.ui.keyCode;switch(t.keyCode){case e.PAGE_UP:this._move("previousPage",t);break;case e.PAGE_DOWN:this._move("nextPage",t);break;case e.UP:this._keyEvent("previous",t);break;case e.DOWN:this._keyEvent("next",t)}}},input:function(t){if(n)return n=!1,void t.preventDefault();this._searchTimeout(t)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(t){clearTimeout(this.searching),this.close(t),this._change(t)}}),this._initSource(),this.menu=V("
          ").appendTo(this._appendTo()).menu({role:null}).hide().attr({unselectable:"on"}).menu("instance"),this._addClass(this.menu.element,"ui-autocomplete","ui-front"),this._on(this.menu.element,{mousedown:function(t){t.preventDefault()},menufocus:function(t,e){var i,s;if(this.isNewMenu&&(this.isNewMenu=!1,t.originalEvent&&/^mouse/.test(t.originalEvent.type)))return this.menu.blur(),void this.document.one("mousemove",function(){V(t.target).trigger(t.originalEvent)});s=e.item.data("ui-autocomplete-item"),!1!==this._trigger("focus",t,{item:s})&&t.originalEvent&&/^key/.test(t.originalEvent.type)&&this._value(s.value),(i=e.item.attr("aria-label")||s.value)&&String.prototype.trim.call(i).length&&(clearTimeout(this.liveRegionTimer),this.liveRegionTimer=this._delay(function(){this.liveRegion.html(V("
          ").text(i))},100))},menuselect:function(t,e){var i=e.item.data("ui-autocomplete-item"),s=this.previous;this.element[0]!==V.ui.safeActiveElement(this.document[0])&&(this.element.trigger("focus"),this.previous=s,this._delay(function(){this.previous=s,this.selectedItem=i})),!1!==this._trigger("select",t,{item:i})&&this._value(i.value),this.term=this._value(),this.close(t),this.selectedItem=i}}),this.liveRegion=V("
          ",{role:"status","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(t,e){this._super(t,e),"source"===t&&this._initSource(),"appendTo"===t&&this.menu.element.appendTo(this._appendTo()),"disabled"===t&&e&&this.xhr&&this.xhr.abort()},_isEventTargetInWidget:function(t){var e=this.menu.element[0];return t.target===this.element[0]||t.target===e||V.contains(e,t.target)},_closeOnClickOutside:function(t){this._isEventTargetInWidget(t)||this.close()},_appendTo:function(){var t=this.options.appendTo;return t=!(t=!(t=t&&(t.jquery||t.nodeType?V(t):this.document.find(t).eq(0)))||!t[0]?this.element.closest(".ui-front, dialog"):t).length?this.document[0].body:t},_initSource:function(){var i,s,n=this;Array.isArray(this.options.source)?(i=this.options.source,this.source=function(t,e){e(V.ui.autocomplete.filter(i,t.term))}):"string"==typeof this.options.source?(s=this.options.source,this.source=function(t,e){n.xhr&&n.xhr.abort(),n.xhr=V.ajax({url:s,data:t,dataType:"json",success:function(t){e(t)},error:function(){e([])}})}):this.source=this.options.source},_searchTimeout:function(s){clearTimeout(this.searching),this.searching=this._delay(function(){var t=this.term===this._value(),e=this.menu.element.is(":visible"),i=s.altKey||s.ctrlKey||s.metaKey||s.shiftKey;t&&(e||i)||(this.selectedItem=null,this.search(null,s))},this.options.delay)},search:function(t,e){return t=null!=t?t:this._value(),this.term=this._value(),t.length").append(V("
          ").text(e.label)).appendTo(t)},_move:function(t,e){if(this.menu.element.is(":visible"))return this.menu.isFirstItem()&&/^previous/.test(t)||this.menu.isLastItem()&&/^next/.test(t)?(this.isMultiLine||this._value(this.term),void this.menu.blur()):void this.menu[t](e);this.search(null,e)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(t,e){this.isMultiLine&&!this.menu.element.is(":visible")||(this._move(t,e),e.preventDefault())},_isContentEditable:function(t){if(!t.length)return!1;var e=t.prop("contentEditable");return"inherit"===e?this._isContentEditable(t.parent()):"true"===e}}),V.extend(V.ui.autocomplete,{escapeRegex:function(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(t,e){var i=new RegExp(V.ui.autocomplete.escapeRegex(e),"i");return V.grep(t,function(t){return i.test(t.label||t.value||t)})}}),V.widget("ui.autocomplete",V.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(t){return t+(1").text(e))},100))}});V.ui.autocomplete;var tt=/ui-corner-([a-z]){2,6}/g;V.widget("ui.controlgroup",{version:"1.13.1",defaultElement:"
          ",options:{direction:"horizontal",disabled:null,onlyVisible:!0,items:{button:"input[type=button], input[type=submit], input[type=reset], button, a",controlgroupLabel:".ui-controlgroup-label",checkboxradio:"input[type='checkbox'], input[type='radio']",selectmenu:"select",spinner:".ui-spinner-input"}},_create:function(){this._enhance()},_enhance:function(){this.element.attr("role","toolbar"),this.refresh()},_destroy:function(){this._callChildMethod("destroy"),this.childWidgets.removeData("ui-controlgroup-data"),this.element.removeAttr("role"),this.options.items.controlgroupLabel&&this.element.find(this.options.items.controlgroupLabel).find(".ui-controlgroup-label-contents").contents().unwrap()},_initWidgets:function(){var o=this,a=[];V.each(this.options.items,function(s,t){var e,n={};if(t)return"controlgroupLabel"===s?((e=o.element.find(t)).each(function(){var t=V(this);t.children(".ui-controlgroup-label-contents").length||t.contents().wrapAll("")}),o._addClass(e,null,"ui-widget ui-widget-content ui-state-default"),void(a=a.concat(e.get()))):void(V.fn[s]&&(n=o["_"+s+"Options"]?o["_"+s+"Options"]("middle"):{classes:{}},o.element.find(t).each(function(){var t=V(this),e=t[s]("instance"),i=V.widget.extend({},n);"button"===s&&t.parent(".ui-spinner").length||((e=e||t[s]()[s]("instance"))&&(i.classes=o._resolveClassesValues(i.classes,e)),t[s](i),i=t[s]("widget"),V.data(i[0],"ui-controlgroup-data",e||t[s]("instance")),a.push(i[0]))})))}),this.childWidgets=V(V.uniqueSort(a)),this._addClass(this.childWidgets,"ui-controlgroup-item")},_callChildMethod:function(e){this.childWidgets.each(function(){var t=V(this).data("ui-controlgroup-data");t&&t[e]&&t[e]()})},_updateCornerClass:function(t,e){e=this._buildSimpleOptions(e,"label").classes.label;this._removeClass(t,null,"ui-corner-top ui-corner-bottom ui-corner-left ui-corner-right ui-corner-all"),this._addClass(t,null,e)},_buildSimpleOptions:function(t,e){var i="vertical"===this.options.direction,s={classes:{}};return s.classes[e]={middle:"",first:"ui-corner-"+(i?"top":"left"),last:"ui-corner-"+(i?"bottom":"right"),only:"ui-corner-all"}[t],s},_spinnerOptions:function(t){t=this._buildSimpleOptions(t,"ui-spinner");return t.classes["ui-spinner-up"]="",t.classes["ui-spinner-down"]="",t},_buttonOptions:function(t){return this._buildSimpleOptions(t,"ui-button")},_checkboxradioOptions:function(t){return this._buildSimpleOptions(t,"ui-checkboxradio-label")},_selectmenuOptions:function(t){var e="vertical"===this.options.direction;return{width:e&&"auto",classes:{middle:{"ui-selectmenu-button-open":"","ui-selectmenu-button-closed":""},first:{"ui-selectmenu-button-open":"ui-corner-"+(e?"top":"tl"),"ui-selectmenu-button-closed":"ui-corner-"+(e?"top":"left")},last:{"ui-selectmenu-button-open":e?"":"ui-corner-tr","ui-selectmenu-button-closed":"ui-corner-"+(e?"bottom":"right")},only:{"ui-selectmenu-button-open":"ui-corner-top","ui-selectmenu-button-closed":"ui-corner-all"}}[t]}},_resolveClassesValues:function(i,s){var n={};return V.each(i,function(t){var e=s.options.classes[t]||"",e=String.prototype.trim.call(e.replace(tt,""));n[t]=(e+" "+i[t]).replace(/\s+/g," ")}),n},_setOption:function(t,e){"direction"===t&&this._removeClass("ui-controlgroup-"+this.options.direction),this._super(t,e),"disabled"!==t?this.refresh():this._callChildMethod(e?"disable":"enable")},refresh:function(){var n,o=this;this._addClass("ui-controlgroup ui-controlgroup-"+this.options.direction),"horizontal"===this.options.direction&&this._addClass(null,"ui-helper-clearfix"),this._initWidgets(),n=this.childWidgets,(n=this.options.onlyVisible?n.filter(":visible"):n).length&&(V.each(["first","last"],function(t,e){var i,s=n[e]().data("ui-controlgroup-data");s&&o["_"+s.widgetName+"Options"]?((i=o["_"+s.widgetName+"Options"](1===n.length?"only":e)).classes=o._resolveClassesValues(i.classes,s),s.element[s.widgetName](i)):o._updateCornerClass(n[e](),e)}),this._callChildMethod("refresh"))}});V.widget("ui.checkboxradio",[V.ui.formResetMixin,{version:"1.13.1",options:{disabled:null,label:null,icon:!0,classes:{"ui-checkboxradio-label":"ui-corner-all","ui-checkboxradio-icon":"ui-corner-all"}},_getCreateOptions:function(){var t,e=this,i=this._super()||{};return this._readType(),t=this.element.labels(),this.label=V(t[t.length-1]),this.label.length||V.error("No label found for checkboxradio widget"),this.originalLabel="",this.label.contents().not(this.element[0]).each(function(){e.originalLabel+=3===this.nodeType?V(this).text():this.outerHTML}),this.originalLabel&&(i.label=this.originalLabel),null!=(t=this.element[0].disabled)&&(i.disabled=t),i},_create:function(){var t=this.element[0].checked;this._bindFormResetHandler(),null==this.options.disabled&&(this.options.disabled=this.element[0].disabled),this._setOption("disabled",this.options.disabled),this._addClass("ui-checkboxradio","ui-helper-hidden-accessible"),this._addClass(this.label,"ui-checkboxradio-label","ui-button ui-widget"),"radio"===this.type&&this._addClass(this.label,"ui-checkboxradio-radio-label"),this.options.label&&this.options.label!==this.originalLabel?this._updateLabel():this.originalLabel&&(this.options.label=this.originalLabel),this._enhance(),t&&this._addClass(this.label,"ui-checkboxradio-checked","ui-state-active"),this._on({change:"_toggleClasses",focus:function(){this._addClass(this.label,null,"ui-state-focus ui-visual-focus")},blur:function(){this._removeClass(this.label,null,"ui-state-focus ui-visual-focus")}})},_readType:function(){var t=this.element[0].nodeName.toLowerCase();this.type=this.element[0].type,"input"===t&&/radio|checkbox/.test(this.type)||V.error("Can't create checkboxradio on element.nodeName="+t+" and element.type="+this.type)},_enhance:function(){this._updateIcon(this.element[0].checked)},widget:function(){return this.label},_getRadioGroup:function(){var t=this.element[0].name,e="input[name='"+V.escapeSelector(t)+"']";return t?(this.form.length?V(this.form[0].elements).filter(e):V(e).filter(function(){return 0===V(this)._form().length})).not(this.element):V([])},_toggleClasses:function(){var t=this.element[0].checked;this._toggleClass(this.label,"ui-checkboxradio-checked","ui-state-active",t),this.options.icon&&"checkbox"===this.type&&this._toggleClass(this.icon,null,"ui-icon-check ui-state-checked",t)._toggleClass(this.icon,null,"ui-icon-blank",!t),"radio"===this.type&&this._getRadioGroup().each(function(){var t=V(this).checkboxradio("instance");t&&t._removeClass(t.label,"ui-checkboxradio-checked","ui-state-active")})},_destroy:function(){this._unbindFormResetHandler(),this.icon&&(this.icon.remove(),this.iconSpace.remove())},_setOption:function(t,e){if("label"!==t||e){if(this._super(t,e),"disabled"===t)return this._toggleClass(this.label,null,"ui-state-disabled",e),void(this.element[0].disabled=e);this.refresh()}},_updateIcon:function(t){var e="ui-icon ui-icon-background ";this.options.icon?(this.icon||(this.icon=V(""),this.iconSpace=V(" "),this._addClass(this.iconSpace,"ui-checkboxradio-icon-space")),"checkbox"===this.type?(e+=t?"ui-icon-check ui-state-checked":"ui-icon-blank",this._removeClass(this.icon,null,t?"ui-icon-blank":"ui-icon-check")):e+="ui-icon-blank",this._addClass(this.icon,"ui-checkboxradio-icon",e),t||this._removeClass(this.icon,null,"ui-icon-check ui-state-checked"),this.icon.prependTo(this.label).after(this.iconSpace)):void 0!==this.icon&&(this.icon.remove(),this.iconSpace.remove(),delete this.icon)},_updateLabel:function(){var t=this.label.contents().not(this.element[0]);this.icon&&(t=t.not(this.icon[0])),(t=this.iconSpace?t.not(this.iconSpace[0]):t).remove(),this.label.append(this.options.label)},refresh:function(){var t=this.element[0].checked,e=this.element[0].disabled;this._updateIcon(t),this._toggleClass(this.label,"ui-checkboxradio-checked","ui-state-active",t),null!==this.options.label&&this._updateLabel(),e!==this.options.disabled&&this._setOptions({disabled:e})}}]);var et;V.ui.checkboxradio;V.widget("ui.button",{version:"1.13.1",defaultElement:"
          "+(0
          ":""):"")}f+=_}return f+=F,t._keyEvent=!1,f},_generateMonthYearHeader:function(t,e,i,s,n,o,a,r){var l,h,c,u,d,p,f=this._get(t,"changeMonth"),g=this._get(t,"changeYear"),m=this._get(t,"showMonthAfterYear"),_=this._get(t,"selectMonthLabel"),v=this._get(t,"selectYearLabel"),b="
          ",y="";if(o||!f)y+=""+a[e]+"";else{for(l=s&&s.getFullYear()===i,h=n&&n.getFullYear()===i,y+=""}if(m||(b+=y+(!o&&f&&g?"":" ")),!t.yearshtml)if(t.yearshtml="",o||!g)b+=""+i+"";else{for(a=this._get(t,"yearRange").split(":"),u=(new Date).getFullYear(),d=(_=function(t){t=t.match(/c[+\-].*/)?i+parseInt(t.substring(1),10):t.match(/[+\-].*/)?u+parseInt(t,10):parseInt(t,10);return isNaN(t)?u:t})(a[0]),p=Math.max(d,_(a[1]||"")),d=s?Math.max(d,s.getFullYear()):d,p=n?Math.min(p,n.getFullYear()):p,t.yearshtml+="",b+=t.yearshtml,t.yearshtml=null}return b+=this._get(t,"yearSuffix"),m&&(b+=(!o&&f&&g?"":" ")+y),b+="
          "},_adjustInstDate:function(t,e,i){var s=t.selectedYear+("Y"===i?e:0),n=t.selectedMonth+("M"===i?e:0),e=Math.min(t.selectedDay,this._getDaysInMonth(s,n))+("D"===i?e:0),e=this._restrictMinMax(t,this._daylightSavingAdjust(new Date(s,n,e)));t.selectedDay=e.getDate(),t.drawMonth=t.selectedMonth=e.getMonth(),t.drawYear=t.selectedYear=e.getFullYear(),"M"!==i&&"Y"!==i||this._notifyChange(t)},_restrictMinMax:function(t,e){var i=this._getMinMaxDate(t,"min"),t=this._getMinMaxDate(t,"max"),e=i&&e=i.getTime())&&(!s||e.getTime()<=s.getTime())&&(!n||e.getFullYear()>=n)&&(!o||e.getFullYear()<=o)},_getFormatConfig:function(t){var e=this._get(t,"shortYearCutoff");return{shortYearCutoff:e="string"!=typeof e?e:(new Date).getFullYear()%100+parseInt(e,10),dayNamesShort:this._get(t,"dayNamesShort"),dayNames:this._get(t,"dayNames"),monthNamesShort:this._get(t,"monthNamesShort"),monthNames:this._get(t,"monthNames")}},_formatDate:function(t,e,i,s){e||(t.currentDay=t.selectedDay,t.currentMonth=t.selectedMonth,t.currentYear=t.selectedYear);e=e?"object"==typeof e?e:this._daylightSavingAdjust(new Date(s,i,e)):this._daylightSavingAdjust(new Date(t.currentYear,t.currentMonth,t.currentDay));return this.formatDate(this._get(t,"dateFormat"),e,this._getFormatConfig(t))}}),V.fn.datepicker=function(t){if(!this.length)return this;V.datepicker.initialized||(V(document).on("mousedown",V.datepicker._checkExternalClick),V.datepicker.initialized=!0),0===V("#"+V.datepicker._mainDivId).length&&V("body").append(V.datepicker.dpDiv);var e=Array.prototype.slice.call(arguments,1);return"string"==typeof t&&("isDisabled"===t||"getDate"===t||"widget"===t)||"option"===t&&2===arguments.length&&"string"==typeof arguments[1]?V.datepicker["_"+t+"Datepicker"].apply(V.datepicker,[this[0]].concat(e)):this.each(function(){"string"==typeof t?V.datepicker["_"+t+"Datepicker"].apply(V.datepicker,[this].concat(e)):V.datepicker._attachDatepicker(this,t)})},V.datepicker=new st,V.datepicker.initialized=!1,V.datepicker.uuid=(new Date).getTime(),V.datepicker.version="1.13.1";V.datepicker,V.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase());var rt=!1;V(document).on("mouseup",function(){rt=!1});V.widget("ui.mouse",{version:"1.13.1",options:{cancel:"input, textarea, button, select, option",distance:1,delay:0},_mouseInit:function(){var e=this;this.element.on("mousedown."+this.widgetName,function(t){return e._mouseDown(t)}).on("click."+this.widgetName,function(t){if(!0===V.data(t.target,e.widgetName+".preventClickEvent"))return V.removeData(t.target,e.widgetName+".preventClickEvent"),t.stopImmediatePropagation(),!1}),this.started=!1},_mouseDestroy:function(){this.element.off("."+this.widgetName),this._mouseMoveDelegate&&this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(t){if(!rt){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(t),this._mouseDownEvent=t;var e=this,i=1===t.which,s=!("string"!=typeof this.options.cancel||!t.target.nodeName)&&V(t.target).closest(this.options.cancel).length;return i&&!s&&this._mouseCapture(t)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){e.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=!1!==this._mouseStart(t),!this._mouseStarted)?(t.preventDefault(),!0):(!0===V.data(t.target,this.widgetName+".preventClickEvent")&&V.removeData(t.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(t){return e._mouseMove(t)},this._mouseUpDelegate=function(t){return e._mouseUp(t)},this.document.on("mousemove."+this.widgetName,this._mouseMoveDelegate).on("mouseup."+this.widgetName,this._mouseUpDelegate),t.preventDefault(),rt=!0)):!0}},_mouseMove:function(t){if(this._mouseMoved){if(V.ui.ie&&(!document.documentMode||document.documentMode<9)&&!t.button)return this._mouseUp(t);if(!t.which)if(t.originalEvent.altKey||t.originalEvent.ctrlKey||t.originalEvent.metaKey||t.originalEvent.shiftKey)this.ignoreMissingWhich=!0;else if(!this.ignoreMissingWhich)return this._mouseUp(t)}return(t.which||t.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(t),t.preventDefault()):(this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=!1!==this._mouseStart(this._mouseDownEvent,t),this._mouseStarted?this._mouseDrag(t):this._mouseUp(t)),!this._mouseStarted)},_mouseUp:function(t){this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,t.target===this._mouseDownEvent.target&&V.data(t.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(t)),this._mouseDelayTimer&&(clearTimeout(this._mouseDelayTimer),delete this._mouseDelayTimer),this.ignoreMissingWhich=!1,rt=!1,t.preventDefault()},_mouseDistanceMet:function(t){return Math.max(Math.abs(this._mouseDownEvent.pageX-t.pageX),Math.abs(this._mouseDownEvent.pageY-t.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),V.ui.plugin={add:function(t,e,i){var s,n=V.ui[t].prototype;for(s in i)n.plugins[s]=n.plugins[s]||[],n.plugins[s].push([e,i[s]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;n").css("position","absolute").appendTo(t.parent()).outerWidth(t.outerWidth()).outerHeight(t.outerHeight()).offset(t.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_blurActiveElement:function(t){var e=V.ui.safeActiveElement(this.document[0]);V(t.target).closest(e).length||V.ui.safeBlur(e)},_mouseStart:function(t){var e=this.options;return this.helper=this._createHelper(t),this._addClass(this.helper,"ui-draggable-dragging"),this._cacheHelperProportions(),V.ui.ddmanager&&(V.ui.ddmanager.current=this),this._cacheMargins(),this.cssPosition=this.helper.css("position"),this.scrollParent=this.helper.scrollParent(!0),this.offsetParent=this.helper.offsetParent(),this.hasFixedAncestor=0i[2]&&(o=i[2]+this.offset.click.left),t.pageY-this.offset.click.top>i[3]&&(a=i[3]+this.offset.click.top)),s.grid&&(t=s.grid[1]?this.originalPageY+Math.round((a-this.originalPageY)/s.grid[1])*s.grid[1]:this.originalPageY,a=!i||t-this.offset.click.top>=i[1]||t-this.offset.click.top>i[3]?t:t-this.offset.click.top>=i[1]?t-s.grid[1]:t+s.grid[1],t=s.grid[0]?this.originalPageX+Math.round((o-this.originalPageX)/s.grid[0])*s.grid[0]:this.originalPageX,o=!i||t-this.offset.click.left>=i[0]||t-this.offset.click.left>i[2]?t:t-this.offset.click.left>=i[0]?t-s.grid[0]:t+s.grid[0]),"y"===s.axis&&(o=this.originalPageX),"x"===s.axis&&(a=this.originalPageY)),{top:a-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.offset.scroll.top:n?0:this.offset.scroll.top),left:o-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.offset.scroll.left:n?0:this.offset.scroll.left)}},_clear:function(){this._removeClass(this.helper,"ui-draggable-dragging"),this.helper[0]===this.element[0]||this.cancelHelperRemoval||this.helper.remove(),this.helper=null,this.cancelHelperRemoval=!1,this.destroyOnClear&&this.destroy()},_trigger:function(t,e,i){return i=i||this._uiHash(),V.ui.plugin.call(this,t,[e,i,this],!0),/^(drag|start|stop)/.test(t)&&(this.positionAbs=this._convertPositionTo("absolute"),i.offset=this.positionAbs),V.Widget.prototype._trigger.call(this,t,e,i)},plugins:{},_uiHash:function(){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}}),V.ui.plugin.add("draggable","connectToSortable",{start:function(e,t,i){var s=V.extend({},t,{item:i.element});i.sortables=[],V(i.options.connectToSortable).each(function(){var t=V(this).sortable("instance");t&&!t.options.disabled&&(i.sortables.push(t),t.refreshPositions(),t._trigger("activate",e,s))})},stop:function(e,t,i){var s=V.extend({},t,{item:i.element});i.cancelHelperRemoval=!1,V.each(i.sortables,function(){var t=this;t.isOver?(t.isOver=0,i.cancelHelperRemoval=!0,t.cancelHelperRemoval=!1,t._storedCSS={position:t.placeholder.css("position"),top:t.placeholder.css("top"),left:t.placeholder.css("left")},t._mouseStop(e),t.options.helper=t.options._helper):(t.cancelHelperRemoval=!0,t._trigger("deactivate",e,s))})},drag:function(i,s,n){V.each(n.sortables,function(){var t=!1,e=this;e.positionAbs=n.positionAbs,e.helperProportions=n.helperProportions,e.offset.click=n.offset.click,e._intersectsWith(e.containerCache)&&(t=!0,V.each(n.sortables,function(){return this.positionAbs=n.positionAbs,this.helperProportions=n.helperProportions,this.offset.click=n.offset.click,t=this!==e&&this._intersectsWith(this.containerCache)&&V.contains(e.element[0],this.element[0])?!1:t})),t?(e.isOver||(e.isOver=1,n._parent=s.helper.parent(),e.currentItem=s.helper.appendTo(e.element).data("ui-sortable-item",!0),e.options._helper=e.options.helper,e.options.helper=function(){return s.helper[0]},i.target=e.currentItem[0],e._mouseCapture(i,!0),e._mouseStart(i,!0,!0),e.offset.click.top=n.offset.click.top,e.offset.click.left=n.offset.click.left,e.offset.parent.left-=n.offset.parent.left-e.offset.parent.left,e.offset.parent.top-=n.offset.parent.top-e.offset.parent.top,n._trigger("toSortable",i),n.dropped=e.element,V.each(n.sortables,function(){this.refreshPositions()}),n.currentItem=n.element,e.fromOutside=n),e.currentItem&&(e._mouseDrag(i),s.position=e.position)):e.isOver&&(e.isOver=0,e.cancelHelperRemoval=!0,e.options._revert=e.options.revert,e.options.revert=!1,e._trigger("out",i,e._uiHash(e)),e._mouseStop(i,!0),e.options.revert=e.options._revert,e.options.helper=e.options._helper,e.placeholder&&e.placeholder.remove(),s.helper.appendTo(n._parent),n._refreshOffsets(i),s.position=n._generatePosition(i,!0),n._trigger("fromSortable",i),n.dropped=!1,V.each(n.sortables,function(){this.refreshPositions()}))})}}),V.ui.plugin.add("draggable","cursor",{start:function(t,e,i){var s=V("body"),i=i.options;s.css("cursor")&&(i._cursor=s.css("cursor")),s.css("cursor",i.cursor)},stop:function(t,e,i){i=i.options;i._cursor&&V("body").css("cursor",i._cursor)}}),V.ui.plugin.add("draggable","opacity",{start:function(t,e,i){e=V(e.helper),i=i.options;e.css("opacity")&&(i._opacity=e.css("opacity")),e.css("opacity",i.opacity)},stop:function(t,e,i){i=i.options;i._opacity&&V(e.helper).css("opacity",i._opacity)}}),V.ui.plugin.add("draggable","scroll",{start:function(t,e,i){i.scrollParentNotHidden||(i.scrollParentNotHidden=i.helper.scrollParent(!1)),i.scrollParentNotHidden[0]!==i.document[0]&&"HTML"!==i.scrollParentNotHidden[0].tagName&&(i.overflowOffset=i.scrollParentNotHidden.offset())},drag:function(t,e,i){var s=i.options,n=!1,o=i.scrollParentNotHidden[0],a=i.document[0];o!==a&&"HTML"!==o.tagName?(s.axis&&"x"===s.axis||(i.overflowOffset.top+o.offsetHeight-t.pageY
          ").css({overflow:"hidden",position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,t={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(t),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(t),this._proportionallyResize()),this._setupHandles(),e.autoHide&&V(this.element).on("mouseenter",function(){e.disabled||(i._removeClass("ui-resizable-autohide"),i._handles.show())}).on("mouseleave",function(){e.disabled||i.resizing||(i._addClass("ui-resizable-autohide"),i._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy(),this._addedHandles.remove();function t(t){V(t).removeData("resizable").removeData("ui-resizable").off(".resizable")}var e;return this.elementIsWrapper&&(t(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),t(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;case"aspectRatio":this._aspectRatio=!!e}},_setupHandles:function(){var t,e,i,s,n,o=this.options,a=this;if(this.handles=o.handles||(V(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=V(),this._addedHandles=V(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),i=this.handles.split(","),this.handles={},e=0;e"),this._addClass(n,"ui-resizable-handle "+s),n.css({zIndex:o.zIndex}),this.handles[t]=".ui-resizable-"+t,this.element.children(this.handles[t]).length||(this.element.append(n),this._addedHandles=this._addedHandles.add(n));this._renderAxis=function(t){var e,i,s;for(e in t=t||this.element,this.handles)this.handles[e].constructor===String?this.handles[e]=this.element.children(this.handles[e]).first().show():(this.handles[e].jquery||this.handles[e].nodeType)&&(this.handles[e]=V(this.handles[e]),this._on(this.handles[e],{mousedown:a._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(i=V(this.handles[e],this.element),s=/sw|ne|nw|se|n|s/.test(e)?i.outerHeight():i.outerWidth(),i=["padding",/ne|nw|n/.test(e)?"Top":/se|sw|s/.test(e)?"Bottom":/^e$/.test(e)?"Right":"Left"].join(""),t.css(i,s),this._proportionallyResize()),this._handles=this._handles.add(this.handles[e])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){a.resizing||(this.className&&(n=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),a.axis=n&&n[1]?n[1]:"se")}),o.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._addedHandles.remove()},_mouseCapture:function(t){var e,i,s=!1;for(e in this.handles)(i=V(this.handles[e])[0])!==t.target&&!V.contains(i,t.target)||(s=!0);return!this.options.disabled&&s},_mouseStart:function(t){var e,i,s=this.options,n=this.element;return this.resizing=!0,this._renderProxy(),e=this._num(this.helper.css("left")),i=this._num(this.helper.css("top")),s.containment&&(e+=V(s.containment).scrollLeft()||0,i+=V(s.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:e,top:i},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:n.width(),height:n.height()},this.originalSize=this._helper?{width:n.outerWidth(),height:n.outerHeight()}:{width:n.width(),height:n.height()},this.sizeDiff={width:n.outerWidth()-n.width(),height:n.outerHeight()-n.height()},this.originalPosition={left:e,top:i},this.originalMousePosition={left:t.pageX,top:t.pageY},this.aspectRatio="number"==typeof s.aspectRatio?s.aspectRatio:this.originalSize.width/this.originalSize.height||1,s=V(".ui-resizable-"+this.axis).css("cursor"),V("body").css("cursor","auto"===s?this.axis+"-resize":s),this._addClass("ui-resizable-resizing"),this._propagate("start",t),!0},_mouseDrag:function(t){var e=this.originalMousePosition,i=this.axis,s=t.pageX-e.left||0,e=t.pageY-e.top||0,i=this._change[i];return this._updatePrevProperties(),i&&(e=i.apply(this,[t,s,e]),this._updateVirtualBoundaries(t.shiftKey),(this._aspectRatio||t.shiftKey)&&(e=this._updateRatio(e,t)),e=this._respectSize(e,t),this._updateCache(e),this._propagate("resize",t),e=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),V.isEmptyObject(e)||(this._updatePrevProperties(),this._trigger("resize",t,this.ui()),this._applyChanges())),!1},_mouseStop:function(t){this.resizing=!1;var e,i,s,n=this.options,o=this;return this._helper&&(s=(e=(i=this._proportionallyResizeElements).length&&/textarea/i.test(i[0].nodeName))&&this._hasScroll(i[0],"left")?0:o.sizeDiff.height,i=e?0:o.sizeDiff.width,e={width:o.helper.width()-i,height:o.helper.height()-s},i=parseFloat(o.element.css("left"))+(o.position.left-o.originalPosition.left)||null,s=parseFloat(o.element.css("top"))+(o.position.top-o.originalPosition.top)||null,n.animate||this.element.css(V.extend(e,{top:s,left:i})),o.helper.height(o.size.height),o.helper.width(o.size.width),this._helper&&!n.animate&&this._proportionallyResize()),V("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",t),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s=this.options,n={minWidth:this._isNumber(s.minWidth)?s.minWidth:0,maxWidth:this._isNumber(s.maxWidth)?s.maxWidth:1/0,minHeight:this._isNumber(s.minHeight)?s.minHeight:0,maxHeight:this._isNumber(s.maxHeight)?s.maxHeight:1/0};(this._aspectRatio||t)&&(e=n.minHeight*this.aspectRatio,i=n.minWidth/this.aspectRatio,s=n.maxHeight*this.aspectRatio,t=n.maxWidth/this.aspectRatio,e>n.minWidth&&(n.minWidth=e),i>n.minHeight&&(n.minHeight=i),st.width,a=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,r=this.originalPosition.left+this.originalSize.width,l=this.originalPosition.top+this.originalSize.height,h=/sw|nw|w/.test(i),i=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),a&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&h&&(t.left=r-e.minWidth),s&&h&&(t.left=r-e.maxWidth),a&&i&&(t.top=l-e.minHeight),n&&i&&(t.top=l-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];e<4;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;e
          ").css({overflow:"hidden"}),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++e.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize;return{left:this.originalPosition.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize;return{top:this.originalPosition.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(t,e,i){return V.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},sw:function(t,e,i){return V.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,e,i]))},ne:function(t,e,i){return V.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},nw:function(t,e,i){return V.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,e,i]))}},_propagate:function(t,e){V.ui.plugin.call(this,t,[e,this.ui()]),"resize"!==t&&this._trigger(t,e,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),V.ui.plugin.add("resizable","animate",{stop:function(e){var i=V(this).resizable("instance"),t=i.options,s=i._proportionallyResizeElements,n=s.length&&/textarea/i.test(s[0].nodeName),o=n&&i._hasScroll(s[0],"left")?0:i.sizeDiff.height,a=n?0:i.sizeDiff.width,n={width:i.size.width-a,height:i.size.height-o},a=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,o=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(V.extend(n,o&&a?{top:o,left:a}:{}),{duration:t.animateDuration,easing:t.animateEasing,step:function(){var t={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};s&&s.length&&V(s[0]).css({width:t.width,height:t.height}),i._updateCache(t),i._propagate("resize",e)}})}}),V.ui.plugin.add("resizable","containment",{start:function(){var i,s,n=V(this).resizable("instance"),t=n.options,e=n.element,o=t.containment,a=o instanceof V?o.get(0):/parent/.test(o)?e.parent().get(0):o;a&&(n.containerElement=V(a),/document/.test(o)||o===document?(n.containerOffset={left:0,top:0},n.containerPosition={left:0,top:0},n.parentData={element:V(document),left:0,top:0,width:V(document).width(),height:V(document).height()||document.body.parentNode.scrollHeight}):(i=V(a),s=[],V(["Top","Right","Left","Bottom"]).each(function(t,e){s[t]=n._num(i.css("padding"+e))}),n.containerOffset=i.offset(),n.containerPosition=i.position(),n.containerSize={height:i.innerHeight()-s[3],width:i.innerWidth()-s[1]},t=n.containerOffset,e=n.containerSize.height,o=n.containerSize.width,o=n._hasScroll(a,"left")?a.scrollWidth:o,e=n._hasScroll(a)?a.scrollHeight:e,n.parentData={element:a,left:t.left,top:t.top,width:o,height:e}))},resize:function(t){var e=V(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.position,o=e._aspectRatio||t.shiftKey,a={top:0,left:0},r=e.containerElement,t=!0;r[0]!==document&&/static/.test(r.css("position"))&&(a=s),n.left<(e._helper?s.left:0)&&(e.size.width=e.size.width+(e._helper?e.position.left-s.left:e.position.left-a.left),o&&(e.size.height=e.size.width/e.aspectRatio,t=!1),e.position.left=i.helper?s.left:0),n.top<(e._helper?s.top:0)&&(e.size.height=e.size.height+(e._helper?e.position.top-s.top:e.position.top),o&&(e.size.width=e.size.height*e.aspectRatio,t=!1),e.position.top=e._helper?s.top:0),i=e.containerElement.get(0)===e.element.parent().get(0),n=/relative|absolute/.test(e.containerElement.css("position")),i&&n?(e.offset.left=e.parentData.left+e.position.left,e.offset.top=e.parentData.top+e.position.top):(e.offset.left=e.element.offset().left,e.offset.top=e.element.offset().top),n=Math.abs(e.sizeDiff.width+(e._helper?e.offset.left-a.left:e.offset.left-s.left)),s=Math.abs(e.sizeDiff.height+(e._helper?e.offset.top-a.top:e.offset.top-s.top)),n+e.size.width>=e.parentData.width&&(e.size.width=e.parentData.width-n,o&&(e.size.height=e.size.width/e.aspectRatio,t=!1)),s+e.size.height>=e.parentData.height&&(e.size.height=e.parentData.height-s,o&&(e.size.width=e.size.height*e.aspectRatio,t=!1)),t||(e.position.left=e.prevPosition.left,e.position.top=e.prevPosition.top,e.size.width=e.prevSize.width,e.size.height=e.prevSize.height)},stop:function(){var t=V(this).resizable("instance"),e=t.options,i=t.containerOffset,s=t.containerPosition,n=t.containerElement,o=V(t.helper),a=o.offset(),r=o.outerWidth()-t.sizeDiff.width,o=o.outerHeight()-t.sizeDiff.height;t._helper&&!e.animate&&/relative/.test(n.css("position"))&&V(this).css({left:a.left-s.left-i.left,width:r,height:o}),t._helper&&!e.animate&&/static/.test(n.css("position"))&&V(this).css({left:a.left-s.left-i.left,width:r,height:o})}}),V.ui.plugin.add("resizable","alsoResize",{start:function(){var t=V(this).resizable("instance").options;V(t.alsoResize).each(function(){var t=V(this);t.data("ui-resizable-alsoresize",{width:parseFloat(t.width()),height:parseFloat(t.height()),left:parseFloat(t.css("left")),top:parseFloat(t.css("top"))})})},resize:function(t,i){var e=V(this).resizable("instance"),s=e.options,n=e.originalSize,o=e.originalPosition,a={height:e.size.height-n.height||0,width:e.size.width-n.width||0,top:e.position.top-o.top||0,left:e.position.left-o.left||0};V(s.alsoResize).each(function(){var t=V(this),s=V(this).data("ui-resizable-alsoresize"),n={},e=t.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];V.each(e,function(t,e){var i=(s[e]||0)+(a[e]||0);i&&0<=i&&(n[e]=i||null)}),t.css(n)})},stop:function(){V(this).removeData("ui-resizable-alsoresize")}}),V.ui.plugin.add("resizable","ghost",{start:function(){var t=V(this).resizable("instance"),e=t.size;t.ghost=t.originalElement.clone(),t.ghost.css({opacity:.25,display:"block",position:"relative",height:e.height,width:e.width,margin:0,left:0,top:0}),t._addClass(t.ghost,"ui-resizable-ghost"),!1!==V.uiBackCompat&&"string"==typeof t.options.ghost&&t.ghost.addClass(this.options.ghost),t.ghost.appendTo(t.helper)},resize:function(){var t=V(this).resizable("instance");t.ghost&&t.ghost.css({position:"relative",height:t.size.height,width:t.size.width})},stop:function(){var t=V(this).resizable("instance");t.ghost&&t.helper&&t.helper.get(0).removeChild(t.ghost.get(0))}}),V.ui.plugin.add("resizable","grid",{resize:function(){var t,e=V(this).resizable("instance"),i=e.options,s=e.size,n=e.originalSize,o=e.originalPosition,a=e.axis,r="number"==typeof i.grid?[i.grid,i.grid]:i.grid,l=r[0]||1,h=r[1]||1,c=Math.round((s.width-n.width)/l)*l,u=Math.round((s.height-n.height)/h)*h,d=n.width+c,p=n.height+u,f=i.maxWidth&&i.maxWidthd,s=i.minHeight&&i.minHeight>p;i.grid=r,m&&(d+=l),s&&(p+=h),f&&(d-=l),g&&(p-=h),/^(se|s|e)$/.test(a)?(e.size.width=d,e.size.height=p):/^(ne)$/.test(a)?(e.size.width=d,e.size.height=p,e.position.top=o.top-u):/^(sw)$/.test(a)?(e.size.width=d,e.size.height=p,e.position.left=o.left-c):((p-h<=0||d-l<=0)&&(t=e._getPaddingPlusBorderDimensions(this)),0=+this.uiDialog.css("z-index")&&(this.uiDialog.css("z-index",s+1),i=!0),i&&!e&&this._trigger("focus",t),i},open:function(){var t=this;this._isOpen?this._moveToTop()&&this._focusTabbable():(this._isOpen=!0,this.opener=V(V.ui.safeActiveElement(this.document[0])),this._size(),this._position(),this._createOverlay(),this._moveToTop(null,!0),this.overlay&&this.overlay.css("z-index",this.uiDialog.css("z-index")-1),this._show(this.uiDialog,this.options.show,function(){t._focusTabbable(),t._trigger("focus")}),this._makeFocusTarget(),this._trigger("open"))},_focusTabbable:function(){var t=this._focusedElement;(t=!(t=!(t=!(t=!(t=t||this.element.find("[autofocus]")).length?this.element.find(":tabbable"):t).length?this.uiDialogButtonPane.find(":tabbable"):t).length?this.uiDialogTitlebarClose.filter(":tabbable"):t).length?this.uiDialog:t).eq(0).trigger("focus")},_restoreTabbableFocus:function(){var t=V.ui.safeActiveElement(this.document[0]);this.uiDialog[0]===t||V.contains(this.uiDialog[0],t)||this._focusTabbable()},_keepFocus:function(t){t.preventDefault(),this._restoreTabbableFocus(),this._delay(this._restoreTabbableFocus)},_createWrapper:function(){this.uiDialog=V("
          ").hide().attr({tabIndex:-1,role:"dialog"}).appendTo(this._appendTo()),this._addClass(this.uiDialog,"ui-dialog","ui-widget ui-widget-content ui-front"),this._on(this.uiDialog,{keydown:function(t){if(this.options.closeOnEscape&&!t.isDefaultPrevented()&&t.keyCode&&t.keyCode===V.ui.keyCode.ESCAPE)return t.preventDefault(),void this.close(t);var e,i,s;t.keyCode!==V.ui.keyCode.TAB||t.isDefaultPrevented()||(e=this.uiDialog.find(":tabbable"),i=e.first(),s=e.last(),t.target!==s[0]&&t.target!==this.uiDialog[0]||t.shiftKey?t.target!==i[0]&&t.target!==this.uiDialog[0]||!t.shiftKey||(this._delay(function(){s.trigger("focus")}),t.preventDefault()):(this._delay(function(){i.trigger("focus")}),t.preventDefault()))},mousedown:function(t){this._moveToTop(t)&&this._focusTabbable()}}),this.element.find("[aria-describedby]").length||this.uiDialog.attr({"aria-describedby":this.element.uniqueId().attr("id")})},_createTitlebar:function(){var t;this.uiDialogTitlebar=V("
          "),this._addClass(this.uiDialogTitlebar,"ui-dialog-titlebar","ui-widget-header ui-helper-clearfix"),this._on(this.uiDialogTitlebar,{mousedown:function(t){V(t.target).closest(".ui-dialog-titlebar-close")||this.uiDialog.trigger("focus")}}),this.uiDialogTitlebarClose=V("").button({label:V("").text(this.options.closeText).html(),icon:"ui-icon-closethick",showLabel:!1}).appendTo(this.uiDialogTitlebar),this._addClass(this.uiDialogTitlebarClose,"ui-dialog-titlebar-close"),this._on(this.uiDialogTitlebarClose,{click:function(t){t.preventDefault(),this.close(t)}}),t=V("").uniqueId().prependTo(this.uiDialogTitlebar),this._addClass(t,"ui-dialog-title"),this._title(t),this.uiDialogTitlebar.prependTo(this.uiDialog),this.uiDialog.attr({"aria-labelledby":t.attr("id")})},_title:function(t){this.options.title?t.text(this.options.title):t.html(" ")},_createButtonPane:function(){this.uiDialogButtonPane=V("
          "),this._addClass(this.uiDialogButtonPane,"ui-dialog-buttonpane","ui-widget-content ui-helper-clearfix"),this.uiButtonSet=V("
          ").appendTo(this.uiDialogButtonPane),this._addClass(this.uiButtonSet,"ui-dialog-buttonset"),this._createButtons()},_createButtons:function(){var s=this,t=this.options.buttons;this.uiDialogButtonPane.remove(),this.uiButtonSet.empty(),V.isEmptyObject(t)||Array.isArray(t)&&!t.length?this._removeClass(this.uiDialog,"ui-dialog-buttons"):(V.each(t,function(t,e){var i;e=V.extend({type:"button"},e="function"==typeof e?{click:e,text:t}:e),i=e.click,t={icon:e.icon,iconPosition:e.iconPosition,showLabel:e.showLabel,icons:e.icons,text:e.text},delete e.click,delete e.icon,delete e.iconPosition,delete e.showLabel,delete e.icons,"boolean"==typeof e.text&&delete e.text,V("",e).button(t).appendTo(s.uiButtonSet).on("click",function(){i.apply(s.element[0],arguments)})}),this._addClass(this.uiDialog,"ui-dialog-buttons"),this.uiDialogButtonPane.appendTo(this.uiDialog))},_makeDraggable:function(){var n=this,o=this.options;function a(t){return{position:t.position,offset:t.offset}}this.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(t,e){n._addClass(V(this),"ui-dialog-dragging"),n._blockFrames(),n._trigger("dragStart",t,a(e))},drag:function(t,e){n._trigger("drag",t,a(e))},stop:function(t,e){var i=e.offset.left-n.document.scrollLeft(),s=e.offset.top-n.document.scrollTop();o.position={my:"left top",at:"left"+(0<=i?"+":"")+i+" top"+(0<=s?"+":"")+s,of:n.window},n._removeClass(V(this),"ui-dialog-dragging"),n._unblockFrames(),n._trigger("dragStop",t,a(e))}})},_makeResizable:function(){var n=this,o=this.options,t=o.resizable,e=this.uiDialog.css("position"),t="string"==typeof t?t:"n,e,s,w,se,sw,ne,nw";function a(t){return{originalPosition:t.originalPosition,originalSize:t.originalSize,position:t.position,size:t.size}}this.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:this.element,maxWidth:o.maxWidth,maxHeight:o.maxHeight,minWidth:o.minWidth,minHeight:this._minHeight(),handles:t,start:function(t,e){n._addClass(V(this),"ui-dialog-resizing"),n._blockFrames(),n._trigger("resizeStart",t,a(e))},resize:function(t,e){n._trigger("resize",t,a(e))},stop:function(t,e){var i=n.uiDialog.offset(),s=i.left-n.document.scrollLeft(),i=i.top-n.document.scrollTop();o.height=n.uiDialog.height(),o.width=n.uiDialog.width(),o.position={my:"left top",at:"left"+(0<=s?"+":"")+s+" top"+(0<=i?"+":"")+i,of:n.window},n._removeClass(V(this),"ui-dialog-resizing"),n._unblockFrames(),n._trigger("resizeStop",t,a(e))}}).css("position",e)},_trackFocus:function(){this._on(this.widget(),{focusin:function(t){this._makeFocusTarget(),this._focusedElement=V(t.target)}})},_makeFocusTarget:function(){this._untrackInstance(),this._trackingInstances().unshift(this)},_untrackInstance:function(){var t=this._trackingInstances(),e=V.inArray(this,t);-1!==e&&t.splice(e,1)},_trackingInstances:function(){var t=this.document.data("ui-dialog-instances");return t||this.document.data("ui-dialog-instances",t=[]),t},_minHeight:function(){var t=this.options;return"auto"===t.height?t.minHeight:Math.min(t.minHeight,t.height)},_position:function(){var t=this.uiDialog.is(":visible");t||this.uiDialog.show(),this.uiDialog.position(this.options.position),t||this.uiDialog.hide()},_setOptions:function(t){var i=this,s=!1,n={};V.each(t,function(t,e){i._setOption(t,e),t in i.sizeRelatedOptions&&(s=!0),t in i.resizableRelatedOptions&&(n[t]=e)}),s&&(this._size(),this._position()),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option",n)},_setOption:function(t,e){var i,s=this.uiDialog;"disabled"!==t&&(this._super(t,e),"appendTo"===t&&this.uiDialog.appendTo(this._appendTo()),"buttons"===t&&this._createButtons(),"closeText"===t&&this.uiDialogTitlebarClose.button({label:V("").text(""+this.options.closeText).html()}),"draggable"===t&&((i=s.is(":data(ui-draggable)"))&&!e&&s.draggable("destroy"),!i&&e&&this._makeDraggable()),"position"===t&&this._position(),"resizable"===t&&((i=s.is(":data(ui-resizable)"))&&!e&&s.resizable("destroy"),i&&"string"==typeof e&&s.resizable("option","handles",e),i||!1===e||this._makeResizable()),"title"===t&&this._title(this.uiDialogTitlebar.find(".ui-dialog-title")))},_size:function(){var t,e,i,s=this.options;this.element.show().css({width:"auto",minHeight:0,maxHeight:"none",height:0}),s.minWidth>s.width&&(s.width=s.minWidth),t=this.uiDialog.css({height:"auto",width:s.width}).outerHeight(),e=Math.max(0,s.minHeight-t),i="number"==typeof s.maxHeight?Math.max(0,s.maxHeight-t):"none","auto"===s.height?this.element.css({minHeight:e,maxHeight:i,height:"auto"}):this.element.height(Math.max(0,s.height-t)),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())},_blockFrames:function(){this.iframeBlocks=this.document.find("iframe").map(function(){var t=V(this);return V("
          ").css({position:"absolute",width:t.outerWidth(),height:t.outerHeight()}).appendTo(t.parent()).offset(t.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_allowInteraction:function(t){return!!V(t.target).closest(".ui-dialog").length||!!V(t.target).closest(".ui-datepicker").length},_createOverlay:function(){var i,s;this.options.modal&&(i=V.fn.jquery.substring(0,4),s=!0,this._delay(function(){s=!1}),this.document.data("ui-dialog-overlays")||this.document.on("focusin.ui-dialog",function(t){var e;s||((e=this._trackingInstances()[0])._allowInteraction(t)||(t.preventDefault(),e._focusTabbable(),"3.4."!==i&&"3.5."!==i||e._delay(e._restoreTabbableFocus)))}.bind(this)),this.overlay=V("
          ").appendTo(this._appendTo()),this._addClass(this.overlay,null,"ui-widget-overlay ui-front"),this._on(this.overlay,{mousedown:"_keepFocus"}),this.document.data("ui-dialog-overlays",(this.document.data("ui-dialog-overlays")||0)+1))},_destroyOverlay:function(){var t;this.options.modal&&this.overlay&&((t=this.document.data("ui-dialog-overlays")-1)?this.document.data("ui-dialog-overlays",t):(this.document.off("focusin.ui-dialog"),this.document.removeData("ui-dialog-overlays")),this.overlay.remove(),this.overlay=null)}}),!1!==V.uiBackCompat&&V.widget("ui.dialog",V.ui.dialog,{options:{dialogClass:""},_createWrapper:function(){this._super(),this.uiDialog.addClass(this.options.dialogClass)},_setOption:function(t,e){"dialogClass"===t&&this.uiDialog.removeClass(this.options.dialogClass).addClass(e),this._superApply(arguments)}});V.ui.dialog;function lt(t,e,i){return e<=t&&t").appendTo(this.element),this._addClass(this.valueDiv,"ui-progressbar-value","ui-widget-header"),this._refreshValue()},_destroy:function(){this.element.removeAttr("role aria-valuemin aria-valuemax aria-valuenow"),this.valueDiv.remove()},value:function(t){if(void 0===t)return this.options.value;this.options.value=this._constrainedValue(t),this._refreshValue()},_constrainedValue:function(t){return void 0===t&&(t=this.options.value),this.indeterminate=!1===t,"number"!=typeof t&&(t=0),!this.indeterminate&&Math.min(this.options.max,Math.max(this.min,t))},_setOptions:function(t){var e=t.value;delete t.value,this._super(t),this.options.value=this._constrainedValue(e),this._refreshValue()},_setOption:function(t,e){"max"===t&&(e=Math.max(this.min,e)),this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",t),this._toggleClass(null,"ui-state-disabled",!!t)},_percentage:function(){return this.indeterminate?100:100*(this.options.value-this.min)/(this.options.max-this.min)},_refreshValue:function(){var t=this.options.value,e=this._percentage();this.valueDiv.toggle(this.indeterminate||t>this.min).width(e.toFixed(0)+"%"),this._toggleClass(this.valueDiv,"ui-progressbar-complete",null,t===this.options.max)._toggleClass("ui-progressbar-indeterminate",null,this.indeterminate),this.indeterminate?(this.element.removeAttr("aria-valuenow"),this.overlayDiv||(this.overlayDiv=V("
          ").appendTo(this.valueDiv),this._addClass(this.overlayDiv,"ui-progressbar-overlay"))):(this.element.attr({"aria-valuemax":this.options.max,"aria-valuenow":t}),this.overlayDiv&&(this.overlayDiv.remove(),this.overlayDiv=null)),this.oldValue!==t&&(this.oldValue=t,this._trigger("change")),t===this.options.max&&this._trigger("complete")}}),V.widget("ui.selectable",V.ui.mouse,{version:"1.13.1",options:{appendTo:"body",autoRefresh:!0,distance:0,filter:"*",tolerance:"touch",selected:null,selecting:null,start:null,stop:null,unselected:null,unselecting:null},_create:function(){var i=this;this._addClass("ui-selectable"),this.dragged=!1,this.refresh=function(){i.elementPos=V(i.element[0]).offset(),i.selectees=V(i.options.filter,i.element[0]),i._addClass(i.selectees,"ui-selectee"),i.selectees.each(function(){var t=V(this),e=t.offset(),e={left:e.left-i.elementPos.left,top:e.top-i.elementPos.top};V.data(this,"selectable-item",{element:this,$element:t,left:e.left,top:e.top,right:e.left+t.outerWidth(),bottom:e.top+t.outerHeight(),startselected:!1,selected:t.hasClass("ui-selected"),selecting:t.hasClass("ui-selecting"),unselecting:t.hasClass("ui-unselecting")})})},this.refresh(),this._mouseInit(),this.helper=V("
          "),this._addClass(this.helper,"ui-selectable-helper")},_destroy:function(){this.selectees.removeData("selectable-item"),this._mouseDestroy()},_mouseStart:function(i){var s=this,t=this.options;this.opos=[i.pageX,i.pageY],this.elementPos=V(this.element[0]).offset(),this.options.disabled||(this.selectees=V(t.filter,this.element[0]),this._trigger("start",i),V(t.appendTo).append(this.helper),this.helper.css({left:i.pageX,top:i.pageY,width:0,height:0}),t.autoRefresh&&this.refresh(),this.selectees.filter(".ui-selected").each(function(){var t=V.data(this,"selectable-item");t.startselected=!0,i.metaKey||i.ctrlKey||(s._removeClass(t.$element,"ui-selected"),t.selected=!1,s._addClass(t.$element,"ui-unselecting"),t.unselecting=!0,s._trigger("unselecting",i,{unselecting:t.element}))}),V(i.target).parents().addBack().each(function(){var t,e=V.data(this,"selectable-item");if(e)return t=!i.metaKey&&!i.ctrlKey||!e.$element.hasClass("ui-selected"),s._removeClass(e.$element,t?"ui-unselecting":"ui-selected")._addClass(e.$element,t?"ui-selecting":"ui-unselecting"),e.unselecting=!t,e.selecting=t,(e.selected=t)?s._trigger("selecting",i,{selecting:e.element}):s._trigger("unselecting",i,{unselecting:e.element}),!1}))},_mouseDrag:function(s){if(this.dragged=!0,!this.options.disabled){var t,n=this,o=this.options,a=this.opos[0],r=this.opos[1],l=s.pageX,h=s.pageY;return ll||i.righth||i.bottoma&&i.rightr&&i.bottom",options:{appendTo:null,classes:{"ui-selectmenu-button-open":"ui-corner-top","ui-selectmenu-button-closed":"ui-corner-all"},disabled:null,icons:{button:"ui-icon-triangle-1-s"},position:{my:"left top",at:"left bottom",collision:"none"},width:!1,change:null,close:null,focus:null,open:null,select:null},_create:function(){var t=this.element.uniqueId().attr("id");this.ids={element:t,button:t+"-button",menu:t+"-menu"},this._drawButton(),this._drawMenu(),this._bindFormResetHandler(),this._rendered=!1,this.menuItems=V()},_drawButton:function(){var t,e=this,i=this._parseOption(this.element.find("option:selected"),this.element[0].selectedIndex);this.labels=this.element.labels().attr("for",this.ids.button),this._on(this.labels,{click:function(t){this.button.trigger("focus"),t.preventDefault()}}),this.element.hide(),this.button=V("",{tabindex:this.options.disabled?-1:0,id:this.ids.button,role:"combobox","aria-expanded":"false","aria-autocomplete":"list","aria-owns":this.ids.menu,"aria-haspopup":"true",title:this.element.attr("title")}).insertAfter(this.element),this._addClass(this.button,"ui-selectmenu-button ui-selectmenu-button-closed","ui-button ui-widget"),t=V("").appendTo(this.button),this._addClass(t,"ui-selectmenu-icon","ui-icon "+this.options.icons.button),this.buttonItem=this._renderButtonItem(i).appendTo(this.button),!1!==this.options.width&&this._resizeButton(),this._on(this.button,this._buttonEvents),this.button.one("focusin",function(){e._rendered||e._refreshMenu()})},_drawMenu:function(){var i=this;this.menu=V("
            ",{"aria-hidden":"true","aria-labelledby":this.ids.button,id:this.ids.menu}),this.menuWrap=V("
            ").append(this.menu),this._addClass(this.menuWrap,"ui-selectmenu-menu","ui-front"),this.menuWrap.appendTo(this._appendTo()),this.menuInstance=this.menu.menu({classes:{"ui-menu":"ui-corner-bottom"},role:"listbox",select:function(t,e){t.preventDefault(),i._setSelection(),i._select(e.item.data("ui-selectmenu-item"),t)},focus:function(t,e){e=e.item.data("ui-selectmenu-item");null!=i.focusIndex&&e.index!==i.focusIndex&&(i._trigger("focus",t,{item:e}),i.isOpen||i._select(e,t)),i.focusIndex=e.index,i.button.attr("aria-activedescendant",i.menuItems.eq(e.index).attr("id"))}}).menu("instance"),this.menuInstance._off(this.menu,"mouseleave"),this.menuInstance._closeOnDocumentClick=function(){return!1},this.menuInstance._isDivider=function(){return!1}},refresh:function(){this._refreshMenu(),this.buttonItem.replaceWith(this.buttonItem=this._renderButtonItem(this._getSelectedItem().data("ui-selectmenu-item")||{})),null===this.options.width&&this._resizeButton()},_refreshMenu:function(){var t=this.element.find("option");this.menu.empty(),this._parseOptions(t),this._renderMenu(this.menu,this.items),this.menuInstance.refresh(),this.menuItems=this.menu.find("li").not(".ui-selectmenu-optgroup").find(".ui-menu-item-wrapper"),this._rendered=!0,t.length&&(t=this._getSelectedItem(),this.menuInstance.focus(null,t),this._setAria(t.data("ui-selectmenu-item")),this._setOption("disabled",this.element.prop("disabled")))},open:function(t){this.options.disabled||(this._rendered?(this._removeClass(this.menu.find(".ui-state-active"),null,"ui-state-active"),this.menuInstance.focus(null,this._getSelectedItem())):this._refreshMenu(),this.menuItems.length&&(this.isOpen=!0,this._toggleAttr(),this._resizeMenu(),this._position(),this._on(this.document,this._documentClick),this._trigger("open",t)))},_position:function(){this.menuWrap.position(V.extend({of:this.button},this.options.position))},close:function(t){this.isOpen&&(this.isOpen=!1,this._toggleAttr(),this.range=null,this._off(this.document),this._trigger("close",t))},widget:function(){return this.button},menuWidget:function(){return this.menu},_renderButtonItem:function(t){var e=V("");return this._setText(e,t.label),this._addClass(e,"ui-selectmenu-text"),e},_renderMenu:function(s,t){var n=this,o="";V.each(t,function(t,e){var i;e.optgroup!==o&&(i=V("
          • ",{text:e.optgroup}),n._addClass(i,"ui-selectmenu-optgroup","ui-menu-divider"+(e.element.parent("optgroup").prop("disabled")?" ui-state-disabled":"")),i.appendTo(s),o=e.optgroup),n._renderItemData(s,e)})},_renderItemData:function(t,e){return this._renderItem(t,e).data("ui-selectmenu-item",e)},_renderItem:function(t,e){var i=V("
          • "),s=V("
            ",{title:e.element.attr("title")});return e.disabled&&this._addClass(i,null,"ui-state-disabled"),this._setText(s,e.label),i.append(s).appendTo(t)},_setText:function(t,e){e?t.text(e):t.html(" ")},_move:function(t,e){var i,s=".ui-menu-item";this.isOpen?i=this.menuItems.eq(this.focusIndex).parent("li"):(i=this.menuItems.eq(this.element[0].selectedIndex).parent("li"),s+=":not(.ui-state-disabled)"),(s="first"===t||"last"===t?i["first"===t?"prevAll":"nextAll"](s).eq(-1):i[t+"All"](s).eq(0)).length&&this.menuInstance.focus(e,s)},_getSelectedItem:function(){return this.menuItems.eq(this.element[0].selectedIndex).parent("li")},_toggle:function(t){this[this.isOpen?"close":"open"](t)},_setSelection:function(){var t;this.range&&(window.getSelection?((t=window.getSelection()).removeAllRanges(),t.addRange(this.range)):this.range.select(),this.button.focus())},_documentClick:{mousedown:function(t){this.isOpen&&(V(t.target).closest(".ui-selectmenu-menu, #"+V.escapeSelector(this.ids.button)).length||this.close(t))}},_buttonEvents:{mousedown:function(){var t;window.getSelection?(t=window.getSelection()).rangeCount&&(this.range=t.getRangeAt(0)):this.range=document.selection.createRange()},click:function(t){this._setSelection(),this._toggle(t)},keydown:function(t){var e=!0;switch(t.keyCode){case V.ui.keyCode.TAB:case V.ui.keyCode.ESCAPE:this.close(t),e=!1;break;case V.ui.keyCode.ENTER:this.isOpen&&this._selectFocusedItem(t);break;case V.ui.keyCode.UP:t.altKey?this._toggle(t):this._move("prev",t);break;case V.ui.keyCode.DOWN:t.altKey?this._toggle(t):this._move("next",t);break;case V.ui.keyCode.SPACE:this.isOpen?this._selectFocusedItem(t):this._toggle(t);break;case V.ui.keyCode.LEFT:this._move("prev",t);break;case V.ui.keyCode.RIGHT:this._move("next",t);break;case V.ui.keyCode.HOME:case V.ui.keyCode.PAGE_UP:this._move("first",t);break;case V.ui.keyCode.END:case V.ui.keyCode.PAGE_DOWN:this._move("last",t);break;default:this.menu.trigger(t),e=!1}e&&t.preventDefault()}},_selectFocusedItem:function(t){var e=this.menuItems.eq(this.focusIndex).parent("li");e.hasClass("ui-state-disabled")||this._select(e.data("ui-selectmenu-item"),t)},_select:function(t,e){var i=this.element[0].selectedIndex;this.element[0].selectedIndex=t.index,this.buttonItem.replaceWith(this.buttonItem=this._renderButtonItem(t)),this._setAria(t),this._trigger("select",e,{item:t}),t.index!==i&&this._trigger("change",e,{item:t}),this.close(e)},_setAria:function(t){t=this.menuItems.eq(t.index).attr("id");this.button.attr({"aria-labelledby":t,"aria-activedescendant":t}),this.menu.attr("aria-activedescendant",t)},_setOption:function(t,e){var i;"icons"===t&&(i=this.button.find("span.ui-icon"),this._removeClass(i,null,this.options.icons.button)._addClass(i,null,e.button)),this._super(t,e),"appendTo"===t&&this.menuWrap.appendTo(this._appendTo()),"width"===t&&this._resizeButton()},_setOptionDisabled:function(t){this._super(t),this.menuInstance.option("disabled",t),this.button.attr("aria-disabled",t),this._toggleClass(this.button,null,"ui-state-disabled",t),this.element.prop("disabled",t),t?(this.button.attr("tabindex",-1),this.close()):this.button.attr("tabindex",0)},_appendTo:function(){var t=this.options.appendTo;return t=!(t=!(t=t&&(t.jquery||t.nodeType?V(t):this.document.find(t).eq(0)))||!t[0]?this.element.closest(".ui-front, dialog"):t).length?this.document[0].body:t},_toggleAttr:function(){this.button.attr("aria-expanded",this.isOpen),this._removeClass(this.button,"ui-selectmenu-button-"+(this.isOpen?"closed":"open"))._addClass(this.button,"ui-selectmenu-button-"+(this.isOpen?"open":"closed"))._toggleClass(this.menuWrap,"ui-selectmenu-open",null,this.isOpen),this.menu.attr("aria-hidden",!this.isOpen)},_resizeButton:function(){var t=this.options.width;!1!==t?(null===t&&(t=this.element.show().outerWidth(),this.element.hide()),this.button.outerWidth(t)):this.button.css("width","")},_resizeMenu:function(){this.menu.outerWidth(Math.max(this.button.outerWidth(),this.menu.width("").outerWidth()+1))},_getCreateOptions:function(){var t=this._super();return t.disabled=this.element.prop("disabled"),t},_parseOptions:function(t){var i=this,s=[];t.each(function(t,e){e.hidden||s.push(i._parseOption(V(e),t))}),this.items=s},_parseOption:function(t,e){var i=t.parent("optgroup");return{element:t,index:e,value:t.val(),label:t.text(),optgroup:i.attr("label")||"",disabled:i.prop("disabled")||t.prop("disabled")}},_destroy:function(){this._unbindFormResetHandler(),this.menuWrap.remove(),this.button.remove(),this.element.show(),this.element.removeUniqueId(),this.labels.attr("for",this.ids.element)}}]),V.widget("ui.slider",V.ui.mouse,{version:"1.13.1",widgetEventPrefix:"slide",options:{animate:!1,classes:{"ui-slider":"ui-corner-all","ui-slider-handle":"ui-corner-all","ui-slider-range":"ui-corner-all ui-widget-header"},distance:0,max:100,min:0,orientation:"horizontal",range:!1,step:1,value:0,values:null,change:null,slide:null,start:null,stop:null},numPages:5,_create:function(){this._keySliding=!1,this._mouseSliding=!1,this._animateOff=!0,this._handleIndex=null,this._detectOrientation(),this._mouseInit(),this._calculateNewMax(),this._addClass("ui-slider ui-slider-"+this.orientation,"ui-widget ui-widget-content"),this._refresh(),this._animateOff=!1},_refresh:function(){this._createRange(),this._createHandles(),this._setupEvents(),this._refreshValue()},_createHandles:function(){var t,e=this.options,i=this.element.find(".ui-slider-handle"),s=[],n=e.values&&e.values.length||1;for(i.length>n&&(i.slice(n).remove(),i=i.slice(0,n)),t=i.length;t");this.handles=i.add(V(s.join("")).appendTo(this.element)),this._addClass(this.handles,"ui-slider-handle","ui-state-default"),this.handle=this.handles.eq(0),this.handles.each(function(t){V(this).data("ui-slider-handle-index",t).attr("tabIndex",0)})},_createRange:function(){var t=this.options;t.range?(!0===t.range&&(t.values?t.values.length&&2!==t.values.length?t.values=[t.values[0],t.values[0]]:Array.isArray(t.values)&&(t.values=t.values.slice(0)):t.values=[this._valueMin(),this._valueMin()]),this.range&&this.range.length?(this._removeClass(this.range,"ui-slider-range-min ui-slider-range-max"),this.range.css({left:"",bottom:""})):(this.range=V("
            ").appendTo(this.element),this._addClass(this.range,"ui-slider-range")),"min"!==t.range&&"max"!==t.range||this._addClass(this.range,"ui-slider-range-"+t.range)):(this.range&&this.range.remove(),this.range=null)},_setupEvents:function(){this._off(this.handles),this._on(this.handles,this._handleEvents),this._hoverable(this.handles),this._focusable(this.handles)},_destroy:function(){this.handles.remove(),this.range&&this.range.remove(),this._mouseDestroy()},_mouseCapture:function(t){var i,s,n,o,e,a,r=this,l=this.options;return!l.disabled&&(this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()},this.elementOffset=this.element.offset(),a={x:t.pageX,y:t.pageY},i=this._normValueFromMouse(a),s=this._valueMax()-this._valueMin()+1,this.handles.each(function(t){var e=Math.abs(i-r.values(t));(e=this._valueMax())return this._valueMax();var e=0=e&&(t+=0this.options.max&&(t-=i),this.max=parseFloat(t.toFixed(this._precision()))},_precision:function(){var t=this._precisionOf(this.options.step);return t=null!==this.options.min?Math.max(t,this._precisionOf(this.options.min)):t},_precisionOf:function(t){var e=t.toString(),t=e.indexOf(".");return-1===t?0:e.length-t-1},_valueMin:function(){return this.options.min},_valueMax:function(){return this.max},_refreshRange:function(t){"vertical"===t&&this.range.css({width:"",left:""}),"horizontal"===t&&this.range.css({height:"",bottom:""})},_refreshValue:function(){var e,i,t,s,n,o=this.options.range,a=this.options,r=this,l=!this._animateOff&&a.animate,h={};this._hasMultipleValues()?this.handles.each(function(t){i=(r.values(t)-r._valueMin())/(r._valueMax()-r._valueMin())*100,h["horizontal"===r.orientation?"left":"bottom"]=i+"%",V(this).stop(1,1)[l?"animate":"css"](h,a.animate),!0===r.options.range&&("horizontal"===r.orientation?(0===t&&r.range.stop(1,1)[l?"animate":"css"]({left:i+"%"},a.animate),1===t&&r.range[l?"animate":"css"]({width:i-e+"%"},{queue:!1,duration:a.animate})):(0===t&&r.range.stop(1,1)[l?"animate":"css"]({bottom:i+"%"},a.animate),1===t&&r.range[l?"animate":"css"]({height:i-e+"%"},{queue:!1,duration:a.animate}))),e=i}):(t=this.value(),s=this._valueMin(),n=this._valueMax(),i=n!==s?(t-s)/(n-s)*100:0,h["horizontal"===this.orientation?"left":"bottom"]=i+"%",this.handle.stop(1,1)[l?"animate":"css"](h,a.animate),"min"===o&&"horizontal"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({width:i+"%"},a.animate),"max"===o&&"horizontal"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({width:100-i+"%"},a.animate),"min"===o&&"vertical"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({height:i+"%"},a.animate),"max"===o&&"vertical"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({height:100-i+"%"},a.animate))},_handleEvents:{keydown:function(t){var e,i,s,n=V(t.target).data("ui-slider-handle-index");switch(t.keyCode){case V.ui.keyCode.HOME:case V.ui.keyCode.END:case V.ui.keyCode.PAGE_UP:case V.ui.keyCode.PAGE_DOWN:case V.ui.keyCode.UP:case V.ui.keyCode.RIGHT:case V.ui.keyCode.DOWN:case V.ui.keyCode.LEFT:if(t.preventDefault(),!this._keySliding&&(this._keySliding=!0,this._addClass(V(t.target),null,"ui-state-active"),!1===this._start(t,n)))return}switch(s=this.options.step,e=i=this._hasMultipleValues()?this.values(n):this.value(),t.keyCode){case V.ui.keyCode.HOME:i=this._valueMin();break;case V.ui.keyCode.END:i=this._valueMax();break;case V.ui.keyCode.PAGE_UP:i=this._trimAlignValue(e+(this._valueMax()-this._valueMin())/this.numPages);break;case V.ui.keyCode.PAGE_DOWN:i=this._trimAlignValue(e-(this._valueMax()-this._valueMin())/this.numPages);break;case V.ui.keyCode.UP:case V.ui.keyCode.RIGHT:if(e===this._valueMax())return;i=this._trimAlignValue(e+s);break;case V.ui.keyCode.DOWN:case V.ui.keyCode.LEFT:if(e===this._valueMin())return;i=this._trimAlignValue(e-s)}this._slide(t,n,i)},keyup:function(t){var e=V(t.target).data("ui-slider-handle-index");this._keySliding&&(this._keySliding=!1,this._stop(t,e),this._change(t,e),this._removeClass(V(t.target),null,"ui-state-active"))}}}),V.widget("ui.sortable",V.ui.mouse,{version:"1.13.1",widgetEventPrefix:"sort",ready:!1,options:{appendTo:"parent",axis:!1,connectWith:!1,containment:!1,cursor:"auto",cursorAt:!1,dropOnEmpty:!0,forcePlaceholderSize:!1,forceHelperSize:!1,grid:!1,handle:!1,helper:"original",items:"> *",opacity:!1,placeholder:!1,revert:!1,scroll:!0,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1e3,activate:null,beforeStop:null,change:null,deactivate:null,out:null,over:null,receive:null,remove:null,sort:null,start:null,stop:null,update:null},_isOverAxis:function(t,e,i){return e<=t&&t*{ cursor: "+o.cursor+" !important; }").appendTo(n)),o.zIndex&&(this.helper.css("zIndex")&&(this._storedZIndex=this.helper.css("zIndex")),this.helper.css("zIndex",o.zIndex)),o.opacity&&(this.helper.css("opacity")&&(this._storedOpacity=this.helper.css("opacity")),this.helper.css("opacity",o.opacity)),this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName&&(this.overflowOffset=this.scrollParent.offset()),this._trigger("start",t,this._uiHash()),this._preserveHelperProportions||this._cacheHelperProportions(),!i)for(s=this.containers.length-1;0<=s;s--)this.containers[s]._trigger("activate",t,this._uiHash(this));return V.ui.ddmanager&&(V.ui.ddmanager.current=this),V.ui.ddmanager&&!o.dropBehaviour&&V.ui.ddmanager.prepareOffsets(this,t),this.dragging=!0,this._addClass(this.helper,"ui-sortable-helper"),this.helper.parent().is(this.appendTo)||(this.helper.detach().appendTo(this.appendTo),this.offset.parent=this._getParentOffset()),this.position=this.originalPosition=this._generatePosition(t),this.originalPageX=t.pageX,this.originalPageY=t.pageY,this.lastPositionAbs=this.positionAbs=this._convertPositionTo("absolute"),this._mouseDrag(t),!0},_scroll:function(t){var e=this.options,i=!1;return this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName?(this.overflowOffset.top+this.scrollParent[0].offsetHeight-t.pageYt[this.floating?"width":"height"]?h&&c:o",i.document[0]);return i._addClass(t,"ui-sortable-placeholder",s||i.currentItem[0].className)._removeClass(t,"ui-sortable-helper"),"tbody"===n?i._createTrPlaceholder(i.currentItem.find("tr").eq(0),V("",i.document[0]).appendTo(t)):"tr"===n?i._createTrPlaceholder(i.currentItem,t):"img"===n&&t.attr("src",i.currentItem.attr("src")),s||t.css("visibility","hidden"),t},update:function(t,e){s&&!o.forcePlaceholderSize||(e.height()&&(!o.forcePlaceholderSize||"tbody"!==n&&"tr"!==n)||e.height(i.currentItem.innerHeight()-parseInt(i.currentItem.css("paddingTop")||0,10)-parseInt(i.currentItem.css("paddingBottom")||0,10)),e.width()||e.width(i.currentItem.innerWidth()-parseInt(i.currentItem.css("paddingLeft")||0,10)-parseInt(i.currentItem.css("paddingRight")||0,10)))}}),i.placeholder=V(o.placeholder.element.call(i.element,i.currentItem)),i.currentItem.after(i.placeholder),o.placeholder.update(i,i.placeholder)},_createTrPlaceholder:function(t,e){var i=this;t.children().each(function(){V(" ",i.document[0]).attr("colspan",V(this).attr("colspan")||1).appendTo(e)})},_contactContainers:function(t){for(var e,i,s,n,o,a,r,l,h,c=null,u=null,d=this.containers.length-1;0<=d;d--)V.contains(this.currentItem[0],this.containers[d].element[0])||(this._intersectsWith(this.containers[d].containerCache)?c&&V.contains(this.containers[d].element[0],c.element[0])||(c=this.containers[d],u=d):this.containers[d].containerCache.over&&(this.containers[d]._trigger("out",t,this._uiHash(this)),this.containers[d].containerCache.over=0));if(c)if(1===this.containers.length)this.containers[u].containerCache.over||(this.containers[u]._trigger("over",t,this._uiHash(this)),this.containers[u].containerCache.over=1);else{for(i=1e4,s=null,n=(l=c.floating||this._isFloating(this.currentItem))?"left":"top",o=l?"width":"height",h=l?"pageX":"pageY",e=this.items.length-1;0<=e;e--)V.contains(this.containers[u].element[0],this.items[e].item[0])&&this.items[e].item[0]!==this.currentItem[0]&&(a=this.items[e].item.offset()[n],r=!1,t[h]-a>this.items[e][o]/2&&(r=!0),Math.abs(t[h]-a)this.containment[2]&&(i=this.containment[2]+this.offset.click.left),t.pageY-this.offset.click.top>this.containment[3]&&(s=this.containment[3]+this.offset.click.top)),e.grid&&(t=this.originalPageY+Math.round((s-this.originalPageY)/e.grid[1])*e.grid[1],s=!this.containment||t-this.offset.click.top>=this.containment[1]&&t-this.offset.click.top<=this.containment[3]?t:t-this.offset.click.top>=this.containment[1]?t-e.grid[1]:t+e.grid[1],t=this.originalPageX+Math.round((i-this.originalPageX)/e.grid[0])*e.grid[0],i=!this.containment||t-this.offset.click.left>=this.containment[0]&&t-this.offset.click.left<=this.containment[2]?t:t-this.offset.click.left>=this.containment[0]?t-e.grid[0]:t+e.grid[0])),{top:s-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.scrollParent.scrollTop():o?0:n.scrollTop()),left:i-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():o?0:n.scrollLeft())}},_rearrange:function(t,e,i,s){i?i[0].appendChild(this.placeholder[0]):e.item[0].parentNode.insertBefore(this.placeholder[0],"down"===this.direction?e.item[0]:e.item[0].nextSibling),this.counter=this.counter?++this.counter:1;var n=this.counter;this._delay(function(){n===this.counter&&this.refreshPositions(!s)})},_clear:function(t,e){this.reverting=!1;var i,s=[];if(!this._noFinalSort&&this.currentItem.parent().length&&this.placeholder.before(this.currentItem),this._noFinalSort=null,this.helper[0]===this.currentItem[0]){for(i in this._storedCSS)"auto"!==this._storedCSS[i]&&"static"!==this._storedCSS[i]||(this._storedCSS[i]="");this.currentItem.css(this._storedCSS),this._removeClass(this.currentItem,"ui-sortable-helper")}else this.currentItem.show();function n(e,i,s){return function(t){s._trigger(e,t,i._uiHash(i))}}for(this.fromOutside&&!e&&s.push(function(t){this._trigger("receive",t,this._uiHash(this.fromOutside))}),!this.fromOutside&&this.domPosition.prev===this.currentItem.prev().not(".ui-sortable-helper")[0]&&this.domPosition.parent===this.currentItem.parent()[0]||e||s.push(function(t){this._trigger("update",t,this._uiHash())}),this!==this.currentContainer&&(e||(s.push(function(t){this._trigger("remove",t,this._uiHash())}),s.push(function(e){return function(t){e._trigger("receive",t,this._uiHash(this))}}.call(this,this.currentContainer)),s.push(function(e){return function(t){e._trigger("update",t,this._uiHash(this))}}.call(this,this.currentContainer)))),i=this.containers.length-1;0<=i;i--)e||s.push(n("deactivate",this,this.containers[i])),this.containers[i].containerCache.over&&(s.push(n("out",this,this.containers[i])),this.containers[i].containerCache.over=0);if(this.storedCursor&&(this.document.find("body").css("cursor",this.storedCursor),this.storedStylesheet.remove()),this._storedOpacity&&this.helper.css("opacity",this._storedOpacity),this._storedZIndex&&this.helper.css("zIndex","auto"===this._storedZIndex?"":this._storedZIndex),this.dragging=!1,e||this._trigger("beforeStop",t,this._uiHash()),this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.cancelHelperRemoval||(this.helper[0]!==this.currentItem[0]&&this.helper.remove(),this.helper=null),!e){for(i=0;i",widgetEventPrefix:"spin",options:{classes:{"ui-spinner":"ui-corner-all","ui-spinner-down":"ui-corner-br","ui-spinner-up":"ui-corner-tr"},culture:null,icons:{down:"ui-icon-triangle-1-s",up:"ui-icon-triangle-1-n"},incremental:!0,max:null,min:null,numberFormat:null,page:10,step:1,change:null,spin:null,start:null,stop:null},_create:function(){this._setOption("max",this.options.max),this._setOption("min",this.options.min),this._setOption("step",this.options.step),""!==this.value()&&this._value(this.element.val(),!0),this._draw(),this._on(this._events),this._refresh(),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_getCreateOptions:function(){var s=this._super(),n=this.element;return V.each(["min","max","step"],function(t,e){var i=n.attr(e);null!=i&&i.length&&(s[e]=i)}),s},_events:{keydown:function(t){this._start(t)&&this._keydown(t)&&t.preventDefault()},keyup:"_stop",focus:function(){this.previous=this.element.val()},blur:function(t){this.cancelBlur?delete this.cancelBlur:(this._stop(),this._refresh(),this.previous!==this.element.val()&&this._trigger("change",t))},mousewheel:function(t,e){var i=V.ui.safeActiveElement(this.document[0]);if(this.element[0]===i&&e){if(!this.spinning&&!this._start(t))return!1;this._spin((0").parent().append("")},_draw:function(){this._enhance(),this._addClass(this.uiSpinner,"ui-spinner","ui-widget ui-widget-content"),this._addClass("ui-spinner-input"),this.element.attr("role","spinbutton"),this.buttons=this.uiSpinner.children("a").attr("tabIndex",-1).attr("aria-hidden",!0).button({classes:{"ui-button":""}}),this._removeClass(this.buttons,"ui-corner-all"),this._addClass(this.buttons.first(),"ui-spinner-button ui-spinner-up"),this._addClass(this.buttons.last(),"ui-spinner-button ui-spinner-down"),this.buttons.first().button({icon:this.options.icons.up,showLabel:!1}),this.buttons.last().button({icon:this.options.icons.down,showLabel:!1}),this.buttons.height()>Math.ceil(.5*this.uiSpinner.height())&&0e.max?e.max:null!==e.min&&t"},_buttonHtml:function(){return""}});var ct;V.ui.spinner;V.widget("ui.tabs",{version:"1.13.1",delay:300,options:{active:null,classes:{"ui-tabs":"ui-corner-all","ui-tabs-nav":"ui-corner-all","ui-tabs-panel":"ui-corner-bottom","ui-tabs-tab":"ui-corner-top"},collapsible:!1,event:"click",heightStyle:"content",hide:null,show:null,activate:null,beforeActivate:null,beforeLoad:null,load:null},_isLocal:(ct=/#.*$/,function(t){var e=t.href.replace(ct,""),i=location.href.replace(ct,"");try{e=decodeURIComponent(e)}catch(t){}try{i=decodeURIComponent(i)}catch(t){}return 1?@\[\]\^`{|}~]/g,"\\$&"):""},refresh:function(){var t=this.options,e=this.tablist.children(":has(a[href])");t.disabled=V.map(e.filter(".ui-state-disabled"),function(t){return e.index(t)}),this._processTabs(),!1!==t.active&&this.anchors.length?this.active.length&&!V.contains(this.tablist[0],this.active[0])?this.tabs.length===t.disabled.length?(t.active=!1,this.active=V()):this._activate(this._findNextTab(Math.max(0,t.active-1),!1)):t.active=this.tabs.index(this.active):(t.active=!1,this.active=V()),this._refresh()},_refresh:function(){this._setOptionDisabled(this.options.disabled),this._setupEvents(this.options.event),this._setupHeightStyle(this.options.heightStyle),this.tabs.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}),this.panels.not(this._getPanelForTab(this.active)).hide().attr({"aria-hidden":"true"}),this.active.length?(this.active.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}),this._addClass(this.active,"ui-tabs-active","ui-state-active"),this._getPanelForTab(this.active).show().attr({"aria-hidden":"false"})):this.tabs.eq(0).attr("tabIndex",0)},_processTabs:function(){var l=this,t=this.tabs,e=this.anchors,i=this.panels;this.tablist=this._getList().attr("role","tablist"),this._addClass(this.tablist,"ui-tabs-nav","ui-helper-reset ui-helper-clearfix ui-widget-header"),this.tablist.on("mousedown"+this.eventNamespace,"> li",function(t){V(this).is(".ui-state-disabled")&&t.preventDefault()}).on("focus"+this.eventNamespace,".ui-tabs-anchor",function(){V(this).closest("li").is(".ui-state-disabled")&&this.blur()}),this.tabs=this.tablist.find("> li:has(a[href])").attr({role:"tab",tabIndex:-1}),this._addClass(this.tabs,"ui-tabs-tab","ui-state-default"),this.anchors=this.tabs.map(function(){return V("a",this)[0]}).attr({tabIndex:-1}),this._addClass(this.anchors,"ui-tabs-anchor"),this.panels=V(),this.anchors.each(function(t,e){var i,s,n,o=V(e).uniqueId().attr("id"),a=V(e).closest("li"),r=a.attr("aria-controls");l._isLocal(e)?(n=(i=e.hash).substring(1),s=l.element.find(l._sanitizeSelector(i))):(n=a.attr("aria-controls")||V({}).uniqueId()[0].id,(s=l.element.find(i="#"+n)).length||(s=l._createPanel(n)).insertAfter(l.panels[t-1]||l.tablist),s.attr("aria-live","polite")),s.length&&(l.panels=l.panels.add(s)),r&&a.data("ui-tabs-aria-controls",r),a.attr({"aria-controls":n,"aria-labelledby":o}),s.attr("aria-labelledby",o)}),this.panels.attr("role","tabpanel"),this._addClass(this.panels,"ui-tabs-panel","ui-widget-content"),t&&(this._off(t.not(this.tabs)),this._off(e.not(this.anchors)),this._off(i.not(this.panels)))},_getList:function(){return this.tablist||this.element.find("ol, ul").eq(0)},_createPanel:function(t){return V("
            ").attr("id",t).data("ui-tabs-destroy",!0)},_setOptionDisabled:function(t){var e,i;for(Array.isArray(t)&&(t.length?t.length===this.anchors.length&&(t=!0):t=!1),i=0;e=this.tabs[i];i++)e=V(e),!0===t||-1!==V.inArray(i,t)?(e.attr("aria-disabled","true"),this._addClass(e,null,"ui-state-disabled")):(e.removeAttr("aria-disabled"),this._removeClass(e,null,"ui-state-disabled"));this.options.disabled=t,this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!0===t)},_setupEvents:function(t){var i={};t&&V.each(t.split(" "),function(t,e){i[e]="_eventHandler"}),this._off(this.anchors.add(this.tabs).add(this.panels)),this._on(!0,this.anchors,{click:function(t){t.preventDefault()}}),this._on(this.anchors,i),this._on(this.tabs,{keydown:"_tabKeydown"}),this._on(this.panels,{keydown:"_panelKeydown"}),this._focusable(this.tabs),this._hoverable(this.tabs)},_setupHeightStyle:function(t){var i,e=this.element.parent();"fill"===t?(i=e.height(),i-=this.element.outerHeight()-this.element.height(),this.element.siblings(":visible").each(function(){var t=V(this),e=t.css("position");"absolute"!==e&&"fixed"!==e&&(i-=t.outerHeight(!0))}),this.element.children().not(this.panels).each(function(){i-=V(this).outerHeight(!0)}),this.panels.each(function(){V(this).height(Math.max(0,i-V(this).innerHeight()+V(this).height()))}).css("overflow","auto")):"auto"===t&&(i=0,this.panels.each(function(){i=Math.max(i,V(this).height("").height())}).height(i))},_eventHandler:function(t){var e=this.options,i=this.active,s=V(t.currentTarget).closest("li"),n=s[0]===i[0],o=n&&e.collapsible,a=o?V():this._getPanelForTab(s),r=i.length?this._getPanelForTab(i):V(),i={oldTab:i,oldPanel:r,newTab:o?V():s,newPanel:a};t.preventDefault(),s.hasClass("ui-state-disabled")||s.hasClass("ui-tabs-loading")||this.running||n&&!e.collapsible||!1===this._trigger("beforeActivate",t,i)||(e.active=!o&&this.tabs.index(s),this.active=n?V():s,this.xhr&&this.xhr.abort(),r.length||a.length||V.error("jQuery UI Tabs: Mismatching fragment identifier."),a.length&&this.load(this.tabs.index(s),t),this._toggle(t,i))},_toggle:function(t,e){var i=this,s=e.newPanel,n=e.oldPanel;function o(){i.running=!1,i._trigger("activate",t,e)}function a(){i._addClass(e.newTab.closest("li"),"ui-tabs-active","ui-state-active"),s.length&&i.options.show?i._show(s,i.options.show,o):(s.show(),o())}this.running=!0,n.length&&this.options.hide?this._hide(n,this.options.hide,function(){i._removeClass(e.oldTab.closest("li"),"ui-tabs-active","ui-state-active"),a()}):(this._removeClass(e.oldTab.closest("li"),"ui-tabs-active","ui-state-active"),n.hide(),a()),n.attr("aria-hidden","true"),e.oldTab.attr({"aria-selected":"false","aria-expanded":"false"}),s.length&&n.length?e.oldTab.attr("tabIndex",-1):s.length&&this.tabs.filter(function(){return 0===V(this).attr("tabIndex")}).attr("tabIndex",-1),s.attr("aria-hidden","false"),e.newTab.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_activate:function(t){var t=this._findActive(t);t[0]!==this.active[0]&&(t=(t=!t.length?this.active:t).find(".ui-tabs-anchor")[0],this._eventHandler({target:t,currentTarget:t,preventDefault:V.noop}))},_findActive:function(t){return!1===t?V():this.tabs.eq(t)},_getIndex:function(t){return t="string"==typeof t?this.anchors.index(this.anchors.filter("[href$='"+V.escapeSelector(t)+"']")):t},_destroy:function(){this.xhr&&this.xhr.abort(),this.tablist.removeAttr("role").off(this.eventNamespace),this.anchors.removeAttr("role tabIndex").removeUniqueId(),this.tabs.add(this.panels).each(function(){V.data(this,"ui-tabs-destroy")?V(this).remove():V(this).removeAttr("role tabIndex aria-live aria-busy aria-selected aria-labelledby aria-hidden aria-expanded")}),this.tabs.each(function(){var t=V(this),e=t.data("ui-tabs-aria-controls");e?t.attr("aria-controls",e).removeData("ui-tabs-aria-controls"):t.removeAttr("aria-controls")}),this.panels.show(),"content"!==this.options.heightStyle&&this.panels.css("height","")},enable:function(i){var t=this.options.disabled;!1!==t&&(t=void 0!==i&&(i=this._getIndex(i),Array.isArray(t)?V.map(t,function(t){return t!==i?t:null}):V.map(this.tabs,function(t,e){return e!==i?e:null})),this._setOptionDisabled(t))},disable:function(t){var e=this.options.disabled;if(!0!==e){if(void 0===t)e=!0;else{if(t=this._getIndex(t),-1!==V.inArray(t,e))return;e=Array.isArray(e)?V.merge([t],e).sort():[t]}this._setOptionDisabled(e)}},load:function(t,s){t=this._getIndex(t);function n(t,e){"abort"===e&&o.panels.stop(!1,!0),o._removeClass(i,"ui-tabs-loading"),a.removeAttr("aria-busy"),t===o.xhr&&delete o.xhr}var o=this,i=this.tabs.eq(t),t=i.find(".ui-tabs-anchor"),a=this._getPanelForTab(i),r={tab:i,panel:a};this._isLocal(t[0])||(this.xhr=V.ajax(this._ajaxSettings(t,s,r)),this.xhr&&"canceled"!==this.xhr.statusText&&(this._addClass(i,"ui-tabs-loading"),a.attr("aria-busy","true"),this.xhr.done(function(t,e,i){setTimeout(function(){a.html(t),o._trigger("load",s,r),n(i,e)},1)}).fail(function(t,e){setTimeout(function(){n(t,e)},1)})))},_ajaxSettings:function(t,i,s){var n=this;return{url:t.attr("href").replace(/#.*$/,""),beforeSend:function(t,e){return n._trigger("beforeLoad",i,V.extend({jqXHR:t,ajaxSettings:e},s))}}},_getPanelForTab:function(t){t=V(t).attr("aria-controls");return this.element.find(this._sanitizeSelector("#"+t))}}),!1!==V.uiBackCompat&&V.widget("ui.tabs",V.ui.tabs,{_processTabs:function(){this._superApply(arguments),this._addClass(this.tabs,"ui-tab")}});V.ui.tabs;V.widget("ui.tooltip",{version:"1.13.1",options:{classes:{"ui-tooltip":"ui-corner-all ui-widget-shadow"},content:function(){var t=V(this).attr("title");return V("").text(t).html()},hide:!0,items:"[title]:not([disabled])",position:{my:"left top+15",at:"left bottom",collision:"flipfit flip"},show:!0,track:!1,close:null,open:null},_addDescribedBy:function(t,e){var i=(t.attr("aria-describedby")||"").split(/\s+/);i.push(e),t.data("ui-tooltip-id",e).attr("aria-describedby",String.prototype.trim.call(i.join(" ")))},_removeDescribedBy:function(t){var e=t.data("ui-tooltip-id"),i=(t.attr("aria-describedby")||"").split(/\s+/),e=V.inArray(e,i);-1!==e&&i.splice(e,1),t.removeData("ui-tooltip-id"),(i=String.prototype.trim.call(i.join(" ")))?t.attr("aria-describedby",i):t.removeAttr("aria-describedby")},_create:function(){this._on({mouseover:"open",focusin:"open"}),this.tooltips={},this.parents={},this.liveRegion=V("
            ").attr({role:"log","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this.disabledTitles=V([])},_setOption:function(t,e){var i=this;this._super(t,e),"content"===t&&V.each(this.tooltips,function(t,e){i._updateContent(e.element)})},_setOptionDisabled:function(t){this[t?"_disable":"_enable"]()},_disable:function(){var s=this;V.each(this.tooltips,function(t,e){var i=V.Event("blur");i.target=i.currentTarget=e.element[0],s.close(i,!0)}),this.disabledTitles=this.disabledTitles.add(this.element.find(this.options.items).addBack().filter(function(){var t=V(this);if(t.is("[title]"))return t.data("ui-tooltip-title",t.attr("title")).removeAttr("title")}))},_enable:function(){this.disabledTitles.each(function(){var t=V(this);t.data("ui-tooltip-title")&&t.attr("title",t.data("ui-tooltip-title"))}),this.disabledTitles=V([])},open:function(t){var i=this,e=V(t?t.target:this.element).closest(this.options.items);e.length&&!e.data("ui-tooltip-id")&&(e.attr("title")&&e.data("ui-tooltip-title",e.attr("title")),e.data("ui-tooltip-open",!0),t&&"mouseover"===t.type&&e.parents().each(function(){var t,e=V(this);e.data("ui-tooltip-open")&&((t=V.Event("blur")).target=t.currentTarget=this,i.close(t,!0)),e.attr("title")&&(e.uniqueId(),i.parents[this.id]={element:this,title:e.attr("title")},e.attr("title",""))}),this._registerCloseHandlers(t,e),this._updateContent(e,t))},_updateContent:function(e,i){var t=this.options.content,s=this,n=i?i.type:null;if("string"==typeof t||t.nodeType||t.jquery)return this._open(i,e,t);(t=t.call(e[0],function(t){s._delay(function(){e.data("ui-tooltip-open")&&(i&&(i.type=n),this._open(i,e,t))})}))&&this._open(i,e,t)},_open:function(t,e,i){var s,n,o,a=V.extend({},this.options.position);function r(t){a.of=t,n.is(":hidden")||n.position(a)}i&&((s=this._find(e))?s.tooltip.find(".ui-tooltip-content").html(i):(e.is("[title]")&&(t&&"mouseover"===t.type?e.attr("title",""):e.removeAttr("title")),s=this._tooltip(e),n=s.tooltip,this._addDescribedBy(e,n.attr("id")),n.find(".ui-tooltip-content").html(i),this.liveRegion.children().hide(),(i=V("
            ").html(n.find(".ui-tooltip-content").html())).removeAttr("name").find("[name]").removeAttr("name"),i.removeAttr("id").find("[id]").removeAttr("id"),i.appendTo(this.liveRegion),this.options.track&&t&&/^mouse/.test(t.type)?(this._on(this.document,{mousemove:r}),r(t)):n.position(V.extend({of:e},this.options.position)),n.hide(),this._show(n,this.options.show),this.options.track&&this.options.show&&this.options.show.delay&&(o=this.delayedShow=setInterval(function(){n.is(":visible")&&(r(a.of),clearInterval(o))},13)),this._trigger("open",t,{tooltip:n})))},_registerCloseHandlers:function(t,e){var i={keyup:function(t){t.keyCode===V.ui.keyCode.ESCAPE&&((t=V.Event(t)).currentTarget=e[0],this.close(t,!0))}};e[0]!==this.element[0]&&(i.remove=function(){var t=this._find(e);t&&this._removeTooltip(t.tooltip)}),t&&"mouseover"!==t.type||(i.mouseleave="close"),t&&"focusin"!==t.type||(i.focusout="close"),this._on(!0,e,i)},close:function(t){var e,i=this,s=V(t?t.currentTarget:this.element),n=this._find(s);n?(e=n.tooltip,n.closing||(clearInterval(this.delayedShow),s.data("ui-tooltip-title")&&!s.attr("title")&&s.attr("title",s.data("ui-tooltip-title")),this._removeDescribedBy(s),n.hiding=!0,e.stop(!0),this._hide(e,this.options.hide,function(){i._removeTooltip(V(this))}),s.removeData("ui-tooltip-open"),this._off(s,"mouseleave focusout keyup"),s[0]!==this.element[0]&&this._off(s,"remove"),this._off(this.document,"mousemove"),t&&"mouseleave"===t.type&&V.each(this.parents,function(t,e){V(e.element).attr("title",e.title),delete i.parents[t]}),n.closing=!0,this._trigger("close",t,{tooltip:e}),n.hiding||(n.closing=!1))):s.removeData("ui-tooltip-open")},_tooltip:function(t){var e=V("
            ").attr("role","tooltip"),i=V("
            ").appendTo(e),s=e.uniqueId().attr("id");return this._addClass(i,"ui-tooltip-content"),this._addClass(e,"ui-tooltip","ui-widget ui-widget-content"),e.appendTo(this._appendTo(t)),this.tooltips[s]={element:t,tooltip:e}},_find:function(t){t=t.data("ui-tooltip-id");return t?this.tooltips[t]:null},_removeTooltip:function(t){clearInterval(this.delayedShow),t.remove(),delete this.tooltips[t.attr("id")]},_appendTo:function(t){t=t.closest(".ui-front, dialog");return t=!t.length?this.document[0].body:t},_destroy:function(){var s=this;V.each(this.tooltips,function(t,e){var i=V.Event("blur"),e=e.element;i.target=i.currentTarget=e[0],s.close(i,!0),V("#"+t).remove(),e.data("ui-tooltip-title")&&(e.attr("title")||e.attr("title",e.data("ui-tooltip-title")),e.removeData("ui-tooltip-title"))}),this.liveRegion.remove()}}),!1!==V.uiBackCompat&&V.widget("ui.tooltip",V.ui.tooltip,{options:{tooltipClass:null},_tooltip:function(){var t=this._superApply(arguments);return this.options.tooltipClass&&t.tooltip.addClass(this.options.tooltipClass),t}});V.ui.tooltip}); \ No newline at end of file diff --git a/docs/column_api_files/html-default3.js b/docs/column_api_files/html-default3.js new file mode 100644 index 0000000..cc0a255 --- /dev/null +++ b/docs/column_api_files/html-default3.js @@ -0,0 +1,7 @@ +/*! + * Bootstrap v5.1.3 (https://getbootstrap.com/) + * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + */ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).bootstrap=e()}(this,(function(){"use strict";const t="transitionend",e=t=>{let e=t.getAttribute("data-bs-target");if(!e||"#"===e){let i=t.getAttribute("href");if(!i||!i.includes("#")&&!i.startsWith("."))return null;i.includes("#")&&!i.startsWith("#")&&(i=`#${i.split("#")[1]}`),e=i&&"#"!==i?i.trim():null}return e},i=t=>{const i=e(t);return i&&document.querySelector(i)?i:null},n=t=>{const i=e(t);return i?document.querySelector(i):null},s=e=>{e.dispatchEvent(new Event(t))},o=t=>!(!t||"object"!=typeof t)&&(void 0!==t.jquery&&(t=t[0]),void 0!==t.nodeType),r=t=>o(t)?t.jquery?t[0]:t:"string"==typeof t&&t.length>0?document.querySelector(t):null,a=(t,e,i)=>{Object.keys(i).forEach((n=>{const s=i[n],r=e[n],a=r&&o(r)?"element":null==(l=r)?`${l}`:{}.toString.call(l).match(/\s([a-z]+)/i)[1].toLowerCase();var l;if(!new RegExp(s).test(a))throw new TypeError(`${t.toUpperCase()}: Option "${n}" provided type "${a}" but expected type "${s}".`)}))},l=t=>!(!o(t)||0===t.getClientRects().length)&&"visible"===getComputedStyle(t).getPropertyValue("visibility"),c=t=>!t||t.nodeType!==Node.ELEMENT_NODE||!!t.classList.contains("disabled")||(void 0!==t.disabled?t.disabled:t.hasAttribute("disabled")&&"false"!==t.getAttribute("disabled")),h=t=>{if(!document.documentElement.attachShadow)return null;if("function"==typeof t.getRootNode){const e=t.getRootNode();return e instanceof ShadowRoot?e:null}return t instanceof ShadowRoot?t:t.parentNode?h(t.parentNode):null},d=()=>{},u=t=>{t.offsetHeight},f=()=>{const{jQuery:t}=window;return t&&!document.body.hasAttribute("data-bs-no-jquery")?t:null},p=[],m=()=>"rtl"===document.documentElement.dir,g=t=>{var e;e=()=>{const e=f();if(e){const i=t.NAME,n=e.fn[i];e.fn[i]=t.jQueryInterface,e.fn[i].Constructor=t,e.fn[i].noConflict=()=>(e.fn[i]=n,t.jQueryInterface)}},"loading"===document.readyState?(p.length||document.addEventListener("DOMContentLoaded",(()=>{p.forEach((t=>t()))})),p.push(e)):e()},_=t=>{"function"==typeof t&&t()},b=(e,i,n=!0)=>{if(!n)return void _(e);const o=(t=>{if(!t)return 0;let{transitionDuration:e,transitionDelay:i}=window.getComputedStyle(t);const n=Number.parseFloat(e),s=Number.parseFloat(i);return n||s?(e=e.split(",")[0],i=i.split(",")[0],1e3*(Number.parseFloat(e)+Number.parseFloat(i))):0})(i)+5;let r=!1;const a=({target:n})=>{n===i&&(r=!0,i.removeEventListener(t,a),_(e))};i.addEventListener(t,a),setTimeout((()=>{r||s(i)}),o)},v=(t,e,i,n)=>{let s=t.indexOf(e);if(-1===s)return t[!i&&n?t.length-1:0];const o=t.length;return s+=i?1:-1,n&&(s=(s+o)%o),t[Math.max(0,Math.min(s,o-1))]},y=/[^.]*(?=\..*)\.|.*/,w=/\..*/,E=/::\d+$/,A={};let T=1;const O={mouseenter:"mouseover",mouseleave:"mouseout"},C=/^(mouseenter|mouseleave)/i,k=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function L(t,e){return e&&`${e}::${T++}`||t.uidEvent||T++}function x(t){const e=L(t);return t.uidEvent=e,A[e]=A[e]||{},A[e]}function D(t,e,i=null){const n=Object.keys(t);for(let s=0,o=n.length;sfunction(e){if(!e.relatedTarget||e.relatedTarget!==e.delegateTarget&&!e.delegateTarget.contains(e.relatedTarget))return t.call(this,e)};n?n=t(n):i=t(i)}const[o,r,a]=S(e,i,n),l=x(t),c=l[a]||(l[a]={}),h=D(c,r,o?i:null);if(h)return void(h.oneOff=h.oneOff&&s);const d=L(r,e.replace(y,"")),u=o?function(t,e,i){return function n(s){const o=t.querySelectorAll(e);for(let{target:r}=s;r&&r!==this;r=r.parentNode)for(let a=o.length;a--;)if(o[a]===r)return s.delegateTarget=r,n.oneOff&&j.off(t,s.type,e,i),i.apply(r,[s]);return null}}(t,i,n):function(t,e){return function i(n){return n.delegateTarget=t,i.oneOff&&j.off(t,n.type,e),e.apply(t,[n])}}(t,i);u.delegationSelector=o?i:null,u.originalHandler=r,u.oneOff=s,u.uidEvent=d,c[d]=u,t.addEventListener(a,u,o)}function I(t,e,i,n,s){const o=D(e[i],n,s);o&&(t.removeEventListener(i,o,Boolean(s)),delete e[i][o.uidEvent])}function P(t){return t=t.replace(w,""),O[t]||t}const j={on(t,e,i,n){N(t,e,i,n,!1)},one(t,e,i,n){N(t,e,i,n,!0)},off(t,e,i,n){if("string"!=typeof e||!t)return;const[s,o,r]=S(e,i,n),a=r!==e,l=x(t),c=e.startsWith(".");if(void 0!==o){if(!l||!l[r])return;return void I(t,l,r,o,s?i:null)}c&&Object.keys(l).forEach((i=>{!function(t,e,i,n){const s=e[i]||{};Object.keys(s).forEach((o=>{if(o.includes(n)){const n=s[o];I(t,e,i,n.originalHandler,n.delegationSelector)}}))}(t,l,i,e.slice(1))}));const h=l[r]||{};Object.keys(h).forEach((i=>{const n=i.replace(E,"");if(!a||e.includes(n)){const e=h[i];I(t,l,r,e.originalHandler,e.delegationSelector)}}))},trigger(t,e,i){if("string"!=typeof e||!t)return null;const n=f(),s=P(e),o=e!==s,r=k.has(s);let a,l=!0,c=!0,h=!1,d=null;return o&&n&&(a=n.Event(e,i),n(t).trigger(a),l=!a.isPropagationStopped(),c=!a.isImmediatePropagationStopped(),h=a.isDefaultPrevented()),r?(d=document.createEvent("HTMLEvents"),d.initEvent(s,l,!0)):d=new CustomEvent(e,{bubbles:l,cancelable:!0}),void 0!==i&&Object.keys(i).forEach((t=>{Object.defineProperty(d,t,{get:()=>i[t]})})),h&&d.preventDefault(),c&&t.dispatchEvent(d),d.defaultPrevented&&void 0!==a&&a.preventDefault(),d}},M=new Map,H={set(t,e,i){M.has(t)||M.set(t,new Map);const n=M.get(t);n.has(e)||0===n.size?n.set(e,i):console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(n.keys())[0]}.`)},get:(t,e)=>M.has(t)&&M.get(t).get(e)||null,remove(t,e){if(!M.has(t))return;const i=M.get(t);i.delete(e),0===i.size&&M.delete(t)}};class B{constructor(t){(t=r(t))&&(this._element=t,H.set(this._element,this.constructor.DATA_KEY,this))}dispose(){H.remove(this._element,this.constructor.DATA_KEY),j.off(this._element,this.constructor.EVENT_KEY),Object.getOwnPropertyNames(this).forEach((t=>{this[t]=null}))}_queueCallback(t,e,i=!0){b(t,e,i)}static getInstance(t){return H.get(r(t),this.DATA_KEY)}static getOrCreateInstance(t,e={}){return this.getInstance(t)||new this(t,"object"==typeof e?e:null)}static get VERSION(){return"5.1.3"}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}static get DATA_KEY(){return`bs.${this.NAME}`}static get EVENT_KEY(){return`.${this.DATA_KEY}`}}const R=(t,e="hide")=>{const i=`click.dismiss${t.EVENT_KEY}`,s=t.NAME;j.on(document,i,`[data-bs-dismiss="${s}"]`,(function(i){if(["A","AREA"].includes(this.tagName)&&i.preventDefault(),c(this))return;const o=n(this)||this.closest(`.${s}`);t.getOrCreateInstance(o)[e]()}))};class W extends B{static get NAME(){return"alert"}close(){if(j.trigger(this._element,"close.bs.alert").defaultPrevented)return;this._element.classList.remove("show");const t=this._element.classList.contains("fade");this._queueCallback((()=>this._destroyElement()),this._element,t)}_destroyElement(){this._element.remove(),j.trigger(this._element,"closed.bs.alert"),this.dispose()}static jQueryInterface(t){return this.each((function(){const e=W.getOrCreateInstance(this);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}R(W,"close"),g(W);const $='[data-bs-toggle="button"]';class z extends B{static get NAME(){return"button"}toggle(){this._element.setAttribute("aria-pressed",this._element.classList.toggle("active"))}static jQueryInterface(t){return this.each((function(){const e=z.getOrCreateInstance(this);"toggle"===t&&e[t]()}))}}function q(t){return"true"===t||"false"!==t&&(t===Number(t).toString()?Number(t):""===t||"null"===t?null:t)}function F(t){return t.replace(/[A-Z]/g,(t=>`-${t.toLowerCase()}`))}j.on(document,"click.bs.button.data-api",$,(t=>{t.preventDefault();const e=t.target.closest($);z.getOrCreateInstance(e).toggle()})),g(z);const U={setDataAttribute(t,e,i){t.setAttribute(`data-bs-${F(e)}`,i)},removeDataAttribute(t,e){t.removeAttribute(`data-bs-${F(e)}`)},getDataAttributes(t){if(!t)return{};const e={};return Object.keys(t.dataset).filter((t=>t.startsWith("bs"))).forEach((i=>{let n=i.replace(/^bs/,"");n=n.charAt(0).toLowerCase()+n.slice(1,n.length),e[n]=q(t.dataset[i])})),e},getDataAttribute:(t,e)=>q(t.getAttribute(`data-bs-${F(e)}`)),offset(t){const e=t.getBoundingClientRect();return{top:e.top+window.pageYOffset,left:e.left+window.pageXOffset}},position:t=>({top:t.offsetTop,left:t.offsetLeft})},V={find:(t,e=document.documentElement)=>[].concat(...Element.prototype.querySelectorAll.call(e,t)),findOne:(t,e=document.documentElement)=>Element.prototype.querySelector.call(e,t),children:(t,e)=>[].concat(...t.children).filter((t=>t.matches(e))),parents(t,e){const i=[];let n=t.parentNode;for(;n&&n.nodeType===Node.ELEMENT_NODE&&3!==n.nodeType;)n.matches(e)&&i.push(n),n=n.parentNode;return i},prev(t,e){let i=t.previousElementSibling;for(;i;){if(i.matches(e))return[i];i=i.previousElementSibling}return[]},next(t,e){let i=t.nextElementSibling;for(;i;){if(i.matches(e))return[i];i=i.nextElementSibling}return[]},focusableChildren(t){const e=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map((t=>`${t}:not([tabindex^="-"])`)).join(", ");return this.find(e,t).filter((t=>!c(t)&&l(t)))}},K="carousel",X={interval:5e3,keyboard:!0,slide:!1,pause:"hover",wrap:!0,touch:!0},Y={interval:"(number|boolean)",keyboard:"boolean",slide:"(boolean|string)",pause:"(string|boolean)",wrap:"boolean",touch:"boolean"},Q="next",G="prev",Z="left",J="right",tt={ArrowLeft:J,ArrowRight:Z},et="slid.bs.carousel",it="active",nt=".active.carousel-item";class st extends B{constructor(t,e){super(t),this._items=null,this._interval=null,this._activeElement=null,this._isPaused=!1,this._isSliding=!1,this.touchTimeout=null,this.touchStartX=0,this.touchDeltaX=0,this._config=this._getConfig(e),this._indicatorsElement=V.findOne(".carousel-indicators",this._element),this._touchSupported="ontouchstart"in document.documentElement||navigator.maxTouchPoints>0,this._pointerEvent=Boolean(window.PointerEvent),this._addEventListeners()}static get Default(){return X}static get NAME(){return K}next(){this._slide(Q)}nextWhenVisible(){!document.hidden&&l(this._element)&&this.next()}prev(){this._slide(G)}pause(t){t||(this._isPaused=!0),V.findOne(".carousel-item-next, .carousel-item-prev",this._element)&&(s(this._element),this.cycle(!0)),clearInterval(this._interval),this._interval=null}cycle(t){t||(this._isPaused=!1),this._interval&&(clearInterval(this._interval),this._interval=null),this._config&&this._config.interval&&!this._isPaused&&(this._updateInterval(),this._interval=setInterval((document.visibilityState?this.nextWhenVisible:this.next).bind(this),this._config.interval))}to(t){this._activeElement=V.findOne(nt,this._element);const e=this._getItemIndex(this._activeElement);if(t>this._items.length-1||t<0)return;if(this._isSliding)return void j.one(this._element,et,(()=>this.to(t)));if(e===t)return this.pause(),void this.cycle();const i=t>e?Q:G;this._slide(i,this._items[t])}_getConfig(t){return t={...X,...U.getDataAttributes(this._element),..."object"==typeof t?t:{}},a(K,t,Y),t}_handleSwipe(){const t=Math.abs(this.touchDeltaX);if(t<=40)return;const e=t/this.touchDeltaX;this.touchDeltaX=0,e&&this._slide(e>0?J:Z)}_addEventListeners(){this._config.keyboard&&j.on(this._element,"keydown.bs.carousel",(t=>this._keydown(t))),"hover"===this._config.pause&&(j.on(this._element,"mouseenter.bs.carousel",(t=>this.pause(t))),j.on(this._element,"mouseleave.bs.carousel",(t=>this.cycle(t)))),this._config.touch&&this._touchSupported&&this._addTouchEventListeners()}_addTouchEventListeners(){const t=t=>this._pointerEvent&&("pen"===t.pointerType||"touch"===t.pointerType),e=e=>{t(e)?this.touchStartX=e.clientX:this._pointerEvent||(this.touchStartX=e.touches[0].clientX)},i=t=>{this.touchDeltaX=t.touches&&t.touches.length>1?0:t.touches[0].clientX-this.touchStartX},n=e=>{t(e)&&(this.touchDeltaX=e.clientX-this.touchStartX),this._handleSwipe(),"hover"===this._config.pause&&(this.pause(),this.touchTimeout&&clearTimeout(this.touchTimeout),this.touchTimeout=setTimeout((t=>this.cycle(t)),500+this._config.interval))};V.find(".carousel-item img",this._element).forEach((t=>{j.on(t,"dragstart.bs.carousel",(t=>t.preventDefault()))})),this._pointerEvent?(j.on(this._element,"pointerdown.bs.carousel",(t=>e(t))),j.on(this._element,"pointerup.bs.carousel",(t=>n(t))),this._element.classList.add("pointer-event")):(j.on(this._element,"touchstart.bs.carousel",(t=>e(t))),j.on(this._element,"touchmove.bs.carousel",(t=>i(t))),j.on(this._element,"touchend.bs.carousel",(t=>n(t))))}_keydown(t){if(/input|textarea/i.test(t.target.tagName))return;const e=tt[t.key];e&&(t.preventDefault(),this._slide(e))}_getItemIndex(t){return this._items=t&&t.parentNode?V.find(".carousel-item",t.parentNode):[],this._items.indexOf(t)}_getItemByOrder(t,e){const i=t===Q;return v(this._items,e,i,this._config.wrap)}_triggerSlideEvent(t,e){const i=this._getItemIndex(t),n=this._getItemIndex(V.findOne(nt,this._element));return j.trigger(this._element,"slide.bs.carousel",{relatedTarget:t,direction:e,from:n,to:i})}_setActiveIndicatorElement(t){if(this._indicatorsElement){const e=V.findOne(".active",this._indicatorsElement);e.classList.remove(it),e.removeAttribute("aria-current");const i=V.find("[data-bs-target]",this._indicatorsElement);for(let e=0;e{j.trigger(this._element,et,{relatedTarget:o,direction:d,from:s,to:r})};if(this._element.classList.contains("slide")){o.classList.add(h),u(o),n.classList.add(c),o.classList.add(c);const t=()=>{o.classList.remove(c,h),o.classList.add(it),n.classList.remove(it,h,c),this._isSliding=!1,setTimeout(f,0)};this._queueCallback(t,n,!0)}else n.classList.remove(it),o.classList.add(it),this._isSliding=!1,f();a&&this.cycle()}_directionToOrder(t){return[J,Z].includes(t)?m()?t===Z?G:Q:t===Z?Q:G:t}_orderToDirection(t){return[Q,G].includes(t)?m()?t===G?Z:J:t===G?J:Z:t}static carouselInterface(t,e){const i=st.getOrCreateInstance(t,e);let{_config:n}=i;"object"==typeof e&&(n={...n,...e});const s="string"==typeof e?e:n.slide;if("number"==typeof e)i.to(e);else if("string"==typeof s){if(void 0===i[s])throw new TypeError(`No method named "${s}"`);i[s]()}else n.interval&&n.ride&&(i.pause(),i.cycle())}static jQueryInterface(t){return this.each((function(){st.carouselInterface(this,t)}))}static dataApiClickHandler(t){const e=n(this);if(!e||!e.classList.contains("carousel"))return;const i={...U.getDataAttributes(e),...U.getDataAttributes(this)},s=this.getAttribute("data-bs-slide-to");s&&(i.interval=!1),st.carouselInterface(e,i),s&&st.getInstance(e).to(s),t.preventDefault()}}j.on(document,"click.bs.carousel.data-api","[data-bs-slide], [data-bs-slide-to]",st.dataApiClickHandler),j.on(window,"load.bs.carousel.data-api",(()=>{const t=V.find('[data-bs-ride="carousel"]');for(let e=0,i=t.length;et===this._element));null!==s&&o.length&&(this._selector=s,this._triggerArray.push(e))}this._initializeChildren(),this._config.parent||this._addAriaAndCollapsedClass(this._triggerArray,this._isShown()),this._config.toggle&&this.toggle()}static get Default(){return rt}static get NAME(){return ot}toggle(){this._isShown()?this.hide():this.show()}show(){if(this._isTransitioning||this._isShown())return;let t,e=[];if(this._config.parent){const t=V.find(ut,this._config.parent);e=V.find(".collapse.show, .collapse.collapsing",this._config.parent).filter((e=>!t.includes(e)))}const i=V.findOne(this._selector);if(e.length){const n=e.find((t=>i!==t));if(t=n?pt.getInstance(n):null,t&&t._isTransitioning)return}if(j.trigger(this._element,"show.bs.collapse").defaultPrevented)return;e.forEach((e=>{i!==e&&pt.getOrCreateInstance(e,{toggle:!1}).hide(),t||H.set(e,"bs.collapse",null)}));const n=this._getDimension();this._element.classList.remove(ct),this._element.classList.add(ht),this._element.style[n]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;const s=`scroll${n[0].toUpperCase()+n.slice(1)}`;this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(ht),this._element.classList.add(ct,lt),this._element.style[n]="",j.trigger(this._element,"shown.bs.collapse")}),this._element,!0),this._element.style[n]=`${this._element[s]}px`}hide(){if(this._isTransitioning||!this._isShown())return;if(j.trigger(this._element,"hide.bs.collapse").defaultPrevented)return;const t=this._getDimension();this._element.style[t]=`${this._element.getBoundingClientRect()[t]}px`,u(this._element),this._element.classList.add(ht),this._element.classList.remove(ct,lt);const e=this._triggerArray.length;for(let t=0;t{this._isTransitioning=!1,this._element.classList.remove(ht),this._element.classList.add(ct),j.trigger(this._element,"hidden.bs.collapse")}),this._element,!0)}_isShown(t=this._element){return t.classList.contains(lt)}_getConfig(t){return(t={...rt,...U.getDataAttributes(this._element),...t}).toggle=Boolean(t.toggle),t.parent=r(t.parent),a(ot,t,at),t}_getDimension(){return this._element.classList.contains("collapse-horizontal")?"width":"height"}_initializeChildren(){if(!this._config.parent)return;const t=V.find(ut,this._config.parent);V.find(ft,this._config.parent).filter((e=>!t.includes(e))).forEach((t=>{const e=n(t);e&&this._addAriaAndCollapsedClass([t],this._isShown(e))}))}_addAriaAndCollapsedClass(t,e){t.length&&t.forEach((t=>{e?t.classList.remove(dt):t.classList.add(dt),t.setAttribute("aria-expanded",e)}))}static jQueryInterface(t){return this.each((function(){const e={};"string"==typeof t&&/show|hide/.test(t)&&(e.toggle=!1);const i=pt.getOrCreateInstance(this,e);if("string"==typeof t){if(void 0===i[t])throw new TypeError(`No method named "${t}"`);i[t]()}}))}}j.on(document,"click.bs.collapse.data-api",ft,(function(t){("A"===t.target.tagName||t.delegateTarget&&"A"===t.delegateTarget.tagName)&&t.preventDefault();const e=i(this);V.find(e).forEach((t=>{pt.getOrCreateInstance(t,{toggle:!1}).toggle()}))})),g(pt);var mt="top",gt="bottom",_t="right",bt="left",vt="auto",yt=[mt,gt,_t,bt],wt="start",Et="end",At="clippingParents",Tt="viewport",Ot="popper",Ct="reference",kt=yt.reduce((function(t,e){return t.concat([e+"-"+wt,e+"-"+Et])}),[]),Lt=[].concat(yt,[vt]).reduce((function(t,e){return t.concat([e,e+"-"+wt,e+"-"+Et])}),[]),xt="beforeRead",Dt="read",St="afterRead",Nt="beforeMain",It="main",Pt="afterMain",jt="beforeWrite",Mt="write",Ht="afterWrite",Bt=[xt,Dt,St,Nt,It,Pt,jt,Mt,Ht];function Rt(t){return t?(t.nodeName||"").toLowerCase():null}function Wt(t){if(null==t)return window;if("[object Window]"!==t.toString()){var e=t.ownerDocument;return e&&e.defaultView||window}return t}function $t(t){return t instanceof Wt(t).Element||t instanceof Element}function zt(t){return t instanceof Wt(t).HTMLElement||t instanceof HTMLElement}function qt(t){return"undefined"!=typeof ShadowRoot&&(t instanceof Wt(t).ShadowRoot||t instanceof ShadowRoot)}const Ft={name:"applyStyles",enabled:!0,phase:"write",fn:function(t){var e=t.state;Object.keys(e.elements).forEach((function(t){var i=e.styles[t]||{},n=e.attributes[t]||{},s=e.elements[t];zt(s)&&Rt(s)&&(Object.assign(s.style,i),Object.keys(n).forEach((function(t){var e=n[t];!1===e?s.removeAttribute(t):s.setAttribute(t,!0===e?"":e)})))}))},effect:function(t){var e=t.state,i={popper:{position:e.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(e.elements.popper.style,i.popper),e.styles=i,e.elements.arrow&&Object.assign(e.elements.arrow.style,i.arrow),function(){Object.keys(e.elements).forEach((function(t){var n=e.elements[t],s=e.attributes[t]||{},o=Object.keys(e.styles.hasOwnProperty(t)?e.styles[t]:i[t]).reduce((function(t,e){return t[e]="",t}),{});zt(n)&&Rt(n)&&(Object.assign(n.style,o),Object.keys(s).forEach((function(t){n.removeAttribute(t)})))}))}},requires:["computeStyles"]};function Ut(t){return t.split("-")[0]}function Vt(t,e){var i=t.getBoundingClientRect();return{width:i.width/1,height:i.height/1,top:i.top/1,right:i.right/1,bottom:i.bottom/1,left:i.left/1,x:i.left/1,y:i.top/1}}function Kt(t){var e=Vt(t),i=t.offsetWidth,n=t.offsetHeight;return Math.abs(e.width-i)<=1&&(i=e.width),Math.abs(e.height-n)<=1&&(n=e.height),{x:t.offsetLeft,y:t.offsetTop,width:i,height:n}}function Xt(t,e){var i=e.getRootNode&&e.getRootNode();if(t.contains(e))return!0;if(i&&qt(i)){var n=e;do{if(n&&t.isSameNode(n))return!0;n=n.parentNode||n.host}while(n)}return!1}function Yt(t){return Wt(t).getComputedStyle(t)}function Qt(t){return["table","td","th"].indexOf(Rt(t))>=0}function Gt(t){return(($t(t)?t.ownerDocument:t.document)||window.document).documentElement}function Zt(t){return"html"===Rt(t)?t:t.assignedSlot||t.parentNode||(qt(t)?t.host:null)||Gt(t)}function Jt(t){return zt(t)&&"fixed"!==Yt(t).position?t.offsetParent:null}function te(t){for(var e=Wt(t),i=Jt(t);i&&Qt(i)&&"static"===Yt(i).position;)i=Jt(i);return i&&("html"===Rt(i)||"body"===Rt(i)&&"static"===Yt(i).position)?e:i||function(t){var e=-1!==navigator.userAgent.toLowerCase().indexOf("firefox");if(-1!==navigator.userAgent.indexOf("Trident")&&zt(t)&&"fixed"===Yt(t).position)return null;for(var i=Zt(t);zt(i)&&["html","body"].indexOf(Rt(i))<0;){var n=Yt(i);if("none"!==n.transform||"none"!==n.perspective||"paint"===n.contain||-1!==["transform","perspective"].indexOf(n.willChange)||e&&"filter"===n.willChange||e&&n.filter&&"none"!==n.filter)return i;i=i.parentNode}return null}(t)||e}function ee(t){return["top","bottom"].indexOf(t)>=0?"x":"y"}var ie=Math.max,ne=Math.min,se=Math.round;function oe(t,e,i){return ie(t,ne(e,i))}function re(t){return Object.assign({},{top:0,right:0,bottom:0,left:0},t)}function ae(t,e){return e.reduce((function(e,i){return e[i]=t,e}),{})}const le={name:"arrow",enabled:!0,phase:"main",fn:function(t){var e,i=t.state,n=t.name,s=t.options,o=i.elements.arrow,r=i.modifiersData.popperOffsets,a=Ut(i.placement),l=ee(a),c=[bt,_t].indexOf(a)>=0?"height":"width";if(o&&r){var h=function(t,e){return re("number"!=typeof(t="function"==typeof t?t(Object.assign({},e.rects,{placement:e.placement})):t)?t:ae(t,yt))}(s.padding,i),d=Kt(o),u="y"===l?mt:bt,f="y"===l?gt:_t,p=i.rects.reference[c]+i.rects.reference[l]-r[l]-i.rects.popper[c],m=r[l]-i.rects.reference[l],g=te(o),_=g?"y"===l?g.clientHeight||0:g.clientWidth||0:0,b=p/2-m/2,v=h[u],y=_-d[c]-h[f],w=_/2-d[c]/2+b,E=oe(v,w,y),A=l;i.modifiersData[n]=((e={})[A]=E,e.centerOffset=E-w,e)}},effect:function(t){var e=t.state,i=t.options.element,n=void 0===i?"[data-popper-arrow]":i;null!=n&&("string"!=typeof n||(n=e.elements.popper.querySelector(n)))&&Xt(e.elements.popper,n)&&(e.elements.arrow=n)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function ce(t){return t.split("-")[1]}var he={top:"auto",right:"auto",bottom:"auto",left:"auto"};function de(t){var e,i=t.popper,n=t.popperRect,s=t.placement,o=t.variation,r=t.offsets,a=t.position,l=t.gpuAcceleration,c=t.adaptive,h=t.roundOffsets,d=!0===h?function(t){var e=t.x,i=t.y,n=window.devicePixelRatio||1;return{x:se(se(e*n)/n)||0,y:se(se(i*n)/n)||0}}(r):"function"==typeof h?h(r):r,u=d.x,f=void 0===u?0:u,p=d.y,m=void 0===p?0:p,g=r.hasOwnProperty("x"),_=r.hasOwnProperty("y"),b=bt,v=mt,y=window;if(c){var w=te(i),E="clientHeight",A="clientWidth";w===Wt(i)&&"static"!==Yt(w=Gt(i)).position&&"absolute"===a&&(E="scrollHeight",A="scrollWidth"),w=w,s!==mt&&(s!==bt&&s!==_t||o!==Et)||(v=gt,m-=w[E]-n.height,m*=l?1:-1),s!==bt&&(s!==mt&&s!==gt||o!==Et)||(b=_t,f-=w[A]-n.width,f*=l?1:-1)}var T,O=Object.assign({position:a},c&&he);return l?Object.assign({},O,((T={})[v]=_?"0":"",T[b]=g?"0":"",T.transform=(y.devicePixelRatio||1)<=1?"translate("+f+"px, "+m+"px)":"translate3d("+f+"px, "+m+"px, 0)",T)):Object.assign({},O,((e={})[v]=_?m+"px":"",e[b]=g?f+"px":"",e.transform="",e))}const ue={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(t){var e=t.state,i=t.options,n=i.gpuAcceleration,s=void 0===n||n,o=i.adaptive,r=void 0===o||o,a=i.roundOffsets,l=void 0===a||a,c={placement:Ut(e.placement),variation:ce(e.placement),popper:e.elements.popper,popperRect:e.rects.popper,gpuAcceleration:s};null!=e.modifiersData.popperOffsets&&(e.styles.popper=Object.assign({},e.styles.popper,de(Object.assign({},c,{offsets:e.modifiersData.popperOffsets,position:e.options.strategy,adaptive:r,roundOffsets:l})))),null!=e.modifiersData.arrow&&(e.styles.arrow=Object.assign({},e.styles.arrow,de(Object.assign({},c,{offsets:e.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-placement":e.placement})},data:{}};var fe={passive:!0};const pe={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(t){var e=t.state,i=t.instance,n=t.options,s=n.scroll,o=void 0===s||s,r=n.resize,a=void 0===r||r,l=Wt(e.elements.popper),c=[].concat(e.scrollParents.reference,e.scrollParents.popper);return o&&c.forEach((function(t){t.addEventListener("scroll",i.update,fe)})),a&&l.addEventListener("resize",i.update,fe),function(){o&&c.forEach((function(t){t.removeEventListener("scroll",i.update,fe)})),a&&l.removeEventListener("resize",i.update,fe)}},data:{}};var me={left:"right",right:"left",bottom:"top",top:"bottom"};function ge(t){return t.replace(/left|right|bottom|top/g,(function(t){return me[t]}))}var _e={start:"end",end:"start"};function be(t){return t.replace(/start|end/g,(function(t){return _e[t]}))}function ve(t){var e=Wt(t);return{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function ye(t){return Vt(Gt(t)).left+ve(t).scrollLeft}function we(t){var e=Yt(t),i=e.overflow,n=e.overflowX,s=e.overflowY;return/auto|scroll|overlay|hidden/.test(i+s+n)}function Ee(t){return["html","body","#document"].indexOf(Rt(t))>=0?t.ownerDocument.body:zt(t)&&we(t)?t:Ee(Zt(t))}function Ae(t,e){var i;void 0===e&&(e=[]);var n=Ee(t),s=n===(null==(i=t.ownerDocument)?void 0:i.body),o=Wt(n),r=s?[o].concat(o.visualViewport||[],we(n)?n:[]):n,a=e.concat(r);return s?a:a.concat(Ae(Zt(r)))}function Te(t){return Object.assign({},t,{left:t.x,top:t.y,right:t.x+t.width,bottom:t.y+t.height})}function Oe(t,e){return e===Tt?Te(function(t){var e=Wt(t),i=Gt(t),n=e.visualViewport,s=i.clientWidth,o=i.clientHeight,r=0,a=0;return n&&(s=n.width,o=n.height,/^((?!chrome|android).)*safari/i.test(navigator.userAgent)||(r=n.offsetLeft,a=n.offsetTop)),{width:s,height:o,x:r+ye(t),y:a}}(t)):zt(e)?function(t){var e=Vt(t);return e.top=e.top+t.clientTop,e.left=e.left+t.clientLeft,e.bottom=e.top+t.clientHeight,e.right=e.left+t.clientWidth,e.width=t.clientWidth,e.height=t.clientHeight,e.x=e.left,e.y=e.top,e}(e):Te(function(t){var e,i=Gt(t),n=ve(t),s=null==(e=t.ownerDocument)?void 0:e.body,o=ie(i.scrollWidth,i.clientWidth,s?s.scrollWidth:0,s?s.clientWidth:0),r=ie(i.scrollHeight,i.clientHeight,s?s.scrollHeight:0,s?s.clientHeight:0),a=-n.scrollLeft+ye(t),l=-n.scrollTop;return"rtl"===Yt(s||i).direction&&(a+=ie(i.clientWidth,s?s.clientWidth:0)-o),{width:o,height:r,x:a,y:l}}(Gt(t)))}function Ce(t){var e,i=t.reference,n=t.element,s=t.placement,o=s?Ut(s):null,r=s?ce(s):null,a=i.x+i.width/2-n.width/2,l=i.y+i.height/2-n.height/2;switch(o){case mt:e={x:a,y:i.y-n.height};break;case gt:e={x:a,y:i.y+i.height};break;case _t:e={x:i.x+i.width,y:l};break;case bt:e={x:i.x-n.width,y:l};break;default:e={x:i.x,y:i.y}}var c=o?ee(o):null;if(null!=c){var h="y"===c?"height":"width";switch(r){case wt:e[c]=e[c]-(i[h]/2-n[h]/2);break;case Et:e[c]=e[c]+(i[h]/2-n[h]/2)}}return e}function ke(t,e){void 0===e&&(e={});var i=e,n=i.placement,s=void 0===n?t.placement:n,o=i.boundary,r=void 0===o?At:o,a=i.rootBoundary,l=void 0===a?Tt:a,c=i.elementContext,h=void 0===c?Ot:c,d=i.altBoundary,u=void 0!==d&&d,f=i.padding,p=void 0===f?0:f,m=re("number"!=typeof p?p:ae(p,yt)),g=h===Ot?Ct:Ot,_=t.rects.popper,b=t.elements[u?g:h],v=function(t,e,i){var n="clippingParents"===e?function(t){var e=Ae(Zt(t)),i=["absolute","fixed"].indexOf(Yt(t).position)>=0&&zt(t)?te(t):t;return $t(i)?e.filter((function(t){return $t(t)&&Xt(t,i)&&"body"!==Rt(t)})):[]}(t):[].concat(e),s=[].concat(n,[i]),o=s[0],r=s.reduce((function(e,i){var n=Oe(t,i);return e.top=ie(n.top,e.top),e.right=ne(n.right,e.right),e.bottom=ne(n.bottom,e.bottom),e.left=ie(n.left,e.left),e}),Oe(t,o));return r.width=r.right-r.left,r.height=r.bottom-r.top,r.x=r.left,r.y=r.top,r}($t(b)?b:b.contextElement||Gt(t.elements.popper),r,l),y=Vt(t.elements.reference),w=Ce({reference:y,element:_,strategy:"absolute",placement:s}),E=Te(Object.assign({},_,w)),A=h===Ot?E:y,T={top:v.top-A.top+m.top,bottom:A.bottom-v.bottom+m.bottom,left:v.left-A.left+m.left,right:A.right-v.right+m.right},O=t.modifiersData.offset;if(h===Ot&&O){var C=O[s];Object.keys(T).forEach((function(t){var e=[_t,gt].indexOf(t)>=0?1:-1,i=[mt,gt].indexOf(t)>=0?"y":"x";T[t]+=C[i]*e}))}return T}function Le(t,e){void 0===e&&(e={});var i=e,n=i.placement,s=i.boundary,o=i.rootBoundary,r=i.padding,a=i.flipVariations,l=i.allowedAutoPlacements,c=void 0===l?Lt:l,h=ce(n),d=h?a?kt:kt.filter((function(t){return ce(t)===h})):yt,u=d.filter((function(t){return c.indexOf(t)>=0}));0===u.length&&(u=d);var f=u.reduce((function(e,i){return e[i]=ke(t,{placement:i,boundary:s,rootBoundary:o,padding:r})[Ut(i)],e}),{});return Object.keys(f).sort((function(t,e){return f[t]-f[e]}))}const xe={name:"flip",enabled:!0,phase:"main",fn:function(t){var e=t.state,i=t.options,n=t.name;if(!e.modifiersData[n]._skip){for(var s=i.mainAxis,o=void 0===s||s,r=i.altAxis,a=void 0===r||r,l=i.fallbackPlacements,c=i.padding,h=i.boundary,d=i.rootBoundary,u=i.altBoundary,f=i.flipVariations,p=void 0===f||f,m=i.allowedAutoPlacements,g=e.options.placement,_=Ut(g),b=l||(_!==g&&p?function(t){if(Ut(t)===vt)return[];var e=ge(t);return[be(t),e,be(e)]}(g):[ge(g)]),v=[g].concat(b).reduce((function(t,i){return t.concat(Ut(i)===vt?Le(e,{placement:i,boundary:h,rootBoundary:d,padding:c,flipVariations:p,allowedAutoPlacements:m}):i)}),[]),y=e.rects.reference,w=e.rects.popper,E=new Map,A=!0,T=v[0],O=0;O=0,D=x?"width":"height",S=ke(e,{placement:C,boundary:h,rootBoundary:d,altBoundary:u,padding:c}),N=x?L?_t:bt:L?gt:mt;y[D]>w[D]&&(N=ge(N));var I=ge(N),P=[];if(o&&P.push(S[k]<=0),a&&P.push(S[N]<=0,S[I]<=0),P.every((function(t){return t}))){T=C,A=!1;break}E.set(C,P)}if(A)for(var j=function(t){var e=v.find((function(e){var i=E.get(e);if(i)return i.slice(0,t).every((function(t){return t}))}));if(e)return T=e,"break"},M=p?3:1;M>0&&"break"!==j(M);M--);e.placement!==T&&(e.modifiersData[n]._skip=!0,e.placement=T,e.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function De(t,e,i){return void 0===i&&(i={x:0,y:0}),{top:t.top-e.height-i.y,right:t.right-e.width+i.x,bottom:t.bottom-e.height+i.y,left:t.left-e.width-i.x}}function Se(t){return[mt,_t,gt,bt].some((function(e){return t[e]>=0}))}const Ne={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(t){var e=t.state,i=t.name,n=e.rects.reference,s=e.rects.popper,o=e.modifiersData.preventOverflow,r=ke(e,{elementContext:"reference"}),a=ke(e,{altBoundary:!0}),l=De(r,n),c=De(a,s,o),h=Se(l),d=Se(c);e.modifiersData[i]={referenceClippingOffsets:l,popperEscapeOffsets:c,isReferenceHidden:h,hasPopperEscaped:d},e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-reference-hidden":h,"data-popper-escaped":d})}},Ie={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(t){var e=t.state,i=t.options,n=t.name,s=i.offset,o=void 0===s?[0,0]:s,r=Lt.reduce((function(t,i){return t[i]=function(t,e,i){var n=Ut(t),s=[bt,mt].indexOf(n)>=0?-1:1,o="function"==typeof i?i(Object.assign({},e,{placement:t})):i,r=o[0],a=o[1];return r=r||0,a=(a||0)*s,[bt,_t].indexOf(n)>=0?{x:a,y:r}:{x:r,y:a}}(i,e.rects,o),t}),{}),a=r[e.placement],l=a.x,c=a.y;null!=e.modifiersData.popperOffsets&&(e.modifiersData.popperOffsets.x+=l,e.modifiersData.popperOffsets.y+=c),e.modifiersData[n]=r}},Pe={name:"popperOffsets",enabled:!0,phase:"read",fn:function(t){var e=t.state,i=t.name;e.modifiersData[i]=Ce({reference:e.rects.reference,element:e.rects.popper,strategy:"absolute",placement:e.placement})},data:{}},je={name:"preventOverflow",enabled:!0,phase:"main",fn:function(t){var e=t.state,i=t.options,n=t.name,s=i.mainAxis,o=void 0===s||s,r=i.altAxis,a=void 0!==r&&r,l=i.boundary,c=i.rootBoundary,h=i.altBoundary,d=i.padding,u=i.tether,f=void 0===u||u,p=i.tetherOffset,m=void 0===p?0:p,g=ke(e,{boundary:l,rootBoundary:c,padding:d,altBoundary:h}),_=Ut(e.placement),b=ce(e.placement),v=!b,y=ee(_),w="x"===y?"y":"x",E=e.modifiersData.popperOffsets,A=e.rects.reference,T=e.rects.popper,O="function"==typeof m?m(Object.assign({},e.rects,{placement:e.placement})):m,C={x:0,y:0};if(E){if(o||a){var k="y"===y?mt:bt,L="y"===y?gt:_t,x="y"===y?"height":"width",D=E[y],S=E[y]+g[k],N=E[y]-g[L],I=f?-T[x]/2:0,P=b===wt?A[x]:T[x],j=b===wt?-T[x]:-A[x],M=e.elements.arrow,H=f&&M?Kt(M):{width:0,height:0},B=e.modifiersData["arrow#persistent"]?e.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},R=B[k],W=B[L],$=oe(0,A[x],H[x]),z=v?A[x]/2-I-$-R-O:P-$-R-O,q=v?-A[x]/2+I+$+W+O:j+$+W+O,F=e.elements.arrow&&te(e.elements.arrow),U=F?"y"===y?F.clientTop||0:F.clientLeft||0:0,V=e.modifiersData.offset?e.modifiersData.offset[e.placement][y]:0,K=E[y]+z-V-U,X=E[y]+q-V;if(o){var Y=oe(f?ne(S,K):S,D,f?ie(N,X):N);E[y]=Y,C[y]=Y-D}if(a){var Q="x"===y?mt:bt,G="x"===y?gt:_t,Z=E[w],J=Z+g[Q],tt=Z-g[G],et=oe(f?ne(J,K):J,Z,f?ie(tt,X):tt);E[w]=et,C[w]=et-Z}}e.modifiersData[n]=C}},requiresIfExists:["offset"]};function Me(t,e,i){void 0===i&&(i=!1);var n=zt(e);zt(e)&&function(t){var e=t.getBoundingClientRect();e.width,t.offsetWidth,e.height,t.offsetHeight}(e);var s,o,r=Gt(e),a=Vt(t),l={scrollLeft:0,scrollTop:0},c={x:0,y:0};return(n||!n&&!i)&&(("body"!==Rt(e)||we(r))&&(l=(s=e)!==Wt(s)&&zt(s)?{scrollLeft:(o=s).scrollLeft,scrollTop:o.scrollTop}:ve(s)),zt(e)?((c=Vt(e)).x+=e.clientLeft,c.y+=e.clientTop):r&&(c.x=ye(r))),{x:a.left+l.scrollLeft-c.x,y:a.top+l.scrollTop-c.y,width:a.width,height:a.height}}function He(t){var e=new Map,i=new Set,n=[];function s(t){i.add(t.name),[].concat(t.requires||[],t.requiresIfExists||[]).forEach((function(t){if(!i.has(t)){var n=e.get(t);n&&s(n)}})),n.push(t)}return t.forEach((function(t){e.set(t.name,t)})),t.forEach((function(t){i.has(t.name)||s(t)})),n}var Be={placement:"bottom",modifiers:[],strategy:"absolute"};function Re(){for(var t=arguments.length,e=new Array(t),i=0;ij.on(t,"mouseover",d))),this._element.focus(),this._element.setAttribute("aria-expanded",!0),this._menu.classList.add(Je),this._element.classList.add(Je),j.trigger(this._element,"shown.bs.dropdown",t)}hide(){if(c(this._element)||!this._isShown(this._menu))return;const t={relatedTarget:this._element};this._completeHide(t)}dispose(){this._popper&&this._popper.destroy(),super.dispose()}update(){this._inNavbar=this._detectNavbar(),this._popper&&this._popper.update()}_completeHide(t){j.trigger(this._element,"hide.bs.dropdown",t).defaultPrevented||("ontouchstart"in document.documentElement&&[].concat(...document.body.children).forEach((t=>j.off(t,"mouseover",d))),this._popper&&this._popper.destroy(),this._menu.classList.remove(Je),this._element.classList.remove(Je),this._element.setAttribute("aria-expanded","false"),U.removeDataAttribute(this._menu,"popper"),j.trigger(this._element,"hidden.bs.dropdown",t))}_getConfig(t){if(t={...this.constructor.Default,...U.getDataAttributes(this._element),...t},a(Ue,t,this.constructor.DefaultType),"object"==typeof t.reference&&!o(t.reference)&&"function"!=typeof t.reference.getBoundingClientRect)throw new TypeError(`${Ue.toUpperCase()}: Option "reference" provided type "object" without a required "getBoundingClientRect" method.`);return t}_createPopper(t){if(void 0===Fe)throw new TypeError("Bootstrap's dropdowns require Popper (https://popper.js.org)");let e=this._element;"parent"===this._config.reference?e=t:o(this._config.reference)?e=r(this._config.reference):"object"==typeof this._config.reference&&(e=this._config.reference);const i=this._getPopperConfig(),n=i.modifiers.find((t=>"applyStyles"===t.name&&!1===t.enabled));this._popper=qe(e,this._menu,i),n&&U.setDataAttribute(this._menu,"popper","static")}_isShown(t=this._element){return t.classList.contains(Je)}_getMenuElement(){return V.next(this._element,ei)[0]}_getPlacement(){const t=this._element.parentNode;if(t.classList.contains("dropend"))return ri;if(t.classList.contains("dropstart"))return ai;const e="end"===getComputedStyle(this._menu).getPropertyValue("--bs-position").trim();return t.classList.contains("dropup")?e?ni:ii:e?oi:si}_detectNavbar(){return null!==this._element.closest(".navbar")}_getOffset(){const{offset:t}=this._config;return"string"==typeof t?t.split(",").map((t=>Number.parseInt(t,10))):"function"==typeof t?e=>t(e,this._element):t}_getPopperConfig(){const t={placement:this._getPlacement(),modifiers:[{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"offset",options:{offset:this._getOffset()}}]};return"static"===this._config.display&&(t.modifiers=[{name:"applyStyles",enabled:!1}]),{...t,..."function"==typeof this._config.popperConfig?this._config.popperConfig(t):this._config.popperConfig}}_selectMenuItem({key:t,target:e}){const i=V.find(".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)",this._menu).filter(l);i.length&&v(i,e,t===Ye,!i.includes(e)).focus()}static jQueryInterface(t){return this.each((function(){const e=hi.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}static clearMenus(t){if(t&&(2===t.button||"keyup"===t.type&&"Tab"!==t.key))return;const e=V.find(ti);for(let i=0,n=e.length;ie+t)),this._setElementAttributes(di,"paddingRight",(e=>e+t)),this._setElementAttributes(ui,"marginRight",(e=>e-t))}_disableOverFlow(){this._saveInitialAttribute(this._element,"overflow"),this._element.style.overflow="hidden"}_setElementAttributes(t,e,i){const n=this.getWidth();this._applyManipulationCallback(t,(t=>{if(t!==this._element&&window.innerWidth>t.clientWidth+n)return;this._saveInitialAttribute(t,e);const s=window.getComputedStyle(t)[e];t.style[e]=`${i(Number.parseFloat(s))}px`}))}reset(){this._resetElementAttributes(this._element,"overflow"),this._resetElementAttributes(this._element,"paddingRight"),this._resetElementAttributes(di,"paddingRight"),this._resetElementAttributes(ui,"marginRight")}_saveInitialAttribute(t,e){const i=t.style[e];i&&U.setDataAttribute(t,e,i)}_resetElementAttributes(t,e){this._applyManipulationCallback(t,(t=>{const i=U.getDataAttribute(t,e);void 0===i?t.style.removeProperty(e):(U.removeDataAttribute(t,e),t.style[e]=i)}))}_applyManipulationCallback(t,e){o(t)?e(t):V.find(t,this._element).forEach(e)}isOverflowing(){return this.getWidth()>0}}const pi={className:"modal-backdrop",isVisible:!0,isAnimated:!1,rootElement:"body",clickCallback:null},mi={className:"string",isVisible:"boolean",isAnimated:"boolean",rootElement:"(element|string)",clickCallback:"(function|null)"},gi="show",_i="mousedown.bs.backdrop";class bi{constructor(t){this._config=this._getConfig(t),this._isAppended=!1,this._element=null}show(t){this._config.isVisible?(this._append(),this._config.isAnimated&&u(this._getElement()),this._getElement().classList.add(gi),this._emulateAnimation((()=>{_(t)}))):_(t)}hide(t){this._config.isVisible?(this._getElement().classList.remove(gi),this._emulateAnimation((()=>{this.dispose(),_(t)}))):_(t)}_getElement(){if(!this._element){const t=document.createElement("div");t.className=this._config.className,this._config.isAnimated&&t.classList.add("fade"),this._element=t}return this._element}_getConfig(t){return(t={...pi,..."object"==typeof t?t:{}}).rootElement=r(t.rootElement),a("backdrop",t,mi),t}_append(){this._isAppended||(this._config.rootElement.append(this._getElement()),j.on(this._getElement(),_i,(()=>{_(this._config.clickCallback)})),this._isAppended=!0)}dispose(){this._isAppended&&(j.off(this._element,_i),this._element.remove(),this._isAppended=!1)}_emulateAnimation(t){b(t,this._getElement(),this._config.isAnimated)}}const vi={trapElement:null,autofocus:!0},yi={trapElement:"element",autofocus:"boolean"},wi=".bs.focustrap",Ei="backward";class Ai{constructor(t){this._config=this._getConfig(t),this._isActive=!1,this._lastTabNavDirection=null}activate(){const{trapElement:t,autofocus:e}=this._config;this._isActive||(e&&t.focus(),j.off(document,wi),j.on(document,"focusin.bs.focustrap",(t=>this._handleFocusin(t))),j.on(document,"keydown.tab.bs.focustrap",(t=>this._handleKeydown(t))),this._isActive=!0)}deactivate(){this._isActive&&(this._isActive=!1,j.off(document,wi))}_handleFocusin(t){const{target:e}=t,{trapElement:i}=this._config;if(e===document||e===i||i.contains(e))return;const n=V.focusableChildren(i);0===n.length?i.focus():this._lastTabNavDirection===Ei?n[n.length-1].focus():n[0].focus()}_handleKeydown(t){"Tab"===t.key&&(this._lastTabNavDirection=t.shiftKey?Ei:"forward")}_getConfig(t){return t={...vi,..."object"==typeof t?t:{}},a("focustrap",t,yi),t}}const Ti="modal",Oi="Escape",Ci={backdrop:!0,keyboard:!0,focus:!0},ki={backdrop:"(boolean|string)",keyboard:"boolean",focus:"boolean"},Li="hidden.bs.modal",xi="show.bs.modal",Di="resize.bs.modal",Si="click.dismiss.bs.modal",Ni="keydown.dismiss.bs.modal",Ii="mousedown.dismiss.bs.modal",Pi="modal-open",ji="show",Mi="modal-static";class Hi extends B{constructor(t,e){super(t),this._config=this._getConfig(e),this._dialog=V.findOne(".modal-dialog",this._element),this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._isShown=!1,this._ignoreBackdropClick=!1,this._isTransitioning=!1,this._scrollBar=new fi}static get Default(){return Ci}static get NAME(){return Ti}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||this._isTransitioning||j.trigger(this._element,xi,{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._isAnimated()&&(this._isTransitioning=!0),this._scrollBar.hide(),document.body.classList.add(Pi),this._adjustDialog(),this._setEscapeEvent(),this._setResizeEvent(),j.on(this._dialog,Ii,(()=>{j.one(this._element,"mouseup.dismiss.bs.modal",(t=>{t.target===this._element&&(this._ignoreBackdropClick=!0)}))})),this._showBackdrop((()=>this._showElement(t))))}hide(){if(!this._isShown||this._isTransitioning)return;if(j.trigger(this._element,"hide.bs.modal").defaultPrevented)return;this._isShown=!1;const t=this._isAnimated();t&&(this._isTransitioning=!0),this._setEscapeEvent(),this._setResizeEvent(),this._focustrap.deactivate(),this._element.classList.remove(ji),j.off(this._element,Si),j.off(this._dialog,Ii),this._queueCallback((()=>this._hideModal()),this._element,t)}dispose(){[window,this._dialog].forEach((t=>j.off(t,".bs.modal"))),this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}handleUpdate(){this._adjustDialog()}_initializeBackDrop(){return new bi({isVisible:Boolean(this._config.backdrop),isAnimated:this._isAnimated()})}_initializeFocusTrap(){return new Ai({trapElement:this._element})}_getConfig(t){return t={...Ci,...U.getDataAttributes(this._element),..."object"==typeof t?t:{}},a(Ti,t,ki),t}_showElement(t){const e=this._isAnimated(),i=V.findOne(".modal-body",this._dialog);this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE||document.body.append(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.scrollTop=0,i&&(i.scrollTop=0),e&&u(this._element),this._element.classList.add(ji),this._queueCallback((()=>{this._config.focus&&this._focustrap.activate(),this._isTransitioning=!1,j.trigger(this._element,"shown.bs.modal",{relatedTarget:t})}),this._dialog,e)}_setEscapeEvent(){this._isShown?j.on(this._element,Ni,(t=>{this._config.keyboard&&t.key===Oi?(t.preventDefault(),this.hide()):this._config.keyboard||t.key!==Oi||this._triggerBackdropTransition()})):j.off(this._element,Ni)}_setResizeEvent(){this._isShown?j.on(window,Di,(()=>this._adjustDialog())):j.off(window,Di)}_hideModal(){this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._isTransitioning=!1,this._backdrop.hide((()=>{document.body.classList.remove(Pi),this._resetAdjustments(),this._scrollBar.reset(),j.trigger(this._element,Li)}))}_showBackdrop(t){j.on(this._element,Si,(t=>{this._ignoreBackdropClick?this._ignoreBackdropClick=!1:t.target===t.currentTarget&&(!0===this._config.backdrop?this.hide():"static"===this._config.backdrop&&this._triggerBackdropTransition())})),this._backdrop.show(t)}_isAnimated(){return this._element.classList.contains("fade")}_triggerBackdropTransition(){if(j.trigger(this._element,"hidePrevented.bs.modal").defaultPrevented)return;const{classList:t,scrollHeight:e,style:i}=this._element,n=e>document.documentElement.clientHeight;!n&&"hidden"===i.overflowY||t.contains(Mi)||(n||(i.overflowY="hidden"),t.add(Mi),this._queueCallback((()=>{t.remove(Mi),n||this._queueCallback((()=>{i.overflowY=""}),this._dialog)}),this._dialog),this._element.focus())}_adjustDialog(){const t=this._element.scrollHeight>document.documentElement.clientHeight,e=this._scrollBar.getWidth(),i=e>0;(!i&&t&&!m()||i&&!t&&m())&&(this._element.style.paddingLeft=`${e}px`),(i&&!t&&!m()||!i&&t&&m())&&(this._element.style.paddingRight=`${e}px`)}_resetAdjustments(){this._element.style.paddingLeft="",this._element.style.paddingRight=""}static jQueryInterface(t,e){return this.each((function(){const i=Hi.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===i[t])throw new TypeError(`No method named "${t}"`);i[t](e)}}))}}j.on(document,"click.bs.modal.data-api",'[data-bs-toggle="modal"]',(function(t){const e=n(this);["A","AREA"].includes(this.tagName)&&t.preventDefault(),j.one(e,xi,(t=>{t.defaultPrevented||j.one(e,Li,(()=>{l(this)&&this.focus()}))}));const i=V.findOne(".modal.show");i&&Hi.getInstance(i).hide(),Hi.getOrCreateInstance(e).toggle(this)})),R(Hi),g(Hi);const Bi="offcanvas",Ri={backdrop:!0,keyboard:!0,scroll:!1},Wi={backdrop:"boolean",keyboard:"boolean",scroll:"boolean"},$i="show",zi=".offcanvas.show",qi="hidden.bs.offcanvas";class Fi extends B{constructor(t,e){super(t),this._config=this._getConfig(e),this._isShown=!1,this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._addEventListeners()}static get NAME(){return Bi}static get Default(){return Ri}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||j.trigger(this._element,"show.bs.offcanvas",{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._element.style.visibility="visible",this._backdrop.show(),this._config.scroll||(new fi).hide(),this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.classList.add($i),this._queueCallback((()=>{this._config.scroll||this._focustrap.activate(),j.trigger(this._element,"shown.bs.offcanvas",{relatedTarget:t})}),this._element,!0))}hide(){this._isShown&&(j.trigger(this._element,"hide.bs.offcanvas").defaultPrevented||(this._focustrap.deactivate(),this._element.blur(),this._isShown=!1,this._element.classList.remove($i),this._backdrop.hide(),this._queueCallback((()=>{this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._element.style.visibility="hidden",this._config.scroll||(new fi).reset(),j.trigger(this._element,qi)}),this._element,!0)))}dispose(){this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}_getConfig(t){return t={...Ri,...U.getDataAttributes(this._element),..."object"==typeof t?t:{}},a(Bi,t,Wi),t}_initializeBackDrop(){return new bi({className:"offcanvas-backdrop",isVisible:this._config.backdrop,isAnimated:!0,rootElement:this._element.parentNode,clickCallback:()=>this.hide()})}_initializeFocusTrap(){return new Ai({trapElement:this._element})}_addEventListeners(){j.on(this._element,"keydown.dismiss.bs.offcanvas",(t=>{this._config.keyboard&&"Escape"===t.key&&this.hide()}))}static jQueryInterface(t){return this.each((function(){const e=Fi.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}j.on(document,"click.bs.offcanvas.data-api",'[data-bs-toggle="offcanvas"]',(function(t){const e=n(this);if(["A","AREA"].includes(this.tagName)&&t.preventDefault(),c(this))return;j.one(e,qi,(()=>{l(this)&&this.focus()}));const i=V.findOne(zi);i&&i!==e&&Fi.getInstance(i).hide(),Fi.getOrCreateInstance(e).toggle(this)})),j.on(window,"load.bs.offcanvas.data-api",(()=>V.find(zi).forEach((t=>Fi.getOrCreateInstance(t).show())))),R(Fi),g(Fi);const Ui=new Set(["background","cite","href","itemtype","longdesc","poster","src","xlink:href"]),Vi=/^(?:(?:https?|mailto|ftp|tel|file|sms):|[^#&/:?]*(?:[#/?]|$))/i,Ki=/^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[\d+/a-z]+=*$/i,Xi=(t,e)=>{const i=t.nodeName.toLowerCase();if(e.includes(i))return!Ui.has(i)||Boolean(Vi.test(t.nodeValue)||Ki.test(t.nodeValue));const n=e.filter((t=>t instanceof RegExp));for(let t=0,e=n.length;t{Xi(t,r)||i.removeAttribute(t.nodeName)}))}return n.body.innerHTML}const Qi="tooltip",Gi=new Set(["sanitize","allowList","sanitizeFn"]),Zi={animation:"boolean",template:"string",title:"(string|element|function)",trigger:"string",delay:"(number|object)",html:"boolean",selector:"(string|boolean)",placement:"(string|function)",offset:"(array|string|function)",container:"(string|element|boolean)",fallbackPlacements:"array",boundary:"(string|element)",customClass:"(string|function)",sanitize:"boolean",sanitizeFn:"(null|function)",allowList:"object",popperConfig:"(null|object|function)"},Ji={AUTO:"auto",TOP:"top",RIGHT:m()?"left":"right",BOTTOM:"bottom",LEFT:m()?"right":"left"},tn={animation:!0,template:'',trigger:"hover focus",title:"",delay:0,html:!1,selector:!1,placement:"top",offset:[0,0],container:!1,fallbackPlacements:["top","right","bottom","left"],boundary:"clippingParents",customClass:"",sanitize:!0,sanitizeFn:null,allowList:{"*":["class","dir","id","lang","role",/^aria-[\w-]*$/i],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],div:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","srcset","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},popperConfig:null},en={HIDE:"hide.bs.tooltip",HIDDEN:"hidden.bs.tooltip",SHOW:"show.bs.tooltip",SHOWN:"shown.bs.tooltip",INSERTED:"inserted.bs.tooltip",CLICK:"click.bs.tooltip",FOCUSIN:"focusin.bs.tooltip",FOCUSOUT:"focusout.bs.tooltip",MOUSEENTER:"mouseenter.bs.tooltip",MOUSELEAVE:"mouseleave.bs.tooltip"},nn="fade",sn="show",on="show",rn="out",an=".tooltip-inner",ln=".modal",cn="hide.bs.modal",hn="hover",dn="focus";class un extends B{constructor(t,e){if(void 0===Fe)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");super(t),this._isEnabled=!0,this._timeout=0,this._hoverState="",this._activeTrigger={},this._popper=null,this._config=this._getConfig(e),this.tip=null,this._setListeners()}static get Default(){return tn}static get NAME(){return Qi}static get Event(){return en}static get DefaultType(){return Zi}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(t){if(this._isEnabled)if(t){const e=this._initializeOnDelegatedTarget(t);e._activeTrigger.click=!e._activeTrigger.click,e._isWithActiveTrigger()?e._enter(null,e):e._leave(null,e)}else{if(this.getTipElement().classList.contains(sn))return void this._leave(null,this);this._enter(null,this)}}dispose(){clearTimeout(this._timeout),j.off(this._element.closest(ln),cn,this._hideModalHandler),this.tip&&this.tip.remove(),this._disposePopper(),super.dispose()}show(){if("none"===this._element.style.display)throw new Error("Please use show on visible elements");if(!this.isWithContent()||!this._isEnabled)return;const t=j.trigger(this._element,this.constructor.Event.SHOW),e=h(this._element),i=null===e?this._element.ownerDocument.documentElement.contains(this._element):e.contains(this._element);if(t.defaultPrevented||!i)return;"tooltip"===this.constructor.NAME&&this.tip&&this.getTitle()!==this.tip.querySelector(an).innerHTML&&(this._disposePopper(),this.tip.remove(),this.tip=null);const n=this.getTipElement(),s=(t=>{do{t+=Math.floor(1e6*Math.random())}while(document.getElementById(t));return t})(this.constructor.NAME);n.setAttribute("id",s),this._element.setAttribute("aria-describedby",s),this._config.animation&&n.classList.add(nn);const o="function"==typeof this._config.placement?this._config.placement.call(this,n,this._element):this._config.placement,r=this._getAttachment(o);this._addAttachmentClass(r);const{container:a}=this._config;H.set(n,this.constructor.DATA_KEY,this),this._element.ownerDocument.documentElement.contains(this.tip)||(a.append(n),j.trigger(this._element,this.constructor.Event.INSERTED)),this._popper?this._popper.update():this._popper=qe(this._element,n,this._getPopperConfig(r)),n.classList.add(sn);const l=this._resolvePossibleFunction(this._config.customClass);l&&n.classList.add(...l.split(" ")),"ontouchstart"in document.documentElement&&[].concat(...document.body.children).forEach((t=>{j.on(t,"mouseover",d)}));const c=this.tip.classList.contains(nn);this._queueCallback((()=>{const t=this._hoverState;this._hoverState=null,j.trigger(this._element,this.constructor.Event.SHOWN),t===rn&&this._leave(null,this)}),this.tip,c)}hide(){if(!this._popper)return;const t=this.getTipElement();if(j.trigger(this._element,this.constructor.Event.HIDE).defaultPrevented)return;t.classList.remove(sn),"ontouchstart"in document.documentElement&&[].concat(...document.body.children).forEach((t=>j.off(t,"mouseover",d))),this._activeTrigger.click=!1,this._activeTrigger.focus=!1,this._activeTrigger.hover=!1;const e=this.tip.classList.contains(nn);this._queueCallback((()=>{this._isWithActiveTrigger()||(this._hoverState!==on&&t.remove(),this._cleanTipClass(),this._element.removeAttribute("aria-describedby"),j.trigger(this._element,this.constructor.Event.HIDDEN),this._disposePopper())}),this.tip,e),this._hoverState=""}update(){null!==this._popper&&this._popper.update()}isWithContent(){return Boolean(this.getTitle())}getTipElement(){if(this.tip)return this.tip;const t=document.createElement("div");t.innerHTML=this._config.template;const e=t.children[0];return this.setContent(e),e.classList.remove(nn,sn),this.tip=e,this.tip}setContent(t){this._sanitizeAndSetContent(t,this.getTitle(),an)}_sanitizeAndSetContent(t,e,i){const n=V.findOne(i,t);e||!n?this.setElementContent(n,e):n.remove()}setElementContent(t,e){if(null!==t)return o(e)?(e=r(e),void(this._config.html?e.parentNode!==t&&(t.innerHTML="",t.append(e)):t.textContent=e.textContent)):void(this._config.html?(this._config.sanitize&&(e=Yi(e,this._config.allowList,this._config.sanitizeFn)),t.innerHTML=e):t.textContent=e)}getTitle(){const t=this._element.getAttribute("data-bs-original-title")||this._config.title;return this._resolvePossibleFunction(t)}updateAttachment(t){return"right"===t?"end":"left"===t?"start":t}_initializeOnDelegatedTarget(t,e){return e||this.constructor.getOrCreateInstance(t.delegateTarget,this._getDelegateConfig())}_getOffset(){const{offset:t}=this._config;return"string"==typeof t?t.split(",").map((t=>Number.parseInt(t,10))):"function"==typeof t?e=>t(e,this._element):t}_resolvePossibleFunction(t){return"function"==typeof t?t.call(this._element):t}_getPopperConfig(t){const e={placement:t,modifiers:[{name:"flip",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"arrow",options:{element:`.${this.constructor.NAME}-arrow`}},{name:"onChange",enabled:!0,phase:"afterWrite",fn:t=>this._handlePopperPlacementChange(t)}],onFirstUpdate:t=>{t.options.placement!==t.placement&&this._handlePopperPlacementChange(t)}};return{...e,..."function"==typeof this._config.popperConfig?this._config.popperConfig(e):this._config.popperConfig}}_addAttachmentClass(t){this.getTipElement().classList.add(`${this._getBasicClassPrefix()}-${this.updateAttachment(t)}`)}_getAttachment(t){return Ji[t.toUpperCase()]}_setListeners(){this._config.trigger.split(" ").forEach((t=>{if("click"===t)j.on(this._element,this.constructor.Event.CLICK,this._config.selector,(t=>this.toggle(t)));else if("manual"!==t){const e=t===hn?this.constructor.Event.MOUSEENTER:this.constructor.Event.FOCUSIN,i=t===hn?this.constructor.Event.MOUSELEAVE:this.constructor.Event.FOCUSOUT;j.on(this._element,e,this._config.selector,(t=>this._enter(t))),j.on(this._element,i,this._config.selector,(t=>this._leave(t)))}})),this._hideModalHandler=()=>{this._element&&this.hide()},j.on(this._element.closest(ln),cn,this._hideModalHandler),this._config.selector?this._config={...this._config,trigger:"manual",selector:""}:this._fixTitle()}_fixTitle(){const t=this._element.getAttribute("title"),e=typeof this._element.getAttribute("data-bs-original-title");(t||"string"!==e)&&(this._element.setAttribute("data-bs-original-title",t||""),!t||this._element.getAttribute("aria-label")||this._element.textContent||this._element.setAttribute("aria-label",t),this._element.setAttribute("title",""))}_enter(t,e){e=this._initializeOnDelegatedTarget(t,e),t&&(e._activeTrigger["focusin"===t.type?dn:hn]=!0),e.getTipElement().classList.contains(sn)||e._hoverState===on?e._hoverState=on:(clearTimeout(e._timeout),e._hoverState=on,e._config.delay&&e._config.delay.show?e._timeout=setTimeout((()=>{e._hoverState===on&&e.show()}),e._config.delay.show):e.show())}_leave(t,e){e=this._initializeOnDelegatedTarget(t,e),t&&(e._activeTrigger["focusout"===t.type?dn:hn]=e._element.contains(t.relatedTarget)),e._isWithActiveTrigger()||(clearTimeout(e._timeout),e._hoverState=rn,e._config.delay&&e._config.delay.hide?e._timeout=setTimeout((()=>{e._hoverState===rn&&e.hide()}),e._config.delay.hide):e.hide())}_isWithActiveTrigger(){for(const t in this._activeTrigger)if(this._activeTrigger[t])return!0;return!1}_getConfig(t){const e=U.getDataAttributes(this._element);return Object.keys(e).forEach((t=>{Gi.has(t)&&delete e[t]})),(t={...this.constructor.Default,...e,..."object"==typeof t&&t?t:{}}).container=!1===t.container?document.body:r(t.container),"number"==typeof t.delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),a(Qi,t,this.constructor.DefaultType),t.sanitize&&(t.template=Yi(t.template,t.allowList,t.sanitizeFn)),t}_getDelegateConfig(){const t={};for(const e in this._config)this.constructor.Default[e]!==this._config[e]&&(t[e]=this._config[e]);return t}_cleanTipClass(){const t=this.getTipElement(),e=new RegExp(`(^|\\s)${this._getBasicClassPrefix()}\\S+`,"g"),i=t.getAttribute("class").match(e);null!==i&&i.length>0&&i.map((t=>t.trim())).forEach((e=>t.classList.remove(e)))}_getBasicClassPrefix(){return"bs-tooltip"}_handlePopperPlacementChange(t){const{state:e}=t;e&&(this.tip=e.elements.popper,this._cleanTipClass(),this._addAttachmentClass(this._getAttachment(e.placement)))}_disposePopper(){this._popper&&(this._popper.destroy(),this._popper=null)}static jQueryInterface(t){return this.each((function(){const e=un.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}g(un);const fn={...un.Default,placement:"right",offset:[0,8],trigger:"click",content:"",template:''},pn={...un.DefaultType,content:"(string|element|function)"},mn={HIDE:"hide.bs.popover",HIDDEN:"hidden.bs.popover",SHOW:"show.bs.popover",SHOWN:"shown.bs.popover",INSERTED:"inserted.bs.popover",CLICK:"click.bs.popover",FOCUSIN:"focusin.bs.popover",FOCUSOUT:"focusout.bs.popover",MOUSEENTER:"mouseenter.bs.popover",MOUSELEAVE:"mouseleave.bs.popover"};class gn extends un{static get Default(){return fn}static get NAME(){return"popover"}static get Event(){return mn}static get DefaultType(){return pn}isWithContent(){return this.getTitle()||this._getContent()}setContent(t){this._sanitizeAndSetContent(t,this.getTitle(),".popover-header"),this._sanitizeAndSetContent(t,this._getContent(),".popover-body")}_getContent(){return this._resolvePossibleFunction(this._config.content)}_getBasicClassPrefix(){return"bs-popover"}static jQueryInterface(t){return this.each((function(){const e=gn.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}g(gn);const _n="scrollspy",bn={offset:10,method:"auto",target:""},vn={offset:"number",method:"string",target:"(string|element)"},yn="active",wn=".nav-link, .list-group-item, .dropdown-item",En="position";class An extends B{constructor(t,e){super(t),this._scrollElement="BODY"===this._element.tagName?window:this._element,this._config=this._getConfig(e),this._offsets=[],this._targets=[],this._activeTarget=null,this._scrollHeight=0,j.on(this._scrollElement,"scroll.bs.scrollspy",(()=>this._process())),this.refresh(),this._process()}static get Default(){return bn}static get NAME(){return _n}refresh(){const t=this._scrollElement===this._scrollElement.window?"offset":En,e="auto"===this._config.method?t:this._config.method,n=e===En?this._getScrollTop():0;this._offsets=[],this._targets=[],this._scrollHeight=this._getScrollHeight(),V.find(wn,this._config.target).map((t=>{const s=i(t),o=s?V.findOne(s):null;if(o){const t=o.getBoundingClientRect();if(t.width||t.height)return[U[e](o).top+n,s]}return null})).filter((t=>t)).sort(((t,e)=>t[0]-e[0])).forEach((t=>{this._offsets.push(t[0]),this._targets.push(t[1])}))}dispose(){j.off(this._scrollElement,".bs.scrollspy"),super.dispose()}_getConfig(t){return(t={...bn,...U.getDataAttributes(this._element),..."object"==typeof t&&t?t:{}}).target=r(t.target)||document.documentElement,a(_n,t,vn),t}_getScrollTop(){return this._scrollElement===window?this._scrollElement.pageYOffset:this._scrollElement.scrollTop}_getScrollHeight(){return this._scrollElement.scrollHeight||Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)}_getOffsetHeight(){return this._scrollElement===window?window.innerHeight:this._scrollElement.getBoundingClientRect().height}_process(){const t=this._getScrollTop()+this._config.offset,e=this._getScrollHeight(),i=this._config.offset+e-this._getOffsetHeight();if(this._scrollHeight!==e&&this.refresh(),t>=i){const t=this._targets[this._targets.length-1];this._activeTarget!==t&&this._activate(t)}else{if(this._activeTarget&&t0)return this._activeTarget=null,void this._clear();for(let e=this._offsets.length;e--;)this._activeTarget!==this._targets[e]&&t>=this._offsets[e]&&(void 0===this._offsets[e+1]||t`${e}[data-bs-target="${t}"],${e}[href="${t}"]`)),i=V.findOne(e.join(","),this._config.target);i.classList.add(yn),i.classList.contains("dropdown-item")?V.findOne(".dropdown-toggle",i.closest(".dropdown")).classList.add(yn):V.parents(i,".nav, .list-group").forEach((t=>{V.prev(t,".nav-link, .list-group-item").forEach((t=>t.classList.add(yn))),V.prev(t,".nav-item").forEach((t=>{V.children(t,".nav-link").forEach((t=>t.classList.add(yn)))}))})),j.trigger(this._scrollElement,"activate.bs.scrollspy",{relatedTarget:t})}_clear(){V.find(wn,this._config.target).filter((t=>t.classList.contains(yn))).forEach((t=>t.classList.remove(yn)))}static jQueryInterface(t){return this.each((function(){const e=An.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}j.on(window,"load.bs.scrollspy.data-api",(()=>{V.find('[data-bs-spy="scroll"]').forEach((t=>new An(t)))})),g(An);const Tn="active",On="fade",Cn="show",kn=".active",Ln=":scope > li > .active";class xn extends B{static get NAME(){return"tab"}show(){if(this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE&&this._element.classList.contains(Tn))return;let t;const e=n(this._element),i=this._element.closest(".nav, .list-group");if(i){const e="UL"===i.nodeName||"OL"===i.nodeName?Ln:kn;t=V.find(e,i),t=t[t.length-1]}const s=t?j.trigger(t,"hide.bs.tab",{relatedTarget:this._element}):null;if(j.trigger(this._element,"show.bs.tab",{relatedTarget:t}).defaultPrevented||null!==s&&s.defaultPrevented)return;this._activate(this._element,i);const o=()=>{j.trigger(t,"hidden.bs.tab",{relatedTarget:this._element}),j.trigger(this._element,"shown.bs.tab",{relatedTarget:t})};e?this._activate(e,e.parentNode,o):o()}_activate(t,e,i){const n=(!e||"UL"!==e.nodeName&&"OL"!==e.nodeName?V.children(e,kn):V.find(Ln,e))[0],s=i&&n&&n.classList.contains(On),o=()=>this._transitionComplete(t,n,i);n&&s?(n.classList.remove(Cn),this._queueCallback(o,t,!0)):o()}_transitionComplete(t,e,i){if(e){e.classList.remove(Tn);const t=V.findOne(":scope > .dropdown-menu .active",e.parentNode);t&&t.classList.remove(Tn),"tab"===e.getAttribute("role")&&e.setAttribute("aria-selected",!1)}t.classList.add(Tn),"tab"===t.getAttribute("role")&&t.setAttribute("aria-selected",!0),u(t),t.classList.contains(On)&&t.classList.add(Cn);let n=t.parentNode;if(n&&"LI"===n.nodeName&&(n=n.parentNode),n&&n.classList.contains("dropdown-menu")){const e=t.closest(".dropdown");e&&V.find(".dropdown-toggle",e).forEach((t=>t.classList.add(Tn))),t.setAttribute("aria-expanded",!0)}i&&i()}static jQueryInterface(t){return this.each((function(){const e=xn.getOrCreateInstance(this);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}j.on(document,"click.bs.tab.data-api",'[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]',(function(t){["A","AREA"].includes(this.tagName)&&t.preventDefault(),c(this)||xn.getOrCreateInstance(this).show()})),g(xn);const Dn="toast",Sn="hide",Nn="show",In="showing",Pn={animation:"boolean",autohide:"boolean",delay:"number"},jn={animation:!0,autohide:!0,delay:5e3};class Mn extends B{constructor(t,e){super(t),this._config=this._getConfig(e),this._timeout=null,this._hasMouseInteraction=!1,this._hasKeyboardInteraction=!1,this._setListeners()}static get DefaultType(){return Pn}static get Default(){return jn}static get NAME(){return Dn}show(){j.trigger(this._element,"show.bs.toast").defaultPrevented||(this._clearTimeout(),this._config.animation&&this._element.classList.add("fade"),this._element.classList.remove(Sn),u(this._element),this._element.classList.add(Nn),this._element.classList.add(In),this._queueCallback((()=>{this._element.classList.remove(In),j.trigger(this._element,"shown.bs.toast"),this._maybeScheduleHide()}),this._element,this._config.animation))}hide(){this._element.classList.contains(Nn)&&(j.trigger(this._element,"hide.bs.toast").defaultPrevented||(this._element.classList.add(In),this._queueCallback((()=>{this._element.classList.add(Sn),this._element.classList.remove(In),this._element.classList.remove(Nn),j.trigger(this._element,"hidden.bs.toast")}),this._element,this._config.animation)))}dispose(){this._clearTimeout(),this._element.classList.contains(Nn)&&this._element.classList.remove(Nn),super.dispose()}_getConfig(t){return t={...jn,...U.getDataAttributes(this._element),..."object"==typeof t&&t?t:{}},a(Dn,t,this.constructor.DefaultType),t}_maybeScheduleHide(){this._config.autohide&&(this._hasMouseInteraction||this._hasKeyboardInteraction||(this._timeout=setTimeout((()=>{this.hide()}),this._config.delay)))}_onInteraction(t,e){switch(t.type){case"mouseover":case"mouseout":this._hasMouseInteraction=e;break;case"focusin":case"focusout":this._hasKeyboardInteraction=e}if(e)return void this._clearTimeout();const i=t.relatedTarget;this._element===i||this._element.contains(i)||this._maybeScheduleHide()}_setListeners(){j.on(this._element,"mouseover.bs.toast",(t=>this._onInteraction(t,!0))),j.on(this._element,"mouseout.bs.toast",(t=>this._onInteraction(t,!1))),j.on(this._element,"focusin.bs.toast",(t=>this._onInteraction(t,!0))),j.on(this._element,"focusout.bs.toast",(t=>this._onInteraction(t,!1)))}_clearTimeout(){clearTimeout(this._timeout),this._timeout=null}static jQueryInterface(t){return this.each((function(){const e=Mn.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}return R(Mn),g(Mn),{Alert:W,Button:z,Carousel:st,Collapse:pt,Dropdown:hi,Modal:Hi,Offcanvas:Fi,Popover:gn,ScrollSpy:An,Tab:xn,Toast:Mn,Tooltip:un}})); +//# sourceMappingURL=bootstrap.bundle.min.js.map \ No newline at end of file diff --git a/docs/column_api_files/libs/bootstrap/bootstrap-icons.css b/docs/column_api_files/libs/bootstrap/bootstrap-icons.css new file mode 100644 index 0000000..94f1940 --- /dev/null +++ b/docs/column_api_files/libs/bootstrap/bootstrap-icons.css @@ -0,0 +1,2018 @@ +@font-face { + font-display: block; + font-family: "bootstrap-icons"; + src: +url("./bootstrap-icons.woff?2ab2cbbe07fcebb53bdaa7313bb290f2") format("woff"); +} + +.bi::before, +[class^="bi-"]::before, +[class*=" bi-"]::before { + display: inline-block; + font-family: bootstrap-icons !important; + font-style: normal; + font-weight: normal !important; + font-variant: normal; + text-transform: none; + line-height: 1; + vertical-align: -.125em; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.bi-123::before { content: "\f67f"; } +.bi-alarm-fill::before { content: "\f101"; } +.bi-alarm::before { content: "\f102"; } +.bi-align-bottom::before { content: "\f103"; } +.bi-align-center::before { content: "\f104"; } +.bi-align-end::before { content: "\f105"; } +.bi-align-middle::before { content: "\f106"; } +.bi-align-start::before { content: "\f107"; } +.bi-align-top::before { content: "\f108"; } +.bi-alt::before { content: "\f109"; } +.bi-app-indicator::before { content: "\f10a"; } +.bi-app::before { content: "\f10b"; } +.bi-archive-fill::before { content: "\f10c"; } +.bi-archive::before { content: "\f10d"; } +.bi-arrow-90deg-down::before { content: "\f10e"; } +.bi-arrow-90deg-left::before { content: "\f10f"; } +.bi-arrow-90deg-right::before { content: "\f110"; } +.bi-arrow-90deg-up::before { content: "\f111"; } +.bi-arrow-bar-down::before { content: "\f112"; } +.bi-arrow-bar-left::before { content: "\f113"; } +.bi-arrow-bar-right::before { content: "\f114"; } +.bi-arrow-bar-up::before { content: "\f115"; } +.bi-arrow-clockwise::before { content: "\f116"; } +.bi-arrow-counterclockwise::before { content: "\f117"; } +.bi-arrow-down-circle-fill::before { content: "\f118"; } +.bi-arrow-down-circle::before { content: "\f119"; } +.bi-arrow-down-left-circle-fill::before { content: "\f11a"; } +.bi-arrow-down-left-circle::before { content: "\f11b"; } +.bi-arrow-down-left-square-fill::before { content: "\f11c"; } +.bi-arrow-down-left-square::before { content: "\f11d"; } +.bi-arrow-down-left::before { content: "\f11e"; } +.bi-arrow-down-right-circle-fill::before { content: "\f11f"; } +.bi-arrow-down-right-circle::before { content: "\f120"; } +.bi-arrow-down-right-square-fill::before { content: "\f121"; } +.bi-arrow-down-right-square::before { content: "\f122"; } +.bi-arrow-down-right::before { content: "\f123"; } +.bi-arrow-down-short::before { content: "\f124"; } +.bi-arrow-down-square-fill::before { content: "\f125"; } +.bi-arrow-down-square::before { content: "\f126"; } +.bi-arrow-down-up::before { content: "\f127"; } +.bi-arrow-down::before { content: "\f128"; } +.bi-arrow-left-circle-fill::before { content: "\f129"; } +.bi-arrow-left-circle::before { content: "\f12a"; } +.bi-arrow-left-right::before { content: "\f12b"; } +.bi-arrow-left-short::before { content: "\f12c"; } +.bi-arrow-left-square-fill::before { content: "\f12d"; } +.bi-arrow-left-square::before { content: "\f12e"; } +.bi-arrow-left::before { content: "\f12f"; } +.bi-arrow-repeat::before { content: "\f130"; } +.bi-arrow-return-left::before { content: "\f131"; } +.bi-arrow-return-right::before { content: "\f132"; } +.bi-arrow-right-circle-fill::before { content: "\f133"; } +.bi-arrow-right-circle::before { content: "\f134"; } +.bi-arrow-right-short::before { content: "\f135"; } +.bi-arrow-right-square-fill::before { content: "\f136"; } +.bi-arrow-right-square::before { content: "\f137"; } +.bi-arrow-right::before { content: "\f138"; } +.bi-arrow-up-circle-fill::before { content: "\f139"; } +.bi-arrow-up-circle::before { content: "\f13a"; } +.bi-arrow-up-left-circle-fill::before { content: "\f13b"; } +.bi-arrow-up-left-circle::before { content: "\f13c"; } +.bi-arrow-up-left-square-fill::before { content: "\f13d"; } +.bi-arrow-up-left-square::before { content: "\f13e"; } +.bi-arrow-up-left::before { content: "\f13f"; } +.bi-arrow-up-right-circle-fill::before { content: "\f140"; } +.bi-arrow-up-right-circle::before { content: "\f141"; } +.bi-arrow-up-right-square-fill::before { content: "\f142"; } +.bi-arrow-up-right-square::before { content: "\f143"; } +.bi-arrow-up-right::before { content: "\f144"; } +.bi-arrow-up-short::before { content: "\f145"; } +.bi-arrow-up-square-fill::before { content: "\f146"; } +.bi-arrow-up-square::before { content: "\f147"; } +.bi-arrow-up::before { content: "\f148"; } +.bi-arrows-angle-contract::before { content: "\f149"; } +.bi-arrows-angle-expand::before { content: "\f14a"; } +.bi-arrows-collapse::before { content: "\f14b"; } +.bi-arrows-expand::before { content: "\f14c"; } +.bi-arrows-fullscreen::before { content: "\f14d"; } +.bi-arrows-move::before { content: "\f14e"; } +.bi-aspect-ratio-fill::before { content: "\f14f"; } +.bi-aspect-ratio::before { content: "\f150"; } +.bi-asterisk::before { content: "\f151"; } +.bi-at::before { content: "\f152"; } +.bi-award-fill::before { content: "\f153"; } +.bi-award::before { content: "\f154"; } +.bi-back::before { content: "\f155"; } +.bi-backspace-fill::before { content: "\f156"; } +.bi-backspace-reverse-fill::before { content: "\f157"; } +.bi-backspace-reverse::before { content: "\f158"; } +.bi-backspace::before { content: "\f159"; } +.bi-badge-3d-fill::before { content: "\f15a"; } +.bi-badge-3d::before { content: "\f15b"; } +.bi-badge-4k-fill::before { content: "\f15c"; } +.bi-badge-4k::before { content: "\f15d"; } +.bi-badge-8k-fill::before { content: "\f15e"; } +.bi-badge-8k::before { content: "\f15f"; } +.bi-badge-ad-fill::before { content: "\f160"; } +.bi-badge-ad::before { content: "\f161"; } +.bi-badge-ar-fill::before { content: "\f162"; } +.bi-badge-ar::before { content: "\f163"; } +.bi-badge-cc-fill::before { content: "\f164"; } +.bi-badge-cc::before { content: "\f165"; } +.bi-badge-hd-fill::before { content: "\f166"; } +.bi-badge-hd::before { content: "\f167"; } +.bi-badge-tm-fill::before { content: "\f168"; } +.bi-badge-tm::before { content: "\f169"; } +.bi-badge-vo-fill::before { content: "\f16a"; } +.bi-badge-vo::before { content: "\f16b"; } +.bi-badge-vr-fill::before { content: "\f16c"; } +.bi-badge-vr::before { content: "\f16d"; } +.bi-badge-wc-fill::before { content: "\f16e"; } +.bi-badge-wc::before { content: "\f16f"; } +.bi-bag-check-fill::before { content: "\f170"; } +.bi-bag-check::before { content: "\f171"; } +.bi-bag-dash-fill::before { content: "\f172"; } +.bi-bag-dash::before { content: "\f173"; } +.bi-bag-fill::before { content: "\f174"; } +.bi-bag-plus-fill::before { content: "\f175"; } +.bi-bag-plus::before { content: "\f176"; } +.bi-bag-x-fill::before { content: "\f177"; } +.bi-bag-x::before { content: "\f178"; } +.bi-bag::before { content: "\f179"; } +.bi-bar-chart-fill::before { content: "\f17a"; } +.bi-bar-chart-line-fill::before { content: "\f17b"; } +.bi-bar-chart-line::before { content: "\f17c"; } +.bi-bar-chart-steps::before { content: "\f17d"; } +.bi-bar-chart::before { content: "\f17e"; } +.bi-basket-fill::before { content: "\f17f"; } +.bi-basket::before { content: "\f180"; } +.bi-basket2-fill::before { content: "\f181"; } +.bi-basket2::before { content: "\f182"; } +.bi-basket3-fill::before { content: "\f183"; } +.bi-basket3::before { content: "\f184"; } +.bi-battery-charging::before { content: "\f185"; } +.bi-battery-full::before { content: "\f186"; } +.bi-battery-half::before { content: "\f187"; } +.bi-battery::before { content: "\f188"; } +.bi-bell-fill::before { content: "\f189"; } +.bi-bell::before { content: "\f18a"; } +.bi-bezier::before { content: "\f18b"; } +.bi-bezier2::before { content: "\f18c"; } +.bi-bicycle::before { content: "\f18d"; } +.bi-binoculars-fill::before { content: "\f18e"; } +.bi-binoculars::before { content: "\f18f"; } +.bi-blockquote-left::before { content: "\f190"; } +.bi-blockquote-right::before { content: "\f191"; } +.bi-book-fill::before { content: "\f192"; } +.bi-book-half::before { content: "\f193"; } +.bi-book::before { content: "\f194"; } +.bi-bookmark-check-fill::before { content: "\f195"; } +.bi-bookmark-check::before { content: "\f196"; } +.bi-bookmark-dash-fill::before { content: "\f197"; } +.bi-bookmark-dash::before { content: "\f198"; } +.bi-bookmark-fill::before { content: "\f199"; } +.bi-bookmark-heart-fill::before { content: "\f19a"; } +.bi-bookmark-heart::before { content: "\f19b"; } +.bi-bookmark-plus-fill::before { content: "\f19c"; } +.bi-bookmark-plus::before { content: "\f19d"; } +.bi-bookmark-star-fill::before { content: "\f19e"; } +.bi-bookmark-star::before { content: "\f19f"; } +.bi-bookmark-x-fill::before { content: "\f1a0"; } +.bi-bookmark-x::before { content: "\f1a1"; } +.bi-bookmark::before { content: "\f1a2"; } +.bi-bookmarks-fill::before { content: "\f1a3"; } +.bi-bookmarks::before { content: "\f1a4"; } +.bi-bookshelf::before { content: "\f1a5"; } +.bi-bootstrap-fill::before { content: "\f1a6"; } +.bi-bootstrap-reboot::before { content: "\f1a7"; } +.bi-bootstrap::before { content: "\f1a8"; } +.bi-border-all::before { content: "\f1a9"; } +.bi-border-bottom::before { content: "\f1aa"; } +.bi-border-center::before { content: "\f1ab"; } +.bi-border-inner::before { content: "\f1ac"; } +.bi-border-left::before { content: "\f1ad"; } +.bi-border-middle::before { content: "\f1ae"; } +.bi-border-outer::before { content: "\f1af"; } +.bi-border-right::before { content: "\f1b0"; } +.bi-border-style::before { content: "\f1b1"; } +.bi-border-top::before { content: "\f1b2"; } +.bi-border-width::before { content: "\f1b3"; } +.bi-border::before { content: "\f1b4"; } +.bi-bounding-box-circles::before { content: "\f1b5"; } +.bi-bounding-box::before { content: "\f1b6"; } +.bi-box-arrow-down-left::before { content: "\f1b7"; } +.bi-box-arrow-down-right::before { content: "\f1b8"; } +.bi-box-arrow-down::before { content: "\f1b9"; } +.bi-box-arrow-in-down-left::before { content: "\f1ba"; } +.bi-box-arrow-in-down-right::before { content: "\f1bb"; } +.bi-box-arrow-in-down::before { content: "\f1bc"; } +.bi-box-arrow-in-left::before { content: "\f1bd"; } +.bi-box-arrow-in-right::before { content: "\f1be"; } +.bi-box-arrow-in-up-left::before { content: "\f1bf"; } +.bi-box-arrow-in-up-right::before { content: "\f1c0"; } +.bi-box-arrow-in-up::before { content: "\f1c1"; } +.bi-box-arrow-left::before { content: "\f1c2"; } +.bi-box-arrow-right::before { content: "\f1c3"; } +.bi-box-arrow-up-left::before { content: "\f1c4"; } +.bi-box-arrow-up-right::before { content: "\f1c5"; } +.bi-box-arrow-up::before { content: "\f1c6"; } +.bi-box-seam::before { content: "\f1c7"; } +.bi-box::before { content: "\f1c8"; } +.bi-braces::before { content: "\f1c9"; } +.bi-bricks::before { content: "\f1ca"; } +.bi-briefcase-fill::before { content: "\f1cb"; } +.bi-briefcase::before { content: "\f1cc"; } +.bi-brightness-alt-high-fill::before { content: "\f1cd"; } +.bi-brightness-alt-high::before { content: "\f1ce"; } +.bi-brightness-alt-low-fill::before { content: "\f1cf"; } +.bi-brightness-alt-low::before { content: "\f1d0"; } +.bi-brightness-high-fill::before { content: "\f1d1"; } +.bi-brightness-high::before { content: "\f1d2"; } +.bi-brightness-low-fill::before { content: "\f1d3"; } +.bi-brightness-low::before { content: "\f1d4"; } +.bi-broadcast-pin::before { content: "\f1d5"; } +.bi-broadcast::before { content: "\f1d6"; } +.bi-brush-fill::before { content: "\f1d7"; } +.bi-brush::before { content: "\f1d8"; } +.bi-bucket-fill::before { content: "\f1d9"; } +.bi-bucket::before { content: "\f1da"; } +.bi-bug-fill::before { content: "\f1db"; } +.bi-bug::before { content: "\f1dc"; } +.bi-building::before { content: "\f1dd"; } +.bi-bullseye::before { content: "\f1de"; } +.bi-calculator-fill::before { content: "\f1df"; } +.bi-calculator::before { content: "\f1e0"; } +.bi-calendar-check-fill::before { content: "\f1e1"; } +.bi-calendar-check::before { content: "\f1e2"; } +.bi-calendar-date-fill::before { content: "\f1e3"; } +.bi-calendar-date::before { content: "\f1e4"; } +.bi-calendar-day-fill::before { content: "\f1e5"; } +.bi-calendar-day::before { content: "\f1e6"; } +.bi-calendar-event-fill::before { content: "\f1e7"; } +.bi-calendar-event::before { content: "\f1e8"; } +.bi-calendar-fill::before { content: "\f1e9"; } +.bi-calendar-minus-fill::before { content: "\f1ea"; } +.bi-calendar-minus::before { content: "\f1eb"; } +.bi-calendar-month-fill::before { content: "\f1ec"; } +.bi-calendar-month::before { content: "\f1ed"; } +.bi-calendar-plus-fill::before { content: "\f1ee"; } +.bi-calendar-plus::before { content: "\f1ef"; } +.bi-calendar-range-fill::before { content: "\f1f0"; } +.bi-calendar-range::before { content: "\f1f1"; } +.bi-calendar-week-fill::before { content: "\f1f2"; } +.bi-calendar-week::before { content: "\f1f3"; } +.bi-calendar-x-fill::before { content: "\f1f4"; } +.bi-calendar-x::before { content: "\f1f5"; } +.bi-calendar::before { content: "\f1f6"; } +.bi-calendar2-check-fill::before { content: "\f1f7"; } +.bi-calendar2-check::before { content: "\f1f8"; } +.bi-calendar2-date-fill::before { content: "\f1f9"; } +.bi-calendar2-date::before { content: "\f1fa"; } +.bi-calendar2-day-fill::before { content: "\f1fb"; } +.bi-calendar2-day::before { content: "\f1fc"; } +.bi-calendar2-event-fill::before { content: "\f1fd"; } +.bi-calendar2-event::before { content: "\f1fe"; } +.bi-calendar2-fill::before { content: "\f1ff"; } +.bi-calendar2-minus-fill::before { content: "\f200"; } +.bi-calendar2-minus::before { content: "\f201"; } +.bi-calendar2-month-fill::before { content: "\f202"; } +.bi-calendar2-month::before { content: "\f203"; } +.bi-calendar2-plus-fill::before { content: "\f204"; } +.bi-calendar2-plus::before { content: "\f205"; } +.bi-calendar2-range-fill::before { content: "\f206"; } +.bi-calendar2-range::before { content: "\f207"; } +.bi-calendar2-week-fill::before { content: "\f208"; } +.bi-calendar2-week::before { content: "\f209"; } +.bi-calendar2-x-fill::before { content: "\f20a"; } +.bi-calendar2-x::before { content: "\f20b"; } +.bi-calendar2::before { content: "\f20c"; } +.bi-calendar3-event-fill::before { content: "\f20d"; } +.bi-calendar3-event::before { content: "\f20e"; } +.bi-calendar3-fill::before { content: "\f20f"; } +.bi-calendar3-range-fill::before { content: "\f210"; } +.bi-calendar3-range::before { content: "\f211"; } +.bi-calendar3-week-fill::before { content: "\f212"; } +.bi-calendar3-week::before { content: "\f213"; } +.bi-calendar3::before { content: "\f214"; } +.bi-calendar4-event::before { content: "\f215"; } +.bi-calendar4-range::before { content: "\f216"; } +.bi-calendar4-week::before { content: "\f217"; } +.bi-calendar4::before { content: "\f218"; } +.bi-camera-fill::before { content: "\f219"; } +.bi-camera-reels-fill::before { content: "\f21a"; } +.bi-camera-reels::before { content: "\f21b"; } +.bi-camera-video-fill::before { content: "\f21c"; } +.bi-camera-video-off-fill::before { content: "\f21d"; } +.bi-camera-video-off::before { content: "\f21e"; } +.bi-camera-video::before { content: "\f21f"; } +.bi-camera::before { content: "\f220"; } +.bi-camera2::before { content: "\f221"; } +.bi-capslock-fill::before { content: "\f222"; } +.bi-capslock::before { content: "\f223"; } +.bi-card-checklist::before { content: "\f224"; } +.bi-card-heading::before { content: "\f225"; } +.bi-card-image::before { content: "\f226"; } +.bi-card-list::before { content: "\f227"; } +.bi-card-text::before { content: "\f228"; } +.bi-caret-down-fill::before { content: "\f229"; } +.bi-caret-down-square-fill::before { content: "\f22a"; } +.bi-caret-down-square::before { content: "\f22b"; } +.bi-caret-down::before { content: "\f22c"; } +.bi-caret-left-fill::before { content: "\f22d"; } +.bi-caret-left-square-fill::before { content: "\f22e"; } +.bi-caret-left-square::before { content: "\f22f"; } +.bi-caret-left::before { content: "\f230"; } +.bi-caret-right-fill::before { content: "\f231"; } +.bi-caret-right-square-fill::before { content: "\f232"; } +.bi-caret-right-square::before { content: "\f233"; } +.bi-caret-right::before { content: "\f234"; } +.bi-caret-up-fill::before { content: "\f235"; } +.bi-caret-up-square-fill::before { content: "\f236"; } +.bi-caret-up-square::before { content: "\f237"; } +.bi-caret-up::before { content: "\f238"; } +.bi-cart-check-fill::before { content: "\f239"; } +.bi-cart-check::before { content: "\f23a"; } +.bi-cart-dash-fill::before { content: "\f23b"; } +.bi-cart-dash::before { content: "\f23c"; } +.bi-cart-fill::before { content: "\f23d"; } +.bi-cart-plus-fill::before { content: "\f23e"; } +.bi-cart-plus::before { content: "\f23f"; } +.bi-cart-x-fill::before { content: "\f240"; } +.bi-cart-x::before { content: "\f241"; } +.bi-cart::before { content: "\f242"; } +.bi-cart2::before { content: "\f243"; } +.bi-cart3::before { content: "\f244"; } +.bi-cart4::before { content: "\f245"; } +.bi-cash-stack::before { content: "\f246"; } +.bi-cash::before { content: "\f247"; } +.bi-cast::before { content: "\f248"; } +.bi-chat-dots-fill::before { content: "\f249"; } +.bi-chat-dots::before { content: "\f24a"; } +.bi-chat-fill::before { content: "\f24b"; } +.bi-chat-left-dots-fill::before { content: "\f24c"; } +.bi-chat-left-dots::before { content: "\f24d"; } +.bi-chat-left-fill::before { content: "\f24e"; } +.bi-chat-left-quote-fill::before { content: "\f24f"; } +.bi-chat-left-quote::before { content: "\f250"; } +.bi-chat-left-text-fill::before { content: "\f251"; } +.bi-chat-left-text::before { content: "\f252"; } +.bi-chat-left::before { content: "\f253"; } +.bi-chat-quote-fill::before { content: "\f254"; } +.bi-chat-quote::before { content: "\f255"; } +.bi-chat-right-dots-fill::before { content: "\f256"; } +.bi-chat-right-dots::before { content: "\f257"; } +.bi-chat-right-fill::before { content: "\f258"; } +.bi-chat-right-quote-fill::before { content: "\f259"; } +.bi-chat-right-quote::before { content: "\f25a"; } +.bi-chat-right-text-fill::before { content: "\f25b"; } +.bi-chat-right-text::before { content: "\f25c"; } +.bi-chat-right::before { content: "\f25d"; } +.bi-chat-square-dots-fill::before { content: "\f25e"; } +.bi-chat-square-dots::before { content: "\f25f"; } +.bi-chat-square-fill::before { content: "\f260"; } +.bi-chat-square-quote-fill::before { content: "\f261"; } +.bi-chat-square-quote::before { content: "\f262"; } +.bi-chat-square-text-fill::before { content: "\f263"; } +.bi-chat-square-text::before { content: "\f264"; } +.bi-chat-square::before { content: "\f265"; } +.bi-chat-text-fill::before { content: "\f266"; } +.bi-chat-text::before { content: "\f267"; } +.bi-chat::before { content: "\f268"; } +.bi-check-all::before { content: "\f269"; } +.bi-check-circle-fill::before { content: "\f26a"; } +.bi-check-circle::before { content: "\f26b"; } +.bi-check-square-fill::before { content: "\f26c"; } +.bi-check-square::before { content: "\f26d"; } +.bi-check::before { content: "\f26e"; } +.bi-check2-all::before { content: "\f26f"; } +.bi-check2-circle::before { content: "\f270"; } +.bi-check2-square::before { content: "\f271"; } +.bi-check2::before { content: "\f272"; } +.bi-chevron-bar-contract::before { content: "\f273"; } +.bi-chevron-bar-down::before { content: "\f274"; } +.bi-chevron-bar-expand::before { content: "\f275"; } +.bi-chevron-bar-left::before { content: "\f276"; } +.bi-chevron-bar-right::before { content: "\f277"; } +.bi-chevron-bar-up::before { content: "\f278"; } +.bi-chevron-compact-down::before { content: "\f279"; } +.bi-chevron-compact-left::before { content: "\f27a"; } +.bi-chevron-compact-right::before { content: "\f27b"; } +.bi-chevron-compact-up::before { content: "\f27c"; } +.bi-chevron-contract::before { content: "\f27d"; } +.bi-chevron-double-down::before { content: "\f27e"; } +.bi-chevron-double-left::before { content: "\f27f"; } +.bi-chevron-double-right::before { content: "\f280"; } +.bi-chevron-double-up::before { content: "\f281"; } +.bi-chevron-down::before { content: "\f282"; } +.bi-chevron-expand::before { content: "\f283"; } +.bi-chevron-left::before { content: "\f284"; } +.bi-chevron-right::before { content: "\f285"; } +.bi-chevron-up::before { content: "\f286"; } +.bi-circle-fill::before { content: "\f287"; } +.bi-circle-half::before { content: "\f288"; } +.bi-circle-square::before { content: "\f289"; } +.bi-circle::before { content: "\f28a"; } +.bi-clipboard-check::before { content: "\f28b"; } +.bi-clipboard-data::before { content: "\f28c"; } +.bi-clipboard-minus::before { content: "\f28d"; } +.bi-clipboard-plus::before { content: "\f28e"; } +.bi-clipboard-x::before { content: "\f28f"; } +.bi-clipboard::before { content: "\f290"; } +.bi-clock-fill::before { content: "\f291"; } +.bi-clock-history::before { content: "\f292"; } +.bi-clock::before { content: "\f293"; } +.bi-cloud-arrow-down-fill::before { content: "\f294"; } +.bi-cloud-arrow-down::before { content: "\f295"; } +.bi-cloud-arrow-up-fill::before { content: "\f296"; } +.bi-cloud-arrow-up::before { content: "\f297"; } +.bi-cloud-check-fill::before { content: "\f298"; } +.bi-cloud-check::before { content: "\f299"; } +.bi-cloud-download-fill::before { content: "\f29a"; } +.bi-cloud-download::before { content: "\f29b"; } +.bi-cloud-drizzle-fill::before { content: "\f29c"; } +.bi-cloud-drizzle::before { content: "\f29d"; } +.bi-cloud-fill::before { content: "\f29e"; } +.bi-cloud-fog-fill::before { content: "\f29f"; } +.bi-cloud-fog::before { content: "\f2a0"; } +.bi-cloud-fog2-fill::before { content: "\f2a1"; } +.bi-cloud-fog2::before { content: "\f2a2"; } +.bi-cloud-hail-fill::before { content: "\f2a3"; } +.bi-cloud-hail::before { content: "\f2a4"; } +.bi-cloud-haze-1::before { content: "\f2a5"; } +.bi-cloud-haze-fill::before { content: "\f2a6"; } +.bi-cloud-haze::before { content: "\f2a7"; } +.bi-cloud-haze2-fill::before { content: "\f2a8"; } +.bi-cloud-lightning-fill::before { content: "\f2a9"; } +.bi-cloud-lightning-rain-fill::before { content: "\f2aa"; } +.bi-cloud-lightning-rain::before { content: "\f2ab"; } +.bi-cloud-lightning::before { content: "\f2ac"; } +.bi-cloud-minus-fill::before { content: "\f2ad"; } +.bi-cloud-minus::before { content: "\f2ae"; } +.bi-cloud-moon-fill::before { content: "\f2af"; } +.bi-cloud-moon::before { content: "\f2b0"; } +.bi-cloud-plus-fill::before { content: "\f2b1"; } +.bi-cloud-plus::before { content: "\f2b2"; } +.bi-cloud-rain-fill::before { content: "\f2b3"; } +.bi-cloud-rain-heavy-fill::before { content: "\f2b4"; } +.bi-cloud-rain-heavy::before { content: "\f2b5"; } +.bi-cloud-rain::before { content: "\f2b6"; } +.bi-cloud-slash-fill::before { content: "\f2b7"; } +.bi-cloud-slash::before { content: "\f2b8"; } +.bi-cloud-sleet-fill::before { content: "\f2b9"; } +.bi-cloud-sleet::before { content: "\f2ba"; } +.bi-cloud-snow-fill::before { content: "\f2bb"; } +.bi-cloud-snow::before { content: "\f2bc"; } +.bi-cloud-sun-fill::before { content: "\f2bd"; } +.bi-cloud-sun::before { content: "\f2be"; } +.bi-cloud-upload-fill::before { content: "\f2bf"; } +.bi-cloud-upload::before { content: "\f2c0"; } +.bi-cloud::before { content: "\f2c1"; } +.bi-clouds-fill::before { content: "\f2c2"; } +.bi-clouds::before { content: "\f2c3"; } +.bi-cloudy-fill::before { content: "\f2c4"; } +.bi-cloudy::before { content: "\f2c5"; } +.bi-code-slash::before { content: "\f2c6"; } +.bi-code-square::before { content: "\f2c7"; } +.bi-code::before { content: "\f2c8"; } +.bi-collection-fill::before { content: "\f2c9"; } +.bi-collection-play-fill::before { content: "\f2ca"; } +.bi-collection-play::before { content: "\f2cb"; } +.bi-collection::before { content: "\f2cc"; } +.bi-columns-gap::before { content: "\f2cd"; } +.bi-columns::before { content: "\f2ce"; } +.bi-command::before { content: "\f2cf"; } +.bi-compass-fill::before { content: "\f2d0"; } +.bi-compass::before { content: "\f2d1"; } +.bi-cone-striped::before { content: "\f2d2"; } +.bi-cone::before { content: "\f2d3"; } +.bi-controller::before { content: "\f2d4"; } +.bi-cpu-fill::before { content: "\f2d5"; } +.bi-cpu::before { content: "\f2d6"; } +.bi-credit-card-2-back-fill::before { content: "\f2d7"; } +.bi-credit-card-2-back::before { content: "\f2d8"; } +.bi-credit-card-2-front-fill::before { content: "\f2d9"; } +.bi-credit-card-2-front::before { content: "\f2da"; } +.bi-credit-card-fill::before { content: "\f2db"; } +.bi-credit-card::before { content: "\f2dc"; } +.bi-crop::before { content: "\f2dd"; } +.bi-cup-fill::before { content: "\f2de"; } +.bi-cup-straw::before { content: "\f2df"; } +.bi-cup::before { content: "\f2e0"; } +.bi-cursor-fill::before { content: "\f2e1"; } +.bi-cursor-text::before { content: "\f2e2"; } +.bi-cursor::before { content: "\f2e3"; } +.bi-dash-circle-dotted::before { content: "\f2e4"; } +.bi-dash-circle-fill::before { content: "\f2e5"; } +.bi-dash-circle::before { content: "\f2e6"; } +.bi-dash-square-dotted::before { content: "\f2e7"; } +.bi-dash-square-fill::before { content: "\f2e8"; } +.bi-dash-square::before { content: "\f2e9"; } +.bi-dash::before { content: "\f2ea"; } +.bi-diagram-2-fill::before { content: "\f2eb"; } +.bi-diagram-2::before { content: "\f2ec"; } +.bi-diagram-3-fill::before { content: "\f2ed"; } +.bi-diagram-3::before { content: "\f2ee"; } +.bi-diamond-fill::before { content: "\f2ef"; } +.bi-diamond-half::before { content: "\f2f0"; } +.bi-diamond::before { content: "\f2f1"; } +.bi-dice-1-fill::before { content: "\f2f2"; } +.bi-dice-1::before { content: "\f2f3"; } +.bi-dice-2-fill::before { content: "\f2f4"; } +.bi-dice-2::before { content: "\f2f5"; } +.bi-dice-3-fill::before { content: "\f2f6"; } +.bi-dice-3::before { content: "\f2f7"; } +.bi-dice-4-fill::before { content: "\f2f8"; } +.bi-dice-4::before { content: "\f2f9"; } +.bi-dice-5-fill::before { content: "\f2fa"; } +.bi-dice-5::before { content: "\f2fb"; } +.bi-dice-6-fill::before { content: "\f2fc"; } +.bi-dice-6::before { content: "\f2fd"; } +.bi-disc-fill::before { content: "\f2fe"; } +.bi-disc::before { content: "\f2ff"; } +.bi-discord::before { content: "\f300"; } +.bi-display-fill::before { content: "\f301"; } +.bi-display::before { content: "\f302"; } +.bi-distribute-horizontal::before { content: "\f303"; } +.bi-distribute-vertical::before { content: "\f304"; } +.bi-door-closed-fill::before { content: "\f305"; } +.bi-door-closed::before { content: "\f306"; } +.bi-door-open-fill::before { content: "\f307"; } +.bi-door-open::before { content: "\f308"; } +.bi-dot::before { content: "\f309"; } +.bi-download::before { content: "\f30a"; } +.bi-droplet-fill::before { content: "\f30b"; } +.bi-droplet-half::before { content: "\f30c"; } +.bi-droplet::before { content: "\f30d"; } +.bi-earbuds::before { content: "\f30e"; } +.bi-easel-fill::before { content: "\f30f"; } +.bi-easel::before { content: "\f310"; } +.bi-egg-fill::before { content: "\f311"; } +.bi-egg-fried::before { content: "\f312"; } +.bi-egg::before { content: "\f313"; } +.bi-eject-fill::before { content: "\f314"; } +.bi-eject::before { content: "\f315"; } +.bi-emoji-angry-fill::before { content: "\f316"; } +.bi-emoji-angry::before { content: "\f317"; } +.bi-emoji-dizzy-fill::before { content: "\f318"; } +.bi-emoji-dizzy::before { content: "\f319"; } +.bi-emoji-expressionless-fill::before { content: "\f31a"; } +.bi-emoji-expressionless::before { content: "\f31b"; } +.bi-emoji-frown-fill::before { content: "\f31c"; } +.bi-emoji-frown::before { content: "\f31d"; } +.bi-emoji-heart-eyes-fill::before { content: "\f31e"; } +.bi-emoji-heart-eyes::before { content: "\f31f"; } +.bi-emoji-laughing-fill::before { content: "\f320"; } +.bi-emoji-laughing::before { content: "\f321"; } +.bi-emoji-neutral-fill::before { content: "\f322"; } +.bi-emoji-neutral::before { content: "\f323"; } +.bi-emoji-smile-fill::before { content: "\f324"; } +.bi-emoji-smile-upside-down-fill::before { content: "\f325"; } +.bi-emoji-smile-upside-down::before { content: "\f326"; } +.bi-emoji-smile::before { content: "\f327"; } +.bi-emoji-sunglasses-fill::before { content: "\f328"; } +.bi-emoji-sunglasses::before { content: "\f329"; } +.bi-emoji-wink-fill::before { content: "\f32a"; } +.bi-emoji-wink::before { content: "\f32b"; } +.bi-envelope-fill::before { content: "\f32c"; } +.bi-envelope-open-fill::before { content: "\f32d"; } +.bi-envelope-open::before { content: "\f32e"; } +.bi-envelope::before { content: "\f32f"; } +.bi-eraser-fill::before { content: "\f330"; } +.bi-eraser::before { content: "\f331"; } +.bi-exclamation-circle-fill::before { content: "\f332"; } +.bi-exclamation-circle::before { content: "\f333"; } +.bi-exclamation-diamond-fill::before { content: "\f334"; } +.bi-exclamation-diamond::before { content: "\f335"; } +.bi-exclamation-octagon-fill::before { content: "\f336"; } +.bi-exclamation-octagon::before { content: "\f337"; } +.bi-exclamation-square-fill::before { content: "\f338"; } +.bi-exclamation-square::before { content: "\f339"; } +.bi-exclamation-triangle-fill::before { content: "\f33a"; } +.bi-exclamation-triangle::before { content: "\f33b"; } +.bi-exclamation::before { content: "\f33c"; } +.bi-exclude::before { content: "\f33d"; } +.bi-eye-fill::before { content: "\f33e"; } +.bi-eye-slash-fill::before { content: "\f33f"; } +.bi-eye-slash::before { content: "\f340"; } +.bi-eye::before { content: "\f341"; } +.bi-eyedropper::before { content: "\f342"; } +.bi-eyeglasses::before { content: "\f343"; } +.bi-facebook::before { content: "\f344"; } +.bi-file-arrow-down-fill::before { content: "\f345"; } +.bi-file-arrow-down::before { content: "\f346"; } +.bi-file-arrow-up-fill::before { content: "\f347"; } +.bi-file-arrow-up::before { content: "\f348"; } +.bi-file-bar-graph-fill::before { content: "\f349"; } +.bi-file-bar-graph::before { content: "\f34a"; } +.bi-file-binary-fill::before { content: "\f34b"; } +.bi-file-binary::before { content: "\f34c"; } +.bi-file-break-fill::before { content: "\f34d"; } +.bi-file-break::before { content: "\f34e"; } +.bi-file-check-fill::before { content: "\f34f"; } +.bi-file-check::before { content: "\f350"; } +.bi-file-code-fill::before { content: "\f351"; } +.bi-file-code::before { content: "\f352"; } +.bi-file-diff-fill::before { content: "\f353"; } +.bi-file-diff::before { content: "\f354"; } +.bi-file-earmark-arrow-down-fill::before { content: "\f355"; } +.bi-file-earmark-arrow-down::before { content: "\f356"; } +.bi-file-earmark-arrow-up-fill::before { content: "\f357"; } +.bi-file-earmark-arrow-up::before { content: "\f358"; } +.bi-file-earmark-bar-graph-fill::before { content: "\f359"; } +.bi-file-earmark-bar-graph::before { content: "\f35a"; } +.bi-file-earmark-binary-fill::before { content: "\f35b"; } +.bi-file-earmark-binary::before { content: "\f35c"; } +.bi-file-earmark-break-fill::before { content: "\f35d"; } +.bi-file-earmark-break::before { content: "\f35e"; } +.bi-file-earmark-check-fill::before { content: "\f35f"; } +.bi-file-earmark-check::before { content: "\f360"; } +.bi-file-earmark-code-fill::before { content: "\f361"; } +.bi-file-earmark-code::before { content: "\f362"; } +.bi-file-earmark-diff-fill::before { content: "\f363"; } +.bi-file-earmark-diff::before { content: "\f364"; } +.bi-file-earmark-easel-fill::before { content: "\f365"; } +.bi-file-earmark-easel::before { content: "\f366"; } +.bi-file-earmark-excel-fill::before { content: "\f367"; } +.bi-file-earmark-excel::before { content: "\f368"; } +.bi-file-earmark-fill::before { content: "\f369"; } +.bi-file-earmark-font-fill::before { content: "\f36a"; } +.bi-file-earmark-font::before { content: "\f36b"; } +.bi-file-earmark-image-fill::before { content: "\f36c"; } +.bi-file-earmark-image::before { content: "\f36d"; } +.bi-file-earmark-lock-fill::before { content: "\f36e"; } +.bi-file-earmark-lock::before { content: "\f36f"; } +.bi-file-earmark-lock2-fill::before { content: "\f370"; } +.bi-file-earmark-lock2::before { content: "\f371"; } +.bi-file-earmark-medical-fill::before { content: "\f372"; } +.bi-file-earmark-medical::before { content: "\f373"; } +.bi-file-earmark-minus-fill::before { content: "\f374"; } +.bi-file-earmark-minus::before { content: "\f375"; } +.bi-file-earmark-music-fill::before { content: "\f376"; } +.bi-file-earmark-music::before { content: "\f377"; } +.bi-file-earmark-person-fill::before { content: "\f378"; } +.bi-file-earmark-person::before { content: "\f379"; } +.bi-file-earmark-play-fill::before { content: "\f37a"; } +.bi-file-earmark-play::before { content: "\f37b"; } +.bi-file-earmark-plus-fill::before { content: "\f37c"; } +.bi-file-earmark-plus::before { content: "\f37d"; } +.bi-file-earmark-post-fill::before { content: "\f37e"; } +.bi-file-earmark-post::before { content: "\f37f"; } +.bi-file-earmark-ppt-fill::before { content: "\f380"; } +.bi-file-earmark-ppt::before { content: "\f381"; } +.bi-file-earmark-richtext-fill::before { content: "\f382"; } +.bi-file-earmark-richtext::before { content: "\f383"; } +.bi-file-earmark-ruled-fill::before { content: "\f384"; } +.bi-file-earmark-ruled::before { content: "\f385"; } +.bi-file-earmark-slides-fill::before { content: "\f386"; } +.bi-file-earmark-slides::before { content: "\f387"; } +.bi-file-earmark-spreadsheet-fill::before { content: "\f388"; } +.bi-file-earmark-spreadsheet::before { content: "\f389"; } +.bi-file-earmark-text-fill::before { content: "\f38a"; } +.bi-file-earmark-text::before { content: "\f38b"; } +.bi-file-earmark-word-fill::before { content: "\f38c"; } +.bi-file-earmark-word::before { content: "\f38d"; } +.bi-file-earmark-x-fill::before { content: "\f38e"; } +.bi-file-earmark-x::before { content: "\f38f"; } +.bi-file-earmark-zip-fill::before { content: "\f390"; } +.bi-file-earmark-zip::before { content: "\f391"; } +.bi-file-earmark::before { content: "\f392"; } +.bi-file-easel-fill::before { content: "\f393"; } +.bi-file-easel::before { content: "\f394"; } +.bi-file-excel-fill::before { content: "\f395"; } +.bi-file-excel::before { content: "\f396"; } +.bi-file-fill::before { content: "\f397"; } +.bi-file-font-fill::before { content: "\f398"; } +.bi-file-font::before { content: "\f399"; } +.bi-file-image-fill::before { content: "\f39a"; } +.bi-file-image::before { content: "\f39b"; } +.bi-file-lock-fill::before { content: "\f39c"; } +.bi-file-lock::before { content: "\f39d"; } +.bi-file-lock2-fill::before { content: "\f39e"; } +.bi-file-lock2::before { content: "\f39f"; } +.bi-file-medical-fill::before { content: "\f3a0"; } +.bi-file-medical::before { content: "\f3a1"; } +.bi-file-minus-fill::before { content: "\f3a2"; } +.bi-file-minus::before { content: "\f3a3"; } +.bi-file-music-fill::before { content: "\f3a4"; } +.bi-file-music::before { content: "\f3a5"; } +.bi-file-person-fill::before { content: "\f3a6"; } +.bi-file-person::before { content: "\f3a7"; } +.bi-file-play-fill::before { content: "\f3a8"; } +.bi-file-play::before { content: "\f3a9"; } +.bi-file-plus-fill::before { content: "\f3aa"; } +.bi-file-plus::before { content: "\f3ab"; } +.bi-file-post-fill::before { content: "\f3ac"; } +.bi-file-post::before { content: "\f3ad"; } +.bi-file-ppt-fill::before { content: "\f3ae"; } +.bi-file-ppt::before { content: "\f3af"; } +.bi-file-richtext-fill::before { content: "\f3b0"; } +.bi-file-richtext::before { content: "\f3b1"; } +.bi-file-ruled-fill::before { content: "\f3b2"; } +.bi-file-ruled::before { content: "\f3b3"; } +.bi-file-slides-fill::before { content: "\f3b4"; } +.bi-file-slides::before { content: "\f3b5"; } +.bi-file-spreadsheet-fill::before { content: "\f3b6"; } +.bi-file-spreadsheet::before { content: "\f3b7"; } +.bi-file-text-fill::before { content: "\f3b8"; } +.bi-file-text::before { content: "\f3b9"; } +.bi-file-word-fill::before { content: "\f3ba"; } +.bi-file-word::before { content: "\f3bb"; } +.bi-file-x-fill::before { content: "\f3bc"; } +.bi-file-x::before { content: "\f3bd"; } +.bi-file-zip-fill::before { content: "\f3be"; } +.bi-file-zip::before { content: "\f3bf"; } +.bi-file::before { content: "\f3c0"; } +.bi-files-alt::before { content: "\f3c1"; } +.bi-files::before { content: "\f3c2"; } +.bi-film::before { content: "\f3c3"; } +.bi-filter-circle-fill::before { content: "\f3c4"; } +.bi-filter-circle::before { content: "\f3c5"; } +.bi-filter-left::before { content: "\f3c6"; } +.bi-filter-right::before { content: "\f3c7"; } +.bi-filter-square-fill::before { content: "\f3c8"; } +.bi-filter-square::before { content: "\f3c9"; } +.bi-filter::before { content: "\f3ca"; } +.bi-flag-fill::before { content: "\f3cb"; } +.bi-flag::before { content: "\f3cc"; } +.bi-flower1::before { content: "\f3cd"; } +.bi-flower2::before { content: "\f3ce"; } +.bi-flower3::before { content: "\f3cf"; } +.bi-folder-check::before { content: "\f3d0"; } +.bi-folder-fill::before { content: "\f3d1"; } +.bi-folder-minus::before { content: "\f3d2"; } +.bi-folder-plus::before { content: "\f3d3"; } +.bi-folder-symlink-fill::before { content: "\f3d4"; } +.bi-folder-symlink::before { content: "\f3d5"; } +.bi-folder-x::before { content: "\f3d6"; } +.bi-folder::before { content: "\f3d7"; } +.bi-folder2-open::before { content: "\f3d8"; } +.bi-folder2::before { content: "\f3d9"; } +.bi-fonts::before { content: "\f3da"; } +.bi-forward-fill::before { content: "\f3db"; } +.bi-forward::before { content: "\f3dc"; } +.bi-front::before { content: "\f3dd"; } +.bi-fullscreen-exit::before { content: "\f3de"; } +.bi-fullscreen::before { content: "\f3df"; } +.bi-funnel-fill::before { content: "\f3e0"; } +.bi-funnel::before { content: "\f3e1"; } +.bi-gear-fill::before { content: "\f3e2"; } +.bi-gear-wide-connected::before { content: "\f3e3"; } +.bi-gear-wide::before { content: "\f3e4"; } +.bi-gear::before { content: "\f3e5"; } +.bi-gem::before { content: "\f3e6"; } +.bi-geo-alt-fill::before { content: "\f3e7"; } +.bi-geo-alt::before { content: "\f3e8"; } +.bi-geo-fill::before { content: "\f3e9"; } +.bi-geo::before { content: "\f3ea"; } +.bi-gift-fill::before { content: "\f3eb"; } +.bi-gift::before { content: "\f3ec"; } +.bi-github::before { content: "\f3ed"; } +.bi-globe::before { content: "\f3ee"; } +.bi-globe2::before { content: "\f3ef"; } +.bi-google::before { content: "\f3f0"; } +.bi-graph-down::before { content: "\f3f1"; } +.bi-graph-up::before { content: "\f3f2"; } +.bi-grid-1x2-fill::before { content: "\f3f3"; } +.bi-grid-1x2::before { content: "\f3f4"; } +.bi-grid-3x2-gap-fill::before { content: "\f3f5"; } +.bi-grid-3x2-gap::before { content: "\f3f6"; } +.bi-grid-3x2::before { content: "\f3f7"; } +.bi-grid-3x3-gap-fill::before { content: "\f3f8"; } +.bi-grid-3x3-gap::before { content: "\f3f9"; } +.bi-grid-3x3::before { content: "\f3fa"; } +.bi-grid-fill::before { content: "\f3fb"; } +.bi-grid::before { content: "\f3fc"; } +.bi-grip-horizontal::before { content: "\f3fd"; } +.bi-grip-vertical::before { content: "\f3fe"; } +.bi-hammer::before { content: "\f3ff"; } +.bi-hand-index-fill::before { content: "\f400"; } +.bi-hand-index-thumb-fill::before { content: "\f401"; } +.bi-hand-index-thumb::before { content: "\f402"; } +.bi-hand-index::before { content: "\f403"; } +.bi-hand-thumbs-down-fill::before { content: "\f404"; } +.bi-hand-thumbs-down::before { content: "\f405"; } +.bi-hand-thumbs-up-fill::before { content: "\f406"; } +.bi-hand-thumbs-up::before { content: "\f407"; } +.bi-handbag-fill::before { content: "\f408"; } +.bi-handbag::before { content: "\f409"; } +.bi-hash::before { content: "\f40a"; } +.bi-hdd-fill::before { content: "\f40b"; } +.bi-hdd-network-fill::before { content: "\f40c"; } +.bi-hdd-network::before { content: "\f40d"; } +.bi-hdd-rack-fill::before { content: "\f40e"; } +.bi-hdd-rack::before { content: "\f40f"; } +.bi-hdd-stack-fill::before { content: "\f410"; } +.bi-hdd-stack::before { content: "\f411"; } +.bi-hdd::before { content: "\f412"; } +.bi-headphones::before { content: "\f413"; } +.bi-headset::before { content: "\f414"; } +.bi-heart-fill::before { content: "\f415"; } +.bi-heart-half::before { content: "\f416"; } +.bi-heart::before { content: "\f417"; } +.bi-heptagon-fill::before { content: "\f418"; } +.bi-heptagon-half::before { content: "\f419"; } +.bi-heptagon::before { content: "\f41a"; } +.bi-hexagon-fill::before { content: "\f41b"; } +.bi-hexagon-half::before { content: "\f41c"; } +.bi-hexagon::before { content: "\f41d"; } +.bi-hourglass-bottom::before { content: "\f41e"; } +.bi-hourglass-split::before { content: "\f41f"; } +.bi-hourglass-top::before { content: "\f420"; } +.bi-hourglass::before { content: "\f421"; } +.bi-house-door-fill::before { content: "\f422"; } +.bi-house-door::before { content: "\f423"; } +.bi-house-fill::before { content: "\f424"; } +.bi-house::before { content: "\f425"; } +.bi-hr::before { content: "\f426"; } +.bi-hurricane::before { content: "\f427"; } +.bi-image-alt::before { content: "\f428"; } +.bi-image-fill::before { content: "\f429"; } +.bi-image::before { content: "\f42a"; } +.bi-images::before { content: "\f42b"; } +.bi-inbox-fill::before { content: "\f42c"; } +.bi-inbox::before { content: "\f42d"; } +.bi-inboxes-fill::before { content: "\f42e"; } +.bi-inboxes::before { content: "\f42f"; } +.bi-info-circle-fill::before { content: "\f430"; } +.bi-info-circle::before { content: "\f431"; } +.bi-info-square-fill::before { content: "\f432"; } +.bi-info-square::before { content: "\f433"; } +.bi-info::before { content: "\f434"; } +.bi-input-cursor-text::before { content: "\f435"; } +.bi-input-cursor::before { content: "\f436"; } +.bi-instagram::before { content: "\f437"; } +.bi-intersect::before { content: "\f438"; } +.bi-journal-album::before { content: "\f439"; } +.bi-journal-arrow-down::before { content: "\f43a"; } +.bi-journal-arrow-up::before { content: "\f43b"; } +.bi-journal-bookmark-fill::before { content: "\f43c"; } +.bi-journal-bookmark::before { content: "\f43d"; } +.bi-journal-check::before { content: "\f43e"; } +.bi-journal-code::before { content: "\f43f"; } +.bi-journal-medical::before { content: "\f440"; } +.bi-journal-minus::before { content: "\f441"; } +.bi-journal-plus::before { content: "\f442"; } +.bi-journal-richtext::before { content: "\f443"; } +.bi-journal-text::before { content: "\f444"; } +.bi-journal-x::before { content: "\f445"; } +.bi-journal::before { content: "\f446"; } +.bi-journals::before { content: "\f447"; } +.bi-joystick::before { content: "\f448"; } +.bi-justify-left::before { content: "\f449"; } +.bi-justify-right::before { content: "\f44a"; } +.bi-justify::before { content: "\f44b"; } +.bi-kanban-fill::before { content: "\f44c"; } +.bi-kanban::before { content: "\f44d"; } +.bi-key-fill::before { content: "\f44e"; } +.bi-key::before { content: "\f44f"; } +.bi-keyboard-fill::before { content: "\f450"; } +.bi-keyboard::before { content: "\f451"; } +.bi-ladder::before { content: "\f452"; } +.bi-lamp-fill::before { content: "\f453"; } +.bi-lamp::before { content: "\f454"; } +.bi-laptop-fill::before { content: "\f455"; } +.bi-laptop::before { content: "\f456"; } +.bi-layer-backward::before { content: "\f457"; } +.bi-layer-forward::before { content: "\f458"; } +.bi-layers-fill::before { content: "\f459"; } +.bi-layers-half::before { content: "\f45a"; } +.bi-layers::before { content: "\f45b"; } +.bi-layout-sidebar-inset-reverse::before { content: "\f45c"; } +.bi-layout-sidebar-inset::before { content: "\f45d"; } +.bi-layout-sidebar-reverse::before { content: "\f45e"; } +.bi-layout-sidebar::before { content: "\f45f"; } +.bi-layout-split::before { content: "\f460"; } +.bi-layout-text-sidebar-reverse::before { content: "\f461"; } +.bi-layout-text-sidebar::before { content: "\f462"; } +.bi-layout-text-window-reverse::before { content: "\f463"; } +.bi-layout-text-window::before { content: "\f464"; } +.bi-layout-three-columns::before { content: "\f465"; } +.bi-layout-wtf::before { content: "\f466"; } +.bi-life-preserver::before { content: "\f467"; } +.bi-lightbulb-fill::before { content: "\f468"; } +.bi-lightbulb-off-fill::before { content: "\f469"; } +.bi-lightbulb-off::before { content: "\f46a"; } +.bi-lightbulb::before { content: "\f46b"; } +.bi-lightning-charge-fill::before { content: "\f46c"; } +.bi-lightning-charge::before { content: "\f46d"; } +.bi-lightning-fill::before { content: "\f46e"; } +.bi-lightning::before { content: "\f46f"; } +.bi-link-45deg::before { content: "\f470"; } +.bi-link::before { content: "\f471"; } +.bi-linkedin::before { content: "\f472"; } +.bi-list-check::before { content: "\f473"; } +.bi-list-nested::before { content: "\f474"; } +.bi-list-ol::before { content: "\f475"; } +.bi-list-stars::before { content: "\f476"; } +.bi-list-task::before { content: "\f477"; } +.bi-list-ul::before { content: "\f478"; } +.bi-list::before { content: "\f479"; } +.bi-lock-fill::before { content: "\f47a"; } +.bi-lock::before { content: "\f47b"; } +.bi-mailbox::before { content: "\f47c"; } +.bi-mailbox2::before { content: "\f47d"; } +.bi-map-fill::before { content: "\f47e"; } +.bi-map::before { content: "\f47f"; } +.bi-markdown-fill::before { content: "\f480"; } +.bi-markdown::before { content: "\f481"; } +.bi-mask::before { content: "\f482"; } +.bi-megaphone-fill::before { content: "\f483"; } +.bi-megaphone::before { content: "\f484"; } +.bi-menu-app-fill::before { content: "\f485"; } +.bi-menu-app::before { content: "\f486"; } +.bi-menu-button-fill::before { content: "\f487"; } +.bi-menu-button-wide-fill::before { content: "\f488"; } +.bi-menu-button-wide::before { content: "\f489"; } +.bi-menu-button::before { content: "\f48a"; } +.bi-menu-down::before { content: "\f48b"; } +.bi-menu-up::before { content: "\f48c"; } +.bi-mic-fill::before { content: "\f48d"; } +.bi-mic-mute-fill::before { content: "\f48e"; } +.bi-mic-mute::before { content: "\f48f"; } +.bi-mic::before { content: "\f490"; } +.bi-minecart-loaded::before { content: "\f491"; } +.bi-minecart::before { content: "\f492"; } +.bi-moisture::before { content: "\f493"; } +.bi-moon-fill::before { content: "\f494"; } +.bi-moon-stars-fill::before { content: "\f495"; } +.bi-moon-stars::before { content: "\f496"; } +.bi-moon::before { content: "\f497"; } +.bi-mouse-fill::before { content: "\f498"; } +.bi-mouse::before { content: "\f499"; } +.bi-mouse2-fill::before { content: "\f49a"; } +.bi-mouse2::before { content: "\f49b"; } +.bi-mouse3-fill::before { content: "\f49c"; } +.bi-mouse3::before { content: "\f49d"; } +.bi-music-note-beamed::before { content: "\f49e"; } +.bi-music-note-list::before { content: "\f49f"; } +.bi-music-note::before { content: "\f4a0"; } +.bi-music-player-fill::before { content: "\f4a1"; } +.bi-music-player::before { content: "\f4a2"; } +.bi-newspaper::before { content: "\f4a3"; } +.bi-node-minus-fill::before { content: "\f4a4"; } +.bi-node-minus::before { content: "\f4a5"; } +.bi-node-plus-fill::before { content: "\f4a6"; } +.bi-node-plus::before { content: "\f4a7"; } +.bi-nut-fill::before { content: "\f4a8"; } +.bi-nut::before { content: "\f4a9"; } +.bi-octagon-fill::before { content: "\f4aa"; } +.bi-octagon-half::before { content: "\f4ab"; } +.bi-octagon::before { content: "\f4ac"; } +.bi-option::before { content: "\f4ad"; } +.bi-outlet::before { content: "\f4ae"; } +.bi-paint-bucket::before { content: "\f4af"; } +.bi-palette-fill::before { content: "\f4b0"; } +.bi-palette::before { content: "\f4b1"; } +.bi-palette2::before { content: "\f4b2"; } +.bi-paperclip::before { content: "\f4b3"; } +.bi-paragraph::before { content: "\f4b4"; } +.bi-patch-check-fill::before { content: "\f4b5"; } +.bi-patch-check::before { content: "\f4b6"; } +.bi-patch-exclamation-fill::before { content: "\f4b7"; } +.bi-patch-exclamation::before { content: "\f4b8"; } +.bi-patch-minus-fill::before { content: "\f4b9"; } +.bi-patch-minus::before { content: "\f4ba"; } +.bi-patch-plus-fill::before { content: "\f4bb"; } +.bi-patch-plus::before { content: "\f4bc"; } +.bi-patch-question-fill::before { content: "\f4bd"; } +.bi-patch-question::before { content: "\f4be"; } +.bi-pause-btn-fill::before { content: "\f4bf"; } +.bi-pause-btn::before { content: "\f4c0"; } +.bi-pause-circle-fill::before { content: "\f4c1"; } +.bi-pause-circle::before { content: "\f4c2"; } +.bi-pause-fill::before { content: "\f4c3"; } +.bi-pause::before { content: "\f4c4"; } +.bi-peace-fill::before { content: "\f4c5"; } +.bi-peace::before { content: "\f4c6"; } +.bi-pen-fill::before { content: "\f4c7"; } +.bi-pen::before { content: "\f4c8"; } +.bi-pencil-fill::before { content: "\f4c9"; } +.bi-pencil-square::before { content: "\f4ca"; } +.bi-pencil::before { content: "\f4cb"; } +.bi-pentagon-fill::before { content: "\f4cc"; } +.bi-pentagon-half::before { content: "\f4cd"; } +.bi-pentagon::before { content: "\f4ce"; } +.bi-people-fill::before { content: "\f4cf"; } +.bi-people::before { content: "\f4d0"; } +.bi-percent::before { content: "\f4d1"; } +.bi-person-badge-fill::before { content: "\f4d2"; } +.bi-person-badge::before { content: "\f4d3"; } +.bi-person-bounding-box::before { content: "\f4d4"; } +.bi-person-check-fill::before { content: "\f4d5"; } +.bi-person-check::before { content: "\f4d6"; } +.bi-person-circle::before { content: "\f4d7"; } +.bi-person-dash-fill::before { content: "\f4d8"; } +.bi-person-dash::before { content: "\f4d9"; } +.bi-person-fill::before { content: "\f4da"; } +.bi-person-lines-fill::before { content: "\f4db"; } +.bi-person-plus-fill::before { content: "\f4dc"; } +.bi-person-plus::before { content: "\f4dd"; } +.bi-person-square::before { content: "\f4de"; } +.bi-person-x-fill::before { content: "\f4df"; } +.bi-person-x::before { content: "\f4e0"; } +.bi-person::before { content: "\f4e1"; } +.bi-phone-fill::before { content: "\f4e2"; } +.bi-phone-landscape-fill::before { content: "\f4e3"; } +.bi-phone-landscape::before { content: "\f4e4"; } +.bi-phone-vibrate-fill::before { content: "\f4e5"; } +.bi-phone-vibrate::before { content: "\f4e6"; } +.bi-phone::before { content: "\f4e7"; } +.bi-pie-chart-fill::before { content: "\f4e8"; } +.bi-pie-chart::before { content: "\f4e9"; } +.bi-pin-angle-fill::before { content: "\f4ea"; } +.bi-pin-angle::before { content: "\f4eb"; } +.bi-pin-fill::before { content: "\f4ec"; } +.bi-pin::before { content: "\f4ed"; } +.bi-pip-fill::before { content: "\f4ee"; } +.bi-pip::before { content: "\f4ef"; } +.bi-play-btn-fill::before { content: "\f4f0"; } +.bi-play-btn::before { content: "\f4f1"; } +.bi-play-circle-fill::before { content: "\f4f2"; } +.bi-play-circle::before { content: "\f4f3"; } +.bi-play-fill::before { content: "\f4f4"; } +.bi-play::before { content: "\f4f5"; } +.bi-plug-fill::before { content: "\f4f6"; } +.bi-plug::before { content: "\f4f7"; } +.bi-plus-circle-dotted::before { content: "\f4f8"; } +.bi-plus-circle-fill::before { content: "\f4f9"; } +.bi-plus-circle::before { content: "\f4fa"; } +.bi-plus-square-dotted::before { content: "\f4fb"; } +.bi-plus-square-fill::before { content: "\f4fc"; } +.bi-plus-square::before { content: "\f4fd"; } +.bi-plus::before { content: "\f4fe"; } +.bi-power::before { content: "\f4ff"; } +.bi-printer-fill::before { content: "\f500"; } +.bi-printer::before { content: "\f501"; } +.bi-puzzle-fill::before { content: "\f502"; } +.bi-puzzle::before { content: "\f503"; } +.bi-question-circle-fill::before { content: "\f504"; } +.bi-question-circle::before { content: "\f505"; } +.bi-question-diamond-fill::before { content: "\f506"; } +.bi-question-diamond::before { content: "\f507"; } +.bi-question-octagon-fill::before { content: "\f508"; } +.bi-question-octagon::before { content: "\f509"; } +.bi-question-square-fill::before { content: "\f50a"; } +.bi-question-square::before { content: "\f50b"; } +.bi-question::before { content: "\f50c"; } +.bi-rainbow::before { content: "\f50d"; } +.bi-receipt-cutoff::before { content: "\f50e"; } +.bi-receipt::before { content: "\f50f"; } +.bi-reception-0::before { content: "\f510"; } +.bi-reception-1::before { content: "\f511"; } +.bi-reception-2::before { content: "\f512"; } +.bi-reception-3::before { content: "\f513"; } +.bi-reception-4::before { content: "\f514"; } +.bi-record-btn-fill::before { content: "\f515"; } +.bi-record-btn::before { content: "\f516"; } +.bi-record-circle-fill::before { content: "\f517"; } +.bi-record-circle::before { content: "\f518"; } +.bi-record-fill::before { content: "\f519"; } +.bi-record::before { content: "\f51a"; } +.bi-record2-fill::before { content: "\f51b"; } +.bi-record2::before { content: "\f51c"; } +.bi-reply-all-fill::before { content: "\f51d"; } +.bi-reply-all::before { content: "\f51e"; } +.bi-reply-fill::before { content: "\f51f"; } +.bi-reply::before { content: "\f520"; } +.bi-rss-fill::before { content: "\f521"; } +.bi-rss::before { content: "\f522"; } +.bi-rulers::before { content: "\f523"; } +.bi-save-fill::before { content: "\f524"; } +.bi-save::before { content: "\f525"; } +.bi-save2-fill::before { content: "\f526"; } +.bi-save2::before { content: "\f527"; } +.bi-scissors::before { content: "\f528"; } +.bi-screwdriver::before { content: "\f529"; } +.bi-search::before { content: "\f52a"; } +.bi-segmented-nav::before { content: "\f52b"; } +.bi-server::before { content: "\f52c"; } +.bi-share-fill::before { content: "\f52d"; } +.bi-share::before { content: "\f52e"; } +.bi-shield-check::before { content: "\f52f"; } +.bi-shield-exclamation::before { content: "\f530"; } +.bi-shield-fill-check::before { content: "\f531"; } +.bi-shield-fill-exclamation::before { content: "\f532"; } +.bi-shield-fill-minus::before { content: "\f533"; } +.bi-shield-fill-plus::before { content: "\f534"; } +.bi-shield-fill-x::before { content: "\f535"; } +.bi-shield-fill::before { content: "\f536"; } +.bi-shield-lock-fill::before { content: "\f537"; } +.bi-shield-lock::before { content: "\f538"; } +.bi-shield-minus::before { content: "\f539"; } +.bi-shield-plus::before { content: "\f53a"; } +.bi-shield-shaded::before { content: "\f53b"; } +.bi-shield-slash-fill::before { content: "\f53c"; } +.bi-shield-slash::before { content: "\f53d"; } +.bi-shield-x::before { content: "\f53e"; } +.bi-shield::before { content: "\f53f"; } +.bi-shift-fill::before { content: "\f540"; } +.bi-shift::before { content: "\f541"; } +.bi-shop-window::before { content: "\f542"; } +.bi-shop::before { content: "\f543"; } +.bi-shuffle::before { content: "\f544"; } +.bi-signpost-2-fill::before { content: "\f545"; } +.bi-signpost-2::before { content: "\f546"; } +.bi-signpost-fill::before { content: "\f547"; } +.bi-signpost-split-fill::before { content: "\f548"; } +.bi-signpost-split::before { content: "\f549"; } +.bi-signpost::before { content: "\f54a"; } +.bi-sim-fill::before { content: "\f54b"; } +.bi-sim::before { content: "\f54c"; } +.bi-skip-backward-btn-fill::before { content: "\f54d"; } +.bi-skip-backward-btn::before { content: "\f54e"; } +.bi-skip-backward-circle-fill::before { content: "\f54f"; } +.bi-skip-backward-circle::before { content: "\f550"; } +.bi-skip-backward-fill::before { content: "\f551"; } +.bi-skip-backward::before { content: "\f552"; } +.bi-skip-end-btn-fill::before { content: "\f553"; } +.bi-skip-end-btn::before { content: "\f554"; } +.bi-skip-end-circle-fill::before { content: "\f555"; } +.bi-skip-end-circle::before { content: "\f556"; } +.bi-skip-end-fill::before { content: "\f557"; } +.bi-skip-end::before { content: "\f558"; } +.bi-skip-forward-btn-fill::before { content: "\f559"; } +.bi-skip-forward-btn::before { content: "\f55a"; } +.bi-skip-forward-circle-fill::before { content: "\f55b"; } +.bi-skip-forward-circle::before { content: "\f55c"; } +.bi-skip-forward-fill::before { content: "\f55d"; } +.bi-skip-forward::before { content: "\f55e"; } +.bi-skip-start-btn-fill::before { content: "\f55f"; } +.bi-skip-start-btn::before { content: "\f560"; } +.bi-skip-start-circle-fill::before { content: "\f561"; } +.bi-skip-start-circle::before { content: "\f562"; } +.bi-skip-start-fill::before { content: "\f563"; } +.bi-skip-start::before { content: "\f564"; } +.bi-slack::before { content: "\f565"; } +.bi-slash-circle-fill::before { content: "\f566"; } +.bi-slash-circle::before { content: "\f567"; } +.bi-slash-square-fill::before { content: "\f568"; } +.bi-slash-square::before { content: "\f569"; } +.bi-slash::before { content: "\f56a"; } +.bi-sliders::before { content: "\f56b"; } +.bi-smartwatch::before { content: "\f56c"; } +.bi-snow::before { content: "\f56d"; } +.bi-snow2::before { content: "\f56e"; } +.bi-snow3::before { content: "\f56f"; } +.bi-sort-alpha-down-alt::before { content: "\f570"; } +.bi-sort-alpha-down::before { content: "\f571"; } +.bi-sort-alpha-up-alt::before { content: "\f572"; } +.bi-sort-alpha-up::before { content: "\f573"; } +.bi-sort-down-alt::before { content: "\f574"; } +.bi-sort-down::before { content: "\f575"; } +.bi-sort-numeric-down-alt::before { content: "\f576"; } +.bi-sort-numeric-down::before { content: "\f577"; } +.bi-sort-numeric-up-alt::before { content: "\f578"; } +.bi-sort-numeric-up::before { content: "\f579"; } +.bi-sort-up-alt::before { content: "\f57a"; } +.bi-sort-up::before { content: "\f57b"; } +.bi-soundwave::before { content: "\f57c"; } +.bi-speaker-fill::before { content: "\f57d"; } +.bi-speaker::before { content: "\f57e"; } +.bi-speedometer::before { content: "\f57f"; } +.bi-speedometer2::before { content: "\f580"; } +.bi-spellcheck::before { content: "\f581"; } +.bi-square-fill::before { content: "\f582"; } +.bi-square-half::before { content: "\f583"; } +.bi-square::before { content: "\f584"; } +.bi-stack::before { content: "\f585"; } +.bi-star-fill::before { content: "\f586"; } +.bi-star-half::before { content: "\f587"; } +.bi-star::before { content: "\f588"; } +.bi-stars::before { content: "\f589"; } +.bi-stickies-fill::before { content: "\f58a"; } +.bi-stickies::before { content: "\f58b"; } +.bi-sticky-fill::before { content: "\f58c"; } +.bi-sticky::before { content: "\f58d"; } +.bi-stop-btn-fill::before { content: "\f58e"; } +.bi-stop-btn::before { content: "\f58f"; } +.bi-stop-circle-fill::before { content: "\f590"; } +.bi-stop-circle::before { content: "\f591"; } +.bi-stop-fill::before { content: "\f592"; } +.bi-stop::before { content: "\f593"; } +.bi-stoplights-fill::before { content: "\f594"; } +.bi-stoplights::before { content: "\f595"; } +.bi-stopwatch-fill::before { content: "\f596"; } +.bi-stopwatch::before { content: "\f597"; } +.bi-subtract::before { content: "\f598"; } +.bi-suit-club-fill::before { content: "\f599"; } +.bi-suit-club::before { content: "\f59a"; } +.bi-suit-diamond-fill::before { content: "\f59b"; } +.bi-suit-diamond::before { content: "\f59c"; } +.bi-suit-heart-fill::before { content: "\f59d"; } +.bi-suit-heart::before { content: "\f59e"; } +.bi-suit-spade-fill::before { content: "\f59f"; } +.bi-suit-spade::before { content: "\f5a0"; } +.bi-sun-fill::before { content: "\f5a1"; } +.bi-sun::before { content: "\f5a2"; } +.bi-sunglasses::before { content: "\f5a3"; } +.bi-sunrise-fill::before { content: "\f5a4"; } +.bi-sunrise::before { content: "\f5a5"; } +.bi-sunset-fill::before { content: "\f5a6"; } +.bi-sunset::before { content: "\f5a7"; } +.bi-symmetry-horizontal::before { content: "\f5a8"; } +.bi-symmetry-vertical::before { content: "\f5a9"; } +.bi-table::before { content: "\f5aa"; } +.bi-tablet-fill::before { content: "\f5ab"; } +.bi-tablet-landscape-fill::before { content: "\f5ac"; } +.bi-tablet-landscape::before { content: "\f5ad"; } +.bi-tablet::before { content: "\f5ae"; } +.bi-tag-fill::before { content: "\f5af"; } +.bi-tag::before { content: "\f5b0"; } +.bi-tags-fill::before { content: "\f5b1"; } +.bi-tags::before { content: "\f5b2"; } +.bi-telegram::before { content: "\f5b3"; } +.bi-telephone-fill::before { content: "\f5b4"; } +.bi-telephone-forward-fill::before { content: "\f5b5"; } +.bi-telephone-forward::before { content: "\f5b6"; } +.bi-telephone-inbound-fill::before { content: "\f5b7"; } +.bi-telephone-inbound::before { content: "\f5b8"; } +.bi-telephone-minus-fill::before { content: "\f5b9"; } +.bi-telephone-minus::before { content: "\f5ba"; } +.bi-telephone-outbound-fill::before { content: "\f5bb"; } +.bi-telephone-outbound::before { content: "\f5bc"; } +.bi-telephone-plus-fill::before { content: "\f5bd"; } +.bi-telephone-plus::before { content: "\f5be"; } +.bi-telephone-x-fill::before { content: "\f5bf"; } +.bi-telephone-x::before { content: "\f5c0"; } +.bi-telephone::before { content: "\f5c1"; } +.bi-terminal-fill::before { content: "\f5c2"; } +.bi-terminal::before { content: "\f5c3"; } +.bi-text-center::before { content: "\f5c4"; } +.bi-text-indent-left::before { content: "\f5c5"; } +.bi-text-indent-right::before { content: "\f5c6"; } +.bi-text-left::before { content: "\f5c7"; } +.bi-text-paragraph::before { content: "\f5c8"; } +.bi-text-right::before { content: "\f5c9"; } +.bi-textarea-resize::before { content: "\f5ca"; } +.bi-textarea-t::before { content: "\f5cb"; } +.bi-textarea::before { content: "\f5cc"; } +.bi-thermometer-half::before { content: "\f5cd"; } +.bi-thermometer-high::before { content: "\f5ce"; } +.bi-thermometer-low::before { content: "\f5cf"; } +.bi-thermometer-snow::before { content: "\f5d0"; } +.bi-thermometer-sun::before { content: "\f5d1"; } +.bi-thermometer::before { content: "\f5d2"; } +.bi-three-dots-vertical::before { content: "\f5d3"; } +.bi-three-dots::before { content: "\f5d4"; } +.bi-toggle-off::before { content: "\f5d5"; } +.bi-toggle-on::before { content: "\f5d6"; } +.bi-toggle2-off::before { content: "\f5d7"; } +.bi-toggle2-on::before { content: "\f5d8"; } +.bi-toggles::before { content: "\f5d9"; } +.bi-toggles2::before { content: "\f5da"; } +.bi-tools::before { content: "\f5db"; } +.bi-tornado::before { content: "\f5dc"; } +.bi-trash-fill::before { content: "\f5dd"; } +.bi-trash::before { content: "\f5de"; } +.bi-trash2-fill::before { content: "\f5df"; } +.bi-trash2::before { content: "\f5e0"; } +.bi-tree-fill::before { content: "\f5e1"; } +.bi-tree::before { content: "\f5e2"; } +.bi-triangle-fill::before { content: "\f5e3"; } +.bi-triangle-half::before { content: "\f5e4"; } +.bi-triangle::before { content: "\f5e5"; } +.bi-trophy-fill::before { content: "\f5e6"; } +.bi-trophy::before { content: "\f5e7"; } +.bi-tropical-storm::before { content: "\f5e8"; } +.bi-truck-flatbed::before { content: "\f5e9"; } +.bi-truck::before { content: "\f5ea"; } +.bi-tsunami::before { content: "\f5eb"; } +.bi-tv-fill::before { content: "\f5ec"; } +.bi-tv::before { content: "\f5ed"; } +.bi-twitch::before { content: "\f5ee"; } +.bi-twitter::before { content: "\f5ef"; } +.bi-type-bold::before { content: "\f5f0"; } +.bi-type-h1::before { content: "\f5f1"; } +.bi-type-h2::before { content: "\f5f2"; } +.bi-type-h3::before { content: "\f5f3"; } +.bi-type-italic::before { content: "\f5f4"; } +.bi-type-strikethrough::before { content: "\f5f5"; } +.bi-type-underline::before { content: "\f5f6"; } +.bi-type::before { content: "\f5f7"; } +.bi-ui-checks-grid::before { content: "\f5f8"; } +.bi-ui-checks::before { content: "\f5f9"; } +.bi-ui-radios-grid::before { content: "\f5fa"; } +.bi-ui-radios::before { content: "\f5fb"; } +.bi-umbrella-fill::before { content: "\f5fc"; } +.bi-umbrella::before { content: "\f5fd"; } +.bi-union::before { content: "\f5fe"; } +.bi-unlock-fill::before { content: "\f5ff"; } +.bi-unlock::before { content: "\f600"; } +.bi-upc-scan::before { content: "\f601"; } +.bi-upc::before { content: "\f602"; } +.bi-upload::before { content: "\f603"; } +.bi-vector-pen::before { content: "\f604"; } +.bi-view-list::before { content: "\f605"; } +.bi-view-stacked::before { content: "\f606"; } +.bi-vinyl-fill::before { content: "\f607"; } +.bi-vinyl::before { content: "\f608"; } +.bi-voicemail::before { content: "\f609"; } +.bi-volume-down-fill::before { content: "\f60a"; } +.bi-volume-down::before { content: "\f60b"; } +.bi-volume-mute-fill::before { content: "\f60c"; } +.bi-volume-mute::before { content: "\f60d"; } +.bi-volume-off-fill::before { content: "\f60e"; } +.bi-volume-off::before { content: "\f60f"; } +.bi-volume-up-fill::before { content: "\f610"; } +.bi-volume-up::before { content: "\f611"; } +.bi-vr::before { content: "\f612"; } +.bi-wallet-fill::before { content: "\f613"; } +.bi-wallet::before { content: "\f614"; } +.bi-wallet2::before { content: "\f615"; } +.bi-watch::before { content: "\f616"; } +.bi-water::before { content: "\f617"; } +.bi-whatsapp::before { content: "\f618"; } +.bi-wifi-1::before { content: "\f619"; } +.bi-wifi-2::before { content: "\f61a"; } +.bi-wifi-off::before { content: "\f61b"; } +.bi-wifi::before { content: "\f61c"; } +.bi-wind::before { content: "\f61d"; } +.bi-window-dock::before { content: "\f61e"; } +.bi-window-sidebar::before { content: "\f61f"; } +.bi-window::before { content: "\f620"; } +.bi-wrench::before { content: "\f621"; } +.bi-x-circle-fill::before { content: "\f622"; } +.bi-x-circle::before { content: "\f623"; } +.bi-x-diamond-fill::before { content: "\f624"; } +.bi-x-diamond::before { content: "\f625"; } +.bi-x-octagon-fill::before { content: "\f626"; } +.bi-x-octagon::before { content: "\f627"; } +.bi-x-square-fill::before { content: "\f628"; } +.bi-x-square::before { content: "\f629"; } +.bi-x::before { content: "\f62a"; } +.bi-youtube::before { content: "\f62b"; } +.bi-zoom-in::before { content: "\f62c"; } +.bi-zoom-out::before { content: "\f62d"; } +.bi-bank::before { content: "\f62e"; } +.bi-bank2::before { content: "\f62f"; } +.bi-bell-slash-fill::before { content: "\f630"; } +.bi-bell-slash::before { content: "\f631"; } +.bi-cash-coin::before { content: "\f632"; } +.bi-check-lg::before { content: "\f633"; } +.bi-coin::before { content: "\f634"; } +.bi-currency-bitcoin::before { content: "\f635"; } +.bi-currency-dollar::before { content: "\f636"; } +.bi-currency-euro::before { content: "\f637"; } +.bi-currency-exchange::before { content: "\f638"; } +.bi-currency-pound::before { content: "\f639"; } +.bi-currency-yen::before { content: "\f63a"; } +.bi-dash-lg::before { content: "\f63b"; } +.bi-exclamation-lg::before { content: "\f63c"; } +.bi-file-earmark-pdf-fill::before { content: "\f63d"; } +.bi-file-earmark-pdf::before { content: "\f63e"; } +.bi-file-pdf-fill::before { content: "\f63f"; } +.bi-file-pdf::before { content: "\f640"; } +.bi-gender-ambiguous::before { content: "\f641"; } +.bi-gender-female::before { content: "\f642"; } +.bi-gender-male::before { content: "\f643"; } +.bi-gender-trans::before { content: "\f644"; } +.bi-headset-vr::before { content: "\f645"; } +.bi-info-lg::before { content: "\f646"; } +.bi-mastodon::before { content: "\f647"; } +.bi-messenger::before { content: "\f648"; } +.bi-piggy-bank-fill::before { content: "\f649"; } +.bi-piggy-bank::before { content: "\f64a"; } +.bi-pin-map-fill::before { content: "\f64b"; } +.bi-pin-map::before { content: "\f64c"; } +.bi-plus-lg::before { content: "\f64d"; } +.bi-question-lg::before { content: "\f64e"; } +.bi-recycle::before { content: "\f64f"; } +.bi-reddit::before { content: "\f650"; } +.bi-safe-fill::before { content: "\f651"; } +.bi-safe2-fill::before { content: "\f652"; } +.bi-safe2::before { content: "\f653"; } +.bi-sd-card-fill::before { content: "\f654"; } +.bi-sd-card::before { content: "\f655"; } +.bi-skype::before { content: "\f656"; } +.bi-slash-lg::before { content: "\f657"; } +.bi-translate::before { content: "\f658"; } +.bi-x-lg::before { content: "\f659"; } +.bi-safe::before { content: "\f65a"; } +.bi-apple::before { content: "\f65b"; } +.bi-microsoft::before { content: "\f65d"; } +.bi-windows::before { content: "\f65e"; } +.bi-behance::before { content: "\f65c"; } +.bi-dribbble::before { content: "\f65f"; } +.bi-line::before { content: "\f660"; } +.bi-medium::before { content: "\f661"; } +.bi-paypal::before { content: "\f662"; } +.bi-pinterest::before { content: "\f663"; } +.bi-signal::before { content: "\f664"; } +.bi-snapchat::before { content: "\f665"; } +.bi-spotify::before { content: "\f666"; } +.bi-stack-overflow::before { content: "\f667"; } +.bi-strava::before { content: "\f668"; } +.bi-wordpress::before { content: "\f669"; } +.bi-vimeo::before { content: "\f66a"; } +.bi-activity::before { content: "\f66b"; } +.bi-easel2-fill::before { content: "\f66c"; } +.bi-easel2::before { content: "\f66d"; } +.bi-easel3-fill::before { content: "\f66e"; } +.bi-easel3::before { content: "\f66f"; } +.bi-fan::before { content: "\f670"; } +.bi-fingerprint::before { content: "\f671"; } +.bi-graph-down-arrow::before { content: "\f672"; } +.bi-graph-up-arrow::before { content: "\f673"; } +.bi-hypnotize::before { content: "\f674"; } +.bi-magic::before { content: "\f675"; } +.bi-person-rolodex::before { content: "\f676"; } +.bi-person-video::before { content: "\f677"; } +.bi-person-video2::before { content: "\f678"; } +.bi-person-video3::before { content: "\f679"; } +.bi-person-workspace::before { content: "\f67a"; } +.bi-radioactive::before { content: "\f67b"; } +.bi-webcam-fill::before { content: "\f67c"; } +.bi-webcam::before { content: "\f67d"; } +.bi-yin-yang::before { content: "\f67e"; } +.bi-bandaid-fill::before { content: "\f680"; } +.bi-bandaid::before { content: "\f681"; } +.bi-bluetooth::before { content: "\f682"; } +.bi-body-text::before { content: "\f683"; } +.bi-boombox::before { content: "\f684"; } +.bi-boxes::before { content: "\f685"; } +.bi-dpad-fill::before { content: "\f686"; } +.bi-dpad::before { content: "\f687"; } +.bi-ear-fill::before { content: "\f688"; } +.bi-ear::before { content: "\f689"; } +.bi-envelope-check-1::before { content: "\f68a"; } +.bi-envelope-check-fill::before { content: "\f68b"; } +.bi-envelope-check::before { content: "\f68c"; } +.bi-envelope-dash-1::before { content: "\f68d"; } +.bi-envelope-dash-fill::before { content: "\f68e"; } +.bi-envelope-dash::before { content: "\f68f"; } +.bi-envelope-exclamation-1::before { content: "\f690"; } +.bi-envelope-exclamation-fill::before { content: "\f691"; } +.bi-envelope-exclamation::before { content: "\f692"; } +.bi-envelope-plus-fill::before { content: "\f693"; } +.bi-envelope-plus::before { content: "\f694"; } +.bi-envelope-slash-1::before { content: "\f695"; } +.bi-envelope-slash-fill::before { content: "\f696"; } +.bi-envelope-slash::before { content: "\f697"; } +.bi-envelope-x-1::before { content: "\f698"; } +.bi-envelope-x-fill::before { content: "\f699"; } +.bi-envelope-x::before { content: "\f69a"; } +.bi-explicit-fill::before { content: "\f69b"; } +.bi-explicit::before { content: "\f69c"; } +.bi-git::before { content: "\f69d"; } +.bi-infinity::before { content: "\f69e"; } +.bi-list-columns-reverse::before { content: "\f69f"; } +.bi-list-columns::before { content: "\f6a0"; } +.bi-meta::before { content: "\f6a1"; } +.bi-mortorboard-fill::before { content: "\f6a2"; } +.bi-mortorboard::before { content: "\f6a3"; } +.bi-nintendo-switch::before { content: "\f6a4"; } +.bi-pc-display-horizontal::before { content: "\f6a5"; } +.bi-pc-display::before { content: "\f6a6"; } +.bi-pc-horizontal::before { content: "\f6a7"; } +.bi-pc::before { content: "\f6a8"; } +.bi-playstation::before { content: "\f6a9"; } +.bi-plus-slash-minus::before { content: "\f6aa"; } +.bi-projector-fill::before { content: "\f6ab"; } +.bi-projector::before { content: "\f6ac"; } +.bi-qr-code-scan::before { content: "\f6ad"; } +.bi-qr-code::before { content: "\f6ae"; } +.bi-quora::before { content: "\f6af"; } +.bi-quote::before { content: "\f6b0"; } +.bi-robot::before { content: "\f6b1"; } +.bi-send-check-fill::before { content: "\f6b2"; } +.bi-send-check::before { content: "\f6b3"; } +.bi-send-dash-fill::before { content: "\f6b4"; } +.bi-send-dash::before { content: "\f6b5"; } +.bi-send-exclamation-1::before { content: "\f6b6"; } +.bi-send-exclamation-fill::before { content: "\f6b7"; } +.bi-send-exclamation::before { content: "\f6b8"; } +.bi-send-fill::before { content: "\f6b9"; } +.bi-send-plus-fill::before { content: "\f6ba"; } +.bi-send-plus::before { content: "\f6bb"; } +.bi-send-slash-fill::before { content: "\f6bc"; } +.bi-send-slash::before { content: "\f6bd"; } +.bi-send-x-fill::before { content: "\f6be"; } +.bi-send-x::before { content: "\f6bf"; } +.bi-send::before { content: "\f6c0"; } +.bi-steam::before { content: "\f6c1"; } +.bi-terminal-dash-1::before { content: "\f6c2"; } +.bi-terminal-dash::before { content: "\f6c3"; } +.bi-terminal-plus::before { content: "\f6c4"; } +.bi-terminal-split::before { content: "\f6c5"; } +.bi-ticket-detailed-fill::before { content: "\f6c6"; } +.bi-ticket-detailed::before { content: "\f6c7"; } +.bi-ticket-fill::before { content: "\f6c8"; } +.bi-ticket-perforated-fill::before { content: "\f6c9"; } +.bi-ticket-perforated::before { content: "\f6ca"; } +.bi-ticket::before { content: "\f6cb"; } +.bi-tiktok::before { content: "\f6cc"; } +.bi-window-dash::before { content: "\f6cd"; } +.bi-window-desktop::before { content: "\f6ce"; } +.bi-window-fullscreen::before { content: "\f6cf"; } +.bi-window-plus::before { content: "\f6d0"; } +.bi-window-split::before { content: "\f6d1"; } +.bi-window-stack::before { content: "\f6d2"; } +.bi-window-x::before { content: "\f6d3"; } +.bi-xbox::before { content: "\f6d4"; } +.bi-ethernet::before { content: "\f6d5"; } +.bi-hdmi-fill::before { content: "\f6d6"; } +.bi-hdmi::before { content: "\f6d7"; } +.bi-usb-c-fill::before { content: "\f6d8"; } +.bi-usb-c::before { content: "\f6d9"; } +.bi-usb-fill::before { content: "\f6da"; } +.bi-usb-plug-fill::before { content: "\f6db"; } +.bi-usb-plug::before { content: "\f6dc"; } +.bi-usb-symbol::before { content: "\f6dd"; } +.bi-usb::before { content: "\f6de"; } +.bi-boombox-fill::before { content: "\f6df"; } +.bi-displayport-1::before { content: "\f6e0"; } +.bi-displayport::before { content: "\f6e1"; } +.bi-gpu-card::before { content: "\f6e2"; } +.bi-memory::before { content: "\f6e3"; } +.bi-modem-fill::before { content: "\f6e4"; } +.bi-modem::before { content: "\f6e5"; } +.bi-motherboard-fill::before { content: "\f6e6"; } +.bi-motherboard::before { content: "\f6e7"; } +.bi-optical-audio-fill::before { content: "\f6e8"; } +.bi-optical-audio::before { content: "\f6e9"; } +.bi-pci-card::before { content: "\f6ea"; } +.bi-router-fill::before { content: "\f6eb"; } +.bi-router::before { content: "\f6ec"; } +.bi-ssd-fill::before { content: "\f6ed"; } +.bi-ssd::before { content: "\f6ee"; } +.bi-thunderbolt-fill::before { content: "\f6ef"; } +.bi-thunderbolt::before { content: "\f6f0"; } +.bi-usb-drive-fill::before { content: "\f6f1"; } +.bi-usb-drive::before { content: "\f6f2"; } +.bi-usb-micro-fill::before { content: "\f6f3"; } +.bi-usb-micro::before { content: "\f6f4"; } +.bi-usb-mini-fill::before { content: "\f6f5"; } +.bi-usb-mini::before { content: "\f6f6"; } +.bi-cloud-haze2::before { content: "\f6f7"; } +.bi-device-hdd-fill::before { content: "\f6f8"; } +.bi-device-hdd::before { content: "\f6f9"; } +.bi-device-ssd-fill::before { content: "\f6fa"; } +.bi-device-ssd::before { content: "\f6fb"; } +.bi-displayport-fill::before { content: "\f6fc"; } +.bi-mortarboard-fill::before { content: "\f6fd"; } +.bi-mortarboard::before { content: "\f6fe"; } +.bi-terminal-x::before { content: "\f6ff"; } +.bi-arrow-through-heart-fill::before { content: "\f700"; } +.bi-arrow-through-heart::before { content: "\f701"; } +.bi-badge-sd-fill::before { content: "\f702"; } +.bi-badge-sd::before { content: "\f703"; } +.bi-bag-heart-fill::before { content: "\f704"; } +.bi-bag-heart::before { content: "\f705"; } +.bi-balloon-fill::before { content: "\f706"; } +.bi-balloon-heart-fill::before { content: "\f707"; } +.bi-balloon-heart::before { content: "\f708"; } +.bi-balloon::before { content: "\f709"; } +.bi-box2-fill::before { content: "\f70a"; } +.bi-box2-heart-fill::before { content: "\f70b"; } +.bi-box2-heart::before { content: "\f70c"; } +.bi-box2::before { content: "\f70d"; } +.bi-braces-asterisk::before { content: "\f70e"; } +.bi-calendar-heart-fill::before { content: "\f70f"; } +.bi-calendar-heart::before { content: "\f710"; } +.bi-calendar2-heart-fill::before { content: "\f711"; } +.bi-calendar2-heart::before { content: "\f712"; } +.bi-chat-heart-fill::before { content: "\f713"; } +.bi-chat-heart::before { content: "\f714"; } +.bi-chat-left-heart-fill::before { content: "\f715"; } +.bi-chat-left-heart::before { content: "\f716"; } +.bi-chat-right-heart-fill::before { content: "\f717"; } +.bi-chat-right-heart::before { content: "\f718"; } +.bi-chat-square-heart-fill::before { content: "\f719"; } +.bi-chat-square-heart::before { content: "\f71a"; } +.bi-clipboard-check-fill::before { content: "\f71b"; } +.bi-clipboard-data-fill::before { content: "\f71c"; } +.bi-clipboard-fill::before { content: "\f71d"; } +.bi-clipboard-heart-fill::before { content: "\f71e"; } +.bi-clipboard-heart::before { content: "\f71f"; } +.bi-clipboard-minus-fill::before { content: "\f720"; } +.bi-clipboard-plus-fill::before { content: "\f721"; } +.bi-clipboard-pulse::before { content: "\f722"; } +.bi-clipboard-x-fill::before { content: "\f723"; } +.bi-clipboard2-check-fill::before { content: "\f724"; } +.bi-clipboard2-check::before { content: "\f725"; } +.bi-clipboard2-data-fill::before { content: "\f726"; } +.bi-clipboard2-data::before { content: "\f727"; } +.bi-clipboard2-fill::before { content: "\f728"; } +.bi-clipboard2-heart-fill::before { content: "\f729"; } +.bi-clipboard2-heart::before { content: "\f72a"; } +.bi-clipboard2-minus-fill::before { content: "\f72b"; } +.bi-clipboard2-minus::before { content: "\f72c"; } +.bi-clipboard2-plus-fill::before { content: "\f72d"; } +.bi-clipboard2-plus::before { content: "\f72e"; } +.bi-clipboard2-pulse-fill::before { content: "\f72f"; } +.bi-clipboard2-pulse::before { content: "\f730"; } +.bi-clipboard2-x-fill::before { content: "\f731"; } +.bi-clipboard2-x::before { content: "\f732"; } +.bi-clipboard2::before { content: "\f733"; } +.bi-emoji-kiss-fill::before { content: "\f734"; } +.bi-emoji-kiss::before { content: "\f735"; } +.bi-envelope-heart-fill::before { content: "\f736"; } +.bi-envelope-heart::before { content: "\f737"; } +.bi-envelope-open-heart-fill::before { content: "\f738"; } +.bi-envelope-open-heart::before { content: "\f739"; } +.bi-envelope-paper-fill::before { content: "\f73a"; } +.bi-envelope-paper-heart-fill::before { content: "\f73b"; } +.bi-envelope-paper-heart::before { content: "\f73c"; } +.bi-envelope-paper::before { content: "\f73d"; } +.bi-filetype-aac::before { content: "\f73e"; } +.bi-filetype-ai::before { content: "\f73f"; } +.bi-filetype-bmp::before { content: "\f740"; } +.bi-filetype-cs::before { content: "\f741"; } +.bi-filetype-css::before { content: "\f742"; } +.bi-filetype-csv::before { content: "\f743"; } +.bi-filetype-doc::before { content: "\f744"; } +.bi-filetype-docx::before { content: "\f745"; } +.bi-filetype-exe::before { content: "\f746"; } +.bi-filetype-gif::before { content: "\f747"; } +.bi-filetype-heic::before { content: "\f748"; } +.bi-filetype-html::before { content: "\f749"; } +.bi-filetype-java::before { content: "\f74a"; } +.bi-filetype-jpg::before { content: "\f74b"; } +.bi-filetype-js::before { content: "\f74c"; } +.bi-filetype-jsx::before { content: "\f74d"; } +.bi-filetype-key::before { content: "\f74e"; } +.bi-filetype-m4p::before { content: "\f74f"; } +.bi-filetype-md::before { content: "\f750"; } +.bi-filetype-mdx::before { content: "\f751"; } +.bi-filetype-mov::before { content: "\f752"; } +.bi-filetype-mp3::before { content: "\f753"; } +.bi-filetype-mp4::before { content: "\f754"; } +.bi-filetype-otf::before { content: "\f755"; } +.bi-filetype-pdf::before { content: "\f756"; } +.bi-filetype-php::before { content: "\f757"; } +.bi-filetype-png::before { content: "\f758"; } +.bi-filetype-ppt-1::before { content: "\f759"; } +.bi-filetype-ppt::before { content: "\f75a"; } +.bi-filetype-psd::before { content: "\f75b"; } +.bi-filetype-py::before { content: "\f75c"; } +.bi-filetype-raw::before { content: "\f75d"; } +.bi-filetype-rb::before { content: "\f75e"; } +.bi-filetype-sass::before { content: "\f75f"; } +.bi-filetype-scss::before { content: "\f760"; } +.bi-filetype-sh::before { content: "\f761"; } +.bi-filetype-svg::before { content: "\f762"; } +.bi-filetype-tiff::before { content: "\f763"; } +.bi-filetype-tsx::before { content: "\f764"; } +.bi-filetype-ttf::before { content: "\f765"; } +.bi-filetype-txt::before { content: "\f766"; } +.bi-filetype-wav::before { content: "\f767"; } +.bi-filetype-woff::before { content: "\f768"; } +.bi-filetype-xls-1::before { content: "\f769"; } +.bi-filetype-xls::before { content: "\f76a"; } +.bi-filetype-xml::before { content: "\f76b"; } +.bi-filetype-yml::before { content: "\f76c"; } +.bi-heart-arrow::before { content: "\f76d"; } +.bi-heart-pulse-fill::before { content: "\f76e"; } +.bi-heart-pulse::before { content: "\f76f"; } +.bi-heartbreak-fill::before { content: "\f770"; } +.bi-heartbreak::before { content: "\f771"; } +.bi-hearts::before { content: "\f772"; } +.bi-hospital-fill::before { content: "\f773"; } +.bi-hospital::before { content: "\f774"; } +.bi-house-heart-fill::before { content: "\f775"; } +.bi-house-heart::before { content: "\f776"; } +.bi-incognito::before { content: "\f777"; } +.bi-magnet-fill::before { content: "\f778"; } +.bi-magnet::before { content: "\f779"; } +.bi-person-heart::before { content: "\f77a"; } +.bi-person-hearts::before { content: "\f77b"; } +.bi-phone-flip::before { content: "\f77c"; } +.bi-plugin::before { content: "\f77d"; } +.bi-postage-fill::before { content: "\f77e"; } +.bi-postage-heart-fill::before { content: "\f77f"; } +.bi-postage-heart::before { content: "\f780"; } +.bi-postage::before { content: "\f781"; } +.bi-postcard-fill::before { content: "\f782"; } +.bi-postcard-heart-fill::before { content: "\f783"; } +.bi-postcard-heart::before { content: "\f784"; } +.bi-postcard::before { content: "\f785"; } +.bi-search-heart-fill::before { content: "\f786"; } +.bi-search-heart::before { content: "\f787"; } +.bi-sliders2-vertical::before { content: "\f788"; } +.bi-sliders2::before { content: "\f789"; } +.bi-trash3-fill::before { content: "\f78a"; } +.bi-trash3::before { content: "\f78b"; } +.bi-valentine::before { content: "\f78c"; } +.bi-valentine2::before { content: "\f78d"; } +.bi-wrench-adjustable-circle-fill::before { content: "\f78e"; } +.bi-wrench-adjustable-circle::before { content: "\f78f"; } +.bi-wrench-adjustable::before { content: "\f790"; } +.bi-filetype-json::before { content: "\f791"; } +.bi-filetype-pptx::before { content: "\f792"; } +.bi-filetype-xlsx::before { content: "\f793"; } +.bi-1-circle-1::before { content: "\f794"; } +.bi-1-circle-fill-1::before { content: "\f795"; } +.bi-1-circle-fill::before { content: "\f796"; } +.bi-1-circle::before { content: "\f797"; } +.bi-1-square-fill::before { content: "\f798"; } +.bi-1-square::before { content: "\f799"; } +.bi-2-circle-1::before { content: "\f79a"; } +.bi-2-circle-fill-1::before { content: "\f79b"; } +.bi-2-circle-fill::before { content: "\f79c"; } +.bi-2-circle::before { content: "\f79d"; } +.bi-2-square-fill::before { content: "\f79e"; } +.bi-2-square::before { content: "\f79f"; } +.bi-3-circle-1::before { content: "\f7a0"; } +.bi-3-circle-fill-1::before { content: "\f7a1"; } +.bi-3-circle-fill::before { content: "\f7a2"; } +.bi-3-circle::before { content: "\f7a3"; } +.bi-3-square-fill::before { content: "\f7a4"; } +.bi-3-square::before { content: "\f7a5"; } +.bi-4-circle-1::before { content: "\f7a6"; } +.bi-4-circle-fill-1::before { content: "\f7a7"; } +.bi-4-circle-fill::before { content: "\f7a8"; } +.bi-4-circle::before { content: "\f7a9"; } +.bi-4-square-fill::before { content: "\f7aa"; } +.bi-4-square::before { content: "\f7ab"; } +.bi-5-circle-1::before { content: "\f7ac"; } +.bi-5-circle-fill-1::before { content: "\f7ad"; } +.bi-5-circle-fill::before { content: "\f7ae"; } +.bi-5-circle::before { content: "\f7af"; } +.bi-5-square-fill::before { content: "\f7b0"; } +.bi-5-square::before { content: "\f7b1"; } +.bi-6-circle-1::before { content: "\f7b2"; } +.bi-6-circle-fill-1::before { content: "\f7b3"; } +.bi-6-circle-fill::before { content: "\f7b4"; } +.bi-6-circle::before { content: "\f7b5"; } +.bi-6-square-fill::before { content: "\f7b6"; } +.bi-6-square::before { content: "\f7b7"; } +.bi-7-circle-1::before { content: "\f7b8"; } +.bi-7-circle-fill-1::before { content: "\f7b9"; } +.bi-7-circle-fill::before { content: "\f7ba"; } +.bi-7-circle::before { content: "\f7bb"; } +.bi-7-square-fill::before { content: "\f7bc"; } +.bi-7-square::before { content: "\f7bd"; } +.bi-8-circle-1::before { content: "\f7be"; } +.bi-8-circle-fill-1::before { content: "\f7bf"; } +.bi-8-circle-fill::before { content: "\f7c0"; } +.bi-8-circle::before { content: "\f7c1"; } +.bi-8-square-fill::before { content: "\f7c2"; } +.bi-8-square::before { content: "\f7c3"; } +.bi-9-circle-1::before { content: "\f7c4"; } +.bi-9-circle-fill-1::before { content: "\f7c5"; } +.bi-9-circle-fill::before { content: "\f7c6"; } +.bi-9-circle::before { content: "\f7c7"; } +.bi-9-square-fill::before { content: "\f7c8"; } +.bi-9-square::before { content: "\f7c9"; } +.bi-airplane-engines-fill::before { content: "\f7ca"; } +.bi-airplane-engines::before { content: "\f7cb"; } +.bi-airplane-fill::before { content: "\f7cc"; } +.bi-airplane::before { content: "\f7cd"; } +.bi-alexa::before { content: "\f7ce"; } +.bi-alipay::before { content: "\f7cf"; } +.bi-android::before { content: "\f7d0"; } +.bi-android2::before { content: "\f7d1"; } +.bi-box-fill::before { content: "\f7d2"; } +.bi-box-seam-fill::before { content: "\f7d3"; } +.bi-browser-chrome::before { content: "\f7d4"; } +.bi-browser-edge::before { content: "\f7d5"; } +.bi-browser-firefox::before { content: "\f7d6"; } +.bi-browser-safari::before { content: "\f7d7"; } +.bi-c-circle-1::before { content: "\f7d8"; } +.bi-c-circle-fill-1::before { content: "\f7d9"; } +.bi-c-circle-fill::before { content: "\f7da"; } +.bi-c-circle::before { content: "\f7db"; } +.bi-c-square-fill::before { content: "\f7dc"; } +.bi-c-square::before { content: "\f7dd"; } +.bi-capsule-pill::before { content: "\f7de"; } +.bi-capsule::before { content: "\f7df"; } +.bi-car-front-fill::before { content: "\f7e0"; } +.bi-car-front::before { content: "\f7e1"; } +.bi-cassette-fill::before { content: "\f7e2"; } +.bi-cassette::before { content: "\f7e3"; } +.bi-cc-circle-1::before { content: "\f7e4"; } +.bi-cc-circle-fill-1::before { content: "\f7e5"; } +.bi-cc-circle-fill::before { content: "\f7e6"; } +.bi-cc-circle::before { content: "\f7e7"; } +.bi-cc-square-fill::before { content: "\f7e8"; } +.bi-cc-square::before { content: "\f7e9"; } +.bi-cup-hot-fill::before { content: "\f7ea"; } +.bi-cup-hot::before { content: "\f7eb"; } +.bi-currency-rupee::before { content: "\f7ec"; } +.bi-dropbox::before { content: "\f7ed"; } +.bi-escape::before { content: "\f7ee"; } +.bi-fast-forward-btn-fill::before { content: "\f7ef"; } +.bi-fast-forward-btn::before { content: "\f7f0"; } +.bi-fast-forward-circle-fill::before { content: "\f7f1"; } +.bi-fast-forward-circle::before { content: "\f7f2"; } +.bi-fast-forward-fill::before { content: "\f7f3"; } +.bi-fast-forward::before { content: "\f7f4"; } +.bi-filetype-sql::before { content: "\f7f5"; } +.bi-fire::before { content: "\f7f6"; } +.bi-google-play::before { content: "\f7f7"; } +.bi-h-circle-1::before { content: "\f7f8"; } +.bi-h-circle-fill-1::before { content: "\f7f9"; } +.bi-h-circle-fill::before { content: "\f7fa"; } +.bi-h-circle::before { content: "\f7fb"; } +.bi-h-square-fill::before { content: "\f7fc"; } +.bi-h-square::before { content: "\f7fd"; } +.bi-indent::before { content: "\f7fe"; } +.bi-lungs-fill::before { content: "\f7ff"; } +.bi-lungs::before { content: "\f800"; } +.bi-microsoft-teams::before { content: "\f801"; } +.bi-p-circle-1::before { content: "\f802"; } +.bi-p-circle-fill-1::before { content: "\f803"; } +.bi-p-circle-fill::before { content: "\f804"; } +.bi-p-circle::before { content: "\f805"; } +.bi-p-square-fill::before { content: "\f806"; } +.bi-p-square::before { content: "\f807"; } +.bi-pass-fill::before { content: "\f808"; } +.bi-pass::before { content: "\f809"; } +.bi-prescription::before { content: "\f80a"; } +.bi-prescription2::before { content: "\f80b"; } +.bi-r-circle-1::before { content: "\f80c"; } +.bi-r-circle-fill-1::before { content: "\f80d"; } +.bi-r-circle-fill::before { content: "\f80e"; } +.bi-r-circle::before { content: "\f80f"; } +.bi-r-square-fill::before { content: "\f810"; } +.bi-r-square::before { content: "\f811"; } +.bi-repeat-1::before { content: "\f812"; } +.bi-repeat::before { content: "\f813"; } +.bi-rewind-btn-fill::before { content: "\f814"; } +.bi-rewind-btn::before { content: "\f815"; } +.bi-rewind-circle-fill::before { content: "\f816"; } +.bi-rewind-circle::before { content: "\f817"; } +.bi-rewind-fill::before { content: "\f818"; } +.bi-rewind::before { content: "\f819"; } +.bi-train-freight-front-fill::before { content: "\f81a"; } +.bi-train-freight-front::before { content: "\f81b"; } +.bi-train-front-fill::before { content: "\f81c"; } +.bi-train-front::before { content: "\f81d"; } +.bi-train-lightrail-front-fill::before { content: "\f81e"; } +.bi-train-lightrail-front::before { content: "\f81f"; } +.bi-truck-front-fill::before { content: "\f820"; } +.bi-truck-front::before { content: "\f821"; } +.bi-ubuntu::before { content: "\f822"; } +.bi-unindent::before { content: "\f823"; } +.bi-unity::before { content: "\f824"; } +.bi-universal-access-circle::before { content: "\f825"; } +.bi-universal-access::before { content: "\f826"; } +.bi-virus::before { content: "\f827"; } +.bi-virus2::before { content: "\f828"; } +.bi-wechat::before { content: "\f829"; } +.bi-yelp::before { content: "\f82a"; } +.bi-sign-stop-fill::before { content: "\f82b"; } +.bi-sign-stop-lights-fill::before { content: "\f82c"; } +.bi-sign-stop-lights::before { content: "\f82d"; } +.bi-sign-stop::before { content: "\f82e"; } +.bi-sign-turn-left-fill::before { content: "\f82f"; } +.bi-sign-turn-left::before { content: "\f830"; } +.bi-sign-turn-right-fill::before { content: "\f831"; } +.bi-sign-turn-right::before { content: "\f832"; } +.bi-sign-turn-slight-left-fill::before { content: "\f833"; } +.bi-sign-turn-slight-left::before { content: "\f834"; } +.bi-sign-turn-slight-right-fill::before { content: "\f835"; } +.bi-sign-turn-slight-right::before { content: "\f836"; } +.bi-sign-yield-fill::before { content: "\f837"; } +.bi-sign-yield::before { content: "\f838"; } +.bi-ev-station-fill::before { content: "\f839"; } +.bi-ev-station::before { content: "\f83a"; } +.bi-fuel-pump-diesel-fill::before { content: "\f83b"; } +.bi-fuel-pump-diesel::before { content: "\f83c"; } +.bi-fuel-pump-fill::before { content: "\f83d"; } +.bi-fuel-pump::before { content: "\f83e"; } +.bi-0-circle-fill::before { content: "\f83f"; } +.bi-0-circle::before { content: "\f840"; } +.bi-0-square-fill::before { content: "\f841"; } +.bi-0-square::before { content: "\f842"; } +.bi-rocket-fill::before { content: "\f843"; } +.bi-rocket-takeoff-fill::before { content: "\f844"; } +.bi-rocket-takeoff::before { content: "\f845"; } +.bi-rocket::before { content: "\f846"; } +.bi-stripe::before { content: "\f847"; } +.bi-subscript::before { content: "\f848"; } +.bi-superscript::before { content: "\f849"; } +.bi-trello::before { content: "\f84a"; } +.bi-envelope-at-fill::before { content: "\f84b"; } +.bi-envelope-at::before { content: "\f84c"; } +.bi-regex::before { content: "\f84d"; } +.bi-text-wrap::before { content: "\f84e"; } +.bi-sign-dead-end-fill::before { content: "\f84f"; } +.bi-sign-dead-end::before { content: "\f850"; } +.bi-sign-do-not-enter-fill::before { content: "\f851"; } +.bi-sign-do-not-enter::before { content: "\f852"; } +.bi-sign-intersection-fill::before { content: "\f853"; } +.bi-sign-intersection-side-fill::before { content: "\f854"; } +.bi-sign-intersection-side::before { content: "\f855"; } +.bi-sign-intersection-t-fill::before { content: "\f856"; } +.bi-sign-intersection-t::before { content: "\f857"; } +.bi-sign-intersection-y-fill::before { content: "\f858"; } +.bi-sign-intersection-y::before { content: "\f859"; } +.bi-sign-intersection::before { content: "\f85a"; } +.bi-sign-merge-left-fill::before { content: "\f85b"; } +.bi-sign-merge-left::before { content: "\f85c"; } +.bi-sign-merge-right-fill::before { content: "\f85d"; } +.bi-sign-merge-right::before { content: "\f85e"; } +.bi-sign-no-left-turn-fill::before { content: "\f85f"; } +.bi-sign-no-left-turn::before { content: "\f860"; } +.bi-sign-no-parking-fill::before { content: "\f861"; } +.bi-sign-no-parking::before { content: "\f862"; } +.bi-sign-no-right-turn-fill::before { content: "\f863"; } +.bi-sign-no-right-turn::before { content: "\f864"; } +.bi-sign-railroad-fill::before { content: "\f865"; } +.bi-sign-railroad::before { content: "\f866"; } +.bi-building-add::before { content: "\f867"; } +.bi-building-check::before { content: "\f868"; } +.bi-building-dash::before { content: "\f869"; } +.bi-building-down::before { content: "\f86a"; } +.bi-building-exclamation::before { content: "\f86b"; } +.bi-building-fill-add::before { content: "\f86c"; } +.bi-building-fill-check::before { content: "\f86d"; } +.bi-building-fill-dash::before { content: "\f86e"; } +.bi-building-fill-down::before { content: "\f86f"; } +.bi-building-fill-exclamation::before { content: "\f870"; } +.bi-building-fill-gear::before { content: "\f871"; } +.bi-building-fill-lock::before { content: "\f872"; } +.bi-building-fill-slash::before { content: "\f873"; } +.bi-building-fill-up::before { content: "\f874"; } +.bi-building-fill-x::before { content: "\f875"; } +.bi-building-fill::before { content: "\f876"; } +.bi-building-gear::before { content: "\f877"; } +.bi-building-lock::before { content: "\f878"; } +.bi-building-slash::before { content: "\f879"; } +.bi-building-up::before { content: "\f87a"; } +.bi-building-x::before { content: "\f87b"; } +.bi-buildings-fill::before { content: "\f87c"; } +.bi-buildings::before { content: "\f87d"; } +.bi-bus-front-fill::before { content: "\f87e"; } +.bi-bus-front::before { content: "\f87f"; } +.bi-ev-front-fill::before { content: "\f880"; } +.bi-ev-front::before { content: "\f881"; } +.bi-globe-americas::before { content: "\f882"; } +.bi-globe-asia-australia::before { content: "\f883"; } +.bi-globe-central-south-asia::before { content: "\f884"; } +.bi-globe-europe-africa::before { content: "\f885"; } +.bi-house-add-fill::before { content: "\f886"; } +.bi-house-add::before { content: "\f887"; } +.bi-house-check-fill::before { content: "\f888"; } +.bi-house-check::before { content: "\f889"; } +.bi-house-dash-fill::before { content: "\f88a"; } +.bi-house-dash::before { content: "\f88b"; } +.bi-house-down-fill::before { content: "\f88c"; } +.bi-house-down::before { content: "\f88d"; } +.bi-house-exclamation-fill::before { content: "\f88e"; } +.bi-house-exclamation::before { content: "\f88f"; } +.bi-house-gear-fill::before { content: "\f890"; } +.bi-house-gear::before { content: "\f891"; } +.bi-house-lock-fill::before { content: "\f892"; } +.bi-house-lock::before { content: "\f893"; } +.bi-house-slash-fill::before { content: "\f894"; } +.bi-house-slash::before { content: "\f895"; } +.bi-house-up-fill::before { content: "\f896"; } +.bi-house-up::before { content: "\f897"; } +.bi-house-x-fill::before { content: "\f898"; } +.bi-house-x::before { content: "\f899"; } +.bi-person-add::before { content: "\f89a"; } +.bi-person-down::before { content: "\f89b"; } +.bi-person-exclamation::before { content: "\f89c"; } +.bi-person-fill-add::before { content: "\f89d"; } +.bi-person-fill-check::before { content: "\f89e"; } +.bi-person-fill-dash::before { content: "\f89f"; } +.bi-person-fill-down::before { content: "\f8a0"; } +.bi-person-fill-exclamation::before { content: "\f8a1"; } +.bi-person-fill-gear::before { content: "\f8a2"; } +.bi-person-fill-lock::before { content: "\f8a3"; } +.bi-person-fill-slash::before { content: "\f8a4"; } +.bi-person-fill-up::before { content: "\f8a5"; } +.bi-person-fill-x::before { content: "\f8a6"; } +.bi-person-gear::before { content: "\f8a7"; } +.bi-person-lock::before { content: "\f8a8"; } +.bi-person-slash::before { content: "\f8a9"; } +.bi-person-up::before { content: "\f8aa"; } +.bi-scooter::before { content: "\f8ab"; } +.bi-taxi-front-fill::before { content: "\f8ac"; } +.bi-taxi-front::before { content: "\f8ad"; } +.bi-amd::before { content: "\f8ae"; } +.bi-database-add::before { content: "\f8af"; } +.bi-database-check::before { content: "\f8b0"; } +.bi-database-dash::before { content: "\f8b1"; } +.bi-database-down::before { content: "\f8b2"; } +.bi-database-exclamation::before { content: "\f8b3"; } +.bi-database-fill-add::before { content: "\f8b4"; } +.bi-database-fill-check::before { content: "\f8b5"; } +.bi-database-fill-dash::before { content: "\f8b6"; } +.bi-database-fill-down::before { content: "\f8b7"; } +.bi-database-fill-exclamation::before { content: "\f8b8"; } +.bi-database-fill-gear::before { content: "\f8b9"; } +.bi-database-fill-lock::before { content: "\f8ba"; } +.bi-database-fill-slash::before { content: "\f8bb"; } +.bi-database-fill-up::before { content: "\f8bc"; } +.bi-database-fill-x::before { content: "\f8bd"; } +.bi-database-fill::before { content: "\f8be"; } +.bi-database-gear::before { content: "\f8bf"; } +.bi-database-lock::before { content: "\f8c0"; } +.bi-database-slash::before { content: "\f8c1"; } +.bi-database-up::before { content: "\f8c2"; } +.bi-database-x::before { content: "\f8c3"; } +.bi-database::before { content: "\f8c4"; } +.bi-houses-fill::before { content: "\f8c5"; } +.bi-houses::before { content: "\f8c6"; } +.bi-nvidia::before { content: "\f8c7"; } +.bi-person-vcard-fill::before { content: "\f8c8"; } +.bi-person-vcard::before { content: "\f8c9"; } +.bi-sina-weibo::before { content: "\f8ca"; } +.bi-tencent-qq::before { content: "\f8cb"; } +.bi-wikipedia::before { content: "\f8cc"; } diff --git a/docs/column_api_files/libs/bootstrap/bootstrap-icons.woff b/docs/column_api_files/libs/bootstrap/bootstrap-icons.woff new file mode 100644 index 0000000000000000000000000000000000000000..18d21d457558d4dc2e231a8f6ee585fada9c6bab GIT binary patch literal 164168 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%0D{F7My?sp4b~Pd<-wWT`E3Pn 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%0Aub6*Q4?Lh?RzF3+=+IGMyc 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

              V5sL;~RGzKe44( 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࿣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

              E0Q>dwTHGr5Eml?v4A4cqksyc*{&0*B}<_UWD zV7m)9{18SRG&tIxc?GdkB0fCQ7Fsid?;mS)cT3`(T2&XO}VK z?JljaTNM7d$yrfSAk=j{c=z|AUs&;p=zZfo9W936)vjfkvXz&1@{O#{jH2z+yG72{ zmAWz)51m*CAqQb4gHN=SorKpKe9_Lf%50joijC?SDRRZKwJWMjOxsjibK{50rxswv z5p|A;FUj(eRP@k~l{(A1Und$Aq!fyB{_L6jVwmxD2@GeIR-U!aoYoc~U&va2PyXxQ z>i~?9wS+3EAHbso=}(61aEC5)R<_nVA8n$uw`~GCR!KbUpqc3V`y29sRqwC=r(bUq zwCuw%%9*R|UM~XMU555R3tQXci8i0w8qgy{;Qr9`^z2)TM=Eu#_uOu&{By)12 z84}??gZB(Cd!-W5|Dv4ghOxs!?W6qvHHxC3zBZS9frjJu6~*A|D}VJDa_TQ_-oHQ} zB%na2H%HNbO%^_CF4sV$Pg(O)7p*#cWsu5TrGZSJy5`j?+IjfhAiB9s1K~PF!e^C% za&z7W)P!*N1`=nywiia9YX?@%sT(-g@tpB}UWk4!7??FDZ(v`?h2!172>jeTuxk!z z;9kdv;(`FhzooL#0Fvj@##?U!=nf3AsSZ{el%hzg{W%b6@$DGgDV<8x}F!N zsNCV)Vcegy2H7D>kSU1H6%_&t!G@qhi1^X=p!A{iVeX>3h9f27GVJnm`=BT!5b^}U zfJ8$~u8_es=tT%>2u{e$5G)`nAUt`H8Da-HfsjM8AbOBBh#;gL;tP3z;6sujYLGby zH>4io3b}*;AVm-}$R0!j((i`$`c33(%a3oOa6GcZ4YDKr^~2=!Kidesz}P3C`9kl8 zV*HwXaMVq%gUFb&?xkK-_29}rm77WjnK5br0<>%4MYQVE4ZGm8l<~2LOB_ zfhK_~@k#<)0z(2H5Q#q+y-$CofuIPY0iqN|str~k^TQb+XoBeaUYJF44{{H14`uDM zUnyNpUFjgGp0S?Uo~fQif@u3t`ce8Z_aa>fkurQaa5>bzFM1Vt^>l@C6@6ubpbG+o zya+`N#R+{GiX{;V7);)0zOuVIxgx*Hy3)H^yAr%=zw*6$xWd0mzEZoIyW+m8zjD30 zyaHSmU720&T}fQ^+oPcp$iB9aC6L2$PnR-Cm+{w@l+%{B;R{1wAfS?`w?{FIAuArW zmun$1q^$j{D_32-vOs08(n4lPT^q3~cV2wAfNn3-Lbyqh2v(Udx94p^O)PeAAps?| zNg9D`=U45iTR1oIK*>ImqTqu0S$pyp_D$TMN%xY0;NJONdq4~KCjQT4JV^|2#QY$P zz>7r$hc+omQUP2tzW}4~;t;{3O;(j;2B&?EV5^LCoRA~7Ct68~R+ZPP49~5M3R;$* zQV)|}mNMZ>w4LY3m6=*#g=u?HiO?2=&&t{rH!ldojJ@bY048BvvgF0_3yd&LFUl?& zlkhrOz2fQxewd*bZ5Q26n2W4naoz$aOxKILi*_gcLe{sqdqEs#>ILWmh=&2AfQi5e zU_3Aym`o>&UmU$a57W4%2%r%UFO*d)u2|rO8QjtY(DjCy%5oQTf8z#cEwICsU{f%i zTdLn!zuA6M{T2zJ?G5h>?~C1)buC6p$>q08aQlKNED-ht!+=G@Om67{0Ks7)ks%2o zpF`q+vVh{`1!kBX>;y&*%Yx~_)?k9Lc9<{h0frAthN;2kVBD~Jm@DiO27nd8%wT&k z30S`$8qWKX*H+5!M{zv!2MzLv{f!6YjE8K*!Z5B0=*H;%P)uXU_ecHYdWcLZ>p$y_ zR`0J|Q~9a%keO1~N34yW@84ac`^oeW?ouQls9cr%@%Er5@4NSqxF)p^7#-AJts)ye z=PsUWvhRTCLBZ9mA9)Y^F79R0!$9Cc@6|5S2Do?eFO%^HFb*QF1`z~7EI=GUQu2Vp zLCMtu(hN9&cz|TJ0p^3Wh6whKIH&bdVn3p_#%Q%Mt&Z@#j;P@6u_?DOne9Onu|&Ho zj>6%oYgUAI5EYQND12_jZom0j7-1Yl2LzafagUJi$6qrdG=nJnXw1UvNA&iqulW&% zNaLZ~3v(S2+|Rq_MCb-l_tEZ!Uyk_hcVCMmOoIS@0EsY(D2YUg2#I)!Xo+ON2>yQb zH9bP(nIeQnBD`osZNK807h&*B6GGP?W;VjT&kf-|$hu}nC?Td0I?q&pvHr6CrTQxp zLfapXl-Ruy*L|cMUP3Mp+OI_sfruvr1|k|^@=O;32n`F33{43A92zGv0@zQ!W=7Z{ zP7vgXEQB6n4IzkVNBANh5cr5>gc@QF!HuX#xFRkQ07MbO46%ohK=fOqy?o6OV=n!g zF~KeMtwAcizvde`&385*B+(}cD4FQ3Q4BtkrHoq3H4z!))JW?xR;R2?Qdz4sks0LG z$gDD+r`%1VTgx;NZe%Bmp4QS%tNQSH7y}?M0m>7f-c(4d3(5NQ8QAjPBSb$P^a0n;S zsHwhTPECuEVJlU19APB3PF;>wP-W68mC7xZ3tD8F`Y0*A_}1iuitPkP4*k?5D^%Nq zO1L0jYL>w+rFl{qYV1KLTx2ZC#Xz1CKgkHy^q}m_HLUlc;I}5g@E*N}Mx+le7g1o6#n^Q zQiTj^DHW5vP=gy9|H2+gQwHu7?yuabS(EHgCFm4X=Z5ML>yhn|>QThMphv1ts_)Y- zgKG*>(k{PVrnXOtLIa^sPz-1^)Z~WFzbHsDL^eb@L^?zf$N)%5o@9pFK~JFM&@8AP zbPXy9ZHM|oAE5ZqWT+Z+4$2L!hq^*9p#W$R)C{@@m4Nnpp<%I<##kz{lqGoN78~T2 z_#1wcGX&d+NMf84(3aDCp_qImUl{e0>moAAsgu?#t6o?+rSekgA~VUWlUXY}U${F( z_mb%%+{sQ_RDqRy@peTfEx323yQsE*Gg_>Lts?yx=T4G~n(sH!#RAx@7kL-^PU3~? z!?(c2Uf3?ut#R)pU#Q`K!&r=f4c-z2u!twnsV09@SS*1pAUzw0coLnO+BfFKv`QKF z7DcD!GGedP)$a;w73;QI^O1T%f=eZZNPT6mjZl`W_epCIy`os2z>W@fpL7!B=RR5>FQr88fEM3lD zF1DYF-Ui-2-D2EE-fNs03f{Kg z`rba=;@>9Us@=}ra^Ke9y53&i0&a_L&2IN@C2sqj(aW$c*x8hgWUR8}ByIon_hx zx3UwPRMyL#dD|ir8{ON|L9=bw|Ct9~RLB+Sw#?g{G4A1vrHdhiDS*oT@ogTg?y0 zX&Yka)RmlZRa>o^!Q7hBpjF!`{Q>D!3lo7E+jWjStEmlExV8_KXhFf?thHTZ^M)|o z*oRKE$Yg-an!GW7gAuOjL)o2gGFWG=*I2#54>$Co?JnFIaIqF_%-i6E>-tc47wimP zSo=11Z-~Q9eE{7>;sd}@;0$mWI0YOB&e2)pH%4#J!!_iuH2KO|9 zg}no&*4&NU4ctvx8|-i;_!L~{p6UtfiS3E%NhGkKcd&1;Z*te#wGk=JmkpOq?Hi)- zK=>0J10D@Gxu**(3LXd<37HNV3i$!F1~evbFvIQOCvb9j7F-X$1{Z|4!+qfoaC|t@ zwZZ4$-0*t1EBq1;fEU5d;CpZhcz+NYo)9#~N>%76!LxARpzzS&6e4GOU;`Y$cq9NE z(+8oLO^{!Y2FdjindQ_E=^a&HuRKx(sq~SV<<$?b9i3m_J)#H6^bzi5C*PucaNw124r^kO@K3Y2#%t|sYljl?GP%7f}+7WsNHq*qwuqF2%SWc*#I|`{5t-T z@mVv3vOnK!upX*+UH!=aY={hTg?j_8P{HfGN6u&65bFMdy}?VUZ*5p+LL#{Ub!~uD z>wc1|Um|*P_Saz>6XqD387w8uK6)nWE#DC=E7m0jxS{2FyVXZOhFqSOcQ4{epG4k5tvW^P zZIos@g`3guQEwQ7MyfK>q&ke5t4NO(XXd*)DT?db#BX>lO55-7aRubP{iY;#tBSJo zbj1-@u;SCY`{$(V#p^BYZ*9EM`SKXTGgO|2tpg8^+s5Nqs@>vet&XNErwA0HgqZ#> zdA^?=ck)*KZN8)zyt%TIZ{MvsR!v%c&e2u0?;tKfF?!uI8Bk%*zSCAr%B)VPuZ_;l zsEszu+_NQ+wDQHQAop6@H+(-tFH^Ce!>YaLShA=mwQOPpw1<7{dyZ|n65sb`vv!%j z-r3zd*{2EnU$Rx`8}|LblADd&)mzf~4-rWPHta*;z)o}49UlP;rZ2k()UdRvOiMfY ztn`eWT}xV6T63)BnF6HEgt;m(eCrgws|G_WPH~k)*K891{`^&2X;U_q^O1Xl*_^@R zyF}5uflJj@h4VW5Vz%vhF}z{J^R}Pc837}sJeQo0`;W!}Jx0QS!nv}qM0yDZX2prq z=gZUsigkivK5XSHkyX-aP4;ryXN3ME-dOvUOSvRDHNR_B-*lZ8r=QKX$vxAW~r!1UCA*a@695sk*SCcv{v&* zHw9k$&K>+ww%%zfJf&L4s7^Q0SWQkd`5mT~2gPJTIj3)~eBnLFe=`}Xty*4^KV9na zL5s9ZMA)#lTPHX#C!36+O4vgDratGTrUpuyPfqN2taTT!VTNzk2AH;YGCBmYdqJZP zd_nzX-H|a2jbxfcyvmWtwH#_$M7*-gDXSzY5>|4;2%U5Htd#jLcFM7qhU|>m+QUBC zvHo=jky>?0F^>6bS&c0IatT5%@rOroON6Zfs&b4tRQ~;jUqK8^-W5E9I2NSs7cEub z)vm-ZF6~%Ri7*Xo;v_~ShiB&ry0Y1r{%G}VELWNKwP8prdriqaYP|pVcNl+dO!^P2 zE~=c}R|>4z66?0E|EP*_ugQghXnojxVFtFV`rjzqLv1c-h7PSR|k1>`v)Od!Thqt??dZnzL&x_QaZ{N;tS$nzHuCeXFHq`F=hbs+&JD6O4Ql+Sq72umfMe%=Elb}qj!NjI*4_~6QXmn zxvDDRu?88hH(?2@XuLDEdlnYSs|3C!PcUHcdg_6Yk~p|PobYv;Prz*Vh zq0%g|^6IU#g6}LTFw*Fa^TI@Qag?KD?^{dhwl(T^x>X{$!pE`xT`uaF0HS%)Oc`^0 zBL~p?a{h`EE3VQ~l=vBkyj9&)hDb)oi_+}XRD`xtLJt2`S?h?>l2cAfefBB`H+bNz z*R(Wq+u%b`c_~AZr1FdHLZS4`5uU>?Ephk%+RsME748WkP0~R29fhL!f%?!PhK90J zgg}9ko%|B(W1yBOV4$8zM1n16bJ?3C7xtfDyhCu;~(8QntH4B|Vg%l`0Gn!1QP{!rY2rieM-Fy51g4#TvHxCP03 zkbR{+PjHuK7Y|w*ZoV!l&t*yZg`6q43vy&ALl6^hrl0HlYLn!*`2B&&(Ofir zr{pvpXG&?FR9xREH{nZ6-fK7>clly*`Igi$wy3|H+)UaZ8(qTsQ{^s7v@-m}(n&5X zHiC$P50%U58wd9u8b$dkB*f8%XAK81BabtrH`ZKLuQ#ha5;STckNSO=&q&I5(N+>? zo83FHKz|dX6rHp(ZcS{e{k|~A+OjI;d)~{@+7HA_`O;mu8i|cP1dqJsA>%8TnuPKU z>UX`mx^HMg3QI#+T|;*vfK#kHS*gI$h(|Eb|X#_C8vZ7may_pqQ9A z7V1V9Q9JSF*HdWV&w~rY>dqaTSDT~~bgRmTALC^($?prSL?Y5{HFgL`moH)#!AFyA ztBc@_Hk+6-KK75@?6w?7kqYQK@2oAwi0HR=IUlNqGYR&BzbmwKUJMesJeZ4D{p4i* z>{0J%_m(SCGueK;EUuWFs|-(nsK#MFGgakd8&#eX8t(ZJ_&P!uoc(d`auu$_lxAv3 z+k|GtiEQJTX<`xijM-Nos=m0A{f>74&Cd@Q_4VwJQL2{K*y_$>hA!SF6LOB)PbXOL z2&#IIJFTmxj;l`Xv@ChF=MV5a)uq3$ahIv>lui3R+G`2%tF08i>qc5snz?4ON2a-$ zV9DJd=b=O`xs)ouQtX=47o*JGRpJaY!pa9FO*H{?^a3}+e?|6tk{ z8)?{T0)W50qVh&2VxHW>(vW2)qTPmH zLGRhTVB7l`7PT@^>puj}6yII1-1g*U3NGqn;bcrJEcU1Q(NNi+)?NSLSVzeU>ZB{2 z|F-3`6Qq1%tg*iHhVNXJFjJRs#ZO&DXd1zi(4Az&zLkn)i>bUnR*IKJ5#=s4W%|S5 zWu_1}Mnar1aprk0&jPaOoFhM$kJ2>UdqzLq;k)-t3z&RvG1qVno&xQ%HEderU*d8! z;pP0VrZmsbkl3@o<-O6z>qz8*?ElKCF6EMoDD|NM-Js@7!F`nnv)C}fMD)<-$To==QwoVT^@w6#&zIAJ$K zQLas3p;`NRqo+q;TAh&CWHHxmjbry6N;aZ8W>)+>Zu6Uh3)o!sPwvo~zS3bP-|WsO zD|!|JKNnogbZ@oH69zA5qRgH0&?e?&ThuOd&rEX~ry-nA!fY0eV?%BD+wVzcYW8!v zLj8c`#96S|#M+GJNW#R{+S6G%J4C=rDp|Q$n!3Qg43$9sg|&Fo$2bR&`cmc=X>bSE zg0$j?(2}%xe!)gk^1p!b{Ia|!BC98BnYz)^3wDi};2FPK)~7xO?(SNL z_P1iKAUweobiDz41LHha-0Ltq*+sFN@^+tF>gcmsv-~n7BS`t;dEy>aW0Kk z;&*CYIkJwe@7+>Ur0pW0ocCguj3`5@H^xm!+8hbqCoz-$zKKk@YN$P3G`Nd5ZwJ<&2cuw zEhqb3c+-K}eJ_~mqrD-0kz3V`^C(HKn;|{12f6p_~efO#KxBW#=yp%yogsVlHecE{*^>5sL)Za@Bi~g5LZMx=CS(AB4 zyPShCYZ=mv7b#T~K@DbVfhvl~5s2Ce2iHnCQ1~Yg*Aa44;Ad%wbAK*wYFGU$Fe5;u z;O~cmnBOh`)x>Rv<}#C(RU9Vh`J(@ZMg{*^7jtI|c2{)lx?$++n?ZhsMIL4+(uh9+ z$!jh!os(Z|cU~Ewwdud+^|^Il!E;z8rhatMUKXRaza)#c&lk2e>c?Hy4;S!H0!uY7 zItzU4`nDW=7ePW-Rd;?nq1L7qUa{yqUwBq9p6&(EP{y%gp{f$^CiCXXe^Ss+_$lxjN zl^WH7YiC&{!weG0bE9Q)DapyswB)mm(l92E*+Ku+29{w0apk!klC(EE58ZvEXl142 zF|pL8{$cQWHfY=S15Y9ixOXd?D!Nj|+R`yq5EQ1Mthb?Ez+K7^tni6;j>*_=r)o)9 zY5uOH9WN_Tr(n;zh_ih2Z5{GPXR^~5En_0%8njTtVWP^gGh=|pNAbzo{QOp-6=Uh1 zk>W*XW;`8sS$^e|)5ztZKSA^#@`O5@U8I?MV@J$(?rPNURGU*8(h3}yF?~D&KTIx6 z79Xi-6HOV}mx&(DGM08Oca_=BcvKol<@R|i&D?jWWHOChDl^DxTf{GKkvXUsmhP~w zk0`d%uBP_1)+%GnDjyJNr(P8|Bylp)DIIXvFcU^jQIX{oDi3)@qNNIX!#&Q|eb;h+ zGFXr0s9I)U|D>>`*8PIoc#sD&%*l2Vu&#CfVY`+xEUmU-W<_C=(OMYmc80h+^qeIcr82k6R%7Rd{XXJvn~BJ0l2(~p4fy(q@{bNt>Mj% zJpt=O)u`;exPq+Gq>>m|C!nC_PIFGSedPn8W+HFe!n^ga(!3r9WoOtGNKzdeOI)Q$ zrX5@VMbLMv%b7UAjk|7(!PmqtON466?_+oHKrVf$2HB~_(lBz<^_AucRRlN%WJ~6u#vZLa_&P|fvJE|uBl#6&C zT9Wr+#2>K0d{rUi9%+3N4)QcrJVnmFNQw;uHKS$JPcxvVSoLM~>4bkWET2Axtf*vYm&R|S<;`g?Kf`BpXFhIGq$-s(-NJokGZ z88?%@RT9pPEJpiITArZXL<=RBk2JDIMq-w7n9KfLJ8_nAs6;iVr$m`7?8z6c=OI(L zq&TDY614AMc?M7_>k*xYWq$G4=&Z45+A3^D1-pIvV;KJevjXc&RM(d3Y6KAzF@$hx zZD(U$O?i2-{cThipshEl@yT!Ghj%}9r48jTE+tmNA)n!M5~AJft(^^{2FX9HM4xO$=QF%>B}47 z@g`u^`Gd+EEX_M=+g{yUQ*4d*^&u+o>8}ZERln0X>kqXyl8k6CT1P&fdmsOJiTIwV zs$`BO$kfUlsJBGaF!IW@dgo_?VPLht5#edPE{pFp>e+;zRCU47B)F+nHqo0Z!^QKx z?e#kyVNUNY`joE$a<$vlV}#WrImtO@o=Su~p5XQB5BQe#i@=zY#B!3xYLPz_DF(I# zf@|two$6kT?`(K7{fRw)_vp%|3y6zB|om5%;NO3SJcO2X^;Cc>sjn%~sGc;uTXo1iTe zT<8~hb6X#h=IaL>M-vBM8!1mc#{Bqe$0)O`UB!%qq+HlHHxnwS&d~gif*bZ&f7n!T z)s$&?{&?p!k~1sYxUceB^ew@?-kSrKs$sqi7a9D>2+YLUd~!`qCR_T+4Vt@<@4~?= z)nrS|As=`~Z)VnNnq;zEOg%}94sH~dmvnUt83o4|`1tG;rVCC$JQXn%OOc)9B=^)J zFCVLHvNakGBegag+0T;1zSH>z>Vut2sCx-zNf^M**HyyTTXDM^i`o3N^>2SuxYSv_ zgt5h-vP|4l_`=03J6IRVIp7HXemNT}xIny$Ubc*f&}tO1*8c8oM5pu;$XnqEL&D4W zO9pAB*C@lmS zme~FQ{9te3ro)$-<8`>GhiJr*Kbh%|4tk5+ghyQ4a7rkyV8i=07)IV z5lKAgEnFeo>3`;2kTTW#;c!}WGzVz7=nV4nNayP!1oKH9=mS);iiV8&GbifRL67Q|Q`TNQ`3*v89@Wm{@Oo2XjL zpjGS)CPP)GG4KAdrK2`;+XNE)4MfxUs<3tPF)SZZo%^Z)En>#_6ECZwkN?^I&>jqbgA=!w)`cNvb{NI$J;TF zxh3;zuJjs4W6}D!>XsjE@2r%u-)%;|epVUNbQb%Ooqu|ESw>;8>c#y<1Gj0ifl_KA5yxqrz|+ZFRT`gJ{NUU1k||@1 zS&hmk*+$DP&)Q2rYfD4Nz_c{ak{c@k)1U14_q7YqkJ3!#Js>=i6UG=gn(gb<`uz44 zJ}ED@p?V%>RF=x5H)keDCyKT1Nue|`@quJ9{{x$A_MBh3MtSe z0|BCiU&R0cQJzQ^p?S27#Vqn)2Y@vi?a#ktHUeMyO8g7pCmCYIFR}tx82q22M(I)%@;T0bhs!K08AL6g2`1~m zZEcyM&%~y&kgVkX*{MtyQ;*;s9jNUByNxb)&@&NE&*%44y#wq_4=Hho+3vezb8}+C zjmDjtFadn?rcG*}gol@jmxSuMkE=z#OjJK-Cthh)`_mG2q+M{V?Qv0?Nb?gsth!83 z3J!Yp#yIHG^HZ_2G;y5R`()As?af7|GShjdtqm-R5Ts`5#eh&P%Lzyl?~(jcyQN`C zZk+l~t^{ z)OJ#r362#>61f(4X%Z5iCs1=~IHRpauPD!g8-~nd!F2BVvV4hx*2hoSe7}y2otG24 zufu@`feCBJV37vRej0h+Gyl&Y+vWZ=Ieh&kG=1oQ@z1}I8n*N$W6|sAv(ht}*LMY) zM!%a>_fEZ)_NAK{>e-vL_)i)eH*Tdd2AkR~=~`!m5nADgFhzXIg0! z-4V4 zBejN}6Ef8f2OYnunda-l)eL7(K4g>K@wPJ-e0IY9>Tg7u6bl00#YAPZ=P_8)W8D@^ z{L~>YLw%CH5W{=L$~jr5;YDx<+7m(onMURsPg*s>9+R54zmkP9D~>n02n(vR4bNs* zP2Czu>pod6BAWNykYL+ut>}o)ZUe^S2f_MutQ!ri9`EV(Wc=1WHgAFhIrelJZtRr* zB;iNha8g$+)QQ?+cfEBCGNf+k*p74Y!eW(cX7NJCQLNT3M>TOD08A@dGfuU5x#Wms z&1Kp=MYCNek1$giNK(G5%}4*9fw|6Q#| z8=GF<%gzyfa3@b-WSaz3W6U!3uoPEeYb4>8-M9_6$lN*Q=QJ2C5Z79+XIyFsbdeIj z0l&g3+vRD_NPV|@;WgB%weBmh z;{;Q_@AemVUz&I#25bgw4#zvaSHVq38natnwZLR~I#rT$8FcZ3p~!ejd7>Tjeqj2? zNkRNYL*e3MYK;Ft?6$);s3jEEWP`RqCMQqR`z7l=|Lur!ZQ!VKV#-GL?9J=rWxBk- zbhZW-z11}mQx@32smm2pT;!q-j(*mFGm9vTGZ~0>!k%fgVVu6rJXv$v!%f>G_GfhR zMWY`v-wmZAaRP=TDW5S`e6Y(22e4ESXJyR{?3k~@N2sSq7g>ckMrh3veX;rXu74fs z6ZywBsVFmGB!9n4+L0qSqtah>Jn_t+Ub*!hmlka(+txMn(PHj)bi%g|%&4)_+(h?y z2MP~QT6)?&*GOqRL)96x<%N0#MxDT1YWu*6JBxxLl+_NC-LWQMP%`-a+k1fz^;+@; zj7~9IQ&=RyZ!`z1P&qklr;f>?*5!CBF=+E_BBGY3)G@WHAFj{U3kF=*PQdF7 zTtDJBA5)6D?Bl{rgntr0R(G^ES=<+lztqU~mR0e{r8`$<2Q=`ih&oEdPsTrA;@=vW z^lMoCeufiy((B5;gT!FG3*|Cc`%kwd<{9(Aj~41v1lp*mra*jNkzQOf*S9 zh^=$76){?gGKB06VFK(;1Gjc6ej|SEWn0{Y1Fn;Mv)j_w?Cp6+ZThWjdpi7E_`Lyj zTXA+%+E%+Dy_MepqOh|$9_wxk8|}*~BDDA$JNl3{dsquNPD={ar zmKb|E#n6gr!t99lh%Gmj0?zcoMw~?a$+mpnTrAL2)k{yg(BM?pxNZ9(&(iDYjID)K N7Xi?h+IjWj{{hmn!3F>T literal 0 HcmV?d00001 diff --git a/docs/column_api_files/libs/bootstrap/bootstrap.min.css b/docs/column_api_files/libs/bootstrap/bootstrap.min.css new file mode 100644 index 0000000..e941a7f --- /dev/null +++ b/docs/column_api_files/libs/bootstrap/bootstrap.min.css @@ -0,0 +1,10 @@ +/*! + * Bootstrap v5.1.3 (https://getbootstrap.com/) + * Copyright 2011-2021 The Bootstrap Authors + * Copyright 2011-2021 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + */@import"https://fonts.googleapis.com/css2?family=Open+Sans:ital,wght@0,400;0,700;1,400;1,700&display=swap";:root{--bs-blue: #446e9b;--bs-indigo: #6610f2;--bs-purple: #6f42c1;--bs-pink: #e83e8c;--bs-red: #cd0200;--bs-orange: #fd7e14;--bs-yellow: #d47500;--bs-green: #3cb521;--bs-teal: #20c997;--bs-cyan: #3399f3;--bs-white: #fff;--bs-gray: #777;--bs-gray-dark: #333;--bs-gray-100: #f8f9fa;--bs-gray-200: #eee;--bs-gray-300: #dee2e6;--bs-gray-400: #ced4da;--bs-gray-500: #999;--bs-gray-600: #777;--bs-gray-700: #495057;--bs-gray-800: #333;--bs-gray-900: #2d2d2d;--bs-default: #999;--bs-primary: #446e9b;--bs-secondary: #999;--bs-success: #3cb521;--bs-info: #3399f3;--bs-warning: #d47500;--bs-danger: #cd0200;--bs-light: #eee;--bs-dark: #333;--bs-default-rgb: 153, 153, 153;--bs-primary-rgb: 68, 110, 155;--bs-secondary-rgb: 153, 153, 153;--bs-success-rgb: 60, 181, 33;--bs-info-rgb: 51, 153, 243;--bs-warning-rgb: 212, 117, 0;--bs-danger-rgb: 205, 2, 0;--bs-light-rgb: 238, 238, 238;--bs-dark-rgb: 51, 51, 51;--bs-white-rgb: 255, 255, 255;--bs-black-rgb: 0, 0, 0;--bs-body-color-rgb: 119, 119, 119;--bs-body-bg-rgb: 255, 255, 255;--bs-font-sans-serif: "Open Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";--bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));--bs-root-font-size: 17px;--bs-body-font-family: var(--bs-font-sans-serif);--bs-body-font-size: 1rem;--bs-body-font-weight: 400;--bs-body-line-height: 1.5;--bs-body-color: #777;--bs-body-bg: #fff}*,*::before,*::after{box-sizing:border-box}:root{font-size:var(--bs-root-font-size)}body{margin:0;font-family:var(--bs-body-font-family);font-size:var(--bs-body-font-size);font-weight:var(--bs-body-font-weight);line-height:var(--bs-body-line-height);color:var(--bs-body-color);text-align:var(--bs-body-text-align);background-color:var(--bs-body-bg);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(0,0,0,0)}hr{margin:1rem 0;color:inherit;background-color:currentColor;border:0;opacity:.25}hr:not([size]){height:1px}h6,.h6,h5,.h5,h4,.h4,h3,.h3,h2,.h2,h1,.h1{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2;color:#2d2d2d}h1,.h1{font-size:calc(1.325rem + 0.9vw)}@media(min-width: 1200px){h1,.h1{font-size:2rem}}h2,.h2{font-size:calc(1.29rem + 0.48vw)}@media(min-width: 1200px){h2,.h2{font-size:1.65rem}}h3,.h3{font-size:calc(1.27rem + 0.24vw)}@media(min-width: 1200px){h3,.h3{font-size:1.45rem}}h4,.h4{font-size:1.25rem}h5,.h5{font-size:1.1rem}h6,.h6{font-size:1rem}p{margin-top:0;margin-bottom:1rem}abbr[title],abbr[data-bs-original-title]{text-decoration:underline dotted;-webkit-text-decoration:underline dotted;-moz-text-decoration:underline dotted;-ms-text-decoration:underline dotted;-o-text-decoration:underline dotted;cursor:help;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-left:2rem}ol,ul,dl{margin-top:0;margin-bottom:1rem}ol ol,ul ul,ol ul,ul ol{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem;padding:.625rem 1.25rem;border-left:.25rem solid #eee}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}b,strong{font-weight:bolder}small,.small{font-size:0.875em}mark,.mark{padding:.2em;background-color:#fcf8e3}sub,sup{position:relative;font-size:0.75em;line-height:0;vertical-align:baseline}sub{bottom:-0.25em}sup{top:-0.5em}a{color:#3399f3;text-decoration:underline;-webkit-text-decoration:underline;-moz-text-decoration:underline;-ms-text-decoration:underline;-o-text-decoration:underline}a:hover{color:#297ac2}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}pre,code,kbd,samp{font-family:var(--bs-font-monospace);font-size:1em;direction:ltr /* rtl:ignore */;unicode-bidi:bidi-override}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:0.875em;color:#000;background-color:#fafafa;padding:.5rem;border:1px solid #dee2e6;border-radius:.25rem}pre code{background-color:rgba(0,0,0,0);font-size:inherit;color:inherit;word-break:normal}code{font-size:0.875em;color:#9753b8;background-color:#fafafa;border-radius:.25rem;padding:.125rem .25rem;word-wrap:break-word}a>code{color:inherit}kbd{padding:.4rem .4rem;font-size:0.875em;color:#fff;background-color:#2d2d2d;border-radius:.2rem}kbd kbd{padding:0;font-size:1em;font-weight:700}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:#777;text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}thead,tbody,tfoot,tr,td,th{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}input,button,select,optgroup,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]::-webkit-calendar-picker-indicator{display:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}button:not(:disabled),[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{float:left;width:100%;padding:0;margin-bottom:.5rem;font-size:calc(1.275rem + 0.3vw);line-height:inherit}@media(min-width: 1200px){legend{font-size:1.5rem}}legend+*{clear:left}::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-text,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:textfield}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::file-selector-button{font:inherit}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}iframe{border:0}summary{display:list-item;cursor:pointer}progress{vertical-align:baseline}[hidden]{display:none !important}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:calc(1.625rem + 4.5vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-1{font-size:5rem}}.display-2{font-size:calc(1.575rem + 3.9vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-2{font-size:4.5rem}}.display-3{font-size:calc(1.525rem + 3.3vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-3{font-size:4rem}}.display-4{font-size:calc(1.475rem + 2.7vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-4{font-size:3.5rem}}.display-5{font-size:calc(1.425rem + 2.1vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-5{font-size:3rem}}.display-6{font-size:calc(1.375rem + 1.5vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-6{font-size:2.5rem}}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:0.875em;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote>:last-child{margin-bottom:0}.blockquote-footer{margin-top:-1rem;margin-bottom:1rem;font-size:0.875em;color:#777}.blockquote-footer::before{content:"— "}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:0.875em;color:#777}.grid{display:grid;grid-template-rows:repeat(var(--bs-rows, 1), 1fr);grid-template-columns:repeat(var(--bs-columns, 12), 1fr);gap:var(--bs-gap, 1.5rem)}.grid .g-col-1{grid-column:auto/span 1}.grid .g-col-2{grid-column:auto/span 2}.grid .g-col-3{grid-column:auto/span 3}.grid .g-col-4{grid-column:auto/span 4}.grid .g-col-5{grid-column:auto/span 5}.grid .g-col-6{grid-column:auto/span 6}.grid .g-col-7{grid-column:auto/span 7}.grid .g-col-8{grid-column:auto/span 8}.grid .g-col-9{grid-column:auto/span 9}.grid .g-col-10{grid-column:auto/span 10}.grid .g-col-11{grid-column:auto/span 11}.grid .g-col-12{grid-column:auto/span 12}.grid .g-start-1{grid-column-start:1}.grid .g-start-2{grid-column-start:2}.grid .g-start-3{grid-column-start:3}.grid .g-start-4{grid-column-start:4}.grid .g-start-5{grid-column-start:5}.grid .g-start-6{grid-column-start:6}.grid .g-start-7{grid-column-start:7}.grid .g-start-8{grid-column-start:8}.grid .g-start-9{grid-column-start:9}.grid .g-start-10{grid-column-start:10}.grid .g-start-11{grid-column-start:11}@media(min-width: 576px){.grid .g-col-sm-1{grid-column:auto/span 1}.grid .g-col-sm-2{grid-column:auto/span 2}.grid .g-col-sm-3{grid-column:auto/span 3}.grid .g-col-sm-4{grid-column:auto/span 4}.grid .g-col-sm-5{grid-column:auto/span 5}.grid .g-col-sm-6{grid-column:auto/span 6}.grid .g-col-sm-7{grid-column:auto/span 7}.grid .g-col-sm-8{grid-column:auto/span 8}.grid .g-col-sm-9{grid-column:auto/span 9}.grid .g-col-sm-10{grid-column:auto/span 10}.grid .g-col-sm-11{grid-column:auto/span 11}.grid .g-col-sm-12{grid-column:auto/span 12}.grid .g-start-sm-1{grid-column-start:1}.grid .g-start-sm-2{grid-column-start:2}.grid .g-start-sm-3{grid-column-start:3}.grid .g-start-sm-4{grid-column-start:4}.grid .g-start-sm-5{grid-column-start:5}.grid .g-start-sm-6{grid-column-start:6}.grid .g-start-sm-7{grid-column-start:7}.grid .g-start-sm-8{grid-column-start:8}.grid .g-start-sm-9{grid-column-start:9}.grid .g-start-sm-10{grid-column-start:10}.grid .g-start-sm-11{grid-column-start:11}}@media(min-width: 768px){.grid .g-col-md-1{grid-column:auto/span 1}.grid .g-col-md-2{grid-column:auto/span 2}.grid .g-col-md-3{grid-column:auto/span 3}.grid .g-col-md-4{grid-column:auto/span 4}.grid .g-col-md-5{grid-column:auto/span 5}.grid .g-col-md-6{grid-column:auto/span 6}.grid .g-col-md-7{grid-column:auto/span 7}.grid .g-col-md-8{grid-column:auto/span 8}.grid .g-col-md-9{grid-column:auto/span 9}.grid .g-col-md-10{grid-column:auto/span 10}.grid .g-col-md-11{grid-column:auto/span 11}.grid .g-col-md-12{grid-column:auto/span 12}.grid .g-start-md-1{grid-column-start:1}.grid .g-start-md-2{grid-column-start:2}.grid .g-start-md-3{grid-column-start:3}.grid .g-start-md-4{grid-column-start:4}.grid .g-start-md-5{grid-column-start:5}.grid .g-start-md-6{grid-column-start:6}.grid .g-start-md-7{grid-column-start:7}.grid .g-start-md-8{grid-column-start:8}.grid .g-start-md-9{grid-column-start:9}.grid .g-start-md-10{grid-column-start:10}.grid .g-start-md-11{grid-column-start:11}}@media(min-width: 992px){.grid .g-col-lg-1{grid-column:auto/span 1}.grid .g-col-lg-2{grid-column:auto/span 2}.grid .g-col-lg-3{grid-column:auto/span 3}.grid .g-col-lg-4{grid-column:auto/span 4}.grid .g-col-lg-5{grid-column:auto/span 5}.grid .g-col-lg-6{grid-column:auto/span 6}.grid .g-col-lg-7{grid-column:auto/span 7}.grid .g-col-lg-8{grid-column:auto/span 8}.grid .g-col-lg-9{grid-column:auto/span 9}.grid .g-col-lg-10{grid-column:auto/span 10}.grid .g-col-lg-11{grid-column:auto/span 11}.grid .g-col-lg-12{grid-column:auto/span 12}.grid .g-start-lg-1{grid-column-start:1}.grid .g-start-lg-2{grid-column-start:2}.grid .g-start-lg-3{grid-column-start:3}.grid .g-start-lg-4{grid-column-start:4}.grid .g-start-lg-5{grid-column-start:5}.grid .g-start-lg-6{grid-column-start:6}.grid .g-start-lg-7{grid-column-start:7}.grid .g-start-lg-8{grid-column-start:8}.grid .g-start-lg-9{grid-column-start:9}.grid .g-start-lg-10{grid-column-start:10}.grid .g-start-lg-11{grid-column-start:11}}@media(min-width: 1200px){.grid .g-col-xl-1{grid-column:auto/span 1}.grid .g-col-xl-2{grid-column:auto/span 2}.grid .g-col-xl-3{grid-column:auto/span 3}.grid .g-col-xl-4{grid-column:auto/span 4}.grid .g-col-xl-5{grid-column:auto/span 5}.grid .g-col-xl-6{grid-column:auto/span 6}.grid .g-col-xl-7{grid-column:auto/span 7}.grid .g-col-xl-8{grid-column:auto/span 8}.grid .g-col-xl-9{grid-column:auto/span 9}.grid .g-col-xl-10{grid-column:auto/span 10}.grid .g-col-xl-11{grid-column:auto/span 11}.grid .g-col-xl-12{grid-column:auto/span 12}.grid .g-start-xl-1{grid-column-start:1}.grid .g-start-xl-2{grid-column-start:2}.grid .g-start-xl-3{grid-column-start:3}.grid .g-start-xl-4{grid-column-start:4}.grid .g-start-xl-5{grid-column-start:5}.grid .g-start-xl-6{grid-column-start:6}.grid .g-start-xl-7{grid-column-start:7}.grid .g-start-xl-8{grid-column-start:8}.grid .g-start-xl-9{grid-column-start:9}.grid .g-start-xl-10{grid-column-start:10}.grid .g-start-xl-11{grid-column-start:11}}@media(min-width: 1400px){.grid .g-col-xxl-1{grid-column:auto/span 1}.grid .g-col-xxl-2{grid-column:auto/span 2}.grid .g-col-xxl-3{grid-column:auto/span 3}.grid .g-col-xxl-4{grid-column:auto/span 4}.grid .g-col-xxl-5{grid-column:auto/span 5}.grid .g-col-xxl-6{grid-column:auto/span 6}.grid .g-col-xxl-7{grid-column:auto/span 7}.grid .g-col-xxl-8{grid-column:auto/span 8}.grid .g-col-xxl-9{grid-column:auto/span 9}.grid .g-col-xxl-10{grid-column:auto/span 10}.grid .g-col-xxl-11{grid-column:auto/span 11}.grid .g-col-xxl-12{grid-column:auto/span 12}.grid .g-start-xxl-1{grid-column-start:1}.grid .g-start-xxl-2{grid-column-start:2}.grid .g-start-xxl-3{grid-column-start:3}.grid .g-start-xxl-4{grid-column-start:4}.grid .g-start-xxl-5{grid-column-start:5}.grid .g-start-xxl-6{grid-column-start:6}.grid .g-start-xxl-7{grid-column-start:7}.grid .g-start-xxl-8{grid-column-start:8}.grid .g-start-xxl-9{grid-column-start:9}.grid .g-start-xxl-10{grid-column-start:10}.grid .g-start-xxl-11{grid-column-start:11}}.table{--bs-table-bg: transparent;--bs-table-accent-bg: transparent;--bs-table-striped-color: #777;--bs-table-striped-bg: rgba(0, 0, 0, 0.05);--bs-table-active-color: #777;--bs-table-active-bg: rgba(0, 0, 0, 0.1);--bs-table-hover-color: #777;--bs-table-hover-bg: rgba(0, 0, 0, 0.075);width:100%;margin-bottom:1rem;color:#777;vertical-align:top;border-color:#dee2e6}.table>:not(caption)>*>*{padding:.5rem .5rem;background-color:var(--bs-table-bg);border-bottom-width:1px;box-shadow:inset 0 0 0 9999px var(--bs-table-accent-bg)}.table>tbody{vertical-align:inherit}.table>thead{vertical-align:bottom}.table>:not(:first-child){border-top:2px solid #f7f7f7}.caption-top{caption-side:top}.table-sm>:not(caption)>*>*{padding:.25rem .25rem}.table-bordered>:not(caption)>*{border-width:1px 0}.table-bordered>:not(caption)>*>*{border-width:0 1px}.table-borderless>:not(caption)>*>*{border-bottom-width:0}.table-borderless>:not(:first-child){border-top-width:0}.table-striped>tbody>tr:nth-of-type(odd)>*{--bs-table-accent-bg: var(--bs-table-striped-bg);color:var(--bs-table-striped-color)}.table-active{--bs-table-accent-bg: var(--bs-table-active-bg);color:var(--bs-table-active-color)}.table-hover>tbody>tr:hover>*{--bs-table-accent-bg: var(--bs-table-hover-bg);color:var(--bs-table-hover-color)}.table-primary{--bs-table-bg: #dae2eb;--bs-table-striped-bg: #cfd7df;--bs-table-striped-color: #000;--bs-table-active-bg: #c4cbd4;--bs-table-active-color: #000;--bs-table-hover-bg: #cad1d9;--bs-table-hover-color: #000;color:#000;border-color:#c4cbd4}.table-secondary{--bs-table-bg: #ebebeb;--bs-table-striped-bg: #dfdfdf;--bs-table-striped-color: #000;--bs-table-active-bg: #d4d4d4;--bs-table-active-color: #000;--bs-table-hover-bg: #d9d9d9;--bs-table-hover-color: #000;color:#000;border-color:#d4d4d4}.table-success{--bs-table-bg: #d8f0d3;--bs-table-striped-bg: #cde4c8;--bs-table-striped-color: #000;--bs-table-active-bg: #c2d8be;--bs-table-active-color: #000;--bs-table-hover-bg: #c8dec3;--bs-table-hover-color: #000;color:#000;border-color:#c2d8be}.table-info{--bs-table-bg: #d6ebfd;--bs-table-striped-bg: #cbdff0;--bs-table-striped-color: #000;--bs-table-active-bg: #c1d4e4;--bs-table-active-color: #000;--bs-table-hover-bg: #c6d9ea;--bs-table-hover-color: #000;color:#000;border-color:#c1d4e4}.table-warning{--bs-table-bg: #f6e3cc;--bs-table-striped-bg: #ead8c2;--bs-table-striped-color: #000;--bs-table-active-bg: #ddccb8;--bs-table-active-color: #000;--bs-table-hover-bg: #e4d2bd;--bs-table-hover-color: #000;color:#000;border-color:#ddccb8}.table-danger{--bs-table-bg: #f5cccc;--bs-table-striped-bg: #e9c2c2;--bs-table-striped-color: #000;--bs-table-active-bg: #ddb8b8;--bs-table-active-color: #000;--bs-table-hover-bg: #e3bdbd;--bs-table-hover-color: #000;color:#000;border-color:#ddb8b8}.table-light{--bs-table-bg: #eee;--bs-table-striped-bg: #e2e2e2;--bs-table-striped-color: #000;--bs-table-active-bg: #d6d6d6;--bs-table-active-color: #000;--bs-table-hover-bg: gainsboro;--bs-table-hover-color: #000;color:#000;border-color:#d6d6d6}.table-dark{--bs-table-bg: #333;--bs-table-striped-bg: #3d3d3d;--bs-table-striped-color: #fff;--bs-table-active-bg: #474747;--bs-table-active-color: #fff;--bs-table-hover-bg: #424242;--bs-table-hover-color: #fff;color:#fff;border-color:#474747}.table-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch}@media(max-width: 575.98px){.table-responsive-sm{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media(max-width: 767.98px){.table-responsive-md{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media(max-width: 991.98px){.table-responsive-lg{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media(max-width: 1199.98px){.table-responsive-xl{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media(max-width: 1399.98px){.table-responsive-xxl{overflow-x:auto;-webkit-overflow-scrolling:touch}}.form-label,.shiny-input-container .control-label{margin-bottom:.5rem}.col-form-label{padding-top:calc(0.375rem + 1px);padding-bottom:calc(0.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(0.5rem + 1px);padding-bottom:calc(0.5rem + 1px);font-size:1.25rem}.col-form-label-sm{padding-top:calc(0.25rem + 1px);padding-bottom:calc(0.25rem + 1px);font-size:0.875rem}.form-text{margin-top:.25rem;font-size:0.875em;color:#777}.form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#777;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-control{transition:none}}.form-control[type=file]{overflow:hidden}.form-control[type=file]:not(:disabled):not([readonly]){cursor:pointer}.form-control:focus{color:#777;background-color:#fff;border-color:#a2b7cd;outline:0;box-shadow:0 0 0 .25rem rgba(68,110,155,.25)}.form-control::-webkit-date-and-time-value{height:1.5em}.form-control::placeholder{color:#777;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#eee;opacity:1}.form-control::file-selector-button{padding:.375rem .75rem;margin:-0.375rem -0.75rem;margin-inline-end:.75rem;color:#777;background-color:#eee;pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:1px;border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-control::file-selector-button{transition:none}}.form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:#e2e2e2}.form-control::-webkit-file-upload-button{padding:.375rem .75rem;margin:-0.375rem -0.75rem;margin-inline-end:.75rem;color:#777;background-color:#eee;pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:1px;border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-control::-webkit-file-upload-button{transition:none}}.form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button{background-color:#e2e2e2}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;line-height:1.5;color:#777;background-color:rgba(0,0,0,0);border:solid rgba(0,0,0,0);border-width:1px 0}.form-control-plaintext.form-control-sm,.form-control-plaintext.form-control-lg{padding-right:0;padding-left:0}.form-control-sm{min-height:calc(1.5em + 0.5rem + 2px);padding:.25rem .5rem;font-size:0.875rem;border-radius:.2rem}.form-control-sm::file-selector-button{padding:.25rem .5rem;margin:-0.25rem -0.5rem;margin-inline-end:.5rem}.form-control-sm::-webkit-file-upload-button{padding:.25rem .5rem;margin:-0.25rem -0.5rem;margin-inline-end:.5rem}.form-control-lg{min-height:calc(1.5em + 1rem + 2px);padding:.5rem 1rem;font-size:1.25rem;border-radius:.3rem}.form-control-lg::file-selector-button{padding:.5rem 1rem;margin:-0.5rem -1rem;margin-inline-end:1rem}.form-control-lg::-webkit-file-upload-button{padding:.5rem 1rem;margin:-0.5rem -1rem;margin-inline-end:1rem}textarea.form-control{min-height:calc(1.5em + 0.75rem + 2px)}textarea.form-control-sm{min-height:calc(1.5em + 0.5rem + 2px)}textarea.form-control-lg{min-height:calc(1.5em + 1rem + 2px)}.form-control-color{width:3rem;height:auto;padding:.375rem}.form-control-color:not(:disabled):not([readonly]){cursor:pointer}.form-control-color::-moz-color-swatch{height:1.5em;border-radius:.25rem}.form-control-color::-webkit-color-swatch{height:1.5em;border-radius:.25rem}.form-select{display:block;width:100%;padding:.375rem 2.25rem .375rem .75rem;-moz-padding-start:calc(0.75rem - 3px);font-size:1rem;font-weight:400;line-height:1.5;color:#777;background-color:#fff;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23333' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right .75rem center;background-size:16px 12px;border:1px solid #ced4da;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none}@media(prefers-reduced-motion: reduce){.form-select{transition:none}}.form-select:focus{border-color:#a2b7cd;outline:0;box-shadow:0 0 0 .25rem rgba(68,110,155,.25)}.form-select[multiple],.form-select[size]:not([size="1"]){padding-right:.75rem;background-image:none}.form-select:disabled{background-color:#eee}.form-select:-moz-focusring{color:rgba(0,0,0,0);text-shadow:0 0 0 #777}.form-select-sm{padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:0.875rem;border-radius:.2rem}.form-select-lg{padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem;border-radius:.3rem}.form-check,.shiny-input-container .checkbox,.shiny-input-container .radio{display:block;min-height:1.5rem;padding-left:0;margin-bottom:.125rem}.form-check .form-check-input,.form-check .shiny-input-container .checkbox input,.form-check .shiny-input-container .radio input,.shiny-input-container .checkbox .form-check-input,.shiny-input-container .checkbox .shiny-input-container .checkbox input,.shiny-input-container .checkbox .shiny-input-container .radio input,.shiny-input-container .radio .form-check-input,.shiny-input-container .radio .shiny-input-container .checkbox input,.shiny-input-container .radio .shiny-input-container .radio input{float:left;margin-left:0}.form-check-input,.shiny-input-container .checkbox input,.shiny-input-container .checkbox-inline input,.shiny-input-container .radio input,.shiny-input-container .radio-inline input{width:1em;height:1em;margin-top:.25em;vertical-align:top;background-color:#fff;background-repeat:no-repeat;background-position:center;background-size:contain;border:1px solid rgba(0,0,0,.25);appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none;color-adjust:exact;-webkit-print-color-adjust:exact}.form-check-input[type=checkbox],.shiny-input-container .checkbox input[type=checkbox],.shiny-input-container .checkbox-inline input[type=checkbox],.shiny-input-container .radio input[type=checkbox],.shiny-input-container .radio-inline input[type=checkbox]{border-radius:.25em}.form-check-input[type=radio],.shiny-input-container .checkbox input[type=radio],.shiny-input-container .checkbox-inline input[type=radio],.shiny-input-container .radio input[type=radio],.shiny-input-container .radio-inline input[type=radio]{border-radius:50%}.form-check-input:active,.shiny-input-container .checkbox input:active,.shiny-input-container .checkbox-inline input:active,.shiny-input-container .radio input:active,.shiny-input-container .radio-inline input:active{filter:brightness(90%)}.form-check-input:focus,.shiny-input-container .checkbox input:focus,.shiny-input-container .checkbox-inline input:focus,.shiny-input-container .radio input:focus,.shiny-input-container .radio-inline input:focus{border-color:#a2b7cd;outline:0;box-shadow:0 0 0 .25rem rgba(68,110,155,.25)}.form-check-input:checked,.shiny-input-container .checkbox input:checked,.shiny-input-container .checkbox-inline input:checked,.shiny-input-container .radio input:checked,.shiny-input-container .radio-inline input:checked{background-color:#446e9b;border-color:#446e9b}.form-check-input:checked[type=checkbox],.shiny-input-container .checkbox input:checked[type=checkbox],.shiny-input-container .checkbox-inline input:checked[type=checkbox],.shiny-input-container .radio input:checked[type=checkbox],.shiny-input-container .radio-inline input:checked[type=checkbox]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10l3 3l6-6'/%3e%3c/svg%3e")}.form-check-input:checked[type=radio],.shiny-input-container .checkbox input:checked[type=radio],.shiny-input-container .checkbox-inline input:checked[type=radio],.shiny-input-container .radio input:checked[type=radio],.shiny-input-container .radio-inline input:checked[type=radio]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e")}.form-check-input[type=checkbox]:indeterminate,.shiny-input-container .checkbox input[type=checkbox]:indeterminate,.shiny-input-container .checkbox-inline input[type=checkbox]:indeterminate,.shiny-input-container .radio input[type=checkbox]:indeterminate,.shiny-input-container .radio-inline input[type=checkbox]:indeterminate{background-color:#446e9b;border-color:#446e9b;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e")}.form-check-input:disabled,.shiny-input-container .checkbox input:disabled,.shiny-input-container .checkbox-inline input:disabled,.shiny-input-container .radio input:disabled,.shiny-input-container .radio-inline input:disabled{pointer-events:none;filter:none;opacity:.5}.form-check-input[disabled]~.form-check-label,.form-check-input[disabled]~span,.form-check-input:disabled~.form-check-label,.form-check-input:disabled~span,.shiny-input-container .checkbox input[disabled]~.form-check-label,.shiny-input-container .checkbox input[disabled]~span,.shiny-input-container .checkbox input:disabled~.form-check-label,.shiny-input-container .checkbox input:disabled~span,.shiny-input-container .checkbox-inline input[disabled]~.form-check-label,.shiny-input-container .checkbox-inline input[disabled]~span,.shiny-input-container .checkbox-inline input:disabled~.form-check-label,.shiny-input-container .checkbox-inline input:disabled~span,.shiny-input-container .radio input[disabled]~.form-check-label,.shiny-input-container .radio input[disabled]~span,.shiny-input-container .radio input:disabled~.form-check-label,.shiny-input-container .radio input:disabled~span,.shiny-input-container .radio-inline input[disabled]~.form-check-label,.shiny-input-container .radio-inline input[disabled]~span,.shiny-input-container .radio-inline input:disabled~.form-check-label,.shiny-input-container .radio-inline input:disabled~span{opacity:.5}.form-check-label,.shiny-input-container .checkbox label,.shiny-input-container .checkbox-inline label,.shiny-input-container .radio label,.shiny-input-container .radio-inline label{cursor:pointer}.form-switch{padding-left:2.5em}.form-switch .form-check-input{width:2em;margin-left:-2.5em;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e");background-position:left center;border-radius:2em;transition:background-position .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-switch .form-check-input{transition:none}}.form-switch .form-check-input:focus{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23a2b7cd'/%3e%3c/svg%3e")}.form-switch .form-check-input:checked{background-position:right center;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.form-check-inline,.shiny-input-container .checkbox-inline,.shiny-input-container .radio-inline{display:inline-block;margin-right:1rem}.btn-check{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.btn-check[disabled]+.btn,.btn-check:disabled+.btn{pointer-events:none;filter:none;opacity:.65}.form-range{width:100%;height:1.5rem;padding:0;background-color:rgba(0,0,0,0);appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none}.form-range:focus{outline:0}.form-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem rgba(68,110,155,.25)}.form-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem rgba(68,110,155,.25)}.form-range::-moz-focus-outer{border:0}.form-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-0.25rem;background-color:#446e9b;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none}@media(prefers-reduced-motion: reduce){.form-range::-webkit-slider-thumb{transition:none}}.form-range::-webkit-slider-thumb:active{background-color:#c7d4e1}.form-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:rgba(0,0,0,0);cursor:pointer;background-color:#dee2e6;border-color:rgba(0,0,0,0);border-radius:1rem}.form-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#446e9b;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none}@media(prefers-reduced-motion: reduce){.form-range::-moz-range-thumb{transition:none}}.form-range::-moz-range-thumb:active{background-color:#c7d4e1}.form-range::-moz-range-track{width:100%;height:.5rem;color:rgba(0,0,0,0);cursor:pointer;background-color:#dee2e6;border-color:rgba(0,0,0,0);border-radius:1rem}.form-range:disabled{pointer-events:none}.form-range:disabled::-webkit-slider-thumb{background-color:#999}.form-range:disabled::-moz-range-thumb{background-color:#999}.form-floating{position:relative}.form-floating>.form-control,.form-floating>.form-select{height:calc(3.5rem + 2px);line-height:1.25}.form-floating>label{position:absolute;top:0;left:0;height:100%;padding:1rem .75rem;pointer-events:none;border:1px solid rgba(0,0,0,0);transform-origin:0 0;transition:opacity .1s ease-in-out,transform .1s ease-in-out}@media(prefers-reduced-motion: reduce){.form-floating>label{transition:none}}.form-floating>.form-control{padding:1rem .75rem}.form-floating>.form-control::placeholder{color:rgba(0,0,0,0)}.form-floating>.form-control:focus,.form-floating>.form-control:not(:placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:-webkit-autofill{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-select{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:focus~label,.form-floating>.form-control:not(:placeholder-shown)~label,.form-floating>.form-select~label{opacity:.65;transform:scale(0.85) translateY(-0.5rem) translateX(0.15rem)}.form-floating>.form-control:-webkit-autofill~label{opacity:.65;transform:scale(0.85) translateY(-0.5rem) translateX(0.15rem)}.input-group{position:relative;display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;align-items:stretch;-webkit-align-items:stretch;width:100%}.input-group>.form-control,.input-group>.form-select{position:relative;flex:1 1 auto;-webkit-flex:1 1 auto;width:1%;min-width:0}.input-group>.form-control:focus,.input-group>.form-select:focus{z-index:3}.input-group .btn{position:relative;z-index:2}.input-group .btn:focus{z-index:3}.input-group-text{display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#777;text-align:center;white-space:nowrap;background-color:#eee;border:1px solid #ced4da;border-radius:.25rem}.input-group-lg>.form-control,.input-group-lg>.form-select,.input-group-lg>.input-group-text,.input-group-lg>.btn{padding:.5rem 1rem;font-size:1.25rem;border-radius:.3rem}.input-group-sm>.form-control,.input-group-sm>.form-select,.input-group-sm>.input-group-text,.input-group-sm>.btn{padding:.25rem .5rem;font-size:0.875rem;border-radius:.2rem}.input-group-lg>.form-select,.input-group-sm>.form-select{padding-right:3rem}.input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu),.input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3){border-top-right-radius:0;border-bottom-right-radius:0}.input-group.has-validation>:nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu),.input-group.has-validation>.dropdown-toggle:nth-last-child(n+4){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback){margin-left:-1px;border-top-left-radius:0;border-bottom-left-radius:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:0.875em;color:#3cb521}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:0.875rem;color:#fff;background-color:rgba(60,181,33,.9);border-radius:.25rem}.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip,.is-valid~.valid-feedback,.is-valid~.valid-tooltip{display:block}.was-validated .form-control:valid,.form-control.is-valid{border-color:#3cb521;padding-right:calc(1.5em + 0.75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%233cb521' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(0.375em + 0.1875rem) center;background-size:calc(0.75em + 0.375rem) calc(0.75em + 0.375rem)}.was-validated .form-control:valid:focus,.form-control.is-valid:focus{border-color:#3cb521;box-shadow:0 0 0 .25rem rgba(60,181,33,.25)}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + 0.75rem);background-position:top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem)}.was-validated .form-select:valid,.form-select.is-valid{border-color:#3cb521}.was-validated .form-select:valid:not([multiple]):not([size]),.was-validated .form-select:valid:not([multiple])[size="1"],.form-select.is-valid:not([multiple]):not([size]),.form-select.is-valid:not([multiple])[size="1"]{padding-right:4.125rem;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23333' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e"),url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%233cb521' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(0.75em + 0.375rem) calc(0.75em + 0.375rem)}.was-validated .form-select:valid:focus,.form-select.is-valid:focus{border-color:#3cb521;box-shadow:0 0 0 .25rem rgba(60,181,33,.25)}.was-validated .form-check-input:valid,.form-check-input.is-valid{border-color:#3cb521}.was-validated .form-check-input:valid:checked,.form-check-input.is-valid:checked{background-color:#3cb521}.was-validated .form-check-input:valid:focus,.form-check-input.is-valid:focus{box-shadow:0 0 0 .25rem rgba(60,181,33,.25)}.was-validated .form-check-input:valid~.form-check-label,.form-check-input.is-valid~.form-check-label{color:#3cb521}.form-check-inline .form-check-input~.valid-feedback{margin-left:.5em}.was-validated .input-group .form-control:valid,.input-group .form-control.is-valid,.was-validated .input-group .form-select:valid,.input-group .form-select.is-valid{z-index:1}.was-validated .input-group .form-control:valid:focus,.input-group .form-control.is-valid:focus,.was-validated .input-group .form-select:valid:focus,.input-group .form-select.is-valid:focus{z-index:3}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:0.875em;color:#cd0200}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:0.875rem;color:#fff;background-color:rgba(205,2,0,.9);border-radius:.25rem}.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip,.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip{display:block}.was-validated .form-control:invalid,.form-control.is-invalid{border-color:#cd0200;padding-right:calc(1.5em + 0.75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23cd0200'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23cd0200' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(0.375em + 0.1875rem) center;background-size:calc(0.75em + 0.375rem) calc(0.75em + 0.375rem)}.was-validated .form-control:invalid:focus,.form-control.is-invalid:focus{border-color:#cd0200;box-shadow:0 0 0 .25rem rgba(205,2,0,.25)}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + 0.75rem);background-position:top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem)}.was-validated .form-select:invalid,.form-select.is-invalid{border-color:#cd0200}.was-validated .form-select:invalid:not([multiple]):not([size]),.was-validated .form-select:invalid:not([multiple])[size="1"],.form-select.is-invalid:not([multiple]):not([size]),.form-select.is-invalid:not([multiple])[size="1"]{padding-right:4.125rem;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23333' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e"),url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23cd0200'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23cd0200' stroke='none'/%3e%3c/svg%3e");background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(0.75em + 0.375rem) calc(0.75em + 0.375rem)}.was-validated .form-select:invalid:focus,.form-select.is-invalid:focus{border-color:#cd0200;box-shadow:0 0 0 .25rem rgba(205,2,0,.25)}.was-validated .form-check-input:invalid,.form-check-input.is-invalid{border-color:#cd0200}.was-validated .form-check-input:invalid:checked,.form-check-input.is-invalid:checked{background-color:#cd0200}.was-validated .form-check-input:invalid:focus,.form-check-input.is-invalid:focus{box-shadow:0 0 0 .25rem rgba(205,2,0,.25)}.was-validated .form-check-input:invalid~.form-check-label,.form-check-input.is-invalid~.form-check-label{color:#cd0200}.form-check-inline .form-check-input~.invalid-feedback{margin-left:.5em}.was-validated .input-group .form-control:invalid,.input-group .form-control.is-invalid,.was-validated .input-group .form-select:invalid,.input-group .form-select.is-invalid{z-index:2}.was-validated .input-group .form-control:invalid:focus,.input-group .form-control.is-invalid:focus,.was-validated .input-group .form-select:invalid:focus,.input-group .form-select.is-invalid:focus{z-index:3}.btn{display:inline-block;font-weight:400;line-height:1.5;color:#777;text-align:center;text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;vertical-align:middle;cursor:pointer;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;background-color:rgba(0,0,0,0);border:1px solid rgba(0,0,0,0);padding:.375rem .75rem;font-size:1rem;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.btn{transition:none}}.btn:hover{color:#777}.btn-check:focus+.btn,.btn:focus{outline:0;box-shadow:0 0 0 .25rem rgba(68,110,155,.25)}.btn:disabled,.btn.disabled,fieldset:disabled .btn{pointer-events:none;opacity:.65}.btn-default{color:#fff;background-color:#999;border-color:#999}.btn-default:hover{color:#fff;background-color:#828282;border-color:#7a7a7a}.btn-check:focus+.btn-default,.btn-default:focus{color:#fff;background-color:#828282;border-color:#7a7a7a;box-shadow:0 0 0 .25rem rgba(168,168,168,.5)}.btn-check:checked+.btn-default,.btn-check:active+.btn-default,.btn-default:active,.btn-default.active,.show>.btn-default.dropdown-toggle{color:#fff;background-color:#7a7a7a;border-color:#737373}.btn-check:checked+.btn-default:focus,.btn-check:active+.btn-default:focus,.btn-default:active:focus,.btn-default.active:focus,.show>.btn-default.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(168,168,168,.5)}.btn-default:disabled,.btn-default.disabled{color:#fff;background-color:#999;border-color:#999}.btn-primary{color:#fff;background-color:#446e9b;border-color:#446e9b}.btn-primary:hover{color:#fff;background-color:#3a5e84;border-color:#36587c}.btn-check:focus+.btn-primary,.btn-primary:focus{color:#fff;background-color:#3a5e84;border-color:#36587c;box-shadow:0 0 0 .25rem rgba(96,132,170,.5)}.btn-check:checked+.btn-primary,.btn-check:active+.btn-primary,.btn-primary:active,.btn-primary.active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#36587c;border-color:#335374}.btn-check:checked+.btn-primary:focus,.btn-check:active+.btn-primary:focus,.btn-primary:active:focus,.btn-primary.active:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(96,132,170,.5)}.btn-primary:disabled,.btn-primary.disabled{color:#fff;background-color:#446e9b;border-color:#446e9b}.btn-secondary{color:#fff;background-color:#999;border-color:#999}.btn-secondary:hover{color:#fff;background-color:#828282;border-color:#7a7a7a}.btn-check:focus+.btn-secondary,.btn-secondary:focus{color:#fff;background-color:#828282;border-color:#7a7a7a;box-shadow:0 0 0 .25rem rgba(168,168,168,.5)}.btn-check:checked+.btn-secondary,.btn-check:active+.btn-secondary,.btn-secondary:active,.btn-secondary.active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#7a7a7a;border-color:#737373}.btn-check:checked+.btn-secondary:focus,.btn-check:active+.btn-secondary:focus,.btn-secondary:active:focus,.btn-secondary.active:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(168,168,168,.5)}.btn-secondary:disabled,.btn-secondary.disabled{color:#fff;background-color:#999;border-color:#999}.btn-success{color:#fff;background-color:#3cb521;border-color:#3cb521}.btn-success:hover{color:#fff;background-color:#339a1c;border-color:#30911a}.btn-check:focus+.btn-success,.btn-success:focus{color:#fff;background-color:#339a1c;border-color:#30911a;box-shadow:0 0 0 .25rem rgba(89,192,66,.5)}.btn-check:checked+.btn-success,.btn-check:active+.btn-success,.btn-success:active,.btn-success.active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#30911a;border-color:#2d8819}.btn-check:checked+.btn-success:focus,.btn-check:active+.btn-success:focus,.btn-success:active:focus,.btn-success.active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(89,192,66,.5)}.btn-success:disabled,.btn-success.disabled{color:#fff;background-color:#3cb521;border-color:#3cb521}.btn-info{color:#fff;background-color:#3399f3;border-color:#3399f3}.btn-info:hover{color:#fff;background-color:#2b82cf;border-color:#297ac2}.btn-check:focus+.btn-info,.btn-info:focus{color:#fff;background-color:#2b82cf;border-color:#297ac2;box-shadow:0 0 0 .25rem rgba(82,168,245,.5)}.btn-check:checked+.btn-info,.btn-check:active+.btn-info,.btn-info:active,.btn-info.active,.show>.btn-info.dropdown-toggle{color:#fff;background-color:#297ac2;border-color:#2673b6}.btn-check:checked+.btn-info:focus,.btn-check:active+.btn-info:focus,.btn-info:active:focus,.btn-info.active:focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(82,168,245,.5)}.btn-info:disabled,.btn-info.disabled{color:#fff;background-color:#3399f3;border-color:#3399f3}.btn-warning{color:#fff;background-color:#d47500;border-color:#d47500}.btn-warning:hover{color:#fff;background-color:#b46300;border-color:#aa5e00}.btn-check:focus+.btn-warning,.btn-warning:focus{color:#fff;background-color:#b46300;border-color:#aa5e00;box-shadow:0 0 0 .25rem rgba(218,138,38,.5)}.btn-check:checked+.btn-warning,.btn-check:active+.btn-warning,.btn-warning:active,.btn-warning.active,.show>.btn-warning.dropdown-toggle{color:#fff;background-color:#aa5e00;border-color:#9f5800}.btn-check:checked+.btn-warning:focus,.btn-check:active+.btn-warning:focus,.btn-warning:active:focus,.btn-warning.active:focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(218,138,38,.5)}.btn-warning:disabled,.btn-warning.disabled{color:#fff;background-color:#d47500;border-color:#d47500}.btn-danger{color:#fff;background-color:#cd0200;border-color:#cd0200}.btn-danger:hover{color:#fff;background-color:#ae0200;border-color:#a40200}.btn-check:focus+.btn-danger,.btn-danger:focus{color:#fff;background-color:#ae0200;border-color:#a40200;box-shadow:0 0 0 .25rem rgba(213,40,38,.5)}.btn-check:checked+.btn-danger,.btn-check:active+.btn-danger,.btn-danger:active,.btn-danger.active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#a40200;border-color:#9a0200}.btn-check:checked+.btn-danger:focus,.btn-check:active+.btn-danger:focus,.btn-danger:active:focus,.btn-danger.active:focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(213,40,38,.5)}.btn-danger:disabled,.btn-danger.disabled{color:#fff;background-color:#cd0200;border-color:#cd0200}.btn-light{color:#000;background-color:#eee;border-color:#eee}.btn-light:hover{color:#000;background-color:#f1f1f1;border-color:#f0f0f0}.btn-check:focus+.btn-light,.btn-light:focus{color:#000;background-color:#f1f1f1;border-color:#f0f0f0;box-shadow:0 0 0 .25rem rgba(202,202,202,.5)}.btn-check:checked+.btn-light,.btn-check:active+.btn-light,.btn-light:active,.btn-light.active,.show>.btn-light.dropdown-toggle{color:#000;background-color:#f1f1f1;border-color:#f0f0f0}.btn-check:checked+.btn-light:focus,.btn-check:active+.btn-light:focus,.btn-light:active:focus,.btn-light.active:focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(202,202,202,.5)}.btn-light:disabled,.btn-light.disabled{color:#000;background-color:#eee;border-color:#eee}.btn-dark{color:#fff;background-color:#333;border-color:#333}.btn-dark:hover{color:#fff;background-color:#2b2b2b;border-color:#292929}.btn-check:focus+.btn-dark,.btn-dark:focus{color:#fff;background-color:#2b2b2b;border-color:#292929;box-shadow:0 0 0 .25rem rgba(82,82,82,.5)}.btn-check:checked+.btn-dark,.btn-check:active+.btn-dark,.btn-dark:active,.btn-dark.active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#292929;border-color:#262626}.btn-check:checked+.btn-dark:focus,.btn-check:active+.btn-dark:focus,.btn-dark:active:focus,.btn-dark.active:focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(82,82,82,.5)}.btn-dark:disabled,.btn-dark.disabled{color:#fff;background-color:#333;border-color:#333}.btn-outline-default{color:#999;border-color:#999;background-color:rgba(0,0,0,0)}.btn-outline-default:hover{color:#fff;background-color:#999;border-color:#999}.btn-check:focus+.btn-outline-default,.btn-outline-default:focus{box-shadow:0 0 0 .25rem rgba(153,153,153,.5)}.btn-check:checked+.btn-outline-default,.btn-check:active+.btn-outline-default,.btn-outline-default:active,.btn-outline-default.active,.btn-outline-default.dropdown-toggle.show{color:#fff;background-color:#999;border-color:#999}.btn-check:checked+.btn-outline-default:focus,.btn-check:active+.btn-outline-default:focus,.btn-outline-default:active:focus,.btn-outline-default.active:focus,.btn-outline-default.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem rgba(153,153,153,.5)}.btn-outline-default:disabled,.btn-outline-default.disabled{color:#999;background-color:rgba(0,0,0,0)}.btn-outline-primary{color:#446e9b;border-color:#446e9b;background-color:rgba(0,0,0,0)}.btn-outline-primary:hover{color:#fff;background-color:#446e9b;border-color:#446e9b}.btn-check:focus+.btn-outline-primary,.btn-outline-primary:focus{box-shadow:0 0 0 .25rem rgba(68,110,155,.5)}.btn-check:checked+.btn-outline-primary,.btn-check:active+.btn-outline-primary,.btn-outline-primary:active,.btn-outline-primary.active,.btn-outline-primary.dropdown-toggle.show{color:#fff;background-color:#446e9b;border-color:#446e9b}.btn-check:checked+.btn-outline-primary:focus,.btn-check:active+.btn-outline-primary:focus,.btn-outline-primary:active:focus,.btn-outline-primary.active:focus,.btn-outline-primary.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem rgba(68,110,155,.5)}.btn-outline-primary:disabled,.btn-outline-primary.disabled{color:#446e9b;background-color:rgba(0,0,0,0)}.btn-outline-secondary{color:#999;border-color:#999;background-color:rgba(0,0,0,0)}.btn-outline-secondary:hover{color:#fff;background-color:#999;border-color:#999}.btn-check:focus+.btn-outline-secondary,.btn-outline-secondary:focus{box-shadow:0 0 0 .25rem rgba(153,153,153,.5)}.btn-check:checked+.btn-outline-secondary,.btn-check:active+.btn-outline-secondary,.btn-outline-secondary:active,.btn-outline-secondary.active,.btn-outline-secondary.dropdown-toggle.show{color:#fff;background-color:#999;border-color:#999}.btn-check:checked+.btn-outline-secondary:focus,.btn-check:active+.btn-outline-secondary:focus,.btn-outline-secondary:active:focus,.btn-outline-secondary.active:focus,.btn-outline-secondary.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem rgba(153,153,153,.5)}.btn-outline-secondary:disabled,.btn-outline-secondary.disabled{color:#999;background-color:rgba(0,0,0,0)}.btn-outline-success{color:#3cb521;border-color:#3cb521;background-color:rgba(0,0,0,0)}.btn-outline-success:hover{color:#fff;background-color:#3cb521;border-color:#3cb521}.btn-check:focus+.btn-outline-success,.btn-outline-success:focus{box-shadow:0 0 0 .25rem rgba(60,181,33,.5)}.btn-check:checked+.btn-outline-success,.btn-check:active+.btn-outline-success,.btn-outline-success:active,.btn-outline-success.active,.btn-outline-success.dropdown-toggle.show{color:#fff;background-color:#3cb521;border-color:#3cb521}.btn-check:checked+.btn-outline-success:focus,.btn-check:active+.btn-outline-success:focus,.btn-outline-success:active:focus,.btn-outline-success.active:focus,.btn-outline-success.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem rgba(60,181,33,.5)}.btn-outline-success:disabled,.btn-outline-success.disabled{color:#3cb521;background-color:rgba(0,0,0,0)}.btn-outline-info{color:#3399f3;border-color:#3399f3;background-color:rgba(0,0,0,0)}.btn-outline-info:hover{color:#fff;background-color:#3399f3;border-color:#3399f3}.btn-check:focus+.btn-outline-info,.btn-outline-info:focus{box-shadow:0 0 0 .25rem rgba(51,153,243,.5)}.btn-check:checked+.btn-outline-info,.btn-check:active+.btn-outline-info,.btn-outline-info:active,.btn-outline-info.active,.btn-outline-info.dropdown-toggle.show{color:#fff;background-color:#3399f3;border-color:#3399f3}.btn-check:checked+.btn-outline-info:focus,.btn-check:active+.btn-outline-info:focus,.btn-outline-info:active:focus,.btn-outline-info.active:focus,.btn-outline-info.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem rgba(51,153,243,.5)}.btn-outline-info:disabled,.btn-outline-info.disabled{color:#3399f3;background-color:rgba(0,0,0,0)}.btn-outline-warning{color:#d47500;border-color:#d47500;background-color:rgba(0,0,0,0)}.btn-outline-warning:hover{color:#fff;background-color:#d47500;border-color:#d47500}.btn-check:focus+.btn-outline-warning,.btn-outline-warning:focus{box-shadow:0 0 0 .25rem rgba(212,117,0,.5)}.btn-check:checked+.btn-outline-warning,.btn-check:active+.btn-outline-warning,.btn-outline-warning:active,.btn-outline-warning.active,.btn-outline-warning.dropdown-toggle.show{color:#fff;background-color:#d47500;border-color:#d47500}.btn-check:checked+.btn-outline-warning:focus,.btn-check:active+.btn-outline-warning:focus,.btn-outline-warning:active:focus,.btn-outline-warning.active:focus,.btn-outline-warning.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem rgba(212,117,0,.5)}.btn-outline-warning:disabled,.btn-outline-warning.disabled{color:#d47500;background-color:rgba(0,0,0,0)}.btn-outline-danger{color:#cd0200;border-color:#cd0200;background-color:rgba(0,0,0,0)}.btn-outline-danger:hover{color:#fff;background-color:#cd0200;border-color:#cd0200}.btn-check:focus+.btn-outline-danger,.btn-outline-danger:focus{box-shadow:0 0 0 .25rem rgba(205,2,0,.5)}.btn-check:checked+.btn-outline-danger,.btn-check:active+.btn-outline-danger,.btn-outline-danger:active,.btn-outline-danger.active,.btn-outline-danger.dropdown-toggle.show{color:#fff;background-color:#cd0200;border-color:#cd0200}.btn-check:checked+.btn-outline-danger:focus,.btn-check:active+.btn-outline-danger:focus,.btn-outline-danger:active:focus,.btn-outline-danger.active:focus,.btn-outline-danger.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem rgba(205,2,0,.5)}.btn-outline-danger:disabled,.btn-outline-danger.disabled{color:#cd0200;background-color:rgba(0,0,0,0)}.btn-outline-light{color:#eee;border-color:#eee;background-color:rgba(0,0,0,0)}.btn-outline-light:hover{color:#000;background-color:#eee;border-color:#eee}.btn-check:focus+.btn-outline-light,.btn-outline-light:focus{box-shadow:0 0 0 .25rem rgba(238,238,238,.5)}.btn-check:checked+.btn-outline-light,.btn-check:active+.btn-outline-light,.btn-outline-light:active,.btn-outline-light.active,.btn-outline-light.dropdown-toggle.show{color:#000;background-color:#eee;border-color:#eee}.btn-check:checked+.btn-outline-light:focus,.btn-check:active+.btn-outline-light:focus,.btn-outline-light:active:focus,.btn-outline-light.active:focus,.btn-outline-light.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem rgba(238,238,238,.5)}.btn-outline-light:disabled,.btn-outline-light.disabled{color:#eee;background-color:rgba(0,0,0,0)}.btn-outline-dark{color:#333;border-color:#333;background-color:rgba(0,0,0,0)}.btn-outline-dark:hover{color:#fff;background-color:#333;border-color:#333}.btn-check:focus+.btn-outline-dark,.btn-outline-dark:focus{box-shadow:0 0 0 .25rem rgba(51,51,51,.5)}.btn-check:checked+.btn-outline-dark,.btn-check:active+.btn-outline-dark,.btn-outline-dark:active,.btn-outline-dark.active,.btn-outline-dark.dropdown-toggle.show{color:#fff;background-color:#333;border-color:#333}.btn-check:checked+.btn-outline-dark:focus,.btn-check:active+.btn-outline-dark:focus,.btn-outline-dark:active:focus,.btn-outline-dark.active:focus,.btn-outline-dark.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem rgba(51,51,51,.5)}.btn-outline-dark:disabled,.btn-outline-dark.disabled{color:#333;background-color:rgba(0,0,0,0)}.btn-link{font-weight:400;color:#3399f3;text-decoration:underline;-webkit-text-decoration:underline;-moz-text-decoration:underline;-ms-text-decoration:underline;-o-text-decoration:underline}.btn-link:hover{color:#297ac2}.btn-link:disabled,.btn-link.disabled{color:#777}.btn-lg,.btn-group-lg>.btn{padding:.5rem 1rem;font-size:1.25rem;border-radius:.3rem}.btn-sm,.btn-group-sm>.btn{padding:.25rem .5rem;font-size:0.875rem;border-radius:.2rem}.fade{transition:opacity .15s linear}@media(prefers-reduced-motion: reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{height:0;overflow:hidden;transition:height .2s ease}@media(prefers-reduced-motion: reduce){.collapsing{transition:none}}.collapsing.collapse-horizontal{width:0;height:auto;transition:width .35s ease}@media(prefers-reduced-motion: reduce){.collapsing.collapse-horizontal{transition:none}}.dropup,.dropend,.dropdown,.dropstart{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid rgba(0,0,0,0);border-bottom:0;border-left:.3em solid rgba(0,0,0,0)}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{position:absolute;z-index:1000;display:none;min-width:10rem;padding:.5rem 0;margin:0;font-size:1rem;color:#777;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.dropdown-menu[data-bs-popper]{top:100%;left:0;margin-top:.125rem}.dropdown-menu-start{--bs-position: start}.dropdown-menu-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-end{--bs-position: end}.dropdown-menu-end[data-bs-popper]{right:0;left:auto}@media(min-width: 576px){.dropdown-menu-sm-start{--bs-position: start}.dropdown-menu-sm-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-sm-end{--bs-position: end}.dropdown-menu-sm-end[data-bs-popper]{right:0;left:auto}}@media(min-width: 768px){.dropdown-menu-md-start{--bs-position: start}.dropdown-menu-md-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-md-end{--bs-position: end}.dropdown-menu-md-end[data-bs-popper]{right:0;left:auto}}@media(min-width: 992px){.dropdown-menu-lg-start{--bs-position: start}.dropdown-menu-lg-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-lg-end{--bs-position: end}.dropdown-menu-lg-end[data-bs-popper]{right:0;left:auto}}@media(min-width: 1200px){.dropdown-menu-xl-start{--bs-position: start}.dropdown-menu-xl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xl-end{--bs-position: end}.dropdown-menu-xl-end[data-bs-popper]{right:0;left:auto}}@media(min-width: 1400px){.dropdown-menu-xxl-start{--bs-position: start}.dropdown-menu-xxl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xxl-end{--bs-position: end}.dropdown-menu-xxl-end[data-bs-popper]{right:0;left:auto}}.dropup .dropdown-menu[data-bs-popper]{top:auto;bottom:100%;margin-top:0;margin-bottom:.125rem}.dropup .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid rgba(0,0,0,0);border-bottom:.3em solid;border-left:.3em solid rgba(0,0,0,0)}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-menu[data-bs-popper]{top:0;right:auto;left:100%;margin-top:0;margin-left:.125rem}.dropend .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid rgba(0,0,0,0);border-right:0;border-bottom:.3em solid rgba(0,0,0,0);border-left:.3em solid}.dropend .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-toggle::after{vertical-align:0}.dropstart .dropdown-menu[data-bs-popper]{top:0;right:100%;left:auto;margin-top:0;margin-right:.125rem}.dropstart .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}.dropstart .dropdown-toggle::after{display:none}.dropstart .dropdown-toggle::before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid rgba(0,0,0,0);border-right:.3em solid;border-bottom:.3em solid rgba(0,0,0,0)}.dropstart .dropdown-toggle:empty::after{margin-left:0}.dropstart .dropdown-toggle::before{vertical-align:0}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid rgba(0,0,0,.15)}.dropdown-item{display:block;width:100%;padding:.25rem 1rem;clear:both;font-weight:400;color:#2d2d2d;text-align:inherit;text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;white-space:nowrap;background-color:rgba(0,0,0,0);border:0}.dropdown-item:hover,.dropdown-item:focus{color:#292929;background-color:#eee}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#446e9b}.dropdown-item.disabled,.dropdown-item:disabled{color:#999;pointer-events:none;background-color:rgba(0,0,0,0)}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1rem;margin-bottom:0;font-size:0.875rem;color:#777;white-space:nowrap}.dropdown-item-text{display:block;padding:.25rem 1rem;color:#2d2d2d}.dropdown-menu-dark{color:#dee2e6;background-color:#333;border-color:rgba(0,0,0,.15)}.dropdown-menu-dark .dropdown-item{color:#dee2e6}.dropdown-menu-dark .dropdown-item:hover,.dropdown-menu-dark .dropdown-item:focus{color:#fff;background-color:rgba(255,255,255,.15)}.dropdown-menu-dark .dropdown-item.active,.dropdown-menu-dark .dropdown-item:active{color:#fff;background-color:#446e9b}.dropdown-menu-dark .dropdown-item.disabled,.dropdown-menu-dark .dropdown-item:disabled{color:#999}.dropdown-menu-dark .dropdown-divider{border-color:rgba(0,0,0,.15)}.dropdown-menu-dark .dropdown-item-text{color:#dee2e6}.dropdown-menu-dark .dropdown-header{color:#999}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;flex:1 1 auto;-webkit-flex:1 1 auto}.btn-group>.btn-check:checked+.btn,.btn-group>.btn-check:focus+.btn,.btn-group>.btn:hover,.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn-check:checked+.btn,.btn-group-vertical>.btn-check:focus+.btn,.btn-group-vertical>.btn:hover,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn.active{z-index:1}.btn-toolbar{display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;justify-content:flex-start;-webkit-justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn:not(:first-child),.btn-group>.btn-group:not(:first-child){margin-left:-1px}.btn-group>.btn:not(:last-child):not(.dropdown-toggle),.btn-group>.btn-group:not(:last-child)>.btn{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:nth-child(n+3),.btn-group>:not(.btn-check)+.btn,.btn-group>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after,.dropup .dropdown-toggle-split::after,.dropend .dropdown-toggle-split::after{margin-left:0}.dropstart .dropdown-toggle-split::before{margin-right:0}.btn-sm+.dropdown-toggle-split,.btn-group-sm>.btn+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-lg+.dropdown-toggle-split,.btn-group-lg>.btn+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{flex-direction:column;-webkit-flex-direction:column;align-items:flex-start;-webkit-align-items:flex-start;justify-content:center;-webkit-justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn:not(:first-child),.btn-group-vertical>.btn-group:not(:first-child){margin-top:-1px}.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle),.btn-group-vertical>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn~.btn,.btn-group-vertical>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-top-right-radius:0}.nav{display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5rem 1rem;color:#3399f3;text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out}@media(prefers-reduced-motion: reduce){.nav-link{transition:none}}.nav-link:hover,.nav-link:focus{color:#297ac2}.nav-link.disabled{color:#777;pointer-events:none;cursor:default}.nav-tabs{border-bottom:1px solid #dee2e6}.nav-tabs .nav-link{margin-bottom:-1px;background:none;border:1px solid rgba(0,0,0,0);border-top-left-radius:.25rem;border-top-right-radius:.25rem}.nav-tabs .nav-link:hover,.nav-tabs .nav-link:focus{border-color:#eee #eee #dee2e6;isolation:isolate}.nav-tabs .nav-link.disabled{color:#777;background-color:rgba(0,0,0,0);border-color:rgba(0,0,0,0)}.nav-tabs .nav-link.active,.nav-tabs .nav-item.show .nav-link{color:#495057;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{background:none;border:0;border-radius:.25rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#446e9b}.nav-fill>.nav-link,.nav-fill .nav-item{flex:1 1 auto;-webkit-flex:1 1 auto;text-align:center}.nav-justified>.nav-link,.nav-justified .nav-item{flex-basis:0;-webkit-flex-basis:0;flex-grow:1;-webkit-flex-grow:1;text-align:center}.nav-fill .nav-item .nav-link,.nav-justified .nav-item .nav-link{width:100%}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;align-items:center;-webkit-align-items:center;justify-content:space-between;-webkit-justify-content:space-between;padding-top:.5rem;padding-bottom:.5rem}.navbar>.container-xxl,.navbar>.container-xl,.navbar>.container-lg,.navbar>.container-md,.navbar>.container-sm,.navbar>.container,.navbar>.container-fluid{display:flex;display:-webkit-flex;flex-wrap:inherit;-webkit-flex-wrap:inherit;align-items:center;-webkit-align-items:center;justify-content:space-between;-webkit-justify-content:space-between}.navbar-brand{padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;white-space:nowrap}.navbar-nav{display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static}.navbar-text{padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{flex-basis:100%;-webkit-flex-basis:100%;flex-grow:1;-webkit-flex-grow:1;align-items:center;-webkit-align-items:center}.navbar-toggler{padding:.25 0;font-size:1.25rem;line-height:1;background-color:rgba(0,0,0,0);border:1px solid rgba(0,0,0,0);border-radius:.25rem;transition:box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.navbar-toggler{transition:none}}.navbar-toggler:hover{text-decoration:none}.navbar-toggler:focus{text-decoration:none;outline:0;box-shadow:0 0 0 .25rem}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;background-repeat:no-repeat;background-position:center;background-size:100%}.navbar-nav-scroll{max-height:var(--bs-scroll-height, 75vh);overflow-y:auto}@media(min-width: 576px){.navbar-expand-sm{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}.navbar-expand-sm .offcanvas-header{display:none}.navbar-expand-sm .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;-webkit-flex-grow:1;visibility:visible !important;background-color:rgba(0,0,0,0);border-right:0;border-left:0;transition:none;transform:none}.navbar-expand-sm .offcanvas-top,.navbar-expand-sm .offcanvas-bottom{height:auto;border-top:0;border-bottom:0}.navbar-expand-sm .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible}}@media(min-width: 768px){.navbar-expand-md{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}.navbar-expand-md .offcanvas-header{display:none}.navbar-expand-md .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;-webkit-flex-grow:1;visibility:visible !important;background-color:rgba(0,0,0,0);border-right:0;border-left:0;transition:none;transform:none}.navbar-expand-md .offcanvas-top,.navbar-expand-md .offcanvas-bottom{height:auto;border-top:0;border-bottom:0}.navbar-expand-md .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible}}@media(min-width: 992px){.navbar-expand-lg{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}.navbar-expand-lg .offcanvas-header{display:none}.navbar-expand-lg .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;-webkit-flex-grow:1;visibility:visible !important;background-color:rgba(0,0,0,0);border-right:0;border-left:0;transition:none;transform:none}.navbar-expand-lg .offcanvas-top,.navbar-expand-lg .offcanvas-bottom{height:auto;border-top:0;border-bottom:0}.navbar-expand-lg .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible}}@media(min-width: 1200px){.navbar-expand-xl{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}.navbar-expand-xl .offcanvas-header{display:none}.navbar-expand-xl .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;-webkit-flex-grow:1;visibility:visible !important;background-color:rgba(0,0,0,0);border-right:0;border-left:0;transition:none;transform:none}.navbar-expand-xl .offcanvas-top,.navbar-expand-xl .offcanvas-bottom{height:auto;border-top:0;border-bottom:0}.navbar-expand-xl .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible}}@media(min-width: 1400px){.navbar-expand-xxl{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand-xxl .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand-xxl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xxl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xxl .navbar-nav-scroll{overflow:visible}.navbar-expand-xxl .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand-xxl .navbar-toggler{display:none}.navbar-expand-xxl .offcanvas-header{display:none}.navbar-expand-xxl .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;-webkit-flex-grow:1;visibility:visible !important;background-color:rgba(0,0,0,0);border-right:0;border-left:0;transition:none;transform:none}.navbar-expand-xxl .offcanvas-top,.navbar-expand-xxl .offcanvas-bottom{height:auto;border-top:0;border-bottom:0}.navbar-expand-xxl .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible}}.navbar-expand{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-expand .offcanvas-header{display:none}.navbar-expand .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;-webkit-flex-grow:1;visibility:visible !important;background-color:rgba(0,0,0,0);border-right:0;border-left:0;transition:none;transform:none}.navbar-expand .offcanvas-top,.navbar-expand .offcanvas-bottom{height:auto;border-top:0;border-bottom:0}.navbar-expand .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible}.navbar-light{background-color:#eee}.navbar-light .navbar-brand{color:#4f4f4f}.navbar-light .navbar-brand:hover,.navbar-light .navbar-brand:focus{color:#3399f3}.navbar-light .navbar-nav .nav-link{color:#4f4f4f}.navbar-light .navbar-nav .nav-link:hover,.navbar-light .navbar-nav .nav-link:focus{color:rgba(51,153,243,.8)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(79,79,79,.75)}.navbar-light .navbar-nav .show>.nav-link,.navbar-light .navbar-nav .nav-link.active{color:#3399f3}.navbar-light .navbar-toggler{color:#4f4f4f;border-color:rgba(79,79,79,0)}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='%234f4f4f' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-light .navbar-text{color:#4f4f4f}.navbar-light .navbar-text a,.navbar-light .navbar-text a:hover,.navbar-light .navbar-text a:focus{color:#3399f3}.navbar-dark{background-color:#eee}.navbar-dark .navbar-brand{color:#4f4f4f}.navbar-dark .navbar-brand:hover,.navbar-dark .navbar-brand:focus{color:#3399f3}.navbar-dark .navbar-nav .nav-link{color:#4f4f4f}.navbar-dark .navbar-nav .nav-link:hover,.navbar-dark .navbar-nav .nav-link:focus{color:rgba(51,153,243,.8)}.navbar-dark .navbar-nav .nav-link.disabled{color:rgba(79,79,79,.75)}.navbar-dark .navbar-nav .show>.nav-link,.navbar-dark .navbar-nav .active>.nav-link,.navbar-dark .navbar-nav .nav-link.active{color:#3399f3}.navbar-dark .navbar-toggler{color:#4f4f4f;border-color:rgba(79,79,79,0)}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='%234f4f4f' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-dark .navbar-text{color:#4f4f4f}.navbar-dark .navbar-text a,.navbar-dark .navbar-text a:hover,.navbar-dark .navbar-text a:focus{color:#3399f3}.card{position:relative;display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,.125);border-radius:.25rem}.card>hr{margin-right:0;margin-left:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-width:0;border-top-left-radius:calc(0.25rem - 1px);border-top-right-radius:calc(0.25rem - 1px)}.card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:calc(0.25rem - 1px);border-bottom-left-radius:calc(0.25rem - 1px)}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{flex:1 1 auto;-webkit-flex:1 1 auto;padding:1rem 1rem}.card-title{margin-bottom:.5rem}.card-subtitle{margin-top:-0.25rem;margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link+.card-link{margin-left:1rem}.card-header{padding:.5rem 1rem;margin-bottom:0;background-color:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.125)}.card-header:first-child{border-radius:calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0}.card-footer{padding:.5rem 1rem;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.125)}.card-footer:last-child{border-radius:0 0 calc(0.25rem - 1px) calc(0.25rem - 1px)}.card-header-tabs{margin-right:-0.5rem;margin-bottom:-0.5rem;margin-left:-0.5rem;border-bottom:0}.card-header-pills{margin-right:-0.5rem;margin-left:-0.5rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1rem;border-radius:calc(0.25rem - 1px)}.card-img,.card-img-top,.card-img-bottom{width:100%}.card-img,.card-img-top{border-top-left-radius:calc(0.25rem - 1px);border-top-right-radius:calc(0.25rem - 1px)}.card-img,.card-img-bottom{border-bottom-right-radius:calc(0.25rem - 1px);border-bottom-left-radius:calc(0.25rem - 1px)}.card-group>.card{margin-bottom:.75rem}@media(min-width: 576px){.card-group{display:flex;display:-webkit-flex;flex-flow:row wrap;-webkit-flex-flow:row wrap}.card-group>.card{flex:1 0 0%;-webkit-flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-img-top,.card-group>.card:not(:last-child) .card-header{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-img-bottom,.card-group>.card:not(:last-child) .card-footer{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-img-top,.card-group>.card:not(:first-child) .card-header{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-img-bottom,.card-group>.card:not(:first-child) .card-footer{border-bottom-left-radius:0}}.accordion-button{position:relative;display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;width:100%;padding:1rem 1.25rem;font-size:1rem;color:#777;text-align:left;background-color:#fff;border:0;border-radius:0;overflow-anchor:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,border-radius .15s ease}@media(prefers-reduced-motion: reduce){.accordion-button{transition:none}}.accordion-button:not(.collapsed){color:#3d638c;background-color:#ecf1f5;box-shadow:inset 0 -1px 0 rgba(0,0,0,.125)}.accordion-button:not(.collapsed)::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%233d638c'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");transform:rotate(-180deg)}.accordion-button::after{flex-shrink:0;-webkit-flex-shrink:0;width:1.25rem;height:1.25rem;margin-left:auto;content:"";background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23777'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-size:1.25rem;transition:transform .2s ease-in-out}@media(prefers-reduced-motion: reduce){.accordion-button::after{transition:none}}.accordion-button:hover{z-index:2}.accordion-button:focus{z-index:3;border-color:#a2b7cd;outline:0;box-shadow:0 0 0 .25rem rgba(68,110,155,.25)}.accordion-header{margin-bottom:0}.accordion-item{background-color:#fff;border:1px solid rgba(0,0,0,.125)}.accordion-item:first-of-type{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.accordion-item:first-of-type .accordion-button{border-top-left-radius:calc(0.25rem - 1px);border-top-right-radius:calc(0.25rem - 1px)}.accordion-item:not(:first-of-type){border-top:0}.accordion-item:last-of-type{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.accordion-item:last-of-type .accordion-button.collapsed{border-bottom-right-radius:calc(0.25rem - 1px);border-bottom-left-radius:calc(0.25rem - 1px)}.accordion-item:last-of-type .accordion-collapse{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.accordion-body{padding:1rem 1.25rem}.accordion-flush .accordion-collapse{border-width:0}.accordion-flush .accordion-item{border-right:0;border-left:0;border-radius:0}.accordion-flush .accordion-item:first-child{border-top:0}.accordion-flush .accordion-item:last-child{border-bottom:0}.accordion-flush .accordion-item .accordion-button{border-radius:0}.breadcrumb{display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;padding:0 0;margin-bottom:1rem;list-style:none}.breadcrumb-item+.breadcrumb-item{padding-left:.5rem}.breadcrumb-item+.breadcrumb-item::before{float:left;padding-right:.5rem;color:#777;content:var(--bs-breadcrumb-divider, ">") /* rtl: var(--bs-breadcrumb-divider, ">") */}.breadcrumb-item.active{color:#777}.pagination{display:flex;display:-webkit-flex;padding-left:0;list-style:none}.page-link{position:relative;display:block;color:#3399f3;text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;background-color:#fff;border:1px solid #dee2e6;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.page-link{transition:none}}.page-link:hover{z-index:2;color:#297ac2;background-color:#eee;border-color:#dee2e6}.page-link:focus{z-index:3;color:#297ac2;background-color:#eee;outline:0;box-shadow:0 0 0 .25rem rgba(68,110,155,.25)}.page-item:not(:first-child) .page-link{margin-left:-1px}.page-item.active .page-link{z-index:3;color:#fff;background-color:#446e9b;border-color:#446e9b}.page-item.disabled .page-link{color:#777;pointer-events:none;background-color:#fff;border-color:#dee2e6}.page-link{padding:.375rem .75rem}.page-item:first-child .page-link{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.page-item:last-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.pagination-sm .page-link{padding:.25rem .5rem;font-size:0.875rem}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.badge{display:inline-block;padding:.35em .65em;font-size:0.75em;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.alert{position:relative;padding:1rem 1rem;margin-bottom:1rem;border:1px solid rgba(0,0,0,0);border-radius:.25rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:3rem}.alert-dismissible .btn-close{position:absolute;top:0;right:0;z-index:2;padding:1.25rem 1rem}.alert-default{color:#5c5c5c;background-color:#ebebeb;border-color:#e0e0e0}.alert-default .alert-link{color:#4a4a4a}.alert-primary{color:#29425d;background-color:#dae2eb;border-color:#c7d4e1}.alert-primary .alert-link{color:#21354a}.alert-secondary{color:#5c5c5c;background-color:#ebebeb;border-color:#e0e0e0}.alert-secondary .alert-link{color:#4a4a4a}.alert-success{color:#246d14;background-color:#d8f0d3;border-color:#c5e9bc}.alert-success .alert-link{color:#1d5710}.alert-info{color:#1f5c92;background-color:#d6ebfd;border-color:#c2e0fb}.alert-info .alert-link{color:#194a75}.alert-warning{color:#7f4600;background-color:#f6e3cc;border-color:#f2d6b3}.alert-warning .alert-link{color:#663800}.alert-danger{color:#7b0100;background-color:#f5cccc;border-color:#f0b3b3}.alert-danger .alert-link{color:#620100}.alert-light{color:#8f8f8f;background-color:#fcfcfc;border-color:#fafafa}.alert-light .alert-link{color:#727272}.alert-dark{color:#1f1f1f;background-color:#d6d6d6;border-color:#c2c2c2}.alert-dark .alert-link{color:#191919}@keyframes progress-bar-stripes{0%{background-position-x:1rem}}.progress{display:flex;display:-webkit-flex;height:1rem;overflow:hidden;font-size:0.75rem;background-color:#eee;border-radius:.25rem}.progress-bar{display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;justify-content:center;-webkit-justify-content:center;overflow:hidden;color:#fff;text-align:center;white-space:nowrap;background-color:#446e9b;transition:width .6s ease}@media(prefers-reduced-motion: reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-size:1rem 1rem}.progress-bar-animated{animation:1s linear infinite progress-bar-stripes}@media(prefers-reduced-motion: reduce){.progress-bar-animated{animation:none}}.list-group{display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;padding-left:0;margin-bottom:0;border-radius:.25rem}.list-group-numbered{list-style-type:none;counter-reset:section}.list-group-numbered>li::before{content:counters(section, ".") ". ";counter-increment:section}.list-group-item-action{width:100%;color:#495057;text-align:inherit}.list-group-item-action:hover,.list-group-item-action:focus{z-index:1;color:#495057;text-decoration:none;background-color:#f8f9fa}.list-group-item-action:active{color:#777;background-color:#eee}.list-group-item{position:relative;display:block;padding:.5rem 1rem;color:#2d2d2d;text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;background-color:#fff;border:1px solid rgba(0,0,0,.125)}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:#777;pointer-events:none;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#446e9b;border-color:#446e9b}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:-1px;border-top-width:1px}.list-group-horizontal{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}@media(min-width: 576px){.list-group-horizontal-sm{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media(min-width: 768px){.list-group-horizontal-md{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media(min-width: 992px){.list-group-horizontal-lg{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media(min-width: 1200px){.list-group-horizontal-xl{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media(min-width: 1400px){.list-group-horizontal-xxl{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal-xxl>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-xxl>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-xxl>.list-group-item.active{margin-top:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 1px}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-default{color:#5c5c5c;background-color:#ebebeb}.list-group-item-default.list-group-item-action:hover,.list-group-item-default.list-group-item-action:focus{color:#5c5c5c;background-color:#d4d4d4}.list-group-item-default.list-group-item-action.active{color:#fff;background-color:#5c5c5c;border-color:#5c5c5c}.list-group-item-primary{color:#29425d;background-color:#dae2eb}.list-group-item-primary.list-group-item-action:hover,.list-group-item-primary.list-group-item-action:focus{color:#29425d;background-color:#c4cbd4}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#29425d;border-color:#29425d}.list-group-item-secondary{color:#5c5c5c;background-color:#ebebeb}.list-group-item-secondary.list-group-item-action:hover,.list-group-item-secondary.list-group-item-action:focus{color:#5c5c5c;background-color:#d4d4d4}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#5c5c5c;border-color:#5c5c5c}.list-group-item-success{color:#246d14;background-color:#d8f0d3}.list-group-item-success.list-group-item-action:hover,.list-group-item-success.list-group-item-action:focus{color:#246d14;background-color:#c2d8be}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#246d14;border-color:#246d14}.list-group-item-info{color:#1f5c92;background-color:#d6ebfd}.list-group-item-info.list-group-item-action:hover,.list-group-item-info.list-group-item-action:focus{color:#1f5c92;background-color:#c1d4e4}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#1f5c92;border-color:#1f5c92}.list-group-item-warning{color:#7f4600;background-color:#f6e3cc}.list-group-item-warning.list-group-item-action:hover,.list-group-item-warning.list-group-item-action:focus{color:#7f4600;background-color:#ddccb8}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#7f4600;border-color:#7f4600}.list-group-item-danger{color:#7b0100;background-color:#f5cccc}.list-group-item-danger.list-group-item-action:hover,.list-group-item-danger.list-group-item-action:focus{color:#7b0100;background-color:#ddb8b8}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#7b0100;border-color:#7b0100}.list-group-item-light{color:#8f8f8f;background-color:#fcfcfc}.list-group-item-light.list-group-item-action:hover,.list-group-item-light.list-group-item-action:focus{color:#8f8f8f;background-color:#e3e3e3}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#8f8f8f;border-color:#8f8f8f}.list-group-item-dark{color:#1f1f1f;background-color:#d6d6d6}.list-group-item-dark.list-group-item-action:hover,.list-group-item-dark.list-group-item-action:focus{color:#1f1f1f;background-color:#c1c1c1}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#1f1f1f;border-color:#1f1f1f}.btn-close{box-sizing:content-box;width:1em;height:1em;padding:.25em .25em;color:#000;background:rgba(0,0,0,0) url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat;border:0;border-radius:.25rem;opacity:.5}.btn-close:hover{color:#000;text-decoration:none;opacity:.75}.btn-close:focus{outline:0;box-shadow:0 0 0 .25rem rgba(68,110,155,.25);opacity:1}.btn-close:disabled,.btn-close.disabled{pointer-events:none;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;opacity:.25}.btn-close-white{filter:invert(1) grayscale(100%) brightness(200%)}.toast{width:350px;max-width:100%;font-size:0.875rem;pointer-events:auto;background-color:rgba(255,255,255,.85);background-clip:padding-box;border:1px solid rgba(0,0,0,.1);box-shadow:0 .5rem 1rem rgba(0,0,0,.15);border-radius:.25rem}.toast.showing{opacity:0}.toast:not(.show){display:none}.toast-container{width:max-content;width:-webkit-max-content;width:-moz-max-content;width:-ms-max-content;width:-o-max-content;max-width:100%;pointer-events:none}.toast-container>:not(:last-child){margin-bottom:.75rem}.toast-header{display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;padding:.5rem .75rem;color:#777;background-color:rgba(255,255,255,.85);background-clip:padding-box;border-bottom:1px solid rgba(0,0,0,.05);border-top-left-radius:calc(0.25rem - 1px);border-top-right-radius:calc(0.25rem - 1px)}.toast-header .btn-close{margin-right:-0.375rem;margin-left:.75rem}.toast-body{padding:.75rem;word-wrap:break-word}.modal{position:fixed;top:0;left:0;z-index:1055;display:none;width:100%;height:100%;overflow-x:hidden;overflow-y:auto;outline:0}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{transition:transform .3s ease-out;transform:translate(0, -50px)}@media(prefers-reduced-motion: reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{transform:none}.modal.modal-static .modal-dialog{transform:scale(1.02)}.modal-dialog-scrollable{height:calc(100% - 1rem)}.modal-dialog-scrollable .modal-content{max-height:100%;overflow:hidden}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;min-height:calc(100% - 1rem)}.modal-content{position:relative;display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem;outline:0}.modal-backdrop{position:fixed;top:0;left:0;z-index:1050;width:100vw;height:100vh;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:flex;display:-webkit-flex;flex-shrink:0;-webkit-flex-shrink:0;align-items:center;-webkit-align-items:center;justify-content:space-between;-webkit-justify-content:space-between;padding:1rem 1rem;border-bottom:1px solid #dee2e6;border-top-left-radius:calc(0.3rem - 1px);border-top-right-radius:calc(0.3rem - 1px)}.modal-header .btn-close{padding:.5rem .5rem;margin:-0.5rem -0.5rem -0.5rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;flex:1 1 auto;-webkit-flex:1 1 auto;padding:1rem}.modal-footer{display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;flex-shrink:0;-webkit-flex-shrink:0;align-items:center;-webkit-align-items:center;justify-content:flex-end;-webkit-justify-content:flex-end;padding:.75rem;border-top:1px solid #dee2e6;border-bottom-right-radius:calc(0.3rem - 1px);border-bottom-left-radius:calc(0.3rem - 1px)}.modal-footer>*{margin:.25rem}@media(min-width: 576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-scrollable{height:calc(100% - 3.5rem)}.modal-dialog-centered{min-height:calc(100% - 3.5rem)}.modal-sm{max-width:300px}}@media(min-width: 992px){.modal-lg,.modal-xl{max-width:800px}}@media(min-width: 1200px){.modal-xl{max-width:1140px}}.modal-fullscreen{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen .modal-header{border-radius:0}.modal-fullscreen .modal-body{overflow-y:auto}.modal-fullscreen .modal-footer{border-radius:0}@media(max-width: 575.98px){.modal-fullscreen-sm-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-sm-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-sm-down .modal-header{border-radius:0}.modal-fullscreen-sm-down .modal-body{overflow-y:auto}.modal-fullscreen-sm-down .modal-footer{border-radius:0}}@media(max-width: 767.98px){.modal-fullscreen-md-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-md-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-md-down .modal-header{border-radius:0}.modal-fullscreen-md-down .modal-body{overflow-y:auto}.modal-fullscreen-md-down .modal-footer{border-radius:0}}@media(max-width: 991.98px){.modal-fullscreen-lg-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-lg-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-lg-down .modal-header{border-radius:0}.modal-fullscreen-lg-down .modal-body{overflow-y:auto}.modal-fullscreen-lg-down .modal-footer{border-radius:0}}@media(max-width: 1199.98px){.modal-fullscreen-xl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xl-down .modal-header{border-radius:0}.modal-fullscreen-xl-down .modal-body{overflow-y:auto}.modal-fullscreen-xl-down .modal-footer{border-radius:0}}@media(max-width: 1399.98px){.modal-fullscreen-xxl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xxl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xxl-down .modal-header{border-radius:0}.modal-fullscreen-xxl-down .modal-body{overflow-y:auto}.modal-fullscreen-xxl-down .modal-footer{border-radius:0}}.tooltip{position:absolute;z-index:1080;display:block;margin:0;font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:0.875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip .tooltip-arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .tooltip-arrow::before{position:absolute;content:"";border-color:rgba(0,0,0,0);border-style:solid}.bs-tooltip-top,.bs-tooltip-auto[data-popper-placement^=top]{padding:.4rem 0}.bs-tooltip-top .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow{bottom:0}.bs-tooltip-top .tooltip-arrow::before,.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow::before{top:-1px;border-width:.4rem .4rem 0;border-top-color:#000}.bs-tooltip-end,.bs-tooltip-auto[data-popper-placement^=right]{padding:0 .4rem}.bs-tooltip-end .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-end .tooltip-arrow::before,.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow::before{right:-1px;border-width:.4rem .4rem .4rem 0;border-right-color:#000}.bs-tooltip-bottom,.bs-tooltip-auto[data-popper-placement^=bottom]{padding:.4rem 0}.bs-tooltip-bottom .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow{top:0}.bs-tooltip-bottom .tooltip-arrow::before,.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow::before{bottom:-1px;border-width:0 .4rem .4rem;border-bottom-color:#000}.bs-tooltip-start,.bs-tooltip-auto[data-popper-placement^=left]{padding:0 .4rem}.bs-tooltip-start .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-start .tooltip-arrow::before,.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow::before{left:-1px;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}.tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000;border-radius:.25rem}.popover{position:absolute;top:0;left:0 /* rtl:ignore */;z-index:1070;display:block;max-width:276px;font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:0.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem}.popover .popover-arrow{position:absolute;display:block;width:1rem;height:.5rem}.popover .popover-arrow::before,.popover .popover-arrow::after{position:absolute;display:block;content:"";border-color:rgba(0,0,0,0);border-style:solid}.bs-popover-top>.popover-arrow,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow{bottom:calc(-0.5rem - 1px)}.bs-popover-top>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::before{bottom:0;border-width:.5rem .5rem 0;border-top-color:rgba(0,0,0,.25)}.bs-popover-top>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}.bs-popover-end>.popover-arrow,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow{left:calc(-0.5rem - 1px);width:.5rem;height:1rem}.bs-popover-end>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:rgba(0,0,0,.25)}.bs-popover-end>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}.bs-popover-bottom>.popover-arrow,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow{top:calc(-0.5rem - 1px)}.bs-popover-bottom>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::before{top:0;border-width:0 .5rem .5rem .5rem;border-bottom-color:rgba(0,0,0,.25)}.bs-popover-bottom>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::after{top:1px;border-width:0 .5rem .5rem .5rem;border-bottom-color:#fff}.bs-popover-bottom .popover-header::before,.bs-popover-auto[data-popper-placement^=bottom] .popover-header::before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-0.5rem;content:"";border-bottom:1px solid #f0f0f0}.bs-popover-start>.popover-arrow,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow{right:calc(-0.5rem - 1px);width:.5rem;height:1rem}.bs-popover-start>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:rgba(0,0,0,.25)}.bs-popover-start>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}.popover-header{padding:.5rem 1rem;margin-bottom:0;font-size:1rem;color:#2d2d2d;background-color:#f0f0f0;border-bottom:1px solid rgba(0,0,0,.2);border-top-left-radius:calc(0.3rem - 1px);border-top-right-radius:calc(0.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:1rem 1rem;color:#777}.carousel{position:relative}.carousel.pointer-event{touch-action:pan-y;-webkit-touch-action:pan-y;-moz-touch-action:pan-y;-ms-touch-action:pan-y;-o-touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner::after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;backface-visibility:hidden;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;-ms-backface-visibility:hidden;-o-backface-visibility:hidden;transition:transform .6s ease-in-out}@media(prefers-reduced-motion: reduce){.carousel-item{transition:none}}.carousel-item.active,.carousel-item-next,.carousel-item-prev{display:block}.carousel-item-next:not(.carousel-item-start),.active.carousel-item-end{transform:translateX(100%)}.carousel-item-prev:not(.carousel-item-end),.active.carousel-item-start{transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}.carousel-fade .carousel-item.active,.carousel-fade .carousel-item-next.carousel-item-start,.carousel-fade .carousel-item-prev.carousel-item-end{z-index:1;opacity:1}.carousel-fade .active.carousel-item-start,.carousel-fade .active.carousel-item-end{z-index:0;opacity:0;transition:opacity 0s .6s}@media(prefers-reduced-motion: reduce){.carousel-fade .active.carousel-item-start,.carousel-fade .active.carousel-item-end{transition:none}}.carousel-control-prev,.carousel-control-next{position:absolute;top:0;bottom:0;z-index:1;display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;justify-content:center;-webkit-justify-content:center;width:15%;padding:0;color:#fff;text-align:center;background:none;border:0;opacity:.5;transition:opacity .15s ease}@media(prefers-reduced-motion: reduce){.carousel-control-prev,.carousel-control-next{transition:none}}.carousel-control-prev:hover,.carousel-control-prev:focus,.carousel-control-next:hover,.carousel-control-next:focus{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-prev-icon,.carousel-control-next-icon{display:inline-block;width:2rem;height:2rem;background-repeat:no-repeat;background-position:50%;background-size:100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:2;display:flex;display:-webkit-flex;justify-content:center;-webkit-justify-content:center;padding:0;margin-right:15%;margin-bottom:1rem;margin-left:15%;list-style:none}.carousel-indicators [data-bs-target]{box-sizing:content-box;flex:0 1 auto;-webkit-flex:0 1 auto;width:30px;height:3px;padding:0;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border:0;border-top:10px solid rgba(0,0,0,0);border-bottom:10px solid rgba(0,0,0,0);opacity:.5;transition:opacity .6s ease}@media(prefers-reduced-motion: reduce){.carousel-indicators [data-bs-target]{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:1.25rem;left:15%;padding-top:1.25rem;padding-bottom:1.25rem;color:#fff;text-align:center}.carousel-dark .carousel-control-prev-icon,.carousel-dark .carousel-control-next-icon{filter:invert(1) grayscale(100)}.carousel-dark .carousel-indicators [data-bs-target]{background-color:#000}.carousel-dark .carousel-caption{color:#000}@keyframes spinner-border{to{transform:rotate(360deg) /* rtl:ignore */}}.spinner-border{display:inline-block;width:2rem;height:2rem;vertical-align:-0.125em;border:.25em solid currentColor;border-right-color:rgba(0,0,0,0);border-radius:50%;animation:.75s linear infinite spinner-border}.spinner-border-sm{width:1rem;height:1rem;border-width:.2em}@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}.spinner-grow{display:inline-block;width:2rem;height:2rem;vertical-align:-0.125em;background-color:currentColor;border-radius:50%;opacity:0;animation:.75s linear infinite spinner-grow}.spinner-grow-sm{width:1rem;height:1rem}@media(prefers-reduced-motion: reduce){.spinner-border,.spinner-grow{animation-duration:1.5s;-webkit-animation-duration:1.5s;-moz-animation-duration:1.5s;-ms-animation-duration:1.5s;-o-animation-duration:1.5s}}.offcanvas{position:fixed;bottom:0;z-index:1045;display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;max-width:100%;visibility:hidden;background-color:#fff;background-clip:padding-box;outline:0;transition:transform .3s ease-in-out}@media(prefers-reduced-motion: reduce){.offcanvas{transition:none}}.offcanvas-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.offcanvas-backdrop.fade{opacity:0}.offcanvas-backdrop.show{opacity:.5}.offcanvas-header{display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;justify-content:space-between;-webkit-justify-content:space-between;padding:1rem 1rem}.offcanvas-header .btn-close{padding:.5rem .5rem;margin-top:-0.5rem;margin-right:-0.5rem;margin-bottom:-0.5rem}.offcanvas-title{margin-bottom:0;line-height:1.5}.offcanvas-body{flex-grow:1;-webkit-flex-grow:1;padding:1rem 1rem;overflow-y:auto}.offcanvas-start{top:0;left:0;width:400px;border-right:1px solid rgba(0,0,0,.2);transform:translateX(-100%)}.offcanvas-end{top:0;right:0;width:400px;border-left:1px solid rgba(0,0,0,.2);transform:translateX(100%)}.offcanvas-top{top:0;right:0;left:0;height:30vh;max-height:100%;border-bottom:1px solid rgba(0,0,0,.2);transform:translateY(-100%)}.offcanvas-bottom{right:0;left:0;height:30vh;max-height:100%;border-top:1px solid rgba(0,0,0,.2);transform:translateY(100%)}.offcanvas.show{transform:none}.placeholder{display:inline-block;min-height:1em;vertical-align:middle;cursor:wait;background-color:currentColor;opacity:.5}.placeholder.btn::before{display:inline-block;content:""}.placeholder-xs{min-height:.6em}.placeholder-sm{min-height:.8em}.placeholder-lg{min-height:1.2em}.placeholder-glow .placeholder{animation:placeholder-glow 2s ease-in-out infinite}@keyframes placeholder-glow{50%{opacity:.2}}.placeholder-wave{mask-image:linear-gradient(130deg, #000 55%, rgba(0, 0, 0, 0.8) 75%, #000 95%);-webkit-mask-image:linear-gradient(130deg, #000 55%, rgba(0, 0, 0, 0.8) 75%, #000 95%);mask-size:200% 100%;-webkit-mask-size:200% 100%;animation:placeholder-wave 2s linear infinite}@keyframes placeholder-wave{100%{mask-position:-200% 0%;-webkit-mask-position:-200% 0%}}.clearfix::after{display:block;clear:both;content:""}.link-default{color:#999}.link-default:hover,.link-default:focus{color:#7a7a7a}.link-primary{color:#446e9b}.link-primary:hover,.link-primary:focus{color:#36587c}.link-secondary{color:#999}.link-secondary:hover,.link-secondary:focus{color:#7a7a7a}.link-success{color:#3cb521}.link-success:hover,.link-success:focus{color:#30911a}.link-info{color:#3399f3}.link-info:hover,.link-info:focus{color:#297ac2}.link-warning{color:#d47500}.link-warning:hover,.link-warning:focus{color:#aa5e00}.link-danger{color:#cd0200}.link-danger:hover,.link-danger:focus{color:#a40200}.link-light{color:#eee}.link-light:hover,.link-light:focus{color:#f1f1f1}.link-dark{color:#333}.link-dark:hover,.link-dark:focus{color:#292929}.ratio{position:relative;width:100%}.ratio::before{display:block;padding-top:var(--bs-aspect-ratio);content:""}.ratio>*{position:absolute;top:0;left:0;width:100%;height:100%}.ratio-1x1{--bs-aspect-ratio: 100%}.ratio-4x3{--bs-aspect-ratio: 75%}.ratio-16x9{--bs-aspect-ratio: 56.25%}.ratio-21x9{--bs-aspect-ratio: 42.8571428571%}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}.sticky-top{position:sticky;top:0;z-index:1020}@media(min-width: 576px){.sticky-sm-top{position:sticky;top:0;z-index:1020}}@media(min-width: 768px){.sticky-md-top{position:sticky;top:0;z-index:1020}}@media(min-width: 992px){.sticky-lg-top{position:sticky;top:0;z-index:1020}}@media(min-width: 1200px){.sticky-xl-top{position:sticky;top:0;z-index:1020}}@media(min-width: 1400px){.sticky-xxl-top{position:sticky;top:0;z-index:1020}}.hstack{display:flex;display:-webkit-flex;flex-direction:row;-webkit-flex-direction:row;align-items:center;-webkit-align-items:center;align-self:stretch;-webkit-align-self:stretch}.vstack{display:flex;display:-webkit-flex;flex:1 1 auto;-webkit-flex:1 1 auto;flex-direction:column;-webkit-flex-direction:column;align-self:stretch;-webkit-align-self:stretch}.visually-hidden,.visually-hidden-focusable:not(:focus):not(:focus-within){position:absolute !important;width:1px !important;height:1px !important;padding:0 !important;margin:-1px !important;overflow:hidden !important;clip:rect(0, 0, 0, 0) !important;white-space:nowrap !important;border:0 !important}.stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;content:""}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vr{display:inline-block;align-self:stretch;-webkit-align-self:stretch;width:1px;min-height:1em;background-color:currentColor;opacity:.25}.align-baseline{vertical-align:baseline !important}.align-top{vertical-align:top !important}.align-middle{vertical-align:middle !important}.align-bottom{vertical-align:bottom !important}.align-text-bottom{vertical-align:text-bottom !important}.align-text-top{vertical-align:text-top !important}.float-start{float:left !important}.float-end{float:right !important}.float-none{float:none !important}.opacity-0{opacity:0 !important}.opacity-25{opacity:.25 !important}.opacity-50{opacity:.5 !important}.opacity-75{opacity:.75 !important}.opacity-100{opacity:1 !important}.overflow-auto{overflow:auto !important}.overflow-hidden{overflow:hidden !important}.overflow-visible{overflow:visible !important}.overflow-scroll{overflow:scroll !important}.d-inline{display:inline !important}.d-inline-block{display:inline-block !important}.d-block{display:block !important}.d-grid{display:grid !important}.d-table{display:table !important}.d-table-row{display:table-row !important}.d-table-cell{display:table-cell !important}.d-flex{display:flex !important}.d-inline-flex{display:inline-flex !important}.d-none{display:none !important}.shadow{box-shadow:0 .5rem 1rem rgba(0,0,0,.15) !important}.shadow-sm{box-shadow:0 .125rem .25rem rgba(0,0,0,.075) !important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,.175) !important}.shadow-none{box-shadow:none !important}.position-static{position:static !important}.position-relative{position:relative !important}.position-absolute{position:absolute !important}.position-fixed{position:fixed !important}.position-sticky{position:sticky !important}.top-0{top:0 !important}.top-50{top:50% !important}.top-100{top:100% !important}.bottom-0{bottom:0 !important}.bottom-50{bottom:50% !important}.bottom-100{bottom:100% !important}.start-0{left:0 !important}.start-50{left:50% !important}.start-100{left:100% !important}.end-0{right:0 !important}.end-50{right:50% !important}.end-100{right:100% !important}.translate-middle{transform:translate(-50%, -50%) !important}.translate-middle-x{transform:translateX(-50%) !important}.translate-middle-y{transform:translateY(-50%) !important}.border{border:1px solid #dee2e6 !important}.border-0{border:0 !important}.border-top{border-top:1px solid #dee2e6 !important}.border-top-0{border-top:0 !important}.border-end{border-right:1px solid #dee2e6 !important}.border-end-0{border-right:0 !important}.border-bottom{border-bottom:1px solid #dee2e6 !important}.border-bottom-0{border-bottom:0 !important}.border-start{border-left:1px solid #dee2e6 !important}.border-start-0{border-left:0 !important}.border-default{border-color:#999 !important}.border-primary{border-color:#446e9b !important}.border-secondary{border-color:#999 !important}.border-success{border-color:#3cb521 !important}.border-info{border-color:#3399f3 !important}.border-warning{border-color:#d47500 !important}.border-danger{border-color:#cd0200 !important}.border-light{border-color:#eee !important}.border-dark{border-color:#333 !important}.border-white{border-color:#fff !important}.border-1{border-width:1px !important}.border-2{border-width:2px !important}.border-3{border-width:3px !important}.border-4{border-width:4px !important}.border-5{border-width:5px !important}.w-25{width:25% !important}.w-50{width:50% !important}.w-75{width:75% !important}.w-100{width:100% !important}.w-auto{width:auto !important}.mw-100{max-width:100% !important}.vw-100{width:100vw !important}.min-vw-100{min-width:100vw !important}.h-25{height:25% !important}.h-50{height:50% !important}.h-75{height:75% !important}.h-100{height:100% !important}.h-auto{height:auto !important}.mh-100{max-height:100% !important}.vh-100{height:100vh !important}.min-vh-100{min-height:100vh !important}.flex-fill{flex:1 1 auto !important}.flex-row{flex-direction:row !important}.flex-column{flex-direction:column !important}.flex-row-reverse{flex-direction:row-reverse !important}.flex-column-reverse{flex-direction:column-reverse !important}.flex-grow-0{flex-grow:0 !important}.flex-grow-1{flex-grow:1 !important}.flex-shrink-0{flex-shrink:0 !important}.flex-shrink-1{flex-shrink:1 !important}.flex-wrap{flex-wrap:wrap !important}.flex-nowrap{flex-wrap:nowrap !important}.flex-wrap-reverse{flex-wrap:wrap-reverse !important}.gap-0{gap:0 !important}.gap-1{gap:.25rem !important}.gap-2{gap:.5rem !important}.gap-3{gap:1rem !important}.gap-4{gap:1.5rem !important}.gap-5{gap:3rem !important}.justify-content-start{justify-content:flex-start !important}.justify-content-end{justify-content:flex-end !important}.justify-content-center{justify-content:center !important}.justify-content-between{justify-content:space-between !important}.justify-content-around{justify-content:space-around !important}.justify-content-evenly{justify-content:space-evenly !important}.align-items-start{align-items:flex-start !important}.align-items-end{align-items:flex-end !important}.align-items-center{align-items:center !important}.align-items-baseline{align-items:baseline !important}.align-items-stretch{align-items:stretch !important}.align-content-start{align-content:flex-start !important}.align-content-end{align-content:flex-end !important}.align-content-center{align-content:center !important}.align-content-between{align-content:space-between !important}.align-content-around{align-content:space-around !important}.align-content-stretch{align-content:stretch !important}.align-self-auto{align-self:auto !important}.align-self-start{align-self:flex-start !important}.align-self-end{align-self:flex-end !important}.align-self-center{align-self:center !important}.align-self-baseline{align-self:baseline !important}.align-self-stretch{align-self:stretch !important}.order-first{order:-1 !important}.order-0{order:0 !important}.order-1{order:1 !important}.order-2{order:2 !important}.order-3{order:3 !important}.order-4{order:4 !important}.order-5{order:5 !important}.order-last{order:6 !important}.m-0{margin:0 !important}.m-1{margin:.25rem !important}.m-2{margin:.5rem !important}.m-3{margin:1rem !important}.m-4{margin:1.5rem !important}.m-5{margin:3rem !important}.m-auto{margin:auto !important}.mx-0{margin-right:0 !important;margin-left:0 !important}.mx-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-3{margin-right:1rem !important;margin-left:1rem !important}.mx-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-5{margin-right:3rem !important;margin-left:3rem !important}.mx-auto{margin-right:auto !important;margin-left:auto !important}.my-0{margin-top:0 !important;margin-bottom:0 !important}.my-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-0{margin-top:0 !important}.mt-1{margin-top:.25rem !important}.mt-2{margin-top:.5rem !important}.mt-3{margin-top:1rem !important}.mt-4{margin-top:1.5rem !important}.mt-5{margin-top:3rem !important}.mt-auto{margin-top:auto !important}.me-0{margin-right:0 !important}.me-1{margin-right:.25rem !important}.me-2{margin-right:.5rem !important}.me-3{margin-right:1rem !important}.me-4{margin-right:1.5rem !important}.me-5{margin-right:3rem !important}.me-auto{margin-right:auto !important}.mb-0{margin-bottom:0 !important}.mb-1{margin-bottom:.25rem !important}.mb-2{margin-bottom:.5rem !important}.mb-3{margin-bottom:1rem !important}.mb-4{margin-bottom:1.5rem !important}.mb-5{margin-bottom:3rem !important}.mb-auto{margin-bottom:auto !important}.ms-0{margin-left:0 !important}.ms-1{margin-left:.25rem !important}.ms-2{margin-left:.5rem !important}.ms-3{margin-left:1rem !important}.ms-4{margin-left:1.5rem !important}.ms-5{margin-left:3rem !important}.ms-auto{margin-left:auto !important}.p-0{padding:0 !important}.p-1{padding:.25rem !important}.p-2{padding:.5rem !important}.p-3{padding:1rem !important}.p-4{padding:1.5rem !important}.p-5{padding:3rem !important}.px-0{padding-right:0 !important;padding-left:0 !important}.px-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-3{padding-right:1rem !important;padding-left:1rem !important}.px-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-5{padding-right:3rem !important;padding-left:3rem !important}.py-0{padding-top:0 !important;padding-bottom:0 !important}.py-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-0{padding-top:0 !important}.pt-1{padding-top:.25rem !important}.pt-2{padding-top:.5rem !important}.pt-3{padding-top:1rem !important}.pt-4{padding-top:1.5rem !important}.pt-5{padding-top:3rem !important}.pe-0{padding-right:0 !important}.pe-1{padding-right:.25rem !important}.pe-2{padding-right:.5rem !important}.pe-3{padding-right:1rem !important}.pe-4{padding-right:1.5rem !important}.pe-5{padding-right:3rem !important}.pb-0{padding-bottom:0 !important}.pb-1{padding-bottom:.25rem !important}.pb-2{padding-bottom:.5rem !important}.pb-3{padding-bottom:1rem !important}.pb-4{padding-bottom:1.5rem !important}.pb-5{padding-bottom:3rem !important}.ps-0{padding-left:0 !important}.ps-1{padding-left:.25rem !important}.ps-2{padding-left:.5rem !important}.ps-3{padding-left:1rem !important}.ps-4{padding-left:1.5rem !important}.ps-5{padding-left:3rem !important}.font-monospace{font-family:var(--bs-font-monospace) !important}.fs-1{font-size:calc(1.325rem + 0.9vw) !important}.fs-2{font-size:calc(1.29rem + 0.48vw) !important}.fs-3{font-size:calc(1.27rem + 0.24vw) !important}.fs-4{font-size:1.25rem !important}.fs-5{font-size:1.1rem !important}.fs-6{font-size:1rem !important}.fst-italic{font-style:italic !important}.fst-normal{font-style:normal !important}.fw-light{font-weight:300 !important}.fw-lighter{font-weight:lighter !important}.fw-normal{font-weight:400 !important}.fw-bold{font-weight:700 !important}.fw-bolder{font-weight:bolder !important}.lh-1{line-height:1 !important}.lh-sm{line-height:1.25 !important}.lh-base{line-height:1.5 !important}.lh-lg{line-height:2 !important}.text-start{text-align:left !important}.text-end{text-align:right !important}.text-center{text-align:center !important}.text-decoration-none{text-decoration:none !important}.text-decoration-underline{text-decoration:underline !important}.text-decoration-line-through{text-decoration:line-through !important}.text-lowercase{text-transform:lowercase !important}.text-uppercase{text-transform:uppercase !important}.text-capitalize{text-transform:capitalize !important}.text-wrap{white-space:normal !important}.text-nowrap{white-space:nowrap !important}.text-break{word-wrap:break-word !important;word-break:break-word !important}.text-default{--bs-text-opacity: 1;color:rgba(var(--bs-default-rgb), var(--bs-text-opacity)) !important}.text-primary{--bs-text-opacity: 1;color:rgba(var(--bs-primary-rgb), var(--bs-text-opacity)) !important}.text-secondary{--bs-text-opacity: 1;color:rgba(var(--bs-secondary-rgb), var(--bs-text-opacity)) !important}.text-success{--bs-text-opacity: 1;color:rgba(var(--bs-success-rgb), var(--bs-text-opacity)) !important}.text-info{--bs-text-opacity: 1;color:rgba(var(--bs-info-rgb), var(--bs-text-opacity)) !important}.text-warning{--bs-text-opacity: 1;color:rgba(var(--bs-warning-rgb), var(--bs-text-opacity)) !important}.text-danger{--bs-text-opacity: 1;color:rgba(var(--bs-danger-rgb), var(--bs-text-opacity)) !important}.text-light{--bs-text-opacity: 1;color:rgba(var(--bs-light-rgb), var(--bs-text-opacity)) !important}.text-dark{--bs-text-opacity: 1;color:rgba(var(--bs-dark-rgb), var(--bs-text-opacity)) !important}.text-black{--bs-text-opacity: 1;color:rgba(var(--bs-black-rgb), var(--bs-text-opacity)) !important}.text-white{--bs-text-opacity: 1;color:rgba(var(--bs-white-rgb), var(--bs-text-opacity)) !important}.text-body{--bs-text-opacity: 1;color:rgba(var(--bs-body-color-rgb), var(--bs-text-opacity)) !important}.text-muted{--bs-text-opacity: 1;color:#777 !important}.text-black-50{--bs-text-opacity: 1;color:rgba(0,0,0,.5) !important}.text-white-50{--bs-text-opacity: 1;color:rgba(255,255,255,.5) !important}.text-reset{--bs-text-opacity: 1;color:inherit !important}.text-opacity-25{--bs-text-opacity: 0.25}.text-opacity-50{--bs-text-opacity: 0.5}.text-opacity-75{--bs-text-opacity: 0.75}.text-opacity-100{--bs-text-opacity: 1}.bg-default{--bs-bg-opacity: 1;background-color:rgba(var(--bs-default-rgb), var(--bs-bg-opacity)) !important}.bg-primary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-primary-rgb), var(--bs-bg-opacity)) !important}.bg-secondary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-secondary-rgb), var(--bs-bg-opacity)) !important}.bg-success{--bs-bg-opacity: 1;background-color:rgba(var(--bs-success-rgb), var(--bs-bg-opacity)) !important}.bg-info{--bs-bg-opacity: 1;background-color:rgba(var(--bs-info-rgb), var(--bs-bg-opacity)) !important}.bg-warning{--bs-bg-opacity: 1;background-color:rgba(var(--bs-warning-rgb), var(--bs-bg-opacity)) !important}.bg-danger{--bs-bg-opacity: 1;background-color:rgba(var(--bs-danger-rgb), var(--bs-bg-opacity)) !important}.bg-light{--bs-bg-opacity: 1;background-color:rgba(var(--bs-light-rgb), var(--bs-bg-opacity)) !important}.bg-dark{--bs-bg-opacity: 1;background-color:rgba(var(--bs-dark-rgb), var(--bs-bg-opacity)) !important}.bg-black{--bs-bg-opacity: 1;background-color:rgba(var(--bs-black-rgb), var(--bs-bg-opacity)) !important}.bg-white{--bs-bg-opacity: 1;background-color:rgba(var(--bs-white-rgb), var(--bs-bg-opacity)) !important}.bg-body{--bs-bg-opacity: 1;background-color:rgba(var(--bs-body-bg-rgb), var(--bs-bg-opacity)) !important}.bg-transparent{--bs-bg-opacity: 1;background-color:rgba(0,0,0,0) !important}.bg-opacity-10{--bs-bg-opacity: 0.1}.bg-opacity-25{--bs-bg-opacity: 0.25}.bg-opacity-50{--bs-bg-opacity: 0.5}.bg-opacity-75{--bs-bg-opacity: 0.75}.bg-opacity-100{--bs-bg-opacity: 1}.bg-gradient{background-image:var(--bs-gradient) !important}.user-select-all{user-select:all !important}.user-select-auto{user-select:auto !important}.user-select-none{user-select:none !important}.pe-none{pointer-events:none !important}.pe-auto{pointer-events:auto !important}.rounded{border-radius:.25rem !important}.rounded-0{border-radius:0 !important}.rounded-1{border-radius:.2rem !important}.rounded-2{border-radius:.25rem !important}.rounded-3{border-radius:.3rem !important}.rounded-circle{border-radius:50% !important}.rounded-pill{border-radius:50rem !important}.rounded-top{border-top-left-radius:.25rem !important;border-top-right-radius:.25rem !important}.rounded-end{border-top-right-radius:.25rem !important;border-bottom-right-radius:.25rem !important}.rounded-bottom{border-bottom-right-radius:.25rem !important;border-bottom-left-radius:.25rem !important}.rounded-start{border-bottom-left-radius:.25rem !important;border-top-left-radius:.25rem !important}.visible{visibility:visible !important}.invisible{visibility:hidden !important}@media(min-width: 576px){.float-sm-start{float:left !important}.float-sm-end{float:right !important}.float-sm-none{float:none !important}.d-sm-inline{display:inline !important}.d-sm-inline-block{display:inline-block !important}.d-sm-block{display:block !important}.d-sm-grid{display:grid !important}.d-sm-table{display:table !important}.d-sm-table-row{display:table-row !important}.d-sm-table-cell{display:table-cell !important}.d-sm-flex{display:flex !important}.d-sm-inline-flex{display:inline-flex !important}.d-sm-none{display:none !important}.flex-sm-fill{flex:1 1 auto !important}.flex-sm-row{flex-direction:row !important}.flex-sm-column{flex-direction:column !important}.flex-sm-row-reverse{flex-direction:row-reverse !important}.flex-sm-column-reverse{flex-direction:column-reverse !important}.flex-sm-grow-0{flex-grow:0 !important}.flex-sm-grow-1{flex-grow:1 !important}.flex-sm-shrink-0{flex-shrink:0 !important}.flex-sm-shrink-1{flex-shrink:1 !important}.flex-sm-wrap{flex-wrap:wrap !important}.flex-sm-nowrap{flex-wrap:nowrap !important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse !important}.gap-sm-0{gap:0 !important}.gap-sm-1{gap:.25rem !important}.gap-sm-2{gap:.5rem !important}.gap-sm-3{gap:1rem !important}.gap-sm-4{gap:1.5rem !important}.gap-sm-5{gap:3rem !important}.justify-content-sm-start{justify-content:flex-start !important}.justify-content-sm-end{justify-content:flex-end !important}.justify-content-sm-center{justify-content:center !important}.justify-content-sm-between{justify-content:space-between !important}.justify-content-sm-around{justify-content:space-around !important}.justify-content-sm-evenly{justify-content:space-evenly !important}.align-items-sm-start{align-items:flex-start !important}.align-items-sm-end{align-items:flex-end !important}.align-items-sm-center{align-items:center !important}.align-items-sm-baseline{align-items:baseline !important}.align-items-sm-stretch{align-items:stretch !important}.align-content-sm-start{align-content:flex-start !important}.align-content-sm-end{align-content:flex-end !important}.align-content-sm-center{align-content:center !important}.align-content-sm-between{align-content:space-between !important}.align-content-sm-around{align-content:space-around !important}.align-content-sm-stretch{align-content:stretch !important}.align-self-sm-auto{align-self:auto !important}.align-self-sm-start{align-self:flex-start !important}.align-self-sm-end{align-self:flex-end !important}.align-self-sm-center{align-self:center !important}.align-self-sm-baseline{align-self:baseline !important}.align-self-sm-stretch{align-self:stretch !important}.order-sm-first{order:-1 !important}.order-sm-0{order:0 !important}.order-sm-1{order:1 !important}.order-sm-2{order:2 !important}.order-sm-3{order:3 !important}.order-sm-4{order:4 !important}.order-sm-5{order:5 !important}.order-sm-last{order:6 !important}.m-sm-0{margin:0 !important}.m-sm-1{margin:.25rem !important}.m-sm-2{margin:.5rem !important}.m-sm-3{margin:1rem !important}.m-sm-4{margin:1.5rem !important}.m-sm-5{margin:3rem !important}.m-sm-auto{margin:auto !important}.mx-sm-0{margin-right:0 !important;margin-left:0 !important}.mx-sm-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-sm-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-sm-3{margin-right:1rem !important;margin-left:1rem !important}.mx-sm-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-sm-5{margin-right:3rem !important;margin-left:3rem !important}.mx-sm-auto{margin-right:auto !important;margin-left:auto !important}.my-sm-0{margin-top:0 !important;margin-bottom:0 !important}.my-sm-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-sm-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-sm-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-sm-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-sm-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-sm-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-sm-0{margin-top:0 !important}.mt-sm-1{margin-top:.25rem !important}.mt-sm-2{margin-top:.5rem !important}.mt-sm-3{margin-top:1rem !important}.mt-sm-4{margin-top:1.5rem !important}.mt-sm-5{margin-top:3rem !important}.mt-sm-auto{margin-top:auto !important}.me-sm-0{margin-right:0 !important}.me-sm-1{margin-right:.25rem !important}.me-sm-2{margin-right:.5rem !important}.me-sm-3{margin-right:1rem !important}.me-sm-4{margin-right:1.5rem !important}.me-sm-5{margin-right:3rem !important}.me-sm-auto{margin-right:auto !important}.mb-sm-0{margin-bottom:0 !important}.mb-sm-1{margin-bottom:.25rem !important}.mb-sm-2{margin-bottom:.5rem !important}.mb-sm-3{margin-bottom:1rem !important}.mb-sm-4{margin-bottom:1.5rem !important}.mb-sm-5{margin-bottom:3rem !important}.mb-sm-auto{margin-bottom:auto !important}.ms-sm-0{margin-left:0 !important}.ms-sm-1{margin-left:.25rem !important}.ms-sm-2{margin-left:.5rem !important}.ms-sm-3{margin-left:1rem !important}.ms-sm-4{margin-left:1.5rem !important}.ms-sm-5{margin-left:3rem !important}.ms-sm-auto{margin-left:auto !important}.p-sm-0{padding:0 !important}.p-sm-1{padding:.25rem !important}.p-sm-2{padding:.5rem !important}.p-sm-3{padding:1rem !important}.p-sm-4{padding:1.5rem !important}.p-sm-5{padding:3rem !important}.px-sm-0{padding-right:0 !important;padding-left:0 !important}.px-sm-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-sm-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-sm-3{padding-right:1rem !important;padding-left:1rem !important}.px-sm-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-sm-5{padding-right:3rem !important;padding-left:3rem !important}.py-sm-0{padding-top:0 !important;padding-bottom:0 !important}.py-sm-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-sm-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-sm-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-sm-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-sm-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-sm-0{padding-top:0 !important}.pt-sm-1{padding-top:.25rem !important}.pt-sm-2{padding-top:.5rem !important}.pt-sm-3{padding-top:1rem !important}.pt-sm-4{padding-top:1.5rem !important}.pt-sm-5{padding-top:3rem !important}.pe-sm-0{padding-right:0 !important}.pe-sm-1{padding-right:.25rem !important}.pe-sm-2{padding-right:.5rem !important}.pe-sm-3{padding-right:1rem !important}.pe-sm-4{padding-right:1.5rem !important}.pe-sm-5{padding-right:3rem !important}.pb-sm-0{padding-bottom:0 !important}.pb-sm-1{padding-bottom:.25rem !important}.pb-sm-2{padding-bottom:.5rem !important}.pb-sm-3{padding-bottom:1rem !important}.pb-sm-4{padding-bottom:1.5rem !important}.pb-sm-5{padding-bottom:3rem !important}.ps-sm-0{padding-left:0 !important}.ps-sm-1{padding-left:.25rem !important}.ps-sm-2{padding-left:.5rem !important}.ps-sm-3{padding-left:1rem !important}.ps-sm-4{padding-left:1.5rem !important}.ps-sm-5{padding-left:3rem !important}.text-sm-start{text-align:left !important}.text-sm-end{text-align:right !important}.text-sm-center{text-align:center !important}}@media(min-width: 768px){.float-md-start{float:left !important}.float-md-end{float:right !important}.float-md-none{float:none !important}.d-md-inline{display:inline !important}.d-md-inline-block{display:inline-block !important}.d-md-block{display:block !important}.d-md-grid{display:grid !important}.d-md-table{display:table !important}.d-md-table-row{display:table-row !important}.d-md-table-cell{display:table-cell !important}.d-md-flex{display:flex !important}.d-md-inline-flex{display:inline-flex !important}.d-md-none{display:none !important}.flex-md-fill{flex:1 1 auto !important}.flex-md-row{flex-direction:row !important}.flex-md-column{flex-direction:column !important}.flex-md-row-reverse{flex-direction:row-reverse !important}.flex-md-column-reverse{flex-direction:column-reverse !important}.flex-md-grow-0{flex-grow:0 !important}.flex-md-grow-1{flex-grow:1 !important}.flex-md-shrink-0{flex-shrink:0 !important}.flex-md-shrink-1{flex-shrink:1 !important}.flex-md-wrap{flex-wrap:wrap !important}.flex-md-nowrap{flex-wrap:nowrap !important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse !important}.gap-md-0{gap:0 !important}.gap-md-1{gap:.25rem !important}.gap-md-2{gap:.5rem !important}.gap-md-3{gap:1rem !important}.gap-md-4{gap:1.5rem !important}.gap-md-5{gap:3rem !important}.justify-content-md-start{justify-content:flex-start !important}.justify-content-md-end{justify-content:flex-end !important}.justify-content-md-center{justify-content:center !important}.justify-content-md-between{justify-content:space-between !important}.justify-content-md-around{justify-content:space-around !important}.justify-content-md-evenly{justify-content:space-evenly !important}.align-items-md-start{align-items:flex-start !important}.align-items-md-end{align-items:flex-end !important}.align-items-md-center{align-items:center !important}.align-items-md-baseline{align-items:baseline !important}.align-items-md-stretch{align-items:stretch !important}.align-content-md-start{align-content:flex-start !important}.align-content-md-end{align-content:flex-end !important}.align-content-md-center{align-content:center !important}.align-content-md-between{align-content:space-between !important}.align-content-md-around{align-content:space-around !important}.align-content-md-stretch{align-content:stretch !important}.align-self-md-auto{align-self:auto !important}.align-self-md-start{align-self:flex-start !important}.align-self-md-end{align-self:flex-end !important}.align-self-md-center{align-self:center !important}.align-self-md-baseline{align-self:baseline !important}.align-self-md-stretch{align-self:stretch !important}.order-md-first{order:-1 !important}.order-md-0{order:0 !important}.order-md-1{order:1 !important}.order-md-2{order:2 !important}.order-md-3{order:3 !important}.order-md-4{order:4 !important}.order-md-5{order:5 !important}.order-md-last{order:6 !important}.m-md-0{margin:0 !important}.m-md-1{margin:.25rem !important}.m-md-2{margin:.5rem !important}.m-md-3{margin:1rem !important}.m-md-4{margin:1.5rem !important}.m-md-5{margin:3rem !important}.m-md-auto{margin:auto !important}.mx-md-0{margin-right:0 !important;margin-left:0 !important}.mx-md-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-md-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-md-3{margin-right:1rem !important;margin-left:1rem !important}.mx-md-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-md-5{margin-right:3rem !important;margin-left:3rem !important}.mx-md-auto{margin-right:auto !important;margin-left:auto !important}.my-md-0{margin-top:0 !important;margin-bottom:0 !important}.my-md-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-md-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-md-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-md-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-md-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-md-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-md-0{margin-top:0 !important}.mt-md-1{margin-top:.25rem !important}.mt-md-2{margin-top:.5rem !important}.mt-md-3{margin-top:1rem !important}.mt-md-4{margin-top:1.5rem !important}.mt-md-5{margin-top:3rem !important}.mt-md-auto{margin-top:auto !important}.me-md-0{margin-right:0 !important}.me-md-1{margin-right:.25rem !important}.me-md-2{margin-right:.5rem !important}.me-md-3{margin-right:1rem !important}.me-md-4{margin-right:1.5rem !important}.me-md-5{margin-right:3rem !important}.me-md-auto{margin-right:auto !important}.mb-md-0{margin-bottom:0 !important}.mb-md-1{margin-bottom:.25rem !important}.mb-md-2{margin-bottom:.5rem !important}.mb-md-3{margin-bottom:1rem !important}.mb-md-4{margin-bottom:1.5rem !important}.mb-md-5{margin-bottom:3rem !important}.mb-md-auto{margin-bottom:auto !important}.ms-md-0{margin-left:0 !important}.ms-md-1{margin-left:.25rem !important}.ms-md-2{margin-left:.5rem !important}.ms-md-3{margin-left:1rem !important}.ms-md-4{margin-left:1.5rem !important}.ms-md-5{margin-left:3rem !important}.ms-md-auto{margin-left:auto !important}.p-md-0{padding:0 !important}.p-md-1{padding:.25rem !important}.p-md-2{padding:.5rem !important}.p-md-3{padding:1rem !important}.p-md-4{padding:1.5rem !important}.p-md-5{padding:3rem !important}.px-md-0{padding-right:0 !important;padding-left:0 !important}.px-md-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-md-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-md-3{padding-right:1rem !important;padding-left:1rem !important}.px-md-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-md-5{padding-right:3rem !important;padding-left:3rem !important}.py-md-0{padding-top:0 !important;padding-bottom:0 !important}.py-md-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-md-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-md-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-md-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-md-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-md-0{padding-top:0 !important}.pt-md-1{padding-top:.25rem !important}.pt-md-2{padding-top:.5rem !important}.pt-md-3{padding-top:1rem !important}.pt-md-4{padding-top:1.5rem !important}.pt-md-5{padding-top:3rem !important}.pe-md-0{padding-right:0 !important}.pe-md-1{padding-right:.25rem !important}.pe-md-2{padding-right:.5rem !important}.pe-md-3{padding-right:1rem !important}.pe-md-4{padding-right:1.5rem !important}.pe-md-5{padding-right:3rem !important}.pb-md-0{padding-bottom:0 !important}.pb-md-1{padding-bottom:.25rem !important}.pb-md-2{padding-bottom:.5rem !important}.pb-md-3{padding-bottom:1rem !important}.pb-md-4{padding-bottom:1.5rem !important}.pb-md-5{padding-bottom:3rem !important}.ps-md-0{padding-left:0 !important}.ps-md-1{padding-left:.25rem !important}.ps-md-2{padding-left:.5rem !important}.ps-md-3{padding-left:1rem !important}.ps-md-4{padding-left:1.5rem !important}.ps-md-5{padding-left:3rem !important}.text-md-start{text-align:left !important}.text-md-end{text-align:right !important}.text-md-center{text-align:center !important}}@media(min-width: 992px){.float-lg-start{float:left !important}.float-lg-end{float:right !important}.float-lg-none{float:none !important}.d-lg-inline{display:inline !important}.d-lg-inline-block{display:inline-block !important}.d-lg-block{display:block !important}.d-lg-grid{display:grid !important}.d-lg-table{display:table !important}.d-lg-table-row{display:table-row !important}.d-lg-table-cell{display:table-cell !important}.d-lg-flex{display:flex !important}.d-lg-inline-flex{display:inline-flex !important}.d-lg-none{display:none !important}.flex-lg-fill{flex:1 1 auto !important}.flex-lg-row{flex-direction:row !important}.flex-lg-column{flex-direction:column !important}.flex-lg-row-reverse{flex-direction:row-reverse !important}.flex-lg-column-reverse{flex-direction:column-reverse !important}.flex-lg-grow-0{flex-grow:0 !important}.flex-lg-grow-1{flex-grow:1 !important}.flex-lg-shrink-0{flex-shrink:0 !important}.flex-lg-shrink-1{flex-shrink:1 !important}.flex-lg-wrap{flex-wrap:wrap !important}.flex-lg-nowrap{flex-wrap:nowrap !important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse !important}.gap-lg-0{gap:0 !important}.gap-lg-1{gap:.25rem !important}.gap-lg-2{gap:.5rem !important}.gap-lg-3{gap:1rem !important}.gap-lg-4{gap:1.5rem !important}.gap-lg-5{gap:3rem !important}.justify-content-lg-start{justify-content:flex-start !important}.justify-content-lg-end{justify-content:flex-end !important}.justify-content-lg-center{justify-content:center !important}.justify-content-lg-between{justify-content:space-between !important}.justify-content-lg-around{justify-content:space-around !important}.justify-content-lg-evenly{justify-content:space-evenly !important}.align-items-lg-start{align-items:flex-start !important}.align-items-lg-end{align-items:flex-end !important}.align-items-lg-center{align-items:center !important}.align-items-lg-baseline{align-items:baseline !important}.align-items-lg-stretch{align-items:stretch !important}.align-content-lg-start{align-content:flex-start !important}.align-content-lg-end{align-content:flex-end !important}.align-content-lg-center{align-content:center !important}.align-content-lg-between{align-content:space-between !important}.align-content-lg-around{align-content:space-around !important}.align-content-lg-stretch{align-content:stretch !important}.align-self-lg-auto{align-self:auto !important}.align-self-lg-start{align-self:flex-start !important}.align-self-lg-end{align-self:flex-end !important}.align-self-lg-center{align-self:center !important}.align-self-lg-baseline{align-self:baseline !important}.align-self-lg-stretch{align-self:stretch !important}.order-lg-first{order:-1 !important}.order-lg-0{order:0 !important}.order-lg-1{order:1 !important}.order-lg-2{order:2 !important}.order-lg-3{order:3 !important}.order-lg-4{order:4 !important}.order-lg-5{order:5 !important}.order-lg-last{order:6 !important}.m-lg-0{margin:0 !important}.m-lg-1{margin:.25rem !important}.m-lg-2{margin:.5rem !important}.m-lg-3{margin:1rem !important}.m-lg-4{margin:1.5rem !important}.m-lg-5{margin:3rem !important}.m-lg-auto{margin:auto !important}.mx-lg-0{margin-right:0 !important;margin-left:0 !important}.mx-lg-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-lg-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-lg-3{margin-right:1rem !important;margin-left:1rem !important}.mx-lg-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-lg-5{margin-right:3rem !important;margin-left:3rem !important}.mx-lg-auto{margin-right:auto !important;margin-left:auto !important}.my-lg-0{margin-top:0 !important;margin-bottom:0 !important}.my-lg-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-lg-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-lg-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-lg-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-lg-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-lg-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-lg-0{margin-top:0 !important}.mt-lg-1{margin-top:.25rem !important}.mt-lg-2{margin-top:.5rem !important}.mt-lg-3{margin-top:1rem !important}.mt-lg-4{margin-top:1.5rem !important}.mt-lg-5{margin-top:3rem !important}.mt-lg-auto{margin-top:auto !important}.me-lg-0{margin-right:0 !important}.me-lg-1{margin-right:.25rem !important}.me-lg-2{margin-right:.5rem !important}.me-lg-3{margin-right:1rem !important}.me-lg-4{margin-right:1.5rem !important}.me-lg-5{margin-right:3rem !important}.me-lg-auto{margin-right:auto !important}.mb-lg-0{margin-bottom:0 !important}.mb-lg-1{margin-bottom:.25rem !important}.mb-lg-2{margin-bottom:.5rem !important}.mb-lg-3{margin-bottom:1rem !important}.mb-lg-4{margin-bottom:1.5rem !important}.mb-lg-5{margin-bottom:3rem !important}.mb-lg-auto{margin-bottom:auto !important}.ms-lg-0{margin-left:0 !important}.ms-lg-1{margin-left:.25rem !important}.ms-lg-2{margin-left:.5rem !important}.ms-lg-3{margin-left:1rem !important}.ms-lg-4{margin-left:1.5rem !important}.ms-lg-5{margin-left:3rem !important}.ms-lg-auto{margin-left:auto !important}.p-lg-0{padding:0 !important}.p-lg-1{padding:.25rem !important}.p-lg-2{padding:.5rem !important}.p-lg-3{padding:1rem !important}.p-lg-4{padding:1.5rem !important}.p-lg-5{padding:3rem !important}.px-lg-0{padding-right:0 !important;padding-left:0 !important}.px-lg-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-lg-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-lg-3{padding-right:1rem !important;padding-left:1rem !important}.px-lg-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-lg-5{padding-right:3rem !important;padding-left:3rem !important}.py-lg-0{padding-top:0 !important;padding-bottom:0 !important}.py-lg-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-lg-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-lg-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-lg-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-lg-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-lg-0{padding-top:0 !important}.pt-lg-1{padding-top:.25rem !important}.pt-lg-2{padding-top:.5rem !important}.pt-lg-3{padding-top:1rem !important}.pt-lg-4{padding-top:1.5rem !important}.pt-lg-5{padding-top:3rem !important}.pe-lg-0{padding-right:0 !important}.pe-lg-1{padding-right:.25rem !important}.pe-lg-2{padding-right:.5rem !important}.pe-lg-3{padding-right:1rem !important}.pe-lg-4{padding-right:1.5rem !important}.pe-lg-5{padding-right:3rem !important}.pb-lg-0{padding-bottom:0 !important}.pb-lg-1{padding-bottom:.25rem !important}.pb-lg-2{padding-bottom:.5rem !important}.pb-lg-3{padding-bottom:1rem !important}.pb-lg-4{padding-bottom:1.5rem !important}.pb-lg-5{padding-bottom:3rem !important}.ps-lg-0{padding-left:0 !important}.ps-lg-1{padding-left:.25rem !important}.ps-lg-2{padding-left:.5rem !important}.ps-lg-3{padding-left:1rem !important}.ps-lg-4{padding-left:1.5rem !important}.ps-lg-5{padding-left:3rem !important}.text-lg-start{text-align:left !important}.text-lg-end{text-align:right !important}.text-lg-center{text-align:center !important}}@media(min-width: 1200px){.float-xl-start{float:left !important}.float-xl-end{float:right !important}.float-xl-none{float:none !important}.d-xl-inline{display:inline !important}.d-xl-inline-block{display:inline-block !important}.d-xl-block{display:block !important}.d-xl-grid{display:grid !important}.d-xl-table{display:table !important}.d-xl-table-row{display:table-row !important}.d-xl-table-cell{display:table-cell !important}.d-xl-flex{display:flex !important}.d-xl-inline-flex{display:inline-flex !important}.d-xl-none{display:none !important}.flex-xl-fill{flex:1 1 auto !important}.flex-xl-row{flex-direction:row !important}.flex-xl-column{flex-direction:column !important}.flex-xl-row-reverse{flex-direction:row-reverse !important}.flex-xl-column-reverse{flex-direction:column-reverse !important}.flex-xl-grow-0{flex-grow:0 !important}.flex-xl-grow-1{flex-grow:1 !important}.flex-xl-shrink-0{flex-shrink:0 !important}.flex-xl-shrink-1{flex-shrink:1 !important}.flex-xl-wrap{flex-wrap:wrap !important}.flex-xl-nowrap{flex-wrap:nowrap !important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse !important}.gap-xl-0{gap:0 !important}.gap-xl-1{gap:.25rem !important}.gap-xl-2{gap:.5rem !important}.gap-xl-3{gap:1rem !important}.gap-xl-4{gap:1.5rem !important}.gap-xl-5{gap:3rem !important}.justify-content-xl-start{justify-content:flex-start !important}.justify-content-xl-end{justify-content:flex-end !important}.justify-content-xl-center{justify-content:center !important}.justify-content-xl-between{justify-content:space-between !important}.justify-content-xl-around{justify-content:space-around !important}.justify-content-xl-evenly{justify-content:space-evenly !important}.align-items-xl-start{align-items:flex-start !important}.align-items-xl-end{align-items:flex-end !important}.align-items-xl-center{align-items:center !important}.align-items-xl-baseline{align-items:baseline !important}.align-items-xl-stretch{align-items:stretch !important}.align-content-xl-start{align-content:flex-start !important}.align-content-xl-end{align-content:flex-end !important}.align-content-xl-center{align-content:center !important}.align-content-xl-between{align-content:space-between !important}.align-content-xl-around{align-content:space-around !important}.align-content-xl-stretch{align-content:stretch !important}.align-self-xl-auto{align-self:auto !important}.align-self-xl-start{align-self:flex-start !important}.align-self-xl-end{align-self:flex-end !important}.align-self-xl-center{align-self:center !important}.align-self-xl-baseline{align-self:baseline !important}.align-self-xl-stretch{align-self:stretch !important}.order-xl-first{order:-1 !important}.order-xl-0{order:0 !important}.order-xl-1{order:1 !important}.order-xl-2{order:2 !important}.order-xl-3{order:3 !important}.order-xl-4{order:4 !important}.order-xl-5{order:5 !important}.order-xl-last{order:6 !important}.m-xl-0{margin:0 !important}.m-xl-1{margin:.25rem !important}.m-xl-2{margin:.5rem !important}.m-xl-3{margin:1rem !important}.m-xl-4{margin:1.5rem !important}.m-xl-5{margin:3rem !important}.m-xl-auto{margin:auto !important}.mx-xl-0{margin-right:0 !important;margin-left:0 !important}.mx-xl-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-xl-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-xl-3{margin-right:1rem !important;margin-left:1rem !important}.mx-xl-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-xl-5{margin-right:3rem !important;margin-left:3rem !important}.mx-xl-auto{margin-right:auto !important;margin-left:auto !important}.my-xl-0{margin-top:0 !important;margin-bottom:0 !important}.my-xl-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-xl-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-xl-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-xl-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-xl-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-xl-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-xl-0{margin-top:0 !important}.mt-xl-1{margin-top:.25rem !important}.mt-xl-2{margin-top:.5rem !important}.mt-xl-3{margin-top:1rem !important}.mt-xl-4{margin-top:1.5rem !important}.mt-xl-5{margin-top:3rem !important}.mt-xl-auto{margin-top:auto !important}.me-xl-0{margin-right:0 !important}.me-xl-1{margin-right:.25rem !important}.me-xl-2{margin-right:.5rem !important}.me-xl-3{margin-right:1rem !important}.me-xl-4{margin-right:1.5rem !important}.me-xl-5{margin-right:3rem !important}.me-xl-auto{margin-right:auto !important}.mb-xl-0{margin-bottom:0 !important}.mb-xl-1{margin-bottom:.25rem !important}.mb-xl-2{margin-bottom:.5rem !important}.mb-xl-3{margin-bottom:1rem !important}.mb-xl-4{margin-bottom:1.5rem !important}.mb-xl-5{margin-bottom:3rem !important}.mb-xl-auto{margin-bottom:auto !important}.ms-xl-0{margin-left:0 !important}.ms-xl-1{margin-left:.25rem !important}.ms-xl-2{margin-left:.5rem !important}.ms-xl-3{margin-left:1rem !important}.ms-xl-4{margin-left:1.5rem !important}.ms-xl-5{margin-left:3rem !important}.ms-xl-auto{margin-left:auto !important}.p-xl-0{padding:0 !important}.p-xl-1{padding:.25rem !important}.p-xl-2{padding:.5rem !important}.p-xl-3{padding:1rem !important}.p-xl-4{padding:1.5rem !important}.p-xl-5{padding:3rem !important}.px-xl-0{padding-right:0 !important;padding-left:0 !important}.px-xl-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-xl-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-xl-3{padding-right:1rem !important;padding-left:1rem !important}.px-xl-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-xl-5{padding-right:3rem !important;padding-left:3rem !important}.py-xl-0{padding-top:0 !important;padding-bottom:0 !important}.py-xl-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-xl-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-xl-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-xl-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-xl-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-xl-0{padding-top:0 !important}.pt-xl-1{padding-top:.25rem !important}.pt-xl-2{padding-top:.5rem !important}.pt-xl-3{padding-top:1rem !important}.pt-xl-4{padding-top:1.5rem !important}.pt-xl-5{padding-top:3rem !important}.pe-xl-0{padding-right:0 !important}.pe-xl-1{padding-right:.25rem !important}.pe-xl-2{padding-right:.5rem !important}.pe-xl-3{padding-right:1rem !important}.pe-xl-4{padding-right:1.5rem !important}.pe-xl-5{padding-right:3rem !important}.pb-xl-0{padding-bottom:0 !important}.pb-xl-1{padding-bottom:.25rem !important}.pb-xl-2{padding-bottom:.5rem !important}.pb-xl-3{padding-bottom:1rem !important}.pb-xl-4{padding-bottom:1.5rem !important}.pb-xl-5{padding-bottom:3rem !important}.ps-xl-0{padding-left:0 !important}.ps-xl-1{padding-left:.25rem !important}.ps-xl-2{padding-left:.5rem !important}.ps-xl-3{padding-left:1rem !important}.ps-xl-4{padding-left:1.5rem !important}.ps-xl-5{padding-left:3rem !important}.text-xl-start{text-align:left !important}.text-xl-end{text-align:right !important}.text-xl-center{text-align:center !important}}@media(min-width: 1400px){.float-xxl-start{float:left !important}.float-xxl-end{float:right !important}.float-xxl-none{float:none !important}.d-xxl-inline{display:inline !important}.d-xxl-inline-block{display:inline-block !important}.d-xxl-block{display:block !important}.d-xxl-grid{display:grid !important}.d-xxl-table{display:table !important}.d-xxl-table-row{display:table-row !important}.d-xxl-table-cell{display:table-cell !important}.d-xxl-flex{display:flex !important}.d-xxl-inline-flex{display:inline-flex !important}.d-xxl-none{display:none !important}.flex-xxl-fill{flex:1 1 auto !important}.flex-xxl-row{flex-direction:row !important}.flex-xxl-column{flex-direction:column !important}.flex-xxl-row-reverse{flex-direction:row-reverse !important}.flex-xxl-column-reverse{flex-direction:column-reverse !important}.flex-xxl-grow-0{flex-grow:0 !important}.flex-xxl-grow-1{flex-grow:1 !important}.flex-xxl-shrink-0{flex-shrink:0 !important}.flex-xxl-shrink-1{flex-shrink:1 !important}.flex-xxl-wrap{flex-wrap:wrap !important}.flex-xxl-nowrap{flex-wrap:nowrap !important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse !important}.gap-xxl-0{gap:0 !important}.gap-xxl-1{gap:.25rem !important}.gap-xxl-2{gap:.5rem !important}.gap-xxl-3{gap:1rem !important}.gap-xxl-4{gap:1.5rem !important}.gap-xxl-5{gap:3rem !important}.justify-content-xxl-start{justify-content:flex-start !important}.justify-content-xxl-end{justify-content:flex-end !important}.justify-content-xxl-center{justify-content:center !important}.justify-content-xxl-between{justify-content:space-between !important}.justify-content-xxl-around{justify-content:space-around !important}.justify-content-xxl-evenly{justify-content:space-evenly !important}.align-items-xxl-start{align-items:flex-start !important}.align-items-xxl-end{align-items:flex-end !important}.align-items-xxl-center{align-items:center !important}.align-items-xxl-baseline{align-items:baseline !important}.align-items-xxl-stretch{align-items:stretch !important}.align-content-xxl-start{align-content:flex-start !important}.align-content-xxl-end{align-content:flex-end !important}.align-content-xxl-center{align-content:center !important}.align-content-xxl-between{align-content:space-between !important}.align-content-xxl-around{align-content:space-around !important}.align-content-xxl-stretch{align-content:stretch !important}.align-self-xxl-auto{align-self:auto !important}.align-self-xxl-start{align-self:flex-start !important}.align-self-xxl-end{align-self:flex-end !important}.align-self-xxl-center{align-self:center !important}.align-self-xxl-baseline{align-self:baseline !important}.align-self-xxl-stretch{align-self:stretch !important}.order-xxl-first{order:-1 !important}.order-xxl-0{order:0 !important}.order-xxl-1{order:1 !important}.order-xxl-2{order:2 !important}.order-xxl-3{order:3 !important}.order-xxl-4{order:4 !important}.order-xxl-5{order:5 !important}.order-xxl-last{order:6 !important}.m-xxl-0{margin:0 !important}.m-xxl-1{margin:.25rem !important}.m-xxl-2{margin:.5rem !important}.m-xxl-3{margin:1rem !important}.m-xxl-4{margin:1.5rem !important}.m-xxl-5{margin:3rem !important}.m-xxl-auto{margin:auto !important}.mx-xxl-0{margin-right:0 !important;margin-left:0 !important}.mx-xxl-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-xxl-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-xxl-3{margin-right:1rem !important;margin-left:1rem !important}.mx-xxl-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-xxl-5{margin-right:3rem !important;margin-left:3rem !important}.mx-xxl-auto{margin-right:auto !important;margin-left:auto !important}.my-xxl-0{margin-top:0 !important;margin-bottom:0 !important}.my-xxl-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-xxl-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-xxl-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-xxl-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-xxl-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-xxl-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-xxl-0{margin-top:0 !important}.mt-xxl-1{margin-top:.25rem !important}.mt-xxl-2{margin-top:.5rem !important}.mt-xxl-3{margin-top:1rem !important}.mt-xxl-4{margin-top:1.5rem !important}.mt-xxl-5{margin-top:3rem !important}.mt-xxl-auto{margin-top:auto !important}.me-xxl-0{margin-right:0 !important}.me-xxl-1{margin-right:.25rem !important}.me-xxl-2{margin-right:.5rem !important}.me-xxl-3{margin-right:1rem !important}.me-xxl-4{margin-right:1.5rem !important}.me-xxl-5{margin-right:3rem !important}.me-xxl-auto{margin-right:auto !important}.mb-xxl-0{margin-bottom:0 !important}.mb-xxl-1{margin-bottom:.25rem !important}.mb-xxl-2{margin-bottom:.5rem !important}.mb-xxl-3{margin-bottom:1rem !important}.mb-xxl-4{margin-bottom:1.5rem !important}.mb-xxl-5{margin-bottom:3rem !important}.mb-xxl-auto{margin-bottom:auto !important}.ms-xxl-0{margin-left:0 !important}.ms-xxl-1{margin-left:.25rem !important}.ms-xxl-2{margin-left:.5rem !important}.ms-xxl-3{margin-left:1rem !important}.ms-xxl-4{margin-left:1.5rem !important}.ms-xxl-5{margin-left:3rem !important}.ms-xxl-auto{margin-left:auto !important}.p-xxl-0{padding:0 !important}.p-xxl-1{padding:.25rem !important}.p-xxl-2{padding:.5rem !important}.p-xxl-3{padding:1rem !important}.p-xxl-4{padding:1.5rem !important}.p-xxl-5{padding:3rem !important}.px-xxl-0{padding-right:0 !important;padding-left:0 !important}.px-xxl-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-xxl-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-xxl-3{padding-right:1rem !important;padding-left:1rem !important}.px-xxl-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-xxl-5{padding-right:3rem !important;padding-left:3rem !important}.py-xxl-0{padding-top:0 !important;padding-bottom:0 !important}.py-xxl-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-xxl-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-xxl-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-xxl-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-xxl-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-xxl-0{padding-top:0 !important}.pt-xxl-1{padding-top:.25rem !important}.pt-xxl-2{padding-top:.5rem !important}.pt-xxl-3{padding-top:1rem !important}.pt-xxl-4{padding-top:1.5rem !important}.pt-xxl-5{padding-top:3rem !important}.pe-xxl-0{padding-right:0 !important}.pe-xxl-1{padding-right:.25rem !important}.pe-xxl-2{padding-right:.5rem !important}.pe-xxl-3{padding-right:1rem !important}.pe-xxl-4{padding-right:1.5rem !important}.pe-xxl-5{padding-right:3rem !important}.pb-xxl-0{padding-bottom:0 !important}.pb-xxl-1{padding-bottom:.25rem !important}.pb-xxl-2{padding-bottom:.5rem !important}.pb-xxl-3{padding-bottom:1rem !important}.pb-xxl-4{padding-bottom:1.5rem !important}.pb-xxl-5{padding-bottom:3rem !important}.ps-xxl-0{padding-left:0 !important}.ps-xxl-1{padding-left:.25rem !important}.ps-xxl-2{padding-left:.5rem !important}.ps-xxl-3{padding-left:1rem !important}.ps-xxl-4{padding-left:1.5rem !important}.ps-xxl-5{padding-left:3rem !important}.text-xxl-start{text-align:left !important}.text-xxl-end{text-align:right !important}.text-xxl-center{text-align:center !important}}.bg-default{color:#fff}.bg-primary{color:#fff}.bg-secondary{color:#fff}.bg-success{color:#fff}.bg-info{color:#fff}.bg-warning{color:#fff}.bg-danger{color:#fff}.bg-light{color:#000}.bg-dark{color:#fff}@media(min-width: 1200px){.fs-1{font-size:2rem !important}.fs-2{font-size:1.65rem !important}.fs-3{font-size:1.45rem !important}}@media print{.d-print-inline{display:inline !important}.d-print-inline-block{display:inline-block !important}.d-print-block{display:block !important}.d-print-grid{display:grid !important}.d-print-table{display:table !important}.d-print-table-row{display:table-row !important}.d-print-table-cell{display:table-cell !important}.d-print-flex{display:flex !important}.d-print-inline-flex{display:inline-flex !important}.d-print-none{display:none !important}}.tippy-box[data-theme~=quarto]{background-color:#fff;border:solid 1px #dee2e6;border-radius:.25rem;color:#777;font-size:.875rem}.tippy-box[data-theme~=quarto]>.tippy-backdrop{background-color:#fff}.tippy-box[data-theme~=quarto]>.tippy-arrow:after,.tippy-box[data-theme~=quarto]>.tippy-svg-arrow:after{content:"";position:absolute;z-index:-1}.tippy-box[data-theme~=quarto]>.tippy-arrow:after{border-color:rgba(0,0,0,0);border-style:solid}.tippy-box[data-placement^=top]>.tippy-arrow:before{bottom:-6px}.tippy-box[data-placement^=bottom]>.tippy-arrow:before{top:-6px}.tippy-box[data-placement^=right]>.tippy-arrow:before{left:-6px}.tippy-box[data-placement^=left]>.tippy-arrow:before{right:-6px}.tippy-box[data-theme~=quarto][data-placement^=top]>.tippy-arrow:before{border-top-color:#fff}.tippy-box[data-theme~=quarto][data-placement^=top]>.tippy-arrow:after{border-top-color:#dee2e6;border-width:7px 7px 0;top:17px;left:1px}.tippy-box[data-theme~=quarto][data-placement^=top]>.tippy-svg-arrow>svg{top:16px}.tippy-box[data-theme~=quarto][data-placement^=top]>.tippy-svg-arrow:after{top:17px}.tippy-box[data-theme~=quarto][data-placement^=bottom]>.tippy-arrow:before{border-bottom-color:#fff;bottom:16px}.tippy-box[data-theme~=quarto][data-placement^=bottom]>.tippy-arrow:after{border-bottom-color:#dee2e6;border-width:0 7px 7px;bottom:17px;left:1px}.tippy-box[data-theme~=quarto][data-placement^=bottom]>.tippy-svg-arrow>svg{bottom:15px}.tippy-box[data-theme~=quarto][data-placement^=bottom]>.tippy-svg-arrow:after{bottom:17px}.tippy-box[data-theme~=quarto][data-placement^=left]>.tippy-arrow:before{border-left-color:#fff}.tippy-box[data-theme~=quarto][data-placement^=left]>.tippy-arrow:after{border-left-color:#dee2e6;border-width:7px 0 7px 7px;left:17px;top:1px}.tippy-box[data-theme~=quarto][data-placement^=left]>.tippy-svg-arrow>svg{left:11px}.tippy-box[data-theme~=quarto][data-placement^=left]>.tippy-svg-arrow:after{left:12px}.tippy-box[data-theme~=quarto][data-placement^=right]>.tippy-arrow:before{border-right-color:#fff;right:16px}.tippy-box[data-theme~=quarto][data-placement^=right]>.tippy-arrow:after{border-width:7px 7px 7px 0;right:17px;top:1px;border-right-color:#dee2e6}.tippy-box[data-theme~=quarto][data-placement^=right]>.tippy-svg-arrow>svg{right:11px}.tippy-box[data-theme~=quarto][data-placement^=right]>.tippy-svg-arrow:after{right:12px}.tippy-box[data-theme~=quarto]>.tippy-svg-arrow{fill:#777}.tippy-box[data-theme~=quarto]>.tippy-svg-arrow:after{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMCA2czEuNzk2LS4wMTMgNC42Ny0zLjYxNUM1Ljg1MS45IDYuOTMuMDA2IDggMGMxLjA3LS4wMDYgMi4xNDguODg3IDMuMzQzIDIuMzg1QzE0LjIzMyA2LjAwNSAxNiA2IDE2IDZIMHoiIGZpbGw9InJnYmEoMCwgOCwgMTYsIDAuMikiLz48L3N2Zz4=);background-size:16px 6px;width:16px;height:6px}.top-right{position:absolute;top:1em;right:1em}.hidden{display:none !important}.zindex-bottom{z-index:-1 !important}.quarto-layout-panel{margin-bottom:1em}.quarto-layout-panel>figure{width:100%}.quarto-layout-panel>figure>figcaption,.quarto-layout-panel>.panel-caption{margin-top:10pt}.quarto-layout-panel>.table-caption{margin-top:0px}.table-caption p{margin-bottom:.5em}.quarto-layout-row{display:flex;flex-direction:row;align-items:flex-start}.quarto-layout-valign-top{align-items:flex-start}.quarto-layout-valign-bottom{align-items:flex-end}.quarto-layout-valign-center{align-items:center}.quarto-layout-cell{position:relative;margin-right:20px}.quarto-layout-cell:last-child{margin-right:0}.quarto-layout-cell figure,.quarto-layout-cell>p{margin:.2em}.quarto-layout-cell img{max-width:100%}.quarto-layout-cell .html-widget{width:100% !important}.quarto-layout-cell div figure p{margin:0}.quarto-layout-cell figure{display:inline-block;margin-inline-start:0;margin-inline-end:0}.quarto-layout-cell table{display:inline-table}.quarto-layout-cell-subref figcaption,figure .quarto-layout-row figure figcaption{text-align:center;font-style:italic}.quarto-figure{position:relative;margin-bottom:1em}.quarto-figure>figure{width:100%;margin-bottom:0}.quarto-figure-left>figure>p,.quarto-figure-left>figure>div{text-align:left}.quarto-figure-center>figure>p,.quarto-figure-center>figure>div{text-align:center}.quarto-figure-right>figure>p,.quarto-figure-right>figure>div{text-align:right}figure>p:empty{display:none}figure>p:first-child{margin-top:0;margin-bottom:0}figure>figcaption{margin-top:.5em}div[id^=tbl-]{position:relative}.quarto-figure>.anchorjs-link{position:absolute;top:.6em;right:.5em}div[id^=tbl-]>.anchorjs-link{position:absolute;top:.7em;right:.3em}.quarto-figure:hover>.anchorjs-link,div[id^=tbl-]:hover>.anchorjs-link,h2:hover>.anchorjs-link,.h2:hover>.anchorjs-link,h3:hover>.anchorjs-link,.h3:hover>.anchorjs-link,h4:hover>.anchorjs-link,.h4:hover>.anchorjs-link,h5:hover>.anchorjs-link,.h5:hover>.anchorjs-link,h6:hover>.anchorjs-link,.h6:hover>.anchorjs-link,.reveal-anchorjs-link>.anchorjs-link{opacity:1}#title-block-header{margin-block-end:1rem;position:relative;margin-top:-1px}#title-block-header .abstract{margin-block-start:1rem}#title-block-header .abstract .abstract-title{font-weight:600}#title-block-header a{text-decoration:none}#title-block-header .author,#title-block-header .date,#title-block-header .doi{margin-block-end:.2rem}#title-block-header .quarto-title-block>div{display:flex}#title-block-header .quarto-title-block>div>h1,#title-block-header .quarto-title-block>div>.h1{flex-grow:1}#title-block-header .quarto-title-block>div>button{flex-shrink:0;height:2.25rem;margin-top:0}@media(min-width: 992px){#title-block-header .quarto-title-block>div>button{margin-top:5px}}tr.header>th>p:last-of-type{margin-bottom:0px}table,.table{caption-side:top;margin-bottom:1.5rem}caption,.table-caption{padding-top:.5rem;padding-bottom:.5rem;text-align:center}.utterances{max-width:none;margin-left:-8px}iframe{margin-bottom:1em}details{margin-bottom:1em}details[show]{margin-bottom:0}details>summary{color:#777}details>summary>p:only-child{display:inline}pre.sourceCode,code.sourceCode{position:relative}p code:not(.sourceCode){white-space:pre-wrap}code{white-space:pre}@media print{code{white-space:pre-wrap}}pre>code{display:block}pre>code.sourceCode{white-space:pre}pre>code.sourceCode>span>a:first-child::before{text-decoration:none}pre.code-overflow-wrap>code.sourceCode{white-space:pre-wrap}pre.code-overflow-scroll>code.sourceCode{white-space:pre}code a:any-link{color:inherit;text-decoration:none}code a:hover{color:inherit;text-decoration:underline}ul.task-list{padding-left:1em}[data-tippy-root]{display:inline-block}.tippy-content .footnote-back{display:none}.quarto-embedded-source-code{display:none}.quarto-unresolved-ref{font-weight:600}.quarto-cover-image{max-width:35%;float:right;margin-left:30px}.cell-output-display .widget-subarea{margin-bottom:1em}.cell-output-display:not(.no-overflow-x),.knitsql-table:not(.no-overflow-x){overflow-x:auto}.panel-input{margin-bottom:1em}.panel-input>div,.panel-input>div>div{display:inline-block;vertical-align:top;padding-right:12px}.panel-input>p:last-child{margin-bottom:0}.layout-sidebar{margin-bottom:1em}.layout-sidebar .tab-content{border:none}.tab-content>.page-columns.active{display:grid}div.sourceCode>iframe{width:100%;height:300px;margin-bottom:-0.5em}div.ansi-escaped-output{font-family:monospace;display:block}/*! +* +* ansi colors from IPython notebook's +* +*/.ansi-black-fg{color:#3e424d}.ansi-black-bg{background-color:#3e424d}.ansi-black-intense-fg{color:#282c36}.ansi-black-intense-bg{background-color:#282c36}.ansi-red-fg{color:#e75c58}.ansi-red-bg{background-color:#e75c58}.ansi-red-intense-fg{color:#b22b31}.ansi-red-intense-bg{background-color:#b22b31}.ansi-green-fg{color:#00a250}.ansi-green-bg{background-color:#00a250}.ansi-green-intense-fg{color:#007427}.ansi-green-intense-bg{background-color:#007427}.ansi-yellow-fg{color:#ddb62b}.ansi-yellow-bg{background-color:#ddb62b}.ansi-yellow-intense-fg{color:#b27d12}.ansi-yellow-intense-bg{background-color:#b27d12}.ansi-blue-fg{color:#208ffb}.ansi-blue-bg{background-color:#208ffb}.ansi-blue-intense-fg{color:#0065ca}.ansi-blue-intense-bg{background-color:#0065ca}.ansi-magenta-fg{color:#d160c4}.ansi-magenta-bg{background-color:#d160c4}.ansi-magenta-intense-fg{color:#a03196}.ansi-magenta-intense-bg{background-color:#a03196}.ansi-cyan-fg{color:#60c6c8}.ansi-cyan-bg{background-color:#60c6c8}.ansi-cyan-intense-fg{color:#258f8f}.ansi-cyan-intense-bg{background-color:#258f8f}.ansi-white-fg{color:#c5c1b4}.ansi-white-bg{background-color:#c5c1b4}.ansi-white-intense-fg{color:#a1a6b2}.ansi-white-intense-bg{background-color:#a1a6b2}.ansi-default-inverse-fg{color:#fff}.ansi-default-inverse-bg{background-color:#000}.ansi-bold{font-weight:bold}.ansi-underline{text-decoration:underline}:root{--quarto-body-bg: #fff;--quarto-body-color: #777;--quarto-text-muted: #777;--quarto-border-color: #dee2e6;--quarto-border-width: 1px;--quarto-border-radius: 0.25rem}table.gt_table{color:var(--quarto-body-color);font-size:1em;width:100%;background-color:rgba(0,0,0,0);border-top-width:inherit;border-bottom-width:inherit;border-color:var(--quarto-border-color)}table.gt_table th.gt_column_spanner_outer{color:var(--quarto-body-color);background-color:rgba(0,0,0,0);border-top-width:inherit;border-bottom-width:inherit;border-color:var(--quarto-border-color)}table.gt_table th.gt_col_heading{color:var(--quarto-body-color);font-weight:bold;background-color:rgba(0,0,0,0)}table.gt_table thead.gt_col_headings{border-bottom:1px solid currentColor;border-top-width:inherit;border-top-color:var(--quarto-border-color)}table.gt_table thead.gt_col_headings:not(:first-child){border-top-width:1px;border-top-color:var(--quarto-border-color)}table.gt_table td.gt_row{border-bottom-width:1px;border-bottom-color:var(--quarto-border-color);border-top-width:0px}table.gt_table tbody.gt_table_body{border-top-width:1px;border-bottom-width:1px;border-bottom-color:var(--quarto-border-color);border-top-color:currentColor}div.columns{display:initial;gap:initial}div.column{display:inline-block;overflow-x:initial;vertical-align:top;width:50%}.code-annotation-tip-content{word-wrap:break-word}.code-annotation-container-hidden{display:none !important}dl.code-annotation-container-grid{display:grid;grid-template-columns:min-content auto}dl.code-annotation-container-grid dt{grid-column:1}dl.code-annotation-container-grid dd{grid-column:2}pre.sourceCode.code-annotation-code{padding-right:0}code.sourceCode .code-annotation-anchor{z-index:100;position:absolute;right:.5em;left:inherit;background-color:rgba(0,0,0,0)}:root{--mermaid-bg-color: #fff;--mermaid-edge-color: #999;--mermaid-node-fg-color: #777;--mermaid-fg-color: #777;--mermaid-fg-color--lighter: #919191;--mermaid-fg-color--lightest: #aaaaaa;--mermaid-font-family: Open Sans, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;--mermaid-label-bg-color: #fff;--mermaid-label-fg-color: #446e9b;--mermaid-node-bg-color: rgba(68, 110, 155, 0.1);--mermaid-node-fg-color: #777}@media print{:root{font-size:11pt}#quarto-sidebar,#TOC,.nav-page{display:none}.page-columns .content{grid-column-start:page-start}.fixed-top{position:relative}.panel-caption,.figure-caption,figcaption{color:#666}}.code-copy-button{position:absolute;top:0;right:0;border:0;margin-top:5px;margin-right:5px;background-color:rgba(0,0,0,0);z-index:3}.code-copy-button:focus{outline:none}.code-copy-button-tooltip{font-size:.75em}pre.sourceCode:hover>.code-copy-button>.bi::before{display:inline-block;height:1rem;width:1rem;content:"";vertical-align:-0.125em;background-image:url('data:image/svg+xml,');background-repeat:no-repeat;background-size:1rem 1rem}pre.sourceCode:hover>.code-copy-button-checked>.bi::before{background-image:url('data:image/svg+xml,')}pre.sourceCode:hover>.code-copy-button:hover>.bi::before{background-image:url('data:image/svg+xml,')}pre.sourceCode:hover>.code-copy-button-checked:hover>.bi::before{background-image:url('data:image/svg+xml,')}main ol ol,main ul ul,main ol ul,main ul ol{margin-bottom:1em}ul>li:not(:has(>p))>ul,ol>li:not(:has(>p))>ul,ul>li:not(:has(>p))>ol,ol>li:not(:has(>p))>ol{margin-bottom:0}ul>li:not(:has(>p))>ul>li:has(>p),ol>li:not(:has(>p))>ul>li:has(>p),ul>li:not(:has(>p))>ol>li:has(>p),ol>li:not(:has(>p))>ol>li:has(>p){margin-top:1rem}body{margin:0}main.page-columns>header>h1.title,main.page-columns>header>.title.h1{margin-bottom:0}@media(min-width: 992px){body .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start page-start-inset] 35px [body-start-outset] 35px [body-start] 1.5em [body-content-start] minmax(500px, calc( 850px - 3em )) [body-content-end] 1.5em [body-end] 35px [body-end-outset] minmax(75px, 145px) [page-end-inset] 35px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.fullcontent:not(.floating):not(.docked) .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start page-start-inset] 35px [body-start-outset] 35px [body-start] 1.5em [body-content-start] minmax(500px, calc( 850px - 3em )) [body-content-end] 1.5em [body-end] 35px [body-end-outset] 35px [page-end-inset page-end] 5fr [screen-end-inset] 1.5em}body.slimcontent:not(.floating):not(.docked) .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start page-start-inset] 35px [body-start-outset] 35px [body-start] 1.5em [body-content-start] minmax(500px, calc( 850px - 3em )) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(0px, 200px) [page-end-inset] 35px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.listing:not(.floating):not(.docked) .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start] minmax(50px, 100px) [page-start-inset] 50px [body-start-outset] 50px [body-start] 1.5em [body-content-start] minmax(500px, calc( 850px - 3em )) [body-content-end] 3em [body-end] 50px [body-end-outset] minmax(0px, 250px) [page-end-inset] minmax(50px, 100px) [page-end] 1fr [screen-end-inset] 1.5em [screen-end]}body:not(.floating):not(.docked) .page-columns.toc-left{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] 35px [page-start-inset] minmax(0px, 175px) [body-start-outset] 35px [body-start] 1.5em [body-content-start] minmax(450px, calc( 800px - 3em )) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(0px, 200px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body:not(.floating):not(.docked) .page-columns.toc-left .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] 35px [page-start-inset] minmax(0px, 175px) [body-start-outset] 35px [body-start] 1.5em [body-content-start] minmax(450px, calc( 800px - 3em )) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(0px, 200px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.floating .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] minmax(25px, 50px) [page-start-inset] minmax(50px, 150px) [body-start-outset] minmax(25px, 50px) [body-start] 1.5em [body-content-start] minmax(500px, calc( 800px - 3em )) [body-content-end] 1.5em [body-end] minmax(25px, 50px) [body-end-outset] minmax(50px, 150px) [page-end-inset] minmax(25px, 50px) [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.docked .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start] minmax(50px, 100px) [page-start-inset] 50px [body-start-outset] 50px [body-start] 1.5em [body-content-start] minmax(500px, calc( 1000px - 3em )) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(50px, 100px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.docked.fullcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start] minmax(50px, 100px) [page-start-inset] 50px [body-start-outset] 50px [body-start] 1.5em [body-content-start] minmax(500px, calc( 1000px - 3em )) [body-content-end] 1.5em [body-end body-end-outset page-end-inset page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.floating.fullcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] 50px [page-start-inset] minmax(50px, 150px) [body-start-outset] 50px [body-start] 1.5em [body-content-start] minmax(500px, calc( 800px - 3em )) [body-content-end] 1.5em [body-end body-end-outset page-end-inset page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.docked.slimcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start] minmax(50px, 100px) [page-start-inset] 50px [body-start-outset] 50px [body-start] 1.5em [body-content-start] minmax(450px, calc( 750px - 3em )) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(0px, 200px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.docked.listing .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start] minmax(50px, 100px) [page-start-inset] 50px [body-start-outset] 50px [body-start] 1.5em [body-content-start] minmax(500px, calc( 1000px - 3em )) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(0px, 200px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.floating.slimcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] 50px [page-start-inset] minmax(50px, 150px) [body-start-outset] 50px [body-start] 1.5em [body-content-start] minmax(450px, calc( 750px - 3em )) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(50px, 150px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.floating.listing .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] minmax(25px, 50px) [page-start-inset] minmax(50px, 150px) [body-start-outset] minmax(25px, 50px) [body-start] 1.5em [body-content-start] minmax(500px, calc( 800px - 3em )) [body-content-end] 1.5em [body-end] minmax(25px, 50px) [body-end-outset] minmax(50px, 150px) [page-end-inset] minmax(25px, 50px) [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}}@media(max-width: 991.98px){body .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset] 5fr [body-start] 1.5em [body-content-start] minmax(500px, calc( 800px - 3em )) [body-content-end] 1.5em [body-end] 35px [body-end-outset] minmax(75px, 145px) [page-end-inset] 35px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.fullcontent:not(.floating):not(.docked) .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset] 5fr [body-start] 1.5em [body-content-start] minmax(500px, calc( 800px - 3em )) [body-content-end] 1.5em [body-end body-end-outset page-end-inset page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.slimcontent:not(.floating):not(.docked) .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset] 5fr [body-start] 1.5em [body-content-start] minmax(500px, calc( 800px - 3em )) [body-content-end] 1.5em [body-end] 35px [body-end-outset] minmax(75px, 145px) [page-end-inset] 35px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.listing:not(.floating):not(.docked) .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset] 5fr [body-start] 1.5em [body-content-start] minmax(500px, calc( 1250px - 3em )) [body-content-end body-end body-end-outset page-end-inset page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body:not(.floating):not(.docked) .page-columns.toc-left{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] 35px [page-start-inset] minmax(0px, 145px) [body-start-outset] 35px [body-start] 1.5em [body-content-start] minmax(450px, calc( 800px - 3em )) [body-content-end] 1.5em [body-end body-end-outset page-end-inset page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body:not(.floating):not(.docked) .page-columns.toc-left .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] 35px [page-start-inset] minmax(0px, 145px) [body-start-outset] 35px [body-start] 1.5em [body-content-start] minmax(450px, calc( 800px - 3em )) [body-content-end] 1.5em [body-end body-end-outset page-end-inset page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.floating .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start page-start-inset body-start-outset body-start] 1.5em [body-content-start] minmax(500px, calc( 750px - 3em )) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(75px, 150px) [page-end-inset] 25px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.docked .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset body-start body-content-start] minmax(500px, calc( 750px - 3em )) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(25px, 50px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.docked.fullcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset body-start body-content-start] minmax(500px, calc( 1000px - 3em )) [body-content-end] 1.5em [body-end body-end-outset page-end-inset page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.floating.fullcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start page-start-inset body-start-outset body-start] 1em [body-content-start] minmax(500px, calc( 800px - 3em )) [body-content-end] 1.5em [body-end body-end-outset page-end-inset page-end] 4fr [screen-end-inset] 1.5em [screen-end]}body.docked.slimcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset body-start body-content-start] minmax(500px, calc( 750px - 3em )) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(25px, 50px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.docked.listing .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset body-start body-content-start] minmax(500px, calc( 750px - 3em )) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(25px, 50px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.floating.slimcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start page-start-inset body-start-outset body-start] 1em [body-content-start] minmax(500px, calc( 750px - 3em )) [body-content-end] 1.5em [body-end] 35px [body-end-outset] minmax(75px, 145px) [page-end-inset] 35px [page-end] 4fr [screen-end-inset] 1.5em [screen-end]}body.floating.listing .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start page-start-inset body-start-outset body-start] 1em [body-content-start] minmax(500px, calc( 750px - 3em )) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(75px, 150px) [page-end-inset] 25px [page-end] 4fr [screen-end-inset] 1.5em [screen-end]}}@media(max-width: 767.98px){body .page-columns,body.fullcontent:not(.floating):not(.docked) .page-columns,body.slimcontent:not(.floating):not(.docked) .page-columns,body.docked .page-columns,body.docked.slimcontent .page-columns,body.docked.fullcontent .page-columns,body.floating .page-columns,body.floating.slimcontent .page-columns,body.floating.fullcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset body-start body-content-start] minmax(0px, 1fr) [body-content-end body-end body-end-outset page-end-inset page-end screen-end-inset] 1.5em [screen-end]}body:not(.floating):not(.docked) .page-columns.toc-left{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset body-start body-content-start] minmax(0px, 1fr) [body-content-end body-end body-end-outset page-end-inset page-end screen-end-inset] 1.5em [screen-end]}body:not(.floating):not(.docked) .page-columns.toc-left .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset body-start body-content-start] minmax(0px, 1fr) [body-content-end body-end body-end-outset page-end-inset page-end screen-end-inset] 1.5em [screen-end]}nav[role=doc-toc]{display:none}}body,.page-row-navigation{grid-template-rows:[page-top] max-content [contents-top] max-content [contents-bottom] max-content [page-bottom]}.page-rows-contents{grid-template-rows:[content-top] minmax(max-content, 1fr) [content-bottom] minmax(60px, max-content) [page-bottom]}.page-full{grid-column:screen-start/screen-end !important}.page-columns>*{grid-column:body-content-start/body-content-end}.page-columns.column-page>*{grid-column:page-start/page-end}.page-columns.column-page-left>*{grid-column:page-start/body-content-end}.page-columns.column-page-right>*{grid-column:body-content-start/page-end}.page-rows{grid-auto-rows:auto}.header{grid-column:screen-start/screen-end;grid-row:page-top/contents-top}#quarto-content{padding:0;grid-column:screen-start/screen-end;grid-row:contents-top/contents-bottom}body.floating .sidebar.sidebar-navigation{grid-column:page-start/body-start;grid-row:content-top/page-bottom}body.docked .sidebar.sidebar-navigation{grid-column:screen-start/body-start;grid-row:content-top/page-bottom}.sidebar.toc-left{grid-column:page-start/body-start;grid-row:content-top/page-bottom}.sidebar.margin-sidebar{grid-column:body-end/page-end;grid-row:content-top/page-bottom}.page-columns .content{grid-column:body-content-start/body-content-end;grid-row:content-top/content-bottom;align-content:flex-start}.page-columns .page-navigation{grid-column:body-content-start/body-content-end;grid-row:content-bottom/page-bottom}.page-columns .footer{grid-column:screen-start/screen-end;grid-row:contents-bottom/page-bottom}.page-columns .column-body{grid-column:body-content-start/body-content-end}.page-columns .column-body-fullbleed{grid-column:body-start/body-end}.page-columns .column-body-outset{grid-column:body-start-outset/body-end-outset;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-body-outset table{background:#fff}.page-columns .column-body-outset-left{grid-column:body-start-outset/body-content-end;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-body-outset-left table{background:#fff}.page-columns .column-body-outset-right{grid-column:body-content-start/body-end-outset;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-body-outset-right table{background:#fff}.page-columns .column-page{grid-column:page-start/page-end;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-page table{background:#fff}.page-columns .column-page-inset{grid-column:page-start-inset/page-end-inset;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-page-inset table{background:#fff}.page-columns .column-page-inset-left{grid-column:page-start-inset/body-content-end;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-page-inset-left table{background:#fff}.page-columns .column-page-inset-right{grid-column:body-content-start/page-end-inset;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-page-inset-right figcaption table{background:#fff}.page-columns .column-page-left{grid-column:page-start/body-content-end;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-page-left table{background:#fff}.page-columns .column-page-right{grid-column:body-content-start/page-end;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-page-right figcaption table{background:#fff}#quarto-content.page-columns #quarto-margin-sidebar,#quarto-content.page-columns #quarto-sidebar{z-index:1}@media(max-width: 991.98px){#quarto-content.page-columns #quarto-margin-sidebar.collapse,#quarto-content.page-columns #quarto-sidebar.collapse,#quarto-content.page-columns #quarto-margin-sidebar.collapsing,#quarto-content.page-columns #quarto-sidebar.collapsing{z-index:1055}}#quarto-content.page-columns main.column-page,#quarto-content.page-columns main.column-page-right,#quarto-content.page-columns main.column-page-left{z-index:0}.page-columns .column-screen-inset{grid-column:screen-start-inset/screen-end-inset;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-screen-inset table{background:#fff}.page-columns .column-screen-inset-left{grid-column:screen-start-inset/body-content-end;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-screen-inset-left table{background:#fff}.page-columns .column-screen-inset-right{grid-column:body-content-start/screen-end-inset;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-screen-inset-right table{background:#fff}.page-columns .column-screen{grid-column:screen-start/screen-end;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-screen table{background:#fff}.page-columns .column-screen-left{grid-column:screen-start/body-content-end;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-screen-left table{background:#fff}.page-columns .column-screen-right{grid-column:body-content-start/screen-end;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-screen-right table{background:#fff}.page-columns .column-screen-inset-shaded{grid-column:screen-start/screen-end;padding:1em;background:#eee;z-index:998;transform:translate3d(0, 0, 0);margin-bottom:1em}.zindex-content{z-index:998;transform:translate3d(0, 0, 0)}.zindex-modal{z-index:1055;transform:translate3d(0, 0, 0)}.zindex-over-content{z-index:999;transform:translate3d(0, 0, 0)}img.img-fluid.column-screen,img.img-fluid.column-screen-inset-shaded,img.img-fluid.column-screen-inset,img.img-fluid.column-screen-inset-left,img.img-fluid.column-screen-inset-right,img.img-fluid.column-screen-left,img.img-fluid.column-screen-right{width:100%}@media(min-width: 992px){.margin-caption,div.aside,aside,.column-margin{grid-column:body-end/page-end !important;z-index:998}.column-sidebar{grid-column:page-start/body-start !important;z-index:998}.column-leftmargin{grid-column:screen-start-inset/body-start !important;z-index:998}.no-row-height{height:1em;overflow:visible}}@media(max-width: 991.98px){.margin-caption,div.aside,aside,.column-margin{grid-column:body-end/page-end !important;z-index:998}.no-row-height{height:1em;overflow:visible}.page-columns.page-full{overflow:visible}.page-columns.toc-left .margin-caption,.page-columns.toc-left div.aside,.page-columns.toc-left aside,.page-columns.toc-left .column-margin{grid-column:body-content-start/body-content-end !important;z-index:998;transform:translate3d(0, 0, 0)}.page-columns.toc-left .no-row-height{height:initial;overflow:initial}}@media(max-width: 767.98px){.margin-caption,div.aside,aside,.column-margin{grid-column:body-content-start/body-content-end !important;z-index:998;transform:translate3d(0, 0, 0)}.no-row-height{height:initial;overflow:initial}#quarto-margin-sidebar{display:none}#quarto-sidebar-toc-left{display:none}.hidden-sm{display:none}}.panel-grid{display:grid;grid-template-rows:repeat(1, 1fr);grid-template-columns:repeat(24, 1fr);gap:1em}.panel-grid .g-col-1{grid-column:auto/span 1}.panel-grid .g-col-2{grid-column:auto/span 2}.panel-grid .g-col-3{grid-column:auto/span 3}.panel-grid .g-col-4{grid-column:auto/span 4}.panel-grid .g-col-5{grid-column:auto/span 5}.panel-grid .g-col-6{grid-column:auto/span 6}.panel-grid .g-col-7{grid-column:auto/span 7}.panel-grid .g-col-8{grid-column:auto/span 8}.panel-grid .g-col-9{grid-column:auto/span 9}.panel-grid .g-col-10{grid-column:auto/span 10}.panel-grid .g-col-11{grid-column:auto/span 11}.panel-grid .g-col-12{grid-column:auto/span 12}.panel-grid .g-col-13{grid-column:auto/span 13}.panel-grid .g-col-14{grid-column:auto/span 14}.panel-grid .g-col-15{grid-column:auto/span 15}.panel-grid .g-col-16{grid-column:auto/span 16}.panel-grid .g-col-17{grid-column:auto/span 17}.panel-grid .g-col-18{grid-column:auto/span 18}.panel-grid .g-col-19{grid-column:auto/span 19}.panel-grid .g-col-20{grid-column:auto/span 20}.panel-grid .g-col-21{grid-column:auto/span 21}.panel-grid .g-col-22{grid-column:auto/span 22}.panel-grid .g-col-23{grid-column:auto/span 23}.panel-grid .g-col-24{grid-column:auto/span 24}.panel-grid .g-start-1{grid-column-start:1}.panel-grid .g-start-2{grid-column-start:2}.panel-grid .g-start-3{grid-column-start:3}.panel-grid .g-start-4{grid-column-start:4}.panel-grid .g-start-5{grid-column-start:5}.panel-grid .g-start-6{grid-column-start:6}.panel-grid .g-start-7{grid-column-start:7}.panel-grid .g-start-8{grid-column-start:8}.panel-grid .g-start-9{grid-column-start:9}.panel-grid .g-start-10{grid-column-start:10}.panel-grid .g-start-11{grid-column-start:11}.panel-grid .g-start-12{grid-column-start:12}.panel-grid .g-start-13{grid-column-start:13}.panel-grid .g-start-14{grid-column-start:14}.panel-grid .g-start-15{grid-column-start:15}.panel-grid .g-start-16{grid-column-start:16}.panel-grid .g-start-17{grid-column-start:17}.panel-grid .g-start-18{grid-column-start:18}.panel-grid .g-start-19{grid-column-start:19}.panel-grid .g-start-20{grid-column-start:20}.panel-grid .g-start-21{grid-column-start:21}.panel-grid .g-start-22{grid-column-start:22}.panel-grid .g-start-23{grid-column-start:23}@media(min-width: 576px){.panel-grid .g-col-sm-1{grid-column:auto/span 1}.panel-grid .g-col-sm-2{grid-column:auto/span 2}.panel-grid .g-col-sm-3{grid-column:auto/span 3}.panel-grid .g-col-sm-4{grid-column:auto/span 4}.panel-grid .g-col-sm-5{grid-column:auto/span 5}.panel-grid .g-col-sm-6{grid-column:auto/span 6}.panel-grid .g-col-sm-7{grid-column:auto/span 7}.panel-grid .g-col-sm-8{grid-column:auto/span 8}.panel-grid .g-col-sm-9{grid-column:auto/span 9}.panel-grid .g-col-sm-10{grid-column:auto/span 10}.panel-grid .g-col-sm-11{grid-column:auto/span 11}.panel-grid .g-col-sm-12{grid-column:auto/span 12}.panel-grid .g-col-sm-13{grid-column:auto/span 13}.panel-grid .g-col-sm-14{grid-column:auto/span 14}.panel-grid .g-col-sm-15{grid-column:auto/span 15}.panel-grid .g-col-sm-16{grid-column:auto/span 16}.panel-grid .g-col-sm-17{grid-column:auto/span 17}.panel-grid .g-col-sm-18{grid-column:auto/span 18}.panel-grid .g-col-sm-19{grid-column:auto/span 19}.panel-grid .g-col-sm-20{grid-column:auto/span 20}.panel-grid .g-col-sm-21{grid-column:auto/span 21}.panel-grid .g-col-sm-22{grid-column:auto/span 22}.panel-grid .g-col-sm-23{grid-column:auto/span 23}.panel-grid .g-col-sm-24{grid-column:auto/span 24}.panel-grid .g-start-sm-1{grid-column-start:1}.panel-grid .g-start-sm-2{grid-column-start:2}.panel-grid .g-start-sm-3{grid-column-start:3}.panel-grid .g-start-sm-4{grid-column-start:4}.panel-grid .g-start-sm-5{grid-column-start:5}.panel-grid .g-start-sm-6{grid-column-start:6}.panel-grid .g-start-sm-7{grid-column-start:7}.panel-grid .g-start-sm-8{grid-column-start:8}.panel-grid .g-start-sm-9{grid-column-start:9}.panel-grid .g-start-sm-10{grid-column-start:10}.panel-grid .g-start-sm-11{grid-column-start:11}.panel-grid .g-start-sm-12{grid-column-start:12}.panel-grid .g-start-sm-13{grid-column-start:13}.panel-grid .g-start-sm-14{grid-column-start:14}.panel-grid .g-start-sm-15{grid-column-start:15}.panel-grid .g-start-sm-16{grid-column-start:16}.panel-grid .g-start-sm-17{grid-column-start:17}.panel-grid .g-start-sm-18{grid-column-start:18}.panel-grid .g-start-sm-19{grid-column-start:19}.panel-grid .g-start-sm-20{grid-column-start:20}.panel-grid .g-start-sm-21{grid-column-start:21}.panel-grid .g-start-sm-22{grid-column-start:22}.panel-grid .g-start-sm-23{grid-column-start:23}}@media(min-width: 768px){.panel-grid .g-col-md-1{grid-column:auto/span 1}.panel-grid .g-col-md-2{grid-column:auto/span 2}.panel-grid .g-col-md-3{grid-column:auto/span 3}.panel-grid .g-col-md-4{grid-column:auto/span 4}.panel-grid .g-col-md-5{grid-column:auto/span 5}.panel-grid .g-col-md-6{grid-column:auto/span 6}.panel-grid .g-col-md-7{grid-column:auto/span 7}.panel-grid .g-col-md-8{grid-column:auto/span 8}.panel-grid .g-col-md-9{grid-column:auto/span 9}.panel-grid .g-col-md-10{grid-column:auto/span 10}.panel-grid .g-col-md-11{grid-column:auto/span 11}.panel-grid .g-col-md-12{grid-column:auto/span 12}.panel-grid .g-col-md-13{grid-column:auto/span 13}.panel-grid .g-col-md-14{grid-column:auto/span 14}.panel-grid .g-col-md-15{grid-column:auto/span 15}.panel-grid .g-col-md-16{grid-column:auto/span 16}.panel-grid .g-col-md-17{grid-column:auto/span 17}.panel-grid .g-col-md-18{grid-column:auto/span 18}.panel-grid .g-col-md-19{grid-column:auto/span 19}.panel-grid .g-col-md-20{grid-column:auto/span 20}.panel-grid .g-col-md-21{grid-column:auto/span 21}.panel-grid .g-col-md-22{grid-column:auto/span 22}.panel-grid .g-col-md-23{grid-column:auto/span 23}.panel-grid .g-col-md-24{grid-column:auto/span 24}.panel-grid .g-start-md-1{grid-column-start:1}.panel-grid .g-start-md-2{grid-column-start:2}.panel-grid .g-start-md-3{grid-column-start:3}.panel-grid .g-start-md-4{grid-column-start:4}.panel-grid .g-start-md-5{grid-column-start:5}.panel-grid .g-start-md-6{grid-column-start:6}.panel-grid .g-start-md-7{grid-column-start:7}.panel-grid .g-start-md-8{grid-column-start:8}.panel-grid .g-start-md-9{grid-column-start:9}.panel-grid .g-start-md-10{grid-column-start:10}.panel-grid .g-start-md-11{grid-column-start:11}.panel-grid .g-start-md-12{grid-column-start:12}.panel-grid .g-start-md-13{grid-column-start:13}.panel-grid .g-start-md-14{grid-column-start:14}.panel-grid .g-start-md-15{grid-column-start:15}.panel-grid .g-start-md-16{grid-column-start:16}.panel-grid .g-start-md-17{grid-column-start:17}.panel-grid .g-start-md-18{grid-column-start:18}.panel-grid .g-start-md-19{grid-column-start:19}.panel-grid .g-start-md-20{grid-column-start:20}.panel-grid .g-start-md-21{grid-column-start:21}.panel-grid .g-start-md-22{grid-column-start:22}.panel-grid .g-start-md-23{grid-column-start:23}}@media(min-width: 992px){.panel-grid .g-col-lg-1{grid-column:auto/span 1}.panel-grid .g-col-lg-2{grid-column:auto/span 2}.panel-grid .g-col-lg-3{grid-column:auto/span 3}.panel-grid .g-col-lg-4{grid-column:auto/span 4}.panel-grid .g-col-lg-5{grid-column:auto/span 5}.panel-grid .g-col-lg-6{grid-column:auto/span 6}.panel-grid .g-col-lg-7{grid-column:auto/span 7}.panel-grid .g-col-lg-8{grid-column:auto/span 8}.panel-grid .g-col-lg-9{grid-column:auto/span 9}.panel-grid .g-col-lg-10{grid-column:auto/span 10}.panel-grid .g-col-lg-11{grid-column:auto/span 11}.panel-grid .g-col-lg-12{grid-column:auto/span 12}.panel-grid .g-col-lg-13{grid-column:auto/span 13}.panel-grid .g-col-lg-14{grid-column:auto/span 14}.panel-grid .g-col-lg-15{grid-column:auto/span 15}.panel-grid .g-col-lg-16{grid-column:auto/span 16}.panel-grid .g-col-lg-17{grid-column:auto/span 17}.panel-grid .g-col-lg-18{grid-column:auto/span 18}.panel-grid .g-col-lg-19{grid-column:auto/span 19}.panel-grid .g-col-lg-20{grid-column:auto/span 20}.panel-grid .g-col-lg-21{grid-column:auto/span 21}.panel-grid .g-col-lg-22{grid-column:auto/span 22}.panel-grid .g-col-lg-23{grid-column:auto/span 23}.panel-grid .g-col-lg-24{grid-column:auto/span 24}.panel-grid .g-start-lg-1{grid-column-start:1}.panel-grid .g-start-lg-2{grid-column-start:2}.panel-grid .g-start-lg-3{grid-column-start:3}.panel-grid .g-start-lg-4{grid-column-start:4}.panel-grid .g-start-lg-5{grid-column-start:5}.panel-grid .g-start-lg-6{grid-column-start:6}.panel-grid .g-start-lg-7{grid-column-start:7}.panel-grid .g-start-lg-8{grid-column-start:8}.panel-grid .g-start-lg-9{grid-column-start:9}.panel-grid .g-start-lg-10{grid-column-start:10}.panel-grid .g-start-lg-11{grid-column-start:11}.panel-grid .g-start-lg-12{grid-column-start:12}.panel-grid .g-start-lg-13{grid-column-start:13}.panel-grid .g-start-lg-14{grid-column-start:14}.panel-grid .g-start-lg-15{grid-column-start:15}.panel-grid .g-start-lg-16{grid-column-start:16}.panel-grid .g-start-lg-17{grid-column-start:17}.panel-grid .g-start-lg-18{grid-column-start:18}.panel-grid .g-start-lg-19{grid-column-start:19}.panel-grid .g-start-lg-20{grid-column-start:20}.panel-grid .g-start-lg-21{grid-column-start:21}.panel-grid .g-start-lg-22{grid-column-start:22}.panel-grid .g-start-lg-23{grid-column-start:23}}@media(min-width: 1200px){.panel-grid .g-col-xl-1{grid-column:auto/span 1}.panel-grid .g-col-xl-2{grid-column:auto/span 2}.panel-grid .g-col-xl-3{grid-column:auto/span 3}.panel-grid .g-col-xl-4{grid-column:auto/span 4}.panel-grid .g-col-xl-5{grid-column:auto/span 5}.panel-grid .g-col-xl-6{grid-column:auto/span 6}.panel-grid .g-col-xl-7{grid-column:auto/span 7}.panel-grid .g-col-xl-8{grid-column:auto/span 8}.panel-grid .g-col-xl-9{grid-column:auto/span 9}.panel-grid .g-col-xl-10{grid-column:auto/span 10}.panel-grid .g-col-xl-11{grid-column:auto/span 11}.panel-grid .g-col-xl-12{grid-column:auto/span 12}.panel-grid .g-col-xl-13{grid-column:auto/span 13}.panel-grid .g-col-xl-14{grid-column:auto/span 14}.panel-grid .g-col-xl-15{grid-column:auto/span 15}.panel-grid .g-col-xl-16{grid-column:auto/span 16}.panel-grid .g-col-xl-17{grid-column:auto/span 17}.panel-grid .g-col-xl-18{grid-column:auto/span 18}.panel-grid .g-col-xl-19{grid-column:auto/span 19}.panel-grid .g-col-xl-20{grid-column:auto/span 20}.panel-grid .g-col-xl-21{grid-column:auto/span 21}.panel-grid .g-col-xl-22{grid-column:auto/span 22}.panel-grid .g-col-xl-23{grid-column:auto/span 23}.panel-grid .g-col-xl-24{grid-column:auto/span 24}.panel-grid .g-start-xl-1{grid-column-start:1}.panel-grid .g-start-xl-2{grid-column-start:2}.panel-grid .g-start-xl-3{grid-column-start:3}.panel-grid .g-start-xl-4{grid-column-start:4}.panel-grid .g-start-xl-5{grid-column-start:5}.panel-grid .g-start-xl-6{grid-column-start:6}.panel-grid .g-start-xl-7{grid-column-start:7}.panel-grid .g-start-xl-8{grid-column-start:8}.panel-grid .g-start-xl-9{grid-column-start:9}.panel-grid .g-start-xl-10{grid-column-start:10}.panel-grid .g-start-xl-11{grid-column-start:11}.panel-grid .g-start-xl-12{grid-column-start:12}.panel-grid .g-start-xl-13{grid-column-start:13}.panel-grid .g-start-xl-14{grid-column-start:14}.panel-grid .g-start-xl-15{grid-column-start:15}.panel-grid .g-start-xl-16{grid-column-start:16}.panel-grid .g-start-xl-17{grid-column-start:17}.panel-grid .g-start-xl-18{grid-column-start:18}.panel-grid .g-start-xl-19{grid-column-start:19}.panel-grid .g-start-xl-20{grid-column-start:20}.panel-grid .g-start-xl-21{grid-column-start:21}.panel-grid .g-start-xl-22{grid-column-start:22}.panel-grid .g-start-xl-23{grid-column-start:23}}@media(min-width: 1400px){.panel-grid .g-col-xxl-1{grid-column:auto/span 1}.panel-grid .g-col-xxl-2{grid-column:auto/span 2}.panel-grid .g-col-xxl-3{grid-column:auto/span 3}.panel-grid .g-col-xxl-4{grid-column:auto/span 4}.panel-grid .g-col-xxl-5{grid-column:auto/span 5}.panel-grid .g-col-xxl-6{grid-column:auto/span 6}.panel-grid .g-col-xxl-7{grid-column:auto/span 7}.panel-grid .g-col-xxl-8{grid-column:auto/span 8}.panel-grid .g-col-xxl-9{grid-column:auto/span 9}.panel-grid .g-col-xxl-10{grid-column:auto/span 10}.panel-grid .g-col-xxl-11{grid-column:auto/span 11}.panel-grid .g-col-xxl-12{grid-column:auto/span 12}.panel-grid .g-col-xxl-13{grid-column:auto/span 13}.panel-grid .g-col-xxl-14{grid-column:auto/span 14}.panel-grid .g-col-xxl-15{grid-column:auto/span 15}.panel-grid .g-col-xxl-16{grid-column:auto/span 16}.panel-grid .g-col-xxl-17{grid-column:auto/span 17}.panel-grid .g-col-xxl-18{grid-column:auto/span 18}.panel-grid .g-col-xxl-19{grid-column:auto/span 19}.panel-grid .g-col-xxl-20{grid-column:auto/span 20}.panel-grid .g-col-xxl-21{grid-column:auto/span 21}.panel-grid .g-col-xxl-22{grid-column:auto/span 22}.panel-grid .g-col-xxl-23{grid-column:auto/span 23}.panel-grid .g-col-xxl-24{grid-column:auto/span 24}.panel-grid .g-start-xxl-1{grid-column-start:1}.panel-grid .g-start-xxl-2{grid-column-start:2}.panel-grid .g-start-xxl-3{grid-column-start:3}.panel-grid .g-start-xxl-4{grid-column-start:4}.panel-grid .g-start-xxl-5{grid-column-start:5}.panel-grid .g-start-xxl-6{grid-column-start:6}.panel-grid .g-start-xxl-7{grid-column-start:7}.panel-grid .g-start-xxl-8{grid-column-start:8}.panel-grid .g-start-xxl-9{grid-column-start:9}.panel-grid .g-start-xxl-10{grid-column-start:10}.panel-grid .g-start-xxl-11{grid-column-start:11}.panel-grid .g-start-xxl-12{grid-column-start:12}.panel-grid .g-start-xxl-13{grid-column-start:13}.panel-grid .g-start-xxl-14{grid-column-start:14}.panel-grid .g-start-xxl-15{grid-column-start:15}.panel-grid .g-start-xxl-16{grid-column-start:16}.panel-grid .g-start-xxl-17{grid-column-start:17}.panel-grid .g-start-xxl-18{grid-column-start:18}.panel-grid .g-start-xxl-19{grid-column-start:19}.panel-grid .g-start-xxl-20{grid-column-start:20}.panel-grid .g-start-xxl-21{grid-column-start:21}.panel-grid .g-start-xxl-22{grid-column-start:22}.panel-grid .g-start-xxl-23{grid-column-start:23}}main{margin-top:1em;margin-bottom:1em}h1,.h1,h2,.h2{opacity:.9;margin-top:2rem;margin-bottom:1rem;font-weight:600}h1.title,.title.h1{margin-top:0}h2,.h2{border-bottom:1px solid #dee2e6;padding-bottom:.5rem}h3,.h3{font-weight:600}h3,.h3,h4,.h4{opacity:.9;margin-top:1.5rem}h5,.h5,h6,.h6{opacity:.9}.header-section-number{color:#b7b7b7}.nav-link.active .header-section-number{color:inherit}mark,.mark{padding:0em}.panel-caption,caption,.figure-caption{font-size:.9rem}.panel-caption,.figure-caption,figcaption{color:#b7b7b7}.table-caption,caption{color:#777}.quarto-layout-cell[data-ref-parent] caption{color:#b7b7b7}.column-margin figcaption,.margin-caption,div.aside,aside,.column-margin{color:#b7b7b7;font-size:.825rem}.panel-caption.margin-caption{text-align:inherit}.column-margin.column-container p{margin-bottom:0}.column-margin.column-container>*:not(.collapse){padding-top:.5em;padding-bottom:.5em;display:block}.column-margin.column-container>*.collapse:not(.show){display:none}@media(min-width: 768px){.column-margin.column-container .callout-margin-content:first-child{margin-top:4.5em}.column-margin.column-container .callout-margin-content-simple:first-child{margin-top:3.5em}}.margin-caption>*{padding-top:.5em;padding-bottom:.5em}@media(max-width: 767.98px){.quarto-layout-row{flex-direction:column}}.nav-tabs .nav-item{margin-top:1px;cursor:pointer}.tab-content{margin-top:0px;border-left:#dee2e6 1px solid;border-right:#dee2e6 1px solid;border-bottom:#dee2e6 1px solid;margin-left:0;padding:1em;margin-bottom:1em}@media(max-width: 767.98px){.layout-sidebar{margin-left:0;margin-right:0}}.panel-sidebar,.panel-sidebar .form-control,.panel-input,.panel-input .form-control,.selectize-dropdown{font-size:.9rem}.panel-sidebar .form-control,.panel-input .form-control{padding-top:.1rem}.tab-pane div.sourceCode{margin-top:0px}.tab-pane>p{padding-top:1em}.tab-content>.tab-pane:not(.active){display:none !important}div.sourceCode{background-color:#fdf6e3;border:1px solid #fdf6e3;border-radius:.25rem}pre.sourceCode{background-color:rgba(0,0,0,0)}pre.sourceCode{border:none;font-size:.875em;overflow:visible !important;padding:.4em}.callout pre.sourceCode{padding-left:0}div.sourceCode{overflow-y:hidden}.callout div.sourceCode{margin-left:initial}.blockquote{font-size:inherit;padding-left:1rem;padding-right:1.5rem;color:#b7b7b7}.blockquote h1:first-child,.blockquote .h1:first-child,.blockquote h2:first-child,.blockquote .h2:first-child,.blockquote h3:first-child,.blockquote .h3:first-child,.blockquote h4:first-child,.blockquote .h4:first-child,.blockquote h5:first-child,.blockquote .h5:first-child{margin-top:0}pre{background-color:initial;padding:initial;border:initial}p code:not(.sourceCode),li code:not(.sourceCode),td code:not(.sourceCode){background-color:#fafafa;padding:.2em}nav p code:not(.sourceCode),nav li code:not(.sourceCode),nav td code:not(.sourceCode){background-color:rgba(0,0,0,0);padding:0}td code:not(.sourceCode){white-space:pre-wrap}#quarto-embedded-source-code-modal>.modal-dialog{max-width:1000px;padding-left:1.75rem;padding-right:1.75rem}#quarto-embedded-source-code-modal>.modal-dialog>.modal-content>.modal-body{padding:0}#quarto-embedded-source-code-modal>.modal-dialog>.modal-content>.modal-body div.sourceCode{margin:0;padding:.2rem .2rem;border-radius:0px;border:none}#quarto-embedded-source-code-modal>.modal-dialog>.modal-content>.modal-header{padding:.7rem}.code-tools-button{font-size:1rem;padding:.15rem .15rem;margin-left:5px;color:#777;background-color:rgba(0,0,0,0);transition:initial;cursor:pointer}.code-tools-button>.bi::before{display:inline-block;height:1rem;width:1rem;content:"";vertical-align:-0.125em;background-image:url('data:image/svg+xml,');background-repeat:no-repeat;background-size:1rem 1rem}.code-tools-button:hover>.bi::before{background-image:url('data:image/svg+xml,')}#quarto-embedded-source-code-modal .code-copy-button>.bi::before{background-image:url('data:image/svg+xml,')}#quarto-embedded-source-code-modal .code-copy-button-checked>.bi::before{background-image:url('data:image/svg+xml,')}.sidebar{will-change:top;transition:top 200ms linear;position:sticky;overflow-y:auto;padding-top:1.2em;max-height:100vh}.sidebar.toc-left,.sidebar.margin-sidebar{top:0px;padding-top:1em}.sidebar.toc-left>*,.sidebar.margin-sidebar>*{padding-top:.5em}.sidebar.quarto-banner-title-block-sidebar>*{padding-top:1.65em}figure .quarto-notebook-link{margin-top:.5em}.quarto-notebook-link{font-size:.75em;color:#777;margin-bottom:1em;text-decoration:none;display:block}.quarto-notebook-link:hover{text-decoration:underline;color:#3399f3}.quarto-notebook-link::before{display:inline-block;height:.75rem;width:.75rem;margin-bottom:0em;margin-right:.25em;content:"";vertical-align:-0.125em;background-image:url('data:image/svg+xml,');background-repeat:no-repeat;background-size:.75rem .75rem}.quarto-alternate-notebooks i.bi,.quarto-alternate-formats i.bi{margin-right:.4em}.quarto-notebook .cell-container{display:flex}.quarto-notebook .cell-container .cell{flex-grow:4}.quarto-notebook .cell-container .cell-decorator{padding-top:1.5em;padding-right:1em;text-align:right}.quarto-notebook h2,.quarto-notebook .h2{border-bottom:none}.sidebar .quarto-alternate-formats a,.sidebar .quarto-alternate-notebooks a{text-decoration:none}.sidebar .quarto-alternate-formats a:hover,.sidebar .quarto-alternate-notebooks a:hover{color:#3399f3}.sidebar .quarto-alternate-notebooks h2,.sidebar .quarto-alternate-notebooks .h2,.sidebar .quarto-alternate-formats h2,.sidebar .quarto-alternate-formats .h2,.sidebar nav[role=doc-toc]>h2,.sidebar nav[role=doc-toc]>.h2{font-size:.875rem;font-weight:400;margin-bottom:.5rem;margin-top:.3rem;font-family:inherit;border-bottom:0;padding-bottom:0;padding-top:0px}.sidebar .quarto-alternate-notebooks h2,.sidebar .quarto-alternate-notebooks .h2,.sidebar .quarto-alternate-formats h2,.sidebar .quarto-alternate-formats .h2{margin-top:1rem}.sidebar nav[role=doc-toc]>ul a{border-left:1px solid #eee;padding-left:.6rem}.sidebar .quarto-alternate-notebooks h2>ul a,.sidebar .quarto-alternate-notebooks .h2>ul a,.sidebar .quarto-alternate-formats h2>ul a,.sidebar .quarto-alternate-formats .h2>ul a{border-left:none;padding-left:.6rem}.sidebar .quarto-alternate-notebooks ul a:empty,.sidebar .quarto-alternate-formats ul a:empty,.sidebar nav[role=doc-toc]>ul a:empty{display:none}.sidebar .quarto-alternate-notebooks ul,.sidebar .quarto-alternate-formats ul,.sidebar nav[role=doc-toc] ul{padding-left:0;list-style:none;font-size:.875rem;font-weight:300}.sidebar .quarto-alternate-notebooks ul li a,.sidebar .quarto-alternate-formats ul li a,.sidebar nav[role=doc-toc]>ul li a{line-height:1.1rem;padding-bottom:.2rem;padding-top:.2rem;color:inherit}.sidebar nav[role=doc-toc] ul>li>ul>li>a{padding-left:1.2em}.sidebar nav[role=doc-toc] ul>li>ul>li>ul>li>a{padding-left:2.4em}.sidebar nav[role=doc-toc] ul>li>ul>li>ul>li>ul>li>a{padding-left:3.6em}.sidebar nav[role=doc-toc] ul>li>ul>li>ul>li>ul>li>ul>li>a{padding-left:4.8em}.sidebar nav[role=doc-toc] ul>li>ul>li>ul>li>ul>li>ul>li>ul>li>a{padding-left:6em}.sidebar nav[role=doc-toc] ul>li>a.active,.sidebar nav[role=doc-toc] ul>li>ul>li>a.active{border-left:1px solid #3399f3;color:#3399f3 !important}.sidebar nav[role=doc-toc] ul>li>a:hover,.sidebar nav[role=doc-toc] ul>li>ul>li>a:hover{color:#3399f3 !important}kbd,.kbd{color:#777;background-color:#f8f9fa;border:1px solid;border-radius:5px;border-color:#dee2e6}div.hanging-indent{margin-left:1em;text-indent:-1em}.citation a,.footnote-ref{text-decoration:none}.footnotes ol{padding-left:1em}.tippy-content>*{margin-bottom:.7em}.tippy-content>*:last-child{margin-bottom:0}.table a{word-break:break-word}.table>thead{border-top-width:1px;border-top-color:#dee2e6;border-bottom:1px solid #f7f7f7}.callout{margin-top:1.25rem;margin-bottom:1.25rem;border-radius:.25rem;overflow-wrap:break-word}.callout .callout-title-container{overflow-wrap:anywhere}.callout.callout-style-simple{padding:.4em .7em;border-left:5px solid;border-right:1px solid #dee2e6;border-top:1px solid #dee2e6;border-bottom:1px solid #dee2e6}.callout.callout-style-default{border-left:5px solid;border-right:1px solid #dee2e6;border-top:1px solid #dee2e6;border-bottom:1px solid #dee2e6}.callout .callout-body-container{flex-grow:1}.callout.callout-style-simple .callout-body{font-size:.9rem;font-weight:400}.callout.callout-style-default .callout-body{font-size:.9rem;font-weight:400}.callout.callout-titled .callout-body{margin-top:.2em}.callout:not(.no-icon).callout-titled.callout-style-simple .callout-body{padding-left:1.6em}.callout.callout-titled>.callout-header{padding-top:.2em;margin-bottom:-0.2em}.callout.callout-style-simple>div.callout-header{border-bottom:none;font-size:.9rem;font-weight:600;opacity:75%}.callout.callout-style-default>div.callout-header{border-bottom:none;font-weight:600;opacity:85%;font-size:.9rem;padding-left:.5em;padding-right:.5em}.callout.callout-style-default div.callout-body{padding-left:.5em;padding-right:.5em}.callout.callout-style-default div.callout-body>:first-child{margin-top:.5em}.callout>div.callout-header[data-bs-toggle=collapse]{cursor:pointer}.callout.callout-style-default .callout-header[aria-expanded=false],.callout.callout-style-default .callout-header[aria-expanded=true]{padding-top:0px;margin-bottom:0px;align-items:center}.callout.callout-titled .callout-body>:last-child:not(.sourceCode),.callout.callout-titled .callout-body>div>:last-child:not(.sourceCode){margin-bottom:.5rem}.callout:not(.callout-titled) .callout-body>:first-child,.callout:not(.callout-titled) .callout-body>div>:first-child{margin-top:.25rem}.callout:not(.callout-titled) .callout-body>:last-child,.callout:not(.callout-titled) .callout-body>div>:last-child{margin-bottom:.2rem}.callout.callout-style-simple .callout-icon::before,.callout.callout-style-simple .callout-toggle::before{height:1rem;width:1rem;display:inline-block;content:"";background-repeat:no-repeat;background-size:1rem 1rem}.callout.callout-style-default .callout-icon::before,.callout.callout-style-default .callout-toggle::before{height:.9rem;width:.9rem;display:inline-block;content:"";background-repeat:no-repeat;background-size:.9rem .9rem}.callout.callout-style-default .callout-toggle::before{margin-top:5px}.callout .callout-btn-toggle .callout-toggle::before{transition:transform .2s linear}.callout .callout-header[aria-expanded=false] .callout-toggle::before{transform:rotate(-90deg)}.callout .callout-header[aria-expanded=true] .callout-toggle::before{transform:none}.callout.callout-style-simple:not(.no-icon) div.callout-icon-container{padding-top:.2em;padding-right:.55em}.callout.callout-style-default:not(.no-icon) div.callout-icon-container{padding-top:.1em;padding-right:.35em}.callout.callout-style-default:not(.no-icon) div.callout-title-container{margin-top:-1px}.callout.callout-style-default.callout-caution:not(.no-icon) div.callout-icon-container{padding-top:.3em;padding-right:.35em}.callout>.callout-body>.callout-icon-container>.no-icon,.callout>.callout-header>.callout-icon-container>.no-icon{display:none}div.callout.callout{border-left-color:#777}div.callout.callout-style-default>.callout-header{background-color:#777}div.callout-note.callout{border-left-color:#446e9b}div.callout-note.callout-style-default>.callout-header{background-color:#ecf1f5}div.callout-note:not(.callout-titled) .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-note.callout-titled .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-note .callout-toggle::before{background-image:url('data:image/svg+xml,')}div.callout-tip.callout{border-left-color:#3cb521}div.callout-tip.callout-style-default>.callout-header{background-color:#ecf8e9}div.callout-tip:not(.callout-titled) .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-tip.callout-titled .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-tip .callout-toggle::before{background-image:url('data:image/svg+xml,')}div.callout-warning.callout{border-left-color:#d47500}div.callout-warning.callout-style-default>.callout-header{background-color:#fbf1e6}div.callout-warning:not(.callout-titled) .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-warning.callout-titled .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-warning .callout-toggle::before{background-image:url('data:image/svg+xml,')}div.callout-caution.callout{border-left-color:#fd7e14}div.callout-caution.callout-style-default>.callout-header{background-color:#fff2e8}div.callout-caution:not(.callout-titled) .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-caution.callout-titled .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-caution .callout-toggle::before{background-image:url('data:image/svg+xml,')}div.callout-important.callout{border-left-color:#cd0200}div.callout-important.callout-style-default>.callout-header{background-color:#fae6e6}div.callout-important:not(.callout-titled) .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-important.callout-titled .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-important .callout-toggle::before{background-image:url('data:image/svg+xml,')}.quarto-toggle-container{display:flex;align-items:center}.quarto-reader-toggle .bi::before,.quarto-color-scheme-toggle .bi::before{display:inline-block;height:1rem;width:1rem;content:"";background-repeat:no-repeat;background-size:1rem 1rem}.sidebar-navigation{padding-left:20px}.navbar .quarto-color-scheme-toggle:not(.alternate) .bi::before{background-image:url('data:image/svg+xml,')}.navbar .quarto-color-scheme-toggle.alternate .bi::before{background-image:url('data:image/svg+xml,')}.sidebar-navigation .quarto-color-scheme-toggle:not(.alternate) .bi::before{background-image:url('data:image/svg+xml,')}.sidebar-navigation .quarto-color-scheme-toggle.alternate .bi::before{background-image:url('data:image/svg+xml,')}.quarto-sidebar-toggle{border-color:#dee2e6;border-bottom-left-radius:.25rem;border-bottom-right-radius:.25rem;border-style:solid;border-width:1px;overflow:hidden;border-top-width:0px;padding-top:0px !important}.quarto-sidebar-toggle-title{cursor:pointer;padding-bottom:2px;margin-left:.25em;text-align:center;font-weight:400;font-size:.775em}#quarto-content .quarto-sidebar-toggle{background:#fafafa}#quarto-content .quarto-sidebar-toggle-title{color:#777}.quarto-sidebar-toggle-icon{color:#dee2e6;margin-right:.5em;float:right;transition:transform .2s ease}.quarto-sidebar-toggle-icon::before{padding-top:5px}.quarto-sidebar-toggle.expanded .quarto-sidebar-toggle-icon{transform:rotate(-180deg)}.quarto-sidebar-toggle.expanded .quarto-sidebar-toggle-title{border-bottom:solid #dee2e6 1px}.quarto-sidebar-toggle-contents{background-color:#fff;padding-right:10px;padding-left:10px;margin-top:0px !important;transition:max-height .5s ease}.quarto-sidebar-toggle.expanded .quarto-sidebar-toggle-contents{padding-top:1em;padding-bottom:10px}.quarto-sidebar-toggle:not(.expanded) .quarto-sidebar-toggle-contents{padding-top:0px !important;padding-bottom:0px}nav[role=doc-toc]{z-index:1020}#quarto-sidebar>*,nav[role=doc-toc]>*{transition:opacity .1s ease,border .1s ease}#quarto-sidebar.slow>*,nav[role=doc-toc].slow>*{transition:opacity .4s ease,border .4s ease}.quarto-color-scheme-toggle:not(.alternate).top-right .bi::before{background-image:url('data:image/svg+xml,')}.quarto-color-scheme-toggle.alternate.top-right .bi::before{background-image:url('data:image/svg+xml,')}#quarto-appendix.default{border-top:1px solid #dee2e6}#quarto-appendix.default{background-color:#fff;padding-top:1.5em;margin-top:2em;z-index:998}#quarto-appendix.default .quarto-appendix-heading{margin-top:0;line-height:1.4em;font-weight:600;opacity:.9;border-bottom:none;margin-bottom:0}#quarto-appendix.default .footnotes ol,#quarto-appendix.default .footnotes ol li>p:last-of-type,#quarto-appendix.default .quarto-appendix-contents>p:last-of-type{margin-bottom:0}#quarto-appendix.default .quarto-appendix-secondary-label{margin-bottom:.4em}#quarto-appendix.default .quarto-appendix-bibtex{font-size:.7em;padding:1em;border:solid 1px #dee2e6;margin-bottom:1em}#quarto-appendix.default .quarto-appendix-bibtex code.sourceCode{white-space:pre-wrap}#quarto-appendix.default .quarto-appendix-citeas{font-size:.9em;padding:1em;border:solid 1px #dee2e6;margin-bottom:1em}#quarto-appendix.default .quarto-appendix-heading{font-size:1em !important}#quarto-appendix.default *[role=doc-endnotes]>ol,#quarto-appendix.default .quarto-appendix-contents>*:not(h2):not(.h2){font-size:.9em}#quarto-appendix.default section{padding-bottom:1.5em}#quarto-appendix.default section *[role=doc-endnotes],#quarto-appendix.default section>*:not(a){opacity:.9;word-wrap:break-word}.btn.btn-quarto,div.cell-output-display .btn-quarto{color:#080808;background-color:#999;border-color:#999}.btn.btn-quarto:hover,div.cell-output-display .btn-quarto:hover{color:#080808;background-color:#a8a8a8;border-color:#a3a3a3}.btn-check:focus+.btn.btn-quarto,.btn.btn-quarto:focus,.btn-check:focus+div.cell-output-display .btn-quarto,div.cell-output-display .btn-quarto:focus{color:#080808;background-color:#a8a8a8;border-color:#a3a3a3;box-shadow:0 0 0 .25rem rgba(131,131,131,.5)}.btn-check:checked+.btn.btn-quarto,.btn-check:active+.btn.btn-quarto,.btn.btn-quarto:active,.btn.btn-quarto.active,.show>.btn.btn-quarto.dropdown-toggle,.btn-check:checked+div.cell-output-display .btn-quarto,.btn-check:active+div.cell-output-display .btn-quarto,div.cell-output-display .btn-quarto:active,div.cell-output-display .btn-quarto.active,.show>div.cell-output-display .btn-quarto.dropdown-toggle{color:#000;background-color:#adadad;border-color:#a3a3a3}.btn-check:checked+.btn.btn-quarto:focus,.btn-check:active+.btn.btn-quarto:focus,.btn.btn-quarto:active:focus,.btn.btn-quarto.active:focus,.show>.btn.btn-quarto.dropdown-toggle:focus,.btn-check:checked+div.cell-output-display .btn-quarto:focus,.btn-check:active+div.cell-output-display .btn-quarto:focus,div.cell-output-display .btn-quarto:active:focus,div.cell-output-display .btn-quarto.active:focus,.show>div.cell-output-display .btn-quarto.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(131,131,131,.5)}.btn.btn-quarto:disabled,.btn.btn-quarto.disabled,div.cell-output-display .btn-quarto:disabled,div.cell-output-display .btn-quarto.disabled{color:#fff;background-color:#999;border-color:#999}nav.quarto-secondary-nav.color-navbar{background-color:#eee;color:#4f4f4f}nav.quarto-secondary-nav.color-navbar h1,nav.quarto-secondary-nav.color-navbar .h1,nav.quarto-secondary-nav.color-navbar .quarto-btn-toggle{color:#4f4f4f}@media(max-width: 991.98px){body.nav-sidebar .quarto-title-banner{margin-bottom:0;padding-bottom:0}body.nav-sidebar #title-block-header{margin-block-end:0}}p.subtitle{margin-top:.25em;margin-bottom:.5em}code a:any-link{color:inherit;text-decoration-color:#777}/*! light */div.observablehq table thead tr th{background-color:var(--bs-body-bg)}input,button,select,optgroup,textarea{background-color:var(--bs-body-bg)}.code-annotated .code-copy-button{margin-right:1.25em;margin-top:0;padding-bottom:0;padding-top:3px}.code-annotation-gutter-bg{background-color:#fff}.code-annotation-gutter{background-color:#fdf6e3}.code-annotation-gutter,.code-annotation-gutter-bg{height:100%;width:calc(20px + .5em);position:absolute;top:0;right:0}dl.code-annotation-container-grid dt{margin-right:1em;margin-top:.25rem}dl.code-annotation-container-grid dt{font-family:var(--bs-font-monospace);color:#919191;border:solid #919191 1px;border-radius:50%;height:22px;width:22px;line-height:22px;font-size:11px;text-align:center;vertical-align:middle;text-decoration:none}dl.code-annotation-container-grid dt[data-target-cell]{cursor:pointer}dl.code-annotation-container-grid dt[data-target-cell].code-annotation-active{color:#fff;border:solid #aaa 1px;background-color:#aaa}pre.code-annotation-code{padding-top:0;padding-bottom:0}pre.code-annotation-code code{z-index:3}#code-annotation-line-highlight-gutter{width:100%;border-top:solid rgba(170,170,170,.2666666667) 1px;border-bottom:solid rgba(170,170,170,.2666666667) 1px;z-index:2;background-color:rgba(170,170,170,.1333333333)}#code-annotation-line-highlight{margin-left:-4em;width:calc(100% + 4em);border-top:solid rgba(170,170,170,.2666666667) 1px;border-bottom:solid rgba(170,170,170,.2666666667) 1px;z-index:2;background-color:rgba(170,170,170,.1333333333)}code.sourceCode .code-annotation-anchor.code-annotation-active{background-color:var(--quarto-hl-normal-color, #aaaaaa);border:solid var(--quarto-hl-normal-color, #aaaaaa) 1px;color:#fdf6e3;font-weight:bolder}code.sourceCode .code-annotation-anchor{font-family:var(--bs-font-monospace);color:var(--quarto-hl-co-color);border:solid var(--quarto-hl-co-color) 1px;border-radius:50%;height:18px;width:18px;font-size:9px;margin-top:2px}code.sourceCode button.code-annotation-anchor{padding:2px}code.sourceCode a.code-annotation-anchor{line-height:18px;text-align:center;vertical-align:middle;cursor:default;text-decoration:none}@media print{.page-columns .column-screen-inset{grid-column:page-start-inset/page-end-inset;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-screen-inset table{background:#fff}.page-columns .column-screen-inset-left{grid-column:page-start-inset/body-content-end;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-screen-inset-left table{background:#fff}.page-columns .column-screen-inset-right{grid-column:body-content-start/page-end-inset;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-screen-inset-right table{background:#fff}.page-columns .column-screen{grid-column:page-start/page-end;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-screen table{background:#fff}.page-columns .column-screen-left{grid-column:page-start/body-content-end;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-screen-left table{background:#fff}.page-columns .column-screen-right{grid-column:body-content-start/page-end;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-screen-right table{background:#fff}.page-columns .column-screen-inset-shaded{grid-column:page-start-inset/page-end-inset;padding:1em;background:#eee;z-index:998;transform:translate3d(0, 0, 0);margin-bottom:1em}}.quarto-video{margin-bottom:1em}.table>thead{border-top-width:0}.table>:not(caption)>*:not(:last-child)>*{border-bottom-color:#fff;border-bottom-style:solid;border-bottom-width:1px}.table>:not(:first-child){border-top:1px solid #f7f7f7;border-bottom:1px solid inherit}.table tbody{border-bottom-color:#f7f7f7}a.external:after{display:inline-block;height:.75rem;width:.75rem;margin-bottom:.15em;margin-left:.25em;content:"";vertical-align:-0.125em;background-image:url('data:image/svg+xml,');background-repeat:no-repeat;background-size:.75rem .75rem}div.sourceCode code a.external:after{content:none}a.external:after:hover{cursor:pointer}.quarto-ext-icon{display:inline-block;font-size:.75em;padding-left:.3em}.code-with-filename .code-with-filename-file{margin-bottom:0;padding-bottom:2px;padding-top:2px;padding-left:.7em;border:var(--quarto-border-width) solid var(--quarto-border-color);border-radius:var(--quarto-border-radius);border-bottom:0;border-bottom-left-radius:0%;border-bottom-right-radius:0%}.code-with-filename div.sourceCode,.reveal .code-with-filename div.sourceCode{margin-top:0;border-top-left-radius:0%;border-top-right-radius:0%}.code-with-filename .code-with-filename-file pre{margin-bottom:0}.code-with-filename .code-with-filename-file,.code-with-filename .code-with-filename-file pre{background-color:rgba(219,219,219,.8)}.quarto-dark .code-with-filename .code-with-filename-file,.quarto-dark .code-with-filename .code-with-filename-file pre{background-color:#555}.code-with-filename .code-with-filename-file strong{font-weight:400}.quarto-title-banner{margin-bottom:1em;color:#4f4f4f;background:#eee}.quarto-title-banner .code-tools-button{color:#828282}.quarto-title-banner .code-tools-button:hover{color:#4f4f4f}.quarto-title-banner .code-tools-button>.bi::before{background-image:url('data:image/svg+xml,')}.quarto-title-banner .code-tools-button:hover>.bi::before{background-image:url('data:image/svg+xml,')}.quarto-title-banner .quarto-title .title{font-weight:600}.quarto-title-banner .quarto-categories{margin-top:.75em}@media(min-width: 992px){.quarto-title-banner{padding-top:2.5em;padding-bottom:2.5em}}@media(max-width: 991.98px){.quarto-title-banner{padding-top:1em;padding-bottom:1em}}main.quarto-banner-title-block>section:first-child>h2,main.quarto-banner-title-block>section:first-child>.h2,main.quarto-banner-title-block>section:first-child>h3,main.quarto-banner-title-block>section:first-child>.h3,main.quarto-banner-title-block>section:first-child>h4,main.quarto-banner-title-block>section:first-child>.h4{margin-top:0}.quarto-title .quarto-categories{display:flex;flex-wrap:wrap;row-gap:.5em;column-gap:.4em;padding-bottom:.5em;margin-top:.75em}.quarto-title .quarto-categories .quarto-category{padding:.25em .75em;font-size:.65em;text-transform:uppercase;border:solid 1px;border-radius:.25rem;opacity:.6}.quarto-title .quarto-categories .quarto-category a{color:inherit}#title-block-header.quarto-title-block.default .quarto-title-meta{display:grid;grid-template-columns:repeat(2, 1fr)}#title-block-header.quarto-title-block.default .quarto-title .title{margin-bottom:0}#title-block-header.quarto-title-block.default .quarto-title-author-orcid img{margin-top:-5px}#title-block-header.quarto-title-block.default .quarto-description p:last-of-type{margin-bottom:0}#title-block-header.quarto-title-block.default .quarto-title-meta-contents p,#title-block-header.quarto-title-block.default .quarto-title-authors p,#title-block-header.quarto-title-block.default .quarto-title-affiliations p{margin-bottom:.1em}#title-block-header.quarto-title-block.default .quarto-title-meta-heading{text-transform:uppercase;margin-top:1em;font-size:.8em;opacity:.8;font-weight:400}#title-block-header.quarto-title-block.default .quarto-title-meta-contents{font-size:.9em}#title-block-header.quarto-title-block.default .quarto-title-meta-contents a{color:#777}#title-block-header.quarto-title-block.default .quarto-title-meta-contents p.affiliation:last-of-type{margin-bottom:.7em}#title-block-header.quarto-title-block.default p.affiliation{margin-bottom:.1em}#title-block-header.quarto-title-block.default .description,#title-block-header.quarto-title-block.default .abstract{margin-top:0}#title-block-header.quarto-title-block.default .description>p,#title-block-header.quarto-title-block.default .abstract>p{font-size:.9em}#title-block-header.quarto-title-block.default .description>p:last-of-type,#title-block-header.quarto-title-block.default .abstract>p:last-of-type{margin-bottom:0}#title-block-header.quarto-title-block.default .description .abstract-title,#title-block-header.quarto-title-block.default .abstract .abstract-title{margin-top:1em;text-transform:uppercase;font-size:.8em;opacity:.8;font-weight:400}#title-block-header.quarto-title-block.default .quarto-title-meta-author{display:grid;grid-template-columns:1fr 1fr}.quarto-title-tools-only{display:flex;justify-content:right}.navbar .nav-link,.navbar .navbar-brand{text-shadow:-1px -1px 0 rgba(0,0,0,.1);transition:color ease-in-out .2s}.navbar.bg-default{background-image:linear-gradient(#b1b1b1, #999 50%, #8d8d8d);filter:none;border:1px solid #7a7a7a}.navbar.bg-primary{background-image:linear-gradient(#7191b3, #446e9b 50%, #3f658f);filter:none;border:1px solid #36587c}.navbar.bg-secondary{background-image:linear-gradient(#b1b1b1, #999 50%, #8d8d8d);filter:none;border:1px solid #7a7a7a}.navbar.bg-success{background-image:linear-gradient(#6bc756, #3cb521 50%, #37a71e);filter:none;border:1px solid #30911a}.navbar.bg-info{background-image:linear-gradient(#64b1f6, #3399f3 50%, #2f8de0);filter:none;border:1px solid #297ac2}.navbar.bg-warning{background-image:linear-gradient(#de963d, #d47500 50%, #c36c00);filter:none;border:1px solid #aa5e00}.navbar.bg-danger{background-image:linear-gradient(#d93f3d, #cd0200 50%, #bd0200);filter:none;border:1px solid #a40200}.navbar.bg-light{background-image:linear-gradient(#f2f2f2, #eee 50%, #dbdbdb);filter:none;border:1px solid #bebebe}.navbar.bg-dark{background-image:linear-gradient(#646464, #333 50%, #2f2f2f);filter:none;border:1px solid #292929}.navbar.bg-light .nav-link,.navbar.bg-light .navbar-brand,.navbar.navbar-default .nav-link,.navbar.navbar-default .navbar-brand{text-shadow:1px 1px 0 rgba(255,255,255,.1)}.navbar.bg-light .navbar-brand,.navbar.navbar-default .navbar-brand{color:#4f4f4f}.navbar.bg-light .navbar-brand:hover,.navbar.navbar-default .navbar-brand:hover{color:#3399f3}.btn{text-shadow:-1px -1px 0 rgba(0,0,0,.1)}.btn-link{text-shadow:none}.btn-default{background-image:linear-gradient(#b1b1b1, #999 50%, #8d8d8d);filter:none;border:1px solid #7a7a7a}.btn-default:not(.disabled):hover{background-image:linear-gradient(#a8a8a8, #8d8d8d 50%, #828282);filter:none;border:1px solid #717171}.btn-primary{background-image:linear-gradient(#7191b3, #446e9b 50%, #3f658f);filter:none;border:1px solid #36587c}.btn-primary:not(.disabled):hover{background-image:linear-gradient(#6d8aaa, #3f658f 50%, #3a5d84);filter:none;border:1px solid #325172}.btn-secondary{background-image:linear-gradient(#b1b1b1, #999 50%, #8d8d8d);filter:none;border:1px solid #7a7a7a}.btn-secondary:not(.disabled):hover{background-image:linear-gradient(#a8a8a8, #8d8d8d 50%, #828282);filter:none;border:1px solid #717171}.btn-success{background-image:linear-gradient(#6bc756, #3cb521 50%, #37a71e);filter:none;border:1px solid #30911a}.btn-success:not(.disabled):hover{background-image:linear-gradient(#67bc54, #37a71e 50%, #339a1c);filter:none;border:1px solid #2c8618}.btn-info{background-image:linear-gradient(#64b1f6, #3399f3 50%, #2f8de0);filter:none;border:1px solid #297ac2}.btn-info:not(.disabled):hover{background-image:linear-gradient(#61a8e7, #2f8de0 50%, #2b82ce);filter:none;border:1px solid #2671b3}.btn-warning{background-image:linear-gradient(#de963d, #d47500 50%, #c36c00);filter:none;border:1px solid #aa5e00}.btn-warning:not(.disabled):hover{background-image:linear-gradient(#d18f3d, #c36c00 50%, #b36300);filter:none;border:1px solid #9c5600}.btn-danger{background-image:linear-gradient(#d93f3d, #cd0200 50%, #bd0200);filter:none;border:1px solid #a40200}.btn-danger:not(.disabled):hover{background-image:linear-gradient(#cd3f3d, #bd0200 50%, #ae0200);filter:none;border:1px solid #970200}.btn-light{background-image:linear-gradient(#f2f2f2, #eee 50%, #dbdbdb);filter:none;border:1px solid #bebebe}.btn-light:not(.disabled):hover{background-image:linear-gradient(#e4e4e4, #dbdbdb 50%, #c9c9c9);filter:none;border:1px solid #afafaf}.btn-dark{background-image:linear-gradient(#646464, #333 50%, #2f2f2f);filter:none;border:1px solid #292929}.btn-dark:not(.disabled):hover{background-image:linear-gradient(#616161, #2f2f2f 50%, #2b2b2b);filter:none;border:1px solid #262626}[class*=btn-outline-]{text-shadow:none}.badge.bg-light{color:#333}.card h1,.card .h1,.card h2,.card .h2,.card h3,.card .h3,.card h4,.card .h4,.card h5,.card .h5,.card h6,.card .h6,.list-group-item h1,.list-group-item .h1,.list-group-item h2,.list-group-item .h2,.list-group-item h3,.list-group-item .h3,.list-group-item h4,.list-group-item .h4,.list-group-item h5,.list-group-item .h5,.list-group-item h6,.list-group-item .h6{color:inherit}/*# sourceMappingURL=397ef2e52d54cf686e4908b90039e9db.css.map */ diff --git a/docs/column_api_files/libs/bootstrap/bootstrap.min.js b/docs/column_api_files/libs/bootstrap/bootstrap.min.js new file mode 100644 index 0000000..cc0a255 --- /dev/null +++ b/docs/column_api_files/libs/bootstrap/bootstrap.min.js @@ -0,0 +1,7 @@ +/*! + * Bootstrap v5.1.3 (https://getbootstrap.com/) + * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + */ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).bootstrap=e()}(this,(function(){"use strict";const t="transitionend",e=t=>{let e=t.getAttribute("data-bs-target");if(!e||"#"===e){let i=t.getAttribute("href");if(!i||!i.includes("#")&&!i.startsWith("."))return null;i.includes("#")&&!i.startsWith("#")&&(i=`#${i.split("#")[1]}`),e=i&&"#"!==i?i.trim():null}return e},i=t=>{const i=e(t);return i&&document.querySelector(i)?i:null},n=t=>{const i=e(t);return i?document.querySelector(i):null},s=e=>{e.dispatchEvent(new Event(t))},o=t=>!(!t||"object"!=typeof t)&&(void 0!==t.jquery&&(t=t[0]),void 0!==t.nodeType),r=t=>o(t)?t.jquery?t[0]:t:"string"==typeof t&&t.length>0?document.querySelector(t):null,a=(t,e,i)=>{Object.keys(i).forEach((n=>{const s=i[n],r=e[n],a=r&&o(r)?"element":null==(l=r)?`${l}`:{}.toString.call(l).match(/\s([a-z]+)/i)[1].toLowerCase();var l;if(!new RegExp(s).test(a))throw new TypeError(`${t.toUpperCase()}: Option "${n}" provided type "${a}" but expected type "${s}".`)}))},l=t=>!(!o(t)||0===t.getClientRects().length)&&"visible"===getComputedStyle(t).getPropertyValue("visibility"),c=t=>!t||t.nodeType!==Node.ELEMENT_NODE||!!t.classList.contains("disabled")||(void 0!==t.disabled?t.disabled:t.hasAttribute("disabled")&&"false"!==t.getAttribute("disabled")),h=t=>{if(!document.documentElement.attachShadow)return null;if("function"==typeof t.getRootNode){const e=t.getRootNode();return e instanceof ShadowRoot?e:null}return t instanceof ShadowRoot?t:t.parentNode?h(t.parentNode):null},d=()=>{},u=t=>{t.offsetHeight},f=()=>{const{jQuery:t}=window;return t&&!document.body.hasAttribute("data-bs-no-jquery")?t:null},p=[],m=()=>"rtl"===document.documentElement.dir,g=t=>{var e;e=()=>{const e=f();if(e){const i=t.NAME,n=e.fn[i];e.fn[i]=t.jQueryInterface,e.fn[i].Constructor=t,e.fn[i].noConflict=()=>(e.fn[i]=n,t.jQueryInterface)}},"loading"===document.readyState?(p.length||document.addEventListener("DOMContentLoaded",(()=>{p.forEach((t=>t()))})),p.push(e)):e()},_=t=>{"function"==typeof t&&t()},b=(e,i,n=!0)=>{if(!n)return void _(e);const o=(t=>{if(!t)return 0;let{transitionDuration:e,transitionDelay:i}=window.getComputedStyle(t);const n=Number.parseFloat(e),s=Number.parseFloat(i);return n||s?(e=e.split(",")[0],i=i.split(",")[0],1e3*(Number.parseFloat(e)+Number.parseFloat(i))):0})(i)+5;let r=!1;const a=({target:n})=>{n===i&&(r=!0,i.removeEventListener(t,a),_(e))};i.addEventListener(t,a),setTimeout((()=>{r||s(i)}),o)},v=(t,e,i,n)=>{let s=t.indexOf(e);if(-1===s)return t[!i&&n?t.length-1:0];const o=t.length;return s+=i?1:-1,n&&(s=(s+o)%o),t[Math.max(0,Math.min(s,o-1))]},y=/[^.]*(?=\..*)\.|.*/,w=/\..*/,E=/::\d+$/,A={};let T=1;const O={mouseenter:"mouseover",mouseleave:"mouseout"},C=/^(mouseenter|mouseleave)/i,k=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function L(t,e){return e&&`${e}::${T++}`||t.uidEvent||T++}function x(t){const e=L(t);return t.uidEvent=e,A[e]=A[e]||{},A[e]}function D(t,e,i=null){const n=Object.keys(t);for(let s=0,o=n.length;sfunction(e){if(!e.relatedTarget||e.relatedTarget!==e.delegateTarget&&!e.delegateTarget.contains(e.relatedTarget))return t.call(this,e)};n?n=t(n):i=t(i)}const[o,r,a]=S(e,i,n),l=x(t),c=l[a]||(l[a]={}),h=D(c,r,o?i:null);if(h)return void(h.oneOff=h.oneOff&&s);const d=L(r,e.replace(y,"")),u=o?function(t,e,i){return function n(s){const o=t.querySelectorAll(e);for(let{target:r}=s;r&&r!==this;r=r.parentNode)for(let a=o.length;a--;)if(o[a]===r)return s.delegateTarget=r,n.oneOff&&j.off(t,s.type,e,i),i.apply(r,[s]);return null}}(t,i,n):function(t,e){return function i(n){return n.delegateTarget=t,i.oneOff&&j.off(t,n.type,e),e.apply(t,[n])}}(t,i);u.delegationSelector=o?i:null,u.originalHandler=r,u.oneOff=s,u.uidEvent=d,c[d]=u,t.addEventListener(a,u,o)}function I(t,e,i,n,s){const o=D(e[i],n,s);o&&(t.removeEventListener(i,o,Boolean(s)),delete e[i][o.uidEvent])}function P(t){return t=t.replace(w,""),O[t]||t}const j={on(t,e,i,n){N(t,e,i,n,!1)},one(t,e,i,n){N(t,e,i,n,!0)},off(t,e,i,n){if("string"!=typeof e||!t)return;const[s,o,r]=S(e,i,n),a=r!==e,l=x(t),c=e.startsWith(".");if(void 0!==o){if(!l||!l[r])return;return void I(t,l,r,o,s?i:null)}c&&Object.keys(l).forEach((i=>{!function(t,e,i,n){const s=e[i]||{};Object.keys(s).forEach((o=>{if(o.includes(n)){const n=s[o];I(t,e,i,n.originalHandler,n.delegationSelector)}}))}(t,l,i,e.slice(1))}));const h=l[r]||{};Object.keys(h).forEach((i=>{const n=i.replace(E,"");if(!a||e.includes(n)){const e=h[i];I(t,l,r,e.originalHandler,e.delegationSelector)}}))},trigger(t,e,i){if("string"!=typeof e||!t)return null;const n=f(),s=P(e),o=e!==s,r=k.has(s);let a,l=!0,c=!0,h=!1,d=null;return o&&n&&(a=n.Event(e,i),n(t).trigger(a),l=!a.isPropagationStopped(),c=!a.isImmediatePropagationStopped(),h=a.isDefaultPrevented()),r?(d=document.createEvent("HTMLEvents"),d.initEvent(s,l,!0)):d=new CustomEvent(e,{bubbles:l,cancelable:!0}),void 0!==i&&Object.keys(i).forEach((t=>{Object.defineProperty(d,t,{get:()=>i[t]})})),h&&d.preventDefault(),c&&t.dispatchEvent(d),d.defaultPrevented&&void 0!==a&&a.preventDefault(),d}},M=new Map,H={set(t,e,i){M.has(t)||M.set(t,new Map);const n=M.get(t);n.has(e)||0===n.size?n.set(e,i):console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(n.keys())[0]}.`)},get:(t,e)=>M.has(t)&&M.get(t).get(e)||null,remove(t,e){if(!M.has(t))return;const i=M.get(t);i.delete(e),0===i.size&&M.delete(t)}};class B{constructor(t){(t=r(t))&&(this._element=t,H.set(this._element,this.constructor.DATA_KEY,this))}dispose(){H.remove(this._element,this.constructor.DATA_KEY),j.off(this._element,this.constructor.EVENT_KEY),Object.getOwnPropertyNames(this).forEach((t=>{this[t]=null}))}_queueCallback(t,e,i=!0){b(t,e,i)}static getInstance(t){return H.get(r(t),this.DATA_KEY)}static getOrCreateInstance(t,e={}){return this.getInstance(t)||new this(t,"object"==typeof e?e:null)}static get VERSION(){return"5.1.3"}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}static get DATA_KEY(){return`bs.${this.NAME}`}static get EVENT_KEY(){return`.${this.DATA_KEY}`}}const R=(t,e="hide")=>{const i=`click.dismiss${t.EVENT_KEY}`,s=t.NAME;j.on(document,i,`[data-bs-dismiss="${s}"]`,(function(i){if(["A","AREA"].includes(this.tagName)&&i.preventDefault(),c(this))return;const o=n(this)||this.closest(`.${s}`);t.getOrCreateInstance(o)[e]()}))};class W extends B{static get NAME(){return"alert"}close(){if(j.trigger(this._element,"close.bs.alert").defaultPrevented)return;this._element.classList.remove("show");const t=this._element.classList.contains("fade");this._queueCallback((()=>this._destroyElement()),this._element,t)}_destroyElement(){this._element.remove(),j.trigger(this._element,"closed.bs.alert"),this.dispose()}static jQueryInterface(t){return this.each((function(){const e=W.getOrCreateInstance(this);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}R(W,"close"),g(W);const $='[data-bs-toggle="button"]';class z extends B{static get NAME(){return"button"}toggle(){this._element.setAttribute("aria-pressed",this._element.classList.toggle("active"))}static jQueryInterface(t){return this.each((function(){const e=z.getOrCreateInstance(this);"toggle"===t&&e[t]()}))}}function q(t){return"true"===t||"false"!==t&&(t===Number(t).toString()?Number(t):""===t||"null"===t?null:t)}function F(t){return t.replace(/[A-Z]/g,(t=>`-${t.toLowerCase()}`))}j.on(document,"click.bs.button.data-api",$,(t=>{t.preventDefault();const e=t.target.closest($);z.getOrCreateInstance(e).toggle()})),g(z);const U={setDataAttribute(t,e,i){t.setAttribute(`data-bs-${F(e)}`,i)},removeDataAttribute(t,e){t.removeAttribute(`data-bs-${F(e)}`)},getDataAttributes(t){if(!t)return{};const e={};return Object.keys(t.dataset).filter((t=>t.startsWith("bs"))).forEach((i=>{let n=i.replace(/^bs/,"");n=n.charAt(0).toLowerCase()+n.slice(1,n.length),e[n]=q(t.dataset[i])})),e},getDataAttribute:(t,e)=>q(t.getAttribute(`data-bs-${F(e)}`)),offset(t){const e=t.getBoundingClientRect();return{top:e.top+window.pageYOffset,left:e.left+window.pageXOffset}},position:t=>({top:t.offsetTop,left:t.offsetLeft})},V={find:(t,e=document.documentElement)=>[].concat(...Element.prototype.querySelectorAll.call(e,t)),findOne:(t,e=document.documentElement)=>Element.prototype.querySelector.call(e,t),children:(t,e)=>[].concat(...t.children).filter((t=>t.matches(e))),parents(t,e){const i=[];let n=t.parentNode;for(;n&&n.nodeType===Node.ELEMENT_NODE&&3!==n.nodeType;)n.matches(e)&&i.push(n),n=n.parentNode;return i},prev(t,e){let i=t.previousElementSibling;for(;i;){if(i.matches(e))return[i];i=i.previousElementSibling}return[]},next(t,e){let i=t.nextElementSibling;for(;i;){if(i.matches(e))return[i];i=i.nextElementSibling}return[]},focusableChildren(t){const e=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map((t=>`${t}:not([tabindex^="-"])`)).join(", ");return this.find(e,t).filter((t=>!c(t)&&l(t)))}},K="carousel",X={interval:5e3,keyboard:!0,slide:!1,pause:"hover",wrap:!0,touch:!0},Y={interval:"(number|boolean)",keyboard:"boolean",slide:"(boolean|string)",pause:"(string|boolean)",wrap:"boolean",touch:"boolean"},Q="next",G="prev",Z="left",J="right",tt={ArrowLeft:J,ArrowRight:Z},et="slid.bs.carousel",it="active",nt=".active.carousel-item";class st extends B{constructor(t,e){super(t),this._items=null,this._interval=null,this._activeElement=null,this._isPaused=!1,this._isSliding=!1,this.touchTimeout=null,this.touchStartX=0,this.touchDeltaX=0,this._config=this._getConfig(e),this._indicatorsElement=V.findOne(".carousel-indicators",this._element),this._touchSupported="ontouchstart"in document.documentElement||navigator.maxTouchPoints>0,this._pointerEvent=Boolean(window.PointerEvent),this._addEventListeners()}static get Default(){return X}static get NAME(){return K}next(){this._slide(Q)}nextWhenVisible(){!document.hidden&&l(this._element)&&this.next()}prev(){this._slide(G)}pause(t){t||(this._isPaused=!0),V.findOne(".carousel-item-next, .carousel-item-prev",this._element)&&(s(this._element),this.cycle(!0)),clearInterval(this._interval),this._interval=null}cycle(t){t||(this._isPaused=!1),this._interval&&(clearInterval(this._interval),this._interval=null),this._config&&this._config.interval&&!this._isPaused&&(this._updateInterval(),this._interval=setInterval((document.visibilityState?this.nextWhenVisible:this.next).bind(this),this._config.interval))}to(t){this._activeElement=V.findOne(nt,this._element);const e=this._getItemIndex(this._activeElement);if(t>this._items.length-1||t<0)return;if(this._isSliding)return void j.one(this._element,et,(()=>this.to(t)));if(e===t)return this.pause(),void this.cycle();const i=t>e?Q:G;this._slide(i,this._items[t])}_getConfig(t){return t={...X,...U.getDataAttributes(this._element),..."object"==typeof t?t:{}},a(K,t,Y),t}_handleSwipe(){const t=Math.abs(this.touchDeltaX);if(t<=40)return;const e=t/this.touchDeltaX;this.touchDeltaX=0,e&&this._slide(e>0?J:Z)}_addEventListeners(){this._config.keyboard&&j.on(this._element,"keydown.bs.carousel",(t=>this._keydown(t))),"hover"===this._config.pause&&(j.on(this._element,"mouseenter.bs.carousel",(t=>this.pause(t))),j.on(this._element,"mouseleave.bs.carousel",(t=>this.cycle(t)))),this._config.touch&&this._touchSupported&&this._addTouchEventListeners()}_addTouchEventListeners(){const t=t=>this._pointerEvent&&("pen"===t.pointerType||"touch"===t.pointerType),e=e=>{t(e)?this.touchStartX=e.clientX:this._pointerEvent||(this.touchStartX=e.touches[0].clientX)},i=t=>{this.touchDeltaX=t.touches&&t.touches.length>1?0:t.touches[0].clientX-this.touchStartX},n=e=>{t(e)&&(this.touchDeltaX=e.clientX-this.touchStartX),this._handleSwipe(),"hover"===this._config.pause&&(this.pause(),this.touchTimeout&&clearTimeout(this.touchTimeout),this.touchTimeout=setTimeout((t=>this.cycle(t)),500+this._config.interval))};V.find(".carousel-item img",this._element).forEach((t=>{j.on(t,"dragstart.bs.carousel",(t=>t.preventDefault()))})),this._pointerEvent?(j.on(this._element,"pointerdown.bs.carousel",(t=>e(t))),j.on(this._element,"pointerup.bs.carousel",(t=>n(t))),this._element.classList.add("pointer-event")):(j.on(this._element,"touchstart.bs.carousel",(t=>e(t))),j.on(this._element,"touchmove.bs.carousel",(t=>i(t))),j.on(this._element,"touchend.bs.carousel",(t=>n(t))))}_keydown(t){if(/input|textarea/i.test(t.target.tagName))return;const e=tt[t.key];e&&(t.preventDefault(),this._slide(e))}_getItemIndex(t){return this._items=t&&t.parentNode?V.find(".carousel-item",t.parentNode):[],this._items.indexOf(t)}_getItemByOrder(t,e){const i=t===Q;return v(this._items,e,i,this._config.wrap)}_triggerSlideEvent(t,e){const i=this._getItemIndex(t),n=this._getItemIndex(V.findOne(nt,this._element));return j.trigger(this._element,"slide.bs.carousel",{relatedTarget:t,direction:e,from:n,to:i})}_setActiveIndicatorElement(t){if(this._indicatorsElement){const e=V.findOne(".active",this._indicatorsElement);e.classList.remove(it),e.removeAttribute("aria-current");const i=V.find("[data-bs-target]",this._indicatorsElement);for(let e=0;e{j.trigger(this._element,et,{relatedTarget:o,direction:d,from:s,to:r})};if(this._element.classList.contains("slide")){o.classList.add(h),u(o),n.classList.add(c),o.classList.add(c);const t=()=>{o.classList.remove(c,h),o.classList.add(it),n.classList.remove(it,h,c),this._isSliding=!1,setTimeout(f,0)};this._queueCallback(t,n,!0)}else n.classList.remove(it),o.classList.add(it),this._isSliding=!1,f();a&&this.cycle()}_directionToOrder(t){return[J,Z].includes(t)?m()?t===Z?G:Q:t===Z?Q:G:t}_orderToDirection(t){return[Q,G].includes(t)?m()?t===G?Z:J:t===G?J:Z:t}static carouselInterface(t,e){const i=st.getOrCreateInstance(t,e);let{_config:n}=i;"object"==typeof e&&(n={...n,...e});const s="string"==typeof e?e:n.slide;if("number"==typeof e)i.to(e);else if("string"==typeof s){if(void 0===i[s])throw new TypeError(`No method named "${s}"`);i[s]()}else n.interval&&n.ride&&(i.pause(),i.cycle())}static jQueryInterface(t){return this.each((function(){st.carouselInterface(this,t)}))}static dataApiClickHandler(t){const e=n(this);if(!e||!e.classList.contains("carousel"))return;const i={...U.getDataAttributes(e),...U.getDataAttributes(this)},s=this.getAttribute("data-bs-slide-to");s&&(i.interval=!1),st.carouselInterface(e,i),s&&st.getInstance(e).to(s),t.preventDefault()}}j.on(document,"click.bs.carousel.data-api","[data-bs-slide], [data-bs-slide-to]",st.dataApiClickHandler),j.on(window,"load.bs.carousel.data-api",(()=>{const t=V.find('[data-bs-ride="carousel"]');for(let e=0,i=t.length;et===this._element));null!==s&&o.length&&(this._selector=s,this._triggerArray.push(e))}this._initializeChildren(),this._config.parent||this._addAriaAndCollapsedClass(this._triggerArray,this._isShown()),this._config.toggle&&this.toggle()}static get Default(){return rt}static get NAME(){return ot}toggle(){this._isShown()?this.hide():this.show()}show(){if(this._isTransitioning||this._isShown())return;let t,e=[];if(this._config.parent){const t=V.find(ut,this._config.parent);e=V.find(".collapse.show, .collapse.collapsing",this._config.parent).filter((e=>!t.includes(e)))}const i=V.findOne(this._selector);if(e.length){const n=e.find((t=>i!==t));if(t=n?pt.getInstance(n):null,t&&t._isTransitioning)return}if(j.trigger(this._element,"show.bs.collapse").defaultPrevented)return;e.forEach((e=>{i!==e&&pt.getOrCreateInstance(e,{toggle:!1}).hide(),t||H.set(e,"bs.collapse",null)}));const n=this._getDimension();this._element.classList.remove(ct),this._element.classList.add(ht),this._element.style[n]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;const s=`scroll${n[0].toUpperCase()+n.slice(1)}`;this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(ht),this._element.classList.add(ct,lt),this._element.style[n]="",j.trigger(this._element,"shown.bs.collapse")}),this._element,!0),this._element.style[n]=`${this._element[s]}px`}hide(){if(this._isTransitioning||!this._isShown())return;if(j.trigger(this._element,"hide.bs.collapse").defaultPrevented)return;const t=this._getDimension();this._element.style[t]=`${this._element.getBoundingClientRect()[t]}px`,u(this._element),this._element.classList.add(ht),this._element.classList.remove(ct,lt);const e=this._triggerArray.length;for(let t=0;t{this._isTransitioning=!1,this._element.classList.remove(ht),this._element.classList.add(ct),j.trigger(this._element,"hidden.bs.collapse")}),this._element,!0)}_isShown(t=this._element){return t.classList.contains(lt)}_getConfig(t){return(t={...rt,...U.getDataAttributes(this._element),...t}).toggle=Boolean(t.toggle),t.parent=r(t.parent),a(ot,t,at),t}_getDimension(){return this._element.classList.contains("collapse-horizontal")?"width":"height"}_initializeChildren(){if(!this._config.parent)return;const t=V.find(ut,this._config.parent);V.find(ft,this._config.parent).filter((e=>!t.includes(e))).forEach((t=>{const e=n(t);e&&this._addAriaAndCollapsedClass([t],this._isShown(e))}))}_addAriaAndCollapsedClass(t,e){t.length&&t.forEach((t=>{e?t.classList.remove(dt):t.classList.add(dt),t.setAttribute("aria-expanded",e)}))}static jQueryInterface(t){return this.each((function(){const e={};"string"==typeof t&&/show|hide/.test(t)&&(e.toggle=!1);const i=pt.getOrCreateInstance(this,e);if("string"==typeof t){if(void 0===i[t])throw new TypeError(`No method named "${t}"`);i[t]()}}))}}j.on(document,"click.bs.collapse.data-api",ft,(function(t){("A"===t.target.tagName||t.delegateTarget&&"A"===t.delegateTarget.tagName)&&t.preventDefault();const e=i(this);V.find(e).forEach((t=>{pt.getOrCreateInstance(t,{toggle:!1}).toggle()}))})),g(pt);var mt="top",gt="bottom",_t="right",bt="left",vt="auto",yt=[mt,gt,_t,bt],wt="start",Et="end",At="clippingParents",Tt="viewport",Ot="popper",Ct="reference",kt=yt.reduce((function(t,e){return t.concat([e+"-"+wt,e+"-"+Et])}),[]),Lt=[].concat(yt,[vt]).reduce((function(t,e){return t.concat([e,e+"-"+wt,e+"-"+Et])}),[]),xt="beforeRead",Dt="read",St="afterRead",Nt="beforeMain",It="main",Pt="afterMain",jt="beforeWrite",Mt="write",Ht="afterWrite",Bt=[xt,Dt,St,Nt,It,Pt,jt,Mt,Ht];function Rt(t){return t?(t.nodeName||"").toLowerCase():null}function Wt(t){if(null==t)return window;if("[object Window]"!==t.toString()){var e=t.ownerDocument;return e&&e.defaultView||window}return t}function $t(t){return t instanceof Wt(t).Element||t instanceof Element}function zt(t){return t instanceof Wt(t).HTMLElement||t instanceof HTMLElement}function qt(t){return"undefined"!=typeof ShadowRoot&&(t instanceof Wt(t).ShadowRoot||t instanceof ShadowRoot)}const Ft={name:"applyStyles",enabled:!0,phase:"write",fn:function(t){var e=t.state;Object.keys(e.elements).forEach((function(t){var i=e.styles[t]||{},n=e.attributes[t]||{},s=e.elements[t];zt(s)&&Rt(s)&&(Object.assign(s.style,i),Object.keys(n).forEach((function(t){var e=n[t];!1===e?s.removeAttribute(t):s.setAttribute(t,!0===e?"":e)})))}))},effect:function(t){var e=t.state,i={popper:{position:e.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(e.elements.popper.style,i.popper),e.styles=i,e.elements.arrow&&Object.assign(e.elements.arrow.style,i.arrow),function(){Object.keys(e.elements).forEach((function(t){var n=e.elements[t],s=e.attributes[t]||{},o=Object.keys(e.styles.hasOwnProperty(t)?e.styles[t]:i[t]).reduce((function(t,e){return t[e]="",t}),{});zt(n)&&Rt(n)&&(Object.assign(n.style,o),Object.keys(s).forEach((function(t){n.removeAttribute(t)})))}))}},requires:["computeStyles"]};function Ut(t){return t.split("-")[0]}function Vt(t,e){var i=t.getBoundingClientRect();return{width:i.width/1,height:i.height/1,top:i.top/1,right:i.right/1,bottom:i.bottom/1,left:i.left/1,x:i.left/1,y:i.top/1}}function Kt(t){var e=Vt(t),i=t.offsetWidth,n=t.offsetHeight;return Math.abs(e.width-i)<=1&&(i=e.width),Math.abs(e.height-n)<=1&&(n=e.height),{x:t.offsetLeft,y:t.offsetTop,width:i,height:n}}function Xt(t,e){var i=e.getRootNode&&e.getRootNode();if(t.contains(e))return!0;if(i&&qt(i)){var n=e;do{if(n&&t.isSameNode(n))return!0;n=n.parentNode||n.host}while(n)}return!1}function Yt(t){return Wt(t).getComputedStyle(t)}function Qt(t){return["table","td","th"].indexOf(Rt(t))>=0}function Gt(t){return(($t(t)?t.ownerDocument:t.document)||window.document).documentElement}function Zt(t){return"html"===Rt(t)?t:t.assignedSlot||t.parentNode||(qt(t)?t.host:null)||Gt(t)}function Jt(t){return zt(t)&&"fixed"!==Yt(t).position?t.offsetParent:null}function te(t){for(var e=Wt(t),i=Jt(t);i&&Qt(i)&&"static"===Yt(i).position;)i=Jt(i);return i&&("html"===Rt(i)||"body"===Rt(i)&&"static"===Yt(i).position)?e:i||function(t){var e=-1!==navigator.userAgent.toLowerCase().indexOf("firefox");if(-1!==navigator.userAgent.indexOf("Trident")&&zt(t)&&"fixed"===Yt(t).position)return null;for(var i=Zt(t);zt(i)&&["html","body"].indexOf(Rt(i))<0;){var n=Yt(i);if("none"!==n.transform||"none"!==n.perspective||"paint"===n.contain||-1!==["transform","perspective"].indexOf(n.willChange)||e&&"filter"===n.willChange||e&&n.filter&&"none"!==n.filter)return i;i=i.parentNode}return null}(t)||e}function ee(t){return["top","bottom"].indexOf(t)>=0?"x":"y"}var ie=Math.max,ne=Math.min,se=Math.round;function oe(t,e,i){return ie(t,ne(e,i))}function re(t){return Object.assign({},{top:0,right:0,bottom:0,left:0},t)}function ae(t,e){return e.reduce((function(e,i){return e[i]=t,e}),{})}const le={name:"arrow",enabled:!0,phase:"main",fn:function(t){var e,i=t.state,n=t.name,s=t.options,o=i.elements.arrow,r=i.modifiersData.popperOffsets,a=Ut(i.placement),l=ee(a),c=[bt,_t].indexOf(a)>=0?"height":"width";if(o&&r){var h=function(t,e){return re("number"!=typeof(t="function"==typeof t?t(Object.assign({},e.rects,{placement:e.placement})):t)?t:ae(t,yt))}(s.padding,i),d=Kt(o),u="y"===l?mt:bt,f="y"===l?gt:_t,p=i.rects.reference[c]+i.rects.reference[l]-r[l]-i.rects.popper[c],m=r[l]-i.rects.reference[l],g=te(o),_=g?"y"===l?g.clientHeight||0:g.clientWidth||0:0,b=p/2-m/2,v=h[u],y=_-d[c]-h[f],w=_/2-d[c]/2+b,E=oe(v,w,y),A=l;i.modifiersData[n]=((e={})[A]=E,e.centerOffset=E-w,e)}},effect:function(t){var e=t.state,i=t.options.element,n=void 0===i?"[data-popper-arrow]":i;null!=n&&("string"!=typeof n||(n=e.elements.popper.querySelector(n)))&&Xt(e.elements.popper,n)&&(e.elements.arrow=n)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function ce(t){return t.split("-")[1]}var he={top:"auto",right:"auto",bottom:"auto",left:"auto"};function de(t){var e,i=t.popper,n=t.popperRect,s=t.placement,o=t.variation,r=t.offsets,a=t.position,l=t.gpuAcceleration,c=t.adaptive,h=t.roundOffsets,d=!0===h?function(t){var e=t.x,i=t.y,n=window.devicePixelRatio||1;return{x:se(se(e*n)/n)||0,y:se(se(i*n)/n)||0}}(r):"function"==typeof h?h(r):r,u=d.x,f=void 0===u?0:u,p=d.y,m=void 0===p?0:p,g=r.hasOwnProperty("x"),_=r.hasOwnProperty("y"),b=bt,v=mt,y=window;if(c){var w=te(i),E="clientHeight",A="clientWidth";w===Wt(i)&&"static"!==Yt(w=Gt(i)).position&&"absolute"===a&&(E="scrollHeight",A="scrollWidth"),w=w,s!==mt&&(s!==bt&&s!==_t||o!==Et)||(v=gt,m-=w[E]-n.height,m*=l?1:-1),s!==bt&&(s!==mt&&s!==gt||o!==Et)||(b=_t,f-=w[A]-n.width,f*=l?1:-1)}var T,O=Object.assign({position:a},c&&he);return l?Object.assign({},O,((T={})[v]=_?"0":"",T[b]=g?"0":"",T.transform=(y.devicePixelRatio||1)<=1?"translate("+f+"px, "+m+"px)":"translate3d("+f+"px, "+m+"px, 0)",T)):Object.assign({},O,((e={})[v]=_?m+"px":"",e[b]=g?f+"px":"",e.transform="",e))}const ue={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(t){var e=t.state,i=t.options,n=i.gpuAcceleration,s=void 0===n||n,o=i.adaptive,r=void 0===o||o,a=i.roundOffsets,l=void 0===a||a,c={placement:Ut(e.placement),variation:ce(e.placement),popper:e.elements.popper,popperRect:e.rects.popper,gpuAcceleration:s};null!=e.modifiersData.popperOffsets&&(e.styles.popper=Object.assign({},e.styles.popper,de(Object.assign({},c,{offsets:e.modifiersData.popperOffsets,position:e.options.strategy,adaptive:r,roundOffsets:l})))),null!=e.modifiersData.arrow&&(e.styles.arrow=Object.assign({},e.styles.arrow,de(Object.assign({},c,{offsets:e.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-placement":e.placement})},data:{}};var fe={passive:!0};const pe={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(t){var e=t.state,i=t.instance,n=t.options,s=n.scroll,o=void 0===s||s,r=n.resize,a=void 0===r||r,l=Wt(e.elements.popper),c=[].concat(e.scrollParents.reference,e.scrollParents.popper);return o&&c.forEach((function(t){t.addEventListener("scroll",i.update,fe)})),a&&l.addEventListener("resize",i.update,fe),function(){o&&c.forEach((function(t){t.removeEventListener("scroll",i.update,fe)})),a&&l.removeEventListener("resize",i.update,fe)}},data:{}};var me={left:"right",right:"left",bottom:"top",top:"bottom"};function ge(t){return t.replace(/left|right|bottom|top/g,(function(t){return me[t]}))}var _e={start:"end",end:"start"};function be(t){return t.replace(/start|end/g,(function(t){return _e[t]}))}function ve(t){var e=Wt(t);return{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function ye(t){return Vt(Gt(t)).left+ve(t).scrollLeft}function we(t){var e=Yt(t),i=e.overflow,n=e.overflowX,s=e.overflowY;return/auto|scroll|overlay|hidden/.test(i+s+n)}function Ee(t){return["html","body","#document"].indexOf(Rt(t))>=0?t.ownerDocument.body:zt(t)&&we(t)?t:Ee(Zt(t))}function Ae(t,e){var i;void 0===e&&(e=[]);var n=Ee(t),s=n===(null==(i=t.ownerDocument)?void 0:i.body),o=Wt(n),r=s?[o].concat(o.visualViewport||[],we(n)?n:[]):n,a=e.concat(r);return s?a:a.concat(Ae(Zt(r)))}function Te(t){return Object.assign({},t,{left:t.x,top:t.y,right:t.x+t.width,bottom:t.y+t.height})}function Oe(t,e){return e===Tt?Te(function(t){var e=Wt(t),i=Gt(t),n=e.visualViewport,s=i.clientWidth,o=i.clientHeight,r=0,a=0;return n&&(s=n.width,o=n.height,/^((?!chrome|android).)*safari/i.test(navigator.userAgent)||(r=n.offsetLeft,a=n.offsetTop)),{width:s,height:o,x:r+ye(t),y:a}}(t)):zt(e)?function(t){var e=Vt(t);return e.top=e.top+t.clientTop,e.left=e.left+t.clientLeft,e.bottom=e.top+t.clientHeight,e.right=e.left+t.clientWidth,e.width=t.clientWidth,e.height=t.clientHeight,e.x=e.left,e.y=e.top,e}(e):Te(function(t){var e,i=Gt(t),n=ve(t),s=null==(e=t.ownerDocument)?void 0:e.body,o=ie(i.scrollWidth,i.clientWidth,s?s.scrollWidth:0,s?s.clientWidth:0),r=ie(i.scrollHeight,i.clientHeight,s?s.scrollHeight:0,s?s.clientHeight:0),a=-n.scrollLeft+ye(t),l=-n.scrollTop;return"rtl"===Yt(s||i).direction&&(a+=ie(i.clientWidth,s?s.clientWidth:0)-o),{width:o,height:r,x:a,y:l}}(Gt(t)))}function Ce(t){var e,i=t.reference,n=t.element,s=t.placement,o=s?Ut(s):null,r=s?ce(s):null,a=i.x+i.width/2-n.width/2,l=i.y+i.height/2-n.height/2;switch(o){case mt:e={x:a,y:i.y-n.height};break;case gt:e={x:a,y:i.y+i.height};break;case _t:e={x:i.x+i.width,y:l};break;case bt:e={x:i.x-n.width,y:l};break;default:e={x:i.x,y:i.y}}var c=o?ee(o):null;if(null!=c){var h="y"===c?"height":"width";switch(r){case wt:e[c]=e[c]-(i[h]/2-n[h]/2);break;case Et:e[c]=e[c]+(i[h]/2-n[h]/2)}}return e}function ke(t,e){void 0===e&&(e={});var i=e,n=i.placement,s=void 0===n?t.placement:n,o=i.boundary,r=void 0===o?At:o,a=i.rootBoundary,l=void 0===a?Tt:a,c=i.elementContext,h=void 0===c?Ot:c,d=i.altBoundary,u=void 0!==d&&d,f=i.padding,p=void 0===f?0:f,m=re("number"!=typeof p?p:ae(p,yt)),g=h===Ot?Ct:Ot,_=t.rects.popper,b=t.elements[u?g:h],v=function(t,e,i){var n="clippingParents"===e?function(t){var e=Ae(Zt(t)),i=["absolute","fixed"].indexOf(Yt(t).position)>=0&&zt(t)?te(t):t;return $t(i)?e.filter((function(t){return $t(t)&&Xt(t,i)&&"body"!==Rt(t)})):[]}(t):[].concat(e),s=[].concat(n,[i]),o=s[0],r=s.reduce((function(e,i){var n=Oe(t,i);return e.top=ie(n.top,e.top),e.right=ne(n.right,e.right),e.bottom=ne(n.bottom,e.bottom),e.left=ie(n.left,e.left),e}),Oe(t,o));return r.width=r.right-r.left,r.height=r.bottom-r.top,r.x=r.left,r.y=r.top,r}($t(b)?b:b.contextElement||Gt(t.elements.popper),r,l),y=Vt(t.elements.reference),w=Ce({reference:y,element:_,strategy:"absolute",placement:s}),E=Te(Object.assign({},_,w)),A=h===Ot?E:y,T={top:v.top-A.top+m.top,bottom:A.bottom-v.bottom+m.bottom,left:v.left-A.left+m.left,right:A.right-v.right+m.right},O=t.modifiersData.offset;if(h===Ot&&O){var C=O[s];Object.keys(T).forEach((function(t){var e=[_t,gt].indexOf(t)>=0?1:-1,i=[mt,gt].indexOf(t)>=0?"y":"x";T[t]+=C[i]*e}))}return T}function Le(t,e){void 0===e&&(e={});var i=e,n=i.placement,s=i.boundary,o=i.rootBoundary,r=i.padding,a=i.flipVariations,l=i.allowedAutoPlacements,c=void 0===l?Lt:l,h=ce(n),d=h?a?kt:kt.filter((function(t){return ce(t)===h})):yt,u=d.filter((function(t){return c.indexOf(t)>=0}));0===u.length&&(u=d);var f=u.reduce((function(e,i){return e[i]=ke(t,{placement:i,boundary:s,rootBoundary:o,padding:r})[Ut(i)],e}),{});return Object.keys(f).sort((function(t,e){return f[t]-f[e]}))}const xe={name:"flip",enabled:!0,phase:"main",fn:function(t){var e=t.state,i=t.options,n=t.name;if(!e.modifiersData[n]._skip){for(var s=i.mainAxis,o=void 0===s||s,r=i.altAxis,a=void 0===r||r,l=i.fallbackPlacements,c=i.padding,h=i.boundary,d=i.rootBoundary,u=i.altBoundary,f=i.flipVariations,p=void 0===f||f,m=i.allowedAutoPlacements,g=e.options.placement,_=Ut(g),b=l||(_!==g&&p?function(t){if(Ut(t)===vt)return[];var e=ge(t);return[be(t),e,be(e)]}(g):[ge(g)]),v=[g].concat(b).reduce((function(t,i){return t.concat(Ut(i)===vt?Le(e,{placement:i,boundary:h,rootBoundary:d,padding:c,flipVariations:p,allowedAutoPlacements:m}):i)}),[]),y=e.rects.reference,w=e.rects.popper,E=new Map,A=!0,T=v[0],O=0;O=0,D=x?"width":"height",S=ke(e,{placement:C,boundary:h,rootBoundary:d,altBoundary:u,padding:c}),N=x?L?_t:bt:L?gt:mt;y[D]>w[D]&&(N=ge(N));var I=ge(N),P=[];if(o&&P.push(S[k]<=0),a&&P.push(S[N]<=0,S[I]<=0),P.every((function(t){return t}))){T=C,A=!1;break}E.set(C,P)}if(A)for(var j=function(t){var e=v.find((function(e){var i=E.get(e);if(i)return i.slice(0,t).every((function(t){return t}))}));if(e)return T=e,"break"},M=p?3:1;M>0&&"break"!==j(M);M--);e.placement!==T&&(e.modifiersData[n]._skip=!0,e.placement=T,e.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function De(t,e,i){return void 0===i&&(i={x:0,y:0}),{top:t.top-e.height-i.y,right:t.right-e.width+i.x,bottom:t.bottom-e.height+i.y,left:t.left-e.width-i.x}}function Se(t){return[mt,_t,gt,bt].some((function(e){return t[e]>=0}))}const Ne={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(t){var e=t.state,i=t.name,n=e.rects.reference,s=e.rects.popper,o=e.modifiersData.preventOverflow,r=ke(e,{elementContext:"reference"}),a=ke(e,{altBoundary:!0}),l=De(r,n),c=De(a,s,o),h=Se(l),d=Se(c);e.modifiersData[i]={referenceClippingOffsets:l,popperEscapeOffsets:c,isReferenceHidden:h,hasPopperEscaped:d},e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-reference-hidden":h,"data-popper-escaped":d})}},Ie={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(t){var e=t.state,i=t.options,n=t.name,s=i.offset,o=void 0===s?[0,0]:s,r=Lt.reduce((function(t,i){return t[i]=function(t,e,i){var n=Ut(t),s=[bt,mt].indexOf(n)>=0?-1:1,o="function"==typeof i?i(Object.assign({},e,{placement:t})):i,r=o[0],a=o[1];return r=r||0,a=(a||0)*s,[bt,_t].indexOf(n)>=0?{x:a,y:r}:{x:r,y:a}}(i,e.rects,o),t}),{}),a=r[e.placement],l=a.x,c=a.y;null!=e.modifiersData.popperOffsets&&(e.modifiersData.popperOffsets.x+=l,e.modifiersData.popperOffsets.y+=c),e.modifiersData[n]=r}},Pe={name:"popperOffsets",enabled:!0,phase:"read",fn:function(t){var e=t.state,i=t.name;e.modifiersData[i]=Ce({reference:e.rects.reference,element:e.rects.popper,strategy:"absolute",placement:e.placement})},data:{}},je={name:"preventOverflow",enabled:!0,phase:"main",fn:function(t){var e=t.state,i=t.options,n=t.name,s=i.mainAxis,o=void 0===s||s,r=i.altAxis,a=void 0!==r&&r,l=i.boundary,c=i.rootBoundary,h=i.altBoundary,d=i.padding,u=i.tether,f=void 0===u||u,p=i.tetherOffset,m=void 0===p?0:p,g=ke(e,{boundary:l,rootBoundary:c,padding:d,altBoundary:h}),_=Ut(e.placement),b=ce(e.placement),v=!b,y=ee(_),w="x"===y?"y":"x",E=e.modifiersData.popperOffsets,A=e.rects.reference,T=e.rects.popper,O="function"==typeof m?m(Object.assign({},e.rects,{placement:e.placement})):m,C={x:0,y:0};if(E){if(o||a){var k="y"===y?mt:bt,L="y"===y?gt:_t,x="y"===y?"height":"width",D=E[y],S=E[y]+g[k],N=E[y]-g[L],I=f?-T[x]/2:0,P=b===wt?A[x]:T[x],j=b===wt?-T[x]:-A[x],M=e.elements.arrow,H=f&&M?Kt(M):{width:0,height:0},B=e.modifiersData["arrow#persistent"]?e.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},R=B[k],W=B[L],$=oe(0,A[x],H[x]),z=v?A[x]/2-I-$-R-O:P-$-R-O,q=v?-A[x]/2+I+$+W+O:j+$+W+O,F=e.elements.arrow&&te(e.elements.arrow),U=F?"y"===y?F.clientTop||0:F.clientLeft||0:0,V=e.modifiersData.offset?e.modifiersData.offset[e.placement][y]:0,K=E[y]+z-V-U,X=E[y]+q-V;if(o){var Y=oe(f?ne(S,K):S,D,f?ie(N,X):N);E[y]=Y,C[y]=Y-D}if(a){var Q="x"===y?mt:bt,G="x"===y?gt:_t,Z=E[w],J=Z+g[Q],tt=Z-g[G],et=oe(f?ne(J,K):J,Z,f?ie(tt,X):tt);E[w]=et,C[w]=et-Z}}e.modifiersData[n]=C}},requiresIfExists:["offset"]};function Me(t,e,i){void 0===i&&(i=!1);var n=zt(e);zt(e)&&function(t){var e=t.getBoundingClientRect();e.width,t.offsetWidth,e.height,t.offsetHeight}(e);var s,o,r=Gt(e),a=Vt(t),l={scrollLeft:0,scrollTop:0},c={x:0,y:0};return(n||!n&&!i)&&(("body"!==Rt(e)||we(r))&&(l=(s=e)!==Wt(s)&&zt(s)?{scrollLeft:(o=s).scrollLeft,scrollTop:o.scrollTop}:ve(s)),zt(e)?((c=Vt(e)).x+=e.clientLeft,c.y+=e.clientTop):r&&(c.x=ye(r))),{x:a.left+l.scrollLeft-c.x,y:a.top+l.scrollTop-c.y,width:a.width,height:a.height}}function He(t){var e=new Map,i=new Set,n=[];function s(t){i.add(t.name),[].concat(t.requires||[],t.requiresIfExists||[]).forEach((function(t){if(!i.has(t)){var n=e.get(t);n&&s(n)}})),n.push(t)}return t.forEach((function(t){e.set(t.name,t)})),t.forEach((function(t){i.has(t.name)||s(t)})),n}var Be={placement:"bottom",modifiers:[],strategy:"absolute"};function Re(){for(var t=arguments.length,e=new Array(t),i=0;ij.on(t,"mouseover",d))),this._element.focus(),this._element.setAttribute("aria-expanded",!0),this._menu.classList.add(Je),this._element.classList.add(Je),j.trigger(this._element,"shown.bs.dropdown",t)}hide(){if(c(this._element)||!this._isShown(this._menu))return;const t={relatedTarget:this._element};this._completeHide(t)}dispose(){this._popper&&this._popper.destroy(),super.dispose()}update(){this._inNavbar=this._detectNavbar(),this._popper&&this._popper.update()}_completeHide(t){j.trigger(this._element,"hide.bs.dropdown",t).defaultPrevented||("ontouchstart"in document.documentElement&&[].concat(...document.body.children).forEach((t=>j.off(t,"mouseover",d))),this._popper&&this._popper.destroy(),this._menu.classList.remove(Je),this._element.classList.remove(Je),this._element.setAttribute("aria-expanded","false"),U.removeDataAttribute(this._menu,"popper"),j.trigger(this._element,"hidden.bs.dropdown",t))}_getConfig(t){if(t={...this.constructor.Default,...U.getDataAttributes(this._element),...t},a(Ue,t,this.constructor.DefaultType),"object"==typeof t.reference&&!o(t.reference)&&"function"!=typeof t.reference.getBoundingClientRect)throw new TypeError(`${Ue.toUpperCase()}: Option "reference" provided type "object" without a required "getBoundingClientRect" method.`);return t}_createPopper(t){if(void 0===Fe)throw new TypeError("Bootstrap's dropdowns require Popper (https://popper.js.org)");let e=this._element;"parent"===this._config.reference?e=t:o(this._config.reference)?e=r(this._config.reference):"object"==typeof this._config.reference&&(e=this._config.reference);const i=this._getPopperConfig(),n=i.modifiers.find((t=>"applyStyles"===t.name&&!1===t.enabled));this._popper=qe(e,this._menu,i),n&&U.setDataAttribute(this._menu,"popper","static")}_isShown(t=this._element){return t.classList.contains(Je)}_getMenuElement(){return V.next(this._element,ei)[0]}_getPlacement(){const t=this._element.parentNode;if(t.classList.contains("dropend"))return ri;if(t.classList.contains("dropstart"))return ai;const e="end"===getComputedStyle(this._menu).getPropertyValue("--bs-position").trim();return t.classList.contains("dropup")?e?ni:ii:e?oi:si}_detectNavbar(){return null!==this._element.closest(".navbar")}_getOffset(){const{offset:t}=this._config;return"string"==typeof t?t.split(",").map((t=>Number.parseInt(t,10))):"function"==typeof t?e=>t(e,this._element):t}_getPopperConfig(){const t={placement:this._getPlacement(),modifiers:[{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"offset",options:{offset:this._getOffset()}}]};return"static"===this._config.display&&(t.modifiers=[{name:"applyStyles",enabled:!1}]),{...t,..."function"==typeof this._config.popperConfig?this._config.popperConfig(t):this._config.popperConfig}}_selectMenuItem({key:t,target:e}){const i=V.find(".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)",this._menu).filter(l);i.length&&v(i,e,t===Ye,!i.includes(e)).focus()}static jQueryInterface(t){return this.each((function(){const e=hi.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}static clearMenus(t){if(t&&(2===t.button||"keyup"===t.type&&"Tab"!==t.key))return;const e=V.find(ti);for(let i=0,n=e.length;ie+t)),this._setElementAttributes(di,"paddingRight",(e=>e+t)),this._setElementAttributes(ui,"marginRight",(e=>e-t))}_disableOverFlow(){this._saveInitialAttribute(this._element,"overflow"),this._element.style.overflow="hidden"}_setElementAttributes(t,e,i){const n=this.getWidth();this._applyManipulationCallback(t,(t=>{if(t!==this._element&&window.innerWidth>t.clientWidth+n)return;this._saveInitialAttribute(t,e);const s=window.getComputedStyle(t)[e];t.style[e]=`${i(Number.parseFloat(s))}px`}))}reset(){this._resetElementAttributes(this._element,"overflow"),this._resetElementAttributes(this._element,"paddingRight"),this._resetElementAttributes(di,"paddingRight"),this._resetElementAttributes(ui,"marginRight")}_saveInitialAttribute(t,e){const i=t.style[e];i&&U.setDataAttribute(t,e,i)}_resetElementAttributes(t,e){this._applyManipulationCallback(t,(t=>{const i=U.getDataAttribute(t,e);void 0===i?t.style.removeProperty(e):(U.removeDataAttribute(t,e),t.style[e]=i)}))}_applyManipulationCallback(t,e){o(t)?e(t):V.find(t,this._element).forEach(e)}isOverflowing(){return this.getWidth()>0}}const pi={className:"modal-backdrop",isVisible:!0,isAnimated:!1,rootElement:"body",clickCallback:null},mi={className:"string",isVisible:"boolean",isAnimated:"boolean",rootElement:"(element|string)",clickCallback:"(function|null)"},gi="show",_i="mousedown.bs.backdrop";class bi{constructor(t){this._config=this._getConfig(t),this._isAppended=!1,this._element=null}show(t){this._config.isVisible?(this._append(),this._config.isAnimated&&u(this._getElement()),this._getElement().classList.add(gi),this._emulateAnimation((()=>{_(t)}))):_(t)}hide(t){this._config.isVisible?(this._getElement().classList.remove(gi),this._emulateAnimation((()=>{this.dispose(),_(t)}))):_(t)}_getElement(){if(!this._element){const t=document.createElement("div");t.className=this._config.className,this._config.isAnimated&&t.classList.add("fade"),this._element=t}return this._element}_getConfig(t){return(t={...pi,..."object"==typeof t?t:{}}).rootElement=r(t.rootElement),a("backdrop",t,mi),t}_append(){this._isAppended||(this._config.rootElement.append(this._getElement()),j.on(this._getElement(),_i,(()=>{_(this._config.clickCallback)})),this._isAppended=!0)}dispose(){this._isAppended&&(j.off(this._element,_i),this._element.remove(),this._isAppended=!1)}_emulateAnimation(t){b(t,this._getElement(),this._config.isAnimated)}}const vi={trapElement:null,autofocus:!0},yi={trapElement:"element",autofocus:"boolean"},wi=".bs.focustrap",Ei="backward";class Ai{constructor(t){this._config=this._getConfig(t),this._isActive=!1,this._lastTabNavDirection=null}activate(){const{trapElement:t,autofocus:e}=this._config;this._isActive||(e&&t.focus(),j.off(document,wi),j.on(document,"focusin.bs.focustrap",(t=>this._handleFocusin(t))),j.on(document,"keydown.tab.bs.focustrap",(t=>this._handleKeydown(t))),this._isActive=!0)}deactivate(){this._isActive&&(this._isActive=!1,j.off(document,wi))}_handleFocusin(t){const{target:e}=t,{trapElement:i}=this._config;if(e===document||e===i||i.contains(e))return;const n=V.focusableChildren(i);0===n.length?i.focus():this._lastTabNavDirection===Ei?n[n.length-1].focus():n[0].focus()}_handleKeydown(t){"Tab"===t.key&&(this._lastTabNavDirection=t.shiftKey?Ei:"forward")}_getConfig(t){return t={...vi,..."object"==typeof t?t:{}},a("focustrap",t,yi),t}}const Ti="modal",Oi="Escape",Ci={backdrop:!0,keyboard:!0,focus:!0},ki={backdrop:"(boolean|string)",keyboard:"boolean",focus:"boolean"},Li="hidden.bs.modal",xi="show.bs.modal",Di="resize.bs.modal",Si="click.dismiss.bs.modal",Ni="keydown.dismiss.bs.modal",Ii="mousedown.dismiss.bs.modal",Pi="modal-open",ji="show",Mi="modal-static";class Hi extends B{constructor(t,e){super(t),this._config=this._getConfig(e),this._dialog=V.findOne(".modal-dialog",this._element),this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._isShown=!1,this._ignoreBackdropClick=!1,this._isTransitioning=!1,this._scrollBar=new fi}static get Default(){return Ci}static get NAME(){return Ti}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||this._isTransitioning||j.trigger(this._element,xi,{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._isAnimated()&&(this._isTransitioning=!0),this._scrollBar.hide(),document.body.classList.add(Pi),this._adjustDialog(),this._setEscapeEvent(),this._setResizeEvent(),j.on(this._dialog,Ii,(()=>{j.one(this._element,"mouseup.dismiss.bs.modal",(t=>{t.target===this._element&&(this._ignoreBackdropClick=!0)}))})),this._showBackdrop((()=>this._showElement(t))))}hide(){if(!this._isShown||this._isTransitioning)return;if(j.trigger(this._element,"hide.bs.modal").defaultPrevented)return;this._isShown=!1;const t=this._isAnimated();t&&(this._isTransitioning=!0),this._setEscapeEvent(),this._setResizeEvent(),this._focustrap.deactivate(),this._element.classList.remove(ji),j.off(this._element,Si),j.off(this._dialog,Ii),this._queueCallback((()=>this._hideModal()),this._element,t)}dispose(){[window,this._dialog].forEach((t=>j.off(t,".bs.modal"))),this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}handleUpdate(){this._adjustDialog()}_initializeBackDrop(){return new bi({isVisible:Boolean(this._config.backdrop),isAnimated:this._isAnimated()})}_initializeFocusTrap(){return new Ai({trapElement:this._element})}_getConfig(t){return t={...Ci,...U.getDataAttributes(this._element),..."object"==typeof t?t:{}},a(Ti,t,ki),t}_showElement(t){const e=this._isAnimated(),i=V.findOne(".modal-body",this._dialog);this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE||document.body.append(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.scrollTop=0,i&&(i.scrollTop=0),e&&u(this._element),this._element.classList.add(ji),this._queueCallback((()=>{this._config.focus&&this._focustrap.activate(),this._isTransitioning=!1,j.trigger(this._element,"shown.bs.modal",{relatedTarget:t})}),this._dialog,e)}_setEscapeEvent(){this._isShown?j.on(this._element,Ni,(t=>{this._config.keyboard&&t.key===Oi?(t.preventDefault(),this.hide()):this._config.keyboard||t.key!==Oi||this._triggerBackdropTransition()})):j.off(this._element,Ni)}_setResizeEvent(){this._isShown?j.on(window,Di,(()=>this._adjustDialog())):j.off(window,Di)}_hideModal(){this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._isTransitioning=!1,this._backdrop.hide((()=>{document.body.classList.remove(Pi),this._resetAdjustments(),this._scrollBar.reset(),j.trigger(this._element,Li)}))}_showBackdrop(t){j.on(this._element,Si,(t=>{this._ignoreBackdropClick?this._ignoreBackdropClick=!1:t.target===t.currentTarget&&(!0===this._config.backdrop?this.hide():"static"===this._config.backdrop&&this._triggerBackdropTransition())})),this._backdrop.show(t)}_isAnimated(){return this._element.classList.contains("fade")}_triggerBackdropTransition(){if(j.trigger(this._element,"hidePrevented.bs.modal").defaultPrevented)return;const{classList:t,scrollHeight:e,style:i}=this._element,n=e>document.documentElement.clientHeight;!n&&"hidden"===i.overflowY||t.contains(Mi)||(n||(i.overflowY="hidden"),t.add(Mi),this._queueCallback((()=>{t.remove(Mi),n||this._queueCallback((()=>{i.overflowY=""}),this._dialog)}),this._dialog),this._element.focus())}_adjustDialog(){const t=this._element.scrollHeight>document.documentElement.clientHeight,e=this._scrollBar.getWidth(),i=e>0;(!i&&t&&!m()||i&&!t&&m())&&(this._element.style.paddingLeft=`${e}px`),(i&&!t&&!m()||!i&&t&&m())&&(this._element.style.paddingRight=`${e}px`)}_resetAdjustments(){this._element.style.paddingLeft="",this._element.style.paddingRight=""}static jQueryInterface(t,e){return this.each((function(){const i=Hi.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===i[t])throw new TypeError(`No method named "${t}"`);i[t](e)}}))}}j.on(document,"click.bs.modal.data-api",'[data-bs-toggle="modal"]',(function(t){const e=n(this);["A","AREA"].includes(this.tagName)&&t.preventDefault(),j.one(e,xi,(t=>{t.defaultPrevented||j.one(e,Li,(()=>{l(this)&&this.focus()}))}));const i=V.findOne(".modal.show");i&&Hi.getInstance(i).hide(),Hi.getOrCreateInstance(e).toggle(this)})),R(Hi),g(Hi);const Bi="offcanvas",Ri={backdrop:!0,keyboard:!0,scroll:!1},Wi={backdrop:"boolean",keyboard:"boolean",scroll:"boolean"},$i="show",zi=".offcanvas.show",qi="hidden.bs.offcanvas";class Fi extends B{constructor(t,e){super(t),this._config=this._getConfig(e),this._isShown=!1,this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._addEventListeners()}static get NAME(){return Bi}static get Default(){return Ri}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||j.trigger(this._element,"show.bs.offcanvas",{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._element.style.visibility="visible",this._backdrop.show(),this._config.scroll||(new fi).hide(),this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.classList.add($i),this._queueCallback((()=>{this._config.scroll||this._focustrap.activate(),j.trigger(this._element,"shown.bs.offcanvas",{relatedTarget:t})}),this._element,!0))}hide(){this._isShown&&(j.trigger(this._element,"hide.bs.offcanvas").defaultPrevented||(this._focustrap.deactivate(),this._element.blur(),this._isShown=!1,this._element.classList.remove($i),this._backdrop.hide(),this._queueCallback((()=>{this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._element.style.visibility="hidden",this._config.scroll||(new fi).reset(),j.trigger(this._element,qi)}),this._element,!0)))}dispose(){this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}_getConfig(t){return t={...Ri,...U.getDataAttributes(this._element),..."object"==typeof t?t:{}},a(Bi,t,Wi),t}_initializeBackDrop(){return new bi({className:"offcanvas-backdrop",isVisible:this._config.backdrop,isAnimated:!0,rootElement:this._element.parentNode,clickCallback:()=>this.hide()})}_initializeFocusTrap(){return new Ai({trapElement:this._element})}_addEventListeners(){j.on(this._element,"keydown.dismiss.bs.offcanvas",(t=>{this._config.keyboard&&"Escape"===t.key&&this.hide()}))}static jQueryInterface(t){return this.each((function(){const e=Fi.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}j.on(document,"click.bs.offcanvas.data-api",'[data-bs-toggle="offcanvas"]',(function(t){const e=n(this);if(["A","AREA"].includes(this.tagName)&&t.preventDefault(),c(this))return;j.one(e,qi,(()=>{l(this)&&this.focus()}));const i=V.findOne(zi);i&&i!==e&&Fi.getInstance(i).hide(),Fi.getOrCreateInstance(e).toggle(this)})),j.on(window,"load.bs.offcanvas.data-api",(()=>V.find(zi).forEach((t=>Fi.getOrCreateInstance(t).show())))),R(Fi),g(Fi);const Ui=new Set(["background","cite","href","itemtype","longdesc","poster","src","xlink:href"]),Vi=/^(?:(?:https?|mailto|ftp|tel|file|sms):|[^#&/:?]*(?:[#/?]|$))/i,Ki=/^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[\d+/a-z]+=*$/i,Xi=(t,e)=>{const i=t.nodeName.toLowerCase();if(e.includes(i))return!Ui.has(i)||Boolean(Vi.test(t.nodeValue)||Ki.test(t.nodeValue));const n=e.filter((t=>t instanceof RegExp));for(let t=0,e=n.length;t{Xi(t,r)||i.removeAttribute(t.nodeName)}))}return n.body.innerHTML}const Qi="tooltip",Gi=new Set(["sanitize","allowList","sanitizeFn"]),Zi={animation:"boolean",template:"string",title:"(string|element|function)",trigger:"string",delay:"(number|object)",html:"boolean",selector:"(string|boolean)",placement:"(string|function)",offset:"(array|string|function)",container:"(string|element|boolean)",fallbackPlacements:"array",boundary:"(string|element)",customClass:"(string|function)",sanitize:"boolean",sanitizeFn:"(null|function)",allowList:"object",popperConfig:"(null|object|function)"},Ji={AUTO:"auto",TOP:"top",RIGHT:m()?"left":"right",BOTTOM:"bottom",LEFT:m()?"right":"left"},tn={animation:!0,template:'

              ',trigger:"hover focus",title:"",delay:0,html:!1,selector:!1,placement:"top",offset:[0,0],container:!1,fallbackPlacements:["top","right","bottom","left"],boundary:"clippingParents",customClass:"",sanitize:!0,sanitizeFn:null,allowList:{"*":["class","dir","id","lang","role",/^aria-[\w-]*$/i],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],div:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","srcset","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},popperConfig:null},en={HIDE:"hide.bs.tooltip",HIDDEN:"hidden.bs.tooltip",SHOW:"show.bs.tooltip",SHOWN:"shown.bs.tooltip",INSERTED:"inserted.bs.tooltip",CLICK:"click.bs.tooltip",FOCUSIN:"focusin.bs.tooltip",FOCUSOUT:"focusout.bs.tooltip",MOUSEENTER:"mouseenter.bs.tooltip",MOUSELEAVE:"mouseleave.bs.tooltip"},nn="fade",sn="show",on="show",rn="out",an=".tooltip-inner",ln=".modal",cn="hide.bs.modal",hn="hover",dn="focus";class un extends B{constructor(t,e){if(void 0===Fe)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");super(t),this._isEnabled=!0,this._timeout=0,this._hoverState="",this._activeTrigger={},this._popper=null,this._config=this._getConfig(e),this.tip=null,this._setListeners()}static get Default(){return tn}static get NAME(){return Qi}static get Event(){return en}static get DefaultType(){return Zi}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(t){if(this._isEnabled)if(t){const e=this._initializeOnDelegatedTarget(t);e._activeTrigger.click=!e._activeTrigger.click,e._isWithActiveTrigger()?e._enter(null,e):e._leave(null,e)}else{if(this.getTipElement().classList.contains(sn))return void this._leave(null,this);this._enter(null,this)}}dispose(){clearTimeout(this._timeout),j.off(this._element.closest(ln),cn,this._hideModalHandler),this.tip&&this.tip.remove(),this._disposePopper(),super.dispose()}show(){if("none"===this._element.style.display)throw new Error("Please use show on visible elements");if(!this.isWithContent()||!this._isEnabled)return;const t=j.trigger(this._element,this.constructor.Event.SHOW),e=h(this._element),i=null===e?this._element.ownerDocument.documentElement.contains(this._element):e.contains(this._element);if(t.defaultPrevented||!i)return;"tooltip"===this.constructor.NAME&&this.tip&&this.getTitle()!==this.tip.querySelector(an).innerHTML&&(this._disposePopper(),this.tip.remove(),this.tip=null);const n=this.getTipElement(),s=(t=>{do{t+=Math.floor(1e6*Math.random())}while(document.getElementById(t));return t})(this.constructor.NAME);n.setAttribute("id",s),this._element.setAttribute("aria-describedby",s),this._config.animation&&n.classList.add(nn);const o="function"==typeof this._config.placement?this._config.placement.call(this,n,this._element):this._config.placement,r=this._getAttachment(o);this._addAttachmentClass(r);const{container:a}=this._config;H.set(n,this.constructor.DATA_KEY,this),this._element.ownerDocument.documentElement.contains(this.tip)||(a.append(n),j.trigger(this._element,this.constructor.Event.INSERTED)),this._popper?this._popper.update():this._popper=qe(this._element,n,this._getPopperConfig(r)),n.classList.add(sn);const l=this._resolvePossibleFunction(this._config.customClass);l&&n.classList.add(...l.split(" ")),"ontouchstart"in document.documentElement&&[].concat(...document.body.children).forEach((t=>{j.on(t,"mouseover",d)}));const c=this.tip.classList.contains(nn);this._queueCallback((()=>{const t=this._hoverState;this._hoverState=null,j.trigger(this._element,this.constructor.Event.SHOWN),t===rn&&this._leave(null,this)}),this.tip,c)}hide(){if(!this._popper)return;const t=this.getTipElement();if(j.trigger(this._element,this.constructor.Event.HIDE).defaultPrevented)return;t.classList.remove(sn),"ontouchstart"in document.documentElement&&[].concat(...document.body.children).forEach((t=>j.off(t,"mouseover",d))),this._activeTrigger.click=!1,this._activeTrigger.focus=!1,this._activeTrigger.hover=!1;const e=this.tip.classList.contains(nn);this._queueCallback((()=>{this._isWithActiveTrigger()||(this._hoverState!==on&&t.remove(),this._cleanTipClass(),this._element.removeAttribute("aria-describedby"),j.trigger(this._element,this.constructor.Event.HIDDEN),this._disposePopper())}),this.tip,e),this._hoverState=""}update(){null!==this._popper&&this._popper.update()}isWithContent(){return Boolean(this.getTitle())}getTipElement(){if(this.tip)return this.tip;const t=document.createElement("div");t.innerHTML=this._config.template;const e=t.children[0];return this.setContent(e),e.classList.remove(nn,sn),this.tip=e,this.tip}setContent(t){this._sanitizeAndSetContent(t,this.getTitle(),an)}_sanitizeAndSetContent(t,e,i){const n=V.findOne(i,t);e||!n?this.setElementContent(n,e):n.remove()}setElementContent(t,e){if(null!==t)return o(e)?(e=r(e),void(this._config.html?e.parentNode!==t&&(t.innerHTML="",t.append(e)):t.textContent=e.textContent)):void(this._config.html?(this._config.sanitize&&(e=Yi(e,this._config.allowList,this._config.sanitizeFn)),t.innerHTML=e):t.textContent=e)}getTitle(){const t=this._element.getAttribute("data-bs-original-title")||this._config.title;return this._resolvePossibleFunction(t)}updateAttachment(t){return"right"===t?"end":"left"===t?"start":t}_initializeOnDelegatedTarget(t,e){return e||this.constructor.getOrCreateInstance(t.delegateTarget,this._getDelegateConfig())}_getOffset(){const{offset:t}=this._config;return"string"==typeof t?t.split(",").map((t=>Number.parseInt(t,10))):"function"==typeof t?e=>t(e,this._element):t}_resolvePossibleFunction(t){return"function"==typeof t?t.call(this._element):t}_getPopperConfig(t){const e={placement:t,modifiers:[{name:"flip",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"arrow",options:{element:`.${this.constructor.NAME}-arrow`}},{name:"onChange",enabled:!0,phase:"afterWrite",fn:t=>this._handlePopperPlacementChange(t)}],onFirstUpdate:t=>{t.options.placement!==t.placement&&this._handlePopperPlacementChange(t)}};return{...e,..."function"==typeof this._config.popperConfig?this._config.popperConfig(e):this._config.popperConfig}}_addAttachmentClass(t){this.getTipElement().classList.add(`${this._getBasicClassPrefix()}-${this.updateAttachment(t)}`)}_getAttachment(t){return Ji[t.toUpperCase()]}_setListeners(){this._config.trigger.split(" ").forEach((t=>{if("click"===t)j.on(this._element,this.constructor.Event.CLICK,this._config.selector,(t=>this.toggle(t)));else if("manual"!==t){const e=t===hn?this.constructor.Event.MOUSEENTER:this.constructor.Event.FOCUSIN,i=t===hn?this.constructor.Event.MOUSELEAVE:this.constructor.Event.FOCUSOUT;j.on(this._element,e,this._config.selector,(t=>this._enter(t))),j.on(this._element,i,this._config.selector,(t=>this._leave(t)))}})),this._hideModalHandler=()=>{this._element&&this.hide()},j.on(this._element.closest(ln),cn,this._hideModalHandler),this._config.selector?this._config={...this._config,trigger:"manual",selector:""}:this._fixTitle()}_fixTitle(){const t=this._element.getAttribute("title"),e=typeof this._element.getAttribute("data-bs-original-title");(t||"string"!==e)&&(this._element.setAttribute("data-bs-original-title",t||""),!t||this._element.getAttribute("aria-label")||this._element.textContent||this._element.setAttribute("aria-label",t),this._element.setAttribute("title",""))}_enter(t,e){e=this._initializeOnDelegatedTarget(t,e),t&&(e._activeTrigger["focusin"===t.type?dn:hn]=!0),e.getTipElement().classList.contains(sn)||e._hoverState===on?e._hoverState=on:(clearTimeout(e._timeout),e._hoverState=on,e._config.delay&&e._config.delay.show?e._timeout=setTimeout((()=>{e._hoverState===on&&e.show()}),e._config.delay.show):e.show())}_leave(t,e){e=this._initializeOnDelegatedTarget(t,e),t&&(e._activeTrigger["focusout"===t.type?dn:hn]=e._element.contains(t.relatedTarget)),e._isWithActiveTrigger()||(clearTimeout(e._timeout),e._hoverState=rn,e._config.delay&&e._config.delay.hide?e._timeout=setTimeout((()=>{e._hoverState===rn&&e.hide()}),e._config.delay.hide):e.hide())}_isWithActiveTrigger(){for(const t in this._activeTrigger)if(this._activeTrigger[t])return!0;return!1}_getConfig(t){const e=U.getDataAttributes(this._element);return Object.keys(e).forEach((t=>{Gi.has(t)&&delete e[t]})),(t={...this.constructor.Default,...e,..."object"==typeof t&&t?t:{}}).container=!1===t.container?document.body:r(t.container),"number"==typeof t.delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),a(Qi,t,this.constructor.DefaultType),t.sanitize&&(t.template=Yi(t.template,t.allowList,t.sanitizeFn)),t}_getDelegateConfig(){const t={};for(const e in this._config)this.constructor.Default[e]!==this._config[e]&&(t[e]=this._config[e]);return t}_cleanTipClass(){const t=this.getTipElement(),e=new RegExp(`(^|\\s)${this._getBasicClassPrefix()}\\S+`,"g"),i=t.getAttribute("class").match(e);null!==i&&i.length>0&&i.map((t=>t.trim())).forEach((e=>t.classList.remove(e)))}_getBasicClassPrefix(){return"bs-tooltip"}_handlePopperPlacementChange(t){const{state:e}=t;e&&(this.tip=e.elements.popper,this._cleanTipClass(),this._addAttachmentClass(this._getAttachment(e.placement)))}_disposePopper(){this._popper&&(this._popper.destroy(),this._popper=null)}static jQueryInterface(t){return this.each((function(){const e=un.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}g(un);const fn={...un.Default,placement:"right",offset:[0,8],trigger:"click",content:"",template:''},pn={...un.DefaultType,content:"(string|element|function)"},mn={HIDE:"hide.bs.popover",HIDDEN:"hidden.bs.popover",SHOW:"show.bs.popover",SHOWN:"shown.bs.popover",INSERTED:"inserted.bs.popover",CLICK:"click.bs.popover",FOCUSIN:"focusin.bs.popover",FOCUSOUT:"focusout.bs.popover",MOUSEENTER:"mouseenter.bs.popover",MOUSELEAVE:"mouseleave.bs.popover"};class gn extends un{static get Default(){return fn}static get NAME(){return"popover"}static get Event(){return mn}static get DefaultType(){return pn}isWithContent(){return this.getTitle()||this._getContent()}setContent(t){this._sanitizeAndSetContent(t,this.getTitle(),".popover-header"),this._sanitizeAndSetContent(t,this._getContent(),".popover-body")}_getContent(){return this._resolvePossibleFunction(this._config.content)}_getBasicClassPrefix(){return"bs-popover"}static jQueryInterface(t){return this.each((function(){const e=gn.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}g(gn);const _n="scrollspy",bn={offset:10,method:"auto",target:""},vn={offset:"number",method:"string",target:"(string|element)"},yn="active",wn=".nav-link, .list-group-item, .dropdown-item",En="position";class An extends B{constructor(t,e){super(t),this._scrollElement="BODY"===this._element.tagName?window:this._element,this._config=this._getConfig(e),this._offsets=[],this._targets=[],this._activeTarget=null,this._scrollHeight=0,j.on(this._scrollElement,"scroll.bs.scrollspy",(()=>this._process())),this.refresh(),this._process()}static get Default(){return bn}static get NAME(){return _n}refresh(){const t=this._scrollElement===this._scrollElement.window?"offset":En,e="auto"===this._config.method?t:this._config.method,n=e===En?this._getScrollTop():0;this._offsets=[],this._targets=[],this._scrollHeight=this._getScrollHeight(),V.find(wn,this._config.target).map((t=>{const s=i(t),o=s?V.findOne(s):null;if(o){const t=o.getBoundingClientRect();if(t.width||t.height)return[U[e](o).top+n,s]}return null})).filter((t=>t)).sort(((t,e)=>t[0]-e[0])).forEach((t=>{this._offsets.push(t[0]),this._targets.push(t[1])}))}dispose(){j.off(this._scrollElement,".bs.scrollspy"),super.dispose()}_getConfig(t){return(t={...bn,...U.getDataAttributes(this._element),..."object"==typeof t&&t?t:{}}).target=r(t.target)||document.documentElement,a(_n,t,vn),t}_getScrollTop(){return this._scrollElement===window?this._scrollElement.pageYOffset:this._scrollElement.scrollTop}_getScrollHeight(){return this._scrollElement.scrollHeight||Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)}_getOffsetHeight(){return this._scrollElement===window?window.innerHeight:this._scrollElement.getBoundingClientRect().height}_process(){const t=this._getScrollTop()+this._config.offset,e=this._getScrollHeight(),i=this._config.offset+e-this._getOffsetHeight();if(this._scrollHeight!==e&&this.refresh(),t>=i){const t=this._targets[this._targets.length-1];this._activeTarget!==t&&this._activate(t)}else{if(this._activeTarget&&t0)return this._activeTarget=null,void this._clear();for(let e=this._offsets.length;e--;)this._activeTarget!==this._targets[e]&&t>=this._offsets[e]&&(void 0===this._offsets[e+1]||t`${e}[data-bs-target="${t}"],${e}[href="${t}"]`)),i=V.findOne(e.join(","),this._config.target);i.classList.add(yn),i.classList.contains("dropdown-item")?V.findOne(".dropdown-toggle",i.closest(".dropdown")).classList.add(yn):V.parents(i,".nav, .list-group").forEach((t=>{V.prev(t,".nav-link, .list-group-item").forEach((t=>t.classList.add(yn))),V.prev(t,".nav-item").forEach((t=>{V.children(t,".nav-link").forEach((t=>t.classList.add(yn)))}))})),j.trigger(this._scrollElement,"activate.bs.scrollspy",{relatedTarget:t})}_clear(){V.find(wn,this._config.target).filter((t=>t.classList.contains(yn))).forEach((t=>t.classList.remove(yn)))}static jQueryInterface(t){return this.each((function(){const e=An.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}j.on(window,"load.bs.scrollspy.data-api",(()=>{V.find('[data-bs-spy="scroll"]').forEach((t=>new An(t)))})),g(An);const Tn="active",On="fade",Cn="show",kn=".active",Ln=":scope > li > .active";class xn extends B{static get NAME(){return"tab"}show(){if(this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE&&this._element.classList.contains(Tn))return;let t;const e=n(this._element),i=this._element.closest(".nav, .list-group");if(i){const e="UL"===i.nodeName||"OL"===i.nodeName?Ln:kn;t=V.find(e,i),t=t[t.length-1]}const s=t?j.trigger(t,"hide.bs.tab",{relatedTarget:this._element}):null;if(j.trigger(this._element,"show.bs.tab",{relatedTarget:t}).defaultPrevented||null!==s&&s.defaultPrevented)return;this._activate(this._element,i);const o=()=>{j.trigger(t,"hidden.bs.tab",{relatedTarget:this._element}),j.trigger(this._element,"shown.bs.tab",{relatedTarget:t})};e?this._activate(e,e.parentNode,o):o()}_activate(t,e,i){const n=(!e||"UL"!==e.nodeName&&"OL"!==e.nodeName?V.children(e,kn):V.find(Ln,e))[0],s=i&&n&&n.classList.contains(On),o=()=>this._transitionComplete(t,n,i);n&&s?(n.classList.remove(Cn),this._queueCallback(o,t,!0)):o()}_transitionComplete(t,e,i){if(e){e.classList.remove(Tn);const t=V.findOne(":scope > .dropdown-menu .active",e.parentNode);t&&t.classList.remove(Tn),"tab"===e.getAttribute("role")&&e.setAttribute("aria-selected",!1)}t.classList.add(Tn),"tab"===t.getAttribute("role")&&t.setAttribute("aria-selected",!0),u(t),t.classList.contains(On)&&t.classList.add(Cn);let n=t.parentNode;if(n&&"LI"===n.nodeName&&(n=n.parentNode),n&&n.classList.contains("dropdown-menu")){const e=t.closest(".dropdown");e&&V.find(".dropdown-toggle",e).forEach((t=>t.classList.add(Tn))),t.setAttribute("aria-expanded",!0)}i&&i()}static jQueryInterface(t){return this.each((function(){const e=xn.getOrCreateInstance(this);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}j.on(document,"click.bs.tab.data-api",'[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]',(function(t){["A","AREA"].includes(this.tagName)&&t.preventDefault(),c(this)||xn.getOrCreateInstance(this).show()})),g(xn);const Dn="toast",Sn="hide",Nn="show",In="showing",Pn={animation:"boolean",autohide:"boolean",delay:"number"},jn={animation:!0,autohide:!0,delay:5e3};class Mn extends B{constructor(t,e){super(t),this._config=this._getConfig(e),this._timeout=null,this._hasMouseInteraction=!1,this._hasKeyboardInteraction=!1,this._setListeners()}static get DefaultType(){return Pn}static get Default(){return jn}static get NAME(){return Dn}show(){j.trigger(this._element,"show.bs.toast").defaultPrevented||(this._clearTimeout(),this._config.animation&&this._element.classList.add("fade"),this._element.classList.remove(Sn),u(this._element),this._element.classList.add(Nn),this._element.classList.add(In),this._queueCallback((()=>{this._element.classList.remove(In),j.trigger(this._element,"shown.bs.toast"),this._maybeScheduleHide()}),this._element,this._config.animation))}hide(){this._element.classList.contains(Nn)&&(j.trigger(this._element,"hide.bs.toast").defaultPrevented||(this._element.classList.add(In),this._queueCallback((()=>{this._element.classList.add(Sn),this._element.classList.remove(In),this._element.classList.remove(Nn),j.trigger(this._element,"hidden.bs.toast")}),this._element,this._config.animation)))}dispose(){this._clearTimeout(),this._element.classList.contains(Nn)&&this._element.classList.remove(Nn),super.dispose()}_getConfig(t){return t={...jn,...U.getDataAttributes(this._element),..."object"==typeof t&&t?t:{}},a(Dn,t,this.constructor.DefaultType),t}_maybeScheduleHide(){this._config.autohide&&(this._hasMouseInteraction||this._hasKeyboardInteraction||(this._timeout=setTimeout((()=>{this.hide()}),this._config.delay)))}_onInteraction(t,e){switch(t.type){case"mouseover":case"mouseout":this._hasMouseInteraction=e;break;case"focusin":case"focusout":this._hasKeyboardInteraction=e}if(e)return void this._clearTimeout();const i=t.relatedTarget;this._element===i||this._element.contains(i)||this._maybeScheduleHide()}_setListeners(){j.on(this._element,"mouseover.bs.toast",(t=>this._onInteraction(t,!0))),j.on(this._element,"mouseout.bs.toast",(t=>this._onInteraction(t,!1))),j.on(this._element,"focusin.bs.toast",(t=>this._onInteraction(t,!0))),j.on(this._element,"focusout.bs.toast",(t=>this._onInteraction(t,!1)))}_clearTimeout(){clearTimeout(this._timeout),this._timeout=null}static jQueryInterface(t){return this.each((function(){const e=Mn.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}return R(Mn),g(Mn),{Alert:W,Button:z,Carousel:st,Collapse:pt,Dropdown:hi,Modal:Hi,Offcanvas:Fi,Popover:gn,ScrollSpy:An,Tab:xn,Toast:Mn,Tooltip:un}})); +//# sourceMappingURL=bootstrap.bundle.min.js.map \ No newline at end of file diff --git a/docs/column_api_files/libs/clipboard/clipboard.min.js b/docs/column_api_files/libs/clipboard/clipboard.min.js new file mode 100644 index 0000000..1103f81 --- /dev/null +++ b/docs/column_api_files/libs/clipboard/clipboard.min.js @@ -0,0 +1,7 @@ +/*! + * clipboard.js v2.0.11 + * https://clipboardjs.com/ + * + * Licensed MIT © Zeno Rocha + */ +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.ClipboardJS=e():t.ClipboardJS=e()}(this,function(){return n={686:function(t,e,n){"use strict";n.d(e,{default:function(){return b}});var e=n(279),i=n.n(e),e=n(370),u=n.n(e),e=n(817),r=n.n(e);function c(t){try{return document.execCommand(t)}catch(t){return}}var a=function(t){t=r()(t);return c("cut"),t};function o(t,e){var n,o,t=(n=t,o="rtl"===document.documentElement.getAttribute("dir"),(t=document.createElement("textarea")).style.fontSize="12pt",t.style.border="0",t.style.padding="0",t.style.margin="0",t.style.position="absolute",t.style[o?"right":"left"]="-9999px",o=window.pageYOffset||document.documentElement.scrollTop,t.style.top="".concat(o,"px"),t.setAttribute("readonly",""),t.value=n,t);return e.container.appendChild(t),e=r()(t),c("copy"),t.remove(),e}var f=function(t){var e=1.anchorjs-link,.anchorjs-link:focus{opacity:1}",u.sheet.cssRules.length),u.sheet.insertRule("[data-anchorjs-icon]::after{content:attr(data-anchorjs-icon)}",u.sheet.cssRules.length),u.sheet.insertRule('@font-face{font-family:anchorjs-icons;src:url(data:n/a;base64,AAEAAAALAIAAAwAwT1MvMg8yG2cAAAE4AAAAYGNtYXDp3gC3AAABpAAAAExnYXNwAAAAEAAAA9wAAAAIZ2x5ZlQCcfwAAAH4AAABCGhlYWQHFvHyAAAAvAAAADZoaGVhBnACFwAAAPQAAAAkaG10eASAADEAAAGYAAAADGxvY2EACACEAAAB8AAAAAhtYXhwAAYAVwAAARgAAAAgbmFtZQGOH9cAAAMAAAAAunBvc3QAAwAAAAADvAAAACAAAQAAAAEAAHzE2p9fDzz1AAkEAAAAAADRecUWAAAAANQA6R8AAAAAAoACwAAAAAgAAgAAAAAAAAABAAADwP/AAAACgAAA/9MCrQABAAAAAAAAAAAAAAAAAAAAAwABAAAAAwBVAAIAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAMCQAGQAAUAAAKZAswAAACPApkCzAAAAesAMwEJAAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAAAAAAAAAAAAAQAAg//0DwP/AAEADwABAAAAAAQAAAAAAAAAAAAAAIAAAAAAAAAIAAAACgAAxAAAAAwAAAAMAAAAcAAEAAwAAABwAAwABAAAAHAAEADAAAAAIAAgAAgAAACDpy//9//8AAAAg6cv//f///+EWNwADAAEAAAAAAAAAAAAAAAAACACEAAEAAAAAAAAAAAAAAAAxAAACAAQARAKAAsAAKwBUAAABIiYnJjQ3NzY2MzIWFxYUBwcGIicmNDc3NjQnJiYjIgYHBwYUFxYUBwYGIwciJicmNDc3NjIXFhQHBwYUFxYWMzI2Nzc2NCcmNDc2MhcWFAcHBgYjARQGDAUtLXoWOR8fORYtLTgKGwoKCjgaGg0gEhIgDXoaGgkJBQwHdR85Fi0tOAobCgoKOBoaDSASEiANehoaCQkKGwotLXoWOR8BMwUFLYEuehYXFxYugC44CQkKGwo4GkoaDQ0NDXoaShoKGwoFBe8XFi6ALjgJCQobCjgaShoNDQ0NehpKGgobCgoKLYEuehYXAAAADACWAAEAAAAAAAEACAAAAAEAAAAAAAIAAwAIAAEAAAAAAAMACAAAAAEAAAAAAAQACAAAAAEAAAAAAAUAAQALAAEAAAAAAAYACAAAAAMAAQQJAAEAEAAMAAMAAQQJAAIABgAcAAMAAQQJAAMAEAAMAAMAAQQJAAQAEAAMAAMAAQQJAAUAAgAiAAMAAQQJAAYAEAAMYW5jaG9yanM0MDBAAGEAbgBjAGgAbwByAGoAcwA0ADAAMABAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAH//wAP) format("truetype")}',u.sheet.cssRules.length)),u=document.querySelectorAll("[id]"),t=[].map.call(u,function(A){return A.id}),i=0;i\]./()*\\\n\t\b\v\u00A0]/g,"-").replace(/-{2,}/g,"-").substring(0,this.options.truncate).replace(/^-+|-+$/gm,"").toLowerCase()},this.hasAnchorJSLink=function(A){var e=A.firstChild&&-1<(" "+A.firstChild.className+" ").indexOf(" anchorjs-link "),A=A.lastChild&&-1<(" "+A.lastChild.className+" ").indexOf(" anchorjs-link ");return e||A||!1}}}); +// @license-end \ No newline at end of file diff --git a/docs/column_api_files/libs/quarto-html/popper.min.js b/docs/column_api_files/libs/quarto-html/popper.min.js new file mode 100644 index 0000000..2269d66 --- /dev/null +++ b/docs/column_api_files/libs/quarto-html/popper.min.js @@ -0,0 +1,6 @@ +/** + * @popperjs/core v2.11.4 - MIT License + */ + +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).Popper={})}(this,(function(e){"use strict";function t(e){if(null==e)return window;if("[object Window]"!==e.toString()){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function n(e){return e instanceof t(e).Element||e instanceof Element}function r(e){return e instanceof t(e).HTMLElement||e instanceof HTMLElement}function o(e){return"undefined"!=typeof ShadowRoot&&(e instanceof t(e).ShadowRoot||e instanceof ShadowRoot)}var i=Math.max,a=Math.min,s=Math.round;function f(e,t){void 0===t&&(t=!1);var n=e.getBoundingClientRect(),o=1,i=1;if(r(e)&&t){var a=e.offsetHeight,f=e.offsetWidth;f>0&&(o=s(n.width)/f||1),a>0&&(i=s(n.height)/a||1)}return{width:n.width/o,height:n.height/i,top:n.top/i,right:n.right/o,bottom:n.bottom/i,left:n.left/o,x:n.left/o,y:n.top/i}}function c(e){var n=t(e);return{scrollLeft:n.pageXOffset,scrollTop:n.pageYOffset}}function p(e){return e?(e.nodeName||"").toLowerCase():null}function u(e){return((n(e)?e.ownerDocument:e.document)||window.document).documentElement}function l(e){return f(u(e)).left+c(e).scrollLeft}function d(e){return t(e).getComputedStyle(e)}function h(e){var t=d(e),n=t.overflow,r=t.overflowX,o=t.overflowY;return/auto|scroll|overlay|hidden/.test(n+o+r)}function m(e,n,o){void 0===o&&(o=!1);var i,a,d=r(n),m=r(n)&&function(e){var t=e.getBoundingClientRect(),n=s(t.width)/e.offsetWidth||1,r=s(t.height)/e.offsetHeight||1;return 1!==n||1!==r}(n),v=u(n),g=f(e,m),y={scrollLeft:0,scrollTop:0},b={x:0,y:0};return(d||!d&&!o)&&(("body"!==p(n)||h(v))&&(y=(i=n)!==t(i)&&r(i)?{scrollLeft:(a=i).scrollLeft,scrollTop:a.scrollTop}:c(i)),r(n)?((b=f(n,!0)).x+=n.clientLeft,b.y+=n.clientTop):v&&(b.x=l(v))),{x:g.left+y.scrollLeft-b.x,y:g.top+y.scrollTop-b.y,width:g.width,height:g.height}}function v(e){var t=f(e),n=e.offsetWidth,r=e.offsetHeight;return Math.abs(t.width-n)<=1&&(n=t.width),Math.abs(t.height-r)<=1&&(r=t.height),{x:e.offsetLeft,y:e.offsetTop,width:n,height:r}}function g(e){return"html"===p(e)?e:e.assignedSlot||e.parentNode||(o(e)?e.host:null)||u(e)}function y(e){return["html","body","#document"].indexOf(p(e))>=0?e.ownerDocument.body:r(e)&&h(e)?e:y(g(e))}function b(e,n){var r;void 0===n&&(n=[]);var o=y(e),i=o===(null==(r=e.ownerDocument)?void 0:r.body),a=t(o),s=i?[a].concat(a.visualViewport||[],h(o)?o:[]):o,f=n.concat(s);return i?f:f.concat(b(g(s)))}function x(e){return["table","td","th"].indexOf(p(e))>=0}function w(e){return r(e)&&"fixed"!==d(e).position?e.offsetParent:null}function O(e){for(var n=t(e),i=w(e);i&&x(i)&&"static"===d(i).position;)i=w(i);return i&&("html"===p(i)||"body"===p(i)&&"static"===d(i).position)?n:i||function(e){var t=-1!==navigator.userAgent.toLowerCase().indexOf("firefox");if(-1!==navigator.userAgent.indexOf("Trident")&&r(e)&&"fixed"===d(e).position)return null;var n=g(e);for(o(n)&&(n=n.host);r(n)&&["html","body"].indexOf(p(n))<0;){var i=d(n);if("none"!==i.transform||"none"!==i.perspective||"paint"===i.contain||-1!==["transform","perspective"].indexOf(i.willChange)||t&&"filter"===i.willChange||t&&i.filter&&"none"!==i.filter)return n;n=n.parentNode}return null}(e)||n}var j="top",E="bottom",D="right",A="left",L="auto",P=[j,E,D,A],M="start",k="end",W="viewport",B="popper",H=P.reduce((function(e,t){return e.concat([t+"-"+M,t+"-"+k])}),[]),T=[].concat(P,[L]).reduce((function(e,t){return e.concat([t,t+"-"+M,t+"-"+k])}),[]),R=["beforeRead","read","afterRead","beforeMain","main","afterMain","beforeWrite","write","afterWrite"];function S(e){var t=new Map,n=new Set,r=[];function o(e){n.add(e.name),[].concat(e.requires||[],e.requiresIfExists||[]).forEach((function(e){if(!n.has(e)){var r=t.get(e);r&&o(r)}})),r.push(e)}return e.forEach((function(e){t.set(e.name,e)})),e.forEach((function(e){n.has(e.name)||o(e)})),r}function C(e){return e.split("-")[0]}function q(e,t){var n=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(n&&o(n)){var r=t;do{if(r&&e.isSameNode(r))return!0;r=r.parentNode||r.host}while(r)}return!1}function V(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function N(e,r){return r===W?V(function(e){var n=t(e),r=u(e),o=n.visualViewport,i=r.clientWidth,a=r.clientHeight,s=0,f=0;return o&&(i=o.width,a=o.height,/^((?!chrome|android).)*safari/i.test(navigator.userAgent)||(s=o.offsetLeft,f=o.offsetTop)),{width:i,height:a,x:s+l(e),y:f}}(e)):n(r)?function(e){var t=f(e);return t.top=t.top+e.clientTop,t.left=t.left+e.clientLeft,t.bottom=t.top+e.clientHeight,t.right=t.left+e.clientWidth,t.width=e.clientWidth,t.height=e.clientHeight,t.x=t.left,t.y=t.top,t}(r):V(function(e){var t,n=u(e),r=c(e),o=null==(t=e.ownerDocument)?void 0:t.body,a=i(n.scrollWidth,n.clientWidth,o?o.scrollWidth:0,o?o.clientWidth:0),s=i(n.scrollHeight,n.clientHeight,o?o.scrollHeight:0,o?o.clientHeight:0),f=-r.scrollLeft+l(e),p=-r.scrollTop;return"rtl"===d(o||n).direction&&(f+=i(n.clientWidth,o?o.clientWidth:0)-a),{width:a,height:s,x:f,y:p}}(u(e)))}function I(e,t,o){var s="clippingParents"===t?function(e){var t=b(g(e)),o=["absolute","fixed"].indexOf(d(e).position)>=0&&r(e)?O(e):e;return n(o)?t.filter((function(e){return n(e)&&q(e,o)&&"body"!==p(e)})):[]}(e):[].concat(t),f=[].concat(s,[o]),c=f[0],u=f.reduce((function(t,n){var r=N(e,n);return t.top=i(r.top,t.top),t.right=a(r.right,t.right),t.bottom=a(r.bottom,t.bottom),t.left=i(r.left,t.left),t}),N(e,c));return u.width=u.right-u.left,u.height=u.bottom-u.top,u.x=u.left,u.y=u.top,u}function _(e){return e.split("-")[1]}function F(e){return["top","bottom"].indexOf(e)>=0?"x":"y"}function U(e){var t,n=e.reference,r=e.element,o=e.placement,i=o?C(o):null,a=o?_(o):null,s=n.x+n.width/2-r.width/2,f=n.y+n.height/2-r.height/2;switch(i){case j:t={x:s,y:n.y-r.height};break;case E:t={x:s,y:n.y+n.height};break;case D:t={x:n.x+n.width,y:f};break;case A:t={x:n.x-r.width,y:f};break;default:t={x:n.x,y:n.y}}var c=i?F(i):null;if(null!=c){var p="y"===c?"height":"width";switch(a){case M:t[c]=t[c]-(n[p]/2-r[p]/2);break;case k:t[c]=t[c]+(n[p]/2-r[p]/2)}}return t}function z(e){return Object.assign({},{top:0,right:0,bottom:0,left:0},e)}function X(e,t){return t.reduce((function(t,n){return t[n]=e,t}),{})}function Y(e,t){void 0===t&&(t={});var r=t,o=r.placement,i=void 0===o?e.placement:o,a=r.boundary,s=void 0===a?"clippingParents":a,c=r.rootBoundary,p=void 0===c?W:c,l=r.elementContext,d=void 0===l?B:l,h=r.altBoundary,m=void 0!==h&&h,v=r.padding,g=void 0===v?0:v,y=z("number"!=typeof g?g:X(g,P)),b=d===B?"reference":B,x=e.rects.popper,w=e.elements[m?b:d],O=I(n(w)?w:w.contextElement||u(e.elements.popper),s,p),A=f(e.elements.reference),L=U({reference:A,element:x,strategy:"absolute",placement:i}),M=V(Object.assign({},x,L)),k=d===B?M:A,H={top:O.top-k.top+y.top,bottom:k.bottom-O.bottom+y.bottom,left:O.left-k.left+y.left,right:k.right-O.right+y.right},T=e.modifiersData.offset;if(d===B&&T){var R=T[i];Object.keys(H).forEach((function(e){var t=[D,E].indexOf(e)>=0?1:-1,n=[j,E].indexOf(e)>=0?"y":"x";H[e]+=R[n]*t}))}return H}var G={placement:"bottom",modifiers:[],strategy:"absolute"};function J(){for(var e=arguments.length,t=new Array(e),n=0;n=0?-1:1,i="function"==typeof n?n(Object.assign({},t,{placement:e})):n,a=i[0],s=i[1];return a=a||0,s=(s||0)*o,[A,D].indexOf(r)>=0?{x:s,y:a}:{x:a,y:s}}(n,t.rects,i),e}),{}),s=a[t.placement],f=s.x,c=s.y;null!=t.modifiersData.popperOffsets&&(t.modifiersData.popperOffsets.x+=f,t.modifiersData.popperOffsets.y+=c),t.modifiersData[r]=a}},ie={left:"right",right:"left",bottom:"top",top:"bottom"};function ae(e){return e.replace(/left|right|bottom|top/g,(function(e){return ie[e]}))}var se={start:"end",end:"start"};function fe(e){return e.replace(/start|end/g,(function(e){return se[e]}))}function ce(e,t){void 0===t&&(t={});var n=t,r=n.placement,o=n.boundary,i=n.rootBoundary,a=n.padding,s=n.flipVariations,f=n.allowedAutoPlacements,c=void 0===f?T:f,p=_(r),u=p?s?H:H.filter((function(e){return _(e)===p})):P,l=u.filter((function(e){return c.indexOf(e)>=0}));0===l.length&&(l=u);var d=l.reduce((function(t,n){return t[n]=Y(e,{placement:n,boundary:o,rootBoundary:i,padding:a})[C(n)],t}),{});return Object.keys(d).sort((function(e,t){return d[e]-d[t]}))}var pe={name:"flip",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,r=e.name;if(!t.modifiersData[r]._skip){for(var o=n.mainAxis,i=void 0===o||o,a=n.altAxis,s=void 0===a||a,f=n.fallbackPlacements,c=n.padding,p=n.boundary,u=n.rootBoundary,l=n.altBoundary,d=n.flipVariations,h=void 0===d||d,m=n.allowedAutoPlacements,v=t.options.placement,g=C(v),y=f||(g===v||!h?[ae(v)]:function(e){if(C(e)===L)return[];var t=ae(e);return[fe(e),t,fe(t)]}(v)),b=[v].concat(y).reduce((function(e,n){return e.concat(C(n)===L?ce(t,{placement:n,boundary:p,rootBoundary:u,padding:c,flipVariations:h,allowedAutoPlacements:m}):n)}),[]),x=t.rects.reference,w=t.rects.popper,O=new Map,P=!0,k=b[0],W=0;W=0,S=R?"width":"height",q=Y(t,{placement:B,boundary:p,rootBoundary:u,altBoundary:l,padding:c}),V=R?T?D:A:T?E:j;x[S]>w[S]&&(V=ae(V));var N=ae(V),I=[];if(i&&I.push(q[H]<=0),s&&I.push(q[V]<=0,q[N]<=0),I.every((function(e){return e}))){k=B,P=!1;break}O.set(B,I)}if(P)for(var F=function(e){var t=b.find((function(t){var n=O.get(t);if(n)return n.slice(0,e).every((function(e){return e}))}));if(t)return k=t,"break"},U=h?3:1;U>0;U--){if("break"===F(U))break}t.placement!==k&&(t.modifiersData[r]._skip=!0,t.placement=k,t.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function ue(e,t,n){return i(e,a(t,n))}var le={name:"preventOverflow",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,r=e.name,o=n.mainAxis,s=void 0===o||o,f=n.altAxis,c=void 0!==f&&f,p=n.boundary,u=n.rootBoundary,l=n.altBoundary,d=n.padding,h=n.tether,m=void 0===h||h,g=n.tetherOffset,y=void 0===g?0:g,b=Y(t,{boundary:p,rootBoundary:u,padding:d,altBoundary:l}),x=C(t.placement),w=_(t.placement),L=!w,P=F(x),k="x"===P?"y":"x",W=t.modifiersData.popperOffsets,B=t.rects.reference,H=t.rects.popper,T="function"==typeof y?y(Object.assign({},t.rects,{placement:t.placement})):y,R="number"==typeof T?{mainAxis:T,altAxis:T}:Object.assign({mainAxis:0,altAxis:0},T),S=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,q={x:0,y:0};if(W){if(s){var V,N="y"===P?j:A,I="y"===P?E:D,U="y"===P?"height":"width",z=W[P],X=z+b[N],G=z-b[I],J=m?-H[U]/2:0,K=w===M?B[U]:H[U],Q=w===M?-H[U]:-B[U],Z=t.elements.arrow,$=m&&Z?v(Z):{width:0,height:0},ee=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},te=ee[N],ne=ee[I],re=ue(0,B[U],$[U]),oe=L?B[U]/2-J-re-te-R.mainAxis:K-re-te-R.mainAxis,ie=L?-B[U]/2+J+re+ne+R.mainAxis:Q+re+ne+R.mainAxis,ae=t.elements.arrow&&O(t.elements.arrow),se=ae?"y"===P?ae.clientTop||0:ae.clientLeft||0:0,fe=null!=(V=null==S?void 0:S[P])?V:0,ce=z+ie-fe,pe=ue(m?a(X,z+oe-fe-se):X,z,m?i(G,ce):G);W[P]=pe,q[P]=pe-z}if(c){var le,de="x"===P?j:A,he="x"===P?E:D,me=W[k],ve="y"===k?"height":"width",ge=me+b[de],ye=me-b[he],be=-1!==[j,A].indexOf(x),xe=null!=(le=null==S?void 0:S[k])?le:0,we=be?ge:me-B[ve]-H[ve]-xe+R.altAxis,Oe=be?me+B[ve]+H[ve]-xe-R.altAxis:ye,je=m&&be?function(e,t,n){var r=ue(e,t,n);return r>n?n:r}(we,me,Oe):ue(m?we:ge,me,m?Oe:ye);W[k]=je,q[k]=je-me}t.modifiersData[r]=q}},requiresIfExists:["offset"]};var de={name:"arrow",enabled:!0,phase:"main",fn:function(e){var t,n=e.state,r=e.name,o=e.options,i=n.elements.arrow,a=n.modifiersData.popperOffsets,s=C(n.placement),f=F(s),c=[A,D].indexOf(s)>=0?"height":"width";if(i&&a){var p=function(e,t){return z("number"!=typeof(e="function"==typeof e?e(Object.assign({},t.rects,{placement:t.placement})):e)?e:X(e,P))}(o.padding,n),u=v(i),l="y"===f?j:A,d="y"===f?E:D,h=n.rects.reference[c]+n.rects.reference[f]-a[f]-n.rects.popper[c],m=a[f]-n.rects.reference[f],g=O(i),y=g?"y"===f?g.clientHeight||0:g.clientWidth||0:0,b=h/2-m/2,x=p[l],w=y-u[c]-p[d],L=y/2-u[c]/2+b,M=ue(x,L,w),k=f;n.modifiersData[r]=((t={})[k]=M,t.centerOffset=M-L,t)}},effect:function(e){var t=e.state,n=e.options.element,r=void 0===n?"[data-popper-arrow]":n;null!=r&&("string"!=typeof r||(r=t.elements.popper.querySelector(r)))&&q(t.elements.popper,r)&&(t.elements.arrow=r)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function he(e,t,n){return void 0===n&&(n={x:0,y:0}),{top:e.top-t.height-n.y,right:e.right-t.width+n.x,bottom:e.bottom-t.height+n.y,left:e.left-t.width-n.x}}function me(e){return[j,D,E,A].some((function(t){return e[t]>=0}))}var ve={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(e){var t=e.state,n=e.name,r=t.rects.reference,o=t.rects.popper,i=t.modifiersData.preventOverflow,a=Y(t,{elementContext:"reference"}),s=Y(t,{altBoundary:!0}),f=he(a,r),c=he(s,o,i),p=me(f),u=me(c);t.modifiersData[n]={referenceClippingOffsets:f,popperEscapeOffsets:c,isReferenceHidden:p,hasPopperEscaped:u},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":p,"data-popper-escaped":u})}},ge=K({defaultModifiers:[Z,$,ne,re]}),ye=[Z,$,ne,re,oe,pe,le,de,ve],be=K({defaultModifiers:ye});e.applyStyles=re,e.arrow=de,e.computeStyles=ne,e.createPopper=be,e.createPopperLite=ge,e.defaultModifiers=ye,e.detectOverflow=Y,e.eventListeners=Z,e.flip=pe,e.hide=ve,e.offset=oe,e.popperGenerator=K,e.popperOffsets=$,e.preventOverflow=le,Object.defineProperty(e,"__esModule",{value:!0})})); + diff --git a/docs/column_api_files/libs/quarto-html/quarto-syntax-highlighting.css b/docs/column_api_files/libs/quarto-html/quarto-syntax-highlighting.css new file mode 100644 index 0000000..446b4e0 --- /dev/null +++ b/docs/column_api_files/libs/quarto-html/quarto-syntax-highlighting.css @@ -0,0 +1,189 @@ +/* quarto syntax highlight colors */ +:root { + --quarto-hl-kw-color: #859900; + --quarto-hl-fu-color: #268bd2; + --quarto-hl-va-color: #268bd2; + --quarto-hl-cf-color: #859900; + --quarto-hl-op-color: #859900; + --quarto-hl-bu-color: #cb4b16; + --quarto-hl-ex-color: #268bd2; + --quarto-hl-pp-color: #cb4b16; + --quarto-hl-at-color: #268bd2; + --quarto-hl-ch-color: #2aa198; + --quarto-hl-sc-color: #dc322f; + --quarto-hl-st-color: #2aa198; + --quarto-hl-vs-color: #2aa198; + --quarto-hl-ss-color: #dc322f; + --quarto-hl-im-color: #2aa198; + --quarto-hl-dt-color: #b58900; + --quarto-hl-dv-color: #2aa198; + --quarto-hl-bn-color: #2aa198; + --quarto-hl-fl-color: #2aa198; + --quarto-hl-cn-color: #2aa198; + --quarto-hl-co-color: #93a1a1; + --quarto-hl-do-color: #dc322f; + --quarto-hl-an-color: #268bd2; + --quarto-hl-cv-color: #2aa198; + --quarto-hl-re-color: #268bd2; + --quarto-hl-in-color: #b58900; + --quarto-hl-wa-color: #cb4b16; + --quarto-hl-al-color: #d33682; + --quarto-hl-er-color: #dc322f; +} + +/* other quarto variables */ +:root { + --quarto-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; +} + +pre > code.sourceCode > span { + color: #657b83; + font-style: inherit; +} + +code span { + color: #657b83; + font-style: inherit; +} + +code.sourceCode > span { + color: #657b83; + font-style: inherit; +} + +div.sourceCode, +div.sourceCode pre.sourceCode { + color: #657b83; + font-style: inherit; +} + +code span.kw { + color: #859900; + font-weight: bold; +} + +code span.fu { + color: #268bd2; +} + +code span.va { + color: #268bd2; +} + +code span.cf { + color: #859900; + font-weight: bold; +} + +code span.op { + color: #859900; +} + +code span.bu { + color: #cb4b16; +} + +code span.ex { + color: #268bd2; + font-weight: bold; +} + +code span.pp { + color: #cb4b16; +} + +code span.at { + color: #268bd2; +} + +code span.ch { + color: #2aa198; +} + +code span.sc { + color: #dc322f; +} + +code span.st { + color: #2aa198; +} + +code span.vs { + color: #2aa198; +} + +code span.ss { + color: #dc322f; +} + +code span.im { + color: #2aa198; +} + +code span.dt { + color: #b58900; + font-weight: bold; +} + +code span.dv { + color: #2aa198; +} + +code span.bn { + color: #2aa198; +} + +code span.fl { + color: #2aa198; +} + +code span.cn { + color: #2aa198; + font-weight: bold; +} + +code span.co { + color: #93a1a1; + font-style: italic; +} + +code span.do { + color: #dc322f; +} + +code span.an { + color: #268bd2; +} + +code span.cv { + color: #2aa198; +} + +code span.re { + color: #268bd2; + background-color: #eee8d5; +} + +code span.in { + color: #b58900; +} + +code span.wa { + color: #cb4b16; +} + +code span.al { + color: #d33682; + font-weight: bold; +} + +code span.er { + color: #dc322f; + text-decoration: underline; +} + +.prevent-inlining { + content: " { + // Find any conflicting margin elements and add margins to the + // top to prevent overlap + const marginChildren = window.document.querySelectorAll( + ".column-margin.column-container > * " + ); + + let lastBottom = 0; + for (const marginChild of marginChildren) { + if (marginChild.offsetParent !== null) { + // clear the top margin so we recompute it + marginChild.style.marginTop = null; + const top = marginChild.getBoundingClientRect().top + window.scrollY; + console.log({ + childtop: marginChild.getBoundingClientRect().top, + scroll: window.scrollY, + top, + lastBottom, + }); + if (top < lastBottom) { + const margin = lastBottom - top; + marginChild.style.marginTop = `${margin}px`; + } + const styles = window.getComputedStyle(marginChild); + const marginTop = parseFloat(styles["marginTop"]); + + console.log({ + top, + height: marginChild.getBoundingClientRect().height, + marginTop, + total: top + marginChild.getBoundingClientRect().height + marginTop, + }); + lastBottom = top + marginChild.getBoundingClientRect().height + marginTop; + } + } +}; + +window.document.addEventListener("DOMContentLoaded", function (_event) { + // Recompute the position of margin elements anytime the body size changes + if (window.ResizeObserver) { + const resizeObserver = new window.ResizeObserver( + throttle(layoutMarginEls, 50) + ); + resizeObserver.observe(window.document.body); + } + + const tocEl = window.document.querySelector('nav.toc-active[role="doc-toc"]'); + const sidebarEl = window.document.getElementById("quarto-sidebar"); + const leftTocEl = window.document.getElementById("quarto-sidebar-toc-left"); + const marginSidebarEl = window.document.getElementById( + "quarto-margin-sidebar" + ); + // function to determine whether the element has a previous sibling that is active + const prevSiblingIsActiveLink = (el) => { + const sibling = el.previousElementSibling; + if (sibling && sibling.tagName === "A") { + return sibling.classList.contains("active"); + } else { + return false; + } + }; + + // fire slideEnter for bootstrap tab activations (for htmlwidget resize behavior) + function fireSlideEnter(e) { + const event = window.document.createEvent("Event"); + event.initEvent("slideenter", true, true); + window.document.dispatchEvent(event); + } + const tabs = window.document.querySelectorAll('a[data-bs-toggle="tab"]'); + tabs.forEach((tab) => { + tab.addEventListener("shown.bs.tab", fireSlideEnter); + }); + + // fire slideEnter for tabby tab activations (for htmlwidget resize behavior) + document.addEventListener("tabby", fireSlideEnter, false); + + // Track scrolling and mark TOC links as active + // get table of contents and sidebar (bail if we don't have at least one) + const tocLinks = tocEl + ? [...tocEl.querySelectorAll("a[data-scroll-target]")] + : []; + const makeActive = (link) => tocLinks[link].classList.add("active"); + const removeActive = (link) => tocLinks[link].classList.remove("active"); + const removeAllActive = () => + [...Array(tocLinks.length).keys()].forEach((link) => removeActive(link)); + + // activate the anchor for a section associated with this TOC entry + tocLinks.forEach((link) => { + link.addEventListener("click", () => { + if (link.href.indexOf("#") !== -1) { + const anchor = link.href.split("#")[1]; + const heading = window.document.querySelector( + `[data-anchor-id=${anchor}]` + ); + if (heading) { + // Add the class + heading.classList.add("reveal-anchorjs-link"); + + // function to show the anchor + const handleMouseout = () => { + heading.classList.remove("reveal-anchorjs-link"); + heading.removeEventListener("mouseout", handleMouseout); + }; + + // add a function to clear the anchor when the user mouses out of it + heading.addEventListener("mouseout", handleMouseout); + } + } + }); + }); + + const sections = tocLinks.map((link) => { + const target = link.getAttribute("data-scroll-target"); + if (target.startsWith("#")) { + return window.document.getElementById(decodeURI(`${target.slice(1)}`)); + } else { + return window.document.querySelector(decodeURI(`${target}`)); + } + }); + + const sectionMargin = 200; + let currentActive = 0; + // track whether we've initialized state the first time + let init = false; + + const updateActiveLink = () => { + // The index from bottom to top (e.g. reversed list) + let sectionIndex = -1; + if ( + window.innerHeight + window.pageYOffset >= + window.document.body.offsetHeight + ) { + sectionIndex = 0; + } else { + sectionIndex = [...sections].reverse().findIndex((section) => { + if (section) { + return window.pageYOffset >= section.offsetTop - sectionMargin; + } else { + return false; + } + }); + } + if (sectionIndex > -1) { + const current = sections.length - sectionIndex - 1; + if (current !== currentActive) { + removeAllActive(); + currentActive = current; + makeActive(current); + if (init) { + window.dispatchEvent(sectionChanged); + } + init = true; + } + } + }; + + const inHiddenRegion = (top, bottom, hiddenRegions) => { + for (const region of hiddenRegions) { + if (top <= region.bottom && bottom >= region.top) { + return true; + } + } + return false; + }; + + const categorySelector = "header.quarto-title-block .quarto-category"; + const activateCategories = (href) => { + // Find any categories + // Surround them with a link pointing back to: + // #category=Authoring + try { + const categoryEls = window.document.querySelectorAll(categorySelector); + for (const categoryEl of categoryEls) { + const categoryText = categoryEl.textContent; + if (categoryText) { + const link = `${href}#category=${encodeURIComponent(categoryText)}`; + const linkEl = window.document.createElement("a"); + linkEl.setAttribute("href", link); + for (const child of categoryEl.childNodes) { + linkEl.append(child); + } + categoryEl.appendChild(linkEl); + } + } + } catch { + // Ignore errors + } + }; + function hasTitleCategories() { + return window.document.querySelector(categorySelector) !== null; + } + + function offsetRelativeUrl(url) { + const offset = getMeta("quarto:offset"); + return offset ? offset + url : url; + } + + function offsetAbsoluteUrl(url) { + const offset = getMeta("quarto:offset"); + const baseUrl = new URL(offset, window.location); + + const projRelativeUrl = url.replace(baseUrl, ""); + if (projRelativeUrl.startsWith("/")) { + return projRelativeUrl; + } else { + return "/" + projRelativeUrl; + } + } + + // read a meta tag value + function getMeta(metaName) { + const metas = window.document.getElementsByTagName("meta"); + for (let i = 0; i < metas.length; i++) { + if (metas[i].getAttribute("name") === metaName) { + return metas[i].getAttribute("content"); + } + } + return ""; + } + + async function findAndActivateCategories() { + const currentPagePath = offsetAbsoluteUrl(window.location.href); + const response = await fetch(offsetRelativeUrl("listings.json")); + if (response.status == 200) { + return response.json().then(function (listingPaths) { + const listingHrefs = []; + for (const listingPath of listingPaths) { + const pathWithoutLeadingSlash = listingPath.listing.substring(1); + for (const item of listingPath.items) { + if ( + item === currentPagePath || + item === currentPagePath + "index.html" + ) { + // Resolve this path against the offset to be sure + // we already are using the correct path to the listing + // (this adjusts the listing urls to be rooted against + // whatever root the page is actually running against) + const relative = offsetRelativeUrl(pathWithoutLeadingSlash); + const baseUrl = window.location; + const resolvedPath = new URL(relative, baseUrl); + listingHrefs.push(resolvedPath.pathname); + break; + } + } + } + + // Look up the tree for a nearby linting and use that if we find one + const nearestListing = findNearestParentListing( + offsetAbsoluteUrl(window.location.pathname), + listingHrefs + ); + if (nearestListing) { + activateCategories(nearestListing); + } else { + // See if the referrer is a listing page for this item + const referredRelativePath = offsetAbsoluteUrl(document.referrer); + const referrerListing = listingHrefs.find((listingHref) => { + const isListingReferrer = + listingHref === referredRelativePath || + listingHref === referredRelativePath + "index.html"; + return isListingReferrer; + }); + + if (referrerListing) { + // Try to use the referrer if possible + activateCategories(referrerListing); + } else if (listingHrefs.length > 0) { + // Otherwise, just fall back to the first listing + activateCategories(listingHrefs[0]); + } + } + }); + } + } + if (hasTitleCategories()) { + findAndActivateCategories(); + } + + const findNearestParentListing = (href, listingHrefs) => { + if (!href || !listingHrefs) { + return undefined; + } + // Look up the tree for a nearby linting and use that if we find one + const relativeParts = href.substring(1).split("/"); + while (relativeParts.length > 0) { + const path = relativeParts.join("/"); + for (const listingHref of listingHrefs) { + if (listingHref.startsWith(path)) { + return listingHref; + } + } + relativeParts.pop(); + } + + return undefined; + }; + + const manageSidebarVisiblity = (el, placeholderDescriptor) => { + let isVisible = true; + let elRect; + + return (hiddenRegions) => { + if (el === null) { + return; + } + + // Find the last element of the TOC + const lastChildEl = el.lastElementChild; + + if (lastChildEl) { + // Converts the sidebar to a menu + const convertToMenu = () => { + for (const child of el.children) { + child.style.opacity = 0; + child.style.overflow = "hidden"; + } + + nexttick(() => { + const toggleContainer = window.document.createElement("div"); + toggleContainer.style.width = "100%"; + toggleContainer.classList.add("zindex-over-content"); + toggleContainer.classList.add("quarto-sidebar-toggle"); + toggleContainer.classList.add("headroom-target"); // Marks this to be managed by headeroom + toggleContainer.id = placeholderDescriptor.id; + toggleContainer.style.position = "fixed"; + + const toggleIcon = window.document.createElement("i"); + toggleIcon.classList.add("quarto-sidebar-toggle-icon"); + toggleIcon.classList.add("bi"); + toggleIcon.classList.add("bi-caret-down-fill"); + + const toggleTitle = window.document.createElement("div"); + const titleEl = window.document.body.querySelector( + placeholderDescriptor.titleSelector + ); + if (titleEl) { + toggleTitle.append( + titleEl.textContent || titleEl.innerText, + toggleIcon + ); + } + toggleTitle.classList.add("zindex-over-content"); + toggleTitle.classList.add("quarto-sidebar-toggle-title"); + toggleContainer.append(toggleTitle); + + const toggleContents = window.document.createElement("div"); + toggleContents.classList = el.classList; + toggleContents.classList.add("zindex-over-content"); + toggleContents.classList.add("quarto-sidebar-toggle-contents"); + for (const child of el.children) { + if (child.id === "toc-title") { + continue; + } + + const clone = child.cloneNode(true); + clone.style.opacity = 1; + clone.style.display = null; + toggleContents.append(clone); + } + toggleContents.style.height = "0px"; + const positionToggle = () => { + // position the element (top left of parent, same width as parent) + if (!elRect) { + elRect = el.getBoundingClientRect(); + } + toggleContainer.style.left = `${elRect.left}px`; + toggleContainer.style.top = `${elRect.top}px`; + toggleContainer.style.width = `${elRect.width}px`; + }; + positionToggle(); + + toggleContainer.append(toggleContents); + el.parentElement.prepend(toggleContainer); + + // Process clicks + let tocShowing = false; + // Allow the caller to control whether this is dismissed + // when it is clicked (e.g. sidebar navigation supports + // opening and closing the nav tree, so don't dismiss on click) + const clickEl = placeholderDescriptor.dismissOnClick + ? toggleContainer + : toggleTitle; + + const closeToggle = () => { + if (tocShowing) { + toggleContainer.classList.remove("expanded"); + toggleContents.style.height = "0px"; + tocShowing = false; + } + }; + + // Get rid of any expanded toggle if the user scrolls + window.document.addEventListener( + "scroll", + throttle(() => { + closeToggle(); + }, 50) + ); + + // Handle positioning of the toggle + window.addEventListener( + "resize", + throttle(() => { + elRect = undefined; + positionToggle(); + }, 50) + ); + + window.addEventListener("quarto-hrChanged", () => { + elRect = undefined; + }); + + // Process the click + clickEl.onclick = () => { + if (!tocShowing) { + toggleContainer.classList.add("expanded"); + toggleContents.style.height = null; + tocShowing = true; + } else { + closeToggle(); + } + }; + }); + }; + + // Converts a sidebar from a menu back to a sidebar + const convertToSidebar = () => { + for (const child of el.children) { + child.style.opacity = 1; + child.style.overflow = null; + } + + const placeholderEl = window.document.getElementById( + placeholderDescriptor.id + ); + if (placeholderEl) { + placeholderEl.remove(); + } + + el.classList.remove("rollup"); + }; + + if (isReaderMode()) { + convertToMenu(); + isVisible = false; + } else { + // Find the top and bottom o the element that is being managed + const elTop = el.offsetTop; + const elBottom = + elTop + lastChildEl.offsetTop + lastChildEl.offsetHeight; + + if (!isVisible) { + // If the element is current not visible reveal if there are + // no conflicts with overlay regions + if (!inHiddenRegion(elTop, elBottom, hiddenRegions)) { + convertToSidebar(); + isVisible = true; + } + } else { + // If the element is visible, hide it if it conflicts with overlay regions + // and insert a placeholder toggle (or if we're in reader mode) + if (inHiddenRegion(elTop, elBottom, hiddenRegions)) { + convertToMenu(); + isVisible = false; + } + } + } + } + }; + }; + + const tabEls = document.querySelectorAll('a[data-bs-toggle="tab"]'); + for (const tabEl of tabEls) { + const id = tabEl.getAttribute("data-bs-target"); + if (id) { + const columnEl = document.querySelector( + `${id} .column-margin, .tabset-margin-content` + ); + if (columnEl) + tabEl.addEventListener("shown.bs.tab", function (event) { + const el = event.srcElement; + if (el) { + const visibleCls = `${el.id}-margin-content`; + // walk up until we find a parent tabset + let panelTabsetEl = el.parentElement; + while (panelTabsetEl) { + if (panelTabsetEl.classList.contains("panel-tabset")) { + break; + } + panelTabsetEl = panelTabsetEl.parentElement; + } + + if (panelTabsetEl) { + const prevSib = panelTabsetEl.previousElementSibling; + if ( + prevSib && + prevSib.classList.contains("tabset-margin-container") + ) { + const childNodes = prevSib.querySelectorAll( + ".tabset-margin-content" + ); + for (const childEl of childNodes) { + if (childEl.classList.contains(visibleCls)) { + childEl.classList.remove("collapse"); + } else { + childEl.classList.add("collapse"); + } + } + } + } + } + + layoutMarginEls(); + }); + } + } + + // Manage the visibility of the toc and the sidebar + const marginScrollVisibility = manageSidebarVisiblity(marginSidebarEl, { + id: "quarto-toc-toggle", + titleSelector: "#toc-title", + dismissOnClick: true, + }); + const sidebarScrollVisiblity = manageSidebarVisiblity(sidebarEl, { + id: "quarto-sidebarnav-toggle", + titleSelector: ".title", + dismissOnClick: false, + }); + let tocLeftScrollVisibility; + if (leftTocEl) { + tocLeftScrollVisibility = manageSidebarVisiblity(leftTocEl, { + id: "quarto-lefttoc-toggle", + titleSelector: "#toc-title", + dismissOnClick: true, + }); + } + + // Find the first element that uses formatting in special columns + const conflictingEls = window.document.body.querySelectorAll( + '[class^="column-"], [class*=" column-"], aside, [class*="margin-caption"], [class*=" margin-caption"], [class*="margin-ref"], [class*=" margin-ref"]' + ); + + // Filter all the possibly conflicting elements into ones + // the do conflict on the left or ride side + const arrConflictingEls = Array.from(conflictingEls); + const leftSideConflictEls = arrConflictingEls.filter((el) => { + if (el.tagName === "ASIDE") { + return false; + } + return Array.from(el.classList).find((className) => { + return ( + className !== "column-body" && + className.startsWith("column-") && + !className.endsWith("right") && + !className.endsWith("container") && + className !== "column-margin" + ); + }); + }); + const rightSideConflictEls = arrConflictingEls.filter((el) => { + if (el.tagName === "ASIDE") { + return true; + } + + const hasMarginCaption = Array.from(el.classList).find((className) => { + return className == "margin-caption"; + }); + if (hasMarginCaption) { + return true; + } + + return Array.from(el.classList).find((className) => { + return ( + className !== "column-body" && + !className.endsWith("container") && + className.startsWith("column-") && + !className.endsWith("left") + ); + }); + }); + + const kOverlapPaddingSize = 10; + function toRegions(els) { + return els.map((el) => { + const boundRect = el.getBoundingClientRect(); + const top = + boundRect.top + + document.documentElement.scrollTop - + kOverlapPaddingSize; + return { + top, + bottom: top + el.scrollHeight + 2 * kOverlapPaddingSize, + }; + }); + } + + let hasObserved = false; + const visibleItemObserver = (els) => { + let visibleElements = [...els]; + const intersectionObserver = new IntersectionObserver( + (entries, _observer) => { + entries.forEach((entry) => { + if (entry.isIntersecting) { + if (visibleElements.indexOf(entry.target) === -1) { + visibleElements.push(entry.target); + } + } else { + visibleElements = visibleElements.filter((visibleEntry) => { + return visibleEntry !== entry; + }); + } + }); + + if (!hasObserved) { + hideOverlappedSidebars(); + } + hasObserved = true; + }, + {} + ); + els.forEach((el) => { + intersectionObserver.observe(el); + }); + + return { + getVisibleEntries: () => { + return visibleElements; + }, + }; + }; + + const rightElementObserver = visibleItemObserver(rightSideConflictEls); + const leftElementObserver = visibleItemObserver(leftSideConflictEls); + + const hideOverlappedSidebars = () => { + marginScrollVisibility(toRegions(rightElementObserver.getVisibleEntries())); + sidebarScrollVisiblity(toRegions(leftElementObserver.getVisibleEntries())); + if (tocLeftScrollVisibility) { + tocLeftScrollVisibility( + toRegions(leftElementObserver.getVisibleEntries()) + ); + } + }; + + window.quartoToggleReader = () => { + // Applies a slow class (or removes it) + // to update the transition speed + const slowTransition = (slow) => { + const manageTransition = (id, slow) => { + const el = document.getElementById(id); + if (el) { + if (slow) { + el.classList.add("slow"); + } else { + el.classList.remove("slow"); + } + } + }; + + manageTransition("TOC", slow); + manageTransition("quarto-sidebar", slow); + }; + const readerMode = !isReaderMode(); + setReaderModeValue(readerMode); + + // If we're entering reader mode, slow the transition + if (readerMode) { + slowTransition(readerMode); + } + highlightReaderToggle(readerMode); + hideOverlappedSidebars(); + + // If we're exiting reader mode, restore the non-slow transition + if (!readerMode) { + slowTransition(!readerMode); + } + }; + + const highlightReaderToggle = (readerMode) => { + const els = document.querySelectorAll(".quarto-reader-toggle"); + if (els) { + els.forEach((el) => { + if (readerMode) { + el.classList.add("reader"); + } else { + el.classList.remove("reader"); + } + }); + } + }; + + const setReaderModeValue = (val) => { + if (window.location.protocol !== "file:") { + window.localStorage.setItem("quarto-reader-mode", val); + } else { + localReaderMode = val; + } + }; + + const isReaderMode = () => { + if (window.location.protocol !== "file:") { + return window.localStorage.getItem("quarto-reader-mode") === "true"; + } else { + return localReaderMode; + } + }; + let localReaderMode = null; + + const tocOpenDepthStr = tocEl?.getAttribute("data-toc-expanded"); + const tocOpenDepth = tocOpenDepthStr ? Number(tocOpenDepthStr) : 1; + + // Walk the TOC and collapse/expand nodes + // Nodes are expanded if: + // - they are top level + // - they have children that are 'active' links + // - they are directly below an link that is 'active' + const walk = (el, depth) => { + // Tick depth when we enter a UL + if (el.tagName === "UL") { + depth = depth + 1; + } + + // It this is active link + let isActiveNode = false; + if (el.tagName === "A" && el.classList.contains("active")) { + isActiveNode = true; + } + + // See if there is an active child to this element + let hasActiveChild = false; + for (child of el.children) { + hasActiveChild = walk(child, depth) || hasActiveChild; + } + + // Process the collapse state if this is an UL + if (el.tagName === "UL") { + if (tocOpenDepth === -1 && depth > 1) { + el.classList.add("collapse"); + } else if ( + depth <= tocOpenDepth || + hasActiveChild || + prevSiblingIsActiveLink(el) + ) { + el.classList.remove("collapse"); + } else { + el.classList.add("collapse"); + } + + // untick depth when we leave a UL + depth = depth - 1; + } + return hasActiveChild || isActiveNode; + }; + + // walk the TOC and expand / collapse any items that should be shown + + if (tocEl) { + walk(tocEl, 0); + updateActiveLink(); + } + + // Throttle the scroll event and walk peridiocally + window.document.addEventListener( + "scroll", + throttle(() => { + if (tocEl) { + updateActiveLink(); + walk(tocEl, 0); + } + if (!isReaderMode()) { + hideOverlappedSidebars(); + } + }, 5) + ); + window.addEventListener( + "resize", + throttle(() => { + if (!isReaderMode()) { + hideOverlappedSidebars(); + } + }, 10) + ); + hideOverlappedSidebars(); + highlightReaderToggle(isReaderMode()); +}); + +// grouped tabsets +window.addEventListener("pageshow", (_event) => { + function getTabSettings() { + const data = localStorage.getItem("quarto-persistent-tabsets-data"); + if (!data) { + localStorage.setItem("quarto-persistent-tabsets-data", "{}"); + return {}; + } + if (data) { + return JSON.parse(data); + } + } + + function setTabSettings(data) { + localStorage.setItem( + "quarto-persistent-tabsets-data", + JSON.stringify(data) + ); + } + + function setTabState(groupName, groupValue) { + const data = getTabSettings(); + data[groupName] = groupValue; + setTabSettings(data); + } + + function toggleTab(tab, active) { + const tabPanelId = tab.getAttribute("aria-controls"); + const tabPanel = document.getElementById(tabPanelId); + if (active) { + tab.classList.add("active"); + tabPanel.classList.add("active"); + } else { + tab.classList.remove("active"); + tabPanel.classList.remove("active"); + } + } + + function toggleAll(selectedGroup, selectorsToSync) { + for (const [thisGroup, tabs] of Object.entries(selectorsToSync)) { + const active = selectedGroup === thisGroup; + for (const tab of tabs) { + toggleTab(tab, active); + } + } + } + + function findSelectorsToSyncByLanguage() { + const result = {}; + const tabs = Array.from( + document.querySelectorAll(`div[data-group] a[id^='tabset-']`) + ); + for (const item of tabs) { + const div = item.parentElement.parentElement.parentElement; + const group = div.getAttribute("data-group"); + if (!result[group]) { + result[group] = {}; + } + const selectorsToSync = result[group]; + const value = item.innerHTML; + if (!selectorsToSync[value]) { + selectorsToSync[value] = []; + } + selectorsToSync[value].push(item); + } + return result; + } + + function setupSelectorSync() { + const selectorsToSync = findSelectorsToSyncByLanguage(); + Object.entries(selectorsToSync).forEach(([group, tabSetsByValue]) => { + Object.entries(tabSetsByValue).forEach(([value, items]) => { + items.forEach((item) => { + item.addEventListener("click", (_event) => { + setTabState(group, value); + toggleAll(value, selectorsToSync[group]); + }); + }); + }); + }); + return selectorsToSync; + } + + const selectorsToSync = setupSelectorSync(); + for (const [group, selectedName] of Object.entries(getTabSettings())) { + const selectors = selectorsToSync[group]; + // it's possible that stale state gives us empty selections, so we explicitly check here. + if (selectors) { + toggleAll(selectedName, selectors); + } + } +}); + +function throttle(func, wait) { + let waiting = false; + return function () { + if (!waiting) { + func.apply(this, arguments); + waiting = true; + setTimeout(function () { + waiting = false; + }, wait); + } + }; +} + +function nexttick(func) { + return setTimeout(func, 0); +} diff --git a/docs/column_api_files/libs/quarto-html/tippy.css b/docs/column_api_files/libs/quarto-html/tippy.css new file mode 100644 index 0000000..e6ae635 --- /dev/null +++ b/docs/column_api_files/libs/quarto-html/tippy.css @@ -0,0 +1 @@ +.tippy-box[data-animation=fade][data-state=hidden]{opacity:0}[data-tippy-root]{max-width:calc(100vw - 10px)}.tippy-box{position:relative;background-color:#333;color:#fff;border-radius:4px;font-size:14px;line-height:1.4;white-space:normal;outline:0;transition-property:transform,visibility,opacity}.tippy-box[data-placement^=top]>.tippy-arrow{bottom:0}.tippy-box[data-placement^=top]>.tippy-arrow:before{bottom:-7px;left:0;border-width:8px 8px 0;border-top-color:initial;transform-origin:center top}.tippy-box[data-placement^=bottom]>.tippy-arrow{top:0}.tippy-box[data-placement^=bottom]>.tippy-arrow:before{top:-7px;left:0;border-width:0 8px 8px;border-bottom-color:initial;transform-origin:center bottom}.tippy-box[data-placement^=left]>.tippy-arrow{right:0}.tippy-box[data-placement^=left]>.tippy-arrow:before{border-width:8px 0 8px 8px;border-left-color:initial;right:-7px;transform-origin:center left}.tippy-box[data-placement^=right]>.tippy-arrow{left:0}.tippy-box[data-placement^=right]>.tippy-arrow:before{left:-7px;border-width:8px 8px 8px 0;border-right-color:initial;transform-origin:center right}.tippy-box[data-inertia][data-state=visible]{transition-timing-function:cubic-bezier(.54,1.5,.38,1.11)}.tippy-arrow{width:16px;height:16px;color:#333}.tippy-arrow:before{content:"";position:absolute;border-color:transparent;border-style:solid}.tippy-content{position:relative;padding:5px 9px;z-index:1} \ No newline at end of file diff --git a/docs/column_api_files/libs/quarto-html/tippy.umd.min.js b/docs/column_api_files/libs/quarto-html/tippy.umd.min.js new file mode 100644 index 0000000..ca292be --- /dev/null +++ b/docs/column_api_files/libs/quarto-html/tippy.umd.min.js @@ -0,0 +1,2 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("@popperjs/core")):"function"==typeof define&&define.amd?define(["@popperjs/core"],t):(e=e||self).tippy=t(e.Popper)}(this,(function(e){"use strict";var t={passive:!0,capture:!0},n=function(){return document.body};function r(e,t,n){if(Array.isArray(e)){var r=e[t];return null==r?Array.isArray(n)?n[t]:n:r}return e}function o(e,t){var n={}.toString.call(e);return 0===n.indexOf("[object")&&n.indexOf(t+"]")>-1}function i(e,t){return"function"==typeof e?e.apply(void 0,t):e}function a(e,t){return 0===t?e:function(r){clearTimeout(n),n=setTimeout((function(){e(r)}),t)};var n}function s(e,t){var n=Object.assign({},e);return t.forEach((function(e){delete n[e]})),n}function u(e){return[].concat(e)}function c(e,t){-1===e.indexOf(t)&&e.push(t)}function p(e){return e.split("-")[0]}function f(e){return[].slice.call(e)}function l(e){return Object.keys(e).reduce((function(t,n){return void 0!==e[n]&&(t[n]=e[n]),t}),{})}function d(){return document.createElement("div")}function v(e){return["Element","Fragment"].some((function(t){return o(e,t)}))}function m(e){return o(e,"MouseEvent")}function g(e){return!(!e||!e._tippy||e._tippy.reference!==e)}function h(e){return v(e)?[e]:function(e){return o(e,"NodeList")}(e)?f(e):Array.isArray(e)?e:f(document.querySelectorAll(e))}function b(e,t){e.forEach((function(e){e&&(e.style.transitionDuration=t+"ms")}))}function y(e,t){e.forEach((function(e){e&&e.setAttribute("data-state",t)}))}function w(e){var t,n=u(e)[0];return null!=n&&null!=(t=n.ownerDocument)&&t.body?n.ownerDocument:document}function E(e,t,n){var r=t+"EventListener";["transitionend","webkitTransitionEnd"].forEach((function(t){e[r](t,n)}))}function O(e,t){for(var n=t;n;){var r;if(e.contains(n))return!0;n=null==n.getRootNode||null==(r=n.getRootNode())?void 0:r.host}return!1}var x={isTouch:!1},C=0;function T(){x.isTouch||(x.isTouch=!0,window.performance&&document.addEventListener("mousemove",A))}function A(){var e=performance.now();e-C<20&&(x.isTouch=!1,document.removeEventListener("mousemove",A)),C=e}function L(){var e=document.activeElement;if(g(e)){var t=e._tippy;e.blur&&!t.state.isVisible&&e.blur()}}var D=!!("undefined"!=typeof window&&"undefined"!=typeof document)&&!!window.msCrypto,R=Object.assign({appendTo:n,aria:{content:"auto",expanded:"auto"},delay:0,duration:[300,250],getReferenceClientRect:null,hideOnClick:!0,ignoreAttributes:!1,interactive:!1,interactiveBorder:2,interactiveDebounce:0,moveTransition:"",offset:[0,10],onAfterUpdate:function(){},onBeforeUpdate:function(){},onCreate:function(){},onDestroy:function(){},onHidden:function(){},onHide:function(){},onMount:function(){},onShow:function(){},onShown:function(){},onTrigger:function(){},onUntrigger:function(){},onClickOutside:function(){},placement:"top",plugins:[],popperOptions:{},render:null,showOnCreate:!1,touch:!0,trigger:"mouseenter focus",triggerTarget:null},{animateFill:!1,followCursor:!1,inlinePositioning:!1,sticky:!1},{allowHTML:!1,animation:"fade",arrow:!0,content:"",inertia:!1,maxWidth:350,role:"tooltip",theme:"",zIndex:9999}),k=Object.keys(R);function P(e){var t=(e.plugins||[]).reduce((function(t,n){var r,o=n.name,i=n.defaultValue;o&&(t[o]=void 0!==e[o]?e[o]:null!=(r=R[o])?r:i);return t}),{});return Object.assign({},e,t)}function j(e,t){var n=Object.assign({},t,{content:i(t.content,[e])},t.ignoreAttributes?{}:function(e,t){return(t?Object.keys(P(Object.assign({},R,{plugins:t}))):k).reduce((function(t,n){var r=(e.getAttribute("data-tippy-"+n)||"").trim();if(!r)return t;if("content"===n)t[n]=r;else try{t[n]=JSON.parse(r)}catch(e){t[n]=r}return t}),{})}(e,t.plugins));return n.aria=Object.assign({},R.aria,n.aria),n.aria={expanded:"auto"===n.aria.expanded?t.interactive:n.aria.expanded,content:"auto"===n.aria.content?t.interactive?null:"describedby":n.aria.content},n}function M(e,t){e.innerHTML=t}function V(e){var t=d();return!0===e?t.className="tippy-arrow":(t.className="tippy-svg-arrow",v(e)?t.appendChild(e):M(t,e)),t}function I(e,t){v(t.content)?(M(e,""),e.appendChild(t.content)):"function"!=typeof t.content&&(t.allowHTML?M(e,t.content):e.textContent=t.content)}function S(e){var t=e.firstElementChild,n=f(t.children);return{box:t,content:n.find((function(e){return e.classList.contains("tippy-content")})),arrow:n.find((function(e){return e.classList.contains("tippy-arrow")||e.classList.contains("tippy-svg-arrow")})),backdrop:n.find((function(e){return e.classList.contains("tippy-backdrop")}))}}function N(e){var t=d(),n=d();n.className="tippy-box",n.setAttribute("data-state","hidden"),n.setAttribute("tabindex","-1");var r=d();function o(n,r){var o=S(t),i=o.box,a=o.content,s=o.arrow;r.theme?i.setAttribute("data-theme",r.theme):i.removeAttribute("data-theme"),"string"==typeof r.animation?i.setAttribute("data-animation",r.animation):i.removeAttribute("data-animation"),r.inertia?i.setAttribute("data-inertia",""):i.removeAttribute("data-inertia"),i.style.maxWidth="number"==typeof r.maxWidth?r.maxWidth+"px":r.maxWidth,r.role?i.setAttribute("role",r.role):i.removeAttribute("role"),n.content===r.content&&n.allowHTML===r.allowHTML||I(a,e.props),r.arrow?s?n.arrow!==r.arrow&&(i.removeChild(s),i.appendChild(V(r.arrow))):i.appendChild(V(r.arrow)):s&&i.removeChild(s)}return r.className="tippy-content",r.setAttribute("data-state","hidden"),I(r,e.props),t.appendChild(n),n.appendChild(r),o(e.props,e.props),{popper:t,onUpdate:o}}N.$$tippy=!0;var B=1,H=[],U=[];function _(o,s){var v,g,h,C,T,A,L,k,M=j(o,Object.assign({},R,P(l(s)))),V=!1,I=!1,N=!1,_=!1,F=[],W=a(we,M.interactiveDebounce),X=B++,Y=(k=M.plugins).filter((function(e,t){return k.indexOf(e)===t})),$={id:X,reference:o,popper:d(),popperInstance:null,props:M,state:{isEnabled:!0,isVisible:!1,isDestroyed:!1,isMounted:!1,isShown:!1},plugins:Y,clearDelayTimeouts:function(){clearTimeout(v),clearTimeout(g),cancelAnimationFrame(h)},setProps:function(e){if($.state.isDestroyed)return;ae("onBeforeUpdate",[$,e]),be();var t=$.props,n=j(o,Object.assign({},t,l(e),{ignoreAttributes:!0}));$.props=n,he(),t.interactiveDebounce!==n.interactiveDebounce&&(ce(),W=a(we,n.interactiveDebounce));t.triggerTarget&&!n.triggerTarget?u(t.triggerTarget).forEach((function(e){e.removeAttribute("aria-expanded")})):n.triggerTarget&&o.removeAttribute("aria-expanded");ue(),ie(),J&&J(t,n);$.popperInstance&&(Ce(),Ae().forEach((function(e){requestAnimationFrame(e._tippy.popperInstance.forceUpdate)})));ae("onAfterUpdate",[$,e])},setContent:function(e){$.setProps({content:e})},show:function(){var e=$.state.isVisible,t=$.state.isDestroyed,o=!$.state.isEnabled,a=x.isTouch&&!$.props.touch,s=r($.props.duration,0,R.duration);if(e||t||o||a)return;if(te().hasAttribute("disabled"))return;if(ae("onShow",[$],!1),!1===$.props.onShow($))return;$.state.isVisible=!0,ee()&&(z.style.visibility="visible");ie(),de(),$.state.isMounted||(z.style.transition="none");if(ee()){var u=re(),p=u.box,f=u.content;b([p,f],0)}A=function(){var e;if($.state.isVisible&&!_){if(_=!0,z.offsetHeight,z.style.transition=$.props.moveTransition,ee()&&$.props.animation){var t=re(),n=t.box,r=t.content;b([n,r],s),y([n,r],"visible")}se(),ue(),c(U,$),null==(e=$.popperInstance)||e.forceUpdate(),ae("onMount",[$]),$.props.animation&&ee()&&function(e,t){me(e,t)}(s,(function(){$.state.isShown=!0,ae("onShown",[$])}))}},function(){var e,t=$.props.appendTo,r=te();e=$.props.interactive&&t===n||"parent"===t?r.parentNode:i(t,[r]);e.contains(z)||e.appendChild(z);$.state.isMounted=!0,Ce()}()},hide:function(){var e=!$.state.isVisible,t=$.state.isDestroyed,n=!$.state.isEnabled,o=r($.props.duration,1,R.duration);if(e||t||n)return;if(ae("onHide",[$],!1),!1===$.props.onHide($))return;$.state.isVisible=!1,$.state.isShown=!1,_=!1,V=!1,ee()&&(z.style.visibility="hidden");if(ce(),ve(),ie(!0),ee()){var i=re(),a=i.box,s=i.content;$.props.animation&&(b([a,s],o),y([a,s],"hidden"))}se(),ue(),$.props.animation?ee()&&function(e,t){me(e,(function(){!$.state.isVisible&&z.parentNode&&z.parentNode.contains(z)&&t()}))}(o,$.unmount):$.unmount()},hideWithInteractivity:function(e){ne().addEventListener("mousemove",W),c(H,W),W(e)},enable:function(){$.state.isEnabled=!0},disable:function(){$.hide(),$.state.isEnabled=!1},unmount:function(){$.state.isVisible&&$.hide();if(!$.state.isMounted)return;Te(),Ae().forEach((function(e){e._tippy.unmount()})),z.parentNode&&z.parentNode.removeChild(z);U=U.filter((function(e){return e!==$})),$.state.isMounted=!1,ae("onHidden",[$])},destroy:function(){if($.state.isDestroyed)return;$.clearDelayTimeouts(),$.unmount(),be(),delete o._tippy,$.state.isDestroyed=!0,ae("onDestroy",[$])}};if(!M.render)return $;var q=M.render($),z=q.popper,J=q.onUpdate;z.setAttribute("data-tippy-root",""),z.id="tippy-"+$.id,$.popper=z,o._tippy=$,z._tippy=$;var G=Y.map((function(e){return e.fn($)})),K=o.hasAttribute("aria-expanded");return he(),ue(),ie(),ae("onCreate",[$]),M.showOnCreate&&Le(),z.addEventListener("mouseenter",(function(){$.props.interactive&&$.state.isVisible&&$.clearDelayTimeouts()})),z.addEventListener("mouseleave",(function(){$.props.interactive&&$.props.trigger.indexOf("mouseenter")>=0&&ne().addEventListener("mousemove",W)})),$;function Q(){var e=$.props.touch;return Array.isArray(e)?e:[e,0]}function Z(){return"hold"===Q()[0]}function ee(){var e;return!(null==(e=$.props.render)||!e.$$tippy)}function te(){return L||o}function ne(){var e=te().parentNode;return e?w(e):document}function re(){return S(z)}function oe(e){return $.state.isMounted&&!$.state.isVisible||x.isTouch||C&&"focus"===C.type?0:r($.props.delay,e?0:1,R.delay)}function ie(e){void 0===e&&(e=!1),z.style.pointerEvents=$.props.interactive&&!e?"":"none",z.style.zIndex=""+$.props.zIndex}function ae(e,t,n){var r;(void 0===n&&(n=!0),G.forEach((function(n){n[e]&&n[e].apply(n,t)})),n)&&(r=$.props)[e].apply(r,t)}function se(){var e=$.props.aria;if(e.content){var t="aria-"+e.content,n=z.id;u($.props.triggerTarget||o).forEach((function(e){var r=e.getAttribute(t);if($.state.isVisible)e.setAttribute(t,r?r+" "+n:n);else{var o=r&&r.replace(n,"").trim();o?e.setAttribute(t,o):e.removeAttribute(t)}}))}}function ue(){!K&&$.props.aria.expanded&&u($.props.triggerTarget||o).forEach((function(e){$.props.interactive?e.setAttribute("aria-expanded",$.state.isVisible&&e===te()?"true":"false"):e.removeAttribute("aria-expanded")}))}function ce(){ne().removeEventListener("mousemove",W),H=H.filter((function(e){return e!==W}))}function pe(e){if(!x.isTouch||!N&&"mousedown"!==e.type){var t=e.composedPath&&e.composedPath()[0]||e.target;if(!$.props.interactive||!O(z,t)){if(u($.props.triggerTarget||o).some((function(e){return O(e,t)}))){if(x.isTouch)return;if($.state.isVisible&&$.props.trigger.indexOf("click")>=0)return}else ae("onClickOutside",[$,e]);!0===$.props.hideOnClick&&($.clearDelayTimeouts(),$.hide(),I=!0,setTimeout((function(){I=!1})),$.state.isMounted||ve())}}}function fe(){N=!0}function le(){N=!1}function de(){var e=ne();e.addEventListener("mousedown",pe,!0),e.addEventListener("touchend",pe,t),e.addEventListener("touchstart",le,t),e.addEventListener("touchmove",fe,t)}function ve(){var e=ne();e.removeEventListener("mousedown",pe,!0),e.removeEventListener("touchend",pe,t),e.removeEventListener("touchstart",le,t),e.removeEventListener("touchmove",fe,t)}function me(e,t){var n=re().box;function r(e){e.target===n&&(E(n,"remove",r),t())}if(0===e)return t();E(n,"remove",T),E(n,"add",r),T=r}function ge(e,t,n){void 0===n&&(n=!1),u($.props.triggerTarget||o).forEach((function(r){r.addEventListener(e,t,n),F.push({node:r,eventType:e,handler:t,options:n})}))}function he(){var e;Z()&&(ge("touchstart",ye,{passive:!0}),ge("touchend",Ee,{passive:!0})),(e=$.props.trigger,e.split(/\s+/).filter(Boolean)).forEach((function(e){if("manual"!==e)switch(ge(e,ye),e){case"mouseenter":ge("mouseleave",Ee);break;case"focus":ge(D?"focusout":"blur",Oe);break;case"focusin":ge("focusout",Oe)}}))}function be(){F.forEach((function(e){var t=e.node,n=e.eventType,r=e.handler,o=e.options;t.removeEventListener(n,r,o)})),F=[]}function ye(e){var t,n=!1;if($.state.isEnabled&&!xe(e)&&!I){var r="focus"===(null==(t=C)?void 0:t.type);C=e,L=e.currentTarget,ue(),!$.state.isVisible&&m(e)&&H.forEach((function(t){return t(e)})),"click"===e.type&&($.props.trigger.indexOf("mouseenter")<0||V)&&!1!==$.props.hideOnClick&&$.state.isVisible?n=!0:Le(e),"click"===e.type&&(V=!n),n&&!r&&De(e)}}function we(e){var t=e.target,n=te().contains(t)||z.contains(t);"mousemove"===e.type&&n||function(e,t){var n=t.clientX,r=t.clientY;return e.every((function(e){var t=e.popperRect,o=e.popperState,i=e.props.interactiveBorder,a=p(o.placement),s=o.modifiersData.offset;if(!s)return!0;var u="bottom"===a?s.top.y:0,c="top"===a?s.bottom.y:0,f="right"===a?s.left.x:0,l="left"===a?s.right.x:0,d=t.top-r+u>i,v=r-t.bottom-c>i,m=t.left-n+f>i,g=n-t.right-l>i;return d||v||m||g}))}(Ae().concat(z).map((function(e){var t,n=null==(t=e._tippy.popperInstance)?void 0:t.state;return n?{popperRect:e.getBoundingClientRect(),popperState:n,props:M}:null})).filter(Boolean),e)&&(ce(),De(e))}function Ee(e){xe(e)||$.props.trigger.indexOf("click")>=0&&V||($.props.interactive?$.hideWithInteractivity(e):De(e))}function Oe(e){$.props.trigger.indexOf("focusin")<0&&e.target!==te()||$.props.interactive&&e.relatedTarget&&z.contains(e.relatedTarget)||De(e)}function xe(e){return!!x.isTouch&&Z()!==e.type.indexOf("touch")>=0}function Ce(){Te();var t=$.props,n=t.popperOptions,r=t.placement,i=t.offset,a=t.getReferenceClientRect,s=t.moveTransition,u=ee()?S(z).arrow:null,c=a?{getBoundingClientRect:a,contextElement:a.contextElement||te()}:o,p=[{name:"offset",options:{offset:i}},{name:"preventOverflow",options:{padding:{top:2,bottom:2,left:5,right:5}}},{name:"flip",options:{padding:5}},{name:"computeStyles",options:{adaptive:!s}},{name:"$$tippy",enabled:!0,phase:"beforeWrite",requires:["computeStyles"],fn:function(e){var t=e.state;if(ee()){var n=re().box;["placement","reference-hidden","escaped"].forEach((function(e){"placement"===e?n.setAttribute("data-placement",t.placement):t.attributes.popper["data-popper-"+e]?n.setAttribute("data-"+e,""):n.removeAttribute("data-"+e)})),t.attributes.popper={}}}}];ee()&&u&&p.push({name:"arrow",options:{element:u,padding:3}}),p.push.apply(p,(null==n?void 0:n.modifiers)||[]),$.popperInstance=e.createPopper(c,z,Object.assign({},n,{placement:r,onFirstUpdate:A,modifiers:p}))}function Te(){$.popperInstance&&($.popperInstance.destroy(),$.popperInstance=null)}function Ae(){return f(z.querySelectorAll("[data-tippy-root]"))}function Le(e){$.clearDelayTimeouts(),e&&ae("onTrigger",[$,e]),de();var t=oe(!0),n=Q(),r=n[0],o=n[1];x.isTouch&&"hold"===r&&o&&(t=o),t?v=setTimeout((function(){$.show()}),t):$.show()}function De(e){if($.clearDelayTimeouts(),ae("onUntrigger",[$,e]),$.state.isVisible){if(!($.props.trigger.indexOf("mouseenter")>=0&&$.props.trigger.indexOf("click")>=0&&["mouseleave","mousemove"].indexOf(e.type)>=0&&V)){var t=oe(!1);t?g=setTimeout((function(){$.state.isVisible&&$.hide()}),t):h=requestAnimationFrame((function(){$.hide()}))}}else ve()}}function F(e,n){void 0===n&&(n={});var r=R.plugins.concat(n.plugins||[]);document.addEventListener("touchstart",T,t),window.addEventListener("blur",L);var o=Object.assign({},n,{plugins:r}),i=h(e).reduce((function(e,t){var n=t&&_(t,o);return n&&e.push(n),e}),[]);return v(e)?i[0]:i}F.defaultProps=R,F.setDefaultProps=function(e){Object.keys(e).forEach((function(t){R[t]=e[t]}))},F.currentInput=x;var W=Object.assign({},e.applyStyles,{effect:function(e){var t=e.state,n={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};Object.assign(t.elements.popper.style,n.popper),t.styles=n,t.elements.arrow&&Object.assign(t.elements.arrow.style,n.arrow)}}),X={mouseover:"mouseenter",focusin:"focus",click:"click"};var Y={name:"animateFill",defaultValue:!1,fn:function(e){var t;if(null==(t=e.props.render)||!t.$$tippy)return{};var n=S(e.popper),r=n.box,o=n.content,i=e.props.animateFill?function(){var e=d();return e.className="tippy-backdrop",y([e],"hidden"),e}():null;return{onCreate:function(){i&&(r.insertBefore(i,r.firstElementChild),r.setAttribute("data-animatefill",""),r.style.overflow="hidden",e.setProps({arrow:!1,animation:"shift-away"}))},onMount:function(){if(i){var e=r.style.transitionDuration,t=Number(e.replace("ms",""));o.style.transitionDelay=Math.round(t/10)+"ms",i.style.transitionDuration=e,y([i],"visible")}},onShow:function(){i&&(i.style.transitionDuration="0ms")},onHide:function(){i&&y([i],"hidden")}}}};var $={clientX:0,clientY:0},q=[];function z(e){var t=e.clientX,n=e.clientY;$={clientX:t,clientY:n}}var J={name:"followCursor",defaultValue:!1,fn:function(e){var t=e.reference,n=w(e.props.triggerTarget||t),r=!1,o=!1,i=!0,a=e.props;function s(){return"initial"===e.props.followCursor&&e.state.isVisible}function u(){n.addEventListener("mousemove",f)}function c(){n.removeEventListener("mousemove",f)}function p(){r=!0,e.setProps({getReferenceClientRect:null}),r=!1}function f(n){var r=!n.target||t.contains(n.target),o=e.props.followCursor,i=n.clientX,a=n.clientY,s=t.getBoundingClientRect(),u=i-s.left,c=a-s.top;!r&&e.props.interactive||e.setProps({getReferenceClientRect:function(){var e=t.getBoundingClientRect(),n=i,r=a;"initial"===o&&(n=e.left+u,r=e.top+c);var s="horizontal"===o?e.top:r,p="vertical"===o?e.right:n,f="horizontal"===o?e.bottom:r,l="vertical"===o?e.left:n;return{width:p-l,height:f-s,top:s,right:p,bottom:f,left:l}}})}function l(){e.props.followCursor&&(q.push({instance:e,doc:n}),function(e){e.addEventListener("mousemove",z)}(n))}function d(){0===(q=q.filter((function(t){return t.instance!==e}))).filter((function(e){return e.doc===n})).length&&function(e){e.removeEventListener("mousemove",z)}(n)}return{onCreate:l,onDestroy:d,onBeforeUpdate:function(){a=e.props},onAfterUpdate:function(t,n){var i=n.followCursor;r||void 0!==i&&a.followCursor!==i&&(d(),i?(l(),!e.state.isMounted||o||s()||u()):(c(),p()))},onMount:function(){e.props.followCursor&&!o&&(i&&(f($),i=!1),s()||u())},onTrigger:function(e,t){m(t)&&($={clientX:t.clientX,clientY:t.clientY}),o="focus"===t.type},onHidden:function(){e.props.followCursor&&(p(),c(),i=!0)}}}};var G={name:"inlinePositioning",defaultValue:!1,fn:function(e){var t,n=e.reference;var r=-1,o=!1,i=[],a={name:"tippyInlinePositioning",enabled:!0,phase:"afterWrite",fn:function(o){var a=o.state;e.props.inlinePositioning&&(-1!==i.indexOf(a.placement)&&(i=[]),t!==a.placement&&-1===i.indexOf(a.placement)&&(i.push(a.placement),e.setProps({getReferenceClientRect:function(){return function(e){return function(e,t,n,r){if(n.length<2||null===e)return t;if(2===n.length&&r>=0&&n[0].left>n[1].right)return n[r]||t;switch(e){case"top":case"bottom":var o=n[0],i=n[n.length-1],a="top"===e,s=o.top,u=i.bottom,c=a?o.left:i.left,p=a?o.right:i.right;return{top:s,bottom:u,left:c,right:p,width:p-c,height:u-s};case"left":case"right":var f=Math.min.apply(Math,n.map((function(e){return e.left}))),l=Math.max.apply(Math,n.map((function(e){return e.right}))),d=n.filter((function(t){return"left"===e?t.left===f:t.right===l})),v=d[0].top,m=d[d.length-1].bottom;return{top:v,bottom:m,left:f,right:l,width:l-f,height:m-v};default:return t}}(p(e),n.getBoundingClientRect(),f(n.getClientRects()),r)}(a.placement)}})),t=a.placement)}};function s(){var t;o||(t=function(e,t){var n;return{popperOptions:Object.assign({},e.popperOptions,{modifiers:[].concat(((null==(n=e.popperOptions)?void 0:n.modifiers)||[]).filter((function(e){return e.name!==t.name})),[t])})}}(e.props,a),o=!0,e.setProps(t),o=!1)}return{onCreate:s,onAfterUpdate:s,onTrigger:function(t,n){if(m(n)){var o=f(e.reference.getClientRects()),i=o.find((function(e){return e.left-2<=n.clientX&&e.right+2>=n.clientX&&e.top-2<=n.clientY&&e.bottom+2>=n.clientY})),a=o.indexOf(i);r=a>-1?a:r}},onHidden:function(){r=-1}}}};var K={name:"sticky",defaultValue:!1,fn:function(e){var t=e.reference,n=e.popper;function r(t){return!0===e.props.sticky||e.props.sticky===t}var o=null,i=null;function a(){var s=r("reference")?(e.popperInstance?e.popperInstance.state.elements.reference:t).getBoundingClientRect():null,u=r("popper")?n.getBoundingClientRect():null;(s&&Q(o,s)||u&&Q(i,u))&&e.popperInstance&&e.popperInstance.update(),o=s,i=u,e.state.isMounted&&requestAnimationFrame(a)}return{onMount:function(){e.props.sticky&&a()}}}};function Q(e,t){return!e||!t||(e.top!==t.top||e.right!==t.right||e.bottom!==t.bottom||e.left!==t.left)}return F.setDefaultProps({plugins:[Y,J,G,K],render:N}),F.createSingleton=function(e,t){var n;void 0===t&&(t={});var r,o=e,i=[],a=[],c=t.overrides,p=[],f=!1;function l(){a=o.map((function(e){return u(e.props.triggerTarget||e.reference)})).reduce((function(e,t){return e.concat(t)}),[])}function v(){i=o.map((function(e){return e.reference}))}function m(e){o.forEach((function(t){e?t.enable():t.disable()}))}function g(e){return o.map((function(t){var n=t.setProps;return t.setProps=function(o){n(o),t.reference===r&&e.setProps(o)},function(){t.setProps=n}}))}function h(e,t){var n=a.indexOf(t);if(t!==r){r=t;var s=(c||[]).concat("content").reduce((function(e,t){return e[t]=o[n].props[t],e}),{});e.setProps(Object.assign({},s,{getReferenceClientRect:"function"==typeof s.getReferenceClientRect?s.getReferenceClientRect:function(){var e;return null==(e=i[n])?void 0:e.getBoundingClientRect()}}))}}m(!1),v(),l();var b={fn:function(){return{onDestroy:function(){m(!0)},onHidden:function(){r=null},onClickOutside:function(e){e.props.showOnCreate&&!f&&(f=!0,r=null)},onShow:function(e){e.props.showOnCreate&&!f&&(f=!0,h(e,i[0]))},onTrigger:function(e,t){h(e,t.currentTarget)}}}},y=F(d(),Object.assign({},s(t,["overrides"]),{plugins:[b].concat(t.plugins||[]),triggerTarget:a,popperOptions:Object.assign({},t.popperOptions,{modifiers:[].concat((null==(n=t.popperOptions)?void 0:n.modifiers)||[],[W])})})),w=y.show;y.show=function(e){if(w(),!r&&null==e)return h(y,i[0]);if(!r||null!=e){if("number"==typeof e)return i[e]&&h(y,i[e]);if(o.indexOf(e)>=0){var t=e.reference;return h(y,t)}return i.indexOf(e)>=0?h(y,e):void 0}},y.showNext=function(){var e=i[0];if(!r)return y.show(0);var t=i.indexOf(r);y.show(i[t+1]||e)},y.showPrevious=function(){var e=i[i.length-1];if(!r)return y.show(e);var t=i.indexOf(r),n=i[t-1]||e;y.show(n)};var E=y.setProps;return y.setProps=function(e){c=e.overrides||c,E(e)},y.setInstances=function(e){m(!0),p.forEach((function(e){return e()})),o=e,m(!1),v(),l(),p=g(y),y.setProps({triggerTarget:a})},p=g(y),y},F.delegate=function(e,n){var r=[],o=[],i=!1,a=n.target,c=s(n,["target"]),p=Object.assign({},c,{trigger:"manual",touch:!1}),f=Object.assign({touch:R.touch},c,{showOnCreate:!0}),l=F(e,p);function d(e){if(e.target&&!i){var t=e.target.closest(a);if(t){var r=t.getAttribute("data-tippy-trigger")||n.trigger||R.trigger;if(!t._tippy&&!("touchstart"===e.type&&"boolean"==typeof f.touch||"touchstart"!==e.type&&r.indexOf(X[e.type])<0)){var s=F(t,f);s&&(o=o.concat(s))}}}}function v(e,t,n,o){void 0===o&&(o=!1),e.addEventListener(t,n,o),r.push({node:e,eventType:t,handler:n,options:o})}return u(l).forEach((function(e){var n=e.destroy,a=e.enable,s=e.disable;e.destroy=function(e){void 0===e&&(e=!0),e&&o.forEach((function(e){e.destroy()})),o=[],r.forEach((function(e){var t=e.node,n=e.eventType,r=e.handler,o=e.options;t.removeEventListener(n,r,o)})),r=[],n()},e.enable=function(){a(),o.forEach((function(e){return e.enable()})),i=!1},e.disable=function(){s(),o.forEach((function(e){return e.disable()})),i=!0},function(e){var n=e.reference;v(n,"touchstart",d,t),v(n,"mouseover",d),v(n,"focusin",d),v(n,"click",d)}(e)})),l},F.hideAll=function(e){var t=void 0===e?{}:e,n=t.exclude,r=t.duration;U.forEach((function(e){var t=!1;if(n&&(t=g(n)?e.reference===n:e.popper===n.popper),!t){var o=e.props.duration;e.setProps({duration:r}),e.hide(),e.state.isDestroyed||e.setProps({duration:o})}}))},F.roundArrow='',F})); + diff --git a/docs/column_api_files/md-default0.js b/docs/column_api_files/md-default0.js new file mode 100644 index 0000000..c4c6022 --- /dev/null +++ b/docs/column_api_files/md-default0.js @@ -0,0 +1,2 @@ +/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="
              ",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
              "],col:[2,"","
              "],tr:[2,"","
              "],td:[3,"","
              "],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="
              ",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0",options:{classes:{},disabled:!1,create:null},_createWidget:function(t,e){e=V(e||this.defaultElement||this)[0],this.element=V(e),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=V(),this.hoverable=V(),this.focusable=V(),this.classesElementLookup={},e!==this&&(V.data(e,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===e&&this.destroy()}}),this.document=V(e.style?e.ownerDocument:e.document||e),this.window=V(this.document[0].defaultView||this.document[0].parentWindow)),this.options=V.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:V.noop,_create:V.noop,_init:V.noop,destroy:function(){var i=this;this._destroy(),V.each(this.classesElementLookup,function(t,e){i._removeClass(e,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:V.noop,widget:function(){return this.element},option:function(t,e){var i,s,n,o=t;if(0===arguments.length)return V.widget.extend({},this.options);if("string"==typeof t)if(o={},t=(i=t.split(".")).shift(),i.length){for(s=o[t]=V.widget.extend({},this.options[t]),n=0;n
            "),i=e.children()[0];return V("body").append(e),t=i.offsetWidth,e.css("overflow","scroll"),t===(i=i.offsetWidth)&&(i=e[0].clientWidth),e.remove(),s=t-i},getScrollInfo:function(t){var e=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),i=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),e="scroll"===e||"auto"===e&&t.widthx(k(s),k(n))?o.important="horizontal":o.important="vertical",u.using.call(this,t,o)}),a.offset(V.extend(h,{using:t}))})},V.ui.position={fit:{left:function(t,e){var i=e.within,s=i.isWindow?i.scrollLeft:i.offset.left,n=i.width,o=t.left-e.collisionPosition.marginLeft,a=s-o,r=o+e.collisionWidth-n-s;e.collisionWidth>n?0n?0")[0],w=d.each;function P(t){return null==t?t+"":"object"==typeof t?p[e.call(t)]||"object":typeof t}function M(t,e,i){var s=v[e.type]||{};return null==t?i||!e.def?null:e.def:(t=s.floor?~~t:parseFloat(t),isNaN(t)?e.def:s.mod?(t+s.mod)%s.mod:Math.min(s.max,Math.max(0,t)))}function S(s){var n=m(),o=n._rgba=[];return s=s.toLowerCase(),w(g,function(t,e){var i=e.re.exec(s),i=i&&e.parse(i),e=e.space||"rgba";if(i)return i=n[e](i),n[_[e].cache]=i[_[e].cache],o=n._rgba=i._rgba,!1}),o.length?("0,0,0,0"===o.join()&&d.extend(o,B.transparent),n):B[s]}function H(t,e,i){return 6*(i=(i+1)%1)<1?t+(e-t)*i*6:2*i<1?e:3*i<2?t+(e-t)*(2/3-i)*6:t}y.style.cssText="background-color:rgba(1,1,1,.5)",b.rgba=-1o.mod/2?s+=o.mod:s-n>o.mod/2&&(s-=o.mod)),l[i]=M((n-s)*a+s,e)))}),this[e](l)},blend:function(t){if(1===this._rgba[3])return this;var e=this._rgba.slice(),i=e.pop(),s=m(t)._rgba;return m(d.map(e,function(t,e){return(1-i)*s[e]+i*t}))},toRgbaString:function(){var t="rgba(",e=d.map(this._rgba,function(t,e){return null!=t?t:2
            ").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}),e={width:i.width(),height:i.height()},n=document.activeElement;try{n.id}catch(t){n=document.body}return i.wrap(t),i[0]!==n&&!V.contains(i[0],n)||V(n).trigger("focus"),t=i.parent(),"static"===i.css("position")?(t.css({position:"relative"}),i.css({position:"relative"})):(V.extend(s,{position:i.css("position"),zIndex:i.css("z-index")}),V.each(["top","left","bottom","right"],function(t,e){s[e]=i.css(e),isNaN(parseInt(s[e],10))&&(s[e]="auto")}),i.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})),i.css(e),t.css(s).show()},removeWrapper:function(t){var e=document.activeElement;return t.parent().is(".ui-effects-wrapper")&&(t.parent().replaceWith(t),t[0]!==e&&!V.contains(t[0],e)||V(e).trigger("focus")),t}}),V.extend(V.effects,{version:"1.13.1",define:function(t,e,i){return i||(i=e,e="effect"),V.effects.effect[t]=i,V.effects.effect[t].mode=e,i},scaledDimensions:function(t,e,i){if(0===e)return{height:0,width:0,outerHeight:0,outerWidth:0};var s="horizontal"!==i?(e||100)/100:1,e="vertical"!==i?(e||100)/100:1;return{height:t.height()*e,width:t.width()*s,outerHeight:t.outerHeight()*e,outerWidth:t.outerWidth()*s}},clipToBox:function(t){return{width:t.clip.right-t.clip.left,height:t.clip.bottom-t.clip.top,left:t.clip.left,top:t.clip.top}},unshift:function(t,e,i){var s=t.queue();1").insertAfter(t).css({display:/^(inline|ruby)/.test(t.css("display"))?"inline-block":"block",visibility:"hidden",marginTop:t.css("marginTop"),marginBottom:t.css("marginBottom"),marginLeft:t.css("marginLeft"),marginRight:t.css("marginRight"),float:t.css("float")}).outerWidth(t.outerWidth()).outerHeight(t.outerHeight()).addClass("ui-effects-placeholder"),t.data(j+"placeholder",e)),t.css({position:i,left:s.left,top:s.top}),e},removePlaceholder:function(t){var e=j+"placeholder",i=t.data(e);i&&(i.remove(),t.removeData(e))},cleanUp:function(t){V.effects.restoreStyle(t),V.effects.removePlaceholder(t)},setTransition:function(s,t,n,o){return o=o||{},V.each(t,function(t,e){var i=s.cssUnit(e);0
            ");l.appendTo("body").addClass(t.className).css({top:s.top-a,left:s.left-r,height:i.innerHeight(),width:i.innerWidth(),position:n?"fixed":"absolute"}).animate(o,t.duration,t.easing,function(){l.remove(),"function"==typeof e&&e()})}}),V.fx.step.clip=function(t){t.clipInit||(t.start=V(t.elem).cssClip(),"string"==typeof t.end&&(t.end=G(t.end,t.elem)),t.clipInit=!0),V(t.elem).cssClip({top:t.pos*(t.end.top-t.start.top)+t.start.top,right:t.pos*(t.end.right-t.start.right)+t.start.right,bottom:t.pos*(t.end.bottom-t.start.bottom)+t.start.bottom,left:t.pos*(t.end.left-t.start.left)+t.start.left})},Y={},V.each(["Quad","Cubic","Quart","Quint","Expo"],function(e,t){Y[t]=function(t){return Math.pow(t,e+2)}}),V.extend(Y,{Sine:function(t){return 1-Math.cos(t*Math.PI/2)},Circ:function(t){return 1-Math.sqrt(1-t*t)},Elastic:function(t){return 0===t||1===t?t:-Math.pow(2,8*(t-1))*Math.sin((80*(t-1)-7.5)*Math.PI/15)},Back:function(t){return t*t*(3*t-2)},Bounce:function(t){for(var e,i=4;t<((e=Math.pow(2,--i))-1)/11;);return 1/Math.pow(4,3-i)-7.5625*Math.pow((3*e-2)/22-t,2)}}),V.each(Y,function(t,e){V.easing["easeIn"+t]=e,V.easing["easeOut"+t]=function(t){return 1-e(1-t)},V.easing["easeInOut"+t]=function(t){return t<.5?e(2*t)/2:1-e(-2*t+2)/2}});y=V.effects,V.effects.define("blind","hide",function(t,e){var i={up:["bottom","top"],vertical:["bottom","top"],down:["top","bottom"],left:["right","left"],horizontal:["right","left"],right:["left","right"]},s=V(this),n=t.direction||"up",o=s.cssClip(),a={clip:V.extend({},o)},r=V.effects.createPlaceholder(s);a.clip[i[n][0]]=a.clip[i[n][1]],"show"===t.mode&&(s.cssClip(a.clip),r&&r.css(V.effects.clipToBox(a)),a.clip=o),r&&r.animate(V.effects.clipToBox(a),t.duration,t.easing),s.animate(a,{queue:!1,duration:t.duration,easing:t.easing,complete:e})}),V.effects.define("bounce",function(t,e){var i,s,n=V(this),o=t.mode,a="hide"===o,r="show"===o,l=t.direction||"up",h=t.distance,c=t.times||5,o=2*c+(r||a?1:0),u=t.duration/o,d=t.easing,p="up"===l||"down"===l?"top":"left",f="up"===l||"left"===l,g=0,t=n.queue().length;for(V.effects.createPlaceholder(n),l=n.css(p),h=h||n["top"==p?"outerHeight":"outerWidth"]()/3,r&&((s={opacity:1})[p]=l,n.css("opacity",0).css(p,f?2*-h:2*h).animate(s,u,d)),a&&(h/=Math.pow(2,c-1)),(s={})[p]=l;g
            ").css({position:"absolute",visibility:"visible",left:-s*p,top:-i*f}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:p,height:f,left:n+(u?a*p:0),top:o+(u?r*f:0),opacity:u?0:1}).animate({left:n+(u?0:a*p),top:o+(u?0:r*f),opacity:u?1:0},t.duration||500,t.easing,m)}),V.effects.define("fade","toggle",function(t,e){var i="show"===t.mode;V(this).css("opacity",i?0:1).animate({opacity:i?1:0},{queue:!1,duration:t.duration,easing:t.easing,complete:e})}),V.effects.define("fold","hide",function(e,t){var i=V(this),s=e.mode,n="show"===s,o="hide"===s,a=e.size||15,r=/([0-9]+)%/.exec(a),l=!!e.horizFirst?["right","bottom"]:["bottom","right"],h=e.duration/2,c=V.effects.createPlaceholder(i),u=i.cssClip(),d={clip:V.extend({},u)},p={clip:V.extend({},u)},f=[u[l[0]],u[l[1]]],s=i.queue().length;r&&(a=parseInt(r[1],10)/100*f[o?0:1]),d.clip[l[0]]=a,p.clip[l[0]]=a,p.clip[l[1]]=0,n&&(i.cssClip(p.clip),c&&c.css(V.effects.clipToBox(p)),p.clip=u),i.queue(function(t){c&&c.animate(V.effects.clipToBox(d),h,e.easing).animate(V.effects.clipToBox(p),h,e.easing),t()}).animate(d,h,e.easing).animate(p,h,e.easing).queue(t),V.effects.unshift(i,s,4)}),V.effects.define("highlight","show",function(t,e){var i=V(this),s={backgroundColor:i.css("backgroundColor")};"hide"===t.mode&&(s.opacity=0),V.effects.saveStyle(i),i.css({backgroundImage:"none",backgroundColor:t.color||"#ffff99"}).animate(s,{queue:!1,duration:t.duration,easing:t.easing,complete:e})}),V.effects.define("size",function(s,e){var n,i=V(this),t=["fontSize"],o=["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"],a=["borderLeftWidth","borderRightWidth","paddingLeft","paddingRight"],r=s.mode,l="effect"!==r,h=s.scale||"both",c=s.origin||["middle","center"],u=i.css("position"),d=i.position(),p=V.effects.scaledDimensions(i),f=s.from||p,g=s.to||V.effects.scaledDimensions(i,0);V.effects.createPlaceholder(i),"show"===r&&(r=f,f=g,g=r),n={from:{y:f.height/p.height,x:f.width/p.width},to:{y:g.height/p.height,x:g.width/p.width}},"box"!==h&&"both"!==h||(n.from.y!==n.to.y&&(f=V.effects.setTransition(i,o,n.from.y,f),g=V.effects.setTransition(i,o,n.to.y,g)),n.from.x!==n.to.x&&(f=V.effects.setTransition(i,a,n.from.x,f),g=V.effects.setTransition(i,a,n.to.x,g))),"content"!==h&&"both"!==h||n.from.y!==n.to.y&&(f=V.effects.setTransition(i,t,n.from.y,f),g=V.effects.setTransition(i,t,n.to.y,g)),c&&(c=V.effects.getBaseline(c,p),f.top=(p.outerHeight-f.outerHeight)*c.y+d.top,f.left=(p.outerWidth-f.outerWidth)*c.x+d.left,g.top=(p.outerHeight-g.outerHeight)*c.y+d.top,g.left=(p.outerWidth-g.outerWidth)*c.x+d.left),delete f.outerHeight,delete f.outerWidth,i.css(f),"content"!==h&&"both"!==h||(o=o.concat(["marginTop","marginBottom"]).concat(t),a=a.concat(["marginLeft","marginRight"]),i.find("*[width]").each(function(){var t=V(this),e=V.effects.scaledDimensions(t),i={height:e.height*n.from.y,width:e.width*n.from.x,outerHeight:e.outerHeight*n.from.y,outerWidth:e.outerWidth*n.from.x},e={height:e.height*n.to.y,width:e.width*n.to.x,outerHeight:e.height*n.to.y,outerWidth:e.width*n.to.x};n.from.y!==n.to.y&&(i=V.effects.setTransition(t,o,n.from.y,i),e=V.effects.setTransition(t,o,n.to.y,e)),n.from.x!==n.to.x&&(i=V.effects.setTransition(t,a,n.from.x,i),e=V.effects.setTransition(t,a,n.to.x,e)),l&&V.effects.saveStyle(t),t.css(i),t.animate(e,s.duration,s.easing,function(){l&&V.effects.restoreStyle(t)})})),i.animate(g,{queue:!1,duration:s.duration,easing:s.easing,complete:function(){var t=i.offset();0===g.opacity&&i.css("opacity",f.opacity),l||(i.css("position","static"===u?"relative":u).offset(t),V.effects.saveStyle(i)),e()}})}),V.effects.define("scale",function(t,e){var i=V(this),s=t.mode,s=parseInt(t.percent,10)||(0===parseInt(t.percent,10)||"effect"!==s?0:100),s=V.extend(!0,{from:V.effects.scaledDimensions(i),to:V.effects.scaledDimensions(i,s,t.direction||"both"),origin:t.origin||["middle","center"]},t);t.fade&&(s.from.opacity=1,s.to.opacity=0),V.effects.effect.size.call(this,s,e)}),V.effects.define("puff","hide",function(t,e){t=V.extend(!0,{},t,{fade:!0,percent:parseInt(t.percent,10)||150});V.effects.effect.scale.call(this,t,e)}),V.effects.define("pulsate","show",function(t,e){var i=V(this),s=t.mode,n="show"===s,o=2*(t.times||5)+(n||"hide"===s?1:0),a=t.duration/o,r=0,l=1,s=i.queue().length;for(!n&&i.is(":visible")||(i.css("opacity",0).show(),r=1);l li > :first-child").add(t.find("> :not(li)").even())},heightStyle:"auto",icons:{activeHeader:"ui-icon-triangle-1-s",header:"ui-icon-triangle-1-e"},activate:null,beforeActivate:null},hideProps:{borderTopWidth:"hide",borderBottomWidth:"hide",paddingTop:"hide",paddingBottom:"hide",height:"hide"},showProps:{borderTopWidth:"show",borderBottomWidth:"show",paddingTop:"show",paddingBottom:"show",height:"show"},_create:function(){var t=this.options;this.prevShow=this.prevHide=V(),this._addClass("ui-accordion","ui-widget ui-helper-reset"),this.element.attr("role","tablist"),t.collapsible||!1!==t.active&&null!=t.active||(t.active=0),this._processPanels(),t.active<0&&(t.active+=this.headers.length),this._refresh()},_getCreateEventData:function(){return{header:this.active,panel:this.active.length?this.active.next():V()}},_createIcons:function(){var t,e=this.options.icons;e&&(t=V(""),this._addClass(t,"ui-accordion-header-icon","ui-icon "+e.header),t.prependTo(this.headers),t=this.active.children(".ui-accordion-header-icon"),this._removeClass(t,e.header)._addClass(t,null,e.activeHeader)._addClass(this.headers,"ui-accordion-icons"))},_destroyIcons:function(){this._removeClass(this.headers,"ui-accordion-icons"),this.headers.children(".ui-accordion-header-icon").remove()},_destroy:function(){var t;this.element.removeAttr("role"),this.headers.removeAttr("role aria-expanded aria-selected aria-controls tabIndex").removeUniqueId(),this._destroyIcons(),t=this.headers.next().css("display","").removeAttr("role aria-hidden aria-labelledby").removeUniqueId(),"content"!==this.options.heightStyle&&t.css("height","")},_setOption:function(t,e){"active"!==t?("event"===t&&(this.options.event&&this._off(this.headers,this.options.event),this._setupEvents(e)),this._super(t,e),"collapsible"!==t||e||!1!==this.options.active||this._activate(0),"icons"===t&&(this._destroyIcons(),e&&this._createIcons())):this._activate(e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",t),this._toggleClass(null,"ui-state-disabled",!!t),this._toggleClass(this.headers.add(this.headers.next()),null,"ui-state-disabled",!!t)},_keydown:function(t){if(!t.altKey&&!t.ctrlKey){var e=V.ui.keyCode,i=this.headers.length,s=this.headers.index(t.target),n=!1;switch(t.keyCode){case e.RIGHT:case e.DOWN:n=this.headers[(s+1)%i];break;case e.LEFT:case e.UP:n=this.headers[(s-1+i)%i];break;case e.SPACE:case e.ENTER:this._eventHandler(t);break;case e.HOME:n=this.headers[0];break;case e.END:n=this.headers[i-1]}n&&(V(t.target).attr("tabIndex",-1),V(n).attr("tabIndex",0),V(n).trigger("focus"),t.preventDefault())}},_panelKeyDown:function(t){t.keyCode===V.ui.keyCode.UP&&t.ctrlKey&&V(t.currentTarget).prev().trigger("focus")},refresh:function(){var t=this.options;this._processPanels(),!1===t.active&&!0===t.collapsible||!this.headers.length?(t.active=!1,this.active=V()):!1===t.active?this._activate(0):this.active.length&&!V.contains(this.element[0],this.active[0])?this.headers.length===this.headers.find(".ui-state-disabled").length?(t.active=!1,this.active=V()):this._activate(Math.max(0,t.active-1)):t.active=this.headers.index(this.active),this._destroyIcons(),this._refresh()},_processPanels:function(){var t=this.headers,e=this.panels;"function"==typeof this.options.header?this.headers=this.options.header(this.element):this.headers=this.element.find(this.options.header),this._addClass(this.headers,"ui-accordion-header ui-accordion-header-collapsed","ui-state-default"),this.panels=this.headers.next().filter(":not(.ui-accordion-content-active)").hide(),this._addClass(this.panels,"ui-accordion-content","ui-helper-reset ui-widget-content"),e&&(this._off(t.not(this.headers)),this._off(e.not(this.panels)))},_refresh:function(){var i,t=this.options,e=t.heightStyle,s=this.element.parent();this.active=this._findActive(t.active),this._addClass(this.active,"ui-accordion-header-active","ui-state-active")._removeClass(this.active,"ui-accordion-header-collapsed"),this._addClass(this.active.next(),"ui-accordion-content-active"),this.active.next().show(),this.headers.attr("role","tab").each(function(){var t=V(this),e=t.uniqueId().attr("id"),i=t.next(),s=i.uniqueId().attr("id");t.attr("aria-controls",s),i.attr("aria-labelledby",e)}).next().attr("role","tabpanel"),this.headers.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}).next().attr({"aria-hidden":"true"}).hide(),this.active.length?this.active.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}).next().attr({"aria-hidden":"false"}):this.headers.eq(0).attr("tabIndex",0),this._createIcons(),this._setupEvents(t.event),"fill"===e?(i=s.height(),this.element.siblings(":visible").each(function(){var t=V(this),e=t.css("position");"absolute"!==e&&"fixed"!==e&&(i-=t.outerHeight(!0))}),this.headers.each(function(){i-=V(this).outerHeight(!0)}),this.headers.next().each(function(){V(this).height(Math.max(0,i-V(this).innerHeight()+V(this).height()))}).css("overflow","auto")):"auto"===e&&(i=0,this.headers.next().each(function(){var t=V(this).is(":visible");t||V(this).show(),i=Math.max(i,V(this).css("height","").height()),t||V(this).hide()}).height(i))},_activate:function(t){t=this._findActive(t)[0];t!==this.active[0]&&(t=t||this.active[0],this._eventHandler({target:t,currentTarget:t,preventDefault:V.noop}))},_findActive:function(t){return"number"==typeof t?this.headers.eq(t):V()},_setupEvents:function(t){var i={keydown:"_keydown"};t&&V.each(t.split(" "),function(t,e){i[e]="_eventHandler"}),this._off(this.headers.add(this.headers.next())),this._on(this.headers,i),this._on(this.headers.next(),{keydown:"_panelKeyDown"}),this._hoverable(this.headers),this._focusable(this.headers)},_eventHandler:function(t){var e=this.options,i=this.active,s=V(t.currentTarget),n=s[0]===i[0],o=n&&e.collapsible,a=o?V():s.next(),r=i.next(),a={oldHeader:i,oldPanel:r,newHeader:o?V():s,newPanel:a};t.preventDefault(),n&&!e.collapsible||!1===this._trigger("beforeActivate",t,a)||(e.active=!o&&this.headers.index(s),this.active=n?V():s,this._toggle(a),this._removeClass(i,"ui-accordion-header-active","ui-state-active"),e.icons&&(i=i.children(".ui-accordion-header-icon"),this._removeClass(i,null,e.icons.activeHeader)._addClass(i,null,e.icons.header)),n||(this._removeClass(s,"ui-accordion-header-collapsed")._addClass(s,"ui-accordion-header-active","ui-state-active"),e.icons&&(n=s.children(".ui-accordion-header-icon"),this._removeClass(n,null,e.icons.header)._addClass(n,null,e.icons.activeHeader)),this._addClass(s.next(),"ui-accordion-content-active")))},_toggle:function(t){var e=t.newPanel,i=this.prevShow.length?this.prevShow:t.oldPanel;this.prevShow.add(this.prevHide).stop(!0,!0),this.prevShow=e,this.prevHide=i,this.options.animate?this._animate(e,i,t):(i.hide(),e.show(),this._toggleComplete(t)),i.attr({"aria-hidden":"true"}),i.prev().attr({"aria-selected":"false","aria-expanded":"false"}),e.length&&i.length?i.prev().attr({tabIndex:-1,"aria-expanded":"false"}):e.length&&this.headers.filter(function(){return 0===parseInt(V(this).attr("tabIndex"),10)}).attr("tabIndex",-1),e.attr("aria-hidden","false").prev().attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_animate:function(t,i,e){var s,n,o,a=this,r=0,l=t.css("box-sizing"),h=t.length&&(!i.length||t.index()",delay:300,options:{icons:{submenu:"ui-icon-caret-1-e"},items:"> *",menus:"ul",position:{my:"left top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.lastMousePosition={x:null,y:null},this.element.uniqueId().attr({role:this.options.role,tabIndex:0}),this._addClass("ui-menu","ui-widget ui-widget-content"),this._on({"mousedown .ui-menu-item":function(t){t.preventDefault(),this._activateItem(t)},"click .ui-menu-item":function(t){var e=V(t.target),i=V(V.ui.safeActiveElement(this.document[0]));!this.mouseHandled&&e.not(".ui-state-disabled").length&&(this.select(t),t.isPropagationStopped()||(this.mouseHandled=!0),e.has(".ui-menu").length?this.expand(t):!this.element.is(":focus")&&i.closest(".ui-menu").length&&(this.element.trigger("focus",[!0]),this.active&&1===this.active.parents(".ui-menu").length&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":"_activateItem","mousemove .ui-menu-item":"_activateItem",mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(t,e){var i=this.active||this._menuItems().first();e||this.focus(t,i)},blur:function(t){this._delay(function(){V.contains(this.element[0],V.ui.safeActiveElement(this.document[0]))||this.collapseAll(t)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(t){this._closeOnDocumentClick(t)&&this.collapseAll(t,!0),this.mouseHandled=!1}})},_activateItem:function(t){var e,i;this.previousFilter||t.clientX===this.lastMousePosition.x&&t.clientY===this.lastMousePosition.y||(this.lastMousePosition={x:t.clientX,y:t.clientY},e=V(t.target).closest(".ui-menu-item"),i=V(t.currentTarget),e[0]===i[0]&&(i.is(".ui-state-active")||(this._removeClass(i.siblings().children(".ui-state-active"),null,"ui-state-active"),this.focus(t,i))))},_destroy:function(){var t=this.element.find(".ui-menu-item").removeAttr("role aria-disabled").children(".ui-menu-item-wrapper").removeUniqueId().removeAttr("tabIndex role aria-haspopup");this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeAttr("role aria-labelledby aria-expanded aria-hidden aria-disabled tabIndex").removeUniqueId().show(),t.children().each(function(){var t=V(this);t.data("ui-menu-submenu-caret")&&t.remove()})},_keydown:function(t){var e,i,s,n=!0;switch(t.keyCode){case V.ui.keyCode.PAGE_UP:this.previousPage(t);break;case V.ui.keyCode.PAGE_DOWN:this.nextPage(t);break;case V.ui.keyCode.HOME:this._move("first","first",t);break;case V.ui.keyCode.END:this._move("last","last",t);break;case V.ui.keyCode.UP:this.previous(t);break;case V.ui.keyCode.DOWN:this.next(t);break;case V.ui.keyCode.LEFT:this.collapse(t);break;case V.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(t);break;case V.ui.keyCode.ENTER:case V.ui.keyCode.SPACE:this._activate(t);break;case V.ui.keyCode.ESCAPE:this.collapse(t);break;default:e=this.previousFilter||"",s=n=!1,i=96<=t.keyCode&&t.keyCode<=105?(t.keyCode-96).toString():String.fromCharCode(t.keyCode),clearTimeout(this.filterTimer),i===e?s=!0:i=e+i,e=this._filterMenuItems(i),(e=s&&-1!==e.index(this.active.next())?this.active.nextAll(".ui-menu-item"):e).length||(i=String.fromCharCode(t.keyCode),e=this._filterMenuItems(i)),e.length?(this.focus(t,e),this.previousFilter=i,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter}n&&t.preventDefault()},_activate:function(t){this.active&&!this.active.is(".ui-state-disabled")&&(this.active.children("[aria-haspopup='true']").length?this.expand(t):this.select(t))},refresh:function(){var t,e,s=this,n=this.options.icons.submenu,i=this.element.find(this.options.menus);this._toggleClass("ui-menu-icons",null,!!this.element.find(".ui-icon").length),e=i.filter(":not(.ui-menu)").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var t=V(this),e=t.prev(),i=V("").data("ui-menu-submenu-caret",!0);s._addClass(i,"ui-menu-icon","ui-icon "+n),e.attr("aria-haspopup","true").prepend(i),t.attr("aria-labelledby",e.attr("id"))}),this._addClass(e,"ui-menu","ui-widget ui-widget-content ui-front"),(t=i.add(this.element).find(this.options.items)).not(".ui-menu-item").each(function(){var t=V(this);s._isDivider(t)&&s._addClass(t,"ui-menu-divider","ui-widget-content")}),i=(e=t.not(".ui-menu-item, .ui-menu-divider")).children().not(".ui-menu").uniqueId().attr({tabIndex:-1,role:this._itemRole()}),this._addClass(e,"ui-menu-item")._addClass(i,"ui-menu-item-wrapper"),t.filter(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!V.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(t,e){var i;"icons"===t&&(i=this.element.find(".ui-menu-icon"),this._removeClass(i,null,this.options.icons.submenu)._addClass(i,null,e.submenu)),this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",String(t)),this._toggleClass(null,"ui-state-disabled",!!t)},focus:function(t,e){var i;this.blur(t,t&&"focus"===t.type),this._scrollIntoView(e),this.active=e.first(),i=this.active.children(".ui-menu-item-wrapper"),this._addClass(i,null,"ui-state-active"),this.options.role&&this.element.attr("aria-activedescendant",i.attr("id")),i=this.active.parent().closest(".ui-menu-item").children(".ui-menu-item-wrapper"),this._addClass(i,null,"ui-state-active"),t&&"keydown"===t.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),(i=e.children(".ui-menu")).length&&t&&/^mouse/.test(t.type)&&this._startOpening(i),this.activeMenu=e.parent(),this._trigger("focus",t,{item:e})},_scrollIntoView:function(t){var e,i,s;this._hasScroll()&&(i=parseFloat(V.css(this.activeMenu[0],"borderTopWidth"))||0,s=parseFloat(V.css(this.activeMenu[0],"paddingTop"))||0,e=t.offset().top-this.activeMenu.offset().top-i-s,i=this.activeMenu.scrollTop(),s=this.activeMenu.height(),t=t.outerHeight(),e<0?this.activeMenu.scrollTop(i+e):s",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},requestIndex:0,pending:0,liveRegionTimer:null,_create:function(){var i,s,n,t=this.element[0].nodeName.toLowerCase(),e="textarea"===t,t="input"===t;this.isMultiLine=e||!t&&this._isContentEditable(this.element),this.valueMethod=this.element[e||t?"val":"text"],this.isNewMenu=!0,this._addClass("ui-autocomplete-input"),this.element.attr("autocomplete","off"),this._on(this.element,{keydown:function(t){if(this.element.prop("readOnly"))s=n=i=!0;else{s=n=i=!1;var e=V.ui.keyCode;switch(t.keyCode){case e.PAGE_UP:i=!0,this._move("previousPage",t);break;case e.PAGE_DOWN:i=!0,this._move("nextPage",t);break;case e.UP:i=!0,this._keyEvent("previous",t);break;case e.DOWN:i=!0,this._keyEvent("next",t);break;case e.ENTER:this.menu.active&&(i=!0,t.preventDefault(),this.menu.select(t));break;case e.TAB:this.menu.active&&this.menu.select(t);break;case e.ESCAPE:this.menu.element.is(":visible")&&(this.isMultiLine||this._value(this.term),this.close(t),t.preventDefault());break;default:s=!0,this._searchTimeout(t)}}},keypress:function(t){if(i)return i=!1,void(this.isMultiLine&&!this.menu.element.is(":visible")||t.preventDefault());if(!s){var e=V.ui.keyCode;switch(t.keyCode){case e.PAGE_UP:this._move("previousPage",t);break;case e.PAGE_DOWN:this._move("nextPage",t);break;case e.UP:this._keyEvent("previous",t);break;case e.DOWN:this._keyEvent("next",t)}}},input:function(t){if(n)return n=!1,void t.preventDefault();this._searchTimeout(t)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(t){clearTimeout(this.searching),this.close(t),this._change(t)}}),this._initSource(),this.menu=V("
              ").appendTo(this._appendTo()).menu({role:null}).hide().attr({unselectable:"on"}).menu("instance"),this._addClass(this.menu.element,"ui-autocomplete","ui-front"),this._on(this.menu.element,{mousedown:function(t){t.preventDefault()},menufocus:function(t,e){var i,s;if(this.isNewMenu&&(this.isNewMenu=!1,t.originalEvent&&/^mouse/.test(t.originalEvent.type)))return this.menu.blur(),void this.document.one("mousemove",function(){V(t.target).trigger(t.originalEvent)});s=e.item.data("ui-autocomplete-item"),!1!==this._trigger("focus",t,{item:s})&&t.originalEvent&&/^key/.test(t.originalEvent.type)&&this._value(s.value),(i=e.item.attr("aria-label")||s.value)&&String.prototype.trim.call(i).length&&(clearTimeout(this.liveRegionTimer),this.liveRegionTimer=this._delay(function(){this.liveRegion.html(V("
              ").text(i))},100))},menuselect:function(t,e){var i=e.item.data("ui-autocomplete-item"),s=this.previous;this.element[0]!==V.ui.safeActiveElement(this.document[0])&&(this.element.trigger("focus"),this.previous=s,this._delay(function(){this.previous=s,this.selectedItem=i})),!1!==this._trigger("select",t,{item:i})&&this._value(i.value),this.term=this._value(),this.close(t),this.selectedItem=i}}),this.liveRegion=V("
              ",{role:"status","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(t,e){this._super(t,e),"source"===t&&this._initSource(),"appendTo"===t&&this.menu.element.appendTo(this._appendTo()),"disabled"===t&&e&&this.xhr&&this.xhr.abort()},_isEventTargetInWidget:function(t){var e=this.menu.element[0];return t.target===this.element[0]||t.target===e||V.contains(e,t.target)},_closeOnClickOutside:function(t){this._isEventTargetInWidget(t)||this.close()},_appendTo:function(){var t=this.options.appendTo;return t=!(t=!(t=t&&(t.jquery||t.nodeType?V(t):this.document.find(t).eq(0)))||!t[0]?this.element.closest(".ui-front, dialog"):t).length?this.document[0].body:t},_initSource:function(){var i,s,n=this;Array.isArray(this.options.source)?(i=this.options.source,this.source=function(t,e){e(V.ui.autocomplete.filter(i,t.term))}):"string"==typeof this.options.source?(s=this.options.source,this.source=function(t,e){n.xhr&&n.xhr.abort(),n.xhr=V.ajax({url:s,data:t,dataType:"json",success:function(t){e(t)},error:function(){e([])}})}):this.source=this.options.source},_searchTimeout:function(s){clearTimeout(this.searching),this.searching=this._delay(function(){var t=this.term===this._value(),e=this.menu.element.is(":visible"),i=s.altKey||s.ctrlKey||s.metaKey||s.shiftKey;t&&(e||i)||(this.selectedItem=null,this.search(null,s))},this.options.delay)},search:function(t,e){return t=null!=t?t:this._value(),this.term=this._value(),t.length").append(V("
              ").text(e.label)).appendTo(t)},_move:function(t,e){if(this.menu.element.is(":visible"))return this.menu.isFirstItem()&&/^previous/.test(t)||this.menu.isLastItem()&&/^next/.test(t)?(this.isMultiLine||this._value(this.term),void this.menu.blur()):void this.menu[t](e);this.search(null,e)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(t,e){this.isMultiLine&&!this.menu.element.is(":visible")||(this._move(t,e),e.preventDefault())},_isContentEditable:function(t){if(!t.length)return!1;var e=t.prop("contentEditable");return"inherit"===e?this._isContentEditable(t.parent()):"true"===e}}),V.extend(V.ui.autocomplete,{escapeRegex:function(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(t,e){var i=new RegExp(V.ui.autocomplete.escapeRegex(e),"i");return V.grep(t,function(t){return i.test(t.label||t.value||t)})}}),V.widget("ui.autocomplete",V.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(t){return t+(1").text(e))},100))}});V.ui.autocomplete;var tt=/ui-corner-([a-z]){2,6}/g;V.widget("ui.controlgroup",{version:"1.13.1",defaultElement:"
              ",options:{direction:"horizontal",disabled:null,onlyVisible:!0,items:{button:"input[type=button], input[type=submit], input[type=reset], button, a",controlgroupLabel:".ui-controlgroup-label",checkboxradio:"input[type='checkbox'], input[type='radio']",selectmenu:"select",spinner:".ui-spinner-input"}},_create:function(){this._enhance()},_enhance:function(){this.element.attr("role","toolbar"),this.refresh()},_destroy:function(){this._callChildMethod("destroy"),this.childWidgets.removeData("ui-controlgroup-data"),this.element.removeAttr("role"),this.options.items.controlgroupLabel&&this.element.find(this.options.items.controlgroupLabel).find(".ui-controlgroup-label-contents").contents().unwrap()},_initWidgets:function(){var o=this,a=[];V.each(this.options.items,function(s,t){var e,n={};if(t)return"controlgroupLabel"===s?((e=o.element.find(t)).each(function(){var t=V(this);t.children(".ui-controlgroup-label-contents").length||t.contents().wrapAll("")}),o._addClass(e,null,"ui-widget ui-widget-content ui-state-default"),void(a=a.concat(e.get()))):void(V.fn[s]&&(n=o["_"+s+"Options"]?o["_"+s+"Options"]("middle"):{classes:{}},o.element.find(t).each(function(){var t=V(this),e=t[s]("instance"),i=V.widget.extend({},n);"button"===s&&t.parent(".ui-spinner").length||((e=e||t[s]()[s]("instance"))&&(i.classes=o._resolveClassesValues(i.classes,e)),t[s](i),i=t[s]("widget"),V.data(i[0],"ui-controlgroup-data",e||t[s]("instance")),a.push(i[0]))})))}),this.childWidgets=V(V.uniqueSort(a)),this._addClass(this.childWidgets,"ui-controlgroup-item")},_callChildMethod:function(e){this.childWidgets.each(function(){var t=V(this).data("ui-controlgroup-data");t&&t[e]&&t[e]()})},_updateCornerClass:function(t,e){e=this._buildSimpleOptions(e,"label").classes.label;this._removeClass(t,null,"ui-corner-top ui-corner-bottom ui-corner-left ui-corner-right ui-corner-all"),this._addClass(t,null,e)},_buildSimpleOptions:function(t,e){var i="vertical"===this.options.direction,s={classes:{}};return s.classes[e]={middle:"",first:"ui-corner-"+(i?"top":"left"),last:"ui-corner-"+(i?"bottom":"right"),only:"ui-corner-all"}[t],s},_spinnerOptions:function(t){t=this._buildSimpleOptions(t,"ui-spinner");return t.classes["ui-spinner-up"]="",t.classes["ui-spinner-down"]="",t},_buttonOptions:function(t){return this._buildSimpleOptions(t,"ui-button")},_checkboxradioOptions:function(t){return this._buildSimpleOptions(t,"ui-checkboxradio-label")},_selectmenuOptions:function(t){var e="vertical"===this.options.direction;return{width:e&&"auto",classes:{middle:{"ui-selectmenu-button-open":"","ui-selectmenu-button-closed":""},first:{"ui-selectmenu-button-open":"ui-corner-"+(e?"top":"tl"),"ui-selectmenu-button-closed":"ui-corner-"+(e?"top":"left")},last:{"ui-selectmenu-button-open":e?"":"ui-corner-tr","ui-selectmenu-button-closed":"ui-corner-"+(e?"bottom":"right")},only:{"ui-selectmenu-button-open":"ui-corner-top","ui-selectmenu-button-closed":"ui-corner-all"}}[t]}},_resolveClassesValues:function(i,s){var n={};return V.each(i,function(t){var e=s.options.classes[t]||"",e=String.prototype.trim.call(e.replace(tt,""));n[t]=(e+" "+i[t]).replace(/\s+/g," ")}),n},_setOption:function(t,e){"direction"===t&&this._removeClass("ui-controlgroup-"+this.options.direction),this._super(t,e),"disabled"!==t?this.refresh():this._callChildMethod(e?"disable":"enable")},refresh:function(){var n,o=this;this._addClass("ui-controlgroup ui-controlgroup-"+this.options.direction),"horizontal"===this.options.direction&&this._addClass(null,"ui-helper-clearfix"),this._initWidgets(),n=this.childWidgets,(n=this.options.onlyVisible?n.filter(":visible"):n).length&&(V.each(["first","last"],function(t,e){var i,s=n[e]().data("ui-controlgroup-data");s&&o["_"+s.widgetName+"Options"]?((i=o["_"+s.widgetName+"Options"](1===n.length?"only":e)).classes=o._resolveClassesValues(i.classes,s),s.element[s.widgetName](i)):o._updateCornerClass(n[e](),e)}),this._callChildMethod("refresh"))}});V.widget("ui.checkboxradio",[V.ui.formResetMixin,{version:"1.13.1",options:{disabled:null,label:null,icon:!0,classes:{"ui-checkboxradio-label":"ui-corner-all","ui-checkboxradio-icon":"ui-corner-all"}},_getCreateOptions:function(){var t,e=this,i=this._super()||{};return this._readType(),t=this.element.labels(),this.label=V(t[t.length-1]),this.label.length||V.error("No label found for checkboxradio widget"),this.originalLabel="",this.label.contents().not(this.element[0]).each(function(){e.originalLabel+=3===this.nodeType?V(this).text():this.outerHTML}),this.originalLabel&&(i.label=this.originalLabel),null!=(t=this.element[0].disabled)&&(i.disabled=t),i},_create:function(){var t=this.element[0].checked;this._bindFormResetHandler(),null==this.options.disabled&&(this.options.disabled=this.element[0].disabled),this._setOption("disabled",this.options.disabled),this._addClass("ui-checkboxradio","ui-helper-hidden-accessible"),this._addClass(this.label,"ui-checkboxradio-label","ui-button ui-widget"),"radio"===this.type&&this._addClass(this.label,"ui-checkboxradio-radio-label"),this.options.label&&this.options.label!==this.originalLabel?this._updateLabel():this.originalLabel&&(this.options.label=this.originalLabel),this._enhance(),t&&this._addClass(this.label,"ui-checkboxradio-checked","ui-state-active"),this._on({change:"_toggleClasses",focus:function(){this._addClass(this.label,null,"ui-state-focus ui-visual-focus")},blur:function(){this._removeClass(this.label,null,"ui-state-focus ui-visual-focus")}})},_readType:function(){var t=this.element[0].nodeName.toLowerCase();this.type=this.element[0].type,"input"===t&&/radio|checkbox/.test(this.type)||V.error("Can't create checkboxradio on element.nodeName="+t+" and element.type="+this.type)},_enhance:function(){this._updateIcon(this.element[0].checked)},widget:function(){return this.label},_getRadioGroup:function(){var t=this.element[0].name,e="input[name='"+V.escapeSelector(t)+"']";return t?(this.form.length?V(this.form[0].elements).filter(e):V(e).filter(function(){return 0===V(this)._form().length})).not(this.element):V([])},_toggleClasses:function(){var t=this.element[0].checked;this._toggleClass(this.label,"ui-checkboxradio-checked","ui-state-active",t),this.options.icon&&"checkbox"===this.type&&this._toggleClass(this.icon,null,"ui-icon-check ui-state-checked",t)._toggleClass(this.icon,null,"ui-icon-blank",!t),"radio"===this.type&&this._getRadioGroup().each(function(){var t=V(this).checkboxradio("instance");t&&t._removeClass(t.label,"ui-checkboxradio-checked","ui-state-active")})},_destroy:function(){this._unbindFormResetHandler(),this.icon&&(this.icon.remove(),this.iconSpace.remove())},_setOption:function(t,e){if("label"!==t||e){if(this._super(t,e),"disabled"===t)return this._toggleClass(this.label,null,"ui-state-disabled",e),void(this.element[0].disabled=e);this.refresh()}},_updateIcon:function(t){var e="ui-icon ui-icon-background ";this.options.icon?(this.icon||(this.icon=V(""),this.iconSpace=V(" "),this._addClass(this.iconSpace,"ui-checkboxradio-icon-space")),"checkbox"===this.type?(e+=t?"ui-icon-check ui-state-checked":"ui-icon-blank",this._removeClass(this.icon,null,t?"ui-icon-blank":"ui-icon-check")):e+="ui-icon-blank",this._addClass(this.icon,"ui-checkboxradio-icon",e),t||this._removeClass(this.icon,null,"ui-icon-check ui-state-checked"),this.icon.prependTo(this.label).after(this.iconSpace)):void 0!==this.icon&&(this.icon.remove(),this.iconSpace.remove(),delete this.icon)},_updateLabel:function(){var t=this.label.contents().not(this.element[0]);this.icon&&(t=t.not(this.icon[0])),(t=this.iconSpace?t.not(this.iconSpace[0]):t).remove(),this.label.append(this.options.label)},refresh:function(){var t=this.element[0].checked,e=this.element[0].disabled;this._updateIcon(t),this._toggleClass(this.label,"ui-checkboxradio-checked","ui-state-active",t),null!==this.options.label&&this._updateLabel(),e!==this.options.disabled&&this._setOptions({disabled:e})}}]);var et;V.ui.checkboxradio;V.widget("ui.button",{version:"1.13.1",defaultElement:"
              "+(0
              ":""):"")}f+=_}return f+=F,t._keyEvent=!1,f},_generateMonthYearHeader:function(t,e,i,s,n,o,a,r){var l,h,c,u,d,p,f=this._get(t,"changeMonth"),g=this._get(t,"changeYear"),m=this._get(t,"showMonthAfterYear"),_=this._get(t,"selectMonthLabel"),v=this._get(t,"selectYearLabel"),b="
              ",y="";if(o||!f)y+=""+a[e]+"";else{for(l=s&&s.getFullYear()===i,h=n&&n.getFullYear()===i,y+=""}if(m||(b+=y+(!o&&f&&g?"":" ")),!t.yearshtml)if(t.yearshtml="",o||!g)b+=""+i+"";else{for(a=this._get(t,"yearRange").split(":"),u=(new Date).getFullYear(),d=(_=function(t){t=t.match(/c[+\-].*/)?i+parseInt(t.substring(1),10):t.match(/[+\-].*/)?u+parseInt(t,10):parseInt(t,10);return isNaN(t)?u:t})(a[0]),p=Math.max(d,_(a[1]||"")),d=s?Math.max(d,s.getFullYear()):d,p=n?Math.min(p,n.getFullYear()):p,t.yearshtml+="",b+=t.yearshtml,t.yearshtml=null}return b+=this._get(t,"yearSuffix"),m&&(b+=(!o&&f&&g?"":" ")+y),b+="
              "},_adjustInstDate:function(t,e,i){var s=t.selectedYear+("Y"===i?e:0),n=t.selectedMonth+("M"===i?e:0),e=Math.min(t.selectedDay,this._getDaysInMonth(s,n))+("D"===i?e:0),e=this._restrictMinMax(t,this._daylightSavingAdjust(new Date(s,n,e)));t.selectedDay=e.getDate(),t.drawMonth=t.selectedMonth=e.getMonth(),t.drawYear=t.selectedYear=e.getFullYear(),"M"!==i&&"Y"!==i||this._notifyChange(t)},_restrictMinMax:function(t,e){var i=this._getMinMaxDate(t,"min"),t=this._getMinMaxDate(t,"max"),e=i&&e=i.getTime())&&(!s||e.getTime()<=s.getTime())&&(!n||e.getFullYear()>=n)&&(!o||e.getFullYear()<=o)},_getFormatConfig:function(t){var e=this._get(t,"shortYearCutoff");return{shortYearCutoff:e="string"!=typeof e?e:(new Date).getFullYear()%100+parseInt(e,10),dayNamesShort:this._get(t,"dayNamesShort"),dayNames:this._get(t,"dayNames"),monthNamesShort:this._get(t,"monthNamesShort"),monthNames:this._get(t,"monthNames")}},_formatDate:function(t,e,i,s){e||(t.currentDay=t.selectedDay,t.currentMonth=t.selectedMonth,t.currentYear=t.selectedYear);e=e?"object"==typeof e?e:this._daylightSavingAdjust(new Date(s,i,e)):this._daylightSavingAdjust(new Date(t.currentYear,t.currentMonth,t.currentDay));return this.formatDate(this._get(t,"dateFormat"),e,this._getFormatConfig(t))}}),V.fn.datepicker=function(t){if(!this.length)return this;V.datepicker.initialized||(V(document).on("mousedown",V.datepicker._checkExternalClick),V.datepicker.initialized=!0),0===V("#"+V.datepicker._mainDivId).length&&V("body").append(V.datepicker.dpDiv);var e=Array.prototype.slice.call(arguments,1);return"string"==typeof t&&("isDisabled"===t||"getDate"===t||"widget"===t)||"option"===t&&2===arguments.length&&"string"==typeof arguments[1]?V.datepicker["_"+t+"Datepicker"].apply(V.datepicker,[this[0]].concat(e)):this.each(function(){"string"==typeof t?V.datepicker["_"+t+"Datepicker"].apply(V.datepicker,[this].concat(e)):V.datepicker._attachDatepicker(this,t)})},V.datepicker=new st,V.datepicker.initialized=!1,V.datepicker.uuid=(new Date).getTime(),V.datepicker.version="1.13.1";V.datepicker,V.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase());var rt=!1;V(document).on("mouseup",function(){rt=!1});V.widget("ui.mouse",{version:"1.13.1",options:{cancel:"input, textarea, button, select, option",distance:1,delay:0},_mouseInit:function(){var e=this;this.element.on("mousedown."+this.widgetName,function(t){return e._mouseDown(t)}).on("click."+this.widgetName,function(t){if(!0===V.data(t.target,e.widgetName+".preventClickEvent"))return V.removeData(t.target,e.widgetName+".preventClickEvent"),t.stopImmediatePropagation(),!1}),this.started=!1},_mouseDestroy:function(){this.element.off("."+this.widgetName),this._mouseMoveDelegate&&this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(t){if(!rt){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(t),this._mouseDownEvent=t;var e=this,i=1===t.which,s=!("string"!=typeof this.options.cancel||!t.target.nodeName)&&V(t.target).closest(this.options.cancel).length;return i&&!s&&this._mouseCapture(t)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){e.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=!1!==this._mouseStart(t),!this._mouseStarted)?(t.preventDefault(),!0):(!0===V.data(t.target,this.widgetName+".preventClickEvent")&&V.removeData(t.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(t){return e._mouseMove(t)},this._mouseUpDelegate=function(t){return e._mouseUp(t)},this.document.on("mousemove."+this.widgetName,this._mouseMoveDelegate).on("mouseup."+this.widgetName,this._mouseUpDelegate),t.preventDefault(),rt=!0)):!0}},_mouseMove:function(t){if(this._mouseMoved){if(V.ui.ie&&(!document.documentMode||document.documentMode<9)&&!t.button)return this._mouseUp(t);if(!t.which)if(t.originalEvent.altKey||t.originalEvent.ctrlKey||t.originalEvent.metaKey||t.originalEvent.shiftKey)this.ignoreMissingWhich=!0;else if(!this.ignoreMissingWhich)return this._mouseUp(t)}return(t.which||t.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(t),t.preventDefault()):(this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=!1!==this._mouseStart(this._mouseDownEvent,t),this._mouseStarted?this._mouseDrag(t):this._mouseUp(t)),!this._mouseStarted)},_mouseUp:function(t){this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,t.target===this._mouseDownEvent.target&&V.data(t.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(t)),this._mouseDelayTimer&&(clearTimeout(this._mouseDelayTimer),delete this._mouseDelayTimer),this.ignoreMissingWhich=!1,rt=!1,t.preventDefault()},_mouseDistanceMet:function(t){return Math.max(Math.abs(this._mouseDownEvent.pageX-t.pageX),Math.abs(this._mouseDownEvent.pageY-t.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),V.ui.plugin={add:function(t,e,i){var s,n=V.ui[t].prototype;for(s in i)n.plugins[s]=n.plugins[s]||[],n.plugins[s].push([e,i[s]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;n").css("position","absolute").appendTo(t.parent()).outerWidth(t.outerWidth()).outerHeight(t.outerHeight()).offset(t.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_blurActiveElement:function(t){var e=V.ui.safeActiveElement(this.document[0]);V(t.target).closest(e).length||V.ui.safeBlur(e)},_mouseStart:function(t){var e=this.options;return this.helper=this._createHelper(t),this._addClass(this.helper,"ui-draggable-dragging"),this._cacheHelperProportions(),V.ui.ddmanager&&(V.ui.ddmanager.current=this),this._cacheMargins(),this.cssPosition=this.helper.css("position"),this.scrollParent=this.helper.scrollParent(!0),this.offsetParent=this.helper.offsetParent(),this.hasFixedAncestor=0i[2]&&(o=i[2]+this.offset.click.left),t.pageY-this.offset.click.top>i[3]&&(a=i[3]+this.offset.click.top)),s.grid&&(t=s.grid[1]?this.originalPageY+Math.round((a-this.originalPageY)/s.grid[1])*s.grid[1]:this.originalPageY,a=!i||t-this.offset.click.top>=i[1]||t-this.offset.click.top>i[3]?t:t-this.offset.click.top>=i[1]?t-s.grid[1]:t+s.grid[1],t=s.grid[0]?this.originalPageX+Math.round((o-this.originalPageX)/s.grid[0])*s.grid[0]:this.originalPageX,o=!i||t-this.offset.click.left>=i[0]||t-this.offset.click.left>i[2]?t:t-this.offset.click.left>=i[0]?t-s.grid[0]:t+s.grid[0]),"y"===s.axis&&(o=this.originalPageX),"x"===s.axis&&(a=this.originalPageY)),{top:a-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.offset.scroll.top:n?0:this.offset.scroll.top),left:o-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.offset.scroll.left:n?0:this.offset.scroll.left)}},_clear:function(){this._removeClass(this.helper,"ui-draggable-dragging"),this.helper[0]===this.element[0]||this.cancelHelperRemoval||this.helper.remove(),this.helper=null,this.cancelHelperRemoval=!1,this.destroyOnClear&&this.destroy()},_trigger:function(t,e,i){return i=i||this._uiHash(),V.ui.plugin.call(this,t,[e,i,this],!0),/^(drag|start|stop)/.test(t)&&(this.positionAbs=this._convertPositionTo("absolute"),i.offset=this.positionAbs),V.Widget.prototype._trigger.call(this,t,e,i)},plugins:{},_uiHash:function(){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}}),V.ui.plugin.add("draggable","connectToSortable",{start:function(e,t,i){var s=V.extend({},t,{item:i.element});i.sortables=[],V(i.options.connectToSortable).each(function(){var t=V(this).sortable("instance");t&&!t.options.disabled&&(i.sortables.push(t),t.refreshPositions(),t._trigger("activate",e,s))})},stop:function(e,t,i){var s=V.extend({},t,{item:i.element});i.cancelHelperRemoval=!1,V.each(i.sortables,function(){var t=this;t.isOver?(t.isOver=0,i.cancelHelperRemoval=!0,t.cancelHelperRemoval=!1,t._storedCSS={position:t.placeholder.css("position"),top:t.placeholder.css("top"),left:t.placeholder.css("left")},t._mouseStop(e),t.options.helper=t.options._helper):(t.cancelHelperRemoval=!0,t._trigger("deactivate",e,s))})},drag:function(i,s,n){V.each(n.sortables,function(){var t=!1,e=this;e.positionAbs=n.positionAbs,e.helperProportions=n.helperProportions,e.offset.click=n.offset.click,e._intersectsWith(e.containerCache)&&(t=!0,V.each(n.sortables,function(){return this.positionAbs=n.positionAbs,this.helperProportions=n.helperProportions,this.offset.click=n.offset.click,t=this!==e&&this._intersectsWith(this.containerCache)&&V.contains(e.element[0],this.element[0])?!1:t})),t?(e.isOver||(e.isOver=1,n._parent=s.helper.parent(),e.currentItem=s.helper.appendTo(e.element).data("ui-sortable-item",!0),e.options._helper=e.options.helper,e.options.helper=function(){return s.helper[0]},i.target=e.currentItem[0],e._mouseCapture(i,!0),e._mouseStart(i,!0,!0),e.offset.click.top=n.offset.click.top,e.offset.click.left=n.offset.click.left,e.offset.parent.left-=n.offset.parent.left-e.offset.parent.left,e.offset.parent.top-=n.offset.parent.top-e.offset.parent.top,n._trigger("toSortable",i),n.dropped=e.element,V.each(n.sortables,function(){this.refreshPositions()}),n.currentItem=n.element,e.fromOutside=n),e.currentItem&&(e._mouseDrag(i),s.position=e.position)):e.isOver&&(e.isOver=0,e.cancelHelperRemoval=!0,e.options._revert=e.options.revert,e.options.revert=!1,e._trigger("out",i,e._uiHash(e)),e._mouseStop(i,!0),e.options.revert=e.options._revert,e.options.helper=e.options._helper,e.placeholder&&e.placeholder.remove(),s.helper.appendTo(n._parent),n._refreshOffsets(i),s.position=n._generatePosition(i,!0),n._trigger("fromSortable",i),n.dropped=!1,V.each(n.sortables,function(){this.refreshPositions()}))})}}),V.ui.plugin.add("draggable","cursor",{start:function(t,e,i){var s=V("body"),i=i.options;s.css("cursor")&&(i._cursor=s.css("cursor")),s.css("cursor",i.cursor)},stop:function(t,e,i){i=i.options;i._cursor&&V("body").css("cursor",i._cursor)}}),V.ui.plugin.add("draggable","opacity",{start:function(t,e,i){e=V(e.helper),i=i.options;e.css("opacity")&&(i._opacity=e.css("opacity")),e.css("opacity",i.opacity)},stop:function(t,e,i){i=i.options;i._opacity&&V(e.helper).css("opacity",i._opacity)}}),V.ui.plugin.add("draggable","scroll",{start:function(t,e,i){i.scrollParentNotHidden||(i.scrollParentNotHidden=i.helper.scrollParent(!1)),i.scrollParentNotHidden[0]!==i.document[0]&&"HTML"!==i.scrollParentNotHidden[0].tagName&&(i.overflowOffset=i.scrollParentNotHidden.offset())},drag:function(t,e,i){var s=i.options,n=!1,o=i.scrollParentNotHidden[0],a=i.document[0];o!==a&&"HTML"!==o.tagName?(s.axis&&"x"===s.axis||(i.overflowOffset.top+o.offsetHeight-t.pageY
              ").css({overflow:"hidden",position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,t={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(t),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(t),this._proportionallyResize()),this._setupHandles(),e.autoHide&&V(this.element).on("mouseenter",function(){e.disabled||(i._removeClass("ui-resizable-autohide"),i._handles.show())}).on("mouseleave",function(){e.disabled||i.resizing||(i._addClass("ui-resizable-autohide"),i._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy(),this._addedHandles.remove();function t(t){V(t).removeData("resizable").removeData("ui-resizable").off(".resizable")}var e;return this.elementIsWrapper&&(t(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),t(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;case"aspectRatio":this._aspectRatio=!!e}},_setupHandles:function(){var t,e,i,s,n,o=this.options,a=this;if(this.handles=o.handles||(V(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=V(),this._addedHandles=V(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),i=this.handles.split(","),this.handles={},e=0;e"),this._addClass(n,"ui-resizable-handle "+s),n.css({zIndex:o.zIndex}),this.handles[t]=".ui-resizable-"+t,this.element.children(this.handles[t]).length||(this.element.append(n),this._addedHandles=this._addedHandles.add(n));this._renderAxis=function(t){var e,i,s;for(e in t=t||this.element,this.handles)this.handles[e].constructor===String?this.handles[e]=this.element.children(this.handles[e]).first().show():(this.handles[e].jquery||this.handles[e].nodeType)&&(this.handles[e]=V(this.handles[e]),this._on(this.handles[e],{mousedown:a._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(i=V(this.handles[e],this.element),s=/sw|ne|nw|se|n|s/.test(e)?i.outerHeight():i.outerWidth(),i=["padding",/ne|nw|n/.test(e)?"Top":/se|sw|s/.test(e)?"Bottom":/^e$/.test(e)?"Right":"Left"].join(""),t.css(i,s),this._proportionallyResize()),this._handles=this._handles.add(this.handles[e])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){a.resizing||(this.className&&(n=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),a.axis=n&&n[1]?n[1]:"se")}),o.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._addedHandles.remove()},_mouseCapture:function(t){var e,i,s=!1;for(e in this.handles)(i=V(this.handles[e])[0])!==t.target&&!V.contains(i,t.target)||(s=!0);return!this.options.disabled&&s},_mouseStart:function(t){var e,i,s=this.options,n=this.element;return this.resizing=!0,this._renderProxy(),e=this._num(this.helper.css("left")),i=this._num(this.helper.css("top")),s.containment&&(e+=V(s.containment).scrollLeft()||0,i+=V(s.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:e,top:i},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:n.width(),height:n.height()},this.originalSize=this._helper?{width:n.outerWidth(),height:n.outerHeight()}:{width:n.width(),height:n.height()},this.sizeDiff={width:n.outerWidth()-n.width(),height:n.outerHeight()-n.height()},this.originalPosition={left:e,top:i},this.originalMousePosition={left:t.pageX,top:t.pageY},this.aspectRatio="number"==typeof s.aspectRatio?s.aspectRatio:this.originalSize.width/this.originalSize.height||1,s=V(".ui-resizable-"+this.axis).css("cursor"),V("body").css("cursor","auto"===s?this.axis+"-resize":s),this._addClass("ui-resizable-resizing"),this._propagate("start",t),!0},_mouseDrag:function(t){var e=this.originalMousePosition,i=this.axis,s=t.pageX-e.left||0,e=t.pageY-e.top||0,i=this._change[i];return this._updatePrevProperties(),i&&(e=i.apply(this,[t,s,e]),this._updateVirtualBoundaries(t.shiftKey),(this._aspectRatio||t.shiftKey)&&(e=this._updateRatio(e,t)),e=this._respectSize(e,t),this._updateCache(e),this._propagate("resize",t),e=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),V.isEmptyObject(e)||(this._updatePrevProperties(),this._trigger("resize",t,this.ui()),this._applyChanges())),!1},_mouseStop:function(t){this.resizing=!1;var e,i,s,n=this.options,o=this;return this._helper&&(s=(e=(i=this._proportionallyResizeElements).length&&/textarea/i.test(i[0].nodeName))&&this._hasScroll(i[0],"left")?0:o.sizeDiff.height,i=e?0:o.sizeDiff.width,e={width:o.helper.width()-i,height:o.helper.height()-s},i=parseFloat(o.element.css("left"))+(o.position.left-o.originalPosition.left)||null,s=parseFloat(o.element.css("top"))+(o.position.top-o.originalPosition.top)||null,n.animate||this.element.css(V.extend(e,{top:s,left:i})),o.helper.height(o.size.height),o.helper.width(o.size.width),this._helper&&!n.animate&&this._proportionallyResize()),V("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",t),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s=this.options,n={minWidth:this._isNumber(s.minWidth)?s.minWidth:0,maxWidth:this._isNumber(s.maxWidth)?s.maxWidth:1/0,minHeight:this._isNumber(s.minHeight)?s.minHeight:0,maxHeight:this._isNumber(s.maxHeight)?s.maxHeight:1/0};(this._aspectRatio||t)&&(e=n.minHeight*this.aspectRatio,i=n.minWidth/this.aspectRatio,s=n.maxHeight*this.aspectRatio,t=n.maxWidth/this.aspectRatio,e>n.minWidth&&(n.minWidth=e),i>n.minHeight&&(n.minHeight=i),st.width,a=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,r=this.originalPosition.left+this.originalSize.width,l=this.originalPosition.top+this.originalSize.height,h=/sw|nw|w/.test(i),i=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),a&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&h&&(t.left=r-e.minWidth),s&&h&&(t.left=r-e.maxWidth),a&&i&&(t.top=l-e.minHeight),n&&i&&(t.top=l-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];e<4;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;e
              ").css({overflow:"hidden"}),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++e.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize;return{left:this.originalPosition.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize;return{top:this.originalPosition.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(t,e,i){return V.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},sw:function(t,e,i){return V.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,e,i]))},ne:function(t,e,i){return V.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},nw:function(t,e,i){return V.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,e,i]))}},_propagate:function(t,e){V.ui.plugin.call(this,t,[e,this.ui()]),"resize"!==t&&this._trigger(t,e,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),V.ui.plugin.add("resizable","animate",{stop:function(e){var i=V(this).resizable("instance"),t=i.options,s=i._proportionallyResizeElements,n=s.length&&/textarea/i.test(s[0].nodeName),o=n&&i._hasScroll(s[0],"left")?0:i.sizeDiff.height,a=n?0:i.sizeDiff.width,n={width:i.size.width-a,height:i.size.height-o},a=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,o=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(V.extend(n,o&&a?{top:o,left:a}:{}),{duration:t.animateDuration,easing:t.animateEasing,step:function(){var t={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};s&&s.length&&V(s[0]).css({width:t.width,height:t.height}),i._updateCache(t),i._propagate("resize",e)}})}}),V.ui.plugin.add("resizable","containment",{start:function(){var i,s,n=V(this).resizable("instance"),t=n.options,e=n.element,o=t.containment,a=o instanceof V?o.get(0):/parent/.test(o)?e.parent().get(0):o;a&&(n.containerElement=V(a),/document/.test(o)||o===document?(n.containerOffset={left:0,top:0},n.containerPosition={left:0,top:0},n.parentData={element:V(document),left:0,top:0,width:V(document).width(),height:V(document).height()||document.body.parentNode.scrollHeight}):(i=V(a),s=[],V(["Top","Right","Left","Bottom"]).each(function(t,e){s[t]=n._num(i.css("padding"+e))}),n.containerOffset=i.offset(),n.containerPosition=i.position(),n.containerSize={height:i.innerHeight()-s[3],width:i.innerWidth()-s[1]},t=n.containerOffset,e=n.containerSize.height,o=n.containerSize.width,o=n._hasScroll(a,"left")?a.scrollWidth:o,e=n._hasScroll(a)?a.scrollHeight:e,n.parentData={element:a,left:t.left,top:t.top,width:o,height:e}))},resize:function(t){var e=V(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.position,o=e._aspectRatio||t.shiftKey,a={top:0,left:0},r=e.containerElement,t=!0;r[0]!==document&&/static/.test(r.css("position"))&&(a=s),n.left<(e._helper?s.left:0)&&(e.size.width=e.size.width+(e._helper?e.position.left-s.left:e.position.left-a.left),o&&(e.size.height=e.size.width/e.aspectRatio,t=!1),e.position.left=i.helper?s.left:0),n.top<(e._helper?s.top:0)&&(e.size.height=e.size.height+(e._helper?e.position.top-s.top:e.position.top),o&&(e.size.width=e.size.height*e.aspectRatio,t=!1),e.position.top=e._helper?s.top:0),i=e.containerElement.get(0)===e.element.parent().get(0),n=/relative|absolute/.test(e.containerElement.css("position")),i&&n?(e.offset.left=e.parentData.left+e.position.left,e.offset.top=e.parentData.top+e.position.top):(e.offset.left=e.element.offset().left,e.offset.top=e.element.offset().top),n=Math.abs(e.sizeDiff.width+(e._helper?e.offset.left-a.left:e.offset.left-s.left)),s=Math.abs(e.sizeDiff.height+(e._helper?e.offset.top-a.top:e.offset.top-s.top)),n+e.size.width>=e.parentData.width&&(e.size.width=e.parentData.width-n,o&&(e.size.height=e.size.width/e.aspectRatio,t=!1)),s+e.size.height>=e.parentData.height&&(e.size.height=e.parentData.height-s,o&&(e.size.width=e.size.height*e.aspectRatio,t=!1)),t||(e.position.left=e.prevPosition.left,e.position.top=e.prevPosition.top,e.size.width=e.prevSize.width,e.size.height=e.prevSize.height)},stop:function(){var t=V(this).resizable("instance"),e=t.options,i=t.containerOffset,s=t.containerPosition,n=t.containerElement,o=V(t.helper),a=o.offset(),r=o.outerWidth()-t.sizeDiff.width,o=o.outerHeight()-t.sizeDiff.height;t._helper&&!e.animate&&/relative/.test(n.css("position"))&&V(this).css({left:a.left-s.left-i.left,width:r,height:o}),t._helper&&!e.animate&&/static/.test(n.css("position"))&&V(this).css({left:a.left-s.left-i.left,width:r,height:o})}}),V.ui.plugin.add("resizable","alsoResize",{start:function(){var t=V(this).resizable("instance").options;V(t.alsoResize).each(function(){var t=V(this);t.data("ui-resizable-alsoresize",{width:parseFloat(t.width()),height:parseFloat(t.height()),left:parseFloat(t.css("left")),top:parseFloat(t.css("top"))})})},resize:function(t,i){var e=V(this).resizable("instance"),s=e.options,n=e.originalSize,o=e.originalPosition,a={height:e.size.height-n.height||0,width:e.size.width-n.width||0,top:e.position.top-o.top||0,left:e.position.left-o.left||0};V(s.alsoResize).each(function(){var t=V(this),s=V(this).data("ui-resizable-alsoresize"),n={},e=t.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];V.each(e,function(t,e){var i=(s[e]||0)+(a[e]||0);i&&0<=i&&(n[e]=i||null)}),t.css(n)})},stop:function(){V(this).removeData("ui-resizable-alsoresize")}}),V.ui.plugin.add("resizable","ghost",{start:function(){var t=V(this).resizable("instance"),e=t.size;t.ghost=t.originalElement.clone(),t.ghost.css({opacity:.25,display:"block",position:"relative",height:e.height,width:e.width,margin:0,left:0,top:0}),t._addClass(t.ghost,"ui-resizable-ghost"),!1!==V.uiBackCompat&&"string"==typeof t.options.ghost&&t.ghost.addClass(this.options.ghost),t.ghost.appendTo(t.helper)},resize:function(){var t=V(this).resizable("instance");t.ghost&&t.ghost.css({position:"relative",height:t.size.height,width:t.size.width})},stop:function(){var t=V(this).resizable("instance");t.ghost&&t.helper&&t.helper.get(0).removeChild(t.ghost.get(0))}}),V.ui.plugin.add("resizable","grid",{resize:function(){var t,e=V(this).resizable("instance"),i=e.options,s=e.size,n=e.originalSize,o=e.originalPosition,a=e.axis,r="number"==typeof i.grid?[i.grid,i.grid]:i.grid,l=r[0]||1,h=r[1]||1,c=Math.round((s.width-n.width)/l)*l,u=Math.round((s.height-n.height)/h)*h,d=n.width+c,p=n.height+u,f=i.maxWidth&&i.maxWidthd,s=i.minHeight&&i.minHeight>p;i.grid=r,m&&(d+=l),s&&(p+=h),f&&(d-=l),g&&(p-=h),/^(se|s|e)$/.test(a)?(e.size.width=d,e.size.height=p):/^(ne)$/.test(a)?(e.size.width=d,e.size.height=p,e.position.top=o.top-u):/^(sw)$/.test(a)?(e.size.width=d,e.size.height=p,e.position.left=o.left-c):((p-h<=0||d-l<=0)&&(t=e._getPaddingPlusBorderDimensions(this)),0=+this.uiDialog.css("z-index")&&(this.uiDialog.css("z-index",s+1),i=!0),i&&!e&&this._trigger("focus",t),i},open:function(){var t=this;this._isOpen?this._moveToTop()&&this._focusTabbable():(this._isOpen=!0,this.opener=V(V.ui.safeActiveElement(this.document[0])),this._size(),this._position(),this._createOverlay(),this._moveToTop(null,!0),this.overlay&&this.overlay.css("z-index",this.uiDialog.css("z-index")-1),this._show(this.uiDialog,this.options.show,function(){t._focusTabbable(),t._trigger("focus")}),this._makeFocusTarget(),this._trigger("open"))},_focusTabbable:function(){var t=this._focusedElement;(t=!(t=!(t=!(t=!(t=t||this.element.find("[autofocus]")).length?this.element.find(":tabbable"):t).length?this.uiDialogButtonPane.find(":tabbable"):t).length?this.uiDialogTitlebarClose.filter(":tabbable"):t).length?this.uiDialog:t).eq(0).trigger("focus")},_restoreTabbableFocus:function(){var t=V.ui.safeActiveElement(this.document[0]);this.uiDialog[0]===t||V.contains(this.uiDialog[0],t)||this._focusTabbable()},_keepFocus:function(t){t.preventDefault(),this._restoreTabbableFocus(),this._delay(this._restoreTabbableFocus)},_createWrapper:function(){this.uiDialog=V("
              ").hide().attr({tabIndex:-1,role:"dialog"}).appendTo(this._appendTo()),this._addClass(this.uiDialog,"ui-dialog","ui-widget ui-widget-content ui-front"),this._on(this.uiDialog,{keydown:function(t){if(this.options.closeOnEscape&&!t.isDefaultPrevented()&&t.keyCode&&t.keyCode===V.ui.keyCode.ESCAPE)return t.preventDefault(),void this.close(t);var e,i,s;t.keyCode!==V.ui.keyCode.TAB||t.isDefaultPrevented()||(e=this.uiDialog.find(":tabbable"),i=e.first(),s=e.last(),t.target!==s[0]&&t.target!==this.uiDialog[0]||t.shiftKey?t.target!==i[0]&&t.target!==this.uiDialog[0]||!t.shiftKey||(this._delay(function(){s.trigger("focus")}),t.preventDefault()):(this._delay(function(){i.trigger("focus")}),t.preventDefault()))},mousedown:function(t){this._moveToTop(t)&&this._focusTabbable()}}),this.element.find("[aria-describedby]").length||this.uiDialog.attr({"aria-describedby":this.element.uniqueId().attr("id")})},_createTitlebar:function(){var t;this.uiDialogTitlebar=V("
              "),this._addClass(this.uiDialogTitlebar,"ui-dialog-titlebar","ui-widget-header ui-helper-clearfix"),this._on(this.uiDialogTitlebar,{mousedown:function(t){V(t.target).closest(".ui-dialog-titlebar-close")||this.uiDialog.trigger("focus")}}),this.uiDialogTitlebarClose=V("").button({label:V("").text(this.options.closeText).html(),icon:"ui-icon-closethick",showLabel:!1}).appendTo(this.uiDialogTitlebar),this._addClass(this.uiDialogTitlebarClose,"ui-dialog-titlebar-close"),this._on(this.uiDialogTitlebarClose,{click:function(t){t.preventDefault(),this.close(t)}}),t=V("").uniqueId().prependTo(this.uiDialogTitlebar),this._addClass(t,"ui-dialog-title"),this._title(t),this.uiDialogTitlebar.prependTo(this.uiDialog),this.uiDialog.attr({"aria-labelledby":t.attr("id")})},_title:function(t){this.options.title?t.text(this.options.title):t.html(" ")},_createButtonPane:function(){this.uiDialogButtonPane=V("
              "),this._addClass(this.uiDialogButtonPane,"ui-dialog-buttonpane","ui-widget-content ui-helper-clearfix"),this.uiButtonSet=V("
              ").appendTo(this.uiDialogButtonPane),this._addClass(this.uiButtonSet,"ui-dialog-buttonset"),this._createButtons()},_createButtons:function(){var s=this,t=this.options.buttons;this.uiDialogButtonPane.remove(),this.uiButtonSet.empty(),V.isEmptyObject(t)||Array.isArray(t)&&!t.length?this._removeClass(this.uiDialog,"ui-dialog-buttons"):(V.each(t,function(t,e){var i;e=V.extend({type:"button"},e="function"==typeof e?{click:e,text:t}:e),i=e.click,t={icon:e.icon,iconPosition:e.iconPosition,showLabel:e.showLabel,icons:e.icons,text:e.text},delete e.click,delete e.icon,delete e.iconPosition,delete e.showLabel,delete e.icons,"boolean"==typeof e.text&&delete e.text,V("",e).button(t).appendTo(s.uiButtonSet).on("click",function(){i.apply(s.element[0],arguments)})}),this._addClass(this.uiDialog,"ui-dialog-buttons"),this.uiDialogButtonPane.appendTo(this.uiDialog))},_makeDraggable:function(){var n=this,o=this.options;function a(t){return{position:t.position,offset:t.offset}}this.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(t,e){n._addClass(V(this),"ui-dialog-dragging"),n._blockFrames(),n._trigger("dragStart",t,a(e))},drag:function(t,e){n._trigger("drag",t,a(e))},stop:function(t,e){var i=e.offset.left-n.document.scrollLeft(),s=e.offset.top-n.document.scrollTop();o.position={my:"left top",at:"left"+(0<=i?"+":"")+i+" top"+(0<=s?"+":"")+s,of:n.window},n._removeClass(V(this),"ui-dialog-dragging"),n._unblockFrames(),n._trigger("dragStop",t,a(e))}})},_makeResizable:function(){var n=this,o=this.options,t=o.resizable,e=this.uiDialog.css("position"),t="string"==typeof t?t:"n,e,s,w,se,sw,ne,nw";function a(t){return{originalPosition:t.originalPosition,originalSize:t.originalSize,position:t.position,size:t.size}}this.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:this.element,maxWidth:o.maxWidth,maxHeight:o.maxHeight,minWidth:o.minWidth,minHeight:this._minHeight(),handles:t,start:function(t,e){n._addClass(V(this),"ui-dialog-resizing"),n._blockFrames(),n._trigger("resizeStart",t,a(e))},resize:function(t,e){n._trigger("resize",t,a(e))},stop:function(t,e){var i=n.uiDialog.offset(),s=i.left-n.document.scrollLeft(),i=i.top-n.document.scrollTop();o.height=n.uiDialog.height(),o.width=n.uiDialog.width(),o.position={my:"left top",at:"left"+(0<=s?"+":"")+s+" top"+(0<=i?"+":"")+i,of:n.window},n._removeClass(V(this),"ui-dialog-resizing"),n._unblockFrames(),n._trigger("resizeStop",t,a(e))}}).css("position",e)},_trackFocus:function(){this._on(this.widget(),{focusin:function(t){this._makeFocusTarget(),this._focusedElement=V(t.target)}})},_makeFocusTarget:function(){this._untrackInstance(),this._trackingInstances().unshift(this)},_untrackInstance:function(){var t=this._trackingInstances(),e=V.inArray(this,t);-1!==e&&t.splice(e,1)},_trackingInstances:function(){var t=this.document.data("ui-dialog-instances");return t||this.document.data("ui-dialog-instances",t=[]),t},_minHeight:function(){var t=this.options;return"auto"===t.height?t.minHeight:Math.min(t.minHeight,t.height)},_position:function(){var t=this.uiDialog.is(":visible");t||this.uiDialog.show(),this.uiDialog.position(this.options.position),t||this.uiDialog.hide()},_setOptions:function(t){var i=this,s=!1,n={};V.each(t,function(t,e){i._setOption(t,e),t in i.sizeRelatedOptions&&(s=!0),t in i.resizableRelatedOptions&&(n[t]=e)}),s&&(this._size(),this._position()),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option",n)},_setOption:function(t,e){var i,s=this.uiDialog;"disabled"!==t&&(this._super(t,e),"appendTo"===t&&this.uiDialog.appendTo(this._appendTo()),"buttons"===t&&this._createButtons(),"closeText"===t&&this.uiDialogTitlebarClose.button({label:V("").text(""+this.options.closeText).html()}),"draggable"===t&&((i=s.is(":data(ui-draggable)"))&&!e&&s.draggable("destroy"),!i&&e&&this._makeDraggable()),"position"===t&&this._position(),"resizable"===t&&((i=s.is(":data(ui-resizable)"))&&!e&&s.resizable("destroy"),i&&"string"==typeof e&&s.resizable("option","handles",e),i||!1===e||this._makeResizable()),"title"===t&&this._title(this.uiDialogTitlebar.find(".ui-dialog-title")))},_size:function(){var t,e,i,s=this.options;this.element.show().css({width:"auto",minHeight:0,maxHeight:"none",height:0}),s.minWidth>s.width&&(s.width=s.minWidth),t=this.uiDialog.css({height:"auto",width:s.width}).outerHeight(),e=Math.max(0,s.minHeight-t),i="number"==typeof s.maxHeight?Math.max(0,s.maxHeight-t):"none","auto"===s.height?this.element.css({minHeight:e,maxHeight:i,height:"auto"}):this.element.height(Math.max(0,s.height-t)),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())},_blockFrames:function(){this.iframeBlocks=this.document.find("iframe").map(function(){var t=V(this);return V("
              ").css({position:"absolute",width:t.outerWidth(),height:t.outerHeight()}).appendTo(t.parent()).offset(t.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_allowInteraction:function(t){return!!V(t.target).closest(".ui-dialog").length||!!V(t.target).closest(".ui-datepicker").length},_createOverlay:function(){var i,s;this.options.modal&&(i=V.fn.jquery.substring(0,4),s=!0,this._delay(function(){s=!1}),this.document.data("ui-dialog-overlays")||this.document.on("focusin.ui-dialog",function(t){var e;s||((e=this._trackingInstances()[0])._allowInteraction(t)||(t.preventDefault(),e._focusTabbable(),"3.4."!==i&&"3.5."!==i||e._delay(e._restoreTabbableFocus)))}.bind(this)),this.overlay=V("
              ").appendTo(this._appendTo()),this._addClass(this.overlay,null,"ui-widget-overlay ui-front"),this._on(this.overlay,{mousedown:"_keepFocus"}),this.document.data("ui-dialog-overlays",(this.document.data("ui-dialog-overlays")||0)+1))},_destroyOverlay:function(){var t;this.options.modal&&this.overlay&&((t=this.document.data("ui-dialog-overlays")-1)?this.document.data("ui-dialog-overlays",t):(this.document.off("focusin.ui-dialog"),this.document.removeData("ui-dialog-overlays")),this.overlay.remove(),this.overlay=null)}}),!1!==V.uiBackCompat&&V.widget("ui.dialog",V.ui.dialog,{options:{dialogClass:""},_createWrapper:function(){this._super(),this.uiDialog.addClass(this.options.dialogClass)},_setOption:function(t,e){"dialogClass"===t&&this.uiDialog.removeClass(this.options.dialogClass).addClass(e),this._superApply(arguments)}});V.ui.dialog;function lt(t,e,i){return e<=t&&t").appendTo(this.element),this._addClass(this.valueDiv,"ui-progressbar-value","ui-widget-header"),this._refreshValue()},_destroy:function(){this.element.removeAttr("role aria-valuemin aria-valuemax aria-valuenow"),this.valueDiv.remove()},value:function(t){if(void 0===t)return this.options.value;this.options.value=this._constrainedValue(t),this._refreshValue()},_constrainedValue:function(t){return void 0===t&&(t=this.options.value),this.indeterminate=!1===t,"number"!=typeof t&&(t=0),!this.indeterminate&&Math.min(this.options.max,Math.max(this.min,t))},_setOptions:function(t){var e=t.value;delete t.value,this._super(t),this.options.value=this._constrainedValue(e),this._refreshValue()},_setOption:function(t,e){"max"===t&&(e=Math.max(this.min,e)),this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",t),this._toggleClass(null,"ui-state-disabled",!!t)},_percentage:function(){return this.indeterminate?100:100*(this.options.value-this.min)/(this.options.max-this.min)},_refreshValue:function(){var t=this.options.value,e=this._percentage();this.valueDiv.toggle(this.indeterminate||t>this.min).width(e.toFixed(0)+"%"),this._toggleClass(this.valueDiv,"ui-progressbar-complete",null,t===this.options.max)._toggleClass("ui-progressbar-indeterminate",null,this.indeterminate),this.indeterminate?(this.element.removeAttr("aria-valuenow"),this.overlayDiv||(this.overlayDiv=V("
              ").appendTo(this.valueDiv),this._addClass(this.overlayDiv,"ui-progressbar-overlay"))):(this.element.attr({"aria-valuemax":this.options.max,"aria-valuenow":t}),this.overlayDiv&&(this.overlayDiv.remove(),this.overlayDiv=null)),this.oldValue!==t&&(this.oldValue=t,this._trigger("change")),t===this.options.max&&this._trigger("complete")}}),V.widget("ui.selectable",V.ui.mouse,{version:"1.13.1",options:{appendTo:"body",autoRefresh:!0,distance:0,filter:"*",tolerance:"touch",selected:null,selecting:null,start:null,stop:null,unselected:null,unselecting:null},_create:function(){var i=this;this._addClass("ui-selectable"),this.dragged=!1,this.refresh=function(){i.elementPos=V(i.element[0]).offset(),i.selectees=V(i.options.filter,i.element[0]),i._addClass(i.selectees,"ui-selectee"),i.selectees.each(function(){var t=V(this),e=t.offset(),e={left:e.left-i.elementPos.left,top:e.top-i.elementPos.top};V.data(this,"selectable-item",{element:this,$element:t,left:e.left,top:e.top,right:e.left+t.outerWidth(),bottom:e.top+t.outerHeight(),startselected:!1,selected:t.hasClass("ui-selected"),selecting:t.hasClass("ui-selecting"),unselecting:t.hasClass("ui-unselecting")})})},this.refresh(),this._mouseInit(),this.helper=V("
              "),this._addClass(this.helper,"ui-selectable-helper")},_destroy:function(){this.selectees.removeData("selectable-item"),this._mouseDestroy()},_mouseStart:function(i){var s=this,t=this.options;this.opos=[i.pageX,i.pageY],this.elementPos=V(this.element[0]).offset(),this.options.disabled||(this.selectees=V(t.filter,this.element[0]),this._trigger("start",i),V(t.appendTo).append(this.helper),this.helper.css({left:i.pageX,top:i.pageY,width:0,height:0}),t.autoRefresh&&this.refresh(),this.selectees.filter(".ui-selected").each(function(){var t=V.data(this,"selectable-item");t.startselected=!0,i.metaKey||i.ctrlKey||(s._removeClass(t.$element,"ui-selected"),t.selected=!1,s._addClass(t.$element,"ui-unselecting"),t.unselecting=!0,s._trigger("unselecting",i,{unselecting:t.element}))}),V(i.target).parents().addBack().each(function(){var t,e=V.data(this,"selectable-item");if(e)return t=!i.metaKey&&!i.ctrlKey||!e.$element.hasClass("ui-selected"),s._removeClass(e.$element,t?"ui-unselecting":"ui-selected")._addClass(e.$element,t?"ui-selecting":"ui-unselecting"),e.unselecting=!t,e.selecting=t,(e.selected=t)?s._trigger("selecting",i,{selecting:e.element}):s._trigger("unselecting",i,{unselecting:e.element}),!1}))},_mouseDrag:function(s){if(this.dragged=!0,!this.options.disabled){var t,n=this,o=this.options,a=this.opos[0],r=this.opos[1],l=s.pageX,h=s.pageY;return ll||i.righth||i.bottoma&&i.rightr&&i.bottom",options:{appendTo:null,classes:{"ui-selectmenu-button-open":"ui-corner-top","ui-selectmenu-button-closed":"ui-corner-all"},disabled:null,icons:{button:"ui-icon-triangle-1-s"},position:{my:"left top",at:"left bottom",collision:"none"},width:!1,change:null,close:null,focus:null,open:null,select:null},_create:function(){var t=this.element.uniqueId().attr("id");this.ids={element:t,button:t+"-button",menu:t+"-menu"},this._drawButton(),this._drawMenu(),this._bindFormResetHandler(),this._rendered=!1,this.menuItems=V()},_drawButton:function(){var t,e=this,i=this._parseOption(this.element.find("option:selected"),this.element[0].selectedIndex);this.labels=this.element.labels().attr("for",this.ids.button),this._on(this.labels,{click:function(t){this.button.trigger("focus"),t.preventDefault()}}),this.element.hide(),this.button=V("",{tabindex:this.options.disabled?-1:0,id:this.ids.button,role:"combobox","aria-expanded":"false","aria-autocomplete":"list","aria-owns":this.ids.menu,"aria-haspopup":"true",title:this.element.attr("title")}).insertAfter(this.element),this._addClass(this.button,"ui-selectmenu-button ui-selectmenu-button-closed","ui-button ui-widget"),t=V("").appendTo(this.button),this._addClass(t,"ui-selectmenu-icon","ui-icon "+this.options.icons.button),this.buttonItem=this._renderButtonItem(i).appendTo(this.button),!1!==this.options.width&&this._resizeButton(),this._on(this.button,this._buttonEvents),this.button.one("focusin",function(){e._rendered||e._refreshMenu()})},_drawMenu:function(){var i=this;this.menu=V("
                ",{"aria-hidden":"true","aria-labelledby":this.ids.button,id:this.ids.menu}),this.menuWrap=V("
                ").append(this.menu),this._addClass(this.menuWrap,"ui-selectmenu-menu","ui-front"),this.menuWrap.appendTo(this._appendTo()),this.menuInstance=this.menu.menu({classes:{"ui-menu":"ui-corner-bottom"},role:"listbox",select:function(t,e){t.preventDefault(),i._setSelection(),i._select(e.item.data("ui-selectmenu-item"),t)},focus:function(t,e){e=e.item.data("ui-selectmenu-item");null!=i.focusIndex&&e.index!==i.focusIndex&&(i._trigger("focus",t,{item:e}),i.isOpen||i._select(e,t)),i.focusIndex=e.index,i.button.attr("aria-activedescendant",i.menuItems.eq(e.index).attr("id"))}}).menu("instance"),this.menuInstance._off(this.menu,"mouseleave"),this.menuInstance._closeOnDocumentClick=function(){return!1},this.menuInstance._isDivider=function(){return!1}},refresh:function(){this._refreshMenu(),this.buttonItem.replaceWith(this.buttonItem=this._renderButtonItem(this._getSelectedItem().data("ui-selectmenu-item")||{})),null===this.options.width&&this._resizeButton()},_refreshMenu:function(){var t=this.element.find("option");this.menu.empty(),this._parseOptions(t),this._renderMenu(this.menu,this.items),this.menuInstance.refresh(),this.menuItems=this.menu.find("li").not(".ui-selectmenu-optgroup").find(".ui-menu-item-wrapper"),this._rendered=!0,t.length&&(t=this._getSelectedItem(),this.menuInstance.focus(null,t),this._setAria(t.data("ui-selectmenu-item")),this._setOption("disabled",this.element.prop("disabled")))},open:function(t){this.options.disabled||(this._rendered?(this._removeClass(this.menu.find(".ui-state-active"),null,"ui-state-active"),this.menuInstance.focus(null,this._getSelectedItem())):this._refreshMenu(),this.menuItems.length&&(this.isOpen=!0,this._toggleAttr(),this._resizeMenu(),this._position(),this._on(this.document,this._documentClick),this._trigger("open",t)))},_position:function(){this.menuWrap.position(V.extend({of:this.button},this.options.position))},close:function(t){this.isOpen&&(this.isOpen=!1,this._toggleAttr(),this.range=null,this._off(this.document),this._trigger("close",t))},widget:function(){return this.button},menuWidget:function(){return this.menu},_renderButtonItem:function(t){var e=V("");return this._setText(e,t.label),this._addClass(e,"ui-selectmenu-text"),e},_renderMenu:function(s,t){var n=this,o="";V.each(t,function(t,e){var i;e.optgroup!==o&&(i=V("
              • ",{text:e.optgroup}),n._addClass(i,"ui-selectmenu-optgroup","ui-menu-divider"+(e.element.parent("optgroup").prop("disabled")?" ui-state-disabled":"")),i.appendTo(s),o=e.optgroup),n._renderItemData(s,e)})},_renderItemData:function(t,e){return this._renderItem(t,e).data("ui-selectmenu-item",e)},_renderItem:function(t,e){var i=V("
              • "),s=V("
                ",{title:e.element.attr("title")});return e.disabled&&this._addClass(i,null,"ui-state-disabled"),this._setText(s,e.label),i.append(s).appendTo(t)},_setText:function(t,e){e?t.text(e):t.html(" ")},_move:function(t,e){var i,s=".ui-menu-item";this.isOpen?i=this.menuItems.eq(this.focusIndex).parent("li"):(i=this.menuItems.eq(this.element[0].selectedIndex).parent("li"),s+=":not(.ui-state-disabled)"),(s="first"===t||"last"===t?i["first"===t?"prevAll":"nextAll"](s).eq(-1):i[t+"All"](s).eq(0)).length&&this.menuInstance.focus(e,s)},_getSelectedItem:function(){return this.menuItems.eq(this.element[0].selectedIndex).parent("li")},_toggle:function(t){this[this.isOpen?"close":"open"](t)},_setSelection:function(){var t;this.range&&(window.getSelection?((t=window.getSelection()).removeAllRanges(),t.addRange(this.range)):this.range.select(),this.button.focus())},_documentClick:{mousedown:function(t){this.isOpen&&(V(t.target).closest(".ui-selectmenu-menu, #"+V.escapeSelector(this.ids.button)).length||this.close(t))}},_buttonEvents:{mousedown:function(){var t;window.getSelection?(t=window.getSelection()).rangeCount&&(this.range=t.getRangeAt(0)):this.range=document.selection.createRange()},click:function(t){this._setSelection(),this._toggle(t)},keydown:function(t){var e=!0;switch(t.keyCode){case V.ui.keyCode.TAB:case V.ui.keyCode.ESCAPE:this.close(t),e=!1;break;case V.ui.keyCode.ENTER:this.isOpen&&this._selectFocusedItem(t);break;case V.ui.keyCode.UP:t.altKey?this._toggle(t):this._move("prev",t);break;case V.ui.keyCode.DOWN:t.altKey?this._toggle(t):this._move("next",t);break;case V.ui.keyCode.SPACE:this.isOpen?this._selectFocusedItem(t):this._toggle(t);break;case V.ui.keyCode.LEFT:this._move("prev",t);break;case V.ui.keyCode.RIGHT:this._move("next",t);break;case V.ui.keyCode.HOME:case V.ui.keyCode.PAGE_UP:this._move("first",t);break;case V.ui.keyCode.END:case V.ui.keyCode.PAGE_DOWN:this._move("last",t);break;default:this.menu.trigger(t),e=!1}e&&t.preventDefault()}},_selectFocusedItem:function(t){var e=this.menuItems.eq(this.focusIndex).parent("li");e.hasClass("ui-state-disabled")||this._select(e.data("ui-selectmenu-item"),t)},_select:function(t,e){var i=this.element[0].selectedIndex;this.element[0].selectedIndex=t.index,this.buttonItem.replaceWith(this.buttonItem=this._renderButtonItem(t)),this._setAria(t),this._trigger("select",e,{item:t}),t.index!==i&&this._trigger("change",e,{item:t}),this.close(e)},_setAria:function(t){t=this.menuItems.eq(t.index).attr("id");this.button.attr({"aria-labelledby":t,"aria-activedescendant":t}),this.menu.attr("aria-activedescendant",t)},_setOption:function(t,e){var i;"icons"===t&&(i=this.button.find("span.ui-icon"),this._removeClass(i,null,this.options.icons.button)._addClass(i,null,e.button)),this._super(t,e),"appendTo"===t&&this.menuWrap.appendTo(this._appendTo()),"width"===t&&this._resizeButton()},_setOptionDisabled:function(t){this._super(t),this.menuInstance.option("disabled",t),this.button.attr("aria-disabled",t),this._toggleClass(this.button,null,"ui-state-disabled",t),this.element.prop("disabled",t),t?(this.button.attr("tabindex",-1),this.close()):this.button.attr("tabindex",0)},_appendTo:function(){var t=this.options.appendTo;return t=!(t=!(t=t&&(t.jquery||t.nodeType?V(t):this.document.find(t).eq(0)))||!t[0]?this.element.closest(".ui-front, dialog"):t).length?this.document[0].body:t},_toggleAttr:function(){this.button.attr("aria-expanded",this.isOpen),this._removeClass(this.button,"ui-selectmenu-button-"+(this.isOpen?"closed":"open"))._addClass(this.button,"ui-selectmenu-button-"+(this.isOpen?"open":"closed"))._toggleClass(this.menuWrap,"ui-selectmenu-open",null,this.isOpen),this.menu.attr("aria-hidden",!this.isOpen)},_resizeButton:function(){var t=this.options.width;!1!==t?(null===t&&(t=this.element.show().outerWidth(),this.element.hide()),this.button.outerWidth(t)):this.button.css("width","")},_resizeMenu:function(){this.menu.outerWidth(Math.max(this.button.outerWidth(),this.menu.width("").outerWidth()+1))},_getCreateOptions:function(){var t=this._super();return t.disabled=this.element.prop("disabled"),t},_parseOptions:function(t){var i=this,s=[];t.each(function(t,e){e.hidden||s.push(i._parseOption(V(e),t))}),this.items=s},_parseOption:function(t,e){var i=t.parent("optgroup");return{element:t,index:e,value:t.val(),label:t.text(),optgroup:i.attr("label")||"",disabled:i.prop("disabled")||t.prop("disabled")}},_destroy:function(){this._unbindFormResetHandler(),this.menuWrap.remove(),this.button.remove(),this.element.show(),this.element.removeUniqueId(),this.labels.attr("for",this.ids.element)}}]),V.widget("ui.slider",V.ui.mouse,{version:"1.13.1",widgetEventPrefix:"slide",options:{animate:!1,classes:{"ui-slider":"ui-corner-all","ui-slider-handle":"ui-corner-all","ui-slider-range":"ui-corner-all ui-widget-header"},distance:0,max:100,min:0,orientation:"horizontal",range:!1,step:1,value:0,values:null,change:null,slide:null,start:null,stop:null},numPages:5,_create:function(){this._keySliding=!1,this._mouseSliding=!1,this._animateOff=!0,this._handleIndex=null,this._detectOrientation(),this._mouseInit(),this._calculateNewMax(),this._addClass("ui-slider ui-slider-"+this.orientation,"ui-widget ui-widget-content"),this._refresh(),this._animateOff=!1},_refresh:function(){this._createRange(),this._createHandles(),this._setupEvents(),this._refreshValue()},_createHandles:function(){var t,e=this.options,i=this.element.find(".ui-slider-handle"),s=[],n=e.values&&e.values.length||1;for(i.length>n&&(i.slice(n).remove(),i=i.slice(0,n)),t=i.length;t");this.handles=i.add(V(s.join("")).appendTo(this.element)),this._addClass(this.handles,"ui-slider-handle","ui-state-default"),this.handle=this.handles.eq(0),this.handles.each(function(t){V(this).data("ui-slider-handle-index",t).attr("tabIndex",0)})},_createRange:function(){var t=this.options;t.range?(!0===t.range&&(t.values?t.values.length&&2!==t.values.length?t.values=[t.values[0],t.values[0]]:Array.isArray(t.values)&&(t.values=t.values.slice(0)):t.values=[this._valueMin(),this._valueMin()]),this.range&&this.range.length?(this._removeClass(this.range,"ui-slider-range-min ui-slider-range-max"),this.range.css({left:"",bottom:""})):(this.range=V("
                ").appendTo(this.element),this._addClass(this.range,"ui-slider-range")),"min"!==t.range&&"max"!==t.range||this._addClass(this.range,"ui-slider-range-"+t.range)):(this.range&&this.range.remove(),this.range=null)},_setupEvents:function(){this._off(this.handles),this._on(this.handles,this._handleEvents),this._hoverable(this.handles),this._focusable(this.handles)},_destroy:function(){this.handles.remove(),this.range&&this.range.remove(),this._mouseDestroy()},_mouseCapture:function(t){var i,s,n,o,e,a,r=this,l=this.options;return!l.disabled&&(this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()},this.elementOffset=this.element.offset(),a={x:t.pageX,y:t.pageY},i=this._normValueFromMouse(a),s=this._valueMax()-this._valueMin()+1,this.handles.each(function(t){var e=Math.abs(i-r.values(t));(e=this._valueMax())return this._valueMax();var e=0=e&&(t+=0this.options.max&&(t-=i),this.max=parseFloat(t.toFixed(this._precision()))},_precision:function(){var t=this._precisionOf(this.options.step);return t=null!==this.options.min?Math.max(t,this._precisionOf(this.options.min)):t},_precisionOf:function(t){var e=t.toString(),t=e.indexOf(".");return-1===t?0:e.length-t-1},_valueMin:function(){return this.options.min},_valueMax:function(){return this.max},_refreshRange:function(t){"vertical"===t&&this.range.css({width:"",left:""}),"horizontal"===t&&this.range.css({height:"",bottom:""})},_refreshValue:function(){var e,i,t,s,n,o=this.options.range,a=this.options,r=this,l=!this._animateOff&&a.animate,h={};this._hasMultipleValues()?this.handles.each(function(t){i=(r.values(t)-r._valueMin())/(r._valueMax()-r._valueMin())*100,h["horizontal"===r.orientation?"left":"bottom"]=i+"%",V(this).stop(1,1)[l?"animate":"css"](h,a.animate),!0===r.options.range&&("horizontal"===r.orientation?(0===t&&r.range.stop(1,1)[l?"animate":"css"]({left:i+"%"},a.animate),1===t&&r.range[l?"animate":"css"]({width:i-e+"%"},{queue:!1,duration:a.animate})):(0===t&&r.range.stop(1,1)[l?"animate":"css"]({bottom:i+"%"},a.animate),1===t&&r.range[l?"animate":"css"]({height:i-e+"%"},{queue:!1,duration:a.animate}))),e=i}):(t=this.value(),s=this._valueMin(),n=this._valueMax(),i=n!==s?(t-s)/(n-s)*100:0,h["horizontal"===this.orientation?"left":"bottom"]=i+"%",this.handle.stop(1,1)[l?"animate":"css"](h,a.animate),"min"===o&&"horizontal"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({width:i+"%"},a.animate),"max"===o&&"horizontal"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({width:100-i+"%"},a.animate),"min"===o&&"vertical"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({height:i+"%"},a.animate),"max"===o&&"vertical"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({height:100-i+"%"},a.animate))},_handleEvents:{keydown:function(t){var e,i,s,n=V(t.target).data("ui-slider-handle-index");switch(t.keyCode){case V.ui.keyCode.HOME:case V.ui.keyCode.END:case V.ui.keyCode.PAGE_UP:case V.ui.keyCode.PAGE_DOWN:case V.ui.keyCode.UP:case V.ui.keyCode.RIGHT:case V.ui.keyCode.DOWN:case V.ui.keyCode.LEFT:if(t.preventDefault(),!this._keySliding&&(this._keySliding=!0,this._addClass(V(t.target),null,"ui-state-active"),!1===this._start(t,n)))return}switch(s=this.options.step,e=i=this._hasMultipleValues()?this.values(n):this.value(),t.keyCode){case V.ui.keyCode.HOME:i=this._valueMin();break;case V.ui.keyCode.END:i=this._valueMax();break;case V.ui.keyCode.PAGE_UP:i=this._trimAlignValue(e+(this._valueMax()-this._valueMin())/this.numPages);break;case V.ui.keyCode.PAGE_DOWN:i=this._trimAlignValue(e-(this._valueMax()-this._valueMin())/this.numPages);break;case V.ui.keyCode.UP:case V.ui.keyCode.RIGHT:if(e===this._valueMax())return;i=this._trimAlignValue(e+s);break;case V.ui.keyCode.DOWN:case V.ui.keyCode.LEFT:if(e===this._valueMin())return;i=this._trimAlignValue(e-s)}this._slide(t,n,i)},keyup:function(t){var e=V(t.target).data("ui-slider-handle-index");this._keySliding&&(this._keySliding=!1,this._stop(t,e),this._change(t,e),this._removeClass(V(t.target),null,"ui-state-active"))}}}),V.widget("ui.sortable",V.ui.mouse,{version:"1.13.1",widgetEventPrefix:"sort",ready:!1,options:{appendTo:"parent",axis:!1,connectWith:!1,containment:!1,cursor:"auto",cursorAt:!1,dropOnEmpty:!0,forcePlaceholderSize:!1,forceHelperSize:!1,grid:!1,handle:!1,helper:"original",items:"> *",opacity:!1,placeholder:!1,revert:!1,scroll:!0,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1e3,activate:null,beforeStop:null,change:null,deactivate:null,out:null,over:null,receive:null,remove:null,sort:null,start:null,stop:null,update:null},_isOverAxis:function(t,e,i){return e<=t&&t*{ cursor: "+o.cursor+" !important; }").appendTo(n)),o.zIndex&&(this.helper.css("zIndex")&&(this._storedZIndex=this.helper.css("zIndex")),this.helper.css("zIndex",o.zIndex)),o.opacity&&(this.helper.css("opacity")&&(this._storedOpacity=this.helper.css("opacity")),this.helper.css("opacity",o.opacity)),this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName&&(this.overflowOffset=this.scrollParent.offset()),this._trigger("start",t,this._uiHash()),this._preserveHelperProportions||this._cacheHelperProportions(),!i)for(s=this.containers.length-1;0<=s;s--)this.containers[s]._trigger("activate",t,this._uiHash(this));return V.ui.ddmanager&&(V.ui.ddmanager.current=this),V.ui.ddmanager&&!o.dropBehaviour&&V.ui.ddmanager.prepareOffsets(this,t),this.dragging=!0,this._addClass(this.helper,"ui-sortable-helper"),this.helper.parent().is(this.appendTo)||(this.helper.detach().appendTo(this.appendTo),this.offset.parent=this._getParentOffset()),this.position=this.originalPosition=this._generatePosition(t),this.originalPageX=t.pageX,this.originalPageY=t.pageY,this.lastPositionAbs=this.positionAbs=this._convertPositionTo("absolute"),this._mouseDrag(t),!0},_scroll:function(t){var e=this.options,i=!1;return this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName?(this.overflowOffset.top+this.scrollParent[0].offsetHeight-t.pageYt[this.floating?"width":"height"]?h&&c:o",i.document[0]);return i._addClass(t,"ui-sortable-placeholder",s||i.currentItem[0].className)._removeClass(t,"ui-sortable-helper"),"tbody"===n?i._createTrPlaceholder(i.currentItem.find("tr").eq(0),V("",i.document[0]).appendTo(t)):"tr"===n?i._createTrPlaceholder(i.currentItem,t):"img"===n&&t.attr("src",i.currentItem.attr("src")),s||t.css("visibility","hidden"),t},update:function(t,e){s&&!o.forcePlaceholderSize||(e.height()&&(!o.forcePlaceholderSize||"tbody"!==n&&"tr"!==n)||e.height(i.currentItem.innerHeight()-parseInt(i.currentItem.css("paddingTop")||0,10)-parseInt(i.currentItem.css("paddingBottom")||0,10)),e.width()||e.width(i.currentItem.innerWidth()-parseInt(i.currentItem.css("paddingLeft")||0,10)-parseInt(i.currentItem.css("paddingRight")||0,10)))}}),i.placeholder=V(o.placeholder.element.call(i.element,i.currentItem)),i.currentItem.after(i.placeholder),o.placeholder.update(i,i.placeholder)},_createTrPlaceholder:function(t,e){var i=this;t.children().each(function(){V(" ",i.document[0]).attr("colspan",V(this).attr("colspan")||1).appendTo(e)})},_contactContainers:function(t){for(var e,i,s,n,o,a,r,l,h,c=null,u=null,d=this.containers.length-1;0<=d;d--)V.contains(this.currentItem[0],this.containers[d].element[0])||(this._intersectsWith(this.containers[d].containerCache)?c&&V.contains(this.containers[d].element[0],c.element[0])||(c=this.containers[d],u=d):this.containers[d].containerCache.over&&(this.containers[d]._trigger("out",t,this._uiHash(this)),this.containers[d].containerCache.over=0));if(c)if(1===this.containers.length)this.containers[u].containerCache.over||(this.containers[u]._trigger("over",t,this._uiHash(this)),this.containers[u].containerCache.over=1);else{for(i=1e4,s=null,n=(l=c.floating||this._isFloating(this.currentItem))?"left":"top",o=l?"width":"height",h=l?"pageX":"pageY",e=this.items.length-1;0<=e;e--)V.contains(this.containers[u].element[0],this.items[e].item[0])&&this.items[e].item[0]!==this.currentItem[0]&&(a=this.items[e].item.offset()[n],r=!1,t[h]-a>this.items[e][o]/2&&(r=!0),Math.abs(t[h]-a)this.containment[2]&&(i=this.containment[2]+this.offset.click.left),t.pageY-this.offset.click.top>this.containment[3]&&(s=this.containment[3]+this.offset.click.top)),e.grid&&(t=this.originalPageY+Math.round((s-this.originalPageY)/e.grid[1])*e.grid[1],s=!this.containment||t-this.offset.click.top>=this.containment[1]&&t-this.offset.click.top<=this.containment[3]?t:t-this.offset.click.top>=this.containment[1]?t-e.grid[1]:t+e.grid[1],t=this.originalPageX+Math.round((i-this.originalPageX)/e.grid[0])*e.grid[0],i=!this.containment||t-this.offset.click.left>=this.containment[0]&&t-this.offset.click.left<=this.containment[2]?t:t-this.offset.click.left>=this.containment[0]?t-e.grid[0]:t+e.grid[0])),{top:s-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.scrollParent.scrollTop():o?0:n.scrollTop()),left:i-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():o?0:n.scrollLeft())}},_rearrange:function(t,e,i,s){i?i[0].appendChild(this.placeholder[0]):e.item[0].parentNode.insertBefore(this.placeholder[0],"down"===this.direction?e.item[0]:e.item[0].nextSibling),this.counter=this.counter?++this.counter:1;var n=this.counter;this._delay(function(){n===this.counter&&this.refreshPositions(!s)})},_clear:function(t,e){this.reverting=!1;var i,s=[];if(!this._noFinalSort&&this.currentItem.parent().length&&this.placeholder.before(this.currentItem),this._noFinalSort=null,this.helper[0]===this.currentItem[0]){for(i in this._storedCSS)"auto"!==this._storedCSS[i]&&"static"!==this._storedCSS[i]||(this._storedCSS[i]="");this.currentItem.css(this._storedCSS),this._removeClass(this.currentItem,"ui-sortable-helper")}else this.currentItem.show();function n(e,i,s){return function(t){s._trigger(e,t,i._uiHash(i))}}for(this.fromOutside&&!e&&s.push(function(t){this._trigger("receive",t,this._uiHash(this.fromOutside))}),!this.fromOutside&&this.domPosition.prev===this.currentItem.prev().not(".ui-sortable-helper")[0]&&this.domPosition.parent===this.currentItem.parent()[0]||e||s.push(function(t){this._trigger("update",t,this._uiHash())}),this!==this.currentContainer&&(e||(s.push(function(t){this._trigger("remove",t,this._uiHash())}),s.push(function(e){return function(t){e._trigger("receive",t,this._uiHash(this))}}.call(this,this.currentContainer)),s.push(function(e){return function(t){e._trigger("update",t,this._uiHash(this))}}.call(this,this.currentContainer)))),i=this.containers.length-1;0<=i;i--)e||s.push(n("deactivate",this,this.containers[i])),this.containers[i].containerCache.over&&(s.push(n("out",this,this.containers[i])),this.containers[i].containerCache.over=0);if(this.storedCursor&&(this.document.find("body").css("cursor",this.storedCursor),this.storedStylesheet.remove()),this._storedOpacity&&this.helper.css("opacity",this._storedOpacity),this._storedZIndex&&this.helper.css("zIndex","auto"===this._storedZIndex?"":this._storedZIndex),this.dragging=!1,e||this._trigger("beforeStop",t,this._uiHash()),this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.cancelHelperRemoval||(this.helper[0]!==this.currentItem[0]&&this.helper.remove(),this.helper=null),!e){for(i=0;i",widgetEventPrefix:"spin",options:{classes:{"ui-spinner":"ui-corner-all","ui-spinner-down":"ui-corner-br","ui-spinner-up":"ui-corner-tr"},culture:null,icons:{down:"ui-icon-triangle-1-s",up:"ui-icon-triangle-1-n"},incremental:!0,max:null,min:null,numberFormat:null,page:10,step:1,change:null,spin:null,start:null,stop:null},_create:function(){this._setOption("max",this.options.max),this._setOption("min",this.options.min),this._setOption("step",this.options.step),""!==this.value()&&this._value(this.element.val(),!0),this._draw(),this._on(this._events),this._refresh(),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_getCreateOptions:function(){var s=this._super(),n=this.element;return V.each(["min","max","step"],function(t,e){var i=n.attr(e);null!=i&&i.length&&(s[e]=i)}),s},_events:{keydown:function(t){this._start(t)&&this._keydown(t)&&t.preventDefault()},keyup:"_stop",focus:function(){this.previous=this.element.val()},blur:function(t){this.cancelBlur?delete this.cancelBlur:(this._stop(),this._refresh(),this.previous!==this.element.val()&&this._trigger("change",t))},mousewheel:function(t,e){var i=V.ui.safeActiveElement(this.document[0]);if(this.element[0]===i&&e){if(!this.spinning&&!this._start(t))return!1;this._spin((0").parent().append("")},_draw:function(){this._enhance(),this._addClass(this.uiSpinner,"ui-spinner","ui-widget ui-widget-content"),this._addClass("ui-spinner-input"),this.element.attr("role","spinbutton"),this.buttons=this.uiSpinner.children("a").attr("tabIndex",-1).attr("aria-hidden",!0).button({classes:{"ui-button":""}}),this._removeClass(this.buttons,"ui-corner-all"),this._addClass(this.buttons.first(),"ui-spinner-button ui-spinner-up"),this._addClass(this.buttons.last(),"ui-spinner-button ui-spinner-down"),this.buttons.first().button({icon:this.options.icons.up,showLabel:!1}),this.buttons.last().button({icon:this.options.icons.down,showLabel:!1}),this.buttons.height()>Math.ceil(.5*this.uiSpinner.height())&&0e.max?e.max:null!==e.min&&t"},_buttonHtml:function(){return""}});var ct;V.ui.spinner;V.widget("ui.tabs",{version:"1.13.1",delay:300,options:{active:null,classes:{"ui-tabs":"ui-corner-all","ui-tabs-nav":"ui-corner-all","ui-tabs-panel":"ui-corner-bottom","ui-tabs-tab":"ui-corner-top"},collapsible:!1,event:"click",heightStyle:"content",hide:null,show:null,activate:null,beforeActivate:null,beforeLoad:null,load:null},_isLocal:(ct=/#.*$/,function(t){var e=t.href.replace(ct,""),i=location.href.replace(ct,"");try{e=decodeURIComponent(e)}catch(t){}try{i=decodeURIComponent(i)}catch(t){}return 1?@\[\]\^`{|}~]/g,"\\$&"):""},refresh:function(){var t=this.options,e=this.tablist.children(":has(a[href])");t.disabled=V.map(e.filter(".ui-state-disabled"),function(t){return e.index(t)}),this._processTabs(),!1!==t.active&&this.anchors.length?this.active.length&&!V.contains(this.tablist[0],this.active[0])?this.tabs.length===t.disabled.length?(t.active=!1,this.active=V()):this._activate(this._findNextTab(Math.max(0,t.active-1),!1)):t.active=this.tabs.index(this.active):(t.active=!1,this.active=V()),this._refresh()},_refresh:function(){this._setOptionDisabled(this.options.disabled),this._setupEvents(this.options.event),this._setupHeightStyle(this.options.heightStyle),this.tabs.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}),this.panels.not(this._getPanelForTab(this.active)).hide().attr({"aria-hidden":"true"}),this.active.length?(this.active.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}),this._addClass(this.active,"ui-tabs-active","ui-state-active"),this._getPanelForTab(this.active).show().attr({"aria-hidden":"false"})):this.tabs.eq(0).attr("tabIndex",0)},_processTabs:function(){var l=this,t=this.tabs,e=this.anchors,i=this.panels;this.tablist=this._getList().attr("role","tablist"),this._addClass(this.tablist,"ui-tabs-nav","ui-helper-reset ui-helper-clearfix ui-widget-header"),this.tablist.on("mousedown"+this.eventNamespace,"> li",function(t){V(this).is(".ui-state-disabled")&&t.preventDefault()}).on("focus"+this.eventNamespace,".ui-tabs-anchor",function(){V(this).closest("li").is(".ui-state-disabled")&&this.blur()}),this.tabs=this.tablist.find("> li:has(a[href])").attr({role:"tab",tabIndex:-1}),this._addClass(this.tabs,"ui-tabs-tab","ui-state-default"),this.anchors=this.tabs.map(function(){return V("a",this)[0]}).attr({tabIndex:-1}),this._addClass(this.anchors,"ui-tabs-anchor"),this.panels=V(),this.anchors.each(function(t,e){var i,s,n,o=V(e).uniqueId().attr("id"),a=V(e).closest("li"),r=a.attr("aria-controls");l._isLocal(e)?(n=(i=e.hash).substring(1),s=l.element.find(l._sanitizeSelector(i))):(n=a.attr("aria-controls")||V({}).uniqueId()[0].id,(s=l.element.find(i="#"+n)).length||(s=l._createPanel(n)).insertAfter(l.panels[t-1]||l.tablist),s.attr("aria-live","polite")),s.length&&(l.panels=l.panels.add(s)),r&&a.data("ui-tabs-aria-controls",r),a.attr({"aria-controls":n,"aria-labelledby":o}),s.attr("aria-labelledby",o)}),this.panels.attr("role","tabpanel"),this._addClass(this.panels,"ui-tabs-panel","ui-widget-content"),t&&(this._off(t.not(this.tabs)),this._off(e.not(this.anchors)),this._off(i.not(this.panels)))},_getList:function(){return this.tablist||this.element.find("ol, ul").eq(0)},_createPanel:function(t){return V("
                ").attr("id",t).data("ui-tabs-destroy",!0)},_setOptionDisabled:function(t){var e,i;for(Array.isArray(t)&&(t.length?t.length===this.anchors.length&&(t=!0):t=!1),i=0;e=this.tabs[i];i++)e=V(e),!0===t||-1!==V.inArray(i,t)?(e.attr("aria-disabled","true"),this._addClass(e,null,"ui-state-disabled")):(e.removeAttr("aria-disabled"),this._removeClass(e,null,"ui-state-disabled"));this.options.disabled=t,this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!0===t)},_setupEvents:function(t){var i={};t&&V.each(t.split(" "),function(t,e){i[e]="_eventHandler"}),this._off(this.anchors.add(this.tabs).add(this.panels)),this._on(!0,this.anchors,{click:function(t){t.preventDefault()}}),this._on(this.anchors,i),this._on(this.tabs,{keydown:"_tabKeydown"}),this._on(this.panels,{keydown:"_panelKeydown"}),this._focusable(this.tabs),this._hoverable(this.tabs)},_setupHeightStyle:function(t){var i,e=this.element.parent();"fill"===t?(i=e.height(),i-=this.element.outerHeight()-this.element.height(),this.element.siblings(":visible").each(function(){var t=V(this),e=t.css("position");"absolute"!==e&&"fixed"!==e&&(i-=t.outerHeight(!0))}),this.element.children().not(this.panels).each(function(){i-=V(this).outerHeight(!0)}),this.panels.each(function(){V(this).height(Math.max(0,i-V(this).innerHeight()+V(this).height()))}).css("overflow","auto")):"auto"===t&&(i=0,this.panels.each(function(){i=Math.max(i,V(this).height("").height())}).height(i))},_eventHandler:function(t){var e=this.options,i=this.active,s=V(t.currentTarget).closest("li"),n=s[0]===i[0],o=n&&e.collapsible,a=o?V():this._getPanelForTab(s),r=i.length?this._getPanelForTab(i):V(),i={oldTab:i,oldPanel:r,newTab:o?V():s,newPanel:a};t.preventDefault(),s.hasClass("ui-state-disabled")||s.hasClass("ui-tabs-loading")||this.running||n&&!e.collapsible||!1===this._trigger("beforeActivate",t,i)||(e.active=!o&&this.tabs.index(s),this.active=n?V():s,this.xhr&&this.xhr.abort(),r.length||a.length||V.error("jQuery UI Tabs: Mismatching fragment identifier."),a.length&&this.load(this.tabs.index(s),t),this._toggle(t,i))},_toggle:function(t,e){var i=this,s=e.newPanel,n=e.oldPanel;function o(){i.running=!1,i._trigger("activate",t,e)}function a(){i._addClass(e.newTab.closest("li"),"ui-tabs-active","ui-state-active"),s.length&&i.options.show?i._show(s,i.options.show,o):(s.show(),o())}this.running=!0,n.length&&this.options.hide?this._hide(n,this.options.hide,function(){i._removeClass(e.oldTab.closest("li"),"ui-tabs-active","ui-state-active"),a()}):(this._removeClass(e.oldTab.closest("li"),"ui-tabs-active","ui-state-active"),n.hide(),a()),n.attr("aria-hidden","true"),e.oldTab.attr({"aria-selected":"false","aria-expanded":"false"}),s.length&&n.length?e.oldTab.attr("tabIndex",-1):s.length&&this.tabs.filter(function(){return 0===V(this).attr("tabIndex")}).attr("tabIndex",-1),s.attr("aria-hidden","false"),e.newTab.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_activate:function(t){var t=this._findActive(t);t[0]!==this.active[0]&&(t=(t=!t.length?this.active:t).find(".ui-tabs-anchor")[0],this._eventHandler({target:t,currentTarget:t,preventDefault:V.noop}))},_findActive:function(t){return!1===t?V():this.tabs.eq(t)},_getIndex:function(t){return t="string"==typeof t?this.anchors.index(this.anchors.filter("[href$='"+V.escapeSelector(t)+"']")):t},_destroy:function(){this.xhr&&this.xhr.abort(),this.tablist.removeAttr("role").off(this.eventNamespace),this.anchors.removeAttr("role tabIndex").removeUniqueId(),this.tabs.add(this.panels).each(function(){V.data(this,"ui-tabs-destroy")?V(this).remove():V(this).removeAttr("role tabIndex aria-live aria-busy aria-selected aria-labelledby aria-hidden aria-expanded")}),this.tabs.each(function(){var t=V(this),e=t.data("ui-tabs-aria-controls");e?t.attr("aria-controls",e).removeData("ui-tabs-aria-controls"):t.removeAttr("aria-controls")}),this.panels.show(),"content"!==this.options.heightStyle&&this.panels.css("height","")},enable:function(i){var t=this.options.disabled;!1!==t&&(t=void 0!==i&&(i=this._getIndex(i),Array.isArray(t)?V.map(t,function(t){return t!==i?t:null}):V.map(this.tabs,function(t,e){return e!==i?e:null})),this._setOptionDisabled(t))},disable:function(t){var e=this.options.disabled;if(!0!==e){if(void 0===t)e=!0;else{if(t=this._getIndex(t),-1!==V.inArray(t,e))return;e=Array.isArray(e)?V.merge([t],e).sort():[t]}this._setOptionDisabled(e)}},load:function(t,s){t=this._getIndex(t);function n(t,e){"abort"===e&&o.panels.stop(!1,!0),o._removeClass(i,"ui-tabs-loading"),a.removeAttr("aria-busy"),t===o.xhr&&delete o.xhr}var o=this,i=this.tabs.eq(t),t=i.find(".ui-tabs-anchor"),a=this._getPanelForTab(i),r={tab:i,panel:a};this._isLocal(t[0])||(this.xhr=V.ajax(this._ajaxSettings(t,s,r)),this.xhr&&"canceled"!==this.xhr.statusText&&(this._addClass(i,"ui-tabs-loading"),a.attr("aria-busy","true"),this.xhr.done(function(t,e,i){setTimeout(function(){a.html(t),o._trigger("load",s,r),n(i,e)},1)}).fail(function(t,e){setTimeout(function(){n(t,e)},1)})))},_ajaxSettings:function(t,i,s){var n=this;return{url:t.attr("href").replace(/#.*$/,""),beforeSend:function(t,e){return n._trigger("beforeLoad",i,V.extend({jqXHR:t,ajaxSettings:e},s))}}},_getPanelForTab:function(t){t=V(t).attr("aria-controls");return this.element.find(this._sanitizeSelector("#"+t))}}),!1!==V.uiBackCompat&&V.widget("ui.tabs",V.ui.tabs,{_processTabs:function(){this._superApply(arguments),this._addClass(this.tabs,"ui-tab")}});V.ui.tabs;V.widget("ui.tooltip",{version:"1.13.1",options:{classes:{"ui-tooltip":"ui-corner-all ui-widget-shadow"},content:function(){var t=V(this).attr("title");return V("").text(t).html()},hide:!0,items:"[title]:not([disabled])",position:{my:"left top+15",at:"left bottom",collision:"flipfit flip"},show:!0,track:!1,close:null,open:null},_addDescribedBy:function(t,e){var i=(t.attr("aria-describedby")||"").split(/\s+/);i.push(e),t.data("ui-tooltip-id",e).attr("aria-describedby",String.prototype.trim.call(i.join(" ")))},_removeDescribedBy:function(t){var e=t.data("ui-tooltip-id"),i=(t.attr("aria-describedby")||"").split(/\s+/),e=V.inArray(e,i);-1!==e&&i.splice(e,1),t.removeData("ui-tooltip-id"),(i=String.prototype.trim.call(i.join(" ")))?t.attr("aria-describedby",i):t.removeAttr("aria-describedby")},_create:function(){this._on({mouseover:"open",focusin:"open"}),this.tooltips={},this.parents={},this.liveRegion=V("
                ").attr({role:"log","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this.disabledTitles=V([])},_setOption:function(t,e){var i=this;this._super(t,e),"content"===t&&V.each(this.tooltips,function(t,e){i._updateContent(e.element)})},_setOptionDisabled:function(t){this[t?"_disable":"_enable"]()},_disable:function(){var s=this;V.each(this.tooltips,function(t,e){var i=V.Event("blur");i.target=i.currentTarget=e.element[0],s.close(i,!0)}),this.disabledTitles=this.disabledTitles.add(this.element.find(this.options.items).addBack().filter(function(){var t=V(this);if(t.is("[title]"))return t.data("ui-tooltip-title",t.attr("title")).removeAttr("title")}))},_enable:function(){this.disabledTitles.each(function(){var t=V(this);t.data("ui-tooltip-title")&&t.attr("title",t.data("ui-tooltip-title"))}),this.disabledTitles=V([])},open:function(t){var i=this,e=V(t?t.target:this.element).closest(this.options.items);e.length&&!e.data("ui-tooltip-id")&&(e.attr("title")&&e.data("ui-tooltip-title",e.attr("title")),e.data("ui-tooltip-open",!0),t&&"mouseover"===t.type&&e.parents().each(function(){var t,e=V(this);e.data("ui-tooltip-open")&&((t=V.Event("blur")).target=t.currentTarget=this,i.close(t,!0)),e.attr("title")&&(e.uniqueId(),i.parents[this.id]={element:this,title:e.attr("title")},e.attr("title",""))}),this._registerCloseHandlers(t,e),this._updateContent(e,t))},_updateContent:function(e,i){var t=this.options.content,s=this,n=i?i.type:null;if("string"==typeof t||t.nodeType||t.jquery)return this._open(i,e,t);(t=t.call(e[0],function(t){s._delay(function(){e.data("ui-tooltip-open")&&(i&&(i.type=n),this._open(i,e,t))})}))&&this._open(i,e,t)},_open:function(t,e,i){var s,n,o,a=V.extend({},this.options.position);function r(t){a.of=t,n.is(":hidden")||n.position(a)}i&&((s=this._find(e))?s.tooltip.find(".ui-tooltip-content").html(i):(e.is("[title]")&&(t&&"mouseover"===t.type?e.attr("title",""):e.removeAttr("title")),s=this._tooltip(e),n=s.tooltip,this._addDescribedBy(e,n.attr("id")),n.find(".ui-tooltip-content").html(i),this.liveRegion.children().hide(),(i=V("
                ").html(n.find(".ui-tooltip-content").html())).removeAttr("name").find("[name]").removeAttr("name"),i.removeAttr("id").find("[id]").removeAttr("id"),i.appendTo(this.liveRegion),this.options.track&&t&&/^mouse/.test(t.type)?(this._on(this.document,{mousemove:r}),r(t)):n.position(V.extend({of:e},this.options.position)),n.hide(),this._show(n,this.options.show),this.options.track&&this.options.show&&this.options.show.delay&&(o=this.delayedShow=setInterval(function(){n.is(":visible")&&(r(a.of),clearInterval(o))},13)),this._trigger("open",t,{tooltip:n})))},_registerCloseHandlers:function(t,e){var i={keyup:function(t){t.keyCode===V.ui.keyCode.ESCAPE&&((t=V.Event(t)).currentTarget=e[0],this.close(t,!0))}};e[0]!==this.element[0]&&(i.remove=function(){var t=this._find(e);t&&this._removeTooltip(t.tooltip)}),t&&"mouseover"!==t.type||(i.mouseleave="close"),t&&"focusin"!==t.type||(i.focusout="close"),this._on(!0,e,i)},close:function(t){var e,i=this,s=V(t?t.currentTarget:this.element),n=this._find(s);n?(e=n.tooltip,n.closing||(clearInterval(this.delayedShow),s.data("ui-tooltip-title")&&!s.attr("title")&&s.attr("title",s.data("ui-tooltip-title")),this._removeDescribedBy(s),n.hiding=!0,e.stop(!0),this._hide(e,this.options.hide,function(){i._removeTooltip(V(this))}),s.removeData("ui-tooltip-open"),this._off(s,"mouseleave focusout keyup"),s[0]!==this.element[0]&&this._off(s,"remove"),this._off(this.document,"mousemove"),t&&"mouseleave"===t.type&&V.each(this.parents,function(t,e){V(e.element).attr("title",e.title),delete i.parents[t]}),n.closing=!0,this._trigger("close",t,{tooltip:e}),n.hiding||(n.closing=!1))):s.removeData("ui-tooltip-open")},_tooltip:function(t){var e=V("
                ").attr("role","tooltip"),i=V("
                ").appendTo(e),s=e.uniqueId().attr("id");return this._addClass(i,"ui-tooltip-content"),this._addClass(e,"ui-tooltip","ui-widget ui-widget-content"),e.appendTo(this._appendTo(t)),this.tooltips[s]={element:t,tooltip:e}},_find:function(t){t=t.data("ui-tooltip-id");return t?this.tooltips[t]:null},_removeTooltip:function(t){clearInterval(this.delayedShow),t.remove(),delete this.tooltips[t.attr("id")]},_appendTo:function(t){t=t.closest(".ui-front, dialog");return t=!t.length?this.document[0].body:t},_destroy:function(){var s=this;V.each(this.tooltips,function(t,e){var i=V.Event("blur"),e=e.element;i.target=i.currentTarget=e[0],s.close(i,!0),V("#"+t).remove(),e.data("ui-tooltip-title")&&(e.attr("title")||e.attr("title",e.data("ui-tooltip-title")),e.removeData("ui-tooltip-title"))}),this.liveRegion.remove()}}),!1!==V.uiBackCompat&&V.widget("ui.tooltip",V.ui.tooltip,{options:{tooltipClass:null},_tooltip:function(){var t=this._superApply(arguments);return this.options.tooltipClass&&t.tooltip.addClass(this.options.tooltipClass),t}});V.ui.tooltip}); \ No newline at end of file diff --git a/docs/index.html b/docs/index.html index 4a8efcf..073527b 100644 --- a/docs/index.html +++ b/docs/index.html @@ -2,7 +2,7 @@ - + @@ -17,11 +17,12 @@ ul.task-list{list-style: none;} ul.task-list li input[type="checkbox"] { width: 0.8em; - margin: 0 0.8em 0.2em -1.6em; + margin: 0 0.8em 0.2em -1em; /* quarto-specific, see https://github.com/quarto-dev/quarto-cli/issues/4556 */ vertical-align: middle; } +/* CSS for syntax highlighting */ pre > code.sourceCode { white-space: pre; position: relative; } -pre > code.sourceCode > span { line-height: 1.25; } +pre > code.sourceCode > span { display: inline-block; line-height: 1.25; } pre > code.sourceCode > span:empty { height: 1.2em; } .sourceCode { overflow: visible; } code.sourceCode > span { color: inherit; text-decoration: inherit; } @@ -35,54 +36,24 @@ pre > code.sourceCode > span { text-indent: -5em; padding-left: 5em; } } pre.numberSource code -{ counter-reset: source-line 0; } + { counter-reset: source-line 0; } pre.numberSource code > span -{ position: relative; left: -4em; counter-increment: source-line; } + { position: relative; left: -4em; counter-increment: source-line; } pre.numberSource code > span > a:first-child::before -{ content: counter(source-line); -position: relative; left: -1em; text-align: right; vertical-align: baseline; -border: none; display: inline-block; --webkit-touch-callout: none; -webkit-user-select: none; --khtml-user-select: none; -moz-user-select: none; --ms-user-select: none; user-select: none; -padding: 0 4px; width: 4em; -color: #aaaaaa; -} -pre.numberSource { margin-left: 3em; border-left: 1px solid #aaaaaa; padding-left: 4px; } + { content: counter(source-line); + position: relative; left: -1em; text-align: right; vertical-align: baseline; + border: none; display: inline-block; + -webkit-touch-callout: none; -webkit-user-select: none; + -khtml-user-select: none; -moz-user-select: none; + -ms-user-select: none; user-select: none; + padding: 0 4px; width: 4em; + } +pre.numberSource { margin-left: 3em; padding-left: 4px; } div.sourceCode -{ } + { } @media screen { pre > code.sourceCode > span > a:first-child::before { text-decoration: underline; } } -code span.al { color: #ff0000; font-weight: bold; } /* Alert */ -code span.an { color: #60a0b0; font-weight: bold; font-style: italic; } /* Annotation */ -code span.at { color: #7d9029; } /* Attribute */ -code span.bn { color: #40a070; } /* BaseN */ -code span.bu { color: #008000; } /* BuiltIn */ -code span.cf { color: #007020; font-weight: bold; } /* ControlFlow */ -code span.ch { color: #4070a0; } /* Char */ -code span.cn { color: #880000; } /* Constant */ -code span.co { color: #60a0b0; font-style: italic; } /* Comment */ -code span.cv { color: #60a0b0; font-weight: bold; font-style: italic; } /* CommentVar */ -code span.do { color: #ba2121; font-style: italic; } /* Documentation */ -code span.dt { color: #902000; } /* DataType */ -code span.dv { color: #40a070; } /* DecVal */ -code span.er { color: #ff0000; font-weight: bold; } /* Error */ -code span.ex { } /* Extension */ -code span.fl { color: #40a070; } /* Float */ -code span.fu { color: #06287e; } /* Function */ -code span.im { color: #008000; font-weight: bold; } /* Import */ -code span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Information */ -code span.kw { color: #007020; font-weight: bold; } /* Keyword */ -code span.op { color: #666666; } /* Operator */ -code span.ot { color: #007020; } /* Other */ -code span.pp { color: #bc7a00; } /* Preprocessor */ -code span.sc { color: #4070a0; } /* SpecialChar */ -code span.ss { color: #bb6688; } /* SpecialString */ -code span.st { color: #4070a0; } /* String */ -code span.va { color: #19177c; } /* Variable */ -code span.vs { color: #4070a0; } /* VerbatimString */ -code span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warning */ @@ -98,6 +69,7 @@ + @@ -111,17 +83,17 @@

                Table of contents

                -
                -

                Columns and rows

                +
                +

                Columns and rows

                Get columns and rows as sequences. column, columns and rows treat grouped dataset as regular one. See Groups to read more about grouped datasets.

                Possible result types:

                  @@ -1557,13 +1541,13 @@

                  Columns and rows

                  (take 2 (tc/rows ds))
                -
                ([#object[java.time.LocalDate 0x3bb2d3e4 "2012-01-01"]
                +
                ([#object[java.time.LocalDate 0x53dd53f8 "2012-01-01"]
                   0.0
                   12.8
                   5.0
                   4.7
                   "drizzle"]
                - [#object[java.time.LocalDate 0x3041ae6f "2012-01-02"]
                + [#object[java.time.LocalDate 0x11638493 "2012-01-02"]
                   10.9
                   10.6
                   2.8
                @@ -1622,8 +1606,8 @@ 

                Columns and rows

                [{:a 1, :b 3} {:b 4} {:a 2}]
                -
                -

                Single entry

                +
                +

                Single entry

                Get single value from the table using get-in from Clojure API or get-entry. First argument is column name, second is row number.

                (get-in ds ["wind" 2])
                @@ -1638,8 +1622,8 @@

                Single entry

                2.3
                -
                -

                Printing

                +
                +

                Printing

                Dataset is printed using dataset->str or print-dataset functions. Options are the same as in tech.ml.dataset/dataset-data->str. Most important is :print-line-policy which can be one of the: :single, :repl or :markdown.

                (tc/print-dataset (tc/group-by DS :V1) {:print-line-policy :markdown})
                @@ -1660,7 +1644,6 @@

                Printing

                nil
                -

                Group-by

                Grouping by is an operation which splits dataset into subdatasets and pack it into new special type of… dataset. I distinguish two types of dataset: regular dataset and grouped dataset. The latter is the result of grouping.

                @@ -5754,7 +5737,7 @@

                Rename

                v1 v2 [1 2 3] -java.lang.Object@680b7aaa +java.lang.Object@112d474f @@ -6003,7 +5986,7 @@

                Rename

                [1 2 3] -java.lang.Object@649ac4d3 +java.lang.Object@695c7372 @@ -6115,7 +6098,7 @@

                Rename

                [1 2 3] -java.lang.Object@649ac4d3 +java.lang.Object@695c7372 @@ -6306,55 +6289,55 @@

                Add or update

                -0.55273002 +0.33427832 1 0.5 A -0.03138350 +0.83048019 2 1.0 B -0.59973884 +0.18831793 3 1.5 C -0.87143280 +0.75929043 4 0.5 A -0.45169670 +0.85041022 5 1.0 B -0.66363413 +0.46596282 6 1.5 C -0.90424062 +0.58807946 7 0.5 A -0.72083939 +0.11865375 8 1.0 B -0.68851090 +0.08569196 9 1.5 C @@ -7223,55 +7206,55 @@

                Update

                1 -5 +8 0.5 A 2 -8 +6 1.0 B 1 -2 +7 1.5 C 2 -6 +9 0.5 A 1 -9 +3 1.0 B 2 -4 +1 1.5 C 1 -3 +5 0.5 A 2 -7 +2 1.0 B 1 -1 +4 1.5 C @@ -7987,23 +7970,21 @@

                Type conversion

                -
                -

                Rows

                -

                Rows can be selected or dropped using various selectors:

                +
                +

                Column Operations

                +

                There are a large number of column operations that can be performed on the columns in your dataset. These operations are a similar set as the Column API operations, but instead of operating directly on columns, they take a Dataset and a columns-selector.

                +

                The behavior of the operations differ based on their return value:

                  -
                • row id(s) - row index as number or seqence of numbers (first row has index 0, second 1 and so on)
                • -
                • sequence of true/false values
                • -
                • filter by predicate (argument is row as a map)
                • +
                • If an operation would return a scalar value, then the function behaves like an aggregator and can be used in group-by expresesions. Such functions will have the general signature:

                  +
                  (dataset columns-selector) => dataset
                • +
                • If an operation would return another column, then the function will not behave like an aggregator. Instead, it asks you to specify a target column, which it will add to the dataset that it returns. The signature of these functions is:

                  +
                  (ds target-col columns-selector) => dataset
                -

                When predicate is used you may want to limit columns passed to the function (select-keys option).

                -

                Additionally you may want to precalculate some values which will be visible for predicate as additional columns. It’s done internally by calling add-columns on a dataset. :pre is used as a column definitions.

                -
                -

                Select

                -

                Select fifth row

                +

                As there are a large number of operations, we will illustrate their usage. To begin with, here are some examples of operations whose result is a new column:

                -
                (tc/select-rows DS 4)
                +
                DS
                -

                _unnamed [1 4]:

                +

                _unnamed [9 4]:

                @@ -8016,18 +7997,65 @@

                Select

                + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                110.5A
                221.0B
                131.5C
                240.5A
                1 5 1.0 B
                261.5C
                170.5A
                281.0B
                191.5C
                -
                -

                Select 3 rows

                -
                (tc/select-rows DS [1 4 5])
                +
                (-> DS
                +    (tc/+ :SUM [:V1 :V2]))
                -

                _unnamed [3 4]:

                +

                _unnamed [9 5]:

                @@ -8035,35 +8063,80 @@

                Select

                + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + +
                :V2 :V3 :V4:SUM
                110.5A2
                2 2 1.0 B4
                131.5C4
                240.5A6
                1 5 1.0 B6
                2 6 1.5 C8
                170.5A8
                281.0B10
                191.5C10
                -
                -

                Select rows using sequence of true/false values

                -
                (tc/select-rows DS [true nil nil true])
                +
                (-> DS
                +    (tc/* :MULTIPY [:V1 :V2]))
                -

                _unnamed [2 4]:

                +

                _unnamed [9 5]:

                @@ -8071,6 +8144,7 @@

                Select

                + @@ -8079,60 +8153,133 @@

                Select

                + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                :V2 :V3 :V4:MULTIPY
                1 0.5 A1
                221.0B4
                131.5C3
                2 4 0.5 A8
                151.0B5
                261.5C12
                170.5A7
                281.0B16
                191.5C9
                -
                -

                Select rows using predicate

                +

                Now let’s look at operations that would return a scalar:

                -
                (tc/select-rows DS (comp #(< % 1) :V3))
                +
                (-> DS
                +    (tc/mean [:V1]))
                -

                _unnamed [3 4]:

                +

                _unnamed [1 1]:

                + + + + + + + + + + + +
                summary
                1.44444444
                +

                Notice that we did not supply a target column to the mean function. Since mean does not return a column, we do not provide this argument. Instead, we simply provide the dataset and a columns-selector. We then get back a dataset with the result.

                +

                Now let’s use this function within a grouping expression:

                +
                +
                (-> DS
                +    (tc/group-by [:V4])
                +    (tc/mean [:V2]))
                +
                +

                _unnamed [3 2]:

                - - - + - - - + - - - - + + - - - - + +
                :V1:V2:V3 :V4summary
                110.5 A4.0
                240.5AB5.0
                170.5AC6.0
                -
                -

                The same works on grouped dataset, let’s select first row from every group.

                +

                In this example, we grouped DS and then passed the resulting grouped Dataset directly to the mean operation. Since mean returns a scalar, it operates as an aggregator, summarizing the results of each group.

                +
                +
                +

                Rows

                +

                Rows can be selected or dropped using various selectors:

                +
                  +
                • row id(s) - row index as number or seqence of numbers (first row has index 0, second 1 and so on)
                • +
                • sequence of true/false values
                • +
                • filter by predicate (argument is row as a map)
                • +
                +

                When predicate is used you may want to limit columns passed to the function (select-keys option).

                +

                Additionally you may want to precalculate some values which will be visible for predicate as additional columns. It’s done internally by calling add-columns on a dataset. :pre is used as a column definitions.

                +
                +

                Select

                +

                Select fifth row

                -
                (-> DS
                -    (tc/group-by :V1)
                -    (tc/select-rows 0)
                -    (tc/ungroup))
                +
                (tc/select-rows DS 4)
                -

                _unnamed [2 4]:

                +

                _unnamed [1 4]:

                @@ -8145,28 +8292,157 @@

                Select

                - - - + + + - + +
                110.5A51.0B
                +
                +

                Select 3 rows

                +
                +
                (tc/select-rows DS [1 4 5])
                +
                +

                _unnamed [3 4]:

                + + + + + + + + + + + + + + + + + + + + + + +
                :V1:V2:V3:V4
                2 2 1.0 B
                151.0B
                261.5C

                -

                If you want to select :V2 values which are lower than or equal mean in grouped dataset you have to precalculate it using :pre.

                +

                Select rows using sequence of true/false values

                -
                (-> DS
                -    (tc/group-by :V4)
                -    (tc/select-rows (fn [row] (<= (:V2 row) (:mean row)))
                -                     {:pre {:mean #(tech.v3.datatype.functional/mean (% :V2))}})
                -    (tc/ungroup))
                +
                (tc/select-rows DS [true nil nil true])
                -

                _unnamed [6 4]:

                +

                _unnamed [2 4]:

                + + + + + + + + + + + + + + + + + + + + + + + +
                :V1:V2:V3:V4
                110.5A
                240.5A
                +
                +

                Select rows using predicate

                +
                +
                (tc/select-rows DS (comp #(< % 1) :V3))
                +
                +

                _unnamed [3 4]:

                + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                :V1:V2:V3:V4
                110.5A
                240.5A
                170.5A
                +
                +

                The same works on grouped dataset, let’s select first row from every group.

                +
                +
                (-> DS
                +    (tc/group-by :V1)
                +    (tc/select-rows 0)
                +    (tc/ungroup))
                +
                +

                _unnamed [2 4]:

                + + + + + + + + + + + + + + + + + + + + + + + +
                :V1:V2:V3:V4
                110.5A
                221.0B
                +
                +

                If you want to select :V2 values which are lower than or equal mean in grouped dataset you have to precalculate it using :pre.

                +
                +
                (-> DS
                +    (tc/group-by :V4)
                +    (tc/select-rows (fn [row] (<= (:V2 row) (:mean row)))
                +                     {:pre {:mean #(tech.v3.datatype.functional/mean (% :V2))}})
                +    (tc/ungroup))
                +
                +

                _unnamed [6 4]:

                @@ -8222,11 +8498,11 @@

                Drop


                Drop values lower than or equal :V2 column mean in grouped dataset.

                -
                (-> DS
                -    (tc/group-by :V4)
                -    (tc/drop-rows (fn [row] (<= (:V2 row) (:mean row)))
                -                   {:pre {:mean #(tech.v3.datatype.functional/mean (% :V2))}})
                -    (tc/ungroup))
                +
                (-> DS
                +    (tc/group-by :V4)
                +    (tc/drop-rows (fn [row] (<= (:V2 row) (:mean row)))
                +                   {:pre {:mean #(tech.v3.datatype.functional/mean (% :V2))}})
                +    (tc/ungroup))

                _unnamed [3 4]:

                @@ -8265,8 +8541,8 @@

                Map rows

                Call a mapping function for every row. Mapping function should return a map, where keys are column names (new or old) and values are column values.

                Works on grouped dataset too.

                -
                (tc/map-rows DS (fn [{:keys [V1 V2]}] {:V1 0
                -                                       :V5 (/ (+ V1 V2) (double V2))}))
                +
                (tc/map-rows DS (fn [{:keys [V1 V2]}] {:V1 0
                +                                       :V5 (/ (+ V1 V2) (double V2))}))

                _unnamed [9 5]:

                @@ -8353,7 +8629,7 @@

                Other


                First row

                -
                (tc/first DS)
                +
                (tc/first DS)

                _unnamed [1 4]:

                @@ -8377,7 +8653,7 @@

                Other


                Last row

                -
                (tc/last DS)
                +
                (tc/last DS)

                _unnamed [1 4]:

                @@ -8401,8 +8677,8 @@

                Other


                Random row (single)

                -
                ^:note-to-test/skip
                -(tc/rand-nth DS)
                +
                ^:note-to-test/skip
                +(tc/rand-nth DS)

                _unnamed [1 4]:

                @@ -8416,17 +8692,17 @@

                Other

                - - - - + + + +
                240.5A151.0B

                Random row (single) with seed

                -
                (tc/rand-nth DS {:seed 42})
                +
                (tc/rand-nth DS {:seed 42})

                _unnamed [1 4]:

                @@ -8450,8 +8726,8 @@

                Other


                Random n (default: row count) rows with repetition.

                -
                ^:note-to-test/skip
                -(tc/random DS)
                +
                ^:note-to-test/skip
                +(tc/random DS)

                _unnamed [9 4]:

                @@ -8465,10 +8741,10 @@

                Other

                - - - - + + + + @@ -8478,15 +8754,15 @@

                Other

                - - - + + + - - - + + + @@ -8496,9 +8772,9 @@

                Other

                - - - + + + @@ -8523,8 +8799,8 @@

                Other


                Five random rows with repetition

                -
                ^:note-to-test/skip
                -(tc/random DS 5)
                +
                ^:note-to-test/skip
                +(tc/random DS 5)

                _unnamed [5 4]:

                240.5A131.5C
                2
                151.0B31.5C
                281.0B61.5C
                1
                170.5A51.0B
                1
                @@ -8539,10 +8815,22 @@

                Other

                + + + + + + + + + + + + @@ -8550,30 +8838,18 @@

                Other

                - - - - - - - + - - - - - -
                281.0B
                2 4 0.5 A
                110.5A
                1 9 C
                221.0B
                139 1.5 C
                170.5A

                Five random, non-repeating rows

                -
                ^:note-to-test/skip
                -(tc/random DS 5 {:repeat? false})
                +
                ^:note-to-test/skip
                +(tc/random DS 5 {:repeat? false})

                _unnamed [5 4]:

                @@ -8588,40 +8864,40 @@

                Other

                - + - - - - - - - + - + + - + + + + + +
                282 1.0 B
                110.5A
                2 6 1.5 C
                2 4 0.5 A
                1 17 0.5 A
                151.0B

                Five random, with seed

                -
                (tc/random DS 5 {:seed 42})
                +
                (tc/random DS 5 {:seed 42})

                _unnamed [5 4]:

                @@ -8669,8 +8945,8 @@

                Other


                Shuffle dataset

                -
                ^:note-to-test/skip
                -(tc/shuffle DS)
                +
                ^:note-to-test/skip
                +(tc/shuffle DS)

                _unnamed [9 4]:

                @@ -8684,16 +8960,16 @@

                Other

                - - + + - - - - + + + + @@ -8703,9 +8979,9 @@

                Other

                - - - + + + @@ -8715,34 +8991,34 @@

                Other

                - - - + + + - + - - - + + + - - - + + +
                1326 1.5 C
                240.5A151.0B
                2
                110.5A91.5C
                1
                281.0B40.5A
                193 1.5 C
                261.5C81.0B
                151.0B10.5A

                Shuffle with seed

                -
                (tc/shuffle DS {:seed 42})
                +
                (tc/shuffle DS {:seed 42})

                _unnamed [9 4]:

                @@ -8814,7 +9090,7 @@

                Other


                First n rows (default 5)

                -
                (tc/head DS)
                +
                (tc/head DS)

                _unnamed [5 4]:

                @@ -8862,7 +9138,7 @@

                Other


                Last n rows (default 5)

                -
                (tc/tail DS)
                +
                (tc/tail DS)

                _unnamed [5 4]:

                @@ -8913,7 +9189,7 @@

                Other

                rank is zero based and is defined at tablecloth.api.utils namespace.


                -
                (tc/by-rank DS :V3 zero?)
                +
                (tc/by-rank DS :V3 zero?)

                _unnamed [3 4]:

                @@ -8948,7 +9224,7 @@

                Other

                most V3 values

                -
                (tc/by-rank DS :V3 zero? {:desc? false})
                +
                (tc/by-rank DS :V3 zero? {:desc? false})

                _unnamed [3 4]:

                @@ -8985,7 +9261,7 @@

                Other


                Rank also works on multiple columns

                -
                (tc/by-rank DS [:V1 :V3] zero? {:desc? false})
                +
                (tc/by-rank DS [:V1 :V3] zero? {:desc? false})

                _unnamed [2 4]:

                @@ -9015,11 +9291,11 @@

                Other


                Select 5 random rows from each group

                -
                ^:note-to-test/skip
                -(-> DS
                -    (tc/group-by :V4)
                -    (tc/random 5)
                -    (tc/ungroup))
                +
                ^:note-to-test/skip
                +(-> DS
                +    (tc/group-by :V4)
                +    (tc/random 5)
                +    (tc/ungroup))

                _unnamed [15 4]:

                @@ -9034,25 +9310,25 @@

                Other

                - + - + - - + + - - + + @@ -9064,25 +9340,25 @@

                Other

                - + - - + + - - + + - + @@ -9094,13 +9370,13 @@

                Other

                - + - - + + @@ -9111,14 +9387,14 @@

                Other

                - - + + - + @@ -9136,7 +9412,7 @@

                Aggregate


                Let’s calculate mean of some columns

                -
                (tc/aggregate DS #(reduce + (% :V2)))
                +
                (tc/aggregate DS #(reduce + (% :V2)))

                _unnamed [1 1]:

                117 0.5 A
                117 0.5 A
                2411 0.5 A
                1124 0.5 A
                228 1.0 B
                1528 1.0 B
                2815 1.0 B
                228 1.0 B
                139 1.5 C
                2619 1.5 C
                C
                1926 1.5 C
                139 1.5 C
                @@ -9154,7 +9430,7 @@

                Aggregate


                Let’s give resulting column a name.

                -
                (tc/aggregate DS {:sum-of-V2 #(reduce + (% :V2))})
                +
                (tc/aggregate DS {:sum-of-V2 #(reduce + (% :V2))})

                _unnamed [1 1]:

                @@ -9172,7 +9448,7 @@

                Aggregate


                Sequential result is spread into separate columns

                -
                (tc/aggregate DS #(take 5(% :V2)))
                +
                (tc/aggregate DS #(take 5(% :V2)))

                _unnamed [1 5]:

                @@ -9198,9 +9474,9 @@

                Aggregate


                You can combine all variants and rename default prefix

                -
                (tc/aggregate DS [#(take 3 (% :V2))
                -                   (fn [ds] {:sum-v1 (reduce + (ds :V1))
                -                            :prod-v3 (reduce * (ds :V3))})] {:default-column-name-prefix "V2-value"})
                +
                (tc/aggregate DS [#(take 3 (% :V2))
                +                   (fn [ds] {:sum-v1 (reduce + (ds :V1))
                +                            :prod-v3 (reduce * (ds :V3))})] {:default-column-name-prefix "V2-value"})

                _unnamed [1 5]:

                @@ -9233,11 +9509,11 @@

                Aggregate


                Processing grouped dataset

                -
                (-> DS
                -    (tc/group-by [:V4])
                -    (tc/aggregate [#(take 3 (% :V2))
                -                    (fn [ds] {:sum-v1 (reduce + (ds :V1))
                -                             :prod-v3 (reduce * (ds :V3))})] {:default-column-name-prefix "V2-value"}))
                +
                (-> DS
                +    (tc/group-by [:V4])
                +    (tc/aggregate [#(take 3 (% :V2))
                +                    (fn [ds] {:sum-v1 (reduce + (ds :V1))
                +                             :prod-v3 (reduce * (ds :V3))})] {:default-column-name-prefix "V2-value"}))

                _unnamed [3 6]:

                @@ -9288,12 +9564,12 @@

                Aggregate

                Result of aggregating is automatically ungrouped, you can skip this step by stetting :ungroup option to false.

                -
                (-> DS
                -    (tc/group-by [:V3])
                -    (tc/aggregate [#(take 3 (% :V2))
                -                    (fn [ds] {:sum-v1 (reduce + (ds :V1))
                -                             :prod-v3 (reduce * (ds :V3))})] {:default-column-name-prefix "V2-value"
                -                                                              :ungroup? false}))
                +
                (-> DS
                +    (tc/group-by [:V3])
                +    (tc/aggregate [#(take 3 (% :V2))
                +                    (fn [ds] {:sum-v1 (reduce + (ds :V1))
                +                             :prod-v3 (reduce * (ds :V3))})] {:default-column-name-prefix "V2-value"
                +                                                              :ungroup? false}))

                _unnamed [3 3]:

                @@ -9326,7 +9602,7 @@

                Aggregate

                Column

                You can perform columnar aggreagation also. aggregate-columns selects columns and apply aggregating function (or sequence of functions) for each column separately.

                -
                (tc/aggregate-columns DS [:V1 :V2 :V3] #(reduce + %))
                +
                (tc/aggregate-columns DS [:V1 :V2 :V3] #(reduce + %))

                _unnamed [1 3]:

                @@ -9347,9 +9623,9 @@

                Column


                -
                (tc/aggregate-columns DS [:V1 :V2 :V3] [#(reduce + %)
                -                                         #(reduce max %)
                -                                         #(reduce * %)])
                +
                (tc/aggregate-columns DS [:V1 :V2 :V3] [#(reduce + %)
                +                                         #(reduce max %)
                +                                         #(reduce * %)])

                _unnamed [1 3]:

                @@ -9370,9 +9646,9 @@

                Column


                -
                (-> DS
                -    (tc/group-by [:V4])
                -    (tc/aggregate-columns [:V1 :V2 :V3] #(reduce + %)))
                +
                (-> DS
                +    (tc/group-by [:V4])
                +    (tc/aggregate-columns [:V1 :V2 :V3] #(reduce + %)))

                _unnamed [3 4]:

                @@ -9407,9 +9683,9 @@

                Column

                You can also aggregate whole dataset

                -
                (-> DS
                -    (tc/drop-columns :V4)
                -    (tc/aggregate-columns #(reduce + %)))
                +
                (-> DS
                +    (tc/drop-columns :V4)
                +    (tc/aggregate-columns #(reduce + %)))

                _unnamed [1 3]:

                @@ -9440,12 +9716,12 @@

                Crosstab

              • :pivot? - if false, flat aggregation result is returned (default: false)
              • -
                (def ctds (tc/dataset {:a [:foo :foo :bar :bar :foo :foo]
                -                       :b [:one :one :two :one :two :one]
                -                       :c [:dull :dull :shiny :dull :dull :shiny]}))
                +
                (def ctds (tc/dataset {:a [:foo :foo :bar :bar :foo :foo]
                +                       :b [:one :one :two :one :two :one]
                +                       :c [:dull :dull :shiny :dull :dull :shiny]}))
                -
                ctds
                +
                ctds

                _unnamed [6 3]:

                @@ -9491,7 +9767,7 @@

                Crosstab


                -
                (tc/crosstab ctds :a [:b :c])
                +
                (tc/crosstab ctds :a [:b :c])

                _unnamed [2 5]:

                @@ -9531,7 +9807,7 @@

                Crosstab


                With marginals

                -
                (tc/crosstab ctds :a [:b :c] {:marginal-rows true :marginal-cols true})
                +
                (tc/crosstab ctds :a [:b :c] {:marginal-rows true :marginal-cols true})

                _unnamed [3 6]:

                @@ -9583,7 +9859,7 @@

                Crosstab


                Set missing value to -1

                -
                (tc/crosstab ctds :a [:b :c] {:missing-value -1})
                +
                (tc/crosstab ctds :a [:b :c] {:missing-value -1})

                _unnamed [2 5]:

                @@ -9623,7 +9899,7 @@

                Crosstab


                Turn off pivoting

                -
                (tc/crosstab ctds :a [:b :c] {:pivot? false})
                +
                (tc/crosstab ctds :a [:b :c] {:pivot? false})

                _unnamed [5 3]:

                @@ -9676,7 +9952,7 @@

                Order


                Order by single column, ascending

                -
                (tc/order-by DS :V1)
                +
                (tc/order-by DS :V1)

                _unnamed [9 4]:

                @@ -9748,7 +10024,7 @@

                Order


                Descending order

                -
                (tc/order-by DS :V1 :desc)
                +
                (tc/order-by DS :V1 :desc)

                _unnamed [9 4]:

                @@ -9820,7 +10096,7 @@

                Order


                Order by two columns

                -
                (tc/order-by DS [:V1 :V2])
                +
                (tc/order-by DS [:V1 :V2])

                _unnamed [9 4]:

                @@ -9892,7 +10168,7 @@

                Order


                Use different orders for columns

                -
                (tc/order-by DS [:V1 :V2] [:asc :desc])
                +
                (tc/order-by DS [:V1 :V2] [:asc :desc])

                _unnamed [9 4]:

                @@ -9962,7 +10238,7 @@

                Order

                -
                (tc/order-by DS [:V1 :V2] [:desc :desc])
                +
                (tc/order-by DS [:V1 :V2] [:desc :desc])

                _unnamed [9 4]:

                @@ -10032,7 +10308,7 @@

                Order

                -
                (tc/order-by DS [:V1 :V3] [:desc :asc])
                +
                (tc/order-by DS [:V1 :V3] [:desc :asc])

                _unnamed [9 4]:

                @@ -10104,9 +10380,9 @@

                Order


                Custom function can be used to provided ordering key. Here order by :V4 descending, then by product of other columns ascending.

                -
                (tc/order-by DS [:V4 (fn [row] (* (:V1 row)
                -                                  (:V2 row)
                -                                  (:V3 row)))] [:desc :asc])
                +
                (tc/order-by DS [:V4 (fn [row] (* (:V1 row)
                +                                  (:V2 row)
                +                                  (:V3 row)))] [:desc :asc])

                _unnamed [9 4]:

                @@ -10178,20 +10454,20 @@

                Order


                Custom comparator also can be used in case objects are not comparable by default. Let’s define artificial one: if Euclidean distance is lower than 2, compare along z else along x and y. We use first three columns for that.

                -
                (defn dist
                -  [v1 v2]
                -  (->> v2
                -       (map - v1)
                -       (map #(* % %))
                -       (reduce +)
                -       (Math/sqrt)))
                +
                (defn dist
                +  [v1 v2]
                +  (->> v2
                +       (map - v1)
                +       (map #(* % %))
                +       (reduce +)
                +       (Math/sqrt)))
                -
                (tc/order-by DS [:V1 :V2 :V3] (fn [[x1 y1 z1 :as v1] [x2 y2 z2 :as v2]]
                -                                (let [d (dist v1 v2)]
                -                                  (if (< d 2.0)
                -                                    (compare z1 z2)
                -                                    (compare [x1 y1] [x2 y2])))))
                +
                (tc/order-by DS [:V1 :V2 :V3] (fn [[x1 y1 z1 :as v1] [x2 y2 z2 :as v2]]
                +                                (let [d (dist v1 v2)]
                +                                  (if (< d 2.0)
                +                                    (compare z1 z2)
                +                                    (compare [x1 y1] [x2 y2])))))

                _unnamed [9 4]:

                @@ -10268,7 +10544,7 @@

                Unique


                Remove duplicates from whole dataset

                -
                (tc/unique-by DS)
                +
                (tc/unique-by DS)

                _unnamed [9 4]:

                @@ -10340,7 +10616,7 @@

                Unique


                Remove duplicates from each group selected by column.

                -
                (tc/unique-by DS :V1)
                +
                (tc/unique-by DS :V1)

                _unnamed [2 4]:

                @@ -10370,7 +10646,7 @@

                Unique


                Pair of columns

                -
                (tc/unique-by DS [:V1 :V3])
                +
                (tc/unique-by DS [:V1 :V3])

                _unnamed [6 4]:

                @@ -10424,7 +10700,7 @@

                Unique


                Also function can be used, split dataset by modulo 3 on columns :V2

                -
                (tc/unique-by DS (fn [m] (mod (:V2 m) 3)))
                +
                (tc/unique-by DS (fn [m] (mod (:V2 m) 3)))

                _unnamed [3 4]:

                @@ -10460,10 +10736,10 @@

                Unique


                The same can be achived with group-by

                -
                (-> DS
                -    (tc/group-by (fn [m] (mod (:V2 m) 3)))
                -    (tc/first)
                -    (tc/ungroup))
                +
                (-> DS
                +    (tc/group-by (fn [m] (mod (:V2 m) 3)))
                +    (tc/first)
                +    (tc/ungroup))

                _unnamed [3 4]:

                @@ -10499,10 +10775,10 @@

                Unique


                Grouped dataset

                -
                (-> DS
                -    (tc/group-by :V4)
                -    (tc/unique-by :V1)
                -    (tc/ungroup))
                +
                (-> DS
                +    (tc/group-by :V4)
                +    (tc/unique-by :V1)
                +    (tc/ungroup))

                _unnamed [6 4]:

                @@ -10565,7 +10841,7 @@

                Strategies


                Last

                -
                (tc/unique-by DS :V1 {:strategy :last})
                +
                (tc/unique-by DS :V1 {:strategy :last})

                _unnamed [2 4]:

                @@ -10595,8 +10871,8 @@

                Strategies


                Random

                -
                ^:note-to-test/skip
                -(tc/unique-by DS :V1 {:strategy :random})
                +
                ^:note-to-test/skip
                +(tc/unique-by DS :V1 {:strategy :random})

                _unnamed [2 4]:

                @@ -10610,23 +10886,23 @@

                Strategies

                - - - - + + + + - - - - + + + +
                240.5A131.5C
                151.0B261.5C

                Pack columns into vector

                -
                (tc/unique-by DS :V4 {:strategy vec})
                +
                (tc/unique-by DS :V4 {:strategy vec})

                _unnamed [3 3]:

                @@ -10658,7 +10934,7 @@

                Strategies


                Sum columns

                -
                (tc/unique-by DS :V4 {:strategy (partial reduce +)})
                +
                (tc/unique-by DS :V4 {:strategy (partial reduce +)})

                _unnamed [3 3]:

                @@ -10690,7 +10966,7 @@

                Strategies


                Group by function and apply functions

                -
                (tc/unique-by DS (fn [m] (mod (:V2 m) 3)) {:strategy vec})
                +
                (tc/unique-by DS (fn [m] (mod (:V2 m) 3)) {:strategy vec})

                _unnamed [3 4]:

                @@ -10726,10 +11002,10 @@

                Strategies


                Grouped dataset

                -
                (-> DS
                -    (tc/group-by :V1)
                -    (tc/unique-by (fn [m] (mod (:V2 m) 3)) {:strategy vec})
                -    (tc/ungroup {:add-group-as-column :from-V1}))
                +
                (-> DS
                +    (tc/group-by :V1)
                +    (tc/unique-by (fn [m] (mod (:V2 m) 3)) {:strategy vec})
                +    (tc/ungroup {:add-group-as-column :from-V1}))

                _unnamed [6 5]:

                @@ -10795,13 +11071,13 @@

                Missing

                column-selector can be used to limit considered columns

                Let’s define dataset which contains missing values

                -
                (def DSm (tc/dataset {:V1 (take 9 (cycle [1 2 nil]))
                -                      :V2 (range 1 10)
                -                      :V3 (take 9 (cycle [0.5 1.0 nil 1.5]))
                -                      :V4 (take 9 (cycle ["A" "B" "C"]))}))
                +
                (def DSm (tc/dataset {:V1 (take 9 (cycle [1 2 nil]))
                +                      :V2 (range 1 10)
                +                      :V3 (take 9 (cycle [0.5 1.0 nil 1.5]))
                +                      :V4 (take 9 (cycle ["A" "B" "C"]))}))
                -
                DSm
                +
                DSm

                _unnamed [9 4]:

                @@ -10874,7 +11150,7 @@

                Missing

                Select

                Select rows with missing values

                -
                (tc/select-missing DSm)
                +
                (tc/select-missing DSm)

                _unnamed [4 4]:

                @@ -10916,7 +11192,7 @@

                Select


                Select rows with missing values in :V1

                -
                (tc/select-missing DSm :V1)
                +
                (tc/select-missing DSm :V1)

                _unnamed [3 4]:

                @@ -10952,10 +11228,10 @@

                Select


                The same with grouped dataset

                -
                (-> DSm
                -    (tc/group-by :V4)
                -    (tc/select-missing :V3)
                -    (tc/ungroup))
                +
                (-> DSm
                +    (tc/group-by :V4)
                +    (tc/select-missing :V3)
                +    (tc/ungroup))

                _unnamed [2 4]:

                @@ -10987,7 +11263,7 @@

                Select

                Drop

                Drop rows with missing values

                -
                (tc/drop-missing DSm)
                +
                (tc/drop-missing DSm)

                _unnamed [5 4]:

                @@ -11035,7 +11311,7 @@

                Drop


                Drop rows with missing values in :V1

                -
                (tc/drop-missing DSm :V1)
                +
                (tc/drop-missing DSm :V1)

                _unnamed [6 4]:

                @@ -11089,10 +11365,10 @@

                Drop


                The same with grouped dataset

                -
                (-> DSm
                -    (tc/group-by :V4)
                -    (tc/drop-missing :V1)
                -    (tc/ungroup))
                +
                (-> DSm
                +    (tc/group-by :V4)
                +    (tc/drop-missing :V1)
                +    (tc/ungroup))

                _unnamed [6 4]:

                @@ -11172,11 +11448,11 @@

                Replace

                Let’s define special dataset here:

                -
                (def DSm2 (tc/dataset {:a [nil nil nil 1.0 2  nil nil nil nil  nil 4   nil  11 nil nil]
                -                       :b [2   2   2 nil nil nil nil nil nil 13   nil   3  4  5 5]}))
                +
                (def DSm2 (tc/dataset {:a [nil nil nil 1.0 2  nil nil nil nil  nil 4   nil  11 nil nil]
                +                       :b [2   2   2 nil nil nil nil nil nil 13   nil   3  4  5 5]}))
                -
                DSm2
                +
                DSm2

                _unnamed [15 2]:

                @@ -11252,7 +11528,7 @@

                Replace


                Replace missing with default strategy for all columns

                -
                (tc/replace-missing DSm2)
                +
                (tc/replace-missing DSm2)

                _unnamed [15 2]:

                @@ -11328,7 +11604,7 @@

                Replace


                Replace missing with single value in whole dataset

                -
                (tc/replace-missing DSm2 :all :value 999)
                +
                (tc/replace-missing DSm2 :all :value 999)

                _unnamed [15 2]:

                @@ -11404,7 +11680,7 @@

                Replace


                Replace missing with single value in :a column

                -
                (tc/replace-missing DSm2 :a :value 999)
                +
                (tc/replace-missing DSm2 :a :value 999)

                _unnamed [15 2]:

                @@ -11480,7 +11756,7 @@

                Replace


                Replace missing with sequence in :a column

                -
                (tc/replace-missing DSm2 :a :value [-999 -998 -997])
                +
                (tc/replace-missing DSm2 :a :value [-999 -998 -997])

                _unnamed [15 2]:

                @@ -11556,7 +11832,7 @@

                Replace


                Replace missing with a function (mean)

                -
                (tc/replace-missing DSm2 :a :value tech.v3.datatype.functional/mean)
                +
                (tc/replace-missing DSm2 :a :value tech.v3.datatype.functional/mean)

                _unnamed [15 2]:

                @@ -11632,7 +11908,7 @@

                Replace


                Replace missing some missing values with a map

                -
                (tc/replace-missing DSm2 :a :value {0 100 1 -100 14 -1000})
                +
                (tc/replace-missing DSm2 :a :value {0 100 1 -100 14 -1000})

                _unnamed [15 2]:

                @@ -11708,7 +11984,7 @@

                Replace


                Using :down strategy, fills gaps with values from above. You can see that if missings are at the beginning, the are filled with first value

                -
                (tc/replace-missing DSm2 [:a :b] :downup)
                +
                (tc/replace-missing DSm2 [:a :b] :downup)

                _unnamed [15 2]:

                @@ -11784,7 +12060,7 @@

                Replace


                To fix above issue you can provide value

                -
                (tc/replace-missing DSm2 [:a :b] :down 999)
                +
                (tc/replace-missing DSm2 [:a :b] :down 999)

                _unnamed [15 2]:

                @@ -11860,7 +12136,7 @@

                Replace


                The same applies for :up strategy which is opposite direction.

                -
                (tc/replace-missing DSm2 [:a :b] :up)
                +
                (tc/replace-missing DSm2 [:a :b] :up)

                _unnamed [15 2]:

                @@ -11935,7 +12211,7 @@

                Replace


                -
                (tc/replace-missing DSm2 [:a :b] :updown)
                +
                (tc/replace-missing DSm2 [:a :b] :updown)

                _unnamed [15 2]:

                @@ -12011,7 +12287,7 @@

                Replace


                The same applies for :up strategy which is opposite direction.

                -
                (tc/replace-missing DSm2 [:a :b] :midpoint)
                +
                (tc/replace-missing DSm2 [:a :b] :midpoint)

                _unnamed [15 2]:

                @@ -12087,7 +12363,7 @@

                Replace


                We can use a function which is applied after applying :up or :down

                -
                (tc/replace-missing DSm2 [:a :b] :down tech.v3.datatype.functional/mean)
                +
                (tc/replace-missing DSm2 [:a :b] :down tech.v3.datatype.functional/mean)

                _unnamed [15 2]:

                @@ -12163,7 +12439,7 @@

                Replace


                Lerp tries to apply linear interpolation of the values

                -
                (tc/replace-missing DSm2 [:a :b] :lerp)
                +
                (tc/replace-missing DSm2 [:a :b] :lerp)

                _unnamed [15 2]:

                @@ -12239,10 +12515,10 @@

                Replace


                Lerp works also on dates

                -
                (-> (tc/dataset {:dt [(java.time.LocalDateTime/of 2020 1 1 11 22 33)
                -                      nil nil nil nil nil nil nil
                -                      (java.time.LocalDateTime/of 2020 10 1 1 1 1)]})
                -    (tc/replace-missing :lerp))
                +
                (-> (tc/dataset {:dt [(java.time.LocalDateTime/of 2020 1 1 11 22 33)
                +                      nil nil nil nil nil nil nil
                +                      (java.time.LocalDateTime/of 2020 10 1 1 1 1)]})
                +    (tc/replace-missing :lerp))

                _unnamed [9 1]:

                @@ -12294,9 +12570,9 @@

                Inject


                -
                (-> (tc/dataset {:a [1 2 9]
                -                 :b [:a :b :c]})
                -    (tc/fill-range-replace :a 1))
                +
                (-> (tc/dataset {:a [1 2 9]
                +                 :b [:a :b :c]})
                +    (tc/fill-range-replace :a 1))

                _unnamed [9 2]:

                @@ -12373,7 +12649,7 @@

                Join


                Default usage. Create :joined column out of other columns.

                -
                (tc/join-columns DSm :joined [:V1 :V2 :V4])
                +
                (tc/join-columns DSm :joined [:V1 :V2 :V4])

                _unnamed [9 2]:

                @@ -12425,7 +12701,7 @@

                Join


                Without dropping source columns.

                -
                (tc/join-columns DSm :joined [:V1 :V2 :V4] {:drop-columns? false})
                +
                (tc/join-columns DSm :joined [:V1 :V2 :V4] {:drop-columns? false})

                _unnamed [9 5]:

                @@ -12507,7 +12783,7 @@

                Join


                Let’s replace missing value with “NA” string.

                -
                (tc/join-columns DSm :joined [:V1 :V2 :V4] {:missing-subst "NA"})
                +
                (tc/join-columns DSm :joined [:V1 :V2 :V4] {:missing-subst "NA"})

                _unnamed [9 2]:

                @@ -12559,8 +12835,8 @@

                Join


                We can use custom separator.

                -
                (tc/join-columns DSm :joined [:V1 :V2 :V4] {:separator "/"
                -                                            :missing-subst "."})
                +
                (tc/join-columns DSm :joined [:V1 :V2 :V4] {:separator "/"
                +                                            :missing-subst "."})

                _unnamed [9 2]:

                @@ -12612,8 +12888,8 @@

                Join


                Or even sequence of separators.

                -
                (tc/join-columns DSm :joined [:V1 :V2 :V4] {:separator ["-" "/"]
                -                                            :missing-subst "."})
                +
                (tc/join-columns DSm :joined [:V1 :V2 :V4] {:separator ["-" "/"]
                +                                            :missing-subst "."})

                _unnamed [9 2]:

                @@ -12665,7 +12941,7 @@

                Join


                The other types of results, map:

                -
                (tc/join-columns DSm :joined [:V1 :V2 :V4] {:result-type :map})
                +
                (tc/join-columns DSm :joined [:V1 :V2 :V4] {:result-type :map})

                _unnamed [9 2]:

                @@ -12717,7 +12993,7 @@

                Join


                Sequence

                -
                (tc/join-columns DSm :joined [:V1 :V2 :V4] {:result-type :seq})
                +
                (tc/join-columns DSm :joined [:V1 :V2 :V4] {:result-type :seq})

                _unnamed [9 2]:

                @@ -12769,7 +13045,7 @@

                Join


                Custom function, calculate hash

                -
                (tc/join-columns DSm :joined [:V1 :V2 :V4] {:result-type hash})
                +
                (tc/join-columns DSm :joined [:V1 :V2 :V4] {:result-type hash})

                _unnamed [9 2]:

                @@ -12821,10 +13097,10 @@

                Join


                Grouped dataset

                -
                (-> DSm
                -    (tc/group-by :V4)
                -    (tc/join-columns :joined [:V1 :V2 :V4])
                -    (tc/ungroup))
                +
                (-> DSm
                +    (tc/group-by :V4)
                +    (tc/join-columns :joined [:V1 :V2 :V4])
                +    (tc/ungroup))

                _unnamed [9 2]:

                @@ -12878,11 +13154,11 @@

                Join

                Tidyr examples

                source

                -
                (def df (tc/dataset {:x ["a" "a" nil nil]
                -                      :y ["b" nil "b" nil]}))
                +
                (def df (tc/dataset {:x ["a" "a" nil nil]
                +                      :y ["b" nil "b" nil]}))
                -
                df
                +
                df

                _unnamed [4 2]:

                @@ -12913,9 +13189,9 @@
                Tidyr examples

                -
                (tc/join-columns df "z" [:x :y] {:drop-columns? false
                -                                  :missing-subst "NA"
                -                                  :separator "_"})
                +
                (tc/join-columns df "z" [:x :y] {:drop-columns? false
                +                                  :missing-subst "NA"
                +                                  :separator "_"})

                _unnamed [4 3]:

                @@ -12951,8 +13227,8 @@
                Tidyr examples

                -
                (tc/join-columns df "z" [:x :y] {:drop-columns? false
                -                                  :separator "_"})
                +
                (tc/join-columns df "z" [:x :y] {:drop-columns? false
                +                                  :separator "_"})

                _unnamed [4 3]:

                @@ -13011,9 +13287,9 @@

                Separate


                Separate float into integer and factional values

                -
                (tc/separate-column DS :V3 [:int-part :frac-part] (fn [^double v]
                -                                                     [(int (quot v 1.0))
                -                                                      (mod v 1.0)]))
                +
                (tc/separate-column DS :V3 [:int-part :frac-part] (fn [^double v]
                +                                                     [(int (quot v 1.0))
                +                                                      (mod v 1.0)]))

                _unnamed [9 5]:

                @@ -13095,9 +13371,9 @@

                Separate


                Source column can be kept

                -
                (tc/separate-column DS :V3 [:int-part :frac-part] (fn [^double v]
                -                                                     [(int (quot v 1.0))
                -                                                      (mod v 1.0)]) {:drop-column? false})
                +
                (tc/separate-column DS :V3 [:int-part :frac-part] (fn [^double v]
                +                                                     [(int (quot v 1.0))
                +                                                      (mod v 1.0)]) {:drop-column? false})

                _unnamed [9 6]:

                @@ -13189,9 +13465,9 @@

                Separate


                We can treat 0 or 0.0 as missing value

                -
                (tc/separate-column DS :V3 [:int-part :frac-part] (fn [^double v]
                -                                                     [(int (quot v 1.0))
                -                                                      (mod v 1.0)]) {:missing-subst [0 0.0]})
                +
                (tc/separate-column DS :V3 [:int-part :frac-part] (fn [^double v]
                +                                                     [(int (quot v 1.0))
                +                                                      (mod v 1.0)]) {:missing-subst [0 0.0]})

                _unnamed [9 5]:

                @@ -13273,12 +13549,12 @@

                Separate


                Works on grouped dataset

                -
                (-> DS
                -    (tc/group-by :V4)
                -    (tc/separate-column :V3 [:int-part :fract-part] (fn [^double v]
                -                                                       [(int (quot v 1.0))
                -                                                        (mod v 1.0)]))
                -    (tc/ungroup))
                +
                (-> DS
                +    (tc/group-by :V4)
                +    (tc/separate-column :V3 [:int-part :fract-part] (fn [^double v]
                +                                                       [(int (quot v 1.0))
                +                                                        (mod v 1.0)]))
                +    (tc/ungroup))

                _unnamed [9 5]:

                @@ -13360,9 +13636,9 @@

                Separate


                Separate using separator returning sequence of maps.

                -
                (tc/separate-column DS :V3 (fn [^double v]
                -                              {:int-part (int (quot v 1.0))
                -                               :fract-part (mod v 1.0)}))
                +
                (tc/separate-column DS :V3 (fn [^double v]
                +                              {:int-part (int (quot v 1.0))
                +                               :fract-part (mod v 1.0)}))

                _unnamed [9 5]:

                @@ -13443,9 +13719,9 @@

                Separate

                Keeping all columns

                -
                (tc/separate-column DS :V3 nil (fn [^double v]
                -                                  {:int-part (int (quot v 1.0))
                -                                   :fract-part (mod v 1.0)}) {:drop-column? false})
                +
                (tc/separate-column DS :V3 nil (fn [^double v]
                +                                  {:int-part (int (quot v 1.0))
                +                                   :fract-part (mod v 1.0)}) {:drop-column? false})

                _unnamed [9 6]:

                @@ -13536,9 +13812,9 @@

                Separate

                Droping all colums but separated

                -
                (tc/separate-column DS :V3 nil (fn [^double v]
                -                                 {:int-part (int (quot v 1.0))
                -                                  :fract-part (mod v 1.0)}) {:drop-column? :all})
                +
                (tc/separate-column DS :V3 nil (fn [^double v]
                +                                 {:int-part (int (quot v 1.0))
                +                                  :fract-part (mod v 1.0)}) {:drop-column? :all})

                _unnamed [9 2]:

                @@ -13589,8 +13865,8 @@

                Separate

                Infering column names

                -
                (tc/separate-column DS :V3 (fn [^double v]
                -                             [(int (quot v 1.0)) (mod v 1.0)]))
                +
                (tc/separate-column DS :V3 (fn [^double v]
                +                             [(int (quot v 1.0)) (mod v 1.0)]))

                _unnamed [9 5]:

                @@ -13672,9 +13948,9 @@

                Separate


                Join and separate together.

                -
                (-> DSm
                -    (tc/join-columns :joined [:V1 :V2 :V4] {:result-type :map})
                -    (tc/separate-column :joined [:v1 :v2 :v4] (juxt :V1 :V2 :V4)))
                +
                (-> DSm
                +    (tc/join-columns :joined [:V1 :V2 :V4] {:result-type :map})
                +    (tc/separate-column :joined [:v1 :v2 :v4] (juxt :V1 :V2 :V4)))

                _unnamed [9 4]:

                @@ -13744,9 +14020,9 @@

                Separate

                -
                (-> DSm
                -    (tc/join-columns :joined [:V1 :V2 :V4] {:result-type :seq})
                -    (tc/separate-column :joined [:v1 :v2 :v4] identity))
                +
                (-> DSm
                +    (tc/join-columns :joined [:V1 :V2 :V4] {:result-type :seq})
                +    (tc/separate-column :joined [:v1 :v2 :v4] identity))

                _unnamed [9 4]:

                @@ -13819,19 +14095,19 @@

                Separate

                Tidyr examples

                separate source extract source

                -
                (def df-separate (tc/dataset {:x [nil "a.b" "a.d" "b.c"]}))
                +
                (def df-separate (tc/dataset {:x [nil "a.b" "a.d" "b.c"]}))
                -
                (def df-separate2 (tc/dataset {:x ["a" "a b" nil "a b c"]}))
                +
                (def df-separate2 (tc/dataset {:x ["a" "a b" nil "a b c"]}))
                -
                (def df-separate3 (tc/dataset {:x ["a?b" nil "a.b" "b:c"]}))
                +
                (def df-separate3 (tc/dataset {:x ["a?b" nil "a.b" "b:c"]}))
                -
                (def df-extract (tc/dataset {:x [nil "a-b" "a-d" "b-c" "d-e"]}))
                +
                (def df-extract (tc/dataset {:x [nil "a-b" "a-d" "b-c" "d-e"]}))
                -
                df-separate
                +
                df-separate

                _unnamed [4 1]:

                @@ -13856,7 +14132,7 @@
                Tidyr examples
                -
                df-separate2
                +
                df-separate2

                _unnamed [4 1]:

                @@ -13881,7 +14157,7 @@
                Tidyr examples
                -
                df-separate3
                +
                df-separate3

                _unnamed [4 1]:

                @@ -13906,7 +14182,7 @@
                Tidyr examples
                -
                df-extract
                +
                df-extract

                _unnamed [5 1]:

                @@ -13935,7 +14211,7 @@
                Tidyr examples

                -
                (tc/separate-column df-separate :x [:A :B] "\\.")
                +
                (tc/separate-column df-separate :x [:A :B] "\\.")

                _unnamed [4 2]:

                @@ -13967,7 +14243,7 @@
                Tidyr examples

                You can drop columns after separation by setting nil as a name. We need second value here.

                -
                (tc/separate-column df-separate :x [nil :B] "\\.")
                +
                (tc/separate-column df-separate :x [nil :B] "\\.")

                _unnamed [4 1]:

                @@ -13994,7 +14270,7 @@
                Tidyr examples

                Extra data is dropped

                -
                (tc/separate-column df-separate2 :x ["a" "b"] " ")
                +
                (tc/separate-column df-separate2 :x ["a" "b"] " ")

                _unnamed [4 2]:

                @@ -14026,7 +14302,7 @@
                Tidyr examples

                Split with regular expression

                -
                (tc/separate-column df-separate3 :x ["a" "b"] "[?\\.:]")
                +
                (tc/separate-column df-separate3 :x ["a" "b"] "[?\\.:]")

                _unnamed [4 2]:

                @@ -14058,7 +14334,7 @@
                Tidyr examples

                Or just regular expression to extract values

                -
                (tc/separate-column df-separate3 :x ["a" "b"] #"(.).(.)")
                +
                (tc/separate-column df-separate3 :x ["a" "b"] #"(.).(.)")

                _unnamed [4 2]:

                @@ -14090,7 +14366,7 @@
                Tidyr examples

                Extract first value only

                -
                (tc/separate-column df-extract :x ["A"] "-")
                +
                (tc/separate-column df-extract :x ["A"] "-")

                _unnamed [5 1]:

                @@ -14120,7 +14396,7 @@
                Tidyr examples

                Split with regex

                -
                (tc/separate-column df-extract :x ["A" "B"] #"(\p{Alnum})-(\p{Alnum})")
                +
                (tc/separate-column df-extract :x ["A" "B"] #"(\p{Alnum})-(\p{Alnum})")

                _unnamed [5 2]:

                @@ -14156,7 +14432,7 @@
                Tidyr examples

                Only a,b,c,d strings

                -
                (tc/separate-column df-extract :x ["A" "B"] #"([a-d]+)-([a-d]+)")
                +
                (tc/separate-column df-extract :x ["A" "B"] #"([a-d]+)-([a-d]+)")

                _unnamed [5 2]:

                @@ -14195,10 +14471,10 @@
                Tidyr examples

                Array column conversion

                A dataset can have as well columns of type java array. We can convert from normal columns to a single array column and back like this:

                -
                (-> (tc/dataset {:x [(double-array [1 2 3])
                -                     (double-array [4 5 6])]
                -                 :y [:a :b]})
                -    (tc/array-column->columns :x))
                +
                (-> (tc/dataset {:x [(double-array [1 2 3])
                +                     (double-array [4 5 6])]
                +                 :y [:a :b]})
                +    (tc/array-column->columns :x))

                _unnamed [2 4]:

                @@ -14227,10 +14503,10 @@

                Array column conve

                and the other way around:

                -
                (-> (tc/dataset {0 [0.0 1 2]
                -                 1 [3.0 4 5]
                -                 :x [:a :b :c]})
                -    (tc/columns->array-column [0 1] :y))
                +
                (-> (tc/dataset {0 [0.0 1 2]
                +                 1 [3.0 4 5]
                +                 :x [:a :b :c]})
                +    (tc/columns->array-column [0 1] :y))

                _unnamed [3 2]:

                @@ -14243,15 +14519,15 @@

                Array column conve

                - + - + - +
                :a[D@3b1f65f0[D@748f75f8
                :b[D@5175581a[D@16b3665b
                :c[D@13c60300[D@7515921b
                @@ -14265,7 +14541,7 @@

                Fold/Unroll Rows

                Fold-by

                Group-by and pack columns into vector

                -
                (tc/fold-by DS [:V3 :V4 :V1])
                +
                (tc/fold-by DS [:V3 :V4 :V1])

                _unnamed [6 4]:

                @@ -14319,7 +14595,7 @@

                Fold-by


                You can pack several columns at once.

                -
                (tc/fold-by DS [:V4])
                +
                (tc/fold-by DS [:V4])

                _unnamed [3 4]:

                @@ -14355,7 +14631,7 @@

                Fold-by


                You can use custom packing function

                -
                (tc/fold-by DS [:V4] seq)
                +
                (tc/fold-by DS [:V4] seq)

                _unnamed [3 4]:

                @@ -14390,7 +14666,7 @@

                Fold-by

                or

                -
                (tc/fold-by DS [:V4] set)
                +
                (tc/fold-by DS [:V4] set)

                _unnamed [3 4]:

                @@ -14426,10 +14702,10 @@

                Fold-by


                This works also on grouped dataset

                -
                (-> DS
                -    (tc/group-by :V1)
                -    (tc/fold-by :V4)
                -    (tc/ungroup))
                +
                (-> DS
                +    (tc/group-by :V1)
                +    (tc/fold-by :V4)
                +    (tc/ungroup))

                _unnamed [6 4]:

                @@ -14492,7 +14768,7 @@

                Unroll


                Unroll one column

                -
                (tc/unroll (tc/fold-by DS [:V4]) [:V1])
                +
                (tc/unroll (tc/fold-by DS [:V4]) [:V1])

                _unnamed [9 4]:

                @@ -14564,7 +14840,7 @@

                Unroll


                Unroll all folded columns

                -
                (tc/unroll (tc/fold-by DS [:V4]) [:V1 :V2 :V3])
                +
                (tc/unroll (tc/fold-by DS [:V4]) [:V1 :V2 :V3])

                _unnamed [9 4]:

                @@ -14636,10 +14912,10 @@

                Unroll


                Unroll one by one leads to cartesian product

                -
                (-> DS
                -    (tc/fold-by [:V4 :V1])
                -    (tc/unroll [:V2])
                -    (tc/unroll [:V3]))
                +
                (-> DS
                +    (tc/fold-by [:V4 :V1])
                +    (tc/unroll [:V2])
                +    (tc/unroll [:V3]))

                _unnamed [15 4]:

                @@ -14747,7 +15023,7 @@

                Unroll


                You can add indexes

                -
                (tc/unroll (tc/fold-by DS [:V1]) [:V4 :V2 :V3] {:indexes? true})
                +
                (tc/unroll (tc/fold-by DS [:V1]) [:V4 :V2 :V3] {:indexes? true})

                _unnamed [9 5]:

                @@ -14827,7 +15103,7 @@

                Unroll

                -
                (tc/unroll (tc/fold-by DS [:V1]) [:V4 :V2 :V3] {:indexes? "vector idx"})
                +
                (tc/unroll (tc/fold-by DS [:V1]) [:V4 :V2 :V3] {:indexes? "vector idx"})

                _unnamed [9 5]:

                @@ -14909,12 +15185,12 @@

                Unroll


                You can also force datatypes

                -
                (-> DS
                -    (tc/fold-by [:V1])
                -    (tc/unroll [:V4 :V2 :V3] {:datatypes {:V4 :string
                -                                           :V2 :int16
                -                                           :V3 :float32}})
                -    (tc/info :columns))
                +
                (-> DS
                +    (tc/fold-by [:V1])
                +    (tc/unroll [:V4 :V2 :V3] {:datatypes {:V4 :string
                +                                           :V2 :int16
                +                                           :V3 :float32}})
                +    (tc/info :columns))

                _unnamed :column info [4 4]:

                @@ -14956,11 +15232,11 @@

                Unroll


                This works also on grouped dataset

                -
                (-> DS
                -    (tc/group-by :V1)
                -    (tc/fold-by [:V1 :V4])
                -    (tc/unroll :V3 {:indexes? true})
                -    (tc/ungroup))
                +
                (-> DS
                +    (tc/group-by :V1)
                +    (tc/fold-by [:V1 :V4])
                +    (tc/unroll :V3 {:indexes? true})
                +    (tc/ungroup))

                _unnamed [9 5]:

                @@ -15077,10 +15353,10 @@

                Longer


                Create rows from all columns but "religion".

                -
                (def relig-income (tc/dataset "data/relig_income.csv"))
                +
                (def relig-income (tc/dataset "data/relig_income.csv"))
                -
                relig-income
                +
                relig-income

                data/relig_income.csv [18 11]:

                @@ -15350,7 +15626,7 @@

                Longer

                -
                (tc/pivot->longer relig-income (complement #{"religion"}))
                +
                (tc/pivot->longer relig-income (complement #{"religion"}))

                data/relig_income.csv [180 3]:

                @@ -15477,15 +15753,15 @@

                Longer


                Convert only columns starting with "wk" and pack them into :week column, values go to :rank column

                -
                (def bilboard (-> (tc/dataset "data/billboard.csv.gz")
                -                  (tc/drop-columns :type/boolean)))
                +
                (def bilboard (-> (tc/dataset "data/billboard.csv.gz")
                +                  (tc/drop-columns :type/boolean)))

                drop some boolean columns, tidyr just skips them

                -
                (->> bilboard
                -     (tc/column-names)
                -     (take 13)
                -     (tc/select-columns bilboard))
                +
                (->> bilboard
                +     (tc/column-names)
                +     (take 13)
                +     (tc/select-columns bilboard))

                data/billboard.csv.gz [317 13]:

                @@ -15855,8 +16131,8 @@

                Longer

                -
                (tc/pivot->longer bilboard #(clojure.string/starts-with? % "wk") {:target-columns :week
                -                                                                   :value-column-name :rank})
                +
                (tc/pivot->longer bilboard #(clojure.string/starts-with? % "wk") {:target-columns :week
                +                                                                   :value-column-name :rank})

                data/billboard.csv.gz [5307 5]:

                @@ -16036,10 +16312,10 @@

                Longer


                We can create numerical column out of column names

                -
                (tc/pivot->longer bilboard #(clojure.string/starts-with? % "wk") {:target-columns :week
                -                                                                   :value-column-name :rank
                -                                                                   :splitter #"wk(.*)"
                -                                                                   :datatypes {:week :int16}})
                +
                (tc/pivot->longer bilboard #(clojure.string/starts-with? % "wk") {:target-columns :week
                +                                                                   :value-column-name :rank
                +                                                                   :splitter #"wk(.*)"
                +                                                                   :datatypes {:week :int16}})

                data/billboard.csv.gz [5307 5]:

                @@ -16219,13 +16495,13 @@

                Longer


                When column names contain observation data, such column names can be splitted and data can be restored into separate columns.

                -
                (def who (tc/dataset "data/who.csv.gz"))
                +
                (def who (tc/dataset "data/who.csv.gz"))
                -
                (->> who
                -     (tc/column-names)
                -     (take 10)
                -     (tc/select-columns who))
                +
                (->> who
                +     (tc/column-names)
                +     (take 10)
                +     (tc/select-columns who))

                data/who.csv.gz [7240 10]:

                @@ -16523,9 +16799,9 @@

                Longer

                -
                (tc/pivot->longer who #(clojure.string/starts-with? % "new") {:target-columns [:diagnosis :gender :age]
                -                                                               :splitter #"new_?(.*)_(.)(.*)"
                -                                                               :value-column-name :count})
                +
                (tc/pivot->longer who #(clojure.string/starts-with? % "new") {:target-columns [:diagnosis :gender :age]
                +                                                               :splitter #"new_?(.*)_(.)(.*)"
                +                                                               :value-column-name :count})

                data/who.csv.gz [76046 8]:

                @@ -16777,10 +17053,10 @@

                Longer


                When data contains multiple observations per row, we can use splitter and pattern for target columns to create new columns and put values there. In following dataset we have two obseravations dob and gender for two childs. We want to put child infomation into the column and leave dob and gender for values.

                -
                (def family (tc/dataset "data/family.csv"))
                +
                (def family (tc/dataset "data/family.csv"))
                -
                family
                +
                family

                data/family.csv [5 5]:

                @@ -16832,9 +17108,9 @@

                Longer

                -
                (tc/pivot->longer family (complement #{"family"}) {:target-columns [nil :child]
                -                                                    :splitter "_"
                -                                                    :datatypes {"gender" :int16}})
                +
                (tc/pivot->longer family (complement #{"family"}) {:target-columns [nil :child]
                +                                                    :splitter "_"
                +                                                    :datatypes {"gender" :int16}})

                data/family.csv [9 4]:

                @@ -16906,10 +17182,10 @@

                Longer


                Similar here, we have two observations: x and y in four groups.

                -
                (def anscombe (tc/dataset "data/anscombe.csv"))
                +
                (def anscombe (tc/dataset "data/anscombe.csv"))
                -
                anscombe
                +
                anscombe

                data/anscombe.csv [11 8]:

                @@ -17039,8 +17315,8 @@

                Longer

                -
                (tc/pivot->longer anscombe :all {:splitter #"(.)(.)"
                -                                  :target-columns [nil :set]})
                +
                (tc/pivot->longer anscombe :all {:splitter #"(.)(.)"
                +                                  :target-columns [nil :set]})

                data/anscombe.csv [44 3]:

                @@ -17166,18 +17442,18 @@

                Longer


                -
                ^:note-to-test/skip
                -(def pnl (tc/dataset {:x [1 2 3 4]
                -                       :a [1 1 0 0]
                -                       :b [0 1 1 1]
                -                       :y1 (repeatedly 4 rand)
                -                       :y2 (repeatedly 4 rand)
                -                       :z1 [3 3 3 3]
                -                       :z2 [-2 -2 -2 -2]}))
                +
                ^:note-to-test/skip
                +(def pnl (tc/dataset {:x [1 2 3 4]
                +                       :a [1 1 0 0]
                +                       :b [0 1 1 1]
                +                       :y1 (repeatedly 4 rand)
                +                       :y2 (repeatedly 4 rand)
                +                       :z1 [3 3 3 3]
                +                       :z2 [-2 -2 -2 -2]}))
                -
                ^:note-to-test/skip
                -pnl
                +
                ^:note-to-test/skip
                +pnl

                _unnamed [4 7]:

                @@ -17197,8 +17473,8 @@

                Longer

                - - + + @@ -17206,8 +17482,8 @@

                Longer

                - - + + @@ -17215,8 +17491,8 @@

                Longer

                - - + + @@ -17224,17 +17500,17 @@

                Longer

                - - + +
                1 1 00.893620670.939546900.232476820.86040638 3 -2
                2 1 10.604512770.066245850.171123500.78233469 3 -2
                3 0 10.808201090.075430120.853341200.78209703 3 -2
                4 0 10.176487330.378556100.106464120.08332125 3 -2
                -
                ^:note-to-test/skip
                -(tc/pivot->longer pnl [:y1 :y2 :z1 :z2] {:target-columns [nil :times]
                -                                          :splitter #":(.)(.)"})
                +
                ^:note-to-test/skip
                +(tc/pivot->longer pnl [:y1 :y2 :z1 :z2] {:target-columns [nil :times]
                +                                          :splitter #":(.)(.)"})

                _unnamed [8 6]:

                @@ -17254,7 +17530,7 @@

                Longer

                - + @@ -17262,7 +17538,7 @@

                Longer

                - + @@ -17270,7 +17546,7 @@

                Longer

                - + @@ -17278,7 +17554,7 @@

                Longer

                - + @@ -17286,7 +17562,7 @@

                Longer

                - + @@ -17294,7 +17570,7 @@

                Longer

                - + @@ -17302,7 +17578,7 @@

                Longer

                - + @@ -17310,7 +17586,7 @@

                Longer

                - + @@ -17331,10 +17607,10 @@

                Wider


                Use station as a name source for columns and seen for values

                -
                (def fish (tc/dataset "data/fish_encounters.csv"))
                +
                (def fish (tc/dataset "data/fish_encounters.csv"))
                -
                fish
                +
                fish

                data/fish_encounters.csv [114 3]:

                1 0 10.893620670.23247682 3
                1 1 10.604512770.17112350 3
                0 1 10.808201090.85334120 3
                0 1 10.176487330.10646412 3
                1 0 20.939546900.86040638 -2
                1 1 20.066245850.78233469 -2
                0 1 20.075430120.78209703 -2
                0 1 20.378556100.08332125 -2
                @@ -17459,7 +17735,7 @@

                Wider

                -
                (tc/pivot->wider fish "station" "seen" {:drop-missing? false})
                +
                (tc/pivot->wider fish "station" "seen" {:drop-missing? false})

                data/fish_encounters.csv [19 12]:

                @@ -17765,10 +18041,10 @@

                Wider


                If selected columns contain multiple values, such values should be folded.

                -
                (def warpbreaks (tc/dataset "data/warpbreaks.csv"))
                +
                (def warpbreaks (tc/dataset "data/warpbreaks.csv"))
                -
                warpbreaks
                +
                warpbreaks

                data/warpbreaks.csv [54 3]:

                @@ -17894,9 +18170,9 @@

                Wider

                Let’s see how many values are for each type of wool and tension groups

                -
                (-> warpbreaks
                -    (tc/group-by ["wool" "tension"])
                -    (tc/aggregate {:n tc/row-count}))
                +
                (-> warpbreaks
                +    (tc/group-by ["wool" "tension"])
                +    (tc/aggregate {:n tc/row-count}))

                _unnamed [6 3]:

                @@ -17941,9 +18217,9 @@

                Wider

                -
                (-> warpbreaks
                -    (tc/reorder-columns ["wool" "tension" "breaks"])
                -    (tc/pivot->wider "wool" "breaks" {:fold-fn vec}))
                +
                (-> warpbreaks
                +    (tc/reorder-columns ["wool" "tension" "breaks"])
                +    (tc/pivot->wider "wool" "breaks" {:fold-fn vec}))

                data/warpbreaks.csv [3 3]:

                @@ -17979,9 +18255,9 @@

                Wider

                We can also calculate mean (aggreate values)

                -
                (-> warpbreaks
                -    (tc/reorder-columns ["wool" "tension" "breaks"])
                -    (tc/pivot->wider "wool" "breaks" {:fold-fn tech.v3.datatype.functional/mean}))
                +
                (-> warpbreaks
                +    (tc/reorder-columns ["wool" "tension" "breaks"])
                +    (tc/pivot->wider "wool" "breaks" {:fold-fn tech.v3.datatype.functional/mean}))

                data/warpbreaks.csv [3 3]:

                @@ -18013,10 +18289,10 @@

                Wider


                Multiple source columns, joined with default separator.

                -
                (def production (tc/dataset "data/production.csv"))
                +
                (def production (tc/dataset "data/production.csv"))
                -
                production
                +
                production

                data/production.csv [45 4]:

                @@ -18164,7 +18440,7 @@

                Wider

                -
                (tc/pivot->wider production ["product" "country"] "production")
                +
                (tc/pivot->wider production ["product" "country"] "production")

                data/production.csv [15 4]:

                @@ -18271,7 +18547,7 @@

                Wider

                Joined with custom function

                -
                (tc/pivot->wider production ["product" "country"] "production" {:concat-columns-with vec})
                +
                (tc/pivot->wider production ["product" "country"] "production" {:concat-columns-with vec})

                data/production.csv [15 4]:

                @@ -18379,10 +18655,10 @@

                Wider


                Multiple value columns

                -
                (def income (tc/dataset "data/us_rent_income.csv"))
                +
                (def income (tc/dataset "data/us_rent_income.csv"))
                -
                income
                +
                income

                data/us_rent_income.csv [104 5]:

                @@ -18553,7 +18829,7 @@

                Wider

                -
                (tc/pivot->wider income "variable" ["estimate" "moe"] {:drop-missing? false})
                +
                (tc/pivot->wider income "variable" ["estimate" "moe"] {:drop-missing? false})

                data/us_rent_income.csv [52 6]:

                @@ -18756,9 +19032,9 @@

                Wider

                Value concatenated by custom function

                -
                (tc/pivot->wider income "variable" ["estimate" "moe"] {:concat-columns-with vec
                -                                                        :concat-value-with vector
                -                                                        :drop-missing? false})
                +
                (tc/pivot->wider income "variable" ["estimate" "moe"] {:concat-columns-with vec
                +                                                        :concat-value-with vector
                +                                                        :drop-missing? false})

                data/us_rent_income.csv [52 6]:

                @@ -18962,10 +19238,10 @@

                Wider


                Reshape contact data

                -
                (def contacts (tc/dataset "data/contacts.csv"))
                +
                (def contacts (tc/dataset "data/contacts.csv"))
                -
                contacts
                +
                contacts

                data/contacts.csv [6 3]:

                @@ -19010,7 +19286,7 @@

                Wider

                -
                (tc/pivot->wider contacts "field" "value" {:drop-missing? false})
                +
                (tc/pivot->wider contacts "field" "value" {:drop-missing? false})

                data/contacts.csv [3 4]:

                @@ -19050,13 +19326,13 @@

                Reshaping


                World bank

                -
                (def world-bank-pop (tc/dataset "data/world_bank_pop.csv.gz"))
                +
                (def world-bank-pop (tc/dataset "data/world_bank_pop.csv.gz"))
                -
                (->> world-bank-pop
                -     (tc/column-names)
                -     (take 8)
                -     (tc/select-columns world-bank-pop))
                +
                (->> world-bank-pop
                +     (tc/column-names)
                +     (take 8)
                +     (tc/select-columns world-bank-pop))

                data/world_bank_pop.csv.gz [1056 8]:

                @@ -19307,12 +19583,12 @@

                Reshaping

                Step 1 - convert years column into values

                -
                (def pop2 (tc/pivot->longer world-bank-pop (map str (range 2000 2018)) {:drop-missing? false
                -                                                                         :target-columns ["year"]
                -                                                                         :value-column-name "value"}))
                +
                (def pop2 (tc/pivot->longer world-bank-pop (map str (range 2000 2018)) {:drop-missing? false
                +                                                                         :target-columns ["year"]
                +                                                                         :value-column-name "value"}))
                -
                pop2
                +
                pop2

                data/world_bank_pop.csv.gz [19008 4]:

                @@ -19461,12 +19737,12 @@

                Reshaping

                Step 2 - separate "indicate" column

                -
                (def pop3 (tc/separate-column pop2
                -                               "indicator" ["area" "variable"]
                -                               #(rest (clojure.string/split % #"\."))))
                +
                (def pop3 (tc/separate-column pop2
                +                               "indicator" ["area" "variable"]
                +                               #(rest (clojure.string/split % #"\."))))
                -
                pop3
                +
                pop3

                data/world_bank_pop.csv.gz [19008 5]:

                @@ -19638,7 +19914,7 @@

                Reshaping

                Step 3 - Make columns based on "variable" values.

                -
                (tc/pivot->wider pop3 "variable" "value" {:drop-missing? false})
                +
                (tc/pivot->wider pop3 "variable" "value" {:drop-missing? false})

                data/world_bank_pop.csv.gz [9504 5]:

                @@ -19812,13 +20088,13 @@

                Reshaping


                Multi-choice

                -
                (def multi (tc/dataset {:id [1 2 3 4]
                -                         :choice1 ["A" "C" "D" "B"]
                -                         :choice2 ["B" "B" nil "D"]
                -                         :choice3 ["C" nil nil nil]}))
                +
                (def multi (tc/dataset {:id [1 2 3 4]
                +                         :choice1 ["A" "C" "D" "B"]
                +                         :choice2 ["B" "B" nil "D"]
                +                         :choice3 ["C" nil nil nil]}))
                -
                multi
                +
                multi

                _unnamed [4 4]:

                @@ -19859,12 +20135,12 @@

                Reshaping

                Step 1 - convert all choices into rows and add artificial column to all values which are not missing.

                -
                (def multi2 (-> multi
                -                (tc/pivot->longer (complement #{:id}))
                -                (tc/add-column :checked true)))
                +
                (def multi2 (-> multi
                +                (tc/pivot->longer (complement #{:id}))
                +                (tc/add-column :checked true)))
                -
                multi2
                +
                multi2

                _unnamed [8 4]:

                @@ -19929,11 +20205,11 @@

                Reshaping

                Step 2 - Convert back to wide form with actual choices as columns

                -
                ^:note-to-test/skip
                -(-> multi2
                -    (tc/drop-columns :$column)
                -    (tc/pivot->wider :$value :checked {:drop-missing? false})
                -    (tc/order-by :id))
                +
                ^:note-to-test/skip
                +(-> multi2
                +    (tc/drop-columns :$column)
                +    (tc/pivot->wider :$value :checked {:drop-missing? false})
                +    (tc/order-by :id))

                _unnamed [4 5]:

                @@ -19981,15 +20257,15 @@

                Reshaping


                Construction

                -
                (def construction (tc/dataset "data/construction.csv"))
                +
                (def construction (tc/dataset "data/construction.csv"))
                -
                (def construction-unit-map {"1 unit" "1"
                -                            "2 to 4 units" "2-4"
                -                            "5 units or more" "5+"})
                +
                (def construction-unit-map {"1 unit" "1"
                +                            "2 to 4 units" "2-4"
                +                            "5 units or more" "5+"})
                -
                construction
                +
                construction

                data/construction.csv [9 9]:

                @@ -20121,14 +20397,14 @@

                Reshaping

                Conversion 1 - Group two column types

                -
                (-> construction
                -    (tc/pivot->longer #"^[125NWS].*|Midwest" {:target-columns [:units :region]
                -                                               :splitter (fn [col-name]
                -                                                           (if (re-matches #"^[125].*" col-name)
                -                                                             [(construction-unit-map col-name) nil]
                -                                                             [nil col-name]))
                -                                               :value-column-name :n
                -                                               :drop-missing? false}))
                +
                (-> construction
                +    (tc/pivot->longer #"^[125NWS].*|Midwest" {:target-columns [:units :region]
                +                                               :splitter (fn [col-name]
                +                                                           (if (re-matches #"^[125].*" col-name)
                +                                                             [(construction-unit-map col-name) nil]
                +                                                             [nil col-name]))
                +                                               :value-column-name :n
                +                                               :drop-missing? false}))

                data/construction.csv [63 5]:

                @@ -20300,17 +20576,17 @@

                Reshaping

                Conversion 2 - Convert to longer form and back and rename columns

                -
                (-> construction
                -    (tc/pivot->longer #"^[125NWS].*|Midwest" {:target-columns [:units :region]
                -                                               :splitter (fn [col-name]
                -                                                           (if (re-matches #"^[125].*" col-name)
                -                                                             [(construction-unit-map col-name) nil]
                -                                                             [nil col-name]))
                -                                               :value-column-name :n
                -                                               :drop-missing? false})
                -    (tc/pivot->wider [:units :region] :n {:drop-missing? false})
                -    (tc/rename-columns (zipmap (vals construction-unit-map)
                -                                (keys construction-unit-map))))
                +
                (-> construction
                +    (tc/pivot->longer #"^[125NWS].*|Midwest" {:target-columns [:units :region]
                +                                               :splitter (fn [col-name]
                +                                                           (if (re-matches #"^[125].*" col-name)
                +                                                             [(construction-unit-map col-name) nil]
                +                                                             [nil col-name]))
                +                                               :value-column-name :n
                +                                               :drop-missing? false})
                +    (tc/pivot->wider [:units :region] :n {:drop-missing? false})
                +    (tc/rename-columns (zipmap (vals construction-unit-map)
                +                                (keys construction-unit-map))))

                data/construction.csv [9 9]:

                @@ -20443,10 +20719,10 @@

                Reshaping


                Various operations on stocks, examples taken from gather and spread manuals.

                -
                (def stocks-tidyr (tc/dataset "data/stockstidyr.csv"))
                +
                (def stocks-tidyr (tc/dataset "data/stockstidyr.csv"))
                -
                stocks-tidyr
                +
                stocks-tidyr

                data/stockstidyr.csv [10 4]:

                @@ -20523,11 +20799,11 @@

                Reshaping

                Convert to longer form

                -
                (def stocks-long (tc/pivot->longer stocks-tidyr ["X" "Y" "Z"] {:value-column-name :price
                -                                                                :target-columns :stocks}))
                +
                (def stocks-long (tc/pivot->longer stocks-tidyr ["X" "Y" "Z"] {:value-column-name :price
                +                                                                :target-columns :stocks}))
                -
                stocks-long
                +
                stocks-long

                data/stockstidyr.csv [30 3]:

                @@ -20653,7 +20929,7 @@

                Reshaping

                Convert back to wide form

                -
                (tc/pivot->wider stocks-long :stocks :price)
                +
                (tc/pivot->wider stocks-long :stocks :price)

                data/stockstidyr.csv [10 4]:

                @@ -20730,10 +21006,10 @@

                Reshaping

                Convert to wide form on time column (let’s limit values to a couple of rows)

                -
                ^:note-to-test/skip
                -(-> stocks-long
                -    (tc/select-rows (range 0 30 4))
                -    (tc/pivot->wider "time" :price {:drop-missing? false}))
                +
                ^:note-to-test/skip
                +(-> stocks-long
                +    (tc/select-rows (range 0 30 4))
                +    (tc/pivot->wider "time" :price {:drop-missing? false}))

                data/stockstidyr.csv [3 6]:

                @@ -20801,19 +21077,19 @@

                Join/Concat DatasetsTo add two datasets columnwise use bind. The number of rows should be equal.

                Datasets used in examples:

                -
                (def ds1 (tc/dataset {:a [1 2 1 2 3 4 nil nil 4]
                -                       :b (range 101 110)
                -                       :c (map str "abs tract")}))
                +
                (def ds1 (tc/dataset {:a [1 2 1 2 3 4 nil nil 4]
                +                       :b (range 101 110)
                +                       :c (map str "abs tract")}))
                -
                (def ds2 (tc/dataset {:a [nil 1 2 5 4 3 2 1 nil]
                -                      :b (range 110 101 -1)
                -                      :c (map str "datatable")
                -                      :d (symbol "X")
                -                      :e [3 4 5 6 7 nil 8 1 1]}))
                +
                (def ds2 (tc/dataset {:a [nil 1 2 5 4 3 2 1 nil]
                +                      :b (range 110 101 -1)
                +                      :c (map str "datatable")
                +                      :d (symbol "X")
                +                      :e [3 4 5 6 7 nil 8 1 1]}))
                -
                ds1
                +
                ds1

                _unnamed [9 3]:

                @@ -20873,7 +21149,7 @@

                Join/Concat Datasets

                -
                ds2
                +
                ds2

                _unnamed [9 5]:

                @@ -20955,7 +21231,7 @@

                Join/Concat Datasets

                Left

                -
                (tc/left-join ds1 ds2 :b)
                +
                (tc/left-join ds1 ds2 :b)

                left-outer-join [9 8]:

                @@ -21066,7 +21342,7 @@

                Left


                -
                (tc/left-join ds2 ds1 :b)
                +
                (tc/left-join ds2 ds1 :b)

                left-outer-join [9 8]:

                @@ -21177,7 +21453,7 @@

                Left


                -
                (tc/left-join ds1 ds2 [:a :b])
                +
                (tc/left-join ds1 ds2 [:a :b])

                left-outer-join [9 8]:

                @@ -21288,7 +21564,7 @@

                Left


                -
                (tc/left-join ds2 ds1 [:a :b])
                +
                (tc/left-join ds2 ds1 [:a :b])

                left-outer-join [9 8]:

                @@ -21399,7 +21675,7 @@

                Left


                -
                (tc/left-join ds1 ds2 {:left :a :right :e})
                +
                (tc/left-join ds1 ds2 {:left :a :right :e})

                left-outer-join [11 8]:

                @@ -21526,31 +21802,11 @@

                Left

                - - - - - - - - - - - - - - - - - - - -
                107a
                108c

                -
                (tc/left-join ds2 ds1 {:left :e :right :a})
                +
                (tc/left-join ds2 ds1 {:left :e :right :a})

                left-outer-join [13 8]:

                @@ -21703,7 +21959,7 @@

                Left

                @@ -21814,7 +22070,7 @@

                Right


                -
                (tc/right-join ds2 ds1 :b)
                +
                (tc/right-join ds2 ds1 :b)

                right-outer-join [9 8]:

                @@ -21925,7 +22181,7 @@

                Right


                -
                (tc/right-join ds1 ds2 [:a :b])
                +
                (tc/right-join ds1 ds2 [:a :b])

                right-outer-join [9 8]:

                @@ -22036,7 +22292,7 @@

                Right


                -
                (tc/right-join ds2 ds1 [:a :b])
                +
                (tc/right-join ds2 ds1 [:a :b])

                right-outer-join [9 8]:

                @@ -22147,7 +22403,7 @@

                Right


                -
                (tc/right-join ds1 ds2 {:left :a :right :e})
                +
                (tc/right-join ds1 ds2 {:left :a :right :e})

                right-outer-join [13 8]:

                @@ -22298,7 +22554,7 @@

                Right


                -
                (tc/right-join ds2 ds1 {:left :e :right :a})
                +
                (tc/right-join ds2 ds1 {:left :e :right :a})

                right-outer-join [11 8]:

                @@ -22425,33 +22681,13 @@

                Right

                - - - - - - - - - - - - - - - - - - - -
                104
                107a
                108c

                Inner

                -
                (tc/inner-join ds1 ds2 :b)
                +
                (tc/inner-join ds1 ds2 :b)

                inner-join [8 7]:

                @@ -22543,7 +22779,7 @@

                Inner


                -
                (tc/inner-join ds2 ds1 :b)
                +
                (tc/inner-join ds2 ds1 :b)

                inner-join [8 7]:

                @@ -22635,7 +22871,7 @@

                Inner


                -
                (tc/inner-join ds1 ds2 [:a :b])
                +
                (tc/inner-join ds1 ds2 [:a :b])

                inner-join [4 8]:

                @@ -22696,7 +22932,7 @@

                Inner


                -
                (tc/inner-join ds2 ds1 [:a :b])
                +
                (tc/inner-join ds2 ds1 [:a :b])

                inner-join [4 8]:

                @@ -22757,7 +22993,7 @@

                Inner


                -
                (tc/inner-join ds1 ds2 {:left :a :right :e})
                +
                (tc/inner-join ds1 ds2 {:left :a :right :e})

                inner-join [9 7]:

                @@ -22858,7 +23094,7 @@

                Inner


                -
                (tc/inner-join ds2 ds1 {:left :e :right :a})
                +
                (tc/inner-join ds2 ds1 {:left :e :right :a})

                inner-join [9 7]:

                @@ -22962,7 +23198,7 @@

                Inner

                Full

                Join keeping all rows

                -
                (tc/full-join ds1 ds2 :b)
                +
                (tc/full-join ds1 ds2 :b)

                outer-join [10 7]:

                @@ -23072,7 +23308,7 @@

                Full


                -
                (tc/full-join ds2 ds1 :b)
                +
                (tc/full-join ds2 ds1 :b)

                outer-join [10 7]:

                @@ -23182,7 +23418,7 @@

                Full


                -
                (tc/full-join ds1 ds2 [:a :b])
                +
                (tc/full-join ds1 ds2 [:a :b])

                outer-join [14 8]:

                @@ -23343,7 +23579,7 @@

                Full


                -
                (tc/full-join ds2 ds1 [:a :b])
                +
                (tc/full-join ds2 ds1 [:a :b])

                outer-join [14 8]:

                @@ -23504,7 +23740,7 @@

                Full


                -
                (tc/full-join ds1 ds2 {:left :a :right :e})
                +
                (tc/full-join ds1 ds2 {:left :a :right :e})

                outer-join [15 8]:

                @@ -23675,7 +23911,7 @@

                Full


                -
                (tc/full-join ds2 ds1 {:left :e :right :a})
                +
                (tc/full-join ds2 ds1 {:left :e :right :a})

                outer-join [15 8]:

                @@ -23849,7 +24085,7 @@

                Full

                Semi

                Return rows from ds1 matching ds2

                -
                (tc/semi-join ds1 ds2 :b)
                +
                (tc/semi-join ds1 ds2 :b)

                _unnamed [8 3]:

                @@ -23905,7 +24141,7 @@

                Semi


                -
                (tc/semi-join ds2 ds1 :b)
                +
                (tc/semi-join ds2 ds1 :b)

                _unnamed [8 5]:

                @@ -23979,7 +24215,7 @@

                Semi


                -
                (tc/semi-join ds1 ds2 [:a :b])
                +
                (tc/semi-join ds1 ds2 [:a :b])

                _unnamed [4 3]:

                @@ -24015,7 +24251,7 @@

                Semi


                -
                (tc/semi-join ds2 ds1 [:a :b])
                +
                (tc/semi-join ds2 ds1 [:a :b])

                _unnamed [4 5]:

                @@ -24061,7 +24297,7 @@

                Semi


                -
                (tc/semi-join ds1 ds2 {:left :a :right :e})
                +
                (tc/semi-join ds1 ds2 {:left :a :right :e})

                _unnamed [7 3]:

                @@ -24108,21 +24344,11 @@

                Semi

                - - - - - - - - - -
                103 s
                107a
                108c

                -
                (tc/semi-join ds2 ds1 {:left :e :right :a})
                +
                (tc/semi-join ds2 ds1 {:left :e :right :a})

                _unnamed [5 5]:

                @@ -24178,7 +24404,7 @@

                Semi

                Anti

                Return rows from ds1 not matching ds2

                -
                (tc/anti-join ds1 ds2 :b)
                +
                (tc/anti-join ds1 ds2 :b)

                _unnamed [1 3]:

                @@ -24199,7 +24425,7 @@

                Anti


                -
                (tc/anti-join ds2 ds1 :b)
                +
                (tc/anti-join ds2 ds1 :b)

                _unnamed [1 5]:

                @@ -24224,7 +24450,7 @@

                Anti


                -
                (tc/anti-join ds1 ds2 [:a :b])
                +
                (tc/anti-join ds1 ds2 [:a :b])

                _unnamed [5 3]:

                @@ -24265,7 +24491,7 @@

                Anti


                -
                (tc/anti-join ds1 ds2 {:left :a :right :e})
                +
                (tc/anti-join ds1 ds2 {:left :a :right :e})

                _unnamed [2 3]:

                @@ -24291,7 +24517,7 @@

                Anti


                -
                (tc/anti-join ds2 ds1 {:left :e :right :a})
                +
                (tc/anti-join ds2 ds1 {:left :e :right :a})

                _unnamed [4 5]:

                @@ -24341,7 +24567,7 @@

                Hashing

                When :hashing option is used, data from join columns are preprocessed by applying join-columns funtion with :result-type set to the value of :hashing. This helps to create custom joining behaviour. Function used for hashing will get vector of row values from join columns.

                In the following example we will join columns on value modulo 5.

                -
                (tc/left-join ds1 ds2 :b {:hashing (fn [[v]] (mod v 5))})
                +
                (tc/left-join ds1 ds2 :b {:hashing (fn [[v]] (mod v 5))})

                left-outer-join [16 8]:

                @@ -24525,7 +24751,7 @@

                Hashing

                Cross

                Cross product from selected columns

                -
                (tc/cross-join ds1 ds2 [:a :b])
                +
                (tc/cross-join ds1 ds2 [:a :b])

                cross-join [81 4]:

                @@ -24674,7 +24900,7 @@

                Cross


                -
                (tc/cross-join ds1 ds2 {:left [:a :b] :right :e})
                +
                (tc/cross-join ds1 ds2 {:left [:a :b] :right :e})

                cross-join [81 3]:

                @@ -24803,7 +25029,7 @@

                Cross

                Expand

                Similar to cross product but works on a single dataset.

                -
                (tc/expand ds2 :a :c :d)
                +
                (tc/expand ds2 :a :c :d)

                cross-join [36 3]:

                @@ -24930,7 +25156,7 @@

                Expand


                Columns can be also bundled (nested) in tuples which are treated as a single entity during cross product.

                -
                (tc/expand ds2 [:a :c] [:e :b])
                +
                (tc/expand ds2 [:a :c] [:e :b])

                cross-join [81 4]:

                @@ -25082,7 +25308,7 @@

                Expand

                Complete

                Same as expand with all other columns preserved (filled with missing values if necessary).

                -
                (tc/complete ds2 :a :c :d)
                +
                (tc/complete ds2 :a :c :d)

                left-outer-join [36 5]:

                @@ -25254,7 +25480,7 @@

                Complete


                -
                (tc/complete ds2 [:a :c] [:e :b])
                +
                (tc/complete ds2 [:a :c] [:e :b])

                left-outer-join [81 5]:

                @@ -25428,15 +25654,15 @@

                Complete

                asof

                -
                (def left-ds (tc/dataset {:a [1 5 10]
                -                          :left-val ["a" "b" "c"]}))
                +
                (def left-ds (tc/dataset {:a [1 5 10]
                +                          :left-val ["a" "b" "c"]}))
                -
                (def right-ds (tc/dataset {:a [1 2 3 6 7]
                -                           :right-val [:a :b :c :d :e]}))
                +
                (def right-ds (tc/dataset {:a [1 2 3 6 7]
                +                           :right-val [:a :b :c :d :e]}))
                -
                left-ds
                +
                left-ds

                _unnamed [3 2]:

                @@ -25462,7 +25688,7 @@

                asof

                -
                right-ds
                +
                right-ds

                _unnamed [5 2]:

                @@ -25496,7 +25722,7 @@

                asof

                -
                (tc/asof-join left-ds right-ds :a)
                +
                (tc/asof-join left-ds right-ds :a)

                asof-<= [3 4]:

                @@ -25530,7 +25756,7 @@

                asof

                -
                (tc/asof-join left-ds right-ds :a {:asof-op :nearest})
                +
                (tc/asof-join left-ds right-ds :a {:asof-op :nearest})

                asof-nearest [3 4]:

                @@ -25564,7 +25790,7 @@

                asof

                -
                (tc/asof-join left-ds right-ds :a {:asof-op :>=})
                +
                (tc/asof-join left-ds right-ds :a {:asof-op :>=})

                asof->= [3 4]:

                @@ -25602,7 +25828,7 @@

                asof

                Concat

                contact joins rows from other datasets

                -
                (tc/concat ds1)
                +
                (tc/concat ds1)

                _unnamed [9 3]:

                @@ -25664,7 +25890,7 @@

                Concat


                concat-copying ensures all readers are evaluated.

                -
                (tc/concat-copying ds1)
                +
                (tc/concat-copying ds1)

                _unnamed [9 3]:

                @@ -25725,7 +25951,7 @@

                Concat


                -
                (tc/concat ds1 (tc/drop-columns ds2 :d))
                +
                (tc/concat ds1 (tc/drop-columns ds2 :d))

                _unnamed [18 4]:

                @@ -25850,8 +26076,8 @@

                Concat


                -
                ^:note-to-test/skip
                -(apply tc/concat (repeatedly 3 #(tc/random DS)))
                +
                ^:note-to-test/skip
                +(apply tc/concat (repeatedly 3 #(tc/random DS)))

                _unnamed [27 4]:

                @@ -25866,9 +26092,9 @@

                Concat

                - - - + + + @@ -25877,16 +26103,16 @@

                Concat

                - - - - + + + + - - - - + + + + @@ -25895,10 +26121,10 @@

                Concat

                - - - - + + + + @@ -25907,22 +26133,22 @@

                Concat

                - - - - + + + + - - - + + + - - - + + + @@ -25931,23 +26157,23 @@

                Concat

                + + + + + + - - + + - - - - - - @@ -25956,45 +26182,45 @@

                Concat

                - - - + + + - - - + + + - - - - + + + + - + - - - + + + - - - + + + - - - + + +
                191.5C70.5A
                2 C
                240.5A191.5C
                170.5A261.5C
                2 A
                240.5A151.0B
                2 C
                221.0B110.5A
                151.0B70.5A
                281.0B40.5A
                131.5C
                2 8 1.0 B
                1
                17 0.5 A
                191.5C
                1 7
                221.0B40.5A
                221.0B40.5A
                191.5C240.5A
                228 1.0 B
                221.0B40.5A
                261.5C81.0B
                170.5A91.5C
                @@ -26002,8 +26228,8 @@

                Concat

                Concat grouped dataset

                Concatenation of grouped datasets results also in grouped dataset.

                -
                (tc/concat (tc/group-by DS [:V3])
                -           (tc/group-by DS [:V4]))
                +
                (tc/concat (tc/group-by DS [:V3])
                +           (tc/group-by DS [:V4]))

                _unnamed [6 3]:

                @@ -26053,7 +26279,7 @@
                Concat grouped data

                Union

                The same as concat but returns unique rows

                -
                (apply tc/union (tc/drop-columns ds2 :d) (repeat 10 ds1))
                +
                (apply tc/union (tc/drop-columns ds2 :d) (repeat 10 ds1))

                union [18 4]:

                @@ -26178,8 +26404,8 @@

                Union


                -
                ^:note-to-test/skip
                -(apply tc/union (repeatedly 10 #(tc/random DS)))
                +
                ^:note-to-test/skip
                +(apply tc/union (repeatedly 10 #(tc/random DS)))

                union [9 4]:

                @@ -26193,50 +26419,50 @@

                Union

                - - - - - - - + + + + + + + - - - + + + - - - - - - - - - - - - + + + + + + - + - + + + + + + + @@ -26253,7 +26479,7 @@

                Union

                Bind

                bind adds empty columns during concat

                -
                (tc/bind ds1 ds2)
                +
                (tc/bind ds1 ds2)

                _unnamed [18 5]:

                191.5C
                282 1.0 B
                131.5C
                240.5A61.5C
                221.0B
                1 7 0.5 A
                131.5C
                240.5A
                1 1 0.5 A
                2681.0B
                19 1.5 C
                @@ -26397,7 +26623,7 @@

                Bind


                -
                (tc/bind ds2 ds1)
                +
                (tc/bind ds2 ds1)

                _unnamed [18 5]:

                @@ -26544,7 +26770,7 @@

                Bind

                Append

                append concats columns

                -
                (tc/append ds1 ds2)
                +
                (tc/append ds1 ds2)

                _unnamed [9 8]:

                @@ -26657,8 +26883,8 @@

                Append

                Intersection

                -
                (tc/intersect (tc/select-columns ds1 :b)
                -              (tc/select-columns ds2 :b))
                +
                (tc/intersect (tc/select-columns ds1 :b)
                +              (tc/select-columns ds2 :b))

                intersection [8 1]:

                @@ -26698,8 +26924,8 @@

                Intersection

                Difference

                -
                (tc/difference (tc/select-columns ds1 :b)
                -               (tc/select-columns ds2 :b))
                +
                (tc/difference (tc/select-columns ds1 :b)
                +               (tc/select-columns ds2 :b))

                difference [1 1]:

                @@ -26716,8 +26942,8 @@

                Difference


                -
                (tc/difference (tc/select-columns ds2 :b)
                -               (tc/select-columns ds1 :b))
                +
                (tc/difference (tc/select-columns ds2 :b)
                +               (tc/select-columns ds1 :b))

                difference [1 1]:

                @@ -26763,15 +26989,15 @@

                Split into train/test

                In case of grouped dataset each group is processed separately.

                See more

                -
                ^:note-to-test/skip
                -(def for-splitting (tc/dataset (map-indexed (fn [id v] {:id id
                -                                                        :partition v
                -                                                        :group (rand-nth [:g1 :g2 :g3])})
                -                                            (concat (repeat 20 :a) (repeat 5 :b)))))
                +
                ^:note-to-test/skip
                +(def for-splitting (tc/dataset (map-indexed (fn [id v] {:id id
                +                                                        :partition v
                +                                                        :group (rand-nth [:g1 :g2 :g3])})
                +                                            (concat (repeat 20 :a) (repeat 5 :b)))))
                -
                ^:note-to-test/skip
                -for-splitting
                +
                ^:note-to-test/skip
                +for-splitting

                _unnamed [25 3]:

                @@ -26786,37 +27012,37 @@

                Split into train/test

                - + - + - + - + - + - + - + @@ -26826,12 +27052,12 @@

                Split into train/test

                - + - + @@ -26846,32 +27072,32 @@

                Split into train/test

                - + - + - + - + - + - + @@ -26881,17 +27107,17 @@

                Split into train/test

                - + - + - +
                0 :a:g1:g2
                1 :a:g2:g1
                2 :a:g2:g1
                3 :a:g3:g2
                4 :a:g2:g3
                5 :a:g3:g1
                6 :a:g2:g3
                7
                8 :a:g1:g2
                9 :a:g2:g3
                15 :a:g1:g2
                16 :a:g2:g3
                17 :a:g1:g3
                18 :a:g1:g3
                19 :a:g3:g1
                20 :b:g2:g3
                21
                22 :b:g1:g2
                23 :b:g3:g1
                24 :b:g1:g2
                @@ -26899,10 +27125,10 @@

                Split into train/test

                k-Fold

                Returns k=5 maps

                -
                ^:note-to-test/skip
                -(-> for-splitting
                -    (tc/split)
                -    (tc/head 30))
                +
                ^:note-to-test/skip
                +(-> for-splitting
                +    (tc/split)
                +    (tc/head 30))

                _unnamed, (splitted) [30 5]:

                @@ -26917,21 +27143,21 @@

                k-Fold

                - - + + - - - + + + - + @@ -26947,182 +27173,182 @@

                k-Fold

                - + - + - + - - + + - + - + - + - + - + - + - + - - - + + + - - - + + + - + - + - + - + - + - + - + - + - - + + - + - + - - + + - + - + - + - + - - - + + + - + - + - - + + - + - + - + - + - - - + + + @@ -27130,10 +27356,10 @@

                k-Fold

                23:b18:a :g3 :train 0
                8:a:g122:b:g2 :train 0
                1412 :a :g2 :train
                16 :a:g2:g3 :train 0
                1015 :a:g1:g2 :train 0
                24:b10:a :g1 :train 0
                53 :a:g3:g2 :train 0
                04 :a:g1:g3 :train 0
                91 :a:g2:g1 :train 0
                48 :a :g2 :train 0
                18:a:g120:b:g3 :train 0
                2:a:g223:b:g1 :train 0
                190 :a:g3:g2 :train 0
                1213 :a :g2 :train 0
                36 :a :g3 :train 0
                179 :a:g1:g3 :train 0
                135 :a :g1 :train 0
                1511 :a :g1 :train 0
                6:a24:b :g2 :train 0
                119 :a:g2:g1 :test 0
                22:b2:a :g1 :test 0
                714 :a:g3:g2 :test 0
                1117 :a:g1:g3 :test 0
                20:b:g27:a:g3 :test 0
                119 :a:g2:g1 :train 1
                22:b2:a :g1 :train 1
                714 :a:g3:g2 :train 1
                1117 :a:g1:g3 :train 1
                20:b:g27:a:g3 :train 1

                Partition according to :k column to reflect it’s distribution

                -
                ^:note-to-test/skip
                -(-> for-splitting
                -    (tc/split :kfold {:partition-selector :partition})
                -    (tc/head 30))
                +
                ^:note-to-test/skip
                +(-> for-splitting
                +    (tc/split :kfold {:partition-selector :partition})
                +    (tc/head 30))

                _unnamed, (splitted) [30 5]:

                @@ -27148,210 +27374,210 @@

                k-Fold

                - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -27363,10 +27589,10 @@

                k-Fold

                Bootstrap

                -
                ^:note-to-test/skip
                -(tc/split for-splitting :bootstrap)
                +
                ^:note-to-test/skip
                +(tc/split for-splitting :bootstrap)
                -

                _unnamed, (splitted) [32 5]:

                +

                _unnamed, (splitted) [33 5]:

                141 :a:g2:g1 :train 0
                1114 :a:g1:g2 :train 0
                6 :a:g2:g3 :train 0
                1715 :a:g1:g2 :train 0
                016 :a:g1:g3 :train 0
                133 :a:g1:g2 :train 0
                1218 :a:g2:g3 :train 0
                411 :a:g2:g1 :train 0
                5 :a:g3:g1 :train 0
                197 :a :g3 :train 0
                32 :a:g3:g1 :train 0
                917 :a:g2:g3 :train 0
                710 :a:g3:g1 :train 0
                1519 :a :g1 :train 0
                20 :a :g2 :train 0
                113 :a :g2 :train 0
                108 :a:g1:g2 :test 0
                84 :a:g1:g3 :test 0
                169 :a:g2:g3 :test 0
                1812 :a:g1:g2 :test 0
                108 :a:g1:g2 :train 1
                84 :a:g1:g3 :train 1
                169 :a:g2:g3 :train 1
                1812 :a:g1:g2 :train 1
                016 :a:g1:g3 :train 1
                133 :a:g1:g2 :train 1
                1218 :a:g2:g3 :train 1
                411 :a:g2:g1 :train 1
                5 :a:g3:g1 :train 1
                197 :a :g3 :train
                @@ -27379,72 +27605,72 @@

                Bootstrap

                - - - + + + - + - + - - - + + + - + - + - + - + - + - - + + - - - + + + - + - + - - - + + + @@ -27456,78 +27682,78 @@

                Bootstrap

                - + - - + + - + - + - + - - + + - + - + - + - + - + - + - + - + - + - + - - + + @@ -27536,23 +27762,23 @@

                Bootstrap

                24:b:g14:a:g3 :train 0
                119 :a:g1:g3 :train 0
                10:a:g122:b:g2 :train 0
                1613 :a :g2 :train 0
                124 :a:g2:g3 :train 0
                1314 :a:g1:g2 :train 0
                23:b18:a :g3 :train 0
                12:a:g220:b:g3 :train 0
                46 :a:g2:g3 :train 0
                4:a:g223:b:g1 :train 0
                1918 :a :g3 :train 0
                11:a23:b :g1 :train 0
                178 :a:g1:g2 :train 0
                80 :a:g1:train:g2:test 0
                2 :a:g2:g1 :test 0
                35 :a:g3:g1 :test 0
                711 :a:g3:g1 :test 0
                915 :a :g2 :test 0
                1516 :a:g1:g3 :test 0
                1817 :a:g1:g3 :test 0
                22:b19:a :g1 :test 0

                with repeats, to get 100 splits

                -
                ^:note-to-test/skip
                -(-> for-splitting
                -    (tc/split :bootstrap {:repeats 100})
                -    (:$split-id)
                -    (distinct)
                -    (count))
                +
                ^:note-to-test/skip
                +(-> for-splitting
                +    (tc/split :bootstrap {:repeats 100})
                +    (:$split-id)
                +    (distinct)
                +    (count))
                -
                100
                +
                100

                Holdout

                with small ratio

                -
                ^:note-to-test/skip
                -(tc/split for-splitting :holdout {:ratio 0.2})
                +
                ^:note-to-test/skip
                +(tc/split for-splitting :holdout {:ratio 0.2})

                _unnamed, (splitted) [25 5]:

                @@ -27567,70 +27793,70 @@

                Holdout

                - + - + - + - - + + - + - + - - + + - + - + - - - + + + - + - + - + @@ -27644,71 +27870,71 @@

                Holdout

                - + - + - + - + - + - - + + - - - + + + - + - + - - + + - + - + - - + + @@ -27716,7 +27942,7 @@

                Holdout

                - + @@ -27724,8 +27950,8 @@

                Holdout

                417 :a:g2:g3 :train 0
                34 :a :g3 :train 0
                22:b10:a :g1 :train 0
                122 :a:g2:g1 :train 0
                11:a23:b :g1 :train 0
                143 :a :g2 :test 0
                85 :a :g1 :test 0
                23:b:g30:a:g2 :test 0
                1815 :a:g1:g2 :test 0
                214 :a :g2 :test
                59 :a :g3 :test 0
                07 :a:g1:g3 :test 0
                1718 :a:g1:g3 :test 0
                6:a24:b :g2 :test 0
                7:a:g321:b:g2 :test 0
                101 :a :g1 :test 0
                112 :a :g2 :test 0
                9:a22:b :g2 :test 0
                1611 :a:g2:g1 :test 0
                21:b13:a :g2 :test 0
                19 :a:g3:g1 :test 0

                you can split to more than two subdatasets with holdout

                -
                ^:note-to-test/skip
                -(tc/split for-splitting :holdout {:ratio [0.1 0.2 0.3 0.15 0.25]})
                +
                ^:note-to-test/skip
                +(tc/split for-splitting :holdout {:ratio [0.1 0.2 0.3 0.15 0.25]})

                _unnamed, (splitted) [25 5]:

                @@ -27740,71 +27966,71 @@

                Holdout

                - - + + - + - - - + + + - + - + - - + + - + - + - - - + + + - - + + - - + + @@ -27817,79 +28043,79 @@

                Holdout

                - + - + - + - - - + + + - + - + - + - + - + - + - - - + + + - - + + - + - + - + @@ -27897,9 +28123,9 @@

                Holdout

                22:b11:a :g1 :train 0
                517 :a :g3 :train 0
                7:a:g323:b:g1 :test 0
                819 :a :g1 :test 0
                48 :a :g2 :test 0
                6:a21:b :g2 :test 0
                1113 :a:g1:g2 :test 0
                9:a:g220:b:g3 :split-2 0
                20:b12:a :g2 :split-2 0
                14:a22:b :g2 :split-2 0
                196 :a :g3 :split-3 0
                184 :a:g1:g3 :split-3 0
                21:b:g29:a:g3 :split-3 0
                1615 :a :g2 :split-4 0
                1218 :a:g2:g3 :split-4 0
                216 :a:g1:g3 :split-4 0
                1510 :a :g1 :split-4 0
                24:b:g10:a:g2 :split-4 0
                1:a24:b :g2 :split-4 0
                172 :a :g1 :split-4 0
                103 :a:g1:g2 :split-4 0

                you can use also proportions with custom names

                -
                ^:note-to-test/skip
                -(tc/split for-splitting :holdout {:ratio [5 3 11 2]
                -                                  :split-names ["small" "smaller" "big" "the rest"]})
                +
                ^:note-to-test/skip
                +(tc/split for-splitting :holdout {:ratio [5 3 11 2]
                +                                  :split-names ["small" "smaller" "big" "the rest"]})

                _unnamed, (splitted) [25 5]:

                @@ -27914,72 +28140,72 @@

                Holdout

                - - + + - + - + - - - + + + - + - + - - + + - + - + - + - + - + - - - + + + - - - + + + @@ -27991,71 +28217,71 @@

                Holdout

                - + - + - + - + - + - + - + - + - + - + - + - - - + + + - + - + - + - - + + @@ -28063,7 +28289,7 @@

                Holdout

                - + @@ -28074,10 +28300,10 @@

                Holdout

                Holdouts

                With ratios from 5% to 95% of the dataset with step 1.5 generates 15 splits with ascending rows in train dataset.

                -
                ^:note-to-test/skip
                -(-> (tc/split for-splitting :holdouts {:steps [0.05 0.95 1.5]
                -                                       :shuffle? false})
                -    (tc/group-by [:$split-id :$split-name]))
                +
                ^:note-to-test/skip
                +(-> (tc/split for-splitting :holdouts {:steps [0.05 0.95 1.5]
                +                                       :shuffle? false})
                +    (tc/group-by [:$split-id :$split-name]))

                _unnamed [30 3]:

                23:b6:a :g3 small 0
                1516 :a:g1:g3 small 0
                24:b:g115:a:g2 small 0
                19 :a:g2:g3 small 0
                22:b1:a :g1 small 0
                127 :a:g2:g3 smaller 0
                614 :a :g2 smaller 0
                164 :a:g2:g3 smaller 0
                5:a:g322:b:g2 big 0
                21:b:g211:a:g1 big 0
                95 :a:g2:g1 big 0
                1318 :a:g1:g3 big 0
                417 :a:g2:g3 big 0
                1113 :a:g1:g2 big 0
                010 :a :g1 big 0
                812 :a:g1:g2 big 0
                17:a:g121:b:g2 big 0
                143 :a :g2 the rest 0
                219 :a:g2:g1 the rest 0
                10:a23:b :g1 the rest 0
                20 :b:g2:g3 the rest 0
                @@ -28210,10 +28436,10 @@

                Holdouts

                Leave One Out

                -
                ^:note-to-test/skip
                -(-> for-splitting
                -    (tc/split :loo)
                -    (tc/head 30))
                +
                ^:note-to-test/skip
                +(-> for-splitting
                +    (tc/split :loo)
                +    (tc/head 30))

                _unnamed, (splitted) [30 5]:

                @@ -28228,84 +28454,98 @@

                Leave One Out

                + + + + + + + + + + + + + + - + - + - + - + - + - - + + - + - + - + - - - + + + - - + + - + - + - + - + @@ -28319,143 +28559,129 @@

                Leave One Out

                - - - + + + - + - + - + - + - + - + - + - - - - - - - - - - - - - - - - - + + + - + - + - + - - + + - - + + - + - - - + + + - - - + + + - + - +
                14:a:g2:train0
                1:a:g1:train0
                24 :b:g1:g2 :train 0
                64 :a:g2:g3 :train 0
                89 :a:g1:g3 :train 0
                20:b8:a :g2 :train 0
                132 :a :g1 :train 0
                186 :a:g1:g3 :train 0
                23:b:g310:a:g1 :train 0
                1:a21:b :g2 :train 0
                415 :a :g2 :train 0
                120 :a :g2 :train 0
                717 :a :g3 :train 0
                1612 :a :g2 :train 0
                21:b:g219:a:g1 :train 0
                195 :a:g3:g1 :train 0
                57 :a :g3 :train 0
                173 :a:g1:g2 :train 0
                22 :b:g1:g2 :train 0
                316 :a :g3 :train 0
                15:a:g1:train0
                2:a:g2:train0
                0:a:g120:b:g3 :train 0
                913 :a :g2 :train 0
                1418 :a:g2:g3 :train 0
                10:a23:b :g1 :test 0
                10:a23:b :g1 :train 1
                61 :a :g1 :train 1
                8:a:g124:b:g2 :train 1
                20:b:g24:a:g3 :train 1
                139 :a:g1:g3 :train 1
                -
                ^:note-to-test/skip
                -(-> for-splitting
                -    (tc/split :loo)
                -    (tc/row-count))
                +
                ^:note-to-test/skip
                +(-> for-splitting
                +    (tc/split :loo)
                +    (tc/row-count))
                -
                625
                +
                625

                Grouped dataset with partitioning

                -
                ^:note-to-test/skip
                -(-> for-splitting
                -    (tc/group-by :group)
                -    (tc/split :bootstrap {:partition-selector :partition :seed 11 :ratio 0.8}))
                +
                ^:note-to-test/skip
                +(-> for-splitting
                +    (tc/group-by :group)
                +    (tc/split :bootstrap {:partition-selector :partition :seed 11 :ratio 0.8}))

                _unnamed [3 3]:

                @@ -28468,19 +28694,19 @@

                Grouped

                - + - + - + - + - +
                :g1:g2 0Group: :g1, (splitted) [11 5]:Group: :g2, (splitted) [12 5]:
                :g2:g1 1Group: :g2, (splitted) [12 5]:Group: :g1, (splitted) [8 5]:
                :g3 2Group: :g3, (splitted) [7 5]:Group: :g3, (splitted) [9 5]:
                @@ -28489,10 +28715,10 @@

                Grouped

                Split as a sequence

                To get a sequence of pairs, use split->seq function

                -
                ^:note-to-test/skip
                -(-> for-splitting
                -    (tc/split->seq :kfold {:partition-selector :partition})
                -    (first))
                +
                ^:note-to-test/skip
                +(-> for-splitting
                +    (tc/split->seq :kfold {:partition-selector :partition})
                +    (first))

                @@ -28532,7 +28758,7 @@

                Split as a sequence -1 +15 :a @@ -28543,7 +28769,7 @@

                Split as a sequence -18 +1 :a @@ -28554,7 +28780,7 @@

                Split as a sequence -0 +11 :a @@ -28565,73 +28791,73 @@

                Split as a sequence -5 +14 :a -:g3 +:g2 -7 +19 :a -:g3 +:g1 -14 +4 :a -:g2 +:g3 -10 +7 :a -:g1 +:g3 -13 +0 :a -:g1 +:g2 -3 +5 :a -:g3 +:g1 -9 +13 :a @@ -28642,7 +28868,7 @@

                Split as a sequence -6 +12 :a @@ -28653,51 +28879,51 @@

                Split as a sequence -4 +16 :a -:g2 +:g3 -16 +10 :a -:g2 +:g1 -11 +8 :a -:g1 +:g2 -12 +2 :a -:g2 +:g1 -2 +3 :a @@ -28708,7 +28934,7 @@

                Split as a sequence -22 +23 :b @@ -28730,24 +28956,24 @@

                Split as a sequence -23 +24 :b -:g3 +:g2 -24 +20 :b -:g1 +:g3 @@ -28791,7 +29017,7 @@

                Split as a sequence -19 +9 :a @@ -28802,40 +29028,40 @@

                Split as a sequence -15 +18 :a -:g1 +:g3 -8 +17 :a -:g1 +:g3 -17 +6 :a -:g1 +:g3 -20 +22 :b @@ -28859,11 +29085,11 @@

                Split as a sequence

                -
                ^:note-to-test/skip
                -(-> for-splitting
                -    (tc/group-by :group)
                -    (tc/split->seq :bootstrap {:partition-selector :partition :seed 11 :ratio 0.8 :repeats 2})
                -    (first))
                +
                ^:note-to-test/skip
                +(-> for-splitting
                +    (tc/group-by :group)
                +    (tc/split->seq :bootstrap {:partition-selector :partition :seed 11 :ratio 0.8 :repeats 2})
                +    (first))

                @@ -28871,7 +29097,7 @@

                Split as a sequence
                -
                :g1
                +
                :g2
                 
                @@ -28923,73 +29149,73 @@

                Split as a sequence -:g1 +:g2 -17 +0 :a -:g1 +:g2 -13 +8 :a -:g1 +:g2 -8 +15 :a -:g1 +:g2 -0 +12 :a -:g1 +:g2 -10 +14 :a -:g1 +:g2 -10 +21 -:a +:b -:g1 +:g2 @@ -29000,18 +29226,18 @@

                Split as a sequence -:g1 +:g2 -24 +22 :b -:g1 +:g2 @@ -29035,7 +29261,7 @@

                Split as a sequence

                -Group: 0 [3 3]: +Group: 0 [2 3]:

                @@ -29055,35 +29281,24 @@

                Split as a sequence

                - - - - - @@ -29138,79 +29353,79 @@

                Split as a sequence

                @@ -29221,18 +29436,18 @@

                Split as a sequence

                @@ -29256,7 +29471,7 @@

                Split as a sequence

                -Group: 1 [2 3]: +Group: 1 [3 3]:

                -11 +3 :a -:g1 +:g2
                -18 +13 :a -:g1 -
                -22 - -:b - -:g1 +:g2
                -8 +0 :a -:g1 +:g2
                -10 +15 :a -:g1 +:g2
                -15 +14 :a -:g1 +:g2
                -18 +12 :a -:g1 +:g2
                -0 +8 :a -:g1 +:g2
                -11 +15 :a -:g1 +:g2
                -13 +22 -:a +:b -:g1 +:g2
                -:g1 +:g2
                -24 +22 :b -:g1 +:g2
                @@ -29276,24 +29491,35 @@

                Split as a sequence

                + + + + + @@ -29323,6 +29549,368 @@

                Split as a sequence +
                +

                Column API

                +

                A column in tablecloth is a named sequence of typed data. It is the building block of the dataset since datasets are at base just a map of columns. Like dataset, the column is defined in the tech.ml.dataset. In this section, we will show how you can interact with the column by itself.

                +

                Let’s begin by requiring the Column API, which we suggest you alias as tcc:

                +
                +
                (require '[tablecloth.column.api :as tcc])
                +
                +
                +

                Creation & Identity

                +

                Creating an empty column is pretty straightforward:

                +
                +
                (tcc/column)
                +
                +
                +
                #tech.v3.dataset.column&lt;boolean&gt;[0]
                +null
                +[]
                +
                +

                You can also create a Column from a vector or a sequence

                +
                +
                (tcc/column [1 2 3 4 5])
                +
                +
                +
                #tech.v3.dataset.column&lt;int64&gt;[5]
                +null
                +[1, 2, 3, 4, 5]
                +
                +
                +
                (tcc/column `(1 2 3 4 5))
                +
                +
                +
                #tech.v3.dataset.column&lt;int64&gt;[5]
                +null
                +[1, 2, 3, 4, 5]
                +
                +

                You can also quickly create columns of ones or zeros:

                +
                +
                (tcc/ones 10)
                +
                +
                +
                #tech.v3.dataset.column&lt;int64&gt;[10]
                +null
                +[1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
                +
                +
                +
                (tcc/zeros 10)
                +
                +
                +
                #tech.v3.dataset.column&lt;int64&gt;[10]
                +null
                +[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
                +
                +

                Finally, to identify a column, you can use the column? function to check if an item is a column:

                +
                +
                (tcc/column? [1 2 3 4 5])
                +
                +
                +
                false
                +
                +
                +
                (tcc/column? (tcc/column))
                +
                +
                +
                true
                +
                +

                Tablecloth’s datasets of course consists of columns:

                +
                +
                (tcc/column? (-> (tc/dataset {:a [1 2 3 4 5]})
                +                 :a))
                +
                +
                +
                true
                +
                +
                +
                +

                Datatypes

                +

                The default set of types for a column are defined in the underlying “tech ml” system. We can see the set here:

                +
                +
                (tech.v3.datatype.casting/all-datatypes)
                +
                +
                +
                (:int32
                + :int16
                + :float32
                + :float64
                + :int64
                + :uint64
                + :string
                + :uint16
                + :int8
                + :uint32
                + :keyword
                + :decimal
                + :uuid
                + :boolean
                + :object
                + :char
                + :uint8)
                +
                +

                When you create a column, the underlying system will try to autodetect its type. We can illustrate that behavior using the tcc/typeof function to check the type of a column:

                +
                +
                (-> (tcc/column [1 2 3 4 5])
                +    (tcc/typeof))
                +
                +
                +
                :int64
                +
                +
                +
                (-> (tcc/column [:a :b :c :d :e])
                +    (tcc/typeof))
                +
                +
                +
                :keyword
                +
                +

                Columns containing heterogenous data will receive type :object:

                +
                +
                (-> (tcc/column [1 :b 3 :c 5])
                +    (tcc/typeof))
                +
                +
                +
                :object
                +
                +

                You can also use the tcc/typeof? function to check the value of a function as an asssertion:

                +
                +
                (-> (tcc/column [1 2 3 4 6])
                +    (tcc/typeof? :boolean))
                +
                +
                +
                false
                +
                +
                +
                (-> (tcc/column [1 2 3 4 6])
                +    (tcc/typeof? :int64))
                +
                +
                +
                true
                +
                +

                Tablecloth has a concept of “concrete” and “general” types. A general type is the broad category of type and the concrete type is the actual type in memory. For example, a concrete type is a 64-bit integer :int64, which is also of the general type :integer. The typeof? function supports checking both.

                +
                +
                (-> (tcc/column [1 2 3 4 6])
                +    (tcc/typeof? :int64))
                +
                +
                +
                true
                +
                +
                +
                (-> (tcc/column [1 2 3 4 6])
                +    (tcc/typeof? :integer))
                +
                +
                +
                true
                +
                +
                +
                +

                Access & Manipulation

                +
                +

                Column Access

                +

                The method for accessing a particular index position in a column is the same as for Clojure vectors:

                +
                +
                (-> (tcc/column [1 2 3 4 5])
                +    (get 3))
                +
                +
                +
                4
                +
                +
                +
                (-> (tcc/column [1 2 3 4 5])
                +    (nth 3))
                +
                +
                +
                4
                +
                +
                +
                +

                Slice

                +

                You can also slice a column

                +
                +
                (-> (tcc/column (range 10))
                +    (tcc/slice 5))
                +
                +
                +
                #tech.v3.dataset.column&lt;int64&gt;[5]
                +null
                +[5, 6, 7, 8, 9]
                +
                +
                +
                (-> (tcc/column (range 10))
                +    (tcc/slice 1 4))
                +
                +
                +
                #tech.v3.dataset.column&lt;int64&gt;[4]
                +null
                +[1, 2, 3, 4]
                +
                +
                +
                (-> (tcc/column (range 10))
                +    (tcc/slice 0 9 2))
                +
                +
                +
                #tech.v3.dataset.column&lt;int64&gt;[5]
                +null
                +[0, 2, 4, 6, 8]
                +
                +

                The slice method supports the :end and :start keywords, which can add clarity to your code:

                +
                +
                (-> (tcc/column (range 10))
                +    (tcc/slice :start :end 2))
                +
                +
                +
                #tech.v3.dataset.column&lt;int64&gt;[5]
                +null
                +[0, 2, 4, 6, 8]
                +
                +
                +
                +

                Select

                +

                If you need to create a discontinuous subset of the column, you can use the select function. This method accepts an array of index positions or an array of booleans. When using boolean select, a true value will select the value at the index positions containing true values: Select the values at index positions 1 and 9:

                +
                +
                (-> (tcc/column (range 10))
                +    (tcc/select [1 9]))
                +
                +
                +
                #tech.v3.dataset.column&lt;int64&gt;[2]
                +null
                +[1, 9]
                +
                +

                Select the values at index positions 0 and 2 using booelan select:

                +
                +
                (-> (tcc/column (range 10))
                +    (tcc/select (tcc/column [true false true])))
                +
                +
                +
                #tech.v3.dataset.column&lt;int64&gt;[2]
                +null
                +[0, 2]
                +
                +

                The boolean select feature is particularly useful when used with the large number of operations (see below) that the Column API includes:

                +
                +
                (let [col (tcc/column (range 10))]
                +  (-> col
                +      (tcc/odd?)
                +      (->> (tcc/select col))))
                +
                +
                +
                #tech.v3.dataset.column&lt;int64&gt;[5]
                +null
                +[1, 3, 5, 7, 9]
                +
                +

                Here, we used the odd? operator to create a boolean array indicating all index positions in the Column that included an odd value. Then we pass that boolean Column to the select function using the ->> to send it to the second argument position.

                +
                +
                +

                Sort

                +

                Use sort-column to sort a column: Default sort is in ascending order:

                +
                +
                (-> (tcc/column [:c :z :a :f])
                +    (tcc/sort-column))
                +
                +
                +
                #tech.v3.dataset.column&lt;keyword&gt;[4]
                +null
                +[:a, :c, :f, :z]
                +
                +

                You can provide the :desc and :asc keywords to change the default behavior:

                +
                +
                (-> (tcc/column [:c :z :a :f])
                +    (tcc/sort-column :desc))
                +
                +
                +
                #tech.v3.dataset.column&lt;keyword&gt;[4]
                +null
                +[:z, :f, :c, :a]
                +
                +

                You can also provide a comparator fn:

                +
                +
                (-> (tcc/column [{:position 2
                +                  :text "and then stopped"}
                +                 {:position 1
                +                  :text "I ran fast"}])
                +    (tcc/sort-column (fn [a b] (< (:position a) (:position b)))))
                +
                +
                +
                #tech.v3.dataset.column&lt;persistent-map&gt;[2]
                +null
                +[{:position 1, :text "I ran fast"}, {:position 2, :text "and then stopped"}]
                +
                +
                +
                +
                +

                Operations

                +

                The Column API contains a large number of operations, which have been lifted from the underlying tech.ml.dataset library and adapted to Tablecloth. These operations all take one or more columns as an argument, and they return either a scalar value or a new column, depending on the operation. In other words, their signature is this general form:

                +
                (column1 column2 ...) => column | scalar
                +

                Because these functions all take a column as the first argument, they are easy to use with the pipe -> macro, as with all functions in Tablecloth.

                +

                Given the incredibly large number of available functions, we will illustrate instead how these operations can be used.

                +

                We’ll start with two columns a and b:

                +
                +
                (def a (tcc/column [20 30 40 50]))
                +
                +
                +
                (def b (tcc/column (range 4)))
                +
                +

                Here is a small sampling of operator functions:

                +
                +
                (tcc/- a b)
                +
                +
                +
                #tech.v3.dataset.column&lt;int64&gt;[4]
                +null
                +[20, 29, 38, 47]
                +
                +
                +
                (tcc/* a b)
                +
                +
                +
                #tech.v3.dataset.column&lt;int64&gt;[4]
                +null
                +[0, 30, 80, 150]
                +
                +
                +
                (tcc// a 2)
                +
                +
                +
                #tech.v3.dataset.column&lt;int64&gt;[4]
                +null
                +[10, 15, 20, 25]
                +
                +
                +
                (tcc/pow a 2)
                +
                +
                +
                #tech.v3.dataset.column&lt;float64&gt;[4]
                +null
                +[400.0, 900.0, 1600, 2500]
                +
                +
                +
                (tcc/* 10 (tcc/sin a))
                +
                +
                +
                #tech.v3.dataset.column&lt;float64&gt;[4]
                +null
                +[9.129, -9.880, 7.451, -2.624]
                +
                +
                +
                (tcc/< a 35)
                +
                +
                +
                #tech.v3.dataset.column&lt;boolean&gt;[4]
                +null
                +[true, true, false, false]
                +
                +

                All these operations take a column as their first argument and return a column, so they can be chained easily.

                +
                +
                (-> a
                +    (tcc/* b)
                +    (tcc/< 70))
                +
                +
                +
                #tech.v3.dataset.column&lt;boolean&gt;[4]
                +null
                +[true, true, false, false]
                +
                +
                +

                Pipeline

                tablecloth.pipeline exports special versions of API which create functions operating only on dataset. This creates the possibility to chain operations and compose them easily.

                @@ -29367,10 +29955,10 @@

                Other examples

                Stocks

                -
                (defonce stocks (tc/dataset "https://raw.githubusercontent.com/techascent/tech.ml.dataset/master/test/data/stocks.csv" {:key-fn keyword}))
                +
                (defonce stocks (tc/dataset "https://raw.githubusercontent.com/techascent/tech.ml.dataset/master/test/data/stocks.csv" {:key-fn keyword}))
                -
                stocks
                +
                stocks

                https://raw.githubusercontent.com/techascent/tech.ml.dataset/master/test/data/stocks.csv [560 3]:

                -17 +3 :a -:g1 +:g2
                -22 +13 + +:a + +:g2 +
                +21 :b -:g1 +:g2
                @@ -29495,12 +30083,12 @@

                Stocks

                -
                (-> stocks
                -    (tc/group-by (fn [row]
                -                    {:symbol (:symbol row)
                -                     :year (tech.v3.datatype.datetime/long-temporal-field :years (:date row))}))
                -    (tc/aggregate #(tech.v3.datatype.functional/mean (% :price)))
                -    (tc/order-by [:symbol :year]))
                +
                (-> stocks
                +    (tc/group-by (fn [row]
                +                    {:symbol (:symbol row)
                +                     :year (tech.v3.datatype.datetime/long-temporal-field :years (:date row))}))
                +    (tc/aggregate #(tech.v3.datatype.functional/mean (% :price)))
                +    (tc/order-by [:symbol :year]))

                _unnamed [51 3]:

                @@ -29625,11 +30213,11 @@

                Stocks

                -
                (-> stocks
                -    (tc/group-by (juxt :symbol #(tech.v3.datatype.datetime/long-temporal-field :years (% :date))))
                -    (tc/aggregate #(tech.v3.datatype.functional/mean (% :price)))
                -    (tc/rename-columns {:$group-name-0 :symbol
                -                        :$group-name-1 :year}))
                +
                (-> stocks
                +    (tc/group-by (juxt :symbol #(tech.v3.datatype.datetime/long-temporal-field :years (% :date))))
                +    (tc/aggregate #(tech.v3.datatype.functional/mean (% :price)))
                +    (tc/rename-columns {:$group-name-0 :symbol
                +                        :$group-name-1 :year}))

                _unnamed [51 3]:

                @@ -29758,12 +30346,12 @@

                Stocks

                data.table

                Below you can find comparizon between functionality of data.table and Clojure dataset API. I leave it without comments, please refer original document explaining details: Introduction to data.table R

                -
                library(data.table)
                -library(knitr)
                -flights <- fread("https://raw.githubusercontent.com/Rdatatable/data.table/master/vignettes/flights14.csv")
                -kable(head(flights))
                +
                library(data.table)
                +library(knitr)
                +flights <- fread("https://raw.githubusercontent.com/Rdatatable/data.table/master/vignettes/flights14.csv")
                +kable(head(flights))
                -
                +
                @@ -29877,15 +30465,15 @@

                data.table

                Clojure

                -
                (require '[tech.v3.datatype.functional :as dfn]
                -         '[tech.v3.datatype.argops :as aops]
                -         '[tech.v3.datatype :as dtype])
                +
                (require '[tech.v3.datatype.functional :as dfn]
                +         '[tech.v3.datatype.argops :as aops]
                +         '[tech.v3.datatype :as dtype])
                -
                (defonce flights (tc/dataset "https://raw.githubusercontent.com/Rdatatable/data.table/master/vignettes/flights14.csv"))
                +
                (defonce flights (tc/dataset "https://raw.githubusercontent.com/Rdatatable/data.table/master/vignettes/flights14.csv"))
                -
                (tc/head flights 6)
                +
                (tc/head flights 6)

                https://raw.githubusercontent.com/Rdatatable/data.table/master/vignettes/flights14.csv [6 11]:

                @@ -30004,32 +30592,32 @@

                Basics

                Shape of loaded data

                R

                -
                dim(flights)
                +
                dim(flights)
                [1] 253316     11

                Clojure

                -
                (tc/shape flights)
                +
                (tc/shape flights)
                -
                [253316 11]
                +
                [253316 11]
                What is data.table?

                R

                -
                DT = data.table(
                -ID = c("b","b","b","a","a","c"),
                -a = 1:6,
                -b = 7:12,
                -c = 13:18
                -)
                -kable(DT)
                +
                DT = data.table(
                +ID = c("b","b","b","a","a","c"),
                +a = 1:6,
                +b = 7:12,
                +c = 13:18
                +)
                +kable(DT)
                -
                +
                @@ -30078,20 +30666,20 @@
                What is data.tabl
                ID
                -
                class(DT$ID)
                +
                class(DT$ID)
                [1] "character"

                Clojure

                -
                (def DT (tc/dataset {:ID ["b" "b" "b" "a" "a" "c"]
                -                     :a (range 1 7)
                -                     :b (range 7 13)
                -                     :c (range 13 19)}))
                +
                (def DT (tc/dataset {:ID ["b" "b" "b" "a" "a" "c"]
                +                     :a (range 1 7)
                +                     :b (range 7 13)
                +                     :c (range 13 19)}))
                -
                DT
                +
                DT

                _unnamed [6 4]:

                @@ -30143,20 +30731,20 @@
                What is data.tabl
                -
                (-> :ID DT meta :datatype)
                +
                (-> :ID DT meta :datatype)
                -
                :string
                +
                :string

                Get all the flights with “JFK” as the origin airport in the month of June.

                R

                -
                ans <- flights[origin == "JFK" & month == 6L]
                -kable(head(ans))
                +
                ans <- flights[origin == "JFK" & month == 6L]
                +kable(head(ans))
                - +
                @@ -30270,10 +30858,10 @@
                -
                (-> flights
                -    (tc/select-rows (fn [row] (and (= (get row "origin") "JFK")
                -                                   (= (get row "month") 6))))
                -    (tc/head 6))
                +
                (-> flights
                +    (tc/select-rows (fn [row] (and (= (get row "origin") "JFK")
                +                                   (= (get row "month") 6))))
                +    (tc/head 6))

                https://raw.githubusercontent.com/Rdatatable/data.table/master/vignettes/flights14.csv [6 11]:

                @@ -30391,10 +30979,10 @@
                Get the first two rows from flights.

                R

                -
                ans <- flights[1:2]
                -kable(ans)
                +
                ans <- flights[1:2]
                +kable(ans)
                -
                +
                @@ -30456,7 +31044,7 @@
                Get t

                Clojure

                -
                (tc/select-rows flights (range 2))
                +
                (tc/select-rows flights (range 2))

                https://raw.githubusercontent.com/Rdatatable/data.table/master/vignettes/flights14.csv [2 11]:

                @@ -30522,10 +31110,10 @@
                Get t
                Sort flights first by column origin in ascending order, and then by dest in descending order

                R

                -
                ans <- flights[order(origin, -dest)]
                -kable(head(ans))
                +
                ans <- flights[order(origin, -dest)]
                +kable(head(ans))
                -
                +
                @@ -30639,9 +31227,9 @@
                -
                (-> flights
                -    (tc/order-by ["origin" "dest"] [:asc :desc])
                -    (tc/head 6))
                +
                (-> flights
                +    (tc/order-by ["origin" "dest"] [:asc :desc])
                +    (tc/head 6))

                https://raw.githubusercontent.com/Rdatatable/data.table/master/vignettes/flights14.csv [6 11]:

                @@ -30759,28 +31347,28 @@
                Select arr_delay column, but return it as a vector

                R

                -
                ans <- flights[, arr_delay]
                -head(ans)
                +
                ans <- flights[, arr_delay]
                +head(ans)
                [1]  13  13   9 -26   1   0

                Clojure

                -
                (take 6 (flights "arr_delay"))
                +
                (take 6 (flights "arr_delay"))
                -
                (13 13 9 -26 1 0)
                +
                (13 13 9 -26 1 0)
                Select arr_delay column, but return as a data.table instead

                R

                -
                ans <- flights[, list(arr_delay)]
                -kable(head(ans))
                +
                ans <- flights[, list(arr_delay)]
                +kable(head(ans))
                -
                +
                @@ -30811,9 +31399,9 @@
                -
                (-> flights
                -    (tc/select-columns "arr_delay")
                -    (tc/head 6))
                +
                (-> flights
                +    (tc/select-columns "arr_delay")
                +    (tc/head 6))

                https://raw.githubusercontent.com/Rdatatable/data.table/master/vignettes/flights14.csv [6 1]:

                arr_delay
                @@ -30849,9 +31437,9 @@
                -
                (-> flights
                -    (tc/select-columns ["arr_delay" "dep_delay"])
                -    (tc/head 6))
                +
                (-> flights
                +    (tc/select-columns ["arr_delay" "dep_delay"])
                +    (tc/head 6))

                https://raw.githubusercontent.com/Rdatatable/data.table/master/vignettes/flights14.csv [6 2]:

                @@ -30893,10 +31481,10 @@
                Select both arr_delay and dep_delay columns and rename them to delay_arr and delay_dep

                R

                -
                ans <- flights[, .(delay_arr = arr_delay, delay_dep = dep_delay)]
                -kable(head(ans))
                +
                ans <- flights[, .(delay_arr = arr_delay, delay_dep = dep_delay)]
                +kable(head(ans))
                -
                +
                @@ -30934,10 +31522,10 @@
                -
                (-> flights
                -    (tc/select-columns {"arr_delay" "delay_arr"
                -                        "dep_delay" "delay_arr"})
                -    (tc/head 6))
                +
                (-> flights
                +    (tc/select-columns {"arr_delay" "delay_arr"
                +                        "dep_delay" "delay_arr"})
                +    (tc/head 6))

                https://raw.githubusercontent.com/Rdatatable/data.table/master/vignettes/flights14.csv [6 2]:

                delay_arr
                @@ -30979,40 +31567,40 @@
                How many trips have had total delay < 0?

                R

                -
                ans <- flights[, sum( (arr_delay + dep_delay) < 0 )]
                -ans
                +
                ans <- flights[, sum( (arr_delay + dep_delay) < 0 )]
                +ans
                [1] 141814

                Clojure

                -
                (->> (dfn/+ (flights "arr_delay") (flights "dep_delay"))
                -     (aops/argfilter #(< % 0.0))
                -     (dtype/ecount))
                +
                (->> (dfn/+ (flights "arr_delay") (flights "dep_delay"))
                +     (aops/argfilter #(< % 0.0))
                +     (dtype/ecount))
                -
                141814
                +
                141814

                or pure Clojure functions (much, much slower)

                -
                (->> (map + (flights "arr_delay") (flights "dep_delay"))
                -     (filter neg?)
                -     (count))
                +
                (->> (map + (flights "arr_delay") (flights "dep_delay"))
                +     (filter neg?)
                +     (count))
                -
                141814
                +
                141814
                Calculate the average arrival and departure delay for all flights with “JFK” as the origin airport in the month of June

                R

                -
                ans <- flights[origin == "JFK" & month == 6L,
                -.(m_arr = mean(arr_delay), m_dep = mean(dep_delay))]
                -kable(ans)
                +
                ans <- flights[origin == "JFK" & month == 6L,
                +.(m_arr = mean(arr_delay), m_dep = mean(dep_delay))]
                +kable(ans)
                -
                +
                @@ -31030,11 +31618,11 @@
                -
                (-> flights
                -    (tc/select-rows (fn [row] (and (= (get row "origin") "JFK")
                -                                   (= (get row "month") 6))))
                -    (tc/aggregate {:m_arr #(dfn/mean (% "arr_delay"))
                -                   :m_dep #(dfn/mean (% "dep_delay"))}))
                +
                (-> flights
                +    (tc/select-rows (fn [row] (and (= (get row "origin") "JFK")
                +                                   (= (get row "month") 6))))
                +    (tc/aggregate {:m_arr #(dfn/mean (% "arr_delay"))
                +                   :m_dep #(dfn/mean (% "dep_delay"))}))

                _unnamed [1 2]:

                m_arr
                @@ -31056,39 +31644,39 @@
                How many trips have been made in 2014 from “JFK” airport in the month of June?

                R

                -
                ans <- flights[origin == "JFK" & month == 6L, length(dest)]
                -ans
                +
                ans <- flights[origin == "JFK" & month == 6L, length(dest)]
                +ans
                [1] 8422

                or

                -
                ans <- flights[origin == "JFK" & month == 6L, .N]
                -ans
                +
                ans <- flights[origin == "JFK" & month == 6L, .N]
                +ans
                [1] 8422

                Clojure

                -
                (-> flights
                -    (tc/select-rows (fn [row] (and (= (get row "origin") "JFK")
                -                                   (= (get row "month") 6))))
                -    (tc/row-count))
                +
                (-> flights
                +    (tc/select-rows (fn [row] (and (= (get row "origin") "JFK")
                +                                   (= (get row "month") 6))))
                +    (tc/row-count))
                -
                8422
                +
                8422
                deselect columns using - or !

                R

                -
                ans <- flights[, !c("arr_delay", "dep_delay")]
                -kable(head(ans))
                +
                ans <- flights[, !c("arr_delay", "dep_delay")]
                +kable(head(ans))
                -
                +
                @@ -31175,10 +31763,10 @@
                deselect colum

                or

                -
                ans <- flights[, -c("arr_delay", "dep_delay")]
                -kable(head(ans))
                +
                ans <- flights[, -c("arr_delay", "dep_delay")]
                +kable(head(ans))
                -
                year
                +
                @@ -31265,9 +31853,9 @@
                deselect colum

                Clojure

                -
                (-> flights
                -    (tc/select-columns (complement #{"arr_delay" "dep_delay"}))
                -    (tc/head 6))
                +
                (-> flights
                +    (tc/select-columns (complement #{"arr_delay" "dep_delay"}))
                +    (tc/head 6))

                https://raw.githubusercontent.com/Rdatatable/data.table/master/vignettes/flights14.csv [6 9]:

                year
                @@ -31372,10 +31960,10 @@

                Aggregations

                How can we get the number of trips corresponding to each origin airport?

                R

                -
                ans <- flights[, .(.N), by = .(origin)]
                -kable(ans)
                +
                ans <- flights[, .(.N), by = .(origin)]
                +kable(ans)
                -
                +
                @@ -31401,9 +31989,9 @@
                -
                (-> flights
                -    (tc/group-by ["origin"])
                -    (tc/aggregate {:N tc/row-count}))
                +
                (-> flights
                +    (tc/group-by ["origin"])
                +    (tc/aggregate {:N tc/row-count}))

                _unnamed [3 2]:

                origin
                @@ -31433,10 +32021,10 @@
                How can we calculate the number of trips for each origin airport for carrier code “AA”?

                R

                -
                ans <- flights[carrier == "AA", .N, by = origin]
                -kable(ans)
                +
                ans <- flights[carrier == "AA", .N, by = origin]
                +kable(ans)
                -
                +
                @@ -31462,10 +32050,10 @@
                -
                (-> flights
                -    (tc/select-rows #(= (get % "carrier") "AA"))
                -    (tc/group-by ["origin"])
                -    (tc/aggregate {:N tc/row-count}))
                +
                (-> flights
                +    (tc/select-rows #(= (get % "carrier") "AA"))
                +    (tc/group-by ["origin"])
                +    (tc/aggregate {:N tc/row-count}))

                _unnamed [3 2]:

                origin
                @@ -31495,10 +32083,10 @@
                How can we get the total number of trips for each origin, dest pair for carrier code “AA”?

                R

                -
                ans <- flights[carrier == "AA", .N, by = .(origin, dest)]
                -kable(head(ans))
                +
                ans <- flights[carrier == "AA", .N, by = .(origin, dest)]
                +kable(head(ans))
                -
                +
                @@ -31543,11 +32131,11 @@
                -
                (-> flights
                -    (tc/select-rows #(= (get % "carrier") "AA"))
                -    (tc/group-by ["origin" "dest"])
                -    (tc/aggregate {:N tc/row-count})
                -    (tc/head 6))
                +
                (-> flights
                +    (tc/select-rows #(= (get % "carrier") "AA"))
                +    (tc/group-by ["origin" "dest"])
                +    (tc/aggregate {:N tc/row-count})
                +    (tc/head 6))

                _unnamed [6 3]:

                origin
                @@ -31596,12 +32184,12 @@
                How can we get the average arrival and departure delay for each orig,dest pair for each month for carrier code “AA”?

                R

                -
                ans <- flights[carrier == "AA",
                -.(mean(arr_delay), mean(dep_delay)),
                -by = .(origin, dest, month)]
                -kable(head(ans,10))
                +
                ans <- flights[carrier == "AA",
                +.(mean(arr_delay), mean(dep_delay)),
                +by = .(origin, dest, month)]
                +kable(head(ans,10))
                -
                +
                @@ -31688,12 +32276,12 @@
                -
                (-> flights
                -    (tc/select-rows #(= (get % "carrier") "AA"))
                -    (tc/group-by ["origin" "dest" "month"])
                -    (tc/aggregate [#(dfn/mean (% "arr_delay"))
                -                   #(dfn/mean (% "dep_delay"))])
                -    (tc/head 10))
                +
                (-> flights
                +    (tc/select-rows #(= (get % "carrier") "AA"))
                +    (tc/group-by ["origin" "dest" "month"])
                +    (tc/aggregate [#(dfn/mean (% "arr_delay"))
                +                   #(dfn/mean (% "dep_delay"))])
                +    (tc/head 10))

                _unnamed [10 5]:

                origin
                @@ -31736,13 +32324,6 @@
                18.74301676
                - - - - - - - @@ -31791,12 +32372,12 @@
                So how can we directly order by all the grouping variables?

                R

                -
                ans <- flights[carrier == "AA",
                -.(mean(arr_delay), mean(dep_delay)),
                -keyby = .(origin, dest, month)]
                -kable(head(ans,10))
                +
                ans <- flights[carrier == "AA",
                +.(mean(arr_delay), mean(dep_delay)),
                +keyby = .(origin, dest, month)]
                +kable(head(ans,10))
                -
                LGAMIA29.6250000010.70000000
                JFK SEA 1
                +
                @@ -31883,13 +32464,13 @@
                -
                (-> flights
                -    (tc/select-rows #(= (get % "carrier") "AA"))
                -    (tc/group-by ["origin" "dest" "month"])
                -    (tc/aggregate [#(dfn/mean (% "arr_delay"))
                -                   #(dfn/mean (% "dep_delay"))])
                -    (tc/order-by ["origin" "dest" "month"])
                -    (tc/head 10))
                +
                (-> flights
                +    (tc/select-rows #(= (get % "carrier") "AA"))
                +    (tc/group-by ["origin" "dest" "month"])
                +    (tc/aggregate [#(dfn/mean (% "arr_delay"))
                +                   #(dfn/mean (% "dep_delay"))])
                +    (tc/order-by ["origin" "dest" "month"])
                +    (tc/head 10))

                _unnamed [10 5]:

                origin
                @@ -31980,10 +32561,10 @@
                Can by accept expressions as well or does it just take columns?

                R

                -
                ans <- flights[, .N, .(dep_delay>0, arr_delay>0)]
                -kable(ans)
                +
                ans <- flights[, .N, .(dep_delay>0, arr_delay>0)]
                +kable(ans)
                -
                +
                @@ -32018,11 +32599,11 @@
                -
                (-> flights
                -    (tc/group-by (fn [row]
                -                   {:dep_delay (pos? (get row "dep_delay"))
                -                    :arr_delay (pos? (get row "arr_delay"))}))
                -    (tc/aggregate {:N tc/row-count}))
                +
                (-> flights
                +    (tc/group-by (fn [row]
                +                   {:dep_delay (pos? (get row "dep_delay"))
                +                    :arr_delay (pos? (get row "arr_delay"))}))
                +    (tc/aggregate {:N tc/row-count}))

                _unnamed [4 3]:

                dep_delay
                @@ -32061,9 +32642,9 @@
                Do we have to compute mean() for each column individually?

                R

                -
                kable(DT)
                +
                kable(DT)
                -
                +
                @@ -32112,7 +32693,7 @@
                DT[, print(.SD), by = ID]
                +
                DT[, print(.SD), by = ID]
                   a b  c
                 1: 1 7 13
                @@ -32129,9 +32710,9 @@ 
                -
                kable(DT[, lapply(.SD, mean), by = ID])
                +
                kable(DT[, lapply(.SD, mean), by = ID])
                -
                ID
                +
                @@ -32165,7 +32746,7 @@
                -
                DT
                +
                DT

                _unnamed [6 4]:

                ID
                @@ -32217,7 +32798,7 @@
                -
                (tc/group-by DT :ID {:result-type :as-map})
                +
                (tc/group-by DT :ID {:result-type :as-map})

                @@ -32441,9 +33022,9 @@

                -
                (-> DT
                -    (tc/group-by [:ID])
                -    (tc/aggregate-columns (complement #{:ID}) dfn/mean))
                +
                (-> DT
                +    (tc/group-by [:ID])
                +    (tc/aggregate-columns (complement #{:ID}) dfn/mean))

                _unnamed [3 4]:

                @@ -32481,12 +33062,12 @@
                How can we specify just the columns we would like to compute the mean() on?

                R

                -
                kable(head(flights[carrier == "AA",                         ## Only on trips with carrier "AA"
                -lapply(.SD, mean),                       ## compute the mean
                -by = .(origin, dest, month),             ## for every 'origin,dest,month'
                -.SDcols = c("arr_delay", "dep_delay")])) ## for just those specified in .SDcols
                +
                kable(head(flights[carrier == "AA",                         ## Only on trips with carrier "AA"
                +lapply(.SD, mean),                       ## compute the mean
                +by = .(origin, dest, month),             ## for every 'origin,dest,month'
                +.SDcols = c("arr_delay", "dep_delay")])) ## for just those specified in .SDcols
                -
                +
                @@ -32545,11 +33126,11 @@
                -
                (-> flights
                -    (tc/select-rows #(= (get % "carrier") "AA"))
                -    (tc/group-by ["origin" "dest" "month"])
                -    (tc/aggregate-columns ["arr_delay" "dep_delay"] dfn/mean)
                -    (tc/head 6))
                +
                (-> flights
                +    (tc/select-rows #(= (get % "carrier") "AA"))
                +    (tc/group-by ["origin" "dest" "month"])
                +    (tc/aggregate-columns ["arr_delay" "dep_delay"] dfn/mean)
                +    (tc/head 6))

                _unnamed [6 5]:

                origin
                @@ -32612,10 +33193,10 @@
                How can we return the first two rows for each month?

                R

                -
                ans <- flights[, head(.SD, 2), by = month]
                -kable(head(ans))
                +
                ans <- flights[, head(.SD, 2), by = month]
                +kable(head(ans))
                -
                +
                @@ -32729,11 +33310,11 @@
                -
                (-> flights
                -    (tc/group-by ["month"])
                -    (tc/head 2) ;; head applied on each group
                -    (tc/ungroup)
                -    (tc/head 6))
                +
                (-> flights
                +    (tc/group-by ["month"])
                +    (tc/head 2) ;; head applied on each group
                +    (tc/ungroup)
                +    (tc/head 6))

                _unnamed [6 11]:

                @@ -32851,9 +33432,9 @@
                How can we concatenate columns a and b for each group in ID?

                R

                -
                kable(DT[, .(val = c(a,b)), by = ID])
                +
                kable(DT[, .(val = c(a,b)), by = ID])
                -
                +
                @@ -32909,41 +33490,15 @@
                c
                - - - - - - - - - - - - - - - - - - - - - - - - - -
                ID12
                201441-8-23MQLGABNA11376418
                201441-8-11MQLGARDU7143118

                Clojure

                -
                (-> DT
                -    (tc/pivot->longer [:a :b] {:value-column-name :val})
                -    (tc/drop-columns [:$column :c]))
                +
                (-> DT
                +    (tc/pivot->longer [:a :b] {:value-column-name :val})
                +    (tc/drop-columns [:$column :c]))

                _unnamed [12 2]:

                @@ -33009,9 +33564,9 @@
                What if we would like to have all the values of column a and b concatenated, but returned as a list column?

                R

                -
                kable(DT[, .(val = list(c(a,b))), by = ID])
                +
                kable(DT[, .(val = list(c(a,b))), by = ID])
                -
                +
                @@ -33037,10 +33592,10 @@
                -
                (-> DT
                -    (tc/pivot->longer [:a :b] {:value-column-name :val})
                -    (tc/drop-columns [:$column :c])
                -    (tc/fold-by :ID))
                +
                (-> DT
                +    (tc/pivot->longer [:a :b] {:value-column-name :val})
                +    (tc/drop-columns [:$column :c])
                +    (tc/fold-by :ID))

                _unnamed [3 2]:

                ID
                @@ -33074,25 +33629,25 @@
                -
                (def DS (tc/dataset {:V1 (take 9 (cycle [1 2]))
                -                      :V2 (range 1 10)
                -                      :V3 (take 9 (cycle [0.5 1.0 1.5]))
                -                      :V4 (take 9 (cycle ["A" "B" "C"]))}))
                +
                (def DS (tc/dataset {:V1 (take 9 (cycle [1 2]))
                +                      :V2 (range 1 10)
                +                      :V3 (take 9 (cycle [0.5 1.0 1.5]))
                +                      :V4 (take 9 (cycle ["A" "B" "C"]))}))
                -
                (tc/dataset? DS)
                +
                (tc/dataset? DS)
                -
                true
                +
                true
                -
                (class DS)
                +
                (class DS)
                -
                tech.v3.dataset.impl.dataset.Dataset
                +
                tech.v3.dataset.impl.dataset.Dataset
                -
                DS
                +
                DS

                _unnamed [9 4]:

                @@ -33168,7 +33723,7 @@
                -
                (tc/select-rows DS [2 3])
                +
                (tc/select-rows DS [2 3])

                _unnamed [2 4]:

                @@ -33202,7 +33757,7 @@
                -
                (tc/drop-rows DS (range 2 7))
                +
                (tc/drop-rows DS (range 2 7))

                _unnamed [4 4]:

                @@ -33246,7 +33801,7 @@
                -
                (tc/select-rows DS (comp #(> % 5) :V2))
                +
                (tc/select-rows DS (comp #(> % 5) :V2))

                _unnamed [4 4]:

                @@ -33286,7 +33841,7 @@
                -
                (tc/select-rows DS (comp #{"A" "C"} :V4))
                +
                (tc/select-rows DS (comp #{"A" "C"} :V4))

                _unnamed [6 4]:

                @@ -33342,8 +33897,8 @@
                -
                (tc/select-rows DS #(and (= (:V1 %) 1)
                -                          (= (:V4 %) "A")))
                +
                (tc/select-rows DS #(and (= (:V1 %) 1)
                +                          (= (:V4 %) "A")))

                _unnamed [2 4]:

                @@ -33375,7 +33930,7 @@
                -
                (tc/unique-by DS)
                +
                (tc/unique-by DS)

                _unnamed [9 4]:

                @@ -33445,7 +34000,7 @@
                -
                (tc/unique-by DS [:V1 :V4])
                +
                (tc/unique-by DS [:V1 :V4])

                _unnamed [6 4]:

                @@ -33501,7 +34056,7 @@
                -
                (tc/drop-missing DS)
                +
                (tc/drop-missing DS)

                _unnamed [9 4]:

                @@ -33575,8 +34130,8 @@
                -
                ^:note-to-test/skip
                -(tc/random DS 3)
                +
                ^:note-to-test/skip
                +(tc/random DS 3)

                _unnamed [3 4]:

                @@ -33590,10 +34145,10 @@
                -
                - - - + + + + @@ -33611,8 +34166,8 @@
                -
                ^:note-to-test/skip
                -(tc/random DS (/ (tc/row-count DS) 2))
                +
                ^:note-to-test/skip
                +(tc/random DS (/ (tc/row-count DS) 2))

                _unnamed [5 4]:

                240.5A151.0B
                1
                @@ -33632,16 +34187,16 @@
                -
                - - - + + + + - - - - + + + + @@ -33651,15 +34206,15 @@
                - - - + + +
                110.5A281.0B
                191.5C221.0B
                1191.5C51.0B

                fraction of random rows

                -
                (tc/by-rank DS :V1 zero?)
                +
                (tc/by-rank DS :V1 zero?)

                _unnamed [4 4]:

                @@ -33704,7 +34259,7 @@
                -
                (tc/select-rows DS (comp (partial re-matches #"^B") str :V4))
                +
                (tc/select-rows DS (comp (partial re-matches #"^B") str :V4))

                _unnamed [3 4]:

                @@ -33738,7 +34293,7 @@
                -
                (tc/select-rows DS (comp #(<= 3 % 5) :V2))
                +
                (tc/select-rows DS (comp #(<= 3 % 5) :V2))

                _unnamed [3 4]:

                @@ -33772,7 +34327,7 @@
                -
                (tc/select-rows DS (comp #(< 3 % 5) :V2))
                +
                (tc/select-rows DS (comp #(< 3 % 5) :V2))

                _unnamed [1 4]:

                @@ -33794,7 +34349,7 @@
                -
                (tc/select-rows DS (comp #(<= 3 % 5) :V2))
                +
                (tc/select-rows DS (comp #(<= 3 % 5) :V2))

                _unnamed [3 4]:

                @@ -33834,7 +34389,7 @@
                -
                (tc/order-by DS :V3)
                +
                (tc/order-by DS :V3)

                _unnamed [9 4]:

                @@ -33908,7 +34463,7 @@
                -
                (tc/order-by DS :V3 :desc)
                +
                (tc/order-by DS :V3 :desc)

                _unnamed [9 4]:

                @@ -33982,7 +34537,7 @@
                -
                (tc/order-by DS [:V1 :V2] [:asc :desc])
                +
                (tc/order-by DS [:V1 :V2] [:asc :desc])

                _unnamed [9 4]:

                @@ -34056,16 +34611,16 @@
                -
                (nth (tc/columns DS :as-seq) 2)
                +
                (nth (tc/columns DS :as-seq) 2)
                -
                #tech.v3.dataset.column&lt;float64&gt;[9]
                -:V3
                -[0.5000, 1.000, 1.500, 0.5000, 1.000, 1.500, 0.5000, 1.000, 1.500]
                +
                #tech.v3.dataset.column&lt;float64&gt;[9]
                +:V3
                +[0.5000, 1.000, 1.500, 0.5000, 1.000, 1.500, 0.5000, 1.000, 1.500]

                as column (iterable)

                -
                (tc/dataset [(nth (tc/columns DS :as-seq) 2)])
                +
                (tc/dataset [(nth (tc/columns DS :as-seq) 2)])

                _unnamed [9 1]:

                @@ -34109,7 +34664,7 @@
                -
                (tc/select-columns DS :V2)
                +
                (tc/select-columns DS :V2)

                _unnamed [9 1]:

                @@ -34150,7 +34705,7 @@
                -
                (tc/select-columns DS [:V2])
                +
                (tc/select-columns DS [:V2])

                _unnamed [9 1]:

                @@ -34191,12 +34746,12 @@
                -
                (DS :V2)
                +
                (DS :V2)
                -
                #tech.v3.dataset.column&lt;int64&gt;[9]
                -:V2
                -[1, 2, 3, 4, 5, 6, 7, 8, 9]
                +
                #tech.v3.dataset.column&lt;int64&gt;[9]
                +:V2
                +[1, 2, 3, 4, 5, 6, 7, 8, 9]

                as column (iterable)

                           ---
                @@ -34204,7 +34759,7 @@ 
                -
                (tc/select-columns DS [:V2 :V3 :V4])
                +
                (tc/select-columns DS [:V2 :V3 :V4])

                _unnamed [9 3]:

                @@ -34268,7 +34823,7 @@
                -
                (tc/select-columns DS (complement #{:V2 :V3 :V4}))
                +
                (tc/select-columns DS (complement #{:V2 :V3 :V4}))

                _unnamed [9 1]:

                @@ -34308,7 +34863,7 @@
                -
                (tc/drop-columns DS [:V2 :V3 :V4])
                +
                (tc/drop-columns DS [:V2 :V3 :V4])

                _unnamed [9 1]:

                @@ -34352,9 +34907,9 @@
                -
                (->> (range 1 3)
                -     (map (comp keyword (partial format "V%d")))
                -     (tc/select-columns DS))
                +
                (->> (range 1 3)
                +     (map (comp keyword (partial format "V%d")))
                +     (tc/select-columns DS))

                _unnamed [9 2]:

                @@ -34404,7 +34959,7 @@
                -
                (tc/reorder-columns DS :V4)
                +
                (tc/reorder-columns DS :V4)

                _unnamed [9 4]:

                @@ -34474,7 +35029,7 @@
                -
                (tc/select-columns DS #(clojure.string/starts-with? (name %) "V"))
                +
                (tc/select-columns DS #(clojure.string/starts-with? (name %) "V"))

                _unnamed [9 4]:

                @@ -34544,7 +35099,7 @@
                -
                (tc/select-columns DS #(clojure.string/ends-with? (name %) "3"))
                +
                (tc/select-columns DS #(clojure.string/ends-with? (name %) "3"))

                _unnamed [9 1]:

                @@ -34584,7 +35139,7 @@
                -
                (tc/select-columns DS #"..2")
                +
                (tc/select-columns DS #"..2")

                _unnamed [9 1]:

                @@ -34625,7 +35180,7 @@
                -
                (tc/select-columns DS #{:V1 "X"})
                +
                (tc/select-columns DS #{:V1 "X"})

                _unnamed [9 1]:

                @@ -34665,7 +35220,7 @@
                -
                (tc/select-columns DS #(not (clojure.string/starts-with? (name %) "V2")))
                +
                (tc/select-columns DS #(not (clojure.string/starts-with? (name %) "V2")))

                _unnamed [9 3]:

                @@ -34729,14 +35284,14 @@
                -
                (reduce + (DS :V1))
                +
                (reduce + (DS :V1))
                -
                13
                +
                13

                using pure Clojure, as value

                -
                (tc/aggregate-columns DS :V1 dfn/sum)
                +
                (tc/aggregate-columns DS :V1 dfn/sum)

                _unnamed [1 1]:

                @@ -34753,7 +35308,7 @@
                -
                (tc/aggregate DS {:sumV1 #(dfn/sum (% :V1))})
                +
                (tc/aggregate DS {:sumV1 #(dfn/sum (% :V1))})

                _unnamed [1 1]:

                @@ -34773,8 +35328,8 @@
                -
                (tc/aggregate DS [#(dfn/sum (% :V1))
                -                   #(dfn/standard-deviation (% :V3))])
                +
                (tc/aggregate DS [#(dfn/sum (% :V1))
                +                   #(dfn/standard-deviation (% :V3))])

                _unnamed [1 2]:

                @@ -34792,8 +35347,8 @@
                -
                (tc/aggregate-columns DS [:V1 :V3] [dfn/sum
                -                                     dfn/standard-deviation])
                +
                (tc/aggregate-columns DS [:V1 :V3] [dfn/sum
                +                                     dfn/standard-deviation])

                _unnamed [1 2]:

                @@ -34815,8 +35370,8 @@
                -
                (tc/aggregate DS {:sumv1 #(dfn/sum (% :V1))
                -                   :sdv3 #(dfn/standard-deviation (% :V3))})
                +
                (tc/aggregate DS {:sumv1 #(dfn/sum (% :V1))
                +                   :sdv3 #(dfn/standard-deviation (% :V3))})

                _unnamed [1 2]:

                @@ -34838,9 +35393,9 @@
                -
                (-> DS
                -    (tc/select-rows (range 4))
                -    (tc/aggregate-columns :V1 dfn/sum))
                +
                (-> DS
                +    (tc/select-rows (range 4))
                +    (tc/aggregate-columns :V1 dfn/sum))

                _unnamed [1 1]:

                @@ -34857,9 +35412,9 @@
                -
                (-> DS
                -    (tc/first)
                -    (tc/select-columns :V3))
                +
                (-> DS
                +    (tc/first)
                +    (tc/select-columns :V3))

                _unnamed [1 1]:

                @@ -34876,9 +35431,9 @@
                -
                (-> DS
                -    (tc/last)
                -    (tc/select-columns :V3))
                +
                (-> DS
                +    (tc/last)
                +    (tc/select-columns :V3))

                _unnamed [1 1]:

                @@ -34895,9 +35450,9 @@
                -
                (-> DS
                -    (tc/select-rows 4)
                -    (tc/select-columns :V3))
                +
                (-> DS
                +    (tc/select-rows 4)
                +    (tc/select-columns :V3))

                _unnamed [1 1]:

                @@ -34914,8 +35469,8 @@
                -
                (-> DS
                -    (tc/select :V3 4))
                +
                (-> DS
                +    (tc/select :V3 4))

                _unnamed [1 1]:

                @@ -34932,9 +35487,9 @@
                -
                (-> DS
                -    (tc/unique-by :V4)
                -    (tc/aggregate tc/row-count))
                +
                (-> DS
                +    (tc/unique-by :V4)
                +    (tc/aggregate tc/row-count))

                _unnamed [1 1]:

                @@ -34951,21 +35506,21 @@
                -
                (-> DS
                -    (tc/unique-by :V4)
                -    (tc/row-count))
                +
                (-> DS
                +    (tc/unique-by :V4)
                +    (tc/row-count))
                -
                3
                +
                3

                number of unique rows in :V4 column, as value

                -
                (-> DS
                -    (tc/unique-by)
                -    (tc/row-count))
                +
                (-> DS
                +    (tc/unique-by)
                +    (tc/row-count))
                -
                9
                +
                9

                number of unique rows in dataset, as value

                           ##### Add/update/delete columns
                @@ -34973,7 +35528,7 @@ 
                -
                (tc/map-columns DS :V1 [:V1] #(dfn/pow % 2))
                +
                (tc/map-columns DS :V1 [:V1] #(dfn/pow % 2))

                _unnamed [9 4]:

                @@ -35043,10 +35598,10 @@
                -
                (def DS (tc/add-column DS :V1 (dfn/pow (DS :V1) 2)))
                +
                (def DS (tc/add-column DS :V1 (dfn/pow (DS :V1) 2)))
                -
                DS
                +
                DS

                _unnamed [9 4]:

                @@ -35120,7 +35675,7 @@
                -
                (tc/map-columns DS :v5 [:V1] dfn/log)
                +
                (tc/map-columns DS :v5 [:V1] dfn/log)

                _unnamed [9 5]:

                @@ -35200,10 +35755,10 @@
                -
                (def DS (tc/add-column DS :v5 (dfn/log (DS :V1))))
                +
                (def DS (tc/add-column DS :v5 (dfn/log (DS :V1))))
                -
                DS
                +
                DS

                _unnamed [9 5]:

                @@ -35287,11 +35842,11 @@
                -
                (def DS (tc/add-columns DS {:v6 (dfn/sqrt (DS :V1))
                -                                       :v7 "X"}))
                +
                (def DS (tc/add-columns DS {:v6 (dfn/sqrt (DS :V1))
                +                                       :v7 "X"}))
                -
                DS
                +
                DS

                _unnamed [9 7]:

                @@ -35395,7 +35950,7 @@
                -
                (tc/dataset {:v8 (dfn/+ (DS :V3) 1)})
                +
                (tc/dataset {:v8 (dfn/+ (DS :V3) 1)})

                _unnamed [9 1]:

                @@ -35439,10 +35994,10 @@
                -
                (def DS (tc/drop-columns DS :v5))
                +
                (def DS (tc/drop-columns DS :v5))
                -
                DS
                +
                DS

                _unnamed [9 6]:

                @@ -35536,10 +36091,10 @@
                -
                (def DS (tc/drop-columns DS [:v6 :v7]))
                +
                (def DS (tc/drop-columns DS [:v6 :v7]))
                -
                DS
                +
                DS

                _unnamed [9 4]:

                @@ -35615,10 +36170,10 @@
                -
                (def DS (tc/select-columns DS (complement #{:V3})))
                +
                (def DS (tc/select-columns DS (complement #{:V3})))
                -
                DS
                +
                DS

                _unnamed [9 3]:

                @@ -35682,10 +36237,10 @@
                -
                (def DS (tc/map-columns DS :V2 [:V2] #(if (< % 4.0) 0.0 %)))
                +
                (def DS (tc/map-columns DS :V2 [:V2] #(if (< % 4.0) 0.0 %)))
                -
                DS
                +
                DS

                _unnamed [9 3]:

                @@ -35749,9 +36304,9 @@
                -
                (-> DS
                -    (tc/group-by [:V4])
                -    (tc/aggregate {:sumV2 #(dfn/sum (% :V2))}))
                +
                (-> DS
                +    (tc/group-by [:V4])
                +    (tc/aggregate {:sumV2 #(dfn/sum (% :V2))}))

                _unnamed [3 2]:

                @@ -35781,9 +36336,9 @@
                -
                (-> DS
                -    (tc/group-by [:V4 :V1])
                -    (tc/aggregate {:sumV2 #(dfn/sum (% :V2))}))
                +
                (-> DS
                +    (tc/group-by [:V4 :V1])
                +    (tc/aggregate {:sumV2 #(dfn/sum (% :V2))}))

                _unnamed [6 3]:

                @@ -35832,10 +36387,10 @@
                -
                (-> DS
                -    (tc/group-by (fn [row]
                -                    (clojure.string/lower-case (:V4 row))))
                -    (tc/aggregate {:sumV1 #(dfn/sum (% :V1))}))
                +
                (-> DS
                +    (tc/group-by (fn [row]
                +                    (clojure.string/lower-case (:V4 row))))
                +    (tc/aggregate {:sumV1 #(dfn/sum (% :V1))}))

                _unnamed [3 2]:

                @@ -35865,10 +36420,10 @@
                -
                (-> DS
                -    (tc/group-by (fn [row]
                -                    {:abc (clojure.string/lower-case (:V4 row))}))
                -    (tc/aggregate {:sumV1 #(dfn/sum (% :V1))}))
                +
                (-> DS
                +    (tc/group-by (fn [row]
                +                    {:abc (clojure.string/lower-case (:V4 row))}))
                +    (tc/aggregate {:sumV1 #(dfn/sum (% :V1))}))

                _unnamed [3 2]:

                @@ -35894,10 +36449,10 @@
                -
                (-> DS
                -    (tc/group-by (fn [row]
                -                    (clojure.string/lower-case (:V4 row))))
                -    (tc/aggregate {:sumV1 #(dfn/sum (% :V1))} {:add-group-as-column :abc}))
                +
                (-> DS
                +    (tc/group-by (fn [row]
                +                    (clojure.string/lower-case (:V4 row))))
                +    (tc/aggregate {:sumV1 #(dfn/sum (% :V1))} {:add-group-as-column :abc}))

                _unnamed [3 2]:

                @@ -35925,9 +36480,9 @@
                -
                (-> DS
                -    (tc/group-by #(= (:V4 %) "A"))
                -    (tc/aggregate #(dfn/sum (% :V1))))
                +
                (-> DS
                +    (tc/group-by #(= (:V4 %) "A"))
                +    (tc/aggregate #(dfn/sum (% :V1))))

                _unnamed [2 2]:

                @@ -35951,10 +36506,10 @@
                -
                (-> DS
                -    (tc/select-rows (range 5))
                -    (tc/group-by :V4)
                -    (tc/aggregate {:sumV1 #(dfn/sum (% :V1))}))
                +
                (-> DS
                +    (tc/select-rows (range 5))
                +    (tc/group-by :V4)
                +    (tc/aggregate {:sumV1 #(dfn/sum (% :V1))}))

                _unnamed [3 2]:

                @@ -35982,9 +36537,9 @@
                -
                (-> DS
                -    (tc/group-by :V4)
                -    (tc/aggregate tc/row-count))
                +
                (-> DS
                +    (tc/group-by :V4)
                +    (tc/aggregate tc/row-count))

                _unnamed [3 2]:

                @@ -36012,10 +36567,10 @@
                -
                (-> DS
                -    (tc/group-by [:V1])
                -    (tc/add-column :n tc/row-count)
                -    (tc/ungroup))
                +
                (-> DS
                +    (tc/group-by [:V1])
                +    (tc/add-column :n tc/row-count)
                +    (tc/ungroup))

                _unnamed [9 4]:

                @@ -36087,9 +36642,9 @@
                -
                (-> DS
                -    (tc/group-by [:V4])
                -    (tc/aggregate-columns :V2 first))
                +
                (-> DS
                +    (tc/group-by [:V4])
                +    (tc/aggregate-columns :V2 first))

                _unnamed [3 2]:

                @@ -36115,9 +36670,9 @@
                -
                (-> DS
                -    (tc/group-by [:V4])
                -    (tc/aggregate-columns :V2 last))
                +
                (-> DS
                +    (tc/group-by [:V4])
                +    (tc/aggregate-columns :V2 last))

                _unnamed [3 2]:

                @@ -36143,9 +36698,9 @@
                -
                (-> DS
                -    (tc/group-by [:V4])
                -    (tc/aggregate-columns :V2 #(nth % 1)))
                +
                (-> DS
                +    (tc/group-by [:V4])
                +    (tc/aggregate-columns :V2 #(nth % 1)))

                _unnamed [3 2]:

                @@ -36179,7 +36734,7 @@
                Advanced col

                Summarise all the columns

                custom max function which works on every type

                -
                (tc/aggregate-columns DS :all (fn [col] (first (sort #(compare %2 %1) col))))
                +
                (tc/aggregate-columns DS :all (fn [col] (first (sort #(compare %2 %1) col))))

                _unnamed [1 3]:

                @@ -36201,7 +36756,7 @@
                Advanced col

                Summarise several columns

                -
                (tc/aggregate-columns DS [:V1 :V2] dfn/mean)
                +
                (tc/aggregate-columns DS [:V1 :V2] dfn/mean)

                _unnamed [1 2]:

                @@ -36221,9 +36776,9 @@
                Advanced col

                Summarise several columns by group

                -
                (-> DS
                -    (tc/group-by [:V4])
                -    (tc/aggregate-columns [:V1 :V2] dfn/mean))
                +
                (-> DS
                +    (tc/group-by [:V4])
                +    (tc/aggregate-columns [:V1 :V2] dfn/mean))

                _unnamed [3 3]:

                @@ -36255,11 +36810,11 @@
                Advanced col

                Summarise with more than one function by group

                -
                (-> DS
                -    (tc/group-by [:V4])
                -    (tc/aggregate-columns [:V1 :V2] (fn [col]
                -                                       {:sum (dfn/sum col)
                -                                        :mean (dfn/mean col)})))
                +
                (-> DS
                +    (tc/group-by [:V4])
                +    (tc/aggregate-columns [:V1 :V2] (fn [col]
                +                                       {:sum (dfn/sum col)
                +                                        :mean (dfn/mean col)})))

                _unnamed [3 5]:

                @@ -36298,9 +36853,9 @@
                Advanced col

                Summarise using a condition

                -
                (-> DS
                -    (tc/select-columns :type/numerical)
                -    (tc/aggregate-columns :all dfn/mean))
                +
                (-> DS
                +    (tc/select-columns :type/numerical)
                +    (tc/aggregate-columns :all dfn/mean))

                _unnamed [1 2]:

                @@ -36320,7 +36875,7 @@
                Advanced col

                Modify all the columns

                -
                (tc/update-columns DS :all reverse)
                +
                (tc/update-columns DS :all reverse)

                _unnamed [9 3]:

                @@ -36382,9 +36937,9 @@
                Advanced col

                Modify several columns (dropping the others)

                -
                (-> DS
                -    (tc/select-columns [:V1 :V2])
                -    (tc/update-columns :all dfn/sqrt))
                +
                (-> DS
                +    (tc/select-columns [:V1 :V2])
                +    (tc/update-columns :all dfn/sqrt))

                _unnamed [9 2]:

                @@ -36434,9 +36989,9 @@
                Advanced col
                -
                (-> DS
                -    (tc/select-columns (complement #{:V4}))
                -    (tc/update-columns :all dfn/exp))
                +
                (-> DS
                +    (tc/select-columns (complement #{:V4}))
                +    (tc/update-columns :all dfn/exp))

                _unnamed [9 2]:

                @@ -36488,10 +37043,10 @@
                Advanced col

                Modify several columns (keeping the others)

                -
                (def DS (tc/update-columns DS [:V1 :V2] dfn/sqrt))
                +
                (def DS (tc/update-columns DS [:V1 :V2] dfn/sqrt))
                -
                DS
                +
                DS

                _unnamed [9 3]:

                @@ -36551,10 +37106,10 @@
                Advanced col
                -
                (def DS (tc/update-columns DS (complement #{:V4}) #(dfn/pow % 2)))
                +
                (def DS (tc/update-columns DS (complement #{:V4}) #(dfn/pow % 2)))
                -
                DS
                +
                DS

                _unnamed [9 3]:

                @@ -36616,9 +37171,9 @@
                Advanced col

                Modify columns using a condition (dropping the others)

                -
                (-> DS
                -    (tc/select-columns :type/numerical)
                -    (tc/update-columns :all #(dfn/- % 1)))
                +
                (-> DS
                +    (tc/select-columns :type/numerical)
                +    (tc/update-columns :all #(dfn/- % 1)))

                _unnamed [9 2]:

                @@ -36670,10 +37225,10 @@
                Advanced col

                Modify columns using a condition (keeping the others)

                -
                (def DS (tc/convert-types DS :type/numerical :int32))
                +
                (def DS (tc/convert-types DS :type/numerical :int32))
                -
                DS
                +
                DS

                _unnamed [9 3]:

                @@ -36735,11 +37290,11 @@
                Advanced col

                Use a complex expression

                -
                (-> DS
                -    (tc/group-by [:V4])
                -    (tc/head 2)
                -    (tc/add-column :V2 "X")
                -    (tc/ungroup))
                +
                (-> DS
                +    (tc/group-by [:V4])
                +    (tc/head 2)
                +    (tc/add-column :V2 "X")
                +    (tc/ungroup))

                _unnamed [6 3]:

                @@ -36786,11 +37341,11 @@
                Advanced col

                Use multiple expressions

                -
                (tc/dataset (let [x (dfn/+ (DS :V1) (dfn/sum (DS :V2)))]
                -               (println (seq (DS :V1)))
                -               (println (tc/info (tc/select-columns DS :V1)))
                -               {:A (range 1 (inc (tc/row-count DS)))
                -                :B x}))
                +
                (tc/dataset (let [x (dfn/+ (DS :V1) (dfn/sum (DS :V2)))]
                +               (println (seq (DS :V1)))
                +               (println (tc/info (tc/select-columns DS :V1)))
                +               {:A (range 1 (inc (tc/row-count DS)))
                +                :B x}))

                _unnamed [9 2]:

                @@ -36844,10 +37399,10 @@
                Advanced col
                Chain expressions

                Expression chaining using >

                -
                (-> DS
                -    (tc/group-by [:V4])
                -    (tc/aggregate {:V1sum #(dfn/sum (% :V1))})
                -    (tc/select-rows #(>= (:V1sum %) 5)))
                +
                (-> DS
                +    (tc/group-by [:V4])
                +    (tc/aggregate {:V1sum #(dfn/sum (% :V1))})
                +    (tc/select-rows #(>= (:V1sum %) 5)))

                _unnamed [3 2]:

                @@ -36873,10 +37428,10 @@
                Chain expressions
                -
                (-> DS
                -    (tc/group-by [:V4])
                -    (tc/aggregate {:V1sum #(dfn/sum (% :V1))})
                -    (tc/order-by :V1sum :desc))
                +
                (-> DS
                +    (tc/group-by [:V4])
                +    (tc/aggregate {:V1sum #(dfn/sum (% :V1))})
                +    (tc/order-by :V1sum :desc))

                _unnamed [3 2]:

                @@ -36906,10 +37461,10 @@
                Chain expressions
                Indexing and Keys

                Set the key/index (order)

                -
                (def DS (tc/order-by DS :V4))
                +
                (def DS (tc/order-by DS :V4))
                -
                DS
                +
                DS

                _unnamed [9 3]:

                @@ -36970,7 +37525,7 @@
                Indexing and Keys

                Select the matching rows

                -
                (tc/select-rows DS #(= (:V4 %) "A"))
                +
                (tc/select-rows DS #(= (:V4 %) "A"))

                _unnamed [3 3]:

                @@ -37000,7 +37555,7 @@
                Indexing and Keys
                -
                (tc/select-rows DS (comp #{"A" "C"} :V4))
                +
                (tc/select-rows DS (comp #{"A" "C"} :V4))

                _unnamed [6 3]:

                @@ -37047,9 +37602,9 @@
                Indexing and Keys

                Select the first matching row

                -
                (-> DS
                -    (tc/select-rows #(= (:V4 %) "B"))
                -    (tc/first))
                +
                (-> DS
                +    (tc/select-rows #(= (:V4 %) "B"))
                +    (tc/first))

                _unnamed [1 3]:

                @@ -37069,9 +37624,9 @@
                Indexing and Keys
                -
                (-> DS
                -    (tc/unique-by :V4)
                -    (tc/select-rows (comp #{"B" "C"} :V4)))
                +
                (-> DS
                +    (tc/unique-by :V4)
                +    (tc/select-rows (comp #{"B" "C"} :V4)))

                _unnamed [2 3]:

                @@ -37098,9 +37653,9 @@
                Indexing and Keys

                Select the last matching row

                -
                (-> DS
                -    (tc/select-rows #(= (:V4 %) "A"))
                -    (tc/last))
                +
                (-> DS
                +    (tc/select-rows #(= (:V4 %) "A"))
                +    (tc/last))

                _unnamed [1 3]:

                @@ -37122,7 +37677,7 @@
                Indexing and Keys

                Nomatch argument

                -
                (tc/select-rows DS (comp #{"A" "D"} :V4))
                +
                (tc/select-rows DS (comp #{"A" "D"} :V4))

                _unnamed [3 3]:

                @@ -37154,10 +37709,10 @@
                Indexing and Keys

                Apply a function on the matching rows

                -
                (-> DS
                -    (tc/select-rows (comp #{"A" "C"} :V4))
                -    (tc/aggregate-columns :V1 (fn [col]
                -                                 {:sum (dfn/sum col)})))
                +
                (-> DS
                +    (tc/select-rows (comp #{"A" "C"} :V4))
                +    (tc/aggregate-columns :V1 (fn [col]
                +                                 {:sum (dfn/sum col)})))

                _unnamed [1 1]:

                @@ -37175,12 +37730,12 @@
                Indexing and Keys

                Modify values for matching rows

                -
                (def DS (-> DS
                -            (tc/map-columns :V1 [:V1 :V4] #(if (= %2 "A") 0 %1))
                -            (tc/order-by :V4)))
                +
                (def DS (-> DS
                +            (tc/map-columns :V1 [:V1 :V4] #(if (= %2 "A") 0 %1))
                +            (tc/order-by :V4)))
                -
                DS
                +
                DS

                _unnamed [9 3]:

                @@ -37242,10 +37797,10 @@
                Indexing and Keys

                Use keys in by

                -
                (-> DS
                -    (tc/select-rows (comp (complement #{"B"}) :V4))
                -    (tc/group-by [:V4])
                -    (tc/aggregate-columns :V1 dfn/sum))
                +
                (-> DS
                +    (tc/select-rows (comp (complement #{"B"}) :V4))
                +    (tc/group-by [:V4])
                +    (tc/aggregate-columns :V1 dfn/sum))

                _unnamed [2 2]:

                @@ -37269,7 +37824,7 @@
                Indexing and Keys

                Set keys/indices for multiple columns (ordered)

                -
                (tc/order-by DS [:V4 :V1])
                +
                (tc/order-by DS [:V4 :V1])

                _unnamed [9 3]:

                @@ -37331,9 +37886,9 @@
                Indexing and Keys

                Subset using multiple keys/indices

                -
                (-> DS
                -    (tc/select-rows #(and (= (:V1 %) 1)
                -                           (= (:V4 %) "C"))))
                +
                (-> DS
                +    (tc/select-rows #(and (= (:V1 %) 1)
                +                           (= (:V4 %) "C"))))

                _unnamed [2 3]:

                @@ -37358,9 +37913,9 @@
                Indexing and Keys
                -
                (-> DS
                -    (tc/select-rows #(and (= (:V1 %) 1)
                -                           (#{"B" "C"} (:V4 %)))))
                +
                (-> DS
                +    (tc/select-rows #(and (= (:V1 %) 1)
                +                           (#{"B" "C"} (:V4 %)))))

                _unnamed [3 3]:

                @@ -37390,12 +37945,12 @@
                Indexing and Keys
                -
                (-> DS
                -    (tc/select-rows #(and (= (:V1 %) 1)
                -                           (#{"B" "C"} (:V4 %))) {:result-type :as-indexes}))
                +
                (-> DS
                +    (tc/select-rows #(and (= (:V1 %) 1)
                +                           (#{"B" "C"} (:V4 %))) {:result-type :as-indexes}))
                -
                (4 6 8)
                +
                (4 6 8)
                @@ -37403,11 +37958,11 @@
                set*() modifications
                Replace values

                There is no mutating operations tech.ml.dataset or easy way to set value.

                -
                (def DS (tc/update-columns DS :V2 #(map-indexed (fn [idx v]
                -                                                   (if (zero? idx) 3 v)) %)))
                +
                (def DS (tc/update-columns DS :V2 #(map-indexed (fn [idx v]
                +                                                   (if (zero? idx) 3 v)) %)))
                -
                DS
                +
                DS

                _unnamed [9 3]:

                @@ -37469,10 +38024,10 @@
                set*() modifications

                Reorder rows

                -
                (def DS (tc/order-by DS [:V4 :V1] [:asc :desc]))
                +
                (def DS (tc/order-by DS [:V4 :V1] [:asc :desc]))
                -
                DS
                +
                DS

                _unnamed [9 3]:

                @@ -37534,10 +38089,10 @@
                set*() modifications

                Modify colnames

                -
                (def DS (tc/rename-columns DS {:V2 "v2"}))
                +
                (def DS (tc/rename-columns DS {:V2 "v2"}))
                -
                DS
                +
                DS

                _unnamed [9 3]:

                @@ -37597,16 +38152,16 @@
                set*() modifications
                -
                (def DS (tc/rename-columns DS {"v2" :V2}))
                +
                (def DS (tc/rename-columns DS {"v2" :V2}))

                revert back


                Reorder columns

                -
                (def DS (tc/reorder-columns DS :V4 :V1 :V2))
                +
                (def DS (tc/reorder-columns DS :V4 :V1 :V2))
                -
                DS
                +
                DS

                _unnamed [9 3]:

                @@ -37670,10 +38225,10 @@
                set*() modifications
                Advanced use of by

                Select first/last/… row by group

                -
                (-> DS
                -    (tc/group-by :V4)
                -    (tc/first)
                -    (tc/ungroup))
                +
                (-> DS
                +    (tc/group-by :V4)
                +    (tc/first)
                +    (tc/ungroup))

                _unnamed [3 3]:

                @@ -37703,10 +38258,10 @@
                Advanced use of by
                -
                (-> DS
                -    (tc/group-by :V4)
                -    (tc/select-rows [0 2])
                -    (tc/ungroup))
                +
                (-> DS
                +    (tc/group-by :V4)
                +    (tc/select-rows [0 2])
                +    (tc/ungroup))

                _unnamed [6 3]:

                @@ -37751,10 +38306,10 @@
                Advanced use of by
                -
                (-> DS
                -    (tc/group-by :V4)
                -    (tc/tail 2)
                -    (tc/ungroup))
                +
                (-> DS
                +    (tc/group-by :V4)
                +    (tc/tail 2)
                +    (tc/ungroup))

                _unnamed [6 3]:

                @@ -37801,11 +38356,11 @@
                Advanced use of by

                Select rows using a nested query

                -
                (-> DS
                -    (tc/group-by :V4)
                -    (tc/order-by :V2)
                -    (tc/first)
                -    (tc/ungroup))
                +
                (-> DS
                +    (tc/group-by :V4)
                +    (tc/order-by :V2)
                +    (tc/first)
                +    (tc/ungroup))

                _unnamed [3 3]:

                @@ -37836,9 +38391,9 @@
                Advanced use of by

                Add a group counter column

                -
                (-> DS
                -    (tc/group-by [:V4 :V1])
                -    (tc/ungroup {:add-group-id-as-column :Grp}))
                +
                (-> DS
                +    (tc/group-by [:V4 :V1])
                +    (tc/ungroup {:add-group-id-as-column :Grp}))

                _unnamed [9 4]:

                @@ -37910,11 +38465,11 @@
                Advanced use of by

                Get row number of first (and last) observation by group

                -
                (-> DS
                -    (tc/add-column :row-id (range))
                -    (tc/select-columns [:V4 :row-id])
                -    (tc/group-by :V4)
                -    (tc/ungroup))
                +
                (-> DS
                +    (tc/add-column :row-id (range))
                +    (tc/select-columns [:V4 :row-id])
                +    (tc/group-by :V4)
                +    (tc/ungroup))

                _unnamed [9 2]:

                @@ -37964,12 +38519,12 @@
                Advanced use of by
                -
                (-> DS
                -    (tc/add-column :row-id (range))
                -    (tc/select-columns [:V4 :row-id])
                -    (tc/group-by :V4)
                -    (tc/first)
                -    (tc/ungroup))
                +
                (-> DS
                +    (tc/add-column :row-id (range))
                +    (tc/select-columns [:V4 :row-id])
                +    (tc/group-by :V4)
                +    (tc/first)
                +    (tc/ungroup))

                _unnamed [3 2]:

                @@ -37995,12 +38550,12 @@
                Advanced use of by
                -
                (-> DS
                -    (tc/add-column :row-id (range))
                -    (tc/select-columns [:V4 :row-id])
                -    (tc/group-by :V4)
                -    (tc/select-rows [0 2])
                -    (tc/ungroup))
                +
                (-> DS
                +    (tc/add-column :row-id (range))
                +    (tc/select-columns [:V4 :row-id])
                +    (tc/group-by :V4)
                +    (tc/select-rows [0 2])
                +    (tc/ungroup))

                _unnamed [6 2]:

                @@ -38040,9 +38595,9 @@
                Advanced use of by

                Handle list-columns by group

                -
                (-> DS
                -    (tc/select-columns [:V1 :V4])
                -    (tc/fold-by :V4))
                +
                (-> DS
                +    (tc/select-columns [:V1 :V4])
                +    (tc/fold-by :V4))

                _unnamed [3 2]:

                @@ -38068,9 +38623,9 @@
                Advanced use of by
                -
                (-> DS
                -    (tc/group-by :V4)
                -    (tc/unmark-group))
                +
                (-> DS
                +    (tc/group-by :V4)
                +    (tc/unmark-group))

                _unnamed [3 3]:

                @@ -38110,30 +38665,30 @@

                Miscellaneous

                Read / Write data

                Write data to a csv file

                -
                (tc/write! DS "DF.csv")
                +
                (tc/write! DS "DF.csv")
                -
                10
                +
                10

                Write data to a tab-delimited file

                -
                (tc/write! DS "DF.txt" {:separator \tab})
                +
                (tc/write! DS "DF.txt" {:separator \tab})
                -
                10
                +
                10

                or

                -
                (tc/write! DS "DF.tsv")
                +
                (tc/write! DS "DF.tsv")
                -
                10
                +
                10

                Read a csv / tab-delimited file

                -
                (tc/dataset "DF.csv" {:key-fn keyword})
                +
                (tc/dataset "DF.csv" {:key-fn keyword})

                DF.csv [9 3]:

                @@ -38193,8 +38748,8 @@
                Read / Write data
                -
                ^:note-to-test/skip
                -(tc/dataset "DF.txt" {:key-fn keyword})
                +
                ^:note-to-test/skip
                +(tc/dataset "DF.txt" {:key-fn keyword})

                DF.txt [9 1]:

                @@ -38234,7 +38789,7 @@
                Read / Write data
                -
                (tc/dataset "DF.tsv" {:key-fn keyword})
                +
                (tc/dataset "DF.tsv" {:key-fn keyword})

                DF.tsv [9 3]:

                @@ -38296,8 +38851,8 @@
                Read / Write data

                Read a csv file selecting / droping columns

                -
                (tc/dataset "DF.csv" {:key-fn keyword
                -                       :column-whitelist ["V1" "V4"]})
                +
                (tc/dataset "DF.csv" {:key-fn keyword
                +                       :column-whitelist ["V1" "V4"]})

                DF.csv [9 2]:

                @@ -38347,8 +38902,8 @@
                Read / Write data
                -
                (tc/dataset "DF.csv" {:key-fn keyword
                -                       :column-blacklist ["V4"]})
                +
                (tc/dataset "DF.csv" {:key-fn keyword
                +                       :column-blacklist ["V4"]})

                DF.csv [9 2]:

                @@ -38400,7 +38955,7 @@
                Read / Write data

                Read and rbind several files

                -
                (apply tc/concat (map tc/dataset ["DF.csv" "DF.csv"]))
                +
                (apply tc/concat (map tc/dataset ["DF.csv" "DF.csv"]))

                DF.csv [18 3]:

                @@ -38509,11 +39064,11 @@
                Read / Write data
                Reshape data

                Melt data (from wide to long)

                -
                (def mDS (tc/pivot->longer DS [:V1 :V2] {:target-columns :variable
                -                                          :value-column-name :value}))
                +
                (def mDS (tc/pivot->longer DS [:V1 :V2] {:target-columns :variable
                +                                          :value-column-name :value}))
                -
                mDS
                +
                mDS

                _unnamed [18 3]:

                @@ -38620,9 +39175,9 @@
                Reshape data

                Cast data (from long to wide)

                -
                (-> mDS
                -    (tc/pivot->wider :variable :value {:fold-fn vec})
                -    (tc/update-columns ["V1" "V2"] (partial map count)))
                +
                (-> mDS
                +    (tc/pivot->wider :variable :value {:fold-fn vec})
                +    (tc/update-columns ["V1" "V2"] (partial map count)))

                _unnamed [3 3]:

                @@ -38652,9 +39207,9 @@
                Reshape data
                -
                (-> mDS
                -    (tc/pivot->wider :variable :value {:fold-fn vec})
                -    (tc/update-columns ["V1" "V2"] (partial map dfn/sum)))
                +
                (-> mDS
                +    (tc/pivot->wider :variable :value {:fold-fn vec})
                +    (tc/update-columns ["V1" "V2"] (partial map dfn/sum)))

                _unnamed [3 3]:

                @@ -38684,11 +39239,11 @@
                Reshape data
                -
                ^:note-to-test/skip
                -(-> mDS
                -    (tc/map-columns :value #(str (> % 5))) ;; coerce to strings
                -    (tc/pivot->wider :value :variable {:fold-fn vec})
                -    (tc/update-columns ["true" "false"] (partial map #(if (sequential? %) (count %) 1))))
                +
                ^:note-to-test/skip
                +(-> mDS
                +    (tc/map-columns :value #(str (> % 5))) ;; coerce to strings
                +    (tc/pivot->wider :value :variable {:fold-fn vec})
                +    (tc/update-columns ["true" "false"] (partial map #(if (sequential? %) (count %) 1))))

                _unnamed [3 3]:

                @@ -38720,7 +39275,7 @@
                Reshape data

                Split

                -
                (tc/group-by DS :V4 {:result-type :as-map})
                +
                (tc/group-by DS :V4 {:result-type :as-map})

                @@ -38952,9 +39507,9 @@

                Reshape data

                Split and transpose a vector/column

                -
                (-> {:a ["A:a" "B:b" "C:c"]}
                -    (tc/dataset)
                -    (tc/separate-column :a [:V1 :V2] ":"))
                +
                (-> {:a ["A:a" "B:b" "C:c"]}
                +    (tc/dataset)
                +    (tc/separate-column :a [:V1 :V2] ":"))

                _unnamed [3 2]:

                @@ -38988,17 +39543,17 @@
                Other

                Join/Bind data sets

                -
                (def x (tc/dataset {"Id" ["A" "B" "C" "C"]
                -                     "X1" [1 3 5 7]
                -                     "XY" ["x2" "x4" "x6" "x8"]}))
                +
                (def x (tc/dataset {"Id" ["A" "B" "C" "C"]
                +                     "X1" [1 3 5 7]
                +                     "XY" ["x2" "x4" "x6" "x8"]}))
                -
                (def y (tc/dataset {"Id" ["A" "B" "B" "D"]
                -                     "Y1" [1 3 5 7]
                -                     "XY" ["y1" "y3" "y5" "y7"]}))
                +
                (def y (tc/dataset {"Id" ["A" "B" "B" "D"]
                +                     "Y1" [1 3 5 7]
                +                     "XY" ["y1" "y3" "y5" "y7"]}))
                -
                x
                +
                x

                _unnamed [4 3]:

                @@ -39033,7 +39588,7 @@

                Join/Bind data sets

                -
                y
                +
                y

                _unnamed [4 3]:

                @@ -39071,7 +39626,7 @@

                Join/Bind data sets

                Join

                Join matching rows from y to x

                -
                (tc/left-join x y "Id")
                +
                (tc/left-join x y "Id")

                left-outer-join [5 6]:

                @@ -39131,7 +39686,7 @@
                Join

                Join matching rows from x to y

                -
                (tc/right-join x y "Id")
                +
                (tc/right-join x y "Id")

                right-outer-join [4 6]:

                @@ -39183,7 +39738,7 @@
                Join

                Join matching rows from both x and y

                -
                (tc/inner-join x y "Id")
                +
                (tc/inner-join x y "Id")

                inner-join [3 5]:

                @@ -39223,7 +39778,7 @@
                Join

                Join keeping all the rows

                -
                (tc/full-join x y "Id")
                +
                (tc/full-join x y "Id")

                outer-join [6 5]:

                @@ -39284,7 +39839,7 @@
                Join

                Return rows from x matching y

                -
                (tc/semi-join x y "Id")
                +
                (tc/semi-join x y "Id")

                _unnamed [2 3]:

                @@ -39311,7 +39866,7 @@
                Join

                Return rows from x not matching y

                -
                (tc/anti-join x y "Id")
                +
                (tc/anti-join x y "Id")

                _unnamed [2 3]:

                @@ -39340,9 +39895,9 @@
                Join
                More joins

                Select columns while joining

                -
                (tc/right-join (tc/select-columns x ["Id" "X1"])
                -                (tc/select-columns y ["Id" "XY"])
                -                "Id")
                +
                (tc/right-join (tc/select-columns x ["Id" "X1"])
                +                (tc/select-columns y ["Id" "XY"])
                +                "Id")

                right-outer-join [4 4]:

                @@ -39382,9 +39937,9 @@
                More joins
                -
                (tc/right-join (tc/select-columns x ["Id" "XY"])
                -                (tc/select-columns y ["Id" "XY"])
                -                "Id")
                +
                (tc/right-join (tc/select-columns x ["Id" "XY"])
                +                (tc/select-columns y ["Id" "XY"])
                +                "Id")

                right-outer-join [4 4]:

                @@ -39425,13 +39980,13 @@
                More joins

                Aggregate columns while joining

                -
                (-> y
                -    (tc/group-by ["Id"])
                -    (tc/aggregate {"sumY1" #(dfn/sum (% "Y1"))})
                -    (tc/right-join x "Id")
                -    (tc/add-column "X1Y1" (fn [ds] (dfn/* (ds "sumY1")
                -                                                    (ds "X1"))))
                -    (tc/select-columns ["right.Id" "X1Y1"]))
                +
                (-> y
                +    (tc/group-by ["Id"])
                +    (tc/aggregate {"sumY1" #(dfn/sum (% "Y1"))})
                +    (tc/right-join x "Id")
                +    (tc/add-column "X1Y1" (fn [ds] (dfn/* (ds "sumY1")
                +                                                    (ds "X1"))))
                +    (tc/select-columns ["right.Id" "X1Y1"]))

                right-outer-join [4 2]:

                @@ -39462,11 +40017,11 @@
                More joins

                Update columns while joining

                -
                (-> x
                -    (tc/select-columns ["Id" "X1"])
                -    (tc/map-columns "SqX1" "X1" (fn [x] (* x x)))
                -    (tc/right-join y "Id")
                -    (tc/drop-columns ["X1" "Id"]))
                +
                (-> x
                +    (tc/select-columns ["Id" "X1"])
                +    (tc/map-columns "SqX1" "X1" (fn [x] (* x x)))
                +    (tc/right-join y "Id")
                +    (tc/drop-columns ["X1" "Id"]))

                right-outer-join [4 4]:

                @@ -39508,9 +40063,9 @@
                More joins

                Adds a list column with rows from y matching x (nest-join)

                -
                (-> (tc/left-join x y "Id")
                -    (tc/drop-columns ["right.Id"])
                -    (tc/fold-by (tc/column-names x)))
                +
                (-> (tc/left-join x y "Id")
                +    (tc/drop-columns ["right.Id"])
                +    (tc/fold-by (tc/column-names x)))

                _unnamed [4 5]:

                @@ -39559,11 +40114,11 @@
                More joins

                Cross join

                -
                (def cjds (tc/dataset {:V1 [[2 1 1]]
                -                        :V2 [[3 2]]}))
                +
                (def cjds (tc/dataset {:V1 [[2 1 1]]
                +                        :V2 [[3 2]]}))
                -
                cjds
                +
                cjds

                _unnamed [1 2]:

                @@ -39581,7 +40136,7 @@
                More joins
                -
                (reduce #(tc/unroll %1 %2) cjds (tc/column-names cjds))
                +
                (reduce #(tc/unroll %1 %2) cjds (tc/column-names cjds))

                _unnamed [6 2]:

                @@ -39619,8 +40174,8 @@
                More joins
                -
                (-> (reduce #(tc/unroll %1 %2) cjds (tc/column-names cjds))
                -    (tc/unique-by))
                +
                (-> (reduce #(tc/unroll %1 %2) cjds (tc/column-names cjds))
                +    (tc/unique-by))

                _unnamed [4 2]:

                @@ -39653,17 +40208,17 @@
                More joins
                Bind
                -
                (def x (tc/dataset {:V1 [1 2 3]}))
                +
                (def x (tc/dataset {:V1 [1 2 3]}))
                -
                (def y (tc/dataset {:V1 [4 5 6]}))
                +
                (def y (tc/dataset {:V1 [4 5 6]}))
                -
                (def z (tc/dataset {:V1 [7 8 9]
                -                     :V2 [0 0 0]}))
                +
                (def z (tc/dataset {:V1 [7 8 9]
                +                     :V2 [0 0 0]}))
                -
                x
                +
                x

                _unnamed [3 1]:

                @@ -39685,7 +40240,7 @@
                Bind
                -
                y
                +
                y

                _unnamed [3 1]:

                @@ -39707,7 +40262,7 @@
                Bind
                -
                z
                +
                z

                _unnamed [3 2]:

                @@ -39735,7 +40290,7 @@
                Bind

                Bind rows

                -
                (tc/bind x y)
                +
                (tc/bind x y)

                _unnamed [6 1]:

                @@ -39766,7 +40321,7 @@
                Bind
                -
                (tc/bind x z)
                +
                (tc/bind x z)

                _unnamed [6 2]:

                @@ -39806,9 +40361,9 @@
                Bind

                Bind rows using a list

                -
                (->> [x y]
                -     (map-indexed #(tc/add-column %2 :id (repeat %1)))
                -     (apply tc/bind))
                +
                (->> [x y]
                +     (map-indexed #(tc/add-column %2 :id (repeat %1)))
                +     (apply tc/bind))

                _unnamed [6 2]:

                @@ -39848,7 +40403,7 @@
                Bind

                Bind columns

                -
                (tc/append x y)
                +
                (tc/append x y)

                _unnamed [3 2]:

                @@ -39877,13 +40432,13 @@
                Bind
                Set operations
                -
                (def x (tc/dataset {:V1 [1 2 2 3 3]}))
                +
                (def x (tc/dataset {:V1 [1 2 2 3 3]}))
                -
                (def y (tc/dataset {:V1 [2 2 3 4 4]}))
                +
                (def y (tc/dataset {:V1 [2 2 3 4 4]}))
                -
                x
                +
                x

                _unnamed [5 1]:

                @@ -39911,7 +40466,7 @@
                Set operations
                -
                y
                +
                y

                _unnamed [5 1]:

                @@ -39941,7 +40496,7 @@
                Set operations

                Intersection

                -
                (tc/intersect x y)
                +
                (tc/intersect x y)

                intersection [4 1]:

                @@ -39968,7 +40523,7 @@
                Set operations

                Difference

                -
                (tc/difference x y)
                +
                (tc/difference x y)

                difference [1 1]:

                @@ -39986,7 +40541,7 @@
                Set operations

                Union

                -
                (tc/union x y)
                +
                (tc/union x y)

                union [4 1]:

                @@ -40011,7 +40566,7 @@
                Set operations
                -
                (tc/concat x y)
                +
                (tc/concat x y)

                _unnamed [10 1]:

                @@ -40096,9 +40651,23 @@
                Set operations
                icon: icon }; anchorJS.add('.anchored'); + const isCodeAnnotation = (el) => { + for (const clz of el.classList) { + if (clz.startsWith('code-annotation-')) { + return true; + } + } + return false; + } const clipboard = new window.ClipboardJS('.code-copy-button', { - target: function(trigger) { - return trigger.previousElementSibling; + text: function(trigger) { + const codeEl = trigger.previousElementSibling.cloneNode(true); + for (const childEl of codeEl.children) { + if (isCodeAnnotation(childEl)) { + childEl.remove(); + } + } + return codeEl.innerText; } }); clipboard.on('success', function(e) { @@ -40163,6 +40732,92 @@
                Set operations
                return note.innerHTML; }); } + let selectedAnnoteEl; + const selectorForAnnotation = ( cell, annotation) => { + let cellAttr = 'data-code-cell="' + cell + '"'; + let lineAttr = 'data-code-annotation="' + annotation + '"'; + const selector = 'span[' + cellAttr + '][' + lineAttr + ']'; + return selector; + } + const selectCodeLines = (annoteEl) => { + const doc = window.document; + const targetCell = annoteEl.getAttribute("data-target-cell"); + const targetAnnotation = annoteEl.getAttribute("data-target-annotation"); + const annoteSpan = window.document.querySelector(selectorForAnnotation(targetCell, targetAnnotation)); + const lines = annoteSpan.getAttribute("data-code-lines").split(","); + const lineIds = lines.map((line) => { + return targetCell + "-" + line; + }) + let top = null; + let height = null; + let parent = null; + if (lineIds.length > 0) { + //compute the position of the single el (top and bottom and make a div) + const el = window.document.getElementById(lineIds[0]); + top = el.offsetTop; + height = el.offsetHeight; + parent = el.parentElement.parentElement; + if (lineIds.length > 1) { + const lastEl = window.document.getElementById(lineIds[lineIds.length - 1]); + const bottom = lastEl.offsetTop + lastEl.offsetHeight; + height = bottom - top; + } + if (top !== null && height !== null && parent !== null) { + // cook up a div (if necessary) and position it + let div = window.document.getElementById("code-annotation-line-highlight"); + if (div === null) { + div = window.document.createElement("div"); + div.setAttribute("id", "code-annotation-line-highlight"); + div.style.position = 'absolute'; + parent.appendChild(div); + } + div.style.top = top - 2 + "px"; + div.style.height = height + 4 + "px"; + let gutterDiv = window.document.getElementById("code-annotation-line-highlight-gutter"); + if (gutterDiv === null) { + gutterDiv = window.document.createElement("div"); + gutterDiv.setAttribute("id", "code-annotation-line-highlight-gutter"); + gutterDiv.style.position = 'absolute'; + const codeCell = window.document.getElementById(targetCell); + const gutter = codeCell.querySelector('.code-annotation-gutter'); + gutter.appendChild(gutterDiv); + } + gutterDiv.style.top = top - 2 + "px"; + gutterDiv.style.height = height + 4 + "px"; + } + selectedAnnoteEl = annoteEl; + } + }; + const unselectCodeLines = () => { + const elementsIds = ["code-annotation-line-highlight", "code-annotation-line-highlight-gutter"]; + elementsIds.forEach((elId) => { + const div = window.document.getElementById(elId); + if (div) { + div.remove(); + } + }); + selectedAnnoteEl = undefined; + }; + // Attach click handler to the DT + const annoteDls = window.document.querySelectorAll('dt[data-target-cell]'); + for (const annoteDlNode of annoteDls) { + annoteDlNode.addEventListener('click', (event) => { + const clickedEl = event.target; + if (clickedEl !== selectedAnnoteEl) { + unselectCodeLines(); + const activeEl = window.document.querySelector('dt[data-target-cell].code-annotation-active'); + if (activeEl) { + activeEl.classList.remove('code-annotation-active'); + } + selectCodeLines(clickedEl); + clickedEl.classList.add('code-annotation-active'); + } else { + // Unselect the line + unselectCodeLines(); + clickedEl.classList.remove('code-annotation-active'); + } + }); + } const findCites = (el) => { const parentEl = el.parentElement; if (parentEl) { diff --git a/docs/index_files/libs/bootstrap/bootstrap.min.css b/docs/index_files/libs/bootstrap/bootstrap.min.css index ffcabe7..4127010 100644 --- a/docs/index_files/libs/bootstrap/bootstrap.min.css +++ b/docs/index_files/libs/bootstrap/bootstrap.min.css @@ -1,10 +1,10 @@ -/*! +@import"https://cdn.jsdelivr.net/npm/firacode@6.2.0/distr/fira_code.css";/*! * Bootstrap v5.1.3 (https://getbootstrap.com/) * Copyright 2011-2021 The Bootstrap Authors * Copyright 2011-2021 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - */@import"https://fonts.googleapis.com/css2?family=Open+Sans:ital,wght@0,400;0,700;1,400;1,700&display=swap";:root{--bs-blue: #446e9b;--bs-indigo: #6610f2;--bs-purple: #6f42c1;--bs-pink: #e83e8c;--bs-red: #cd0200;--bs-orange: #fd7e14;--bs-yellow: #d47500;--bs-green: #3cb521;--bs-teal: #20c997;--bs-cyan: #3399f3;--bs-white: #fff;--bs-gray: #777;--bs-gray-dark: #333;--bs-gray-100: #f8f9fa;--bs-gray-200: #eee;--bs-gray-300: #dee2e6;--bs-gray-400: #ced4da;--bs-gray-500: #999;--bs-gray-600: #777;--bs-gray-700: #495057;--bs-gray-800: #333;--bs-gray-900: #2d2d2d;--bs-default: #999;--bs-primary: #446e9b;--bs-secondary: #999;--bs-success: #3cb521;--bs-info: #3399f3;--bs-warning: #d47500;--bs-danger: #cd0200;--bs-light: #eee;--bs-dark: #333;--bs-default-rgb: 153, 153, 153;--bs-primary-rgb: 68, 110, 155;--bs-secondary-rgb: 153, 153, 153;--bs-success-rgb: 60, 181, 33;--bs-info-rgb: 51, 153, 243;--bs-warning-rgb: 212, 117, 0;--bs-danger-rgb: 205, 2, 0;--bs-light-rgb: 238, 238, 238;--bs-dark-rgb: 51, 51, 51;--bs-white-rgb: 255, 255, 255;--bs-black-rgb: 0, 0, 0;--bs-body-color-rgb: 119, 119, 119;--bs-body-bg-rgb: 255, 255, 255;--bs-font-sans-serif: "Open Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";--bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));--bs-root-font-size: 18px;--bs-body-font-family: var(--bs-font-sans-serif);--bs-body-font-size: 1rem;--bs-body-font-weight: 400;--bs-body-line-height: 1.5;--bs-body-color: #777;--bs-body-bg: #fff}*,*::before,*::after{box-sizing:border-box}:root{font-size:var(--bs-root-font-size)}body{margin:0;font-family:var(--bs-body-font-family);font-size:var(--bs-body-font-size);font-weight:var(--bs-body-font-weight);line-height:var(--bs-body-line-height);color:var(--bs-body-color);text-align:var(--bs-body-text-align);background-color:var(--bs-body-bg);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(0,0,0,0)}hr{margin:1rem 0;color:inherit;background-color:currentColor;border:0;opacity:.25}hr:not([size]){height:1px}h6,.h6,h5,.h5,h4,.h4,h3,.h3,h2,.h2,h1,.h1{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2;color:#2d2d2d}h1,.h1{font-size:calc(1.345rem + 1.14vw)}@media(min-width: 1200px){h1,.h1{font-size:2.2rem}}h2,.h2{font-size:calc(1.3rem + 0.6vw)}@media(min-width: 1200px){h2,.h2{font-size:1.75rem}}h3,.h3{font-size:calc(1.275rem + 0.3vw)}@media(min-width: 1200px){h3,.h3{font-size:1.5rem}}h4,.h4{font-size:1.25rem}h5,.h5{font-size:1.1rem}h6,.h6{font-size:1rem}p{margin-top:0;margin-bottom:1rem}abbr[title],abbr[data-bs-original-title]{text-decoration:underline dotted;-webkit-text-decoration:underline dotted;-moz-text-decoration:underline dotted;-ms-text-decoration:underline dotted;-o-text-decoration:underline dotted;cursor:help;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-left:2rem}ol,ul,dl{margin-top:0;margin-bottom:1rem}ol ol,ul ul,ol ul,ul ol{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem;padding:.625rem 1.25rem;border-left:.25rem solid #eee}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}b,strong{font-weight:bolder}small,.small{font-size:0.875em}mark,.mark{padding:.2em;background-color:#fcf8e3}sub,sup{position:relative;font-size:0.75em;line-height:0;vertical-align:baseline}sub{bottom:-0.25em}sup{top:-0.5em}a{color:#3399f3;text-decoration:underline;-webkit-text-decoration:underline;-moz-text-decoration:underline;-ms-text-decoration:underline;-o-text-decoration:underline}a:hover{color:#297ac2}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}pre,code,kbd,samp{font-family:var(--bs-font-monospace);font-size:1em;direction:ltr /* rtl:ignore */;unicode-bidi:bidi-override}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:0.875em;color:#000;background-color:#fafafa;padding:.5rem;border:1px solid #dee2e6;border-radius:.25rem}pre code{background-color:transparent;font-size:inherit;color:inherit;word-break:normal}code{font-size:0.875em;color:#9753b8;background-color:#fafafa;border-radius:.25rem;padding:.125rem .25rem;word-wrap:break-word}a>code{color:inherit}kbd{padding:.4rem .4rem;font-size:0.875em;color:#fff;background-color:#2d2d2d;border-radius:.2rem}kbd kbd{padding:0;font-size:1em;font-weight:700}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:#777;text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}thead,tbody,tfoot,tr,td,th{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}input,button,select,optgroup,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]::-webkit-calendar-picker-indicator{display:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}button:not(:disabled),[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{float:left;width:100%;padding:0;margin-bottom:.5rem;font-size:calc(1.275rem + 0.3vw);line-height:inherit}@media(min-width: 1200px){legend{font-size:1.5rem}}legend+*{clear:left}::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-text,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:textfield}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::file-selector-button{font:inherit}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}iframe{border:0}summary{display:list-item;cursor:pointer}progress{vertical-align:baseline}[hidden]{display:none !important}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:calc(1.625rem + 4.5vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-1{font-size:5rem}}.display-2{font-size:calc(1.575rem + 3.9vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-2{font-size:4.5rem}}.display-3{font-size:calc(1.525rem + 3.3vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-3{font-size:4rem}}.display-4{font-size:calc(1.475rem + 2.7vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-4{font-size:3.5rem}}.display-5{font-size:calc(1.425rem + 2.1vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-5{font-size:3rem}}.display-6{font-size:calc(1.375rem + 1.5vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-6{font-size:2.5rem}}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:0.875em;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote>:last-child{margin-bottom:0}.blockquote-footer{margin-top:-1rem;margin-bottom:1rem;font-size:0.875em;color:#777}.blockquote-footer::before{content:"— "}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:0.875em;color:#777}.grid{display:grid;grid-template-rows:repeat(var(--bs-rows, 1), 1fr);grid-template-columns:repeat(var(--bs-columns, 12), 1fr);gap:var(--bs-gap, 1.5rem)}.grid .g-col-1{grid-column:auto/span 1}.grid .g-col-2{grid-column:auto/span 2}.grid .g-col-3{grid-column:auto/span 3}.grid .g-col-4{grid-column:auto/span 4}.grid .g-col-5{grid-column:auto/span 5}.grid .g-col-6{grid-column:auto/span 6}.grid .g-col-7{grid-column:auto/span 7}.grid .g-col-8{grid-column:auto/span 8}.grid .g-col-9{grid-column:auto/span 9}.grid .g-col-10{grid-column:auto/span 10}.grid .g-col-11{grid-column:auto/span 11}.grid .g-col-12{grid-column:auto/span 12}.grid .g-start-1{grid-column-start:1}.grid .g-start-2{grid-column-start:2}.grid .g-start-3{grid-column-start:3}.grid .g-start-4{grid-column-start:4}.grid .g-start-5{grid-column-start:5}.grid .g-start-6{grid-column-start:6}.grid .g-start-7{grid-column-start:7}.grid .g-start-8{grid-column-start:8}.grid .g-start-9{grid-column-start:9}.grid .g-start-10{grid-column-start:10}.grid .g-start-11{grid-column-start:11}@media(min-width: 576px){.grid .g-col-sm-1{grid-column:auto/span 1}.grid .g-col-sm-2{grid-column:auto/span 2}.grid .g-col-sm-3{grid-column:auto/span 3}.grid .g-col-sm-4{grid-column:auto/span 4}.grid .g-col-sm-5{grid-column:auto/span 5}.grid .g-col-sm-6{grid-column:auto/span 6}.grid .g-col-sm-7{grid-column:auto/span 7}.grid .g-col-sm-8{grid-column:auto/span 8}.grid .g-col-sm-9{grid-column:auto/span 9}.grid .g-col-sm-10{grid-column:auto/span 10}.grid .g-col-sm-11{grid-column:auto/span 11}.grid .g-col-sm-12{grid-column:auto/span 12}.grid .g-start-sm-1{grid-column-start:1}.grid .g-start-sm-2{grid-column-start:2}.grid .g-start-sm-3{grid-column-start:3}.grid .g-start-sm-4{grid-column-start:4}.grid .g-start-sm-5{grid-column-start:5}.grid .g-start-sm-6{grid-column-start:6}.grid .g-start-sm-7{grid-column-start:7}.grid .g-start-sm-8{grid-column-start:8}.grid .g-start-sm-9{grid-column-start:9}.grid .g-start-sm-10{grid-column-start:10}.grid .g-start-sm-11{grid-column-start:11}}@media(min-width: 768px){.grid .g-col-md-1{grid-column:auto/span 1}.grid .g-col-md-2{grid-column:auto/span 2}.grid .g-col-md-3{grid-column:auto/span 3}.grid .g-col-md-4{grid-column:auto/span 4}.grid .g-col-md-5{grid-column:auto/span 5}.grid .g-col-md-6{grid-column:auto/span 6}.grid .g-col-md-7{grid-column:auto/span 7}.grid .g-col-md-8{grid-column:auto/span 8}.grid .g-col-md-9{grid-column:auto/span 9}.grid .g-col-md-10{grid-column:auto/span 10}.grid .g-col-md-11{grid-column:auto/span 11}.grid .g-col-md-12{grid-column:auto/span 12}.grid .g-start-md-1{grid-column-start:1}.grid .g-start-md-2{grid-column-start:2}.grid .g-start-md-3{grid-column-start:3}.grid .g-start-md-4{grid-column-start:4}.grid .g-start-md-5{grid-column-start:5}.grid .g-start-md-6{grid-column-start:6}.grid .g-start-md-7{grid-column-start:7}.grid .g-start-md-8{grid-column-start:8}.grid .g-start-md-9{grid-column-start:9}.grid .g-start-md-10{grid-column-start:10}.grid .g-start-md-11{grid-column-start:11}}@media(min-width: 992px){.grid .g-col-lg-1{grid-column:auto/span 1}.grid .g-col-lg-2{grid-column:auto/span 2}.grid .g-col-lg-3{grid-column:auto/span 3}.grid .g-col-lg-4{grid-column:auto/span 4}.grid .g-col-lg-5{grid-column:auto/span 5}.grid .g-col-lg-6{grid-column:auto/span 6}.grid .g-col-lg-7{grid-column:auto/span 7}.grid .g-col-lg-8{grid-column:auto/span 8}.grid .g-col-lg-9{grid-column:auto/span 9}.grid .g-col-lg-10{grid-column:auto/span 10}.grid .g-col-lg-11{grid-column:auto/span 11}.grid .g-col-lg-12{grid-column:auto/span 12}.grid .g-start-lg-1{grid-column-start:1}.grid .g-start-lg-2{grid-column-start:2}.grid .g-start-lg-3{grid-column-start:3}.grid .g-start-lg-4{grid-column-start:4}.grid .g-start-lg-5{grid-column-start:5}.grid .g-start-lg-6{grid-column-start:6}.grid .g-start-lg-7{grid-column-start:7}.grid .g-start-lg-8{grid-column-start:8}.grid .g-start-lg-9{grid-column-start:9}.grid .g-start-lg-10{grid-column-start:10}.grid .g-start-lg-11{grid-column-start:11}}@media(min-width: 1200px){.grid .g-col-xl-1{grid-column:auto/span 1}.grid .g-col-xl-2{grid-column:auto/span 2}.grid .g-col-xl-3{grid-column:auto/span 3}.grid .g-col-xl-4{grid-column:auto/span 4}.grid .g-col-xl-5{grid-column:auto/span 5}.grid .g-col-xl-6{grid-column:auto/span 6}.grid .g-col-xl-7{grid-column:auto/span 7}.grid .g-col-xl-8{grid-column:auto/span 8}.grid .g-col-xl-9{grid-column:auto/span 9}.grid .g-col-xl-10{grid-column:auto/span 10}.grid .g-col-xl-11{grid-column:auto/span 11}.grid .g-col-xl-12{grid-column:auto/span 12}.grid .g-start-xl-1{grid-column-start:1}.grid .g-start-xl-2{grid-column-start:2}.grid .g-start-xl-3{grid-column-start:3}.grid .g-start-xl-4{grid-column-start:4}.grid .g-start-xl-5{grid-column-start:5}.grid .g-start-xl-6{grid-column-start:6}.grid .g-start-xl-7{grid-column-start:7}.grid .g-start-xl-8{grid-column-start:8}.grid .g-start-xl-9{grid-column-start:9}.grid .g-start-xl-10{grid-column-start:10}.grid .g-start-xl-11{grid-column-start:11}}@media(min-width: 1400px){.grid .g-col-xxl-1{grid-column:auto/span 1}.grid .g-col-xxl-2{grid-column:auto/span 2}.grid .g-col-xxl-3{grid-column:auto/span 3}.grid .g-col-xxl-4{grid-column:auto/span 4}.grid .g-col-xxl-5{grid-column:auto/span 5}.grid .g-col-xxl-6{grid-column:auto/span 6}.grid .g-col-xxl-7{grid-column:auto/span 7}.grid .g-col-xxl-8{grid-column:auto/span 8}.grid .g-col-xxl-9{grid-column:auto/span 9}.grid .g-col-xxl-10{grid-column:auto/span 10}.grid .g-col-xxl-11{grid-column:auto/span 11}.grid .g-col-xxl-12{grid-column:auto/span 12}.grid .g-start-xxl-1{grid-column-start:1}.grid .g-start-xxl-2{grid-column-start:2}.grid .g-start-xxl-3{grid-column-start:3}.grid .g-start-xxl-4{grid-column-start:4}.grid .g-start-xxl-5{grid-column-start:5}.grid .g-start-xxl-6{grid-column-start:6}.grid .g-start-xxl-7{grid-column-start:7}.grid .g-start-xxl-8{grid-column-start:8}.grid .g-start-xxl-9{grid-column-start:9}.grid .g-start-xxl-10{grid-column-start:10}.grid .g-start-xxl-11{grid-column-start:11}}.table{--bs-table-bg: transparent;--bs-table-accent-bg: transparent;--bs-table-striped-color: #777;--bs-table-striped-bg: rgba(0, 0, 0, 0.05);--bs-table-active-color: #777;--bs-table-active-bg: rgba(0, 0, 0, 0.1);--bs-table-hover-color: #777;--bs-table-hover-bg: rgba(0, 0, 0, 0.075);width:100%;margin-bottom:1rem;color:#777;vertical-align:top;border-color:#dee2e6}.table>:not(caption)>*>*{padding:.5rem .5rem;background-color:var(--bs-table-bg);border-bottom-width:1px;box-shadow:inset 0 0 0 9999px var(--bs-table-accent-bg)}.table>tbody{vertical-align:inherit}.table>thead{vertical-align:bottom}.table>:not(:first-child){border-top:2px solid currentColor}.caption-top{caption-side:top}.table-sm>:not(caption)>*>*{padding:.25rem .25rem}.table-bordered>:not(caption)>*{border-width:1px 0}.table-bordered>:not(caption)>*>*{border-width:0 1px}.table-borderless>:not(caption)>*>*{border-bottom-width:0}.table-borderless>:not(:first-child){border-top-width:0}.table-striped>tbody>tr:nth-of-type(odd)>*{--bs-table-accent-bg: var(--bs-table-striped-bg);color:var(--bs-table-striped-color)}.table-active{--bs-table-accent-bg: var(--bs-table-active-bg);color:var(--bs-table-active-color)}.table-hover>tbody>tr:hover>*{--bs-table-accent-bg: var(--bs-table-hover-bg);color:var(--bs-table-hover-color)}.table-primary{--bs-table-bg: #dae2eb;--bs-table-striped-bg: #cfd7df;--bs-table-striped-color: #000;--bs-table-active-bg: #c4cbd4;--bs-table-active-color: #000;--bs-table-hover-bg: #cad1d9;--bs-table-hover-color: #000;color:#000;border-color:#c4cbd4}.table-secondary{--bs-table-bg: #ebebeb;--bs-table-striped-bg: #dfdfdf;--bs-table-striped-color: #000;--bs-table-active-bg: #d4d4d4;--bs-table-active-color: #000;--bs-table-hover-bg: #d9d9d9;--bs-table-hover-color: #000;color:#000;border-color:#d4d4d4}.table-success{--bs-table-bg: #d8f0d3;--bs-table-striped-bg: #cde4c8;--bs-table-striped-color: #000;--bs-table-active-bg: #c2d8be;--bs-table-active-color: #000;--bs-table-hover-bg: #c8dec3;--bs-table-hover-color: #000;color:#000;border-color:#c2d8be}.table-info{--bs-table-bg: #d6ebfd;--bs-table-striped-bg: #cbdff0;--bs-table-striped-color: #000;--bs-table-active-bg: #c1d4e4;--bs-table-active-color: #000;--bs-table-hover-bg: #c6d9ea;--bs-table-hover-color: #000;color:#000;border-color:#c1d4e4}.table-warning{--bs-table-bg: #f6e3cc;--bs-table-striped-bg: #ead8c2;--bs-table-striped-color: #000;--bs-table-active-bg: #ddccb8;--bs-table-active-color: #000;--bs-table-hover-bg: #e4d2bd;--bs-table-hover-color: #000;color:#000;border-color:#ddccb8}.table-danger{--bs-table-bg: #f5cccc;--bs-table-striped-bg: #e9c2c2;--bs-table-striped-color: #000;--bs-table-active-bg: #ddb8b8;--bs-table-active-color: #000;--bs-table-hover-bg: #e3bdbd;--bs-table-hover-color: #000;color:#000;border-color:#ddb8b8}.table-light{--bs-table-bg: #eee;--bs-table-striped-bg: #e2e2e2;--bs-table-striped-color: #000;--bs-table-active-bg: #d6d6d6;--bs-table-active-color: #000;--bs-table-hover-bg: gainsboro;--bs-table-hover-color: #000;color:#000;border-color:#d6d6d6}.table-dark{--bs-table-bg: #333;--bs-table-striped-bg: #3d3d3d;--bs-table-striped-color: #fff;--bs-table-active-bg: #474747;--bs-table-active-color: #fff;--bs-table-hover-bg: #424242;--bs-table-hover-color: #fff;color:#fff;border-color:#474747}.table-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch}@media(max-width: 575.98px){.table-responsive-sm{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media(max-width: 767.98px){.table-responsive-md{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media(max-width: 991.98px){.table-responsive-lg{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media(max-width: 1199.98px){.table-responsive-xl{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media(max-width: 1399.98px){.table-responsive-xxl{overflow-x:auto;-webkit-overflow-scrolling:touch}}.form-label,.shiny-input-container .control-label{margin-bottom:.5rem}.col-form-label{padding-top:calc(0.375rem + 1px);padding-bottom:calc(0.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(0.5rem + 1px);padding-bottom:calc(0.5rem + 1px);font-size:1.25rem}.col-form-label-sm{padding-top:calc(0.25rem + 1px);padding-bottom:calc(0.25rem + 1px);font-size:0.875rem}.form-text{margin-top:.25rem;font-size:0.875em;color:#777}.form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#777;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-control{transition:none}}.form-control[type=file]{overflow:hidden}.form-control[type=file]:not(:disabled):not([readonly]){cursor:pointer}.form-control:focus{color:#777;background-color:#fff;border-color:#a2b7cd;outline:0;box-shadow:0 0 0 .25rem rgba(68,110,155,.25)}.form-control::-webkit-date-and-time-value{height:1.5em}.form-control::placeholder{color:#777;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#eee;opacity:1}.form-control::file-selector-button{padding:.375rem .75rem;margin:-0.375rem -0.75rem;margin-inline-end:.75rem;color:#777;background-color:#eee;pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:1px;border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-control::file-selector-button{transition:none}}.form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:#e2e2e2}.form-control::-webkit-file-upload-button{padding:.375rem .75rem;margin:-0.375rem -0.75rem;margin-inline-end:.75rem;color:#777;background-color:#eee;pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:1px;border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-control::-webkit-file-upload-button{transition:none}}.form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button{background-color:#e2e2e2}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;line-height:1.5;color:#777;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-sm,.form-control-plaintext.form-control-lg{padding-right:0;padding-left:0}.form-control-sm{min-height:calc(1.5em + 0.5rem + 2px);padding:.25rem .5rem;font-size:0.875rem;border-radius:.2rem}.form-control-sm::file-selector-button{padding:.25rem .5rem;margin:-0.25rem -0.5rem;margin-inline-end:.5rem}.form-control-sm::-webkit-file-upload-button{padding:.25rem .5rem;margin:-0.25rem -0.5rem;margin-inline-end:.5rem}.form-control-lg{min-height:calc(1.5em + 1rem + 2px);padding:.5rem 1rem;font-size:1.25rem;border-radius:.3rem}.form-control-lg::file-selector-button{padding:.5rem 1rem;margin:-0.5rem -1rem;margin-inline-end:1rem}.form-control-lg::-webkit-file-upload-button{padding:.5rem 1rem;margin:-0.5rem -1rem;margin-inline-end:1rem}textarea.form-control{min-height:calc(1.5em + 0.75rem + 2px)}textarea.form-control-sm{min-height:calc(1.5em + 0.5rem + 2px)}textarea.form-control-lg{min-height:calc(1.5em + 1rem + 2px)}.form-control-color{width:3rem;height:auto;padding:.375rem}.form-control-color:not(:disabled):not([readonly]){cursor:pointer}.form-control-color::-moz-color-swatch{height:1.5em;border-radius:.25rem}.form-control-color::-webkit-color-swatch{height:1.5em;border-radius:.25rem}.form-select{display:block;width:100%;padding:.375rem 2.25rem .375rem .75rem;-moz-padding-start:calc(0.75rem - 3px);font-size:1rem;font-weight:400;line-height:1.5;color:#777;background-color:#fff;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23333' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right .75rem center;background-size:16px 12px;border:1px solid #ced4da;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none}@media(prefers-reduced-motion: reduce){.form-select{transition:none}}.form-select:focus{border-color:#a2b7cd;outline:0;box-shadow:0 0 0 .25rem rgba(68,110,155,.25)}.form-select[multiple],.form-select[size]:not([size="1"]){padding-right:.75rem;background-image:none}.form-select:disabled{background-color:#eee}.form-select:-moz-focusring{color:transparent;text-shadow:0 0 0 #777}.form-select-sm{padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:0.875rem;border-radius:.2rem}.form-select-lg{padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem;border-radius:.3rem}.form-check,.shiny-input-container .checkbox,.shiny-input-container .radio{display:block;min-height:1.5rem;padding-left:0;margin-bottom:.125rem}.form-check .form-check-input,.form-check .shiny-input-container .checkbox input,.form-check .shiny-input-container .radio input,.shiny-input-container .checkbox .form-check-input,.shiny-input-container .checkbox .shiny-input-container .checkbox input,.shiny-input-container .checkbox .shiny-input-container .radio input,.shiny-input-container .radio .form-check-input,.shiny-input-container .radio .shiny-input-container .checkbox input,.shiny-input-container .radio .shiny-input-container .radio input{float:left;margin-left:0}.form-check-input,.shiny-input-container .checkbox input,.shiny-input-container .checkbox-inline input,.shiny-input-container .radio input,.shiny-input-container .radio-inline input{width:1em;height:1em;margin-top:.25em;vertical-align:top;background-color:#fff;background-repeat:no-repeat;background-position:center;background-size:contain;border:1px solid rgba(0,0,0,.25);appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none;color-adjust:exact;-webkit-print-color-adjust:exact}.form-check-input[type=checkbox],.shiny-input-container .checkbox input[type=checkbox],.shiny-input-container .checkbox-inline input[type=checkbox],.shiny-input-container .radio input[type=checkbox],.shiny-input-container .radio-inline input[type=checkbox]{border-radius:.25em}.form-check-input[type=radio],.shiny-input-container .checkbox input[type=radio],.shiny-input-container .checkbox-inline input[type=radio],.shiny-input-container .radio input[type=radio],.shiny-input-container .radio-inline input[type=radio]{border-radius:50%}.form-check-input:active,.shiny-input-container .checkbox input:active,.shiny-input-container .checkbox-inline input:active,.shiny-input-container .radio input:active,.shiny-input-container .radio-inline input:active{filter:brightness(90%)}.form-check-input:focus,.shiny-input-container .checkbox input:focus,.shiny-input-container .checkbox-inline input:focus,.shiny-input-container .radio input:focus,.shiny-input-container .radio-inline input:focus{border-color:#a2b7cd;outline:0;box-shadow:0 0 0 .25rem rgba(68,110,155,.25)}.form-check-input:checked,.shiny-input-container .checkbox input:checked,.shiny-input-container .checkbox-inline input:checked,.shiny-input-container .radio input:checked,.shiny-input-container .radio-inline input:checked{background-color:#446e9b;border-color:#446e9b}.form-check-input:checked[type=checkbox],.shiny-input-container .checkbox input:checked[type=checkbox],.shiny-input-container .checkbox-inline input:checked[type=checkbox],.shiny-input-container .radio input:checked[type=checkbox],.shiny-input-container .radio-inline input:checked[type=checkbox]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10l3 3l6-6'/%3e%3c/svg%3e")}.form-check-input:checked[type=radio],.shiny-input-container .checkbox input:checked[type=radio],.shiny-input-container .checkbox-inline input:checked[type=radio],.shiny-input-container .radio input:checked[type=radio],.shiny-input-container .radio-inline input:checked[type=radio]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e")}.form-check-input[type=checkbox]:indeterminate,.shiny-input-container .checkbox input[type=checkbox]:indeterminate,.shiny-input-container .checkbox-inline input[type=checkbox]:indeterminate,.shiny-input-container .radio input[type=checkbox]:indeterminate,.shiny-input-container .radio-inline input[type=checkbox]:indeterminate{background-color:#446e9b;border-color:#446e9b;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e")}.form-check-input:disabled,.shiny-input-container .checkbox input:disabled,.shiny-input-container .checkbox-inline input:disabled,.shiny-input-container .radio input:disabled,.shiny-input-container .radio-inline input:disabled{pointer-events:none;filter:none;opacity:.5}.form-check-input[disabled]~.form-check-label,.form-check-input[disabled]~span,.form-check-input:disabled~.form-check-label,.form-check-input:disabled~span,.shiny-input-container .checkbox input[disabled]~.form-check-label,.shiny-input-container .checkbox input[disabled]~span,.shiny-input-container .checkbox input:disabled~.form-check-label,.shiny-input-container .checkbox input:disabled~span,.shiny-input-container .checkbox-inline input[disabled]~.form-check-label,.shiny-input-container .checkbox-inline input[disabled]~span,.shiny-input-container .checkbox-inline input:disabled~.form-check-label,.shiny-input-container .checkbox-inline input:disabled~span,.shiny-input-container .radio input[disabled]~.form-check-label,.shiny-input-container .radio input[disabled]~span,.shiny-input-container .radio input:disabled~.form-check-label,.shiny-input-container .radio input:disabled~span,.shiny-input-container .radio-inline input[disabled]~.form-check-label,.shiny-input-container .radio-inline input[disabled]~span,.shiny-input-container .radio-inline input:disabled~.form-check-label,.shiny-input-container .radio-inline input:disabled~span{opacity:.5}.form-check-label,.shiny-input-container .checkbox label,.shiny-input-container .checkbox-inline label,.shiny-input-container .radio label,.shiny-input-container .radio-inline label{cursor:pointer}.form-switch{padding-left:2.5em}.form-switch .form-check-input{width:2em;margin-left:-2.5em;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e");background-position:left center;border-radius:2em;transition:background-position .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-switch .form-check-input{transition:none}}.form-switch .form-check-input:focus{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23a2b7cd'/%3e%3c/svg%3e")}.form-switch .form-check-input:checked{background-position:right center;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.form-check-inline,.shiny-input-container .checkbox-inline,.shiny-input-container .radio-inline{display:inline-block;margin-right:1rem}.btn-check{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.btn-check[disabled]+.btn,.btn-check:disabled+.btn{pointer-events:none;filter:none;opacity:.65}.form-range{width:100%;height:1.5rem;padding:0;background-color:transparent;appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none}.form-range:focus{outline:0}.form-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem rgba(68,110,155,.25)}.form-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem rgba(68,110,155,.25)}.form-range::-moz-focus-outer{border:0}.form-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-0.25rem;background-color:#446e9b;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none}@media(prefers-reduced-motion: reduce){.form-range::-webkit-slider-thumb{transition:none}}.form-range::-webkit-slider-thumb:active{background-color:#c7d4e1}.form-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.form-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#446e9b;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none}@media(prefers-reduced-motion: reduce){.form-range::-moz-range-thumb{transition:none}}.form-range::-moz-range-thumb:active{background-color:#c7d4e1}.form-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.form-range:disabled{pointer-events:none}.form-range:disabled::-webkit-slider-thumb{background-color:#999}.form-range:disabled::-moz-range-thumb{background-color:#999}.form-floating{position:relative}.form-floating>.form-control,.form-floating>.form-select{height:calc(3.5rem + 2px);line-height:1.25}.form-floating>label{position:absolute;top:0;left:0;height:100%;padding:1rem .75rem;pointer-events:none;border:1px solid transparent;transform-origin:0 0;transition:opacity .1s ease-in-out,transform .1s ease-in-out}@media(prefers-reduced-motion: reduce){.form-floating>label{transition:none}}.form-floating>.form-control{padding:1rem .75rem}.form-floating>.form-control::placeholder{color:transparent}.form-floating>.form-control:focus,.form-floating>.form-control:not(:placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:-webkit-autofill{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-select{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:focus~label,.form-floating>.form-control:not(:placeholder-shown)~label,.form-floating>.form-select~label{opacity:.65;transform:scale(0.85) translateY(-0.5rem) translateX(0.15rem)}.form-floating>.form-control:-webkit-autofill~label{opacity:.65;transform:scale(0.85) translateY(-0.5rem) translateX(0.15rem)}.input-group{position:relative;display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;align-items:stretch;-webkit-align-items:stretch;width:100%}.input-group>.form-control,.input-group>.form-select{position:relative;flex:1 1 auto;-webkit-flex:1 1 auto;width:1%;min-width:0}.input-group>.form-control:focus,.input-group>.form-select:focus{z-index:3}.input-group .btn{position:relative;z-index:2}.input-group .btn:focus{z-index:3}.input-group-text{display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#777;text-align:center;white-space:nowrap;background-color:#eee;border:1px solid #ced4da;border-radius:.25rem}.input-group-lg>.form-control,.input-group-lg>.form-select,.input-group-lg>.input-group-text,.input-group-lg>.btn{padding:.5rem 1rem;font-size:1.25rem;border-radius:.3rem}.input-group-sm>.form-control,.input-group-sm>.form-select,.input-group-sm>.input-group-text,.input-group-sm>.btn{padding:.25rem .5rem;font-size:0.875rem;border-radius:.2rem}.input-group-lg>.form-select,.input-group-sm>.form-select{padding-right:3rem}.input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu),.input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3){border-top-right-radius:0;border-bottom-right-radius:0}.input-group.has-validation>:nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu),.input-group.has-validation>.dropdown-toggle:nth-last-child(n+4){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback){margin-left:-1px;border-top-left-radius:0;border-bottom-left-radius:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:0.875em;color:#3cb521}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:0.875rem;color:#fff;background-color:rgba(60,181,33,.9);border-radius:.25rem}.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip,.is-valid~.valid-feedback,.is-valid~.valid-tooltip{display:block}.was-validated .form-control:valid,.form-control.is-valid{border-color:#3cb521;padding-right:calc(1.5em + 0.75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%233cb521' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(0.375em + 0.1875rem) center;background-size:calc(0.75em + 0.375rem) calc(0.75em + 0.375rem)}.was-validated .form-control:valid:focus,.form-control.is-valid:focus{border-color:#3cb521;box-shadow:0 0 0 .25rem rgba(60,181,33,.25)}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + 0.75rem);background-position:top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem)}.was-validated .form-select:valid,.form-select.is-valid{border-color:#3cb521}.was-validated .form-select:valid:not([multiple]):not([size]),.was-validated .form-select:valid:not([multiple])[size="1"],.form-select.is-valid:not([multiple]):not([size]),.form-select.is-valid:not([multiple])[size="1"]{padding-right:4.125rem;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23333' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e"),url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%233cb521' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(0.75em + 0.375rem) calc(0.75em + 0.375rem)}.was-validated .form-select:valid:focus,.form-select.is-valid:focus{border-color:#3cb521;box-shadow:0 0 0 .25rem rgba(60,181,33,.25)}.was-validated .form-check-input:valid,.form-check-input.is-valid{border-color:#3cb521}.was-validated .form-check-input:valid:checked,.form-check-input.is-valid:checked{background-color:#3cb521}.was-validated .form-check-input:valid:focus,.form-check-input.is-valid:focus{box-shadow:0 0 0 .25rem rgba(60,181,33,.25)}.was-validated .form-check-input:valid~.form-check-label,.form-check-input.is-valid~.form-check-label{color:#3cb521}.form-check-inline .form-check-input~.valid-feedback{margin-left:.5em}.was-validated .input-group .form-control:valid,.input-group .form-control.is-valid,.was-validated .input-group .form-select:valid,.input-group .form-select.is-valid{z-index:1}.was-validated .input-group .form-control:valid:focus,.input-group .form-control.is-valid:focus,.was-validated .input-group .form-select:valid:focus,.input-group .form-select.is-valid:focus{z-index:3}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:0.875em;color:#cd0200}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:0.875rem;color:#fff;background-color:rgba(205,2,0,.9);border-radius:.25rem}.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip,.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip{display:block}.was-validated .form-control:invalid,.form-control.is-invalid{border-color:#cd0200;padding-right:calc(1.5em + 0.75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23cd0200'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23cd0200' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(0.375em + 0.1875rem) center;background-size:calc(0.75em + 0.375rem) calc(0.75em + 0.375rem)}.was-validated .form-control:invalid:focus,.form-control.is-invalid:focus{border-color:#cd0200;box-shadow:0 0 0 .25rem rgba(205,2,0,.25)}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + 0.75rem);background-position:top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem)}.was-validated .form-select:invalid,.form-select.is-invalid{border-color:#cd0200}.was-validated .form-select:invalid:not([multiple]):not([size]),.was-validated .form-select:invalid:not([multiple])[size="1"],.form-select.is-invalid:not([multiple]):not([size]),.form-select.is-invalid:not([multiple])[size="1"]{padding-right:4.125rem;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23333' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e"),url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23cd0200'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23cd0200' stroke='none'/%3e%3c/svg%3e");background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(0.75em + 0.375rem) calc(0.75em + 0.375rem)}.was-validated .form-select:invalid:focus,.form-select.is-invalid:focus{border-color:#cd0200;box-shadow:0 0 0 .25rem rgba(205,2,0,.25)}.was-validated .form-check-input:invalid,.form-check-input.is-invalid{border-color:#cd0200}.was-validated .form-check-input:invalid:checked,.form-check-input.is-invalid:checked{background-color:#cd0200}.was-validated .form-check-input:invalid:focus,.form-check-input.is-invalid:focus{box-shadow:0 0 0 .25rem rgba(205,2,0,.25)}.was-validated .form-check-input:invalid~.form-check-label,.form-check-input.is-invalid~.form-check-label{color:#cd0200}.form-check-inline .form-check-input~.invalid-feedback{margin-left:.5em}.was-validated .input-group .form-control:invalid,.input-group .form-control.is-invalid,.was-validated .input-group .form-select:invalid,.input-group .form-select.is-invalid{z-index:2}.was-validated .input-group .form-control:invalid:focus,.input-group .form-control.is-invalid:focus,.was-validated .input-group .form-select:invalid:focus,.input-group .form-select.is-invalid:focus{z-index:3}.btn{display:inline-block;font-weight:400;line-height:1.5;color:#777;text-align:center;text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;vertical-align:middle;cursor:pointer;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;background-color:transparent;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.btn{transition:none}}.btn:hover{color:#777}.btn-check:focus+.btn,.btn:focus{outline:0;box-shadow:0 0 0 .25rem rgba(68,110,155,.25)}.btn:disabled,.btn.disabled,fieldset:disabled .btn{pointer-events:none;opacity:.65}.btn-default{color:#fff;background-color:#999;border-color:#999}.btn-default:hover{color:#fff;background-color:#828282;border-color:#7a7a7a}.btn-check:focus+.btn-default,.btn-default:focus{color:#fff;background-color:#828282;border-color:#7a7a7a;box-shadow:0 0 0 .25rem rgba(168,168,168,.5)}.btn-check:checked+.btn-default,.btn-check:active+.btn-default,.btn-default:active,.btn-default.active,.show>.btn-default.dropdown-toggle{color:#fff;background-color:#7a7a7a;border-color:#737373}.btn-check:checked+.btn-default:focus,.btn-check:active+.btn-default:focus,.btn-default:active:focus,.btn-default.active:focus,.show>.btn-default.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(168,168,168,.5)}.btn-default:disabled,.btn-default.disabled{color:#fff;background-color:#999;border-color:#999}.btn-primary{color:#fff;background-color:#446e9b;border-color:#446e9b}.btn-primary:hover{color:#fff;background-color:#3a5e84;border-color:#36587c}.btn-check:focus+.btn-primary,.btn-primary:focus{color:#fff;background-color:#3a5e84;border-color:#36587c;box-shadow:0 0 0 .25rem rgba(96,132,170,.5)}.btn-check:checked+.btn-primary,.btn-check:active+.btn-primary,.btn-primary:active,.btn-primary.active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#36587c;border-color:#335374}.btn-check:checked+.btn-primary:focus,.btn-check:active+.btn-primary:focus,.btn-primary:active:focus,.btn-primary.active:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(96,132,170,.5)}.btn-primary:disabled,.btn-primary.disabled{color:#fff;background-color:#446e9b;border-color:#446e9b}.btn-secondary{color:#fff;background-color:#999;border-color:#999}.btn-secondary:hover{color:#fff;background-color:#828282;border-color:#7a7a7a}.btn-check:focus+.btn-secondary,.btn-secondary:focus{color:#fff;background-color:#828282;border-color:#7a7a7a;box-shadow:0 0 0 .25rem rgba(168,168,168,.5)}.btn-check:checked+.btn-secondary,.btn-check:active+.btn-secondary,.btn-secondary:active,.btn-secondary.active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#7a7a7a;border-color:#737373}.btn-check:checked+.btn-secondary:focus,.btn-check:active+.btn-secondary:focus,.btn-secondary:active:focus,.btn-secondary.active:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(168,168,168,.5)}.btn-secondary:disabled,.btn-secondary.disabled{color:#fff;background-color:#999;border-color:#999}.btn-success{color:#fff;background-color:#3cb521;border-color:#3cb521}.btn-success:hover{color:#fff;background-color:#339a1c;border-color:#30911a}.btn-check:focus+.btn-success,.btn-success:focus{color:#fff;background-color:#339a1c;border-color:#30911a;box-shadow:0 0 0 .25rem rgba(89,192,66,.5)}.btn-check:checked+.btn-success,.btn-check:active+.btn-success,.btn-success:active,.btn-success.active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#30911a;border-color:#2d8819}.btn-check:checked+.btn-success:focus,.btn-check:active+.btn-success:focus,.btn-success:active:focus,.btn-success.active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(89,192,66,.5)}.btn-success:disabled,.btn-success.disabled{color:#fff;background-color:#3cb521;border-color:#3cb521}.btn-info{color:#fff;background-color:#3399f3;border-color:#3399f3}.btn-info:hover{color:#fff;background-color:#2b82cf;border-color:#297ac2}.btn-check:focus+.btn-info,.btn-info:focus{color:#fff;background-color:#2b82cf;border-color:#297ac2;box-shadow:0 0 0 .25rem rgba(82,168,245,.5)}.btn-check:checked+.btn-info,.btn-check:active+.btn-info,.btn-info:active,.btn-info.active,.show>.btn-info.dropdown-toggle{color:#fff;background-color:#297ac2;border-color:#2673b6}.btn-check:checked+.btn-info:focus,.btn-check:active+.btn-info:focus,.btn-info:active:focus,.btn-info.active:focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(82,168,245,.5)}.btn-info:disabled,.btn-info.disabled{color:#fff;background-color:#3399f3;border-color:#3399f3}.btn-warning{color:#fff;background-color:#d47500;border-color:#d47500}.btn-warning:hover{color:#fff;background-color:#b46300;border-color:#aa5e00}.btn-check:focus+.btn-warning,.btn-warning:focus{color:#fff;background-color:#b46300;border-color:#aa5e00;box-shadow:0 0 0 .25rem rgba(218,138,38,.5)}.btn-check:checked+.btn-warning,.btn-check:active+.btn-warning,.btn-warning:active,.btn-warning.active,.show>.btn-warning.dropdown-toggle{color:#fff;background-color:#aa5e00;border-color:#9f5800}.btn-check:checked+.btn-warning:focus,.btn-check:active+.btn-warning:focus,.btn-warning:active:focus,.btn-warning.active:focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(218,138,38,.5)}.btn-warning:disabled,.btn-warning.disabled{color:#fff;background-color:#d47500;border-color:#d47500}.btn-danger{color:#fff;background-color:#cd0200;border-color:#cd0200}.btn-danger:hover{color:#fff;background-color:#ae0200;border-color:#a40200}.btn-check:focus+.btn-danger,.btn-danger:focus{color:#fff;background-color:#ae0200;border-color:#a40200;box-shadow:0 0 0 .25rem rgba(213,40,38,.5)}.btn-check:checked+.btn-danger,.btn-check:active+.btn-danger,.btn-danger:active,.btn-danger.active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#a40200;border-color:#9a0200}.btn-check:checked+.btn-danger:focus,.btn-check:active+.btn-danger:focus,.btn-danger:active:focus,.btn-danger.active:focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(213,40,38,.5)}.btn-danger:disabled,.btn-danger.disabled{color:#fff;background-color:#cd0200;border-color:#cd0200}.btn-light{color:#000;background-color:#eee;border-color:#eee}.btn-light:hover{color:#000;background-color:#f1f1f1;border-color:#f0f0f0}.btn-check:focus+.btn-light,.btn-light:focus{color:#000;background-color:#f1f1f1;border-color:#f0f0f0;box-shadow:0 0 0 .25rem rgba(202,202,202,.5)}.btn-check:checked+.btn-light,.btn-check:active+.btn-light,.btn-light:active,.btn-light.active,.show>.btn-light.dropdown-toggle{color:#000;background-color:#f1f1f1;border-color:#f0f0f0}.btn-check:checked+.btn-light:focus,.btn-check:active+.btn-light:focus,.btn-light:active:focus,.btn-light.active:focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(202,202,202,.5)}.btn-light:disabled,.btn-light.disabled{color:#000;background-color:#eee;border-color:#eee}.btn-dark{color:#fff;background-color:#333;border-color:#333}.btn-dark:hover{color:#fff;background-color:#2b2b2b;border-color:#292929}.btn-check:focus+.btn-dark,.btn-dark:focus{color:#fff;background-color:#2b2b2b;border-color:#292929;box-shadow:0 0 0 .25rem rgba(82,82,82,.5)}.btn-check:checked+.btn-dark,.btn-check:active+.btn-dark,.btn-dark:active,.btn-dark.active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#292929;border-color:#262626}.btn-check:checked+.btn-dark:focus,.btn-check:active+.btn-dark:focus,.btn-dark:active:focus,.btn-dark.active:focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(82,82,82,.5)}.btn-dark:disabled,.btn-dark.disabled{color:#fff;background-color:#333;border-color:#333}.btn-outline-default{color:#999;border-color:#999;background-color:transparent}.btn-outline-default:hover{color:#fff;background-color:#999;border-color:#999}.btn-check:focus+.btn-outline-default,.btn-outline-default:focus{box-shadow:0 0 0 .25rem rgba(153,153,153,.5)}.btn-check:checked+.btn-outline-default,.btn-check:active+.btn-outline-default,.btn-outline-default:active,.btn-outline-default.active,.btn-outline-default.dropdown-toggle.show{color:#fff;background-color:#999;border-color:#999}.btn-check:checked+.btn-outline-default:focus,.btn-check:active+.btn-outline-default:focus,.btn-outline-default:active:focus,.btn-outline-default.active:focus,.btn-outline-default.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem rgba(153,153,153,.5)}.btn-outline-default:disabled,.btn-outline-default.disabled{color:#999;background-color:transparent}.btn-outline-primary{color:#446e9b;border-color:#446e9b;background-color:transparent}.btn-outline-primary:hover{color:#fff;background-color:#446e9b;border-color:#446e9b}.btn-check:focus+.btn-outline-primary,.btn-outline-primary:focus{box-shadow:0 0 0 .25rem rgba(68,110,155,.5)}.btn-check:checked+.btn-outline-primary,.btn-check:active+.btn-outline-primary,.btn-outline-primary:active,.btn-outline-primary.active,.btn-outline-primary.dropdown-toggle.show{color:#fff;background-color:#446e9b;border-color:#446e9b}.btn-check:checked+.btn-outline-primary:focus,.btn-check:active+.btn-outline-primary:focus,.btn-outline-primary:active:focus,.btn-outline-primary.active:focus,.btn-outline-primary.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem rgba(68,110,155,.5)}.btn-outline-primary:disabled,.btn-outline-primary.disabled{color:#446e9b;background-color:transparent}.btn-outline-secondary{color:#999;border-color:#999;background-color:transparent}.btn-outline-secondary:hover{color:#fff;background-color:#999;border-color:#999}.btn-check:focus+.btn-outline-secondary,.btn-outline-secondary:focus{box-shadow:0 0 0 .25rem rgba(153,153,153,.5)}.btn-check:checked+.btn-outline-secondary,.btn-check:active+.btn-outline-secondary,.btn-outline-secondary:active,.btn-outline-secondary.active,.btn-outline-secondary.dropdown-toggle.show{color:#fff;background-color:#999;border-color:#999}.btn-check:checked+.btn-outline-secondary:focus,.btn-check:active+.btn-outline-secondary:focus,.btn-outline-secondary:active:focus,.btn-outline-secondary.active:focus,.btn-outline-secondary.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem rgba(153,153,153,.5)}.btn-outline-secondary:disabled,.btn-outline-secondary.disabled{color:#999;background-color:transparent}.btn-outline-success{color:#3cb521;border-color:#3cb521;background-color:transparent}.btn-outline-success:hover{color:#fff;background-color:#3cb521;border-color:#3cb521}.btn-check:focus+.btn-outline-success,.btn-outline-success:focus{box-shadow:0 0 0 .25rem rgba(60,181,33,.5)}.btn-check:checked+.btn-outline-success,.btn-check:active+.btn-outline-success,.btn-outline-success:active,.btn-outline-success.active,.btn-outline-success.dropdown-toggle.show{color:#fff;background-color:#3cb521;border-color:#3cb521}.btn-check:checked+.btn-outline-success:focus,.btn-check:active+.btn-outline-success:focus,.btn-outline-success:active:focus,.btn-outline-success.active:focus,.btn-outline-success.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem rgba(60,181,33,.5)}.btn-outline-success:disabled,.btn-outline-success.disabled{color:#3cb521;background-color:transparent}.btn-outline-info{color:#3399f3;border-color:#3399f3;background-color:transparent}.btn-outline-info:hover{color:#fff;background-color:#3399f3;border-color:#3399f3}.btn-check:focus+.btn-outline-info,.btn-outline-info:focus{box-shadow:0 0 0 .25rem rgba(51,153,243,.5)}.btn-check:checked+.btn-outline-info,.btn-check:active+.btn-outline-info,.btn-outline-info:active,.btn-outline-info.active,.btn-outline-info.dropdown-toggle.show{color:#fff;background-color:#3399f3;border-color:#3399f3}.btn-check:checked+.btn-outline-info:focus,.btn-check:active+.btn-outline-info:focus,.btn-outline-info:active:focus,.btn-outline-info.active:focus,.btn-outline-info.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem rgba(51,153,243,.5)}.btn-outline-info:disabled,.btn-outline-info.disabled{color:#3399f3;background-color:transparent}.btn-outline-warning{color:#d47500;border-color:#d47500;background-color:transparent}.btn-outline-warning:hover{color:#fff;background-color:#d47500;border-color:#d47500}.btn-check:focus+.btn-outline-warning,.btn-outline-warning:focus{box-shadow:0 0 0 .25rem rgba(212,117,0,.5)}.btn-check:checked+.btn-outline-warning,.btn-check:active+.btn-outline-warning,.btn-outline-warning:active,.btn-outline-warning.active,.btn-outline-warning.dropdown-toggle.show{color:#fff;background-color:#d47500;border-color:#d47500}.btn-check:checked+.btn-outline-warning:focus,.btn-check:active+.btn-outline-warning:focus,.btn-outline-warning:active:focus,.btn-outline-warning.active:focus,.btn-outline-warning.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem rgba(212,117,0,.5)}.btn-outline-warning:disabled,.btn-outline-warning.disabled{color:#d47500;background-color:transparent}.btn-outline-danger{color:#cd0200;border-color:#cd0200;background-color:transparent}.btn-outline-danger:hover{color:#fff;background-color:#cd0200;border-color:#cd0200}.btn-check:focus+.btn-outline-danger,.btn-outline-danger:focus{box-shadow:0 0 0 .25rem rgba(205,2,0,.5)}.btn-check:checked+.btn-outline-danger,.btn-check:active+.btn-outline-danger,.btn-outline-danger:active,.btn-outline-danger.active,.btn-outline-danger.dropdown-toggle.show{color:#fff;background-color:#cd0200;border-color:#cd0200}.btn-check:checked+.btn-outline-danger:focus,.btn-check:active+.btn-outline-danger:focus,.btn-outline-danger:active:focus,.btn-outline-danger.active:focus,.btn-outline-danger.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem rgba(205,2,0,.5)}.btn-outline-danger:disabled,.btn-outline-danger.disabled{color:#cd0200;background-color:transparent}.btn-outline-light{color:#eee;border-color:#eee;background-color:transparent}.btn-outline-light:hover{color:#000;background-color:#eee;border-color:#eee}.btn-check:focus+.btn-outline-light,.btn-outline-light:focus{box-shadow:0 0 0 .25rem rgba(238,238,238,.5)}.btn-check:checked+.btn-outline-light,.btn-check:active+.btn-outline-light,.btn-outline-light:active,.btn-outline-light.active,.btn-outline-light.dropdown-toggle.show{color:#000;background-color:#eee;border-color:#eee}.btn-check:checked+.btn-outline-light:focus,.btn-check:active+.btn-outline-light:focus,.btn-outline-light:active:focus,.btn-outline-light.active:focus,.btn-outline-light.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem rgba(238,238,238,.5)}.btn-outline-light:disabled,.btn-outline-light.disabled{color:#eee;background-color:transparent}.btn-outline-dark{color:#333;border-color:#333;background-color:transparent}.btn-outline-dark:hover{color:#fff;background-color:#333;border-color:#333}.btn-check:focus+.btn-outline-dark,.btn-outline-dark:focus{box-shadow:0 0 0 .25rem rgba(51,51,51,.5)}.btn-check:checked+.btn-outline-dark,.btn-check:active+.btn-outline-dark,.btn-outline-dark:active,.btn-outline-dark.active,.btn-outline-dark.dropdown-toggle.show{color:#fff;background-color:#333;border-color:#333}.btn-check:checked+.btn-outline-dark:focus,.btn-check:active+.btn-outline-dark:focus,.btn-outline-dark:active:focus,.btn-outline-dark.active:focus,.btn-outline-dark.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem rgba(51,51,51,.5)}.btn-outline-dark:disabled,.btn-outline-dark.disabled{color:#333;background-color:transparent}.btn-link{font-weight:400;color:#3399f3;text-decoration:underline;-webkit-text-decoration:underline;-moz-text-decoration:underline;-ms-text-decoration:underline;-o-text-decoration:underline}.btn-link:hover{color:#297ac2}.btn-link:disabled,.btn-link.disabled{color:#777}.btn-lg,.btn-group-lg>.btn{padding:.5rem 1rem;font-size:1.25rem;border-radius:.3rem}.btn-sm,.btn-group-sm>.btn{padding:.25rem .5rem;font-size:0.875rem;border-radius:.2rem}.fade{transition:opacity .15s linear}@media(prefers-reduced-motion: reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{height:0;overflow:hidden;transition:height .2s ease}@media(prefers-reduced-motion: reduce){.collapsing{transition:none}}.collapsing.collapse-horizontal{width:0;height:auto;transition:width .35s ease}@media(prefers-reduced-motion: reduce){.collapsing.collapse-horizontal{transition:none}}.dropup,.dropend,.dropdown,.dropstart{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{position:absolute;z-index:1000;display:none;min-width:10rem;padding:.5rem 0;margin:0;font-size:1rem;color:#777;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.dropdown-menu[data-bs-popper]{top:100%;left:0;margin-top:.125rem}.dropdown-menu-start{--bs-position: start}.dropdown-menu-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-end{--bs-position: end}.dropdown-menu-end[data-bs-popper]{right:0;left:auto}@media(min-width: 576px){.dropdown-menu-sm-start{--bs-position: start}.dropdown-menu-sm-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-sm-end{--bs-position: end}.dropdown-menu-sm-end[data-bs-popper]{right:0;left:auto}}@media(min-width: 768px){.dropdown-menu-md-start{--bs-position: start}.dropdown-menu-md-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-md-end{--bs-position: end}.dropdown-menu-md-end[data-bs-popper]{right:0;left:auto}}@media(min-width: 992px){.dropdown-menu-lg-start{--bs-position: start}.dropdown-menu-lg-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-lg-end{--bs-position: end}.dropdown-menu-lg-end[data-bs-popper]{right:0;left:auto}}@media(min-width: 1200px){.dropdown-menu-xl-start{--bs-position: start}.dropdown-menu-xl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xl-end{--bs-position: end}.dropdown-menu-xl-end[data-bs-popper]{right:0;left:auto}}@media(min-width: 1400px){.dropdown-menu-xxl-start{--bs-position: start}.dropdown-menu-xxl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xxl-end{--bs-position: end}.dropdown-menu-xxl-end[data-bs-popper]{right:0;left:auto}}.dropup .dropdown-menu[data-bs-popper]{top:auto;bottom:100%;margin-top:0;margin-bottom:.125rem}.dropup .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-menu[data-bs-popper]{top:0;right:auto;left:100%;margin-top:0;margin-left:.125rem}.dropend .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}.dropend .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-toggle::after{vertical-align:0}.dropstart .dropdown-menu[data-bs-popper]{top:0;right:100%;left:auto;margin-top:0;margin-right:.125rem}.dropstart .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}.dropstart .dropdown-toggle::after{display:none}.dropstart .dropdown-toggle::before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropstart .dropdown-toggle:empty::after{margin-left:0}.dropstart .dropdown-toggle::before{vertical-align:0}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid rgba(0,0,0,.15)}.dropdown-item{display:block;width:100%;padding:.25rem 1rem;clear:both;font-weight:400;color:#2d2d2d;text-align:inherit;text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:hover,.dropdown-item:focus{color:#292929;background-color:#eee}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#446e9b}.dropdown-item.disabled,.dropdown-item:disabled{color:#999;pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1rem;margin-bottom:0;font-size:0.875rem;color:#777;white-space:nowrap}.dropdown-item-text{display:block;padding:.25rem 1rem;color:#2d2d2d}.dropdown-menu-dark{color:#dee2e6;background-color:#333;border-color:rgba(0,0,0,.15)}.dropdown-menu-dark .dropdown-item{color:#dee2e6}.dropdown-menu-dark .dropdown-item:hover,.dropdown-menu-dark .dropdown-item:focus{color:#fff;background-color:rgba(255,255,255,.15)}.dropdown-menu-dark .dropdown-item.active,.dropdown-menu-dark .dropdown-item:active{color:#fff;background-color:#446e9b}.dropdown-menu-dark .dropdown-item.disabled,.dropdown-menu-dark .dropdown-item:disabled{color:#999}.dropdown-menu-dark .dropdown-divider{border-color:rgba(0,0,0,.15)}.dropdown-menu-dark .dropdown-item-text{color:#dee2e6}.dropdown-menu-dark .dropdown-header{color:#999}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;flex:1 1 auto;-webkit-flex:1 1 auto}.btn-group>.btn-check:checked+.btn,.btn-group>.btn-check:focus+.btn,.btn-group>.btn:hover,.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn-check:checked+.btn,.btn-group-vertical>.btn-check:focus+.btn,.btn-group-vertical>.btn:hover,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn.active{z-index:1}.btn-toolbar{display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;justify-content:flex-start;-webkit-justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn:not(:first-child),.btn-group>.btn-group:not(:first-child){margin-left:-1px}.btn-group>.btn:not(:last-child):not(.dropdown-toggle),.btn-group>.btn-group:not(:last-child)>.btn{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:nth-child(n+3),.btn-group>:not(.btn-check)+.btn,.btn-group>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after,.dropup .dropdown-toggle-split::after,.dropend .dropdown-toggle-split::after{margin-left:0}.dropstart .dropdown-toggle-split::before{margin-right:0}.btn-sm+.dropdown-toggle-split,.btn-group-sm>.btn+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-lg+.dropdown-toggle-split,.btn-group-lg>.btn+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{flex-direction:column;-webkit-flex-direction:column;align-items:flex-start;-webkit-align-items:flex-start;justify-content:center;-webkit-justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn:not(:first-child),.btn-group-vertical>.btn-group:not(:first-child){margin-top:-1px}.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle),.btn-group-vertical>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn~.btn,.btn-group-vertical>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-top-right-radius:0}.nav{display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5rem 1rem;color:#3399f3;text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out}@media(prefers-reduced-motion: reduce){.nav-link{transition:none}}.nav-link:hover,.nav-link:focus{color:#297ac2}.nav-link.disabled{color:#777;pointer-events:none;cursor:default}.nav-tabs{border-bottom:1px solid #dee2e6}.nav-tabs .nav-link{margin-bottom:-1px;background:none;border:1px solid transparent;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.nav-tabs .nav-link:hover,.nav-tabs .nav-link:focus{border-color:#eee #eee #dee2e6;isolation:isolate}.nav-tabs .nav-link.disabled{color:#777;background-color:transparent;border-color:transparent}.nav-tabs .nav-link.active,.nav-tabs .nav-item.show .nav-link{color:#495057;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{background:none;border:0;border-radius:.25rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#446e9b}.nav-fill>.nav-link,.nav-fill .nav-item{flex:1 1 auto;-webkit-flex:1 1 auto;text-align:center}.nav-justified>.nav-link,.nav-justified .nav-item{flex-basis:0;-webkit-flex-basis:0;flex-grow:1;-webkit-flex-grow:1;text-align:center}.nav-fill .nav-item .nav-link,.nav-justified .nav-item .nav-link{width:100%}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;align-items:center;-webkit-align-items:center;justify-content:space-between;-webkit-justify-content:space-between;padding-top:.5rem;padding-bottom:.5rem}.navbar>.container-xxl,.navbar>.container-xl,.navbar>.container-lg,.navbar>.container-md,.navbar>.container-sm,.navbar>.container,.navbar>.container-fluid{display:flex;display:-webkit-flex;flex-wrap:inherit;-webkit-flex-wrap:inherit;align-items:center;-webkit-align-items:center;justify-content:space-between;-webkit-justify-content:space-between}.navbar-brand{padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;white-space:nowrap}.navbar-nav{display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static}.navbar-text{padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{flex-basis:100%;-webkit-flex-basis:100%;flex-grow:1;-webkit-flex-grow:1;align-items:center;-webkit-align-items:center}.navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.25rem;transition:box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.navbar-toggler{transition:none}}.navbar-toggler:hover{text-decoration:none}.navbar-toggler:focus{text-decoration:none;outline:0;box-shadow:0 0 0 .25rem}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;background-repeat:no-repeat;background-position:center;background-size:100%}.navbar-nav-scroll{max-height:var(--bs-scroll-height, 75vh);overflow-y:auto}@media(min-width: 576px){.navbar-expand-sm{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}.navbar-expand-sm .offcanvas-header{display:none}.navbar-expand-sm .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;-webkit-flex-grow:1;visibility:visible !important;background-color:transparent;border-right:0;border-left:0;transition:none;transform:none}.navbar-expand-sm .offcanvas-top,.navbar-expand-sm .offcanvas-bottom{height:auto;border-top:0;border-bottom:0}.navbar-expand-sm .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible}}@media(min-width: 768px){.navbar-expand-md{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}.navbar-expand-md .offcanvas-header{display:none}.navbar-expand-md .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;-webkit-flex-grow:1;visibility:visible !important;background-color:transparent;border-right:0;border-left:0;transition:none;transform:none}.navbar-expand-md .offcanvas-top,.navbar-expand-md .offcanvas-bottom{height:auto;border-top:0;border-bottom:0}.navbar-expand-md .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible}}@media(min-width: 992px){.navbar-expand-lg{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}.navbar-expand-lg .offcanvas-header{display:none}.navbar-expand-lg .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;-webkit-flex-grow:1;visibility:visible !important;background-color:transparent;border-right:0;border-left:0;transition:none;transform:none}.navbar-expand-lg .offcanvas-top,.navbar-expand-lg .offcanvas-bottom{height:auto;border-top:0;border-bottom:0}.navbar-expand-lg .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible}}@media(min-width: 1200px){.navbar-expand-xl{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}.navbar-expand-xl .offcanvas-header{display:none}.navbar-expand-xl .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;-webkit-flex-grow:1;visibility:visible !important;background-color:transparent;border-right:0;border-left:0;transition:none;transform:none}.navbar-expand-xl .offcanvas-top,.navbar-expand-xl .offcanvas-bottom{height:auto;border-top:0;border-bottom:0}.navbar-expand-xl .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible}}@media(min-width: 1400px){.navbar-expand-xxl{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand-xxl .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand-xxl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xxl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xxl .navbar-nav-scroll{overflow:visible}.navbar-expand-xxl .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand-xxl .navbar-toggler{display:none}.navbar-expand-xxl .offcanvas-header{display:none}.navbar-expand-xxl .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;-webkit-flex-grow:1;visibility:visible !important;background-color:transparent;border-right:0;border-left:0;transition:none;transform:none}.navbar-expand-xxl .offcanvas-top,.navbar-expand-xxl .offcanvas-bottom{height:auto;border-top:0;border-bottom:0}.navbar-expand-xxl .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible}}.navbar-expand{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-expand .offcanvas-header{display:none}.navbar-expand .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;-webkit-flex-grow:1;visibility:visible !important;background-color:transparent;border-right:0;border-left:0;transition:none;transform:none}.navbar-expand .offcanvas-top,.navbar-expand .offcanvas-bottom{height:auto;border-top:0;border-bottom:0}.navbar-expand .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible}.navbar-light{background-color:#eee}.navbar-light .navbar-brand{color:#4f4f4f}.navbar-light .navbar-brand:hover,.navbar-light .navbar-brand:focus{color:#3399f3}.navbar-light .navbar-nav .nav-link{color:#4f4f4f}.navbar-light .navbar-nav .nav-link:hover,.navbar-light .navbar-nav .nav-link:focus{color:rgba(51,153,243,.8)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(79,79,79,.75)}.navbar-light .navbar-nav .show>.nav-link,.navbar-light .navbar-nav .nav-link.active{color:#3399f3}.navbar-light .navbar-toggler{color:#4f4f4f;border-color:rgba(79,79,79,.4)}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='%234f4f4f' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-light .navbar-text{color:#4f4f4f}.navbar-light .navbar-text a,.navbar-light .navbar-text a:hover,.navbar-light .navbar-text a:focus{color:#3399f3}.navbar-dark{background-color:#eee}.navbar-dark .navbar-brand{color:#4f4f4f}.navbar-dark .navbar-brand:hover,.navbar-dark .navbar-brand:focus{color:#3399f3}.navbar-dark .navbar-nav .nav-link{color:#4f4f4f}.navbar-dark .navbar-nav .nav-link:hover,.navbar-dark .navbar-nav .nav-link:focus{color:rgba(51,153,243,.8)}.navbar-dark .navbar-nav .nav-link.disabled{color:rgba(79,79,79,.75)}.navbar-dark .navbar-nav .show>.nav-link,.navbar-dark .navbar-nav .active>.nav-link,.navbar-dark .navbar-nav .nav-link.active{color:#3399f3}.navbar-dark .navbar-toggler{color:#4f4f4f;border-color:rgba(79,79,79,.4)}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='%234f4f4f' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-dark .navbar-text{color:#4f4f4f}.navbar-dark .navbar-text a,.navbar-dark .navbar-text a:hover,.navbar-dark .navbar-text a:focus{color:#3399f3}.card{position:relative;display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,.125);border-radius:.25rem}.card>hr{margin-right:0;margin-left:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-width:0;border-top-left-radius:calc(0.25rem - 1px);border-top-right-radius:calc(0.25rem - 1px)}.card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:calc(0.25rem - 1px);border-bottom-left-radius:calc(0.25rem - 1px)}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{flex:1 1 auto;-webkit-flex:1 1 auto;padding:1rem 1rem}.card-title{margin-bottom:.5rem}.card-subtitle{margin-top:-0.25rem;margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link+.card-link{margin-left:1rem}.card-header{padding:.5rem 1rem;margin-bottom:0;background-color:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.125)}.card-header:first-child{border-radius:calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0}.card-footer{padding:.5rem 1rem;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.125)}.card-footer:last-child{border-radius:0 0 calc(0.25rem - 1px) calc(0.25rem - 1px)}.card-header-tabs{margin-right:-0.5rem;margin-bottom:-0.5rem;margin-left:-0.5rem;border-bottom:0}.card-header-pills{margin-right:-0.5rem;margin-left:-0.5rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1rem;border-radius:calc(0.25rem - 1px)}.card-img,.card-img-top,.card-img-bottom{width:100%}.card-img,.card-img-top{border-top-left-radius:calc(0.25rem - 1px);border-top-right-radius:calc(0.25rem - 1px)}.card-img,.card-img-bottom{border-bottom-right-radius:calc(0.25rem - 1px);border-bottom-left-radius:calc(0.25rem - 1px)}.card-group>.card{margin-bottom:.75rem}@media(min-width: 576px){.card-group{display:flex;display:-webkit-flex;flex-flow:row wrap;-webkit-flex-flow:row wrap}.card-group>.card{flex:1 0 0%;-webkit-flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-img-top,.card-group>.card:not(:last-child) .card-header{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-img-bottom,.card-group>.card:not(:last-child) .card-footer{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-img-top,.card-group>.card:not(:first-child) .card-header{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-img-bottom,.card-group>.card:not(:first-child) .card-footer{border-bottom-left-radius:0}}.accordion-button{position:relative;display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;width:100%;padding:1rem 1.25rem;font-size:1rem;color:#777;text-align:left;background-color:#fff;border:0;border-radius:0;overflow-anchor:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,border-radius .15s ease}@media(prefers-reduced-motion: reduce){.accordion-button{transition:none}}.accordion-button:not(.collapsed){color:#3d638c;background-color:#ecf1f5;box-shadow:inset 0 -1px 0 rgba(0,0,0,.125)}.accordion-button:not(.collapsed)::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%233d638c'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");transform:rotate(-180deg)}.accordion-button::after{flex-shrink:0;-webkit-flex-shrink:0;width:1.25rem;height:1.25rem;margin-left:auto;content:"";background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23777'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-size:1.25rem;transition:transform .2s ease-in-out}@media(prefers-reduced-motion: reduce){.accordion-button::after{transition:none}}.accordion-button:hover{z-index:2}.accordion-button:focus{z-index:3;border-color:#a2b7cd;outline:0;box-shadow:0 0 0 .25rem rgba(68,110,155,.25)}.accordion-header{margin-bottom:0}.accordion-item{background-color:#fff;border:1px solid rgba(0,0,0,.125)}.accordion-item:first-of-type{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.accordion-item:first-of-type .accordion-button{border-top-left-radius:calc(0.25rem - 1px);border-top-right-radius:calc(0.25rem - 1px)}.accordion-item:not(:first-of-type){border-top:0}.accordion-item:last-of-type{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.accordion-item:last-of-type .accordion-button.collapsed{border-bottom-right-radius:calc(0.25rem - 1px);border-bottom-left-radius:calc(0.25rem - 1px)}.accordion-item:last-of-type .accordion-collapse{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.accordion-body{padding:1rem 1.25rem}.accordion-flush .accordion-collapse{border-width:0}.accordion-flush .accordion-item{border-right:0;border-left:0;border-radius:0}.accordion-flush .accordion-item:first-child{border-top:0}.accordion-flush .accordion-item:last-child{border-bottom:0}.accordion-flush .accordion-item .accordion-button{border-radius:0}.breadcrumb{display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;padding:0 0;margin-bottom:1rem;list-style:none}.breadcrumb-item+.breadcrumb-item{padding-left:.5rem}.breadcrumb-item+.breadcrumb-item::before{float:left;padding-right:.5rem;color:#777;content:var(--bs-breadcrumb-divider, "/") /* rtl: var(--bs-breadcrumb-divider, "/") */}.breadcrumb-item.active{color:#777}.pagination{display:flex;display:-webkit-flex;padding-left:0;list-style:none}.page-link{position:relative;display:block;color:#3399f3;text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;background-color:#fff;border:1px solid #dee2e6;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.page-link{transition:none}}.page-link:hover{z-index:2;color:#297ac2;background-color:#eee;border-color:#dee2e6}.page-link:focus{z-index:3;color:#297ac2;background-color:#eee;outline:0;box-shadow:0 0 0 .25rem rgba(68,110,155,.25)}.page-item:not(:first-child) .page-link{margin-left:-1px}.page-item.active .page-link{z-index:3;color:#fff;background-color:#446e9b;border-color:#446e9b}.page-item.disabled .page-link{color:#777;pointer-events:none;background-color:#fff;border-color:#dee2e6}.page-link{padding:.375rem .75rem}.page-item:first-child .page-link{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.page-item:last-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.pagination-sm .page-link{padding:.25rem .5rem;font-size:0.875rem}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.badge{display:inline-block;padding:.35em .65em;font-size:0.75em;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.alert{position:relative;padding:1rem 1rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:3rem}.alert-dismissible .btn-close{position:absolute;top:0;right:0;z-index:2;padding:1.25rem 1rem}.alert-default{color:#5c5c5c;background-color:#ebebeb;border-color:#e0e0e0}.alert-default .alert-link{color:#4a4a4a}.alert-primary{color:#29425d;background-color:#dae2eb;border-color:#c7d4e1}.alert-primary .alert-link{color:#21354a}.alert-secondary{color:#5c5c5c;background-color:#ebebeb;border-color:#e0e0e0}.alert-secondary .alert-link{color:#4a4a4a}.alert-success{color:#246d14;background-color:#d8f0d3;border-color:#c5e9bc}.alert-success .alert-link{color:#1d5710}.alert-info{color:#1f5c92;background-color:#d6ebfd;border-color:#c2e0fb}.alert-info .alert-link{color:#194a75}.alert-warning{color:#7f4600;background-color:#f6e3cc;border-color:#f2d6b3}.alert-warning .alert-link{color:#663800}.alert-danger{color:#7b0100;background-color:#f5cccc;border-color:#f0b3b3}.alert-danger .alert-link{color:#620100}.alert-light{color:#8f8f8f;background-color:#fcfcfc;border-color:#fafafa}.alert-light .alert-link{color:#727272}.alert-dark{color:#1f1f1f;background-color:#d6d6d6;border-color:#c2c2c2}.alert-dark .alert-link{color:#191919}@keyframes progress-bar-stripes{0%{background-position-x:1rem}}.progress{display:flex;display:-webkit-flex;height:1rem;overflow:hidden;font-size:0.75rem;background-color:#eee;border-radius:.25rem}.progress-bar{display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;justify-content:center;-webkit-justify-content:center;overflow:hidden;color:#fff;text-align:center;white-space:nowrap;background-color:#446e9b;transition:width .6s ease}@media(prefers-reduced-motion: reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-size:1rem 1rem}.progress-bar-animated{animation:1s linear infinite progress-bar-stripes}@media(prefers-reduced-motion: reduce){.progress-bar-animated{animation:none}}.list-group{display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;padding-left:0;margin-bottom:0;border-radius:.25rem}.list-group-numbered{list-style-type:none;counter-reset:section}.list-group-numbered>li::before{content:counters(section, ".") ". ";counter-increment:section}.list-group-item-action{width:100%;color:#495057;text-align:inherit}.list-group-item-action:hover,.list-group-item-action:focus{z-index:1;color:#495057;text-decoration:none;background-color:#f8f9fa}.list-group-item-action:active{color:#777;background-color:#eee}.list-group-item{position:relative;display:block;padding:.5rem 1rem;color:#2d2d2d;text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;background-color:#fff;border:1px solid rgba(0,0,0,.125)}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:#777;pointer-events:none;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#446e9b;border-color:#446e9b}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:-1px;border-top-width:1px}.list-group-horizontal{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}@media(min-width: 576px){.list-group-horizontal-sm{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media(min-width: 768px){.list-group-horizontal-md{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media(min-width: 992px){.list-group-horizontal-lg{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media(min-width: 1200px){.list-group-horizontal-xl{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media(min-width: 1400px){.list-group-horizontal-xxl{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal-xxl>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-xxl>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-xxl>.list-group-item.active{margin-top:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 1px}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-default{color:#5c5c5c;background-color:#ebebeb}.list-group-item-default.list-group-item-action:hover,.list-group-item-default.list-group-item-action:focus{color:#5c5c5c;background-color:#d4d4d4}.list-group-item-default.list-group-item-action.active{color:#fff;background-color:#5c5c5c;border-color:#5c5c5c}.list-group-item-primary{color:#29425d;background-color:#dae2eb}.list-group-item-primary.list-group-item-action:hover,.list-group-item-primary.list-group-item-action:focus{color:#29425d;background-color:#c4cbd4}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#29425d;border-color:#29425d}.list-group-item-secondary{color:#5c5c5c;background-color:#ebebeb}.list-group-item-secondary.list-group-item-action:hover,.list-group-item-secondary.list-group-item-action:focus{color:#5c5c5c;background-color:#d4d4d4}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#5c5c5c;border-color:#5c5c5c}.list-group-item-success{color:#246d14;background-color:#d8f0d3}.list-group-item-success.list-group-item-action:hover,.list-group-item-success.list-group-item-action:focus{color:#246d14;background-color:#c2d8be}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#246d14;border-color:#246d14}.list-group-item-info{color:#1f5c92;background-color:#d6ebfd}.list-group-item-info.list-group-item-action:hover,.list-group-item-info.list-group-item-action:focus{color:#1f5c92;background-color:#c1d4e4}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#1f5c92;border-color:#1f5c92}.list-group-item-warning{color:#7f4600;background-color:#f6e3cc}.list-group-item-warning.list-group-item-action:hover,.list-group-item-warning.list-group-item-action:focus{color:#7f4600;background-color:#ddccb8}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#7f4600;border-color:#7f4600}.list-group-item-danger{color:#7b0100;background-color:#f5cccc}.list-group-item-danger.list-group-item-action:hover,.list-group-item-danger.list-group-item-action:focus{color:#7b0100;background-color:#ddb8b8}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#7b0100;border-color:#7b0100}.list-group-item-light{color:#8f8f8f;background-color:#fcfcfc}.list-group-item-light.list-group-item-action:hover,.list-group-item-light.list-group-item-action:focus{color:#8f8f8f;background-color:#e3e3e3}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#8f8f8f;border-color:#8f8f8f}.list-group-item-dark{color:#1f1f1f;background-color:#d6d6d6}.list-group-item-dark.list-group-item-action:hover,.list-group-item-dark.list-group-item-action:focus{color:#1f1f1f;background-color:#c1c1c1}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#1f1f1f;border-color:#1f1f1f}.btn-close{box-sizing:content-box;width:1em;height:1em;padding:.25em .25em;color:#000;background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat;border:0;border-radius:.25rem;opacity:.5}.btn-close:hover{color:#000;text-decoration:none;opacity:.75}.btn-close:focus{outline:0;box-shadow:0 0 0 .25rem rgba(68,110,155,.25);opacity:1}.btn-close:disabled,.btn-close.disabled{pointer-events:none;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;opacity:.25}.btn-close-white{filter:invert(1) grayscale(100%) brightness(200%)}.toast{width:350px;max-width:100%;font-size:0.875rem;pointer-events:auto;background-color:rgba(255,255,255,.85);background-clip:padding-box;border:1px solid rgba(0,0,0,.1);box-shadow:0 .5rem 1rem rgba(0,0,0,.15);border-radius:.25rem}.toast.showing{opacity:0}.toast:not(.show){display:none}.toast-container{width:max-content;width:-webkit-max-content;width:-moz-max-content;width:-ms-max-content;width:-o-max-content;max-width:100%;pointer-events:none}.toast-container>:not(:last-child){margin-bottom:.75rem}.toast-header{display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;padding:.5rem .75rem;color:#777;background-color:rgba(255,255,255,.85);background-clip:padding-box;border-bottom:1px solid rgba(0,0,0,.05);border-top-left-radius:calc(0.25rem - 1px);border-top-right-radius:calc(0.25rem - 1px)}.toast-header .btn-close{margin-right:-0.375rem;margin-left:.75rem}.toast-body{padding:.75rem;word-wrap:break-word}.modal{position:fixed;top:0;left:0;z-index:1055;display:none;width:100%;height:100%;overflow-x:hidden;overflow-y:auto;outline:0}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{transition:transform .3s ease-out;transform:translate(0, -50px)}@media(prefers-reduced-motion: reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{transform:none}.modal.modal-static .modal-dialog{transform:scale(1.02)}.modal-dialog-scrollable{height:calc(100% - 1rem)}.modal-dialog-scrollable .modal-content{max-height:100%;overflow:hidden}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;min-height:calc(100% - 1rem)}.modal-content{position:relative;display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem;outline:0}.modal-backdrop{position:fixed;top:0;left:0;z-index:1050;width:100vw;height:100vh;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:flex;display:-webkit-flex;flex-shrink:0;-webkit-flex-shrink:0;align-items:center;-webkit-align-items:center;justify-content:space-between;-webkit-justify-content:space-between;padding:1rem 1rem;border-bottom:1px solid #dee2e6;border-top-left-radius:calc(0.3rem - 1px);border-top-right-radius:calc(0.3rem - 1px)}.modal-header .btn-close{padding:.5rem .5rem;margin:-0.5rem -0.5rem -0.5rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;flex:1 1 auto;-webkit-flex:1 1 auto;padding:1rem}.modal-footer{display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;flex-shrink:0;-webkit-flex-shrink:0;align-items:center;-webkit-align-items:center;justify-content:flex-end;-webkit-justify-content:flex-end;padding:.75rem;border-top:1px solid #dee2e6;border-bottom-right-radius:calc(0.3rem - 1px);border-bottom-left-radius:calc(0.3rem - 1px)}.modal-footer>*{margin:.25rem}@media(min-width: 576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-scrollable{height:calc(100% - 3.5rem)}.modal-dialog-centered{min-height:calc(100% - 3.5rem)}.modal-sm{max-width:300px}}@media(min-width: 992px){.modal-lg,.modal-xl{max-width:800px}}@media(min-width: 1200px){.modal-xl{max-width:1140px}}.modal-fullscreen{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen .modal-header{border-radius:0}.modal-fullscreen .modal-body{overflow-y:auto}.modal-fullscreen .modal-footer{border-radius:0}@media(max-width: 575.98px){.modal-fullscreen-sm-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-sm-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-sm-down .modal-header{border-radius:0}.modal-fullscreen-sm-down .modal-body{overflow-y:auto}.modal-fullscreen-sm-down .modal-footer{border-radius:0}}@media(max-width: 767.98px){.modal-fullscreen-md-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-md-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-md-down .modal-header{border-radius:0}.modal-fullscreen-md-down .modal-body{overflow-y:auto}.modal-fullscreen-md-down .modal-footer{border-radius:0}}@media(max-width: 991.98px){.modal-fullscreen-lg-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-lg-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-lg-down .modal-header{border-radius:0}.modal-fullscreen-lg-down .modal-body{overflow-y:auto}.modal-fullscreen-lg-down .modal-footer{border-radius:0}}@media(max-width: 1199.98px){.modal-fullscreen-xl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xl-down .modal-header{border-radius:0}.modal-fullscreen-xl-down .modal-body{overflow-y:auto}.modal-fullscreen-xl-down .modal-footer{border-radius:0}}@media(max-width: 1399.98px){.modal-fullscreen-xxl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xxl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xxl-down .modal-header{border-radius:0}.modal-fullscreen-xxl-down .modal-body{overflow-y:auto}.modal-fullscreen-xxl-down .modal-footer{border-radius:0}}.tooltip{position:absolute;z-index:1080;display:block;margin:0;font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:0.875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip .tooltip-arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .tooltip-arrow::before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-top,.bs-tooltip-auto[data-popper-placement^=top]{padding:.4rem 0}.bs-tooltip-top .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow{bottom:0}.bs-tooltip-top .tooltip-arrow::before,.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow::before{top:-1px;border-width:.4rem .4rem 0;border-top-color:#000}.bs-tooltip-end,.bs-tooltip-auto[data-popper-placement^=right]{padding:0 .4rem}.bs-tooltip-end .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-end .tooltip-arrow::before,.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow::before{right:-1px;border-width:.4rem .4rem .4rem 0;border-right-color:#000}.bs-tooltip-bottom,.bs-tooltip-auto[data-popper-placement^=bottom]{padding:.4rem 0}.bs-tooltip-bottom .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow{top:0}.bs-tooltip-bottom .tooltip-arrow::before,.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow::before{bottom:-1px;border-width:0 .4rem .4rem;border-bottom-color:#000}.bs-tooltip-start,.bs-tooltip-auto[data-popper-placement^=left]{padding:0 .4rem}.bs-tooltip-start .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-start .tooltip-arrow::before,.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow::before{left:-1px;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}.tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000;border-radius:.25rem}.popover{position:absolute;top:0;left:0 /* rtl:ignore */;z-index:1070;display:block;max-width:276px;font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:0.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem}.popover .popover-arrow{position:absolute;display:block;width:1rem;height:.5rem}.popover .popover-arrow::before,.popover .popover-arrow::after{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}.bs-popover-top>.popover-arrow,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow{bottom:calc(-0.5rem - 1px)}.bs-popover-top>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::before{bottom:0;border-width:.5rem .5rem 0;border-top-color:rgba(0,0,0,.25)}.bs-popover-top>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}.bs-popover-end>.popover-arrow,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow{left:calc(-0.5rem - 1px);width:.5rem;height:1rem}.bs-popover-end>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:rgba(0,0,0,.25)}.bs-popover-end>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}.bs-popover-bottom>.popover-arrow,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow{top:calc(-0.5rem - 1px)}.bs-popover-bottom>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::before{top:0;border-width:0 .5rem .5rem .5rem;border-bottom-color:rgba(0,0,0,.25)}.bs-popover-bottom>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::after{top:1px;border-width:0 .5rem .5rem .5rem;border-bottom-color:#fff}.bs-popover-bottom .popover-header::before,.bs-popover-auto[data-popper-placement^=bottom] .popover-header::before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-0.5rem;content:"";border-bottom:1px solid #f0f0f0}.bs-popover-start>.popover-arrow,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow{right:calc(-0.5rem - 1px);width:.5rem;height:1rem}.bs-popover-start>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:rgba(0,0,0,.25)}.bs-popover-start>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}.popover-header{padding:.5rem 1rem;margin-bottom:0;font-size:1rem;color:#2d2d2d;background-color:#f0f0f0;border-bottom:1px solid rgba(0,0,0,.2);border-top-left-radius:calc(0.3rem - 1px);border-top-right-radius:calc(0.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:1rem 1rem;color:#777}.carousel{position:relative}.carousel.pointer-event{touch-action:pan-y;-webkit-touch-action:pan-y;-moz-touch-action:pan-y;-ms-touch-action:pan-y;-o-touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner::after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;backface-visibility:hidden;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;-ms-backface-visibility:hidden;-o-backface-visibility:hidden;transition:transform .6s ease-in-out}@media(prefers-reduced-motion: reduce){.carousel-item{transition:none}}.carousel-item.active,.carousel-item-next,.carousel-item-prev{display:block}.carousel-item-next:not(.carousel-item-start),.active.carousel-item-end{transform:translateX(100%)}.carousel-item-prev:not(.carousel-item-end),.active.carousel-item-start{transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}.carousel-fade .carousel-item.active,.carousel-fade .carousel-item-next.carousel-item-start,.carousel-fade .carousel-item-prev.carousel-item-end{z-index:1;opacity:1}.carousel-fade .active.carousel-item-start,.carousel-fade .active.carousel-item-end{z-index:0;opacity:0;transition:opacity 0s .6s}@media(prefers-reduced-motion: reduce){.carousel-fade .active.carousel-item-start,.carousel-fade .active.carousel-item-end{transition:none}}.carousel-control-prev,.carousel-control-next{position:absolute;top:0;bottom:0;z-index:1;display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;justify-content:center;-webkit-justify-content:center;width:15%;padding:0;color:#fff;text-align:center;background:none;border:0;opacity:.5;transition:opacity .15s ease}@media(prefers-reduced-motion: reduce){.carousel-control-prev,.carousel-control-next{transition:none}}.carousel-control-prev:hover,.carousel-control-prev:focus,.carousel-control-next:hover,.carousel-control-next:focus{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-prev-icon,.carousel-control-next-icon{display:inline-block;width:2rem;height:2rem;background-repeat:no-repeat;background-position:50%;background-size:100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:2;display:flex;display:-webkit-flex;justify-content:center;-webkit-justify-content:center;padding:0;margin-right:15%;margin-bottom:1rem;margin-left:15%;list-style:none}.carousel-indicators [data-bs-target]{box-sizing:content-box;flex:0 1 auto;-webkit-flex:0 1 auto;width:30px;height:3px;padding:0;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border:0;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}@media(prefers-reduced-motion: reduce){.carousel-indicators [data-bs-target]{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:1.25rem;left:15%;padding-top:1.25rem;padding-bottom:1.25rem;color:#fff;text-align:center}.carousel-dark .carousel-control-prev-icon,.carousel-dark .carousel-control-next-icon{filter:invert(1) grayscale(100)}.carousel-dark .carousel-indicators [data-bs-target]{background-color:#000}.carousel-dark .carousel-caption{color:#000}@keyframes spinner-border{to{transform:rotate(360deg) /* rtl:ignore */}}.spinner-border{display:inline-block;width:2rem;height:2rem;vertical-align:-0.125em;border:.25em solid currentColor;border-right-color:transparent;border-radius:50%;animation:.75s linear infinite spinner-border}.spinner-border-sm{width:1rem;height:1rem;border-width:.2em}@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}.spinner-grow{display:inline-block;width:2rem;height:2rem;vertical-align:-0.125em;background-color:currentColor;border-radius:50%;opacity:0;animation:.75s linear infinite spinner-grow}.spinner-grow-sm{width:1rem;height:1rem}@media(prefers-reduced-motion: reduce){.spinner-border,.spinner-grow{animation-duration:1.5s;-webkit-animation-duration:1.5s;-moz-animation-duration:1.5s;-ms-animation-duration:1.5s;-o-animation-duration:1.5s}}.offcanvas{position:fixed;bottom:0;z-index:1045;display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;max-width:100%;visibility:hidden;background-color:#fff;background-clip:padding-box;outline:0;transition:transform .3s ease-in-out}@media(prefers-reduced-motion: reduce){.offcanvas{transition:none}}.offcanvas-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.offcanvas-backdrop.fade{opacity:0}.offcanvas-backdrop.show{opacity:.5}.offcanvas-header{display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;justify-content:space-between;-webkit-justify-content:space-between;padding:1rem 1rem}.offcanvas-header .btn-close{padding:.5rem .5rem;margin-top:-0.5rem;margin-right:-0.5rem;margin-bottom:-0.5rem}.offcanvas-title{margin-bottom:0;line-height:1.5}.offcanvas-body{flex-grow:1;-webkit-flex-grow:1;padding:1rem 1rem;overflow-y:auto}.offcanvas-start{top:0;left:0;width:400px;border-right:1px solid rgba(0,0,0,.2);transform:translateX(-100%)}.offcanvas-end{top:0;right:0;width:400px;border-left:1px solid rgba(0,0,0,.2);transform:translateX(100%)}.offcanvas-top{top:0;right:0;left:0;height:30vh;max-height:100%;border-bottom:1px solid rgba(0,0,0,.2);transform:translateY(-100%)}.offcanvas-bottom{right:0;left:0;height:30vh;max-height:100%;border-top:1px solid rgba(0,0,0,.2);transform:translateY(100%)}.offcanvas.show{transform:none}.placeholder{display:inline-block;min-height:1em;vertical-align:middle;cursor:wait;background-color:currentColor;opacity:.5}.placeholder.btn::before{display:inline-block;content:""}.placeholder-xs{min-height:.6em}.placeholder-sm{min-height:.8em}.placeholder-lg{min-height:1.2em}.placeholder-glow .placeholder{animation:placeholder-glow 2s ease-in-out infinite}@keyframes placeholder-glow{50%{opacity:.2}}.placeholder-wave{mask-image:linear-gradient(130deg, #000 55%, rgba(0, 0, 0, 0.8) 75%, #000 95%);-webkit-mask-image:linear-gradient(130deg, #000 55%, rgba(0, 0, 0, 0.8) 75%, #000 95%);mask-size:200% 100%;-webkit-mask-size:200% 100%;animation:placeholder-wave 2s linear infinite}@keyframes placeholder-wave{100%{mask-position:-200% 0%;-webkit-mask-position:-200% 0%}}.clearfix::after{display:block;clear:both;content:""}.link-default{color:#999}.link-default:hover,.link-default:focus{color:#7a7a7a}.link-primary{color:#446e9b}.link-primary:hover,.link-primary:focus{color:#36587c}.link-secondary{color:#999}.link-secondary:hover,.link-secondary:focus{color:#7a7a7a}.link-success{color:#3cb521}.link-success:hover,.link-success:focus{color:#30911a}.link-info{color:#3399f3}.link-info:hover,.link-info:focus{color:#297ac2}.link-warning{color:#d47500}.link-warning:hover,.link-warning:focus{color:#aa5e00}.link-danger{color:#cd0200}.link-danger:hover,.link-danger:focus{color:#a40200}.link-light{color:#eee}.link-light:hover,.link-light:focus{color:#f1f1f1}.link-dark{color:#333}.link-dark:hover,.link-dark:focus{color:#292929}.ratio{position:relative;width:100%}.ratio::before{display:block;padding-top:var(--bs-aspect-ratio);content:""}.ratio>*{position:absolute;top:0;left:0;width:100%;height:100%}.ratio-1x1{--bs-aspect-ratio: 100%}.ratio-4x3{--bs-aspect-ratio: calc(3 / 4 * 100%)}.ratio-16x9{--bs-aspect-ratio: calc(9 / 16 * 100%)}.ratio-21x9{--bs-aspect-ratio: calc(9 / 21 * 100%)}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}.sticky-top{position:sticky;top:0;z-index:1020}@media(min-width: 576px){.sticky-sm-top{position:sticky;top:0;z-index:1020}}@media(min-width: 768px){.sticky-md-top{position:sticky;top:0;z-index:1020}}@media(min-width: 992px){.sticky-lg-top{position:sticky;top:0;z-index:1020}}@media(min-width: 1200px){.sticky-xl-top{position:sticky;top:0;z-index:1020}}@media(min-width: 1400px){.sticky-xxl-top{position:sticky;top:0;z-index:1020}}.hstack{display:flex;display:-webkit-flex;flex-direction:row;-webkit-flex-direction:row;align-items:center;-webkit-align-items:center;align-self:stretch;-webkit-align-self:stretch}.vstack{display:flex;display:-webkit-flex;flex:1 1 auto;-webkit-flex:1 1 auto;flex-direction:column;-webkit-flex-direction:column;align-self:stretch;-webkit-align-self:stretch}.visually-hidden,.visually-hidden-focusable:not(:focus):not(:focus-within){position:absolute !important;width:1px !important;height:1px !important;padding:0 !important;margin:-1px !important;overflow:hidden !important;clip:rect(0, 0, 0, 0) !important;white-space:nowrap !important;border:0 !important}.stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;content:""}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vr{display:inline-block;align-self:stretch;-webkit-align-self:stretch;width:1px;min-height:1em;background-color:currentColor;opacity:.25}.align-baseline{vertical-align:baseline !important}.align-top{vertical-align:top !important}.align-middle{vertical-align:middle !important}.align-bottom{vertical-align:bottom !important}.align-text-bottom{vertical-align:text-bottom !important}.align-text-top{vertical-align:text-top !important}.float-start{float:left !important}.float-end{float:right !important}.float-none{float:none !important}.opacity-0{opacity:0 !important}.opacity-25{opacity:.25 !important}.opacity-50{opacity:.5 !important}.opacity-75{opacity:.75 !important}.opacity-100{opacity:1 !important}.overflow-auto{overflow:auto !important}.overflow-hidden{overflow:hidden !important}.overflow-visible{overflow:visible !important}.overflow-scroll{overflow:scroll !important}.d-inline{display:inline !important}.d-inline-block{display:inline-block !important}.d-block{display:block !important}.d-grid{display:grid !important}.d-table{display:table !important}.d-table-row{display:table-row !important}.d-table-cell{display:table-cell !important}.d-flex{display:flex !important}.d-inline-flex{display:inline-flex !important}.d-none{display:none !important}.shadow{box-shadow:0 .5rem 1rem rgba(0,0,0,.15) !important}.shadow-sm{box-shadow:0 .125rem .25rem rgba(0,0,0,.075) !important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,.175) !important}.shadow-none{box-shadow:none !important}.position-static{position:static !important}.position-relative{position:relative !important}.position-absolute{position:absolute !important}.position-fixed{position:fixed !important}.position-sticky{position:sticky !important}.top-0{top:0 !important}.top-50{top:50% !important}.top-100{top:100% !important}.bottom-0{bottom:0 !important}.bottom-50{bottom:50% !important}.bottom-100{bottom:100% !important}.start-0{left:0 !important}.start-50{left:50% !important}.start-100{left:100% !important}.end-0{right:0 !important}.end-50{right:50% !important}.end-100{right:100% !important}.translate-middle{transform:translate(-50%, -50%) !important}.translate-middle-x{transform:translateX(-50%) !important}.translate-middle-y{transform:translateY(-50%) !important}.border{border:1px solid #dee2e6 !important}.border-0{border:0 !important}.border-top{border-top:1px solid #dee2e6 !important}.border-top-0{border-top:0 !important}.border-end{border-right:1px solid #dee2e6 !important}.border-end-0{border-right:0 !important}.border-bottom{border-bottom:1px solid #dee2e6 !important}.border-bottom-0{border-bottom:0 !important}.border-start{border-left:1px solid #dee2e6 !important}.border-start-0{border-left:0 !important}.border-default{border-color:#999 !important}.border-primary{border-color:#446e9b !important}.border-secondary{border-color:#999 !important}.border-success{border-color:#3cb521 !important}.border-info{border-color:#3399f3 !important}.border-warning{border-color:#d47500 !important}.border-danger{border-color:#cd0200 !important}.border-light{border-color:#eee !important}.border-dark{border-color:#333 !important}.border-white{border-color:#fff !important}.border-1{border-width:1px !important}.border-2{border-width:2px !important}.border-3{border-width:3px !important}.border-4{border-width:4px !important}.border-5{border-width:5px !important}.w-25{width:25% !important}.w-50{width:50% !important}.w-75{width:75% !important}.w-100{width:100% !important}.w-auto{width:auto !important}.mw-100{max-width:100% !important}.vw-100{width:100vw !important}.min-vw-100{min-width:100vw !important}.h-25{height:25% !important}.h-50{height:50% !important}.h-75{height:75% !important}.h-100{height:100% !important}.h-auto{height:auto !important}.mh-100{max-height:100% !important}.vh-100{height:100vh !important}.min-vh-100{min-height:100vh !important}.flex-fill{flex:1 1 auto !important}.flex-row{flex-direction:row !important}.flex-column{flex-direction:column !important}.flex-row-reverse{flex-direction:row-reverse !important}.flex-column-reverse{flex-direction:column-reverse !important}.flex-grow-0{flex-grow:0 !important}.flex-grow-1{flex-grow:1 !important}.flex-shrink-0{flex-shrink:0 !important}.flex-shrink-1{flex-shrink:1 !important}.flex-wrap{flex-wrap:wrap !important}.flex-nowrap{flex-wrap:nowrap !important}.flex-wrap-reverse{flex-wrap:wrap-reverse !important}.gap-0{gap:0 !important}.gap-1{gap:.25rem !important}.gap-2{gap:.5rem !important}.gap-3{gap:1rem !important}.gap-4{gap:1.5rem !important}.gap-5{gap:3rem !important}.justify-content-start{justify-content:flex-start !important}.justify-content-end{justify-content:flex-end !important}.justify-content-center{justify-content:center !important}.justify-content-between{justify-content:space-between !important}.justify-content-around{justify-content:space-around !important}.justify-content-evenly{justify-content:space-evenly !important}.align-items-start{align-items:flex-start !important}.align-items-end{align-items:flex-end !important}.align-items-center{align-items:center !important}.align-items-baseline{align-items:baseline !important}.align-items-stretch{align-items:stretch !important}.align-content-start{align-content:flex-start !important}.align-content-end{align-content:flex-end !important}.align-content-center{align-content:center !important}.align-content-between{align-content:space-between !important}.align-content-around{align-content:space-around !important}.align-content-stretch{align-content:stretch !important}.align-self-auto{align-self:auto !important}.align-self-start{align-self:flex-start !important}.align-self-end{align-self:flex-end !important}.align-self-center{align-self:center !important}.align-self-baseline{align-self:baseline !important}.align-self-stretch{align-self:stretch !important}.order-first{order:-1 !important}.order-0{order:0 !important}.order-1{order:1 !important}.order-2{order:2 !important}.order-3{order:3 !important}.order-4{order:4 !important}.order-5{order:5 !important}.order-last{order:6 !important}.m-0{margin:0 !important}.m-1{margin:.25rem !important}.m-2{margin:.5rem !important}.m-3{margin:1rem !important}.m-4{margin:1.5rem !important}.m-5{margin:3rem !important}.m-auto{margin:auto !important}.mx-0{margin-right:0 !important;margin-left:0 !important}.mx-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-3{margin-right:1rem !important;margin-left:1rem !important}.mx-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-5{margin-right:3rem !important;margin-left:3rem !important}.mx-auto{margin-right:auto !important;margin-left:auto !important}.my-0{margin-top:0 !important;margin-bottom:0 !important}.my-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-0{margin-top:0 !important}.mt-1{margin-top:.25rem !important}.mt-2{margin-top:.5rem !important}.mt-3{margin-top:1rem !important}.mt-4{margin-top:1.5rem !important}.mt-5{margin-top:3rem !important}.mt-auto{margin-top:auto !important}.me-0{margin-right:0 !important}.me-1{margin-right:.25rem !important}.me-2{margin-right:.5rem !important}.me-3{margin-right:1rem !important}.me-4{margin-right:1.5rem !important}.me-5{margin-right:3rem !important}.me-auto{margin-right:auto !important}.mb-0{margin-bottom:0 !important}.mb-1{margin-bottom:.25rem !important}.mb-2{margin-bottom:.5rem !important}.mb-3{margin-bottom:1rem !important}.mb-4{margin-bottom:1.5rem !important}.mb-5{margin-bottom:3rem !important}.mb-auto{margin-bottom:auto !important}.ms-0{margin-left:0 !important}.ms-1{margin-left:.25rem !important}.ms-2{margin-left:.5rem !important}.ms-3{margin-left:1rem !important}.ms-4{margin-left:1.5rem !important}.ms-5{margin-left:3rem !important}.ms-auto{margin-left:auto !important}.p-0{padding:0 !important}.p-1{padding:.25rem !important}.p-2{padding:.5rem !important}.p-3{padding:1rem !important}.p-4{padding:1.5rem !important}.p-5{padding:3rem !important}.px-0{padding-right:0 !important;padding-left:0 !important}.px-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-3{padding-right:1rem !important;padding-left:1rem !important}.px-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-5{padding-right:3rem !important;padding-left:3rem !important}.py-0{padding-top:0 !important;padding-bottom:0 !important}.py-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-0{padding-top:0 !important}.pt-1{padding-top:.25rem !important}.pt-2{padding-top:.5rem !important}.pt-3{padding-top:1rem !important}.pt-4{padding-top:1.5rem !important}.pt-5{padding-top:3rem !important}.pe-0{padding-right:0 !important}.pe-1{padding-right:.25rem !important}.pe-2{padding-right:.5rem !important}.pe-3{padding-right:1rem !important}.pe-4{padding-right:1.5rem !important}.pe-5{padding-right:3rem !important}.pb-0{padding-bottom:0 !important}.pb-1{padding-bottom:.25rem !important}.pb-2{padding-bottom:.5rem !important}.pb-3{padding-bottom:1rem !important}.pb-4{padding-bottom:1.5rem !important}.pb-5{padding-bottom:3rem !important}.ps-0{padding-left:0 !important}.ps-1{padding-left:.25rem !important}.ps-2{padding-left:.5rem !important}.ps-3{padding-left:1rem !important}.ps-4{padding-left:1.5rem !important}.ps-5{padding-left:3rem !important}.font-monospace{font-family:var(--bs-font-monospace) !important}.fs-1{font-size:calc(1.345rem + 1.14vw) !important}.fs-2{font-size:calc(1.3rem + 0.6vw) !important}.fs-3{font-size:calc(1.275rem + 0.3vw) !important}.fs-4{font-size:1.25rem !important}.fs-5{font-size:1.1rem !important}.fs-6{font-size:1rem !important}.fst-italic{font-style:italic !important}.fst-normal{font-style:normal !important}.fw-light{font-weight:300 !important}.fw-lighter{font-weight:lighter !important}.fw-normal{font-weight:400 !important}.fw-bold{font-weight:700 !important}.fw-bolder{font-weight:bolder !important}.lh-1{line-height:1 !important}.lh-sm{line-height:1.25 !important}.lh-base{line-height:1.5 !important}.lh-lg{line-height:2 !important}.text-start{text-align:left !important}.text-end{text-align:right !important}.text-center{text-align:center !important}.text-decoration-none{text-decoration:none !important}.text-decoration-underline{text-decoration:underline !important}.text-decoration-line-through{text-decoration:line-through !important}.text-lowercase{text-transform:lowercase !important}.text-uppercase{text-transform:uppercase !important}.text-capitalize{text-transform:capitalize !important}.text-wrap{white-space:normal !important}.text-nowrap{white-space:nowrap !important}.text-break{word-wrap:break-word !important;word-break:break-word !important}.text-default{--bs-text-opacity: 1;color:rgba(var(--bs-default-rgb), var(--bs-text-opacity)) !important}.text-primary{--bs-text-opacity: 1;color:rgba(var(--bs-primary-rgb), var(--bs-text-opacity)) !important}.text-secondary{--bs-text-opacity: 1;color:rgba(var(--bs-secondary-rgb), var(--bs-text-opacity)) !important}.text-success{--bs-text-opacity: 1;color:rgba(var(--bs-success-rgb), var(--bs-text-opacity)) !important}.text-info{--bs-text-opacity: 1;color:rgba(var(--bs-info-rgb), var(--bs-text-opacity)) !important}.text-warning{--bs-text-opacity: 1;color:rgba(var(--bs-warning-rgb), var(--bs-text-opacity)) !important}.text-danger{--bs-text-opacity: 1;color:rgba(var(--bs-danger-rgb), var(--bs-text-opacity)) !important}.text-light{--bs-text-opacity: 1;color:rgba(var(--bs-light-rgb), var(--bs-text-opacity)) !important}.text-dark{--bs-text-opacity: 1;color:rgba(var(--bs-dark-rgb), var(--bs-text-opacity)) !important}.text-black{--bs-text-opacity: 1;color:rgba(var(--bs-black-rgb), var(--bs-text-opacity)) !important}.text-white{--bs-text-opacity: 1;color:rgba(var(--bs-white-rgb), var(--bs-text-opacity)) !important}.text-body{--bs-text-opacity: 1;color:rgba(var(--bs-body-color-rgb), var(--bs-text-opacity)) !important}.text-muted{--bs-text-opacity: 1;color:#777 !important}.text-black-50{--bs-text-opacity: 1;color:rgba(0,0,0,.5) !important}.text-white-50{--bs-text-opacity: 1;color:rgba(255,255,255,.5) !important}.text-reset{--bs-text-opacity: 1;color:inherit !important}.text-opacity-25{--bs-text-opacity: 0.25}.text-opacity-50{--bs-text-opacity: 0.5}.text-opacity-75{--bs-text-opacity: 0.75}.text-opacity-100{--bs-text-opacity: 1}.bg-default{--bs-bg-opacity: 1;background-color:rgba(var(--bs-default-rgb), var(--bs-bg-opacity)) !important}.bg-primary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-primary-rgb), var(--bs-bg-opacity)) !important}.bg-secondary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-secondary-rgb), var(--bs-bg-opacity)) !important}.bg-success{--bs-bg-opacity: 1;background-color:rgba(var(--bs-success-rgb), var(--bs-bg-opacity)) !important}.bg-info{--bs-bg-opacity: 1;background-color:rgba(var(--bs-info-rgb), var(--bs-bg-opacity)) !important}.bg-warning{--bs-bg-opacity: 1;background-color:rgba(var(--bs-warning-rgb), var(--bs-bg-opacity)) !important}.bg-danger{--bs-bg-opacity: 1;background-color:rgba(var(--bs-danger-rgb), var(--bs-bg-opacity)) !important}.bg-light{--bs-bg-opacity: 1;background-color:rgba(var(--bs-light-rgb), var(--bs-bg-opacity)) !important}.bg-dark{--bs-bg-opacity: 1;background-color:rgba(var(--bs-dark-rgb), var(--bs-bg-opacity)) !important}.bg-black{--bs-bg-opacity: 1;background-color:rgba(var(--bs-black-rgb), var(--bs-bg-opacity)) !important}.bg-white{--bs-bg-opacity: 1;background-color:rgba(var(--bs-white-rgb), var(--bs-bg-opacity)) !important}.bg-body{--bs-bg-opacity: 1;background-color:rgba(var(--bs-body-bg-rgb), var(--bs-bg-opacity)) !important}.bg-transparent{--bs-bg-opacity: 1;background-color:transparent !important}.bg-opacity-10{--bs-bg-opacity: 0.1}.bg-opacity-25{--bs-bg-opacity: 0.25}.bg-opacity-50{--bs-bg-opacity: 0.5}.bg-opacity-75{--bs-bg-opacity: 0.75}.bg-opacity-100{--bs-bg-opacity: 1}.bg-gradient{background-image:var(--bs-gradient) !important}.user-select-all{user-select:all !important}.user-select-auto{user-select:auto !important}.user-select-none{user-select:none !important}.pe-none{pointer-events:none !important}.pe-auto{pointer-events:auto !important}.rounded{border-radius:.25rem !important}.rounded-0{border-radius:0 !important}.rounded-1{border-radius:.2rem !important}.rounded-2{border-radius:.25rem !important}.rounded-3{border-radius:.3rem !important}.rounded-circle{border-radius:50% !important}.rounded-pill{border-radius:50rem !important}.rounded-top{border-top-left-radius:.25rem !important;border-top-right-radius:.25rem !important}.rounded-end{border-top-right-radius:.25rem !important;border-bottom-right-radius:.25rem !important}.rounded-bottom{border-bottom-right-radius:.25rem !important;border-bottom-left-radius:.25rem !important}.rounded-start{border-bottom-left-radius:.25rem !important;border-top-left-radius:.25rem !important}.visible{visibility:visible !important}.invisible{visibility:hidden !important}@media(min-width: 576px){.float-sm-start{float:left !important}.float-sm-end{float:right !important}.float-sm-none{float:none !important}.d-sm-inline{display:inline !important}.d-sm-inline-block{display:inline-block !important}.d-sm-block{display:block !important}.d-sm-grid{display:grid !important}.d-sm-table{display:table !important}.d-sm-table-row{display:table-row !important}.d-sm-table-cell{display:table-cell !important}.d-sm-flex{display:flex !important}.d-sm-inline-flex{display:inline-flex !important}.d-sm-none{display:none !important}.flex-sm-fill{flex:1 1 auto !important}.flex-sm-row{flex-direction:row !important}.flex-sm-column{flex-direction:column !important}.flex-sm-row-reverse{flex-direction:row-reverse !important}.flex-sm-column-reverse{flex-direction:column-reverse !important}.flex-sm-grow-0{flex-grow:0 !important}.flex-sm-grow-1{flex-grow:1 !important}.flex-sm-shrink-0{flex-shrink:0 !important}.flex-sm-shrink-1{flex-shrink:1 !important}.flex-sm-wrap{flex-wrap:wrap !important}.flex-sm-nowrap{flex-wrap:nowrap !important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse !important}.gap-sm-0{gap:0 !important}.gap-sm-1{gap:.25rem !important}.gap-sm-2{gap:.5rem !important}.gap-sm-3{gap:1rem !important}.gap-sm-4{gap:1.5rem !important}.gap-sm-5{gap:3rem !important}.justify-content-sm-start{justify-content:flex-start !important}.justify-content-sm-end{justify-content:flex-end !important}.justify-content-sm-center{justify-content:center !important}.justify-content-sm-between{justify-content:space-between !important}.justify-content-sm-around{justify-content:space-around !important}.justify-content-sm-evenly{justify-content:space-evenly !important}.align-items-sm-start{align-items:flex-start !important}.align-items-sm-end{align-items:flex-end !important}.align-items-sm-center{align-items:center !important}.align-items-sm-baseline{align-items:baseline !important}.align-items-sm-stretch{align-items:stretch !important}.align-content-sm-start{align-content:flex-start !important}.align-content-sm-end{align-content:flex-end !important}.align-content-sm-center{align-content:center !important}.align-content-sm-between{align-content:space-between !important}.align-content-sm-around{align-content:space-around !important}.align-content-sm-stretch{align-content:stretch !important}.align-self-sm-auto{align-self:auto !important}.align-self-sm-start{align-self:flex-start !important}.align-self-sm-end{align-self:flex-end !important}.align-self-sm-center{align-self:center !important}.align-self-sm-baseline{align-self:baseline !important}.align-self-sm-stretch{align-self:stretch !important}.order-sm-first{order:-1 !important}.order-sm-0{order:0 !important}.order-sm-1{order:1 !important}.order-sm-2{order:2 !important}.order-sm-3{order:3 !important}.order-sm-4{order:4 !important}.order-sm-5{order:5 !important}.order-sm-last{order:6 !important}.m-sm-0{margin:0 !important}.m-sm-1{margin:.25rem !important}.m-sm-2{margin:.5rem !important}.m-sm-3{margin:1rem !important}.m-sm-4{margin:1.5rem !important}.m-sm-5{margin:3rem !important}.m-sm-auto{margin:auto !important}.mx-sm-0{margin-right:0 !important;margin-left:0 !important}.mx-sm-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-sm-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-sm-3{margin-right:1rem !important;margin-left:1rem !important}.mx-sm-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-sm-5{margin-right:3rem !important;margin-left:3rem !important}.mx-sm-auto{margin-right:auto !important;margin-left:auto !important}.my-sm-0{margin-top:0 !important;margin-bottom:0 !important}.my-sm-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-sm-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-sm-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-sm-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-sm-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-sm-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-sm-0{margin-top:0 !important}.mt-sm-1{margin-top:.25rem !important}.mt-sm-2{margin-top:.5rem !important}.mt-sm-3{margin-top:1rem !important}.mt-sm-4{margin-top:1.5rem !important}.mt-sm-5{margin-top:3rem !important}.mt-sm-auto{margin-top:auto !important}.me-sm-0{margin-right:0 !important}.me-sm-1{margin-right:.25rem !important}.me-sm-2{margin-right:.5rem !important}.me-sm-3{margin-right:1rem !important}.me-sm-4{margin-right:1.5rem !important}.me-sm-5{margin-right:3rem !important}.me-sm-auto{margin-right:auto !important}.mb-sm-0{margin-bottom:0 !important}.mb-sm-1{margin-bottom:.25rem !important}.mb-sm-2{margin-bottom:.5rem !important}.mb-sm-3{margin-bottom:1rem !important}.mb-sm-4{margin-bottom:1.5rem !important}.mb-sm-5{margin-bottom:3rem !important}.mb-sm-auto{margin-bottom:auto !important}.ms-sm-0{margin-left:0 !important}.ms-sm-1{margin-left:.25rem !important}.ms-sm-2{margin-left:.5rem !important}.ms-sm-3{margin-left:1rem !important}.ms-sm-4{margin-left:1.5rem !important}.ms-sm-5{margin-left:3rem !important}.ms-sm-auto{margin-left:auto !important}.p-sm-0{padding:0 !important}.p-sm-1{padding:.25rem !important}.p-sm-2{padding:.5rem !important}.p-sm-3{padding:1rem !important}.p-sm-4{padding:1.5rem !important}.p-sm-5{padding:3rem !important}.px-sm-0{padding-right:0 !important;padding-left:0 !important}.px-sm-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-sm-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-sm-3{padding-right:1rem !important;padding-left:1rem !important}.px-sm-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-sm-5{padding-right:3rem !important;padding-left:3rem !important}.py-sm-0{padding-top:0 !important;padding-bottom:0 !important}.py-sm-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-sm-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-sm-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-sm-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-sm-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-sm-0{padding-top:0 !important}.pt-sm-1{padding-top:.25rem !important}.pt-sm-2{padding-top:.5rem !important}.pt-sm-3{padding-top:1rem !important}.pt-sm-4{padding-top:1.5rem !important}.pt-sm-5{padding-top:3rem !important}.pe-sm-0{padding-right:0 !important}.pe-sm-1{padding-right:.25rem !important}.pe-sm-2{padding-right:.5rem !important}.pe-sm-3{padding-right:1rem !important}.pe-sm-4{padding-right:1.5rem !important}.pe-sm-5{padding-right:3rem !important}.pb-sm-0{padding-bottom:0 !important}.pb-sm-1{padding-bottom:.25rem !important}.pb-sm-2{padding-bottom:.5rem !important}.pb-sm-3{padding-bottom:1rem !important}.pb-sm-4{padding-bottom:1.5rem !important}.pb-sm-5{padding-bottom:3rem !important}.ps-sm-0{padding-left:0 !important}.ps-sm-1{padding-left:.25rem !important}.ps-sm-2{padding-left:.5rem !important}.ps-sm-3{padding-left:1rem !important}.ps-sm-4{padding-left:1.5rem !important}.ps-sm-5{padding-left:3rem !important}.text-sm-start{text-align:left !important}.text-sm-end{text-align:right !important}.text-sm-center{text-align:center !important}}@media(min-width: 768px){.float-md-start{float:left !important}.float-md-end{float:right !important}.float-md-none{float:none !important}.d-md-inline{display:inline !important}.d-md-inline-block{display:inline-block !important}.d-md-block{display:block !important}.d-md-grid{display:grid !important}.d-md-table{display:table !important}.d-md-table-row{display:table-row !important}.d-md-table-cell{display:table-cell !important}.d-md-flex{display:flex !important}.d-md-inline-flex{display:inline-flex !important}.d-md-none{display:none !important}.flex-md-fill{flex:1 1 auto !important}.flex-md-row{flex-direction:row !important}.flex-md-column{flex-direction:column !important}.flex-md-row-reverse{flex-direction:row-reverse !important}.flex-md-column-reverse{flex-direction:column-reverse !important}.flex-md-grow-0{flex-grow:0 !important}.flex-md-grow-1{flex-grow:1 !important}.flex-md-shrink-0{flex-shrink:0 !important}.flex-md-shrink-1{flex-shrink:1 !important}.flex-md-wrap{flex-wrap:wrap !important}.flex-md-nowrap{flex-wrap:nowrap !important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse !important}.gap-md-0{gap:0 !important}.gap-md-1{gap:.25rem !important}.gap-md-2{gap:.5rem !important}.gap-md-3{gap:1rem !important}.gap-md-4{gap:1.5rem !important}.gap-md-5{gap:3rem !important}.justify-content-md-start{justify-content:flex-start !important}.justify-content-md-end{justify-content:flex-end !important}.justify-content-md-center{justify-content:center !important}.justify-content-md-between{justify-content:space-between !important}.justify-content-md-around{justify-content:space-around !important}.justify-content-md-evenly{justify-content:space-evenly !important}.align-items-md-start{align-items:flex-start !important}.align-items-md-end{align-items:flex-end !important}.align-items-md-center{align-items:center !important}.align-items-md-baseline{align-items:baseline !important}.align-items-md-stretch{align-items:stretch !important}.align-content-md-start{align-content:flex-start !important}.align-content-md-end{align-content:flex-end !important}.align-content-md-center{align-content:center !important}.align-content-md-between{align-content:space-between !important}.align-content-md-around{align-content:space-around !important}.align-content-md-stretch{align-content:stretch !important}.align-self-md-auto{align-self:auto !important}.align-self-md-start{align-self:flex-start !important}.align-self-md-end{align-self:flex-end !important}.align-self-md-center{align-self:center !important}.align-self-md-baseline{align-self:baseline !important}.align-self-md-stretch{align-self:stretch !important}.order-md-first{order:-1 !important}.order-md-0{order:0 !important}.order-md-1{order:1 !important}.order-md-2{order:2 !important}.order-md-3{order:3 !important}.order-md-4{order:4 !important}.order-md-5{order:5 !important}.order-md-last{order:6 !important}.m-md-0{margin:0 !important}.m-md-1{margin:.25rem !important}.m-md-2{margin:.5rem !important}.m-md-3{margin:1rem !important}.m-md-4{margin:1.5rem !important}.m-md-5{margin:3rem !important}.m-md-auto{margin:auto !important}.mx-md-0{margin-right:0 !important;margin-left:0 !important}.mx-md-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-md-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-md-3{margin-right:1rem !important;margin-left:1rem !important}.mx-md-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-md-5{margin-right:3rem !important;margin-left:3rem !important}.mx-md-auto{margin-right:auto !important;margin-left:auto !important}.my-md-0{margin-top:0 !important;margin-bottom:0 !important}.my-md-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-md-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-md-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-md-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-md-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-md-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-md-0{margin-top:0 !important}.mt-md-1{margin-top:.25rem !important}.mt-md-2{margin-top:.5rem !important}.mt-md-3{margin-top:1rem !important}.mt-md-4{margin-top:1.5rem !important}.mt-md-5{margin-top:3rem !important}.mt-md-auto{margin-top:auto !important}.me-md-0{margin-right:0 !important}.me-md-1{margin-right:.25rem !important}.me-md-2{margin-right:.5rem !important}.me-md-3{margin-right:1rem !important}.me-md-4{margin-right:1.5rem !important}.me-md-5{margin-right:3rem !important}.me-md-auto{margin-right:auto !important}.mb-md-0{margin-bottom:0 !important}.mb-md-1{margin-bottom:.25rem !important}.mb-md-2{margin-bottom:.5rem !important}.mb-md-3{margin-bottom:1rem !important}.mb-md-4{margin-bottom:1.5rem !important}.mb-md-5{margin-bottom:3rem !important}.mb-md-auto{margin-bottom:auto !important}.ms-md-0{margin-left:0 !important}.ms-md-1{margin-left:.25rem !important}.ms-md-2{margin-left:.5rem !important}.ms-md-3{margin-left:1rem !important}.ms-md-4{margin-left:1.5rem !important}.ms-md-5{margin-left:3rem !important}.ms-md-auto{margin-left:auto !important}.p-md-0{padding:0 !important}.p-md-1{padding:.25rem !important}.p-md-2{padding:.5rem !important}.p-md-3{padding:1rem !important}.p-md-4{padding:1.5rem !important}.p-md-5{padding:3rem !important}.px-md-0{padding-right:0 !important;padding-left:0 !important}.px-md-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-md-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-md-3{padding-right:1rem !important;padding-left:1rem !important}.px-md-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-md-5{padding-right:3rem !important;padding-left:3rem !important}.py-md-0{padding-top:0 !important;padding-bottom:0 !important}.py-md-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-md-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-md-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-md-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-md-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-md-0{padding-top:0 !important}.pt-md-1{padding-top:.25rem !important}.pt-md-2{padding-top:.5rem !important}.pt-md-3{padding-top:1rem !important}.pt-md-4{padding-top:1.5rem !important}.pt-md-5{padding-top:3rem !important}.pe-md-0{padding-right:0 !important}.pe-md-1{padding-right:.25rem !important}.pe-md-2{padding-right:.5rem !important}.pe-md-3{padding-right:1rem !important}.pe-md-4{padding-right:1.5rem !important}.pe-md-5{padding-right:3rem !important}.pb-md-0{padding-bottom:0 !important}.pb-md-1{padding-bottom:.25rem !important}.pb-md-2{padding-bottom:.5rem !important}.pb-md-3{padding-bottom:1rem !important}.pb-md-4{padding-bottom:1.5rem !important}.pb-md-5{padding-bottom:3rem !important}.ps-md-0{padding-left:0 !important}.ps-md-1{padding-left:.25rem !important}.ps-md-2{padding-left:.5rem !important}.ps-md-3{padding-left:1rem !important}.ps-md-4{padding-left:1.5rem !important}.ps-md-5{padding-left:3rem !important}.text-md-start{text-align:left !important}.text-md-end{text-align:right !important}.text-md-center{text-align:center !important}}@media(min-width: 992px){.float-lg-start{float:left !important}.float-lg-end{float:right !important}.float-lg-none{float:none !important}.d-lg-inline{display:inline !important}.d-lg-inline-block{display:inline-block !important}.d-lg-block{display:block !important}.d-lg-grid{display:grid !important}.d-lg-table{display:table !important}.d-lg-table-row{display:table-row !important}.d-lg-table-cell{display:table-cell !important}.d-lg-flex{display:flex !important}.d-lg-inline-flex{display:inline-flex !important}.d-lg-none{display:none !important}.flex-lg-fill{flex:1 1 auto !important}.flex-lg-row{flex-direction:row !important}.flex-lg-column{flex-direction:column !important}.flex-lg-row-reverse{flex-direction:row-reverse !important}.flex-lg-column-reverse{flex-direction:column-reverse !important}.flex-lg-grow-0{flex-grow:0 !important}.flex-lg-grow-1{flex-grow:1 !important}.flex-lg-shrink-0{flex-shrink:0 !important}.flex-lg-shrink-1{flex-shrink:1 !important}.flex-lg-wrap{flex-wrap:wrap !important}.flex-lg-nowrap{flex-wrap:nowrap !important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse !important}.gap-lg-0{gap:0 !important}.gap-lg-1{gap:.25rem !important}.gap-lg-2{gap:.5rem !important}.gap-lg-3{gap:1rem !important}.gap-lg-4{gap:1.5rem !important}.gap-lg-5{gap:3rem !important}.justify-content-lg-start{justify-content:flex-start !important}.justify-content-lg-end{justify-content:flex-end !important}.justify-content-lg-center{justify-content:center !important}.justify-content-lg-between{justify-content:space-between !important}.justify-content-lg-around{justify-content:space-around !important}.justify-content-lg-evenly{justify-content:space-evenly !important}.align-items-lg-start{align-items:flex-start !important}.align-items-lg-end{align-items:flex-end !important}.align-items-lg-center{align-items:center !important}.align-items-lg-baseline{align-items:baseline !important}.align-items-lg-stretch{align-items:stretch !important}.align-content-lg-start{align-content:flex-start !important}.align-content-lg-end{align-content:flex-end !important}.align-content-lg-center{align-content:center !important}.align-content-lg-between{align-content:space-between !important}.align-content-lg-around{align-content:space-around !important}.align-content-lg-stretch{align-content:stretch !important}.align-self-lg-auto{align-self:auto !important}.align-self-lg-start{align-self:flex-start !important}.align-self-lg-end{align-self:flex-end !important}.align-self-lg-center{align-self:center !important}.align-self-lg-baseline{align-self:baseline !important}.align-self-lg-stretch{align-self:stretch !important}.order-lg-first{order:-1 !important}.order-lg-0{order:0 !important}.order-lg-1{order:1 !important}.order-lg-2{order:2 !important}.order-lg-3{order:3 !important}.order-lg-4{order:4 !important}.order-lg-5{order:5 !important}.order-lg-last{order:6 !important}.m-lg-0{margin:0 !important}.m-lg-1{margin:.25rem !important}.m-lg-2{margin:.5rem !important}.m-lg-3{margin:1rem !important}.m-lg-4{margin:1.5rem !important}.m-lg-5{margin:3rem !important}.m-lg-auto{margin:auto !important}.mx-lg-0{margin-right:0 !important;margin-left:0 !important}.mx-lg-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-lg-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-lg-3{margin-right:1rem !important;margin-left:1rem !important}.mx-lg-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-lg-5{margin-right:3rem !important;margin-left:3rem !important}.mx-lg-auto{margin-right:auto !important;margin-left:auto !important}.my-lg-0{margin-top:0 !important;margin-bottom:0 !important}.my-lg-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-lg-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-lg-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-lg-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-lg-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-lg-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-lg-0{margin-top:0 !important}.mt-lg-1{margin-top:.25rem !important}.mt-lg-2{margin-top:.5rem !important}.mt-lg-3{margin-top:1rem !important}.mt-lg-4{margin-top:1.5rem !important}.mt-lg-5{margin-top:3rem !important}.mt-lg-auto{margin-top:auto !important}.me-lg-0{margin-right:0 !important}.me-lg-1{margin-right:.25rem !important}.me-lg-2{margin-right:.5rem !important}.me-lg-3{margin-right:1rem !important}.me-lg-4{margin-right:1.5rem !important}.me-lg-5{margin-right:3rem !important}.me-lg-auto{margin-right:auto !important}.mb-lg-0{margin-bottom:0 !important}.mb-lg-1{margin-bottom:.25rem !important}.mb-lg-2{margin-bottom:.5rem !important}.mb-lg-3{margin-bottom:1rem !important}.mb-lg-4{margin-bottom:1.5rem !important}.mb-lg-5{margin-bottom:3rem !important}.mb-lg-auto{margin-bottom:auto !important}.ms-lg-0{margin-left:0 !important}.ms-lg-1{margin-left:.25rem !important}.ms-lg-2{margin-left:.5rem !important}.ms-lg-3{margin-left:1rem !important}.ms-lg-4{margin-left:1.5rem !important}.ms-lg-5{margin-left:3rem !important}.ms-lg-auto{margin-left:auto !important}.p-lg-0{padding:0 !important}.p-lg-1{padding:.25rem !important}.p-lg-2{padding:.5rem !important}.p-lg-3{padding:1rem !important}.p-lg-4{padding:1.5rem !important}.p-lg-5{padding:3rem !important}.px-lg-0{padding-right:0 !important;padding-left:0 !important}.px-lg-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-lg-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-lg-3{padding-right:1rem !important;padding-left:1rem !important}.px-lg-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-lg-5{padding-right:3rem !important;padding-left:3rem !important}.py-lg-0{padding-top:0 !important;padding-bottom:0 !important}.py-lg-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-lg-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-lg-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-lg-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-lg-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-lg-0{padding-top:0 !important}.pt-lg-1{padding-top:.25rem !important}.pt-lg-2{padding-top:.5rem !important}.pt-lg-3{padding-top:1rem !important}.pt-lg-4{padding-top:1.5rem !important}.pt-lg-5{padding-top:3rem !important}.pe-lg-0{padding-right:0 !important}.pe-lg-1{padding-right:.25rem !important}.pe-lg-2{padding-right:.5rem !important}.pe-lg-3{padding-right:1rem !important}.pe-lg-4{padding-right:1.5rem !important}.pe-lg-5{padding-right:3rem !important}.pb-lg-0{padding-bottom:0 !important}.pb-lg-1{padding-bottom:.25rem !important}.pb-lg-2{padding-bottom:.5rem !important}.pb-lg-3{padding-bottom:1rem !important}.pb-lg-4{padding-bottom:1.5rem !important}.pb-lg-5{padding-bottom:3rem !important}.ps-lg-0{padding-left:0 !important}.ps-lg-1{padding-left:.25rem !important}.ps-lg-2{padding-left:.5rem !important}.ps-lg-3{padding-left:1rem !important}.ps-lg-4{padding-left:1.5rem !important}.ps-lg-5{padding-left:3rem !important}.text-lg-start{text-align:left !important}.text-lg-end{text-align:right !important}.text-lg-center{text-align:center !important}}@media(min-width: 1200px){.float-xl-start{float:left !important}.float-xl-end{float:right !important}.float-xl-none{float:none !important}.d-xl-inline{display:inline !important}.d-xl-inline-block{display:inline-block !important}.d-xl-block{display:block !important}.d-xl-grid{display:grid !important}.d-xl-table{display:table !important}.d-xl-table-row{display:table-row !important}.d-xl-table-cell{display:table-cell !important}.d-xl-flex{display:flex !important}.d-xl-inline-flex{display:inline-flex !important}.d-xl-none{display:none !important}.flex-xl-fill{flex:1 1 auto !important}.flex-xl-row{flex-direction:row !important}.flex-xl-column{flex-direction:column !important}.flex-xl-row-reverse{flex-direction:row-reverse !important}.flex-xl-column-reverse{flex-direction:column-reverse !important}.flex-xl-grow-0{flex-grow:0 !important}.flex-xl-grow-1{flex-grow:1 !important}.flex-xl-shrink-0{flex-shrink:0 !important}.flex-xl-shrink-1{flex-shrink:1 !important}.flex-xl-wrap{flex-wrap:wrap !important}.flex-xl-nowrap{flex-wrap:nowrap !important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse !important}.gap-xl-0{gap:0 !important}.gap-xl-1{gap:.25rem !important}.gap-xl-2{gap:.5rem !important}.gap-xl-3{gap:1rem !important}.gap-xl-4{gap:1.5rem !important}.gap-xl-5{gap:3rem !important}.justify-content-xl-start{justify-content:flex-start !important}.justify-content-xl-end{justify-content:flex-end !important}.justify-content-xl-center{justify-content:center !important}.justify-content-xl-between{justify-content:space-between !important}.justify-content-xl-around{justify-content:space-around !important}.justify-content-xl-evenly{justify-content:space-evenly !important}.align-items-xl-start{align-items:flex-start !important}.align-items-xl-end{align-items:flex-end !important}.align-items-xl-center{align-items:center !important}.align-items-xl-baseline{align-items:baseline !important}.align-items-xl-stretch{align-items:stretch !important}.align-content-xl-start{align-content:flex-start !important}.align-content-xl-end{align-content:flex-end !important}.align-content-xl-center{align-content:center !important}.align-content-xl-between{align-content:space-between !important}.align-content-xl-around{align-content:space-around !important}.align-content-xl-stretch{align-content:stretch !important}.align-self-xl-auto{align-self:auto !important}.align-self-xl-start{align-self:flex-start !important}.align-self-xl-end{align-self:flex-end !important}.align-self-xl-center{align-self:center !important}.align-self-xl-baseline{align-self:baseline !important}.align-self-xl-stretch{align-self:stretch !important}.order-xl-first{order:-1 !important}.order-xl-0{order:0 !important}.order-xl-1{order:1 !important}.order-xl-2{order:2 !important}.order-xl-3{order:3 !important}.order-xl-4{order:4 !important}.order-xl-5{order:5 !important}.order-xl-last{order:6 !important}.m-xl-0{margin:0 !important}.m-xl-1{margin:.25rem !important}.m-xl-2{margin:.5rem !important}.m-xl-3{margin:1rem !important}.m-xl-4{margin:1.5rem !important}.m-xl-5{margin:3rem !important}.m-xl-auto{margin:auto !important}.mx-xl-0{margin-right:0 !important;margin-left:0 !important}.mx-xl-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-xl-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-xl-3{margin-right:1rem !important;margin-left:1rem !important}.mx-xl-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-xl-5{margin-right:3rem !important;margin-left:3rem !important}.mx-xl-auto{margin-right:auto !important;margin-left:auto !important}.my-xl-0{margin-top:0 !important;margin-bottom:0 !important}.my-xl-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-xl-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-xl-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-xl-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-xl-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-xl-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-xl-0{margin-top:0 !important}.mt-xl-1{margin-top:.25rem !important}.mt-xl-2{margin-top:.5rem !important}.mt-xl-3{margin-top:1rem !important}.mt-xl-4{margin-top:1.5rem !important}.mt-xl-5{margin-top:3rem !important}.mt-xl-auto{margin-top:auto !important}.me-xl-0{margin-right:0 !important}.me-xl-1{margin-right:.25rem !important}.me-xl-2{margin-right:.5rem !important}.me-xl-3{margin-right:1rem !important}.me-xl-4{margin-right:1.5rem !important}.me-xl-5{margin-right:3rem !important}.me-xl-auto{margin-right:auto !important}.mb-xl-0{margin-bottom:0 !important}.mb-xl-1{margin-bottom:.25rem !important}.mb-xl-2{margin-bottom:.5rem !important}.mb-xl-3{margin-bottom:1rem !important}.mb-xl-4{margin-bottom:1.5rem !important}.mb-xl-5{margin-bottom:3rem !important}.mb-xl-auto{margin-bottom:auto !important}.ms-xl-0{margin-left:0 !important}.ms-xl-1{margin-left:.25rem !important}.ms-xl-2{margin-left:.5rem !important}.ms-xl-3{margin-left:1rem !important}.ms-xl-4{margin-left:1.5rem !important}.ms-xl-5{margin-left:3rem !important}.ms-xl-auto{margin-left:auto !important}.p-xl-0{padding:0 !important}.p-xl-1{padding:.25rem !important}.p-xl-2{padding:.5rem !important}.p-xl-3{padding:1rem !important}.p-xl-4{padding:1.5rem !important}.p-xl-5{padding:3rem !important}.px-xl-0{padding-right:0 !important;padding-left:0 !important}.px-xl-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-xl-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-xl-3{padding-right:1rem !important;padding-left:1rem !important}.px-xl-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-xl-5{padding-right:3rem !important;padding-left:3rem !important}.py-xl-0{padding-top:0 !important;padding-bottom:0 !important}.py-xl-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-xl-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-xl-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-xl-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-xl-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-xl-0{padding-top:0 !important}.pt-xl-1{padding-top:.25rem !important}.pt-xl-2{padding-top:.5rem !important}.pt-xl-3{padding-top:1rem !important}.pt-xl-4{padding-top:1.5rem !important}.pt-xl-5{padding-top:3rem !important}.pe-xl-0{padding-right:0 !important}.pe-xl-1{padding-right:.25rem !important}.pe-xl-2{padding-right:.5rem !important}.pe-xl-3{padding-right:1rem !important}.pe-xl-4{padding-right:1.5rem !important}.pe-xl-5{padding-right:3rem !important}.pb-xl-0{padding-bottom:0 !important}.pb-xl-1{padding-bottom:.25rem !important}.pb-xl-2{padding-bottom:.5rem !important}.pb-xl-3{padding-bottom:1rem !important}.pb-xl-4{padding-bottom:1.5rem !important}.pb-xl-5{padding-bottom:3rem !important}.ps-xl-0{padding-left:0 !important}.ps-xl-1{padding-left:.25rem !important}.ps-xl-2{padding-left:.5rem !important}.ps-xl-3{padding-left:1rem !important}.ps-xl-4{padding-left:1.5rem !important}.ps-xl-5{padding-left:3rem !important}.text-xl-start{text-align:left !important}.text-xl-end{text-align:right !important}.text-xl-center{text-align:center !important}}@media(min-width: 1400px){.float-xxl-start{float:left !important}.float-xxl-end{float:right !important}.float-xxl-none{float:none !important}.d-xxl-inline{display:inline !important}.d-xxl-inline-block{display:inline-block !important}.d-xxl-block{display:block !important}.d-xxl-grid{display:grid !important}.d-xxl-table{display:table !important}.d-xxl-table-row{display:table-row !important}.d-xxl-table-cell{display:table-cell !important}.d-xxl-flex{display:flex !important}.d-xxl-inline-flex{display:inline-flex !important}.d-xxl-none{display:none !important}.flex-xxl-fill{flex:1 1 auto !important}.flex-xxl-row{flex-direction:row !important}.flex-xxl-column{flex-direction:column !important}.flex-xxl-row-reverse{flex-direction:row-reverse !important}.flex-xxl-column-reverse{flex-direction:column-reverse !important}.flex-xxl-grow-0{flex-grow:0 !important}.flex-xxl-grow-1{flex-grow:1 !important}.flex-xxl-shrink-0{flex-shrink:0 !important}.flex-xxl-shrink-1{flex-shrink:1 !important}.flex-xxl-wrap{flex-wrap:wrap !important}.flex-xxl-nowrap{flex-wrap:nowrap !important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse !important}.gap-xxl-0{gap:0 !important}.gap-xxl-1{gap:.25rem !important}.gap-xxl-2{gap:.5rem !important}.gap-xxl-3{gap:1rem !important}.gap-xxl-4{gap:1.5rem !important}.gap-xxl-5{gap:3rem !important}.justify-content-xxl-start{justify-content:flex-start !important}.justify-content-xxl-end{justify-content:flex-end !important}.justify-content-xxl-center{justify-content:center !important}.justify-content-xxl-between{justify-content:space-between !important}.justify-content-xxl-around{justify-content:space-around !important}.justify-content-xxl-evenly{justify-content:space-evenly !important}.align-items-xxl-start{align-items:flex-start !important}.align-items-xxl-end{align-items:flex-end !important}.align-items-xxl-center{align-items:center !important}.align-items-xxl-baseline{align-items:baseline !important}.align-items-xxl-stretch{align-items:stretch !important}.align-content-xxl-start{align-content:flex-start !important}.align-content-xxl-end{align-content:flex-end !important}.align-content-xxl-center{align-content:center !important}.align-content-xxl-between{align-content:space-between !important}.align-content-xxl-around{align-content:space-around !important}.align-content-xxl-stretch{align-content:stretch !important}.align-self-xxl-auto{align-self:auto !important}.align-self-xxl-start{align-self:flex-start !important}.align-self-xxl-end{align-self:flex-end !important}.align-self-xxl-center{align-self:center !important}.align-self-xxl-baseline{align-self:baseline !important}.align-self-xxl-stretch{align-self:stretch !important}.order-xxl-first{order:-1 !important}.order-xxl-0{order:0 !important}.order-xxl-1{order:1 !important}.order-xxl-2{order:2 !important}.order-xxl-3{order:3 !important}.order-xxl-4{order:4 !important}.order-xxl-5{order:5 !important}.order-xxl-last{order:6 !important}.m-xxl-0{margin:0 !important}.m-xxl-1{margin:.25rem !important}.m-xxl-2{margin:.5rem !important}.m-xxl-3{margin:1rem !important}.m-xxl-4{margin:1.5rem !important}.m-xxl-5{margin:3rem !important}.m-xxl-auto{margin:auto !important}.mx-xxl-0{margin-right:0 !important;margin-left:0 !important}.mx-xxl-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-xxl-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-xxl-3{margin-right:1rem !important;margin-left:1rem !important}.mx-xxl-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-xxl-5{margin-right:3rem !important;margin-left:3rem !important}.mx-xxl-auto{margin-right:auto !important;margin-left:auto !important}.my-xxl-0{margin-top:0 !important;margin-bottom:0 !important}.my-xxl-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-xxl-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-xxl-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-xxl-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-xxl-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-xxl-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-xxl-0{margin-top:0 !important}.mt-xxl-1{margin-top:.25rem !important}.mt-xxl-2{margin-top:.5rem !important}.mt-xxl-3{margin-top:1rem !important}.mt-xxl-4{margin-top:1.5rem !important}.mt-xxl-5{margin-top:3rem !important}.mt-xxl-auto{margin-top:auto !important}.me-xxl-0{margin-right:0 !important}.me-xxl-1{margin-right:.25rem !important}.me-xxl-2{margin-right:.5rem !important}.me-xxl-3{margin-right:1rem !important}.me-xxl-4{margin-right:1.5rem !important}.me-xxl-5{margin-right:3rem !important}.me-xxl-auto{margin-right:auto !important}.mb-xxl-0{margin-bottom:0 !important}.mb-xxl-1{margin-bottom:.25rem !important}.mb-xxl-2{margin-bottom:.5rem !important}.mb-xxl-3{margin-bottom:1rem !important}.mb-xxl-4{margin-bottom:1.5rem !important}.mb-xxl-5{margin-bottom:3rem !important}.mb-xxl-auto{margin-bottom:auto !important}.ms-xxl-0{margin-left:0 !important}.ms-xxl-1{margin-left:.25rem !important}.ms-xxl-2{margin-left:.5rem !important}.ms-xxl-3{margin-left:1rem !important}.ms-xxl-4{margin-left:1.5rem !important}.ms-xxl-5{margin-left:3rem !important}.ms-xxl-auto{margin-left:auto !important}.p-xxl-0{padding:0 !important}.p-xxl-1{padding:.25rem !important}.p-xxl-2{padding:.5rem !important}.p-xxl-3{padding:1rem !important}.p-xxl-4{padding:1.5rem !important}.p-xxl-5{padding:3rem !important}.px-xxl-0{padding-right:0 !important;padding-left:0 !important}.px-xxl-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-xxl-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-xxl-3{padding-right:1rem !important;padding-left:1rem !important}.px-xxl-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-xxl-5{padding-right:3rem !important;padding-left:3rem !important}.py-xxl-0{padding-top:0 !important;padding-bottom:0 !important}.py-xxl-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-xxl-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-xxl-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-xxl-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-xxl-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-xxl-0{padding-top:0 !important}.pt-xxl-1{padding-top:.25rem !important}.pt-xxl-2{padding-top:.5rem !important}.pt-xxl-3{padding-top:1rem !important}.pt-xxl-4{padding-top:1.5rem !important}.pt-xxl-5{padding-top:3rem !important}.pe-xxl-0{padding-right:0 !important}.pe-xxl-1{padding-right:.25rem !important}.pe-xxl-2{padding-right:.5rem !important}.pe-xxl-3{padding-right:1rem !important}.pe-xxl-4{padding-right:1.5rem !important}.pe-xxl-5{padding-right:3rem !important}.pb-xxl-0{padding-bottom:0 !important}.pb-xxl-1{padding-bottom:.25rem !important}.pb-xxl-2{padding-bottom:.5rem !important}.pb-xxl-3{padding-bottom:1rem !important}.pb-xxl-4{padding-bottom:1.5rem !important}.pb-xxl-5{padding-bottom:3rem !important}.ps-xxl-0{padding-left:0 !important}.ps-xxl-1{padding-left:.25rem !important}.ps-xxl-2{padding-left:.5rem !important}.ps-xxl-3{padding-left:1rem !important}.ps-xxl-4{padding-left:1.5rem !important}.ps-xxl-5{padding-left:3rem !important}.text-xxl-start{text-align:left !important}.text-xxl-end{text-align:right !important}.text-xxl-center{text-align:center !important}}.bg-default{color:#fff}.bg-primary{color:#fff}.bg-secondary{color:#fff}.bg-success{color:#fff}.bg-info{color:#fff}.bg-warning{color:#fff}.bg-danger{color:#fff}.bg-light{color:#000}.bg-dark{color:#fff}@media(min-width: 1200px){.fs-1{font-size:2.2rem !important}.fs-2{font-size:1.75rem !important}.fs-3{font-size:1.5rem !important}}@media print{.d-print-inline{display:inline !important}.d-print-inline-block{display:inline-block !important}.d-print-block{display:block !important}.d-print-grid{display:grid !important}.d-print-table{display:table !important}.d-print-table-row{display:table-row !important}.d-print-table-cell{display:table-cell !important}.d-print-flex{display:flex !important}.d-print-inline-flex{display:inline-flex !important}.d-print-none{display:none !important}}.tippy-box[data-theme~=quarto]{background-color:#fff;color:#777;border-radius:.25rem;border:solid 1px #dee2e6;font-size:.875rem}.tippy-box[data-theme~=quarto] .tippy-arrow{color:#dee2e6}.tippy-box[data-placement^=bottom]>.tippy-arrow{top:-1px}.tippy-box[data-placement^=bottom]>.tippy-content{padding:.75em 1em;z-index:1}.top-right{position:absolute;top:1em;right:1em}.hidden{display:none !important}.zindex-bottom{z-index:-1 !important}.quarto-layout-panel{margin-bottom:1em}.quarto-layout-panel>figure{width:100%}.quarto-layout-panel>figure>figcaption,.quarto-layout-panel>.panel-caption{margin-top:10pt}.quarto-layout-panel>.table-caption{margin-top:0px}.table-caption p{margin-bottom:.5em}.quarto-layout-row{display:flex;flex-direction:row;align-items:flex-start}.quarto-layout-valign-top{align-items:flex-start}.quarto-layout-valign-bottom{align-items:flex-end}.quarto-layout-valign-center{align-items:center}.quarto-layout-cell{position:relative;margin-right:20px}.quarto-layout-cell:last-child{margin-right:0}.quarto-layout-cell figure,.quarto-layout-cell>p{margin:.2em}.quarto-layout-cell img{max-width:100%}.quarto-layout-cell .html-widget{width:100% !important}.quarto-layout-cell div figure p{margin:0}.quarto-layout-cell figure{display:inline-block;margin-inline-start:0;margin-inline-end:0}.quarto-layout-cell table{display:inline-table}.quarto-layout-cell-subref figcaption,figure .quarto-layout-row figure figcaption{text-align:center;font-style:italic}.quarto-figure{position:relative;margin-bottom:1em}.quarto-figure>figure{width:100%;margin-bottom:0}.quarto-figure-left>figure>p{text-align:left}.quarto-figure-center>figure>p{text-align:center}.quarto-figure-right>figure>p{text-align:right}figure>p:empty{display:none}figure>p:first-child{margin-top:0;margin-bottom:0}figure>figcaption{margin-top:.5em}div[id^=tbl-]{position:relative}.quarto-figure>.anchorjs-link,div[id^=tbl-]>.anchorjs-link{position:absolute;top:0;right:0}.quarto-figure:hover>.anchorjs-link,div[id^=tbl-]:hover>.anchorjs-link,h2:hover>.anchorjs-link,.h2:hover>.anchorjs-link,h3:hover>.anchorjs-link,.h3:hover>.anchorjs-link,h4:hover>.anchorjs-link,.h4:hover>.anchorjs-link,h5:hover>.anchorjs-link,.h5:hover>.anchorjs-link,h6:hover>.anchorjs-link,.h6:hover>.anchorjs-link,.reveal-anchorjs-link>.anchorjs-link{opacity:1}#title-block-header{margin-block-end:1rem;position:relative;margin-top:-1px}#title-block-header .abstract{margin-block-start:1rem}#title-block-header .abstract .abstract-title{font-weight:600}#title-block-header a{text-decoration:none}#title-block-header .author,#title-block-header .date,#title-block-header .doi{margin-block-end:.2rem}#title-block-header .quarto-title-block>div{display:flex}#title-block-header .quarto-title-block>div>h1,#title-block-header .quarto-title-block>div>.h1{flex-grow:1}#title-block-header .quarto-title-block>div>button{flex-shrink:0;height:2.25rem;margin-top:0}@media(min-width: 992px){#title-block-header .quarto-title-block>div>button{margin-top:5px}}tr.header>th>p:last-of-type{margin-bottom:0px}table,.table{caption-side:top;margin-bottom:1.5rem}caption,.table-caption{padding-top:.5rem;padding-bottom:.5rem;text-align:center}.utterances{max-width:none;margin-left:-8px}iframe{margin-bottom:1em}details{margin-bottom:1em}details[show]{margin-bottom:0}details>summary{color:#777}details>summary>p:only-child{display:inline}pre.sourceCode,code.sourceCode{position:relative}p code:not(.sourceCode){white-space:pre-wrap}code{white-space:pre}@media print{code{white-space:pre-wrap}}pre>code{display:block}pre>code.sourceCode{white-space:pre}pre>code.sourceCode>span>a:first-child::before{text-decoration:none}pre.code-overflow-wrap>code.sourceCode{white-space:pre-wrap}pre.code-overflow-scroll>code.sourceCode{white-space:pre}code a:any-link{color:inherit;text-decoration:none}code a:hover{color:inherit;text-decoration:underline}ul.task-list{padding-left:1em}[data-tippy-root]{display:inline-block}.tippy-content .footnote-back{display:none}.quarto-embedded-source-code{display:none}.quarto-unresolved-ref{font-weight:600}.quarto-cover-image{max-width:35%;float:right;margin-left:30px}.cell-output-display .widget-subarea{margin-bottom:1em}.cell-output-display:not(.no-overflow-x){overflow-x:auto}.panel-input{margin-bottom:1em}.panel-input>div,.panel-input>div>div{display:inline-block;vertical-align:top;padding-right:12px}.panel-input>p:last-child{margin-bottom:0}.layout-sidebar{margin-bottom:1em}.layout-sidebar .tab-content{border:none}.tab-content>.page-columns.active{display:grid}div.sourceCode>iframe{width:100%;height:300px;margin-bottom:-0.5em}div.ansi-escaped-output{font-family:monospace;display:block}/*! + */@import"https://fonts.googleapis.com/css2?family=Open+Sans:ital,wght@0,400;0,700;1,400;1,700&display=swap";:root{--bs-blue: #446e9b;--bs-indigo: #6610f2;--bs-purple: #6f42c1;--bs-pink: #e83e8c;--bs-red: #cd0200;--bs-orange: #fd7e14;--bs-yellow: #d47500;--bs-green: #3cb521;--bs-teal: #20c997;--bs-cyan: #3399f3;--bs-white: #fff;--bs-gray: #777;--bs-gray-dark: #333;--bs-gray-100: #f8f9fa;--bs-gray-200: #eee;--bs-gray-300: #dee2e6;--bs-gray-400: #ced4da;--bs-gray-500: #999;--bs-gray-600: #777;--bs-gray-700: #495057;--bs-gray-800: #333;--bs-gray-900: #2d2d2d;--bs-default: #999;--bs-primary: #446e9b;--bs-secondary: #999;--bs-success: #3cb521;--bs-info: #3399f3;--bs-warning: #d47500;--bs-danger: #cd0200;--bs-light: #eee;--bs-dark: #333;--bs-default-rgb: 153, 153, 153;--bs-primary-rgb: 68, 110, 155;--bs-secondary-rgb: 153, 153, 153;--bs-success-rgb: 60, 181, 33;--bs-info-rgb: 51, 153, 243;--bs-warning-rgb: 212, 117, 0;--bs-danger-rgb: 205, 2, 0;--bs-light-rgb: 238, 238, 238;--bs-dark-rgb: 51, 51, 51;--bs-white-rgb: 255, 255, 255;--bs-black-rgb: 0, 0, 0;--bs-body-color-rgb: 119, 119, 119;--bs-body-bg-rgb: 255, 255, 255;--bs-font-sans-serif: "Open Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";--bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));--bs-root-font-size: 0.8em;--bs-body-font-family: var(--bs-font-sans-serif);--bs-body-font-size: 1rem;--bs-body-font-weight: 400;--bs-body-line-height: 1.5;--bs-body-color: #777;--bs-body-bg: #fff}*,*::before,*::after{box-sizing:border-box}:root{font-size:var(--bs-root-font-size)}body{margin:0;font-family:var(--bs-body-font-family);font-size:var(--bs-body-font-size);font-weight:var(--bs-body-font-weight);line-height:var(--bs-body-line-height);color:var(--bs-body-color);text-align:var(--bs-body-text-align);background-color:var(--bs-body-bg);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(0,0,0,0)}hr{margin:1rem 0;color:inherit;background-color:currentColor;border:0;opacity:.25}hr:not([size]){height:1px}h6,.h6,h5,.h5,h4,.h4,h3,.h3,h2,.h2,h1,.h1{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2;color:#2d2d2d}h1,.h1{font-size:calc(1.325rem + 0.9vw)}@media(min-width: 1200px){h1,.h1{font-size:2rem}}h2,.h2{font-size:calc(1.29rem + 0.48vw)}@media(min-width: 1200px){h2,.h2{font-size:1.65rem}}h3,.h3{font-size:calc(1.27rem + 0.24vw)}@media(min-width: 1200px){h3,.h3{font-size:1.45rem}}h4,.h4{font-size:1.25rem}h5,.h5{font-size:1.1rem}h6,.h6{font-size:1rem}p{margin-top:0;margin-bottom:1rem}abbr[title],abbr[data-bs-original-title]{text-decoration:underline dotted;-webkit-text-decoration:underline dotted;-moz-text-decoration:underline dotted;-ms-text-decoration:underline dotted;-o-text-decoration:underline dotted;cursor:help;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-left:2rem}ol,ul,dl{margin-top:0;margin-bottom:1rem}ol ol,ul ul,ol ul,ul ol{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem;padding:.625rem 1.25rem;border-left:.25rem solid #eee}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}b,strong{font-weight:bolder}small,.small{font-size:0.875em}mark,.mark{padding:.2em;background-color:#fcf8e3}sub,sup{position:relative;font-size:0.75em;line-height:0;vertical-align:baseline}sub{bottom:-0.25em}sup{top:-0.5em}a{color:#3399f3;text-decoration:underline;-webkit-text-decoration:underline;-moz-text-decoration:underline;-ms-text-decoration:underline;-o-text-decoration:underline}a:hover{color:#297ac2}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}pre,code,kbd,samp{font-family:var(--bs-font-monospace);font-size:1em;direction:ltr /* rtl:ignore */;unicode-bidi:bidi-override}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:0.875em;color:#000;background-color:#fafafa;padding:.5rem;border:1px solid #dee2e6;border-radius:.25rem}pre code{background-color:rgba(0,0,0,0);font-size:inherit;color:inherit;word-break:normal}code{font-size:0.875em;color:#9753b8;background-color:#fafafa;border-radius:.25rem;padding:.125rem .25rem;word-wrap:break-word}a>code{color:inherit}kbd{padding:.4rem .4rem;font-size:0.875em;color:#fff;background-color:#2d2d2d;border-radius:.2rem}kbd kbd{padding:0;font-size:1em;font-weight:700}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:#777;text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}thead,tbody,tfoot,tr,td,th{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}input,button,select,optgroup,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]::-webkit-calendar-picker-indicator{display:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}button:not(:disabled),[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{float:left;width:100%;padding:0;margin-bottom:.5rem;font-size:calc(1.275rem + 0.3vw);line-height:inherit}@media(min-width: 1200px){legend{font-size:1.5rem}}legend+*{clear:left}::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-text,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:textfield}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::file-selector-button{font:inherit}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}iframe{border:0}summary{display:list-item;cursor:pointer}progress{vertical-align:baseline}[hidden]{display:none !important}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:calc(1.625rem + 4.5vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-1{font-size:5rem}}.display-2{font-size:calc(1.575rem + 3.9vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-2{font-size:4.5rem}}.display-3{font-size:calc(1.525rem + 3.3vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-3{font-size:4rem}}.display-4{font-size:calc(1.475rem + 2.7vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-4{font-size:3.5rem}}.display-5{font-size:calc(1.425rem + 2.1vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-5{font-size:3rem}}.display-6{font-size:calc(1.375rem + 1.5vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-6{font-size:2.5rem}}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:0.875em;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote>:last-child{margin-bottom:0}.blockquote-footer{margin-top:-1rem;margin-bottom:1rem;font-size:0.875em;color:#777}.blockquote-footer::before{content:"— "}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:0.875em;color:#777}.grid{display:grid;grid-template-rows:repeat(var(--bs-rows, 1), 1fr);grid-template-columns:repeat(var(--bs-columns, 12), 1fr);gap:var(--bs-gap, 1.5rem)}.grid .g-col-1{grid-column:auto/span 1}.grid .g-col-2{grid-column:auto/span 2}.grid .g-col-3{grid-column:auto/span 3}.grid .g-col-4{grid-column:auto/span 4}.grid .g-col-5{grid-column:auto/span 5}.grid .g-col-6{grid-column:auto/span 6}.grid .g-col-7{grid-column:auto/span 7}.grid .g-col-8{grid-column:auto/span 8}.grid .g-col-9{grid-column:auto/span 9}.grid .g-col-10{grid-column:auto/span 10}.grid .g-col-11{grid-column:auto/span 11}.grid .g-col-12{grid-column:auto/span 12}.grid .g-start-1{grid-column-start:1}.grid .g-start-2{grid-column-start:2}.grid .g-start-3{grid-column-start:3}.grid .g-start-4{grid-column-start:4}.grid .g-start-5{grid-column-start:5}.grid .g-start-6{grid-column-start:6}.grid .g-start-7{grid-column-start:7}.grid .g-start-8{grid-column-start:8}.grid .g-start-9{grid-column-start:9}.grid .g-start-10{grid-column-start:10}.grid .g-start-11{grid-column-start:11}@media(min-width: 576px){.grid .g-col-sm-1{grid-column:auto/span 1}.grid .g-col-sm-2{grid-column:auto/span 2}.grid .g-col-sm-3{grid-column:auto/span 3}.grid .g-col-sm-4{grid-column:auto/span 4}.grid .g-col-sm-5{grid-column:auto/span 5}.grid .g-col-sm-6{grid-column:auto/span 6}.grid .g-col-sm-7{grid-column:auto/span 7}.grid .g-col-sm-8{grid-column:auto/span 8}.grid .g-col-sm-9{grid-column:auto/span 9}.grid .g-col-sm-10{grid-column:auto/span 10}.grid .g-col-sm-11{grid-column:auto/span 11}.grid .g-col-sm-12{grid-column:auto/span 12}.grid .g-start-sm-1{grid-column-start:1}.grid .g-start-sm-2{grid-column-start:2}.grid .g-start-sm-3{grid-column-start:3}.grid .g-start-sm-4{grid-column-start:4}.grid .g-start-sm-5{grid-column-start:5}.grid .g-start-sm-6{grid-column-start:6}.grid .g-start-sm-7{grid-column-start:7}.grid .g-start-sm-8{grid-column-start:8}.grid .g-start-sm-9{grid-column-start:9}.grid .g-start-sm-10{grid-column-start:10}.grid .g-start-sm-11{grid-column-start:11}}@media(min-width: 768px){.grid .g-col-md-1{grid-column:auto/span 1}.grid .g-col-md-2{grid-column:auto/span 2}.grid .g-col-md-3{grid-column:auto/span 3}.grid .g-col-md-4{grid-column:auto/span 4}.grid .g-col-md-5{grid-column:auto/span 5}.grid .g-col-md-6{grid-column:auto/span 6}.grid .g-col-md-7{grid-column:auto/span 7}.grid .g-col-md-8{grid-column:auto/span 8}.grid .g-col-md-9{grid-column:auto/span 9}.grid .g-col-md-10{grid-column:auto/span 10}.grid .g-col-md-11{grid-column:auto/span 11}.grid .g-col-md-12{grid-column:auto/span 12}.grid .g-start-md-1{grid-column-start:1}.grid .g-start-md-2{grid-column-start:2}.grid .g-start-md-3{grid-column-start:3}.grid .g-start-md-4{grid-column-start:4}.grid .g-start-md-5{grid-column-start:5}.grid .g-start-md-6{grid-column-start:6}.grid .g-start-md-7{grid-column-start:7}.grid .g-start-md-8{grid-column-start:8}.grid .g-start-md-9{grid-column-start:9}.grid .g-start-md-10{grid-column-start:10}.grid .g-start-md-11{grid-column-start:11}}@media(min-width: 992px){.grid .g-col-lg-1{grid-column:auto/span 1}.grid .g-col-lg-2{grid-column:auto/span 2}.grid .g-col-lg-3{grid-column:auto/span 3}.grid .g-col-lg-4{grid-column:auto/span 4}.grid .g-col-lg-5{grid-column:auto/span 5}.grid .g-col-lg-6{grid-column:auto/span 6}.grid .g-col-lg-7{grid-column:auto/span 7}.grid .g-col-lg-8{grid-column:auto/span 8}.grid .g-col-lg-9{grid-column:auto/span 9}.grid .g-col-lg-10{grid-column:auto/span 10}.grid .g-col-lg-11{grid-column:auto/span 11}.grid .g-col-lg-12{grid-column:auto/span 12}.grid .g-start-lg-1{grid-column-start:1}.grid .g-start-lg-2{grid-column-start:2}.grid .g-start-lg-3{grid-column-start:3}.grid .g-start-lg-4{grid-column-start:4}.grid .g-start-lg-5{grid-column-start:5}.grid .g-start-lg-6{grid-column-start:6}.grid .g-start-lg-7{grid-column-start:7}.grid .g-start-lg-8{grid-column-start:8}.grid .g-start-lg-9{grid-column-start:9}.grid .g-start-lg-10{grid-column-start:10}.grid .g-start-lg-11{grid-column-start:11}}@media(min-width: 1200px){.grid .g-col-xl-1{grid-column:auto/span 1}.grid .g-col-xl-2{grid-column:auto/span 2}.grid .g-col-xl-3{grid-column:auto/span 3}.grid .g-col-xl-4{grid-column:auto/span 4}.grid .g-col-xl-5{grid-column:auto/span 5}.grid .g-col-xl-6{grid-column:auto/span 6}.grid .g-col-xl-7{grid-column:auto/span 7}.grid .g-col-xl-8{grid-column:auto/span 8}.grid .g-col-xl-9{grid-column:auto/span 9}.grid .g-col-xl-10{grid-column:auto/span 10}.grid .g-col-xl-11{grid-column:auto/span 11}.grid .g-col-xl-12{grid-column:auto/span 12}.grid .g-start-xl-1{grid-column-start:1}.grid .g-start-xl-2{grid-column-start:2}.grid .g-start-xl-3{grid-column-start:3}.grid .g-start-xl-4{grid-column-start:4}.grid .g-start-xl-5{grid-column-start:5}.grid .g-start-xl-6{grid-column-start:6}.grid .g-start-xl-7{grid-column-start:7}.grid .g-start-xl-8{grid-column-start:8}.grid .g-start-xl-9{grid-column-start:9}.grid .g-start-xl-10{grid-column-start:10}.grid .g-start-xl-11{grid-column-start:11}}@media(min-width: 1400px){.grid .g-col-xxl-1{grid-column:auto/span 1}.grid .g-col-xxl-2{grid-column:auto/span 2}.grid .g-col-xxl-3{grid-column:auto/span 3}.grid .g-col-xxl-4{grid-column:auto/span 4}.grid .g-col-xxl-5{grid-column:auto/span 5}.grid .g-col-xxl-6{grid-column:auto/span 6}.grid .g-col-xxl-7{grid-column:auto/span 7}.grid .g-col-xxl-8{grid-column:auto/span 8}.grid .g-col-xxl-9{grid-column:auto/span 9}.grid .g-col-xxl-10{grid-column:auto/span 10}.grid .g-col-xxl-11{grid-column:auto/span 11}.grid .g-col-xxl-12{grid-column:auto/span 12}.grid .g-start-xxl-1{grid-column-start:1}.grid .g-start-xxl-2{grid-column-start:2}.grid .g-start-xxl-3{grid-column-start:3}.grid .g-start-xxl-4{grid-column-start:4}.grid .g-start-xxl-5{grid-column-start:5}.grid .g-start-xxl-6{grid-column-start:6}.grid .g-start-xxl-7{grid-column-start:7}.grid .g-start-xxl-8{grid-column-start:8}.grid .g-start-xxl-9{grid-column-start:9}.grid .g-start-xxl-10{grid-column-start:10}.grid .g-start-xxl-11{grid-column-start:11}}.table{--bs-table-bg: transparent;--bs-table-accent-bg: transparent;--bs-table-striped-color: #777;--bs-table-striped-bg: rgba(0, 0, 0, 0.05);--bs-table-active-color: #777;--bs-table-active-bg: rgba(0, 0, 0, 0.1);--bs-table-hover-color: #777;--bs-table-hover-bg: rgba(0, 0, 0, 0.075);width:100%;margin-bottom:1rem;color:#777;vertical-align:top;border-color:#dee2e6}.table>:not(caption)>*>*{padding:.5rem .5rem;background-color:var(--bs-table-bg);border-bottom-width:1px;box-shadow:inset 0 0 0 9999px var(--bs-table-accent-bg)}.table>tbody{vertical-align:inherit}.table>thead{vertical-align:bottom}.table>:not(:first-child){border-top:2px solid #f7f7f7}.caption-top{caption-side:top}.table-sm>:not(caption)>*>*{padding:.25rem .25rem}.table-bordered>:not(caption)>*{border-width:1px 0}.table-bordered>:not(caption)>*>*{border-width:0 1px}.table-borderless>:not(caption)>*>*{border-bottom-width:0}.table-borderless>:not(:first-child){border-top-width:0}.table-striped>tbody>tr:nth-of-type(odd)>*{--bs-table-accent-bg: var(--bs-table-striped-bg);color:var(--bs-table-striped-color)}.table-active{--bs-table-accent-bg: var(--bs-table-active-bg);color:var(--bs-table-active-color)}.table-hover>tbody>tr:hover>*{--bs-table-accent-bg: var(--bs-table-hover-bg);color:var(--bs-table-hover-color)}.table-primary{--bs-table-bg: #dae2eb;--bs-table-striped-bg: #cfd7df;--bs-table-striped-color: #000;--bs-table-active-bg: #c4cbd4;--bs-table-active-color: #000;--bs-table-hover-bg: #cad1d9;--bs-table-hover-color: #000;color:#000;border-color:#c4cbd4}.table-secondary{--bs-table-bg: #ebebeb;--bs-table-striped-bg: #dfdfdf;--bs-table-striped-color: #000;--bs-table-active-bg: #d4d4d4;--bs-table-active-color: #000;--bs-table-hover-bg: #d9d9d9;--bs-table-hover-color: #000;color:#000;border-color:#d4d4d4}.table-success{--bs-table-bg: #d8f0d3;--bs-table-striped-bg: #cde4c8;--bs-table-striped-color: #000;--bs-table-active-bg: #c2d8be;--bs-table-active-color: #000;--bs-table-hover-bg: #c8dec3;--bs-table-hover-color: #000;color:#000;border-color:#c2d8be}.table-info{--bs-table-bg: #d6ebfd;--bs-table-striped-bg: #cbdff0;--bs-table-striped-color: #000;--bs-table-active-bg: #c1d4e4;--bs-table-active-color: #000;--bs-table-hover-bg: #c6d9ea;--bs-table-hover-color: #000;color:#000;border-color:#c1d4e4}.table-warning{--bs-table-bg: #f6e3cc;--bs-table-striped-bg: #ead8c2;--bs-table-striped-color: #000;--bs-table-active-bg: #ddccb8;--bs-table-active-color: #000;--bs-table-hover-bg: #e4d2bd;--bs-table-hover-color: #000;color:#000;border-color:#ddccb8}.table-danger{--bs-table-bg: #f5cccc;--bs-table-striped-bg: #e9c2c2;--bs-table-striped-color: #000;--bs-table-active-bg: #ddb8b8;--bs-table-active-color: #000;--bs-table-hover-bg: #e3bdbd;--bs-table-hover-color: #000;color:#000;border-color:#ddb8b8}.table-light{--bs-table-bg: #eee;--bs-table-striped-bg: #e2e2e2;--bs-table-striped-color: #000;--bs-table-active-bg: #d6d6d6;--bs-table-active-color: #000;--bs-table-hover-bg: gainsboro;--bs-table-hover-color: #000;color:#000;border-color:#d6d6d6}.table-dark{--bs-table-bg: #333;--bs-table-striped-bg: #3d3d3d;--bs-table-striped-color: #fff;--bs-table-active-bg: #474747;--bs-table-active-color: #fff;--bs-table-hover-bg: #424242;--bs-table-hover-color: #fff;color:#fff;border-color:#474747}.table-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch}@media(max-width: 575.98px){.table-responsive-sm{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media(max-width: 767.98px){.table-responsive-md{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media(max-width: 991.98px){.table-responsive-lg{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media(max-width: 1199.98px){.table-responsive-xl{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media(max-width: 1399.98px){.table-responsive-xxl{overflow-x:auto;-webkit-overflow-scrolling:touch}}.form-label,.shiny-input-container .control-label{margin-bottom:.5rem}.col-form-label{padding-top:calc(0.375rem + 1px);padding-bottom:calc(0.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(0.5rem + 1px);padding-bottom:calc(0.5rem + 1px);font-size:1.25rem}.col-form-label-sm{padding-top:calc(0.25rem + 1px);padding-bottom:calc(0.25rem + 1px);font-size:0.875rem}.form-text{margin-top:.25rem;font-size:0.875em;color:#777}.form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#777;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-control{transition:none}}.form-control[type=file]{overflow:hidden}.form-control[type=file]:not(:disabled):not([readonly]){cursor:pointer}.form-control:focus{color:#777;background-color:#fff;border-color:#a2b7cd;outline:0;box-shadow:0 0 0 .25rem rgba(68,110,155,.25)}.form-control::-webkit-date-and-time-value{height:1.5em}.form-control::placeholder{color:#777;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#eee;opacity:1}.form-control::file-selector-button{padding:.375rem .75rem;margin:-0.375rem -0.75rem;margin-inline-end:.75rem;color:#777;background-color:#eee;pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:1px;border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-control::file-selector-button{transition:none}}.form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:#e2e2e2}.form-control::-webkit-file-upload-button{padding:.375rem .75rem;margin:-0.375rem -0.75rem;margin-inline-end:.75rem;color:#777;background-color:#eee;pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:1px;border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-control::-webkit-file-upload-button{transition:none}}.form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button{background-color:#e2e2e2}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;line-height:1.5;color:#777;background-color:rgba(0,0,0,0);border:solid rgba(0,0,0,0);border-width:1px 0}.form-control-plaintext.form-control-sm,.form-control-plaintext.form-control-lg{padding-right:0;padding-left:0}.form-control-sm{min-height:calc(1.5em + 0.5rem + 2px);padding:.25rem .5rem;font-size:0.875rem;border-radius:.2rem}.form-control-sm::file-selector-button{padding:.25rem .5rem;margin:-0.25rem -0.5rem;margin-inline-end:.5rem}.form-control-sm::-webkit-file-upload-button{padding:.25rem .5rem;margin:-0.25rem -0.5rem;margin-inline-end:.5rem}.form-control-lg{min-height:calc(1.5em + 1rem + 2px);padding:.5rem 1rem;font-size:1.25rem;border-radius:.3rem}.form-control-lg::file-selector-button{padding:.5rem 1rem;margin:-0.5rem -1rem;margin-inline-end:1rem}.form-control-lg::-webkit-file-upload-button{padding:.5rem 1rem;margin:-0.5rem -1rem;margin-inline-end:1rem}textarea.form-control{min-height:calc(1.5em + 0.75rem + 2px)}textarea.form-control-sm{min-height:calc(1.5em + 0.5rem + 2px)}textarea.form-control-lg{min-height:calc(1.5em + 1rem + 2px)}.form-control-color{width:3rem;height:auto;padding:.375rem}.form-control-color:not(:disabled):not([readonly]){cursor:pointer}.form-control-color::-moz-color-swatch{height:1.5em;border-radius:.25rem}.form-control-color::-webkit-color-swatch{height:1.5em;border-radius:.25rem}.form-select{display:block;width:100%;padding:.375rem 2.25rem .375rem .75rem;-moz-padding-start:calc(0.75rem - 3px);font-size:1rem;font-weight:400;line-height:1.5;color:#777;background-color:#fff;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23333' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right .75rem center;background-size:16px 12px;border:1px solid #ced4da;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none}@media(prefers-reduced-motion: reduce){.form-select{transition:none}}.form-select:focus{border-color:#a2b7cd;outline:0;box-shadow:0 0 0 .25rem rgba(68,110,155,.25)}.form-select[multiple],.form-select[size]:not([size="1"]){padding-right:.75rem;background-image:none}.form-select:disabled{background-color:#eee}.form-select:-moz-focusring{color:rgba(0,0,0,0);text-shadow:0 0 0 #777}.form-select-sm{padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:0.875rem;border-radius:.2rem}.form-select-lg{padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem;border-radius:.3rem}.form-check,.shiny-input-container .checkbox,.shiny-input-container .radio{display:block;min-height:1.5rem;padding-left:0;margin-bottom:.125rem}.form-check .form-check-input,.form-check .shiny-input-container .checkbox input,.form-check .shiny-input-container .radio input,.shiny-input-container .checkbox .form-check-input,.shiny-input-container .checkbox .shiny-input-container .checkbox input,.shiny-input-container .checkbox .shiny-input-container .radio input,.shiny-input-container .radio .form-check-input,.shiny-input-container .radio .shiny-input-container .checkbox input,.shiny-input-container .radio .shiny-input-container .radio input{float:left;margin-left:0}.form-check-input,.shiny-input-container .checkbox input,.shiny-input-container .checkbox-inline input,.shiny-input-container .radio input,.shiny-input-container .radio-inline input{width:1em;height:1em;margin-top:.25em;vertical-align:top;background-color:#fff;background-repeat:no-repeat;background-position:center;background-size:contain;border:1px solid rgba(0,0,0,.25);appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none;color-adjust:exact;-webkit-print-color-adjust:exact}.form-check-input[type=checkbox],.shiny-input-container .checkbox input[type=checkbox],.shiny-input-container .checkbox-inline input[type=checkbox],.shiny-input-container .radio input[type=checkbox],.shiny-input-container .radio-inline input[type=checkbox]{border-radius:.25em}.form-check-input[type=radio],.shiny-input-container .checkbox input[type=radio],.shiny-input-container .checkbox-inline input[type=radio],.shiny-input-container .radio input[type=radio],.shiny-input-container .radio-inline input[type=radio]{border-radius:50%}.form-check-input:active,.shiny-input-container .checkbox input:active,.shiny-input-container .checkbox-inline input:active,.shiny-input-container .radio input:active,.shiny-input-container .radio-inline input:active{filter:brightness(90%)}.form-check-input:focus,.shiny-input-container .checkbox input:focus,.shiny-input-container .checkbox-inline input:focus,.shiny-input-container .radio input:focus,.shiny-input-container .radio-inline input:focus{border-color:#a2b7cd;outline:0;box-shadow:0 0 0 .25rem rgba(68,110,155,.25)}.form-check-input:checked,.shiny-input-container .checkbox input:checked,.shiny-input-container .checkbox-inline input:checked,.shiny-input-container .radio input:checked,.shiny-input-container .radio-inline input:checked{background-color:#446e9b;border-color:#446e9b}.form-check-input:checked[type=checkbox],.shiny-input-container .checkbox input:checked[type=checkbox],.shiny-input-container .checkbox-inline input:checked[type=checkbox],.shiny-input-container .radio input:checked[type=checkbox],.shiny-input-container .radio-inline input:checked[type=checkbox]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10l3 3l6-6'/%3e%3c/svg%3e")}.form-check-input:checked[type=radio],.shiny-input-container .checkbox input:checked[type=radio],.shiny-input-container .checkbox-inline input:checked[type=radio],.shiny-input-container .radio input:checked[type=radio],.shiny-input-container .radio-inline input:checked[type=radio]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e")}.form-check-input[type=checkbox]:indeterminate,.shiny-input-container .checkbox input[type=checkbox]:indeterminate,.shiny-input-container .checkbox-inline input[type=checkbox]:indeterminate,.shiny-input-container .radio input[type=checkbox]:indeterminate,.shiny-input-container .radio-inline input[type=checkbox]:indeterminate{background-color:#446e9b;border-color:#446e9b;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e")}.form-check-input:disabled,.shiny-input-container .checkbox input:disabled,.shiny-input-container .checkbox-inline input:disabled,.shiny-input-container .radio input:disabled,.shiny-input-container .radio-inline input:disabled{pointer-events:none;filter:none;opacity:.5}.form-check-input[disabled]~.form-check-label,.form-check-input[disabled]~span,.form-check-input:disabled~.form-check-label,.form-check-input:disabled~span,.shiny-input-container .checkbox input[disabled]~.form-check-label,.shiny-input-container .checkbox input[disabled]~span,.shiny-input-container .checkbox input:disabled~.form-check-label,.shiny-input-container .checkbox input:disabled~span,.shiny-input-container .checkbox-inline input[disabled]~.form-check-label,.shiny-input-container .checkbox-inline input[disabled]~span,.shiny-input-container .checkbox-inline input:disabled~.form-check-label,.shiny-input-container .checkbox-inline input:disabled~span,.shiny-input-container .radio input[disabled]~.form-check-label,.shiny-input-container .radio input[disabled]~span,.shiny-input-container .radio input:disabled~.form-check-label,.shiny-input-container .radio input:disabled~span,.shiny-input-container .radio-inline input[disabled]~.form-check-label,.shiny-input-container .radio-inline input[disabled]~span,.shiny-input-container .radio-inline input:disabled~.form-check-label,.shiny-input-container .radio-inline input:disabled~span{opacity:.5}.form-check-label,.shiny-input-container .checkbox label,.shiny-input-container .checkbox-inline label,.shiny-input-container .radio label,.shiny-input-container .radio-inline label{cursor:pointer}.form-switch{padding-left:2.5em}.form-switch .form-check-input{width:2em;margin-left:-2.5em;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e");background-position:left center;border-radius:2em;transition:background-position .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-switch .form-check-input{transition:none}}.form-switch .form-check-input:focus{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23a2b7cd'/%3e%3c/svg%3e")}.form-switch .form-check-input:checked{background-position:right center;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.form-check-inline,.shiny-input-container .checkbox-inline,.shiny-input-container .radio-inline{display:inline-block;margin-right:1rem}.btn-check{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.btn-check[disabled]+.btn,.btn-check:disabled+.btn{pointer-events:none;filter:none;opacity:.65}.form-range{width:100%;height:1.5rem;padding:0;background-color:rgba(0,0,0,0);appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none}.form-range:focus{outline:0}.form-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem rgba(68,110,155,.25)}.form-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem rgba(68,110,155,.25)}.form-range::-moz-focus-outer{border:0}.form-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-0.25rem;background-color:#446e9b;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none}@media(prefers-reduced-motion: reduce){.form-range::-webkit-slider-thumb{transition:none}}.form-range::-webkit-slider-thumb:active{background-color:#c7d4e1}.form-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:rgba(0,0,0,0);cursor:pointer;background-color:#dee2e6;border-color:rgba(0,0,0,0);border-radius:1rem}.form-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#446e9b;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none}@media(prefers-reduced-motion: reduce){.form-range::-moz-range-thumb{transition:none}}.form-range::-moz-range-thumb:active{background-color:#c7d4e1}.form-range::-moz-range-track{width:100%;height:.5rem;color:rgba(0,0,0,0);cursor:pointer;background-color:#dee2e6;border-color:rgba(0,0,0,0);border-radius:1rem}.form-range:disabled{pointer-events:none}.form-range:disabled::-webkit-slider-thumb{background-color:#999}.form-range:disabled::-moz-range-thumb{background-color:#999}.form-floating{position:relative}.form-floating>.form-control,.form-floating>.form-select{height:calc(3.5rem + 2px);line-height:1.25}.form-floating>label{position:absolute;top:0;left:0;height:100%;padding:1rem .75rem;pointer-events:none;border:1px solid rgba(0,0,0,0);transform-origin:0 0;transition:opacity .1s ease-in-out,transform .1s ease-in-out}@media(prefers-reduced-motion: reduce){.form-floating>label{transition:none}}.form-floating>.form-control{padding:1rem .75rem}.form-floating>.form-control::placeholder{color:rgba(0,0,0,0)}.form-floating>.form-control:focus,.form-floating>.form-control:not(:placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:-webkit-autofill{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-select{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:focus~label,.form-floating>.form-control:not(:placeholder-shown)~label,.form-floating>.form-select~label{opacity:.65;transform:scale(0.85) translateY(-0.5rem) translateX(0.15rem)}.form-floating>.form-control:-webkit-autofill~label{opacity:.65;transform:scale(0.85) translateY(-0.5rem) translateX(0.15rem)}.input-group{position:relative;display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;align-items:stretch;-webkit-align-items:stretch;width:100%}.input-group>.form-control,.input-group>.form-select{position:relative;flex:1 1 auto;-webkit-flex:1 1 auto;width:1%;min-width:0}.input-group>.form-control:focus,.input-group>.form-select:focus{z-index:3}.input-group .btn{position:relative;z-index:2}.input-group .btn:focus{z-index:3}.input-group-text{display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#777;text-align:center;white-space:nowrap;background-color:#eee;border:1px solid #ced4da;border-radius:.25rem}.input-group-lg>.form-control,.input-group-lg>.form-select,.input-group-lg>.input-group-text,.input-group-lg>.btn{padding:.5rem 1rem;font-size:1.25rem;border-radius:.3rem}.input-group-sm>.form-control,.input-group-sm>.form-select,.input-group-sm>.input-group-text,.input-group-sm>.btn{padding:.25rem .5rem;font-size:0.875rem;border-radius:.2rem}.input-group-lg>.form-select,.input-group-sm>.form-select{padding-right:3rem}.input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu),.input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3){border-top-right-radius:0;border-bottom-right-radius:0}.input-group.has-validation>:nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu),.input-group.has-validation>.dropdown-toggle:nth-last-child(n+4){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback){margin-left:-1px;border-top-left-radius:0;border-bottom-left-radius:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:0.875em;color:#3cb521}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:0.875rem;color:#fff;background-color:rgba(60,181,33,.9);border-radius:.25rem}.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip,.is-valid~.valid-feedback,.is-valid~.valid-tooltip{display:block}.was-validated .form-control:valid,.form-control.is-valid{border-color:#3cb521;padding-right:calc(1.5em + 0.75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%233cb521' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(0.375em + 0.1875rem) center;background-size:calc(0.75em + 0.375rem) calc(0.75em + 0.375rem)}.was-validated .form-control:valid:focus,.form-control.is-valid:focus{border-color:#3cb521;box-shadow:0 0 0 .25rem rgba(60,181,33,.25)}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + 0.75rem);background-position:top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem)}.was-validated .form-select:valid,.form-select.is-valid{border-color:#3cb521}.was-validated .form-select:valid:not([multiple]):not([size]),.was-validated .form-select:valid:not([multiple])[size="1"],.form-select.is-valid:not([multiple]):not([size]),.form-select.is-valid:not([multiple])[size="1"]{padding-right:4.125rem;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23333' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e"),url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%233cb521' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(0.75em + 0.375rem) calc(0.75em + 0.375rem)}.was-validated .form-select:valid:focus,.form-select.is-valid:focus{border-color:#3cb521;box-shadow:0 0 0 .25rem rgba(60,181,33,.25)}.was-validated .form-check-input:valid,.form-check-input.is-valid{border-color:#3cb521}.was-validated .form-check-input:valid:checked,.form-check-input.is-valid:checked{background-color:#3cb521}.was-validated .form-check-input:valid:focus,.form-check-input.is-valid:focus{box-shadow:0 0 0 .25rem rgba(60,181,33,.25)}.was-validated .form-check-input:valid~.form-check-label,.form-check-input.is-valid~.form-check-label{color:#3cb521}.form-check-inline .form-check-input~.valid-feedback{margin-left:.5em}.was-validated .input-group .form-control:valid,.input-group .form-control.is-valid,.was-validated .input-group .form-select:valid,.input-group .form-select.is-valid{z-index:1}.was-validated .input-group .form-control:valid:focus,.input-group .form-control.is-valid:focus,.was-validated .input-group .form-select:valid:focus,.input-group .form-select.is-valid:focus{z-index:3}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:0.875em;color:#cd0200}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:0.875rem;color:#fff;background-color:rgba(205,2,0,.9);border-radius:.25rem}.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip,.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip{display:block}.was-validated .form-control:invalid,.form-control.is-invalid{border-color:#cd0200;padding-right:calc(1.5em + 0.75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23cd0200'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23cd0200' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(0.375em + 0.1875rem) center;background-size:calc(0.75em + 0.375rem) calc(0.75em + 0.375rem)}.was-validated .form-control:invalid:focus,.form-control.is-invalid:focus{border-color:#cd0200;box-shadow:0 0 0 .25rem rgba(205,2,0,.25)}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + 0.75rem);background-position:top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem)}.was-validated .form-select:invalid,.form-select.is-invalid{border-color:#cd0200}.was-validated .form-select:invalid:not([multiple]):not([size]),.was-validated .form-select:invalid:not([multiple])[size="1"],.form-select.is-invalid:not([multiple]):not([size]),.form-select.is-invalid:not([multiple])[size="1"]{padding-right:4.125rem;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23333' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e"),url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23cd0200'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23cd0200' stroke='none'/%3e%3c/svg%3e");background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(0.75em + 0.375rem) calc(0.75em + 0.375rem)}.was-validated .form-select:invalid:focus,.form-select.is-invalid:focus{border-color:#cd0200;box-shadow:0 0 0 .25rem rgba(205,2,0,.25)}.was-validated .form-check-input:invalid,.form-check-input.is-invalid{border-color:#cd0200}.was-validated .form-check-input:invalid:checked,.form-check-input.is-invalid:checked{background-color:#cd0200}.was-validated .form-check-input:invalid:focus,.form-check-input.is-invalid:focus{box-shadow:0 0 0 .25rem rgba(205,2,0,.25)}.was-validated .form-check-input:invalid~.form-check-label,.form-check-input.is-invalid~.form-check-label{color:#cd0200}.form-check-inline .form-check-input~.invalid-feedback{margin-left:.5em}.was-validated .input-group .form-control:invalid,.input-group .form-control.is-invalid,.was-validated .input-group .form-select:invalid,.input-group .form-select.is-invalid{z-index:2}.was-validated .input-group .form-control:invalid:focus,.input-group .form-control.is-invalid:focus,.was-validated .input-group .form-select:invalid:focus,.input-group .form-select.is-invalid:focus{z-index:3}.btn{display:inline-block;font-weight:400;line-height:1.5;color:#777;text-align:center;text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;vertical-align:middle;cursor:pointer;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;background-color:rgba(0,0,0,0);border:1px solid rgba(0,0,0,0);padding:.375rem .75rem;font-size:1rem;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.btn{transition:none}}.btn:hover{color:#777}.btn-check:focus+.btn,.btn:focus{outline:0;box-shadow:0 0 0 .25rem rgba(68,110,155,.25)}.btn:disabled,.btn.disabled,fieldset:disabled .btn{pointer-events:none;opacity:.65}.btn-default{color:#fff;background-color:#999;border-color:#999}.btn-default:hover{color:#fff;background-color:#828282;border-color:#7a7a7a}.btn-check:focus+.btn-default,.btn-default:focus{color:#fff;background-color:#828282;border-color:#7a7a7a;box-shadow:0 0 0 .25rem rgba(168,168,168,.5)}.btn-check:checked+.btn-default,.btn-check:active+.btn-default,.btn-default:active,.btn-default.active,.show>.btn-default.dropdown-toggle{color:#fff;background-color:#7a7a7a;border-color:#737373}.btn-check:checked+.btn-default:focus,.btn-check:active+.btn-default:focus,.btn-default:active:focus,.btn-default.active:focus,.show>.btn-default.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(168,168,168,.5)}.btn-default:disabled,.btn-default.disabled{color:#fff;background-color:#999;border-color:#999}.btn-primary{color:#fff;background-color:#446e9b;border-color:#446e9b}.btn-primary:hover{color:#fff;background-color:#3a5e84;border-color:#36587c}.btn-check:focus+.btn-primary,.btn-primary:focus{color:#fff;background-color:#3a5e84;border-color:#36587c;box-shadow:0 0 0 .25rem rgba(96,132,170,.5)}.btn-check:checked+.btn-primary,.btn-check:active+.btn-primary,.btn-primary:active,.btn-primary.active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#36587c;border-color:#335374}.btn-check:checked+.btn-primary:focus,.btn-check:active+.btn-primary:focus,.btn-primary:active:focus,.btn-primary.active:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(96,132,170,.5)}.btn-primary:disabled,.btn-primary.disabled{color:#fff;background-color:#446e9b;border-color:#446e9b}.btn-secondary{color:#fff;background-color:#999;border-color:#999}.btn-secondary:hover{color:#fff;background-color:#828282;border-color:#7a7a7a}.btn-check:focus+.btn-secondary,.btn-secondary:focus{color:#fff;background-color:#828282;border-color:#7a7a7a;box-shadow:0 0 0 .25rem rgba(168,168,168,.5)}.btn-check:checked+.btn-secondary,.btn-check:active+.btn-secondary,.btn-secondary:active,.btn-secondary.active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#7a7a7a;border-color:#737373}.btn-check:checked+.btn-secondary:focus,.btn-check:active+.btn-secondary:focus,.btn-secondary:active:focus,.btn-secondary.active:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(168,168,168,.5)}.btn-secondary:disabled,.btn-secondary.disabled{color:#fff;background-color:#999;border-color:#999}.btn-success{color:#fff;background-color:#3cb521;border-color:#3cb521}.btn-success:hover{color:#fff;background-color:#339a1c;border-color:#30911a}.btn-check:focus+.btn-success,.btn-success:focus{color:#fff;background-color:#339a1c;border-color:#30911a;box-shadow:0 0 0 .25rem rgba(89,192,66,.5)}.btn-check:checked+.btn-success,.btn-check:active+.btn-success,.btn-success:active,.btn-success.active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#30911a;border-color:#2d8819}.btn-check:checked+.btn-success:focus,.btn-check:active+.btn-success:focus,.btn-success:active:focus,.btn-success.active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(89,192,66,.5)}.btn-success:disabled,.btn-success.disabled{color:#fff;background-color:#3cb521;border-color:#3cb521}.btn-info{color:#fff;background-color:#3399f3;border-color:#3399f3}.btn-info:hover{color:#fff;background-color:#2b82cf;border-color:#297ac2}.btn-check:focus+.btn-info,.btn-info:focus{color:#fff;background-color:#2b82cf;border-color:#297ac2;box-shadow:0 0 0 .25rem rgba(82,168,245,.5)}.btn-check:checked+.btn-info,.btn-check:active+.btn-info,.btn-info:active,.btn-info.active,.show>.btn-info.dropdown-toggle{color:#fff;background-color:#297ac2;border-color:#2673b6}.btn-check:checked+.btn-info:focus,.btn-check:active+.btn-info:focus,.btn-info:active:focus,.btn-info.active:focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(82,168,245,.5)}.btn-info:disabled,.btn-info.disabled{color:#fff;background-color:#3399f3;border-color:#3399f3}.btn-warning{color:#fff;background-color:#d47500;border-color:#d47500}.btn-warning:hover{color:#fff;background-color:#b46300;border-color:#aa5e00}.btn-check:focus+.btn-warning,.btn-warning:focus{color:#fff;background-color:#b46300;border-color:#aa5e00;box-shadow:0 0 0 .25rem rgba(218,138,38,.5)}.btn-check:checked+.btn-warning,.btn-check:active+.btn-warning,.btn-warning:active,.btn-warning.active,.show>.btn-warning.dropdown-toggle{color:#fff;background-color:#aa5e00;border-color:#9f5800}.btn-check:checked+.btn-warning:focus,.btn-check:active+.btn-warning:focus,.btn-warning:active:focus,.btn-warning.active:focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(218,138,38,.5)}.btn-warning:disabled,.btn-warning.disabled{color:#fff;background-color:#d47500;border-color:#d47500}.btn-danger{color:#fff;background-color:#cd0200;border-color:#cd0200}.btn-danger:hover{color:#fff;background-color:#ae0200;border-color:#a40200}.btn-check:focus+.btn-danger,.btn-danger:focus{color:#fff;background-color:#ae0200;border-color:#a40200;box-shadow:0 0 0 .25rem rgba(213,40,38,.5)}.btn-check:checked+.btn-danger,.btn-check:active+.btn-danger,.btn-danger:active,.btn-danger.active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#a40200;border-color:#9a0200}.btn-check:checked+.btn-danger:focus,.btn-check:active+.btn-danger:focus,.btn-danger:active:focus,.btn-danger.active:focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(213,40,38,.5)}.btn-danger:disabled,.btn-danger.disabled{color:#fff;background-color:#cd0200;border-color:#cd0200}.btn-light{color:#000;background-color:#eee;border-color:#eee}.btn-light:hover{color:#000;background-color:#f1f1f1;border-color:#f0f0f0}.btn-check:focus+.btn-light,.btn-light:focus{color:#000;background-color:#f1f1f1;border-color:#f0f0f0;box-shadow:0 0 0 .25rem rgba(202,202,202,.5)}.btn-check:checked+.btn-light,.btn-check:active+.btn-light,.btn-light:active,.btn-light.active,.show>.btn-light.dropdown-toggle{color:#000;background-color:#f1f1f1;border-color:#f0f0f0}.btn-check:checked+.btn-light:focus,.btn-check:active+.btn-light:focus,.btn-light:active:focus,.btn-light.active:focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(202,202,202,.5)}.btn-light:disabled,.btn-light.disabled{color:#000;background-color:#eee;border-color:#eee}.btn-dark{color:#fff;background-color:#333;border-color:#333}.btn-dark:hover{color:#fff;background-color:#2b2b2b;border-color:#292929}.btn-check:focus+.btn-dark,.btn-dark:focus{color:#fff;background-color:#2b2b2b;border-color:#292929;box-shadow:0 0 0 .25rem rgba(82,82,82,.5)}.btn-check:checked+.btn-dark,.btn-check:active+.btn-dark,.btn-dark:active,.btn-dark.active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#292929;border-color:#262626}.btn-check:checked+.btn-dark:focus,.btn-check:active+.btn-dark:focus,.btn-dark:active:focus,.btn-dark.active:focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(82,82,82,.5)}.btn-dark:disabled,.btn-dark.disabled{color:#fff;background-color:#333;border-color:#333}.btn-outline-default{color:#999;border-color:#999;background-color:rgba(0,0,0,0)}.btn-outline-default:hover{color:#fff;background-color:#999;border-color:#999}.btn-check:focus+.btn-outline-default,.btn-outline-default:focus{box-shadow:0 0 0 .25rem rgba(153,153,153,.5)}.btn-check:checked+.btn-outline-default,.btn-check:active+.btn-outline-default,.btn-outline-default:active,.btn-outline-default.active,.btn-outline-default.dropdown-toggle.show{color:#fff;background-color:#999;border-color:#999}.btn-check:checked+.btn-outline-default:focus,.btn-check:active+.btn-outline-default:focus,.btn-outline-default:active:focus,.btn-outline-default.active:focus,.btn-outline-default.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem rgba(153,153,153,.5)}.btn-outline-default:disabled,.btn-outline-default.disabled{color:#999;background-color:rgba(0,0,0,0)}.btn-outline-primary{color:#446e9b;border-color:#446e9b;background-color:rgba(0,0,0,0)}.btn-outline-primary:hover{color:#fff;background-color:#446e9b;border-color:#446e9b}.btn-check:focus+.btn-outline-primary,.btn-outline-primary:focus{box-shadow:0 0 0 .25rem rgba(68,110,155,.5)}.btn-check:checked+.btn-outline-primary,.btn-check:active+.btn-outline-primary,.btn-outline-primary:active,.btn-outline-primary.active,.btn-outline-primary.dropdown-toggle.show{color:#fff;background-color:#446e9b;border-color:#446e9b}.btn-check:checked+.btn-outline-primary:focus,.btn-check:active+.btn-outline-primary:focus,.btn-outline-primary:active:focus,.btn-outline-primary.active:focus,.btn-outline-primary.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem rgba(68,110,155,.5)}.btn-outline-primary:disabled,.btn-outline-primary.disabled{color:#446e9b;background-color:rgba(0,0,0,0)}.btn-outline-secondary{color:#999;border-color:#999;background-color:rgba(0,0,0,0)}.btn-outline-secondary:hover{color:#fff;background-color:#999;border-color:#999}.btn-check:focus+.btn-outline-secondary,.btn-outline-secondary:focus{box-shadow:0 0 0 .25rem rgba(153,153,153,.5)}.btn-check:checked+.btn-outline-secondary,.btn-check:active+.btn-outline-secondary,.btn-outline-secondary:active,.btn-outline-secondary.active,.btn-outline-secondary.dropdown-toggle.show{color:#fff;background-color:#999;border-color:#999}.btn-check:checked+.btn-outline-secondary:focus,.btn-check:active+.btn-outline-secondary:focus,.btn-outline-secondary:active:focus,.btn-outline-secondary.active:focus,.btn-outline-secondary.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem rgba(153,153,153,.5)}.btn-outline-secondary:disabled,.btn-outline-secondary.disabled{color:#999;background-color:rgba(0,0,0,0)}.btn-outline-success{color:#3cb521;border-color:#3cb521;background-color:rgba(0,0,0,0)}.btn-outline-success:hover{color:#fff;background-color:#3cb521;border-color:#3cb521}.btn-check:focus+.btn-outline-success,.btn-outline-success:focus{box-shadow:0 0 0 .25rem rgba(60,181,33,.5)}.btn-check:checked+.btn-outline-success,.btn-check:active+.btn-outline-success,.btn-outline-success:active,.btn-outline-success.active,.btn-outline-success.dropdown-toggle.show{color:#fff;background-color:#3cb521;border-color:#3cb521}.btn-check:checked+.btn-outline-success:focus,.btn-check:active+.btn-outline-success:focus,.btn-outline-success:active:focus,.btn-outline-success.active:focus,.btn-outline-success.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem rgba(60,181,33,.5)}.btn-outline-success:disabled,.btn-outline-success.disabled{color:#3cb521;background-color:rgba(0,0,0,0)}.btn-outline-info{color:#3399f3;border-color:#3399f3;background-color:rgba(0,0,0,0)}.btn-outline-info:hover{color:#fff;background-color:#3399f3;border-color:#3399f3}.btn-check:focus+.btn-outline-info,.btn-outline-info:focus{box-shadow:0 0 0 .25rem rgba(51,153,243,.5)}.btn-check:checked+.btn-outline-info,.btn-check:active+.btn-outline-info,.btn-outline-info:active,.btn-outline-info.active,.btn-outline-info.dropdown-toggle.show{color:#fff;background-color:#3399f3;border-color:#3399f3}.btn-check:checked+.btn-outline-info:focus,.btn-check:active+.btn-outline-info:focus,.btn-outline-info:active:focus,.btn-outline-info.active:focus,.btn-outline-info.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem rgba(51,153,243,.5)}.btn-outline-info:disabled,.btn-outline-info.disabled{color:#3399f3;background-color:rgba(0,0,0,0)}.btn-outline-warning{color:#d47500;border-color:#d47500;background-color:rgba(0,0,0,0)}.btn-outline-warning:hover{color:#fff;background-color:#d47500;border-color:#d47500}.btn-check:focus+.btn-outline-warning,.btn-outline-warning:focus{box-shadow:0 0 0 .25rem rgba(212,117,0,.5)}.btn-check:checked+.btn-outline-warning,.btn-check:active+.btn-outline-warning,.btn-outline-warning:active,.btn-outline-warning.active,.btn-outline-warning.dropdown-toggle.show{color:#fff;background-color:#d47500;border-color:#d47500}.btn-check:checked+.btn-outline-warning:focus,.btn-check:active+.btn-outline-warning:focus,.btn-outline-warning:active:focus,.btn-outline-warning.active:focus,.btn-outline-warning.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem rgba(212,117,0,.5)}.btn-outline-warning:disabled,.btn-outline-warning.disabled{color:#d47500;background-color:rgba(0,0,0,0)}.btn-outline-danger{color:#cd0200;border-color:#cd0200;background-color:rgba(0,0,0,0)}.btn-outline-danger:hover{color:#fff;background-color:#cd0200;border-color:#cd0200}.btn-check:focus+.btn-outline-danger,.btn-outline-danger:focus{box-shadow:0 0 0 .25rem rgba(205,2,0,.5)}.btn-check:checked+.btn-outline-danger,.btn-check:active+.btn-outline-danger,.btn-outline-danger:active,.btn-outline-danger.active,.btn-outline-danger.dropdown-toggle.show{color:#fff;background-color:#cd0200;border-color:#cd0200}.btn-check:checked+.btn-outline-danger:focus,.btn-check:active+.btn-outline-danger:focus,.btn-outline-danger:active:focus,.btn-outline-danger.active:focus,.btn-outline-danger.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem rgba(205,2,0,.5)}.btn-outline-danger:disabled,.btn-outline-danger.disabled{color:#cd0200;background-color:rgba(0,0,0,0)}.btn-outline-light{color:#eee;border-color:#eee;background-color:rgba(0,0,0,0)}.btn-outline-light:hover{color:#000;background-color:#eee;border-color:#eee}.btn-check:focus+.btn-outline-light,.btn-outline-light:focus{box-shadow:0 0 0 .25rem rgba(238,238,238,.5)}.btn-check:checked+.btn-outline-light,.btn-check:active+.btn-outline-light,.btn-outline-light:active,.btn-outline-light.active,.btn-outline-light.dropdown-toggle.show{color:#000;background-color:#eee;border-color:#eee}.btn-check:checked+.btn-outline-light:focus,.btn-check:active+.btn-outline-light:focus,.btn-outline-light:active:focus,.btn-outline-light.active:focus,.btn-outline-light.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem rgba(238,238,238,.5)}.btn-outline-light:disabled,.btn-outline-light.disabled{color:#eee;background-color:rgba(0,0,0,0)}.btn-outline-dark{color:#333;border-color:#333;background-color:rgba(0,0,0,0)}.btn-outline-dark:hover{color:#fff;background-color:#333;border-color:#333}.btn-check:focus+.btn-outline-dark,.btn-outline-dark:focus{box-shadow:0 0 0 .25rem rgba(51,51,51,.5)}.btn-check:checked+.btn-outline-dark,.btn-check:active+.btn-outline-dark,.btn-outline-dark:active,.btn-outline-dark.active,.btn-outline-dark.dropdown-toggle.show{color:#fff;background-color:#333;border-color:#333}.btn-check:checked+.btn-outline-dark:focus,.btn-check:active+.btn-outline-dark:focus,.btn-outline-dark:active:focus,.btn-outline-dark.active:focus,.btn-outline-dark.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem rgba(51,51,51,.5)}.btn-outline-dark:disabled,.btn-outline-dark.disabled{color:#333;background-color:rgba(0,0,0,0)}.btn-link{font-weight:400;color:#3399f3;text-decoration:underline;-webkit-text-decoration:underline;-moz-text-decoration:underline;-ms-text-decoration:underline;-o-text-decoration:underline}.btn-link:hover{color:#297ac2}.btn-link:disabled,.btn-link.disabled{color:#777}.btn-lg,.btn-group-lg>.btn{padding:.5rem 1rem;font-size:1.25rem;border-radius:.3rem}.btn-sm,.btn-group-sm>.btn{padding:.25rem .5rem;font-size:0.875rem;border-radius:.2rem}.fade{transition:opacity .15s linear}@media(prefers-reduced-motion: reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{height:0;overflow:hidden;transition:height .2s ease}@media(prefers-reduced-motion: reduce){.collapsing{transition:none}}.collapsing.collapse-horizontal{width:0;height:auto;transition:width .35s ease}@media(prefers-reduced-motion: reduce){.collapsing.collapse-horizontal{transition:none}}.dropup,.dropend,.dropdown,.dropstart{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid rgba(0,0,0,0);border-bottom:0;border-left:.3em solid rgba(0,0,0,0)}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{position:absolute;z-index:1000;display:none;min-width:10rem;padding:.5rem 0;margin:0;font-size:1rem;color:#777;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.dropdown-menu[data-bs-popper]{top:100%;left:0;margin-top:.125rem}.dropdown-menu-start{--bs-position: start}.dropdown-menu-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-end{--bs-position: end}.dropdown-menu-end[data-bs-popper]{right:0;left:auto}@media(min-width: 576px){.dropdown-menu-sm-start{--bs-position: start}.dropdown-menu-sm-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-sm-end{--bs-position: end}.dropdown-menu-sm-end[data-bs-popper]{right:0;left:auto}}@media(min-width: 768px){.dropdown-menu-md-start{--bs-position: start}.dropdown-menu-md-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-md-end{--bs-position: end}.dropdown-menu-md-end[data-bs-popper]{right:0;left:auto}}@media(min-width: 992px){.dropdown-menu-lg-start{--bs-position: start}.dropdown-menu-lg-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-lg-end{--bs-position: end}.dropdown-menu-lg-end[data-bs-popper]{right:0;left:auto}}@media(min-width: 1200px){.dropdown-menu-xl-start{--bs-position: start}.dropdown-menu-xl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xl-end{--bs-position: end}.dropdown-menu-xl-end[data-bs-popper]{right:0;left:auto}}@media(min-width: 1400px){.dropdown-menu-xxl-start{--bs-position: start}.dropdown-menu-xxl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xxl-end{--bs-position: end}.dropdown-menu-xxl-end[data-bs-popper]{right:0;left:auto}}.dropup .dropdown-menu[data-bs-popper]{top:auto;bottom:100%;margin-top:0;margin-bottom:.125rem}.dropup .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid rgba(0,0,0,0);border-bottom:.3em solid;border-left:.3em solid rgba(0,0,0,0)}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-menu[data-bs-popper]{top:0;right:auto;left:100%;margin-top:0;margin-left:.125rem}.dropend .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid rgba(0,0,0,0);border-right:0;border-bottom:.3em solid rgba(0,0,0,0);border-left:.3em solid}.dropend .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-toggle::after{vertical-align:0}.dropstart .dropdown-menu[data-bs-popper]{top:0;right:100%;left:auto;margin-top:0;margin-right:.125rem}.dropstart .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}.dropstart .dropdown-toggle::after{display:none}.dropstart .dropdown-toggle::before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid rgba(0,0,0,0);border-right:.3em solid;border-bottom:.3em solid rgba(0,0,0,0)}.dropstart .dropdown-toggle:empty::after{margin-left:0}.dropstart .dropdown-toggle::before{vertical-align:0}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid rgba(0,0,0,.15)}.dropdown-item{display:block;width:100%;padding:.25rem 1rem;clear:both;font-weight:400;color:#2d2d2d;text-align:inherit;text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;white-space:nowrap;background-color:rgba(0,0,0,0);border:0}.dropdown-item:hover,.dropdown-item:focus{color:#292929;background-color:#eee}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#446e9b}.dropdown-item.disabled,.dropdown-item:disabled{color:#999;pointer-events:none;background-color:rgba(0,0,0,0)}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1rem;margin-bottom:0;font-size:0.875rem;color:#777;white-space:nowrap}.dropdown-item-text{display:block;padding:.25rem 1rem;color:#2d2d2d}.dropdown-menu-dark{color:#dee2e6;background-color:#333;border-color:rgba(0,0,0,.15)}.dropdown-menu-dark .dropdown-item{color:#dee2e6}.dropdown-menu-dark .dropdown-item:hover,.dropdown-menu-dark .dropdown-item:focus{color:#fff;background-color:rgba(255,255,255,.15)}.dropdown-menu-dark .dropdown-item.active,.dropdown-menu-dark .dropdown-item:active{color:#fff;background-color:#446e9b}.dropdown-menu-dark .dropdown-item.disabled,.dropdown-menu-dark .dropdown-item:disabled{color:#999}.dropdown-menu-dark .dropdown-divider{border-color:rgba(0,0,0,.15)}.dropdown-menu-dark .dropdown-item-text{color:#dee2e6}.dropdown-menu-dark .dropdown-header{color:#999}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;flex:1 1 auto;-webkit-flex:1 1 auto}.btn-group>.btn-check:checked+.btn,.btn-group>.btn-check:focus+.btn,.btn-group>.btn:hover,.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn-check:checked+.btn,.btn-group-vertical>.btn-check:focus+.btn,.btn-group-vertical>.btn:hover,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn.active{z-index:1}.btn-toolbar{display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;justify-content:flex-start;-webkit-justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn:not(:first-child),.btn-group>.btn-group:not(:first-child){margin-left:-1px}.btn-group>.btn:not(:last-child):not(.dropdown-toggle),.btn-group>.btn-group:not(:last-child)>.btn{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:nth-child(n+3),.btn-group>:not(.btn-check)+.btn,.btn-group>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after,.dropup .dropdown-toggle-split::after,.dropend .dropdown-toggle-split::after{margin-left:0}.dropstart .dropdown-toggle-split::before{margin-right:0}.btn-sm+.dropdown-toggle-split,.btn-group-sm>.btn+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-lg+.dropdown-toggle-split,.btn-group-lg>.btn+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{flex-direction:column;-webkit-flex-direction:column;align-items:flex-start;-webkit-align-items:flex-start;justify-content:center;-webkit-justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn:not(:first-child),.btn-group-vertical>.btn-group:not(:first-child){margin-top:-1px}.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle),.btn-group-vertical>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn~.btn,.btn-group-vertical>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-top-right-radius:0}.nav{display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5rem 1rem;color:#3399f3;text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out}@media(prefers-reduced-motion: reduce){.nav-link{transition:none}}.nav-link:hover,.nav-link:focus{color:#297ac2}.nav-link.disabled{color:#777;pointer-events:none;cursor:default}.nav-tabs{border-bottom:1px solid #dee2e6}.nav-tabs .nav-link{margin-bottom:-1px;background:none;border:1px solid rgba(0,0,0,0);border-top-left-radius:.25rem;border-top-right-radius:.25rem}.nav-tabs .nav-link:hover,.nav-tabs .nav-link:focus{border-color:#eee #eee #dee2e6;isolation:isolate}.nav-tabs .nav-link.disabled{color:#777;background-color:rgba(0,0,0,0);border-color:rgba(0,0,0,0)}.nav-tabs .nav-link.active,.nav-tabs .nav-item.show .nav-link{color:#495057;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{background:none;border:0;border-radius:.25rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#446e9b}.nav-fill>.nav-link,.nav-fill .nav-item{flex:1 1 auto;-webkit-flex:1 1 auto;text-align:center}.nav-justified>.nav-link,.nav-justified .nav-item{flex-basis:0;-webkit-flex-basis:0;flex-grow:1;-webkit-flex-grow:1;text-align:center}.nav-fill .nav-item .nav-link,.nav-justified .nav-item .nav-link{width:100%}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;align-items:center;-webkit-align-items:center;justify-content:space-between;-webkit-justify-content:space-between;padding-top:.5rem;padding-bottom:.5rem}.navbar>.container-xxl,.navbar>.container-xl,.navbar>.container-lg,.navbar>.container-md,.navbar>.container-sm,.navbar>.container,.navbar>.container-fluid{display:flex;display:-webkit-flex;flex-wrap:inherit;-webkit-flex-wrap:inherit;align-items:center;-webkit-align-items:center;justify-content:space-between;-webkit-justify-content:space-between}.navbar-brand{padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;white-space:nowrap}.navbar-nav{display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static}.navbar-text{padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{flex-basis:100%;-webkit-flex-basis:100%;flex-grow:1;-webkit-flex-grow:1;align-items:center;-webkit-align-items:center}.navbar-toggler{padding:.25 0;font-size:1.25rem;line-height:1;background-color:rgba(0,0,0,0);border:1px solid rgba(0,0,0,0);border-radius:.25rem;transition:box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.navbar-toggler{transition:none}}.navbar-toggler:hover{text-decoration:none}.navbar-toggler:focus{text-decoration:none;outline:0;box-shadow:0 0 0 .25rem}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;background-repeat:no-repeat;background-position:center;background-size:100%}.navbar-nav-scroll{max-height:var(--bs-scroll-height, 75vh);overflow-y:auto}@media(min-width: 576px){.navbar-expand-sm{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}.navbar-expand-sm .offcanvas-header{display:none}.navbar-expand-sm .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;-webkit-flex-grow:1;visibility:visible !important;background-color:rgba(0,0,0,0);border-right:0;border-left:0;transition:none;transform:none}.navbar-expand-sm .offcanvas-top,.navbar-expand-sm .offcanvas-bottom{height:auto;border-top:0;border-bottom:0}.navbar-expand-sm .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible}}@media(min-width: 768px){.navbar-expand-md{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}.navbar-expand-md .offcanvas-header{display:none}.navbar-expand-md .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;-webkit-flex-grow:1;visibility:visible !important;background-color:rgba(0,0,0,0);border-right:0;border-left:0;transition:none;transform:none}.navbar-expand-md .offcanvas-top,.navbar-expand-md .offcanvas-bottom{height:auto;border-top:0;border-bottom:0}.navbar-expand-md .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible}}@media(min-width: 992px){.navbar-expand-lg{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}.navbar-expand-lg .offcanvas-header{display:none}.navbar-expand-lg .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;-webkit-flex-grow:1;visibility:visible !important;background-color:rgba(0,0,0,0);border-right:0;border-left:0;transition:none;transform:none}.navbar-expand-lg .offcanvas-top,.navbar-expand-lg .offcanvas-bottom{height:auto;border-top:0;border-bottom:0}.navbar-expand-lg .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible}}@media(min-width: 1200px){.navbar-expand-xl{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}.navbar-expand-xl .offcanvas-header{display:none}.navbar-expand-xl .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;-webkit-flex-grow:1;visibility:visible !important;background-color:rgba(0,0,0,0);border-right:0;border-left:0;transition:none;transform:none}.navbar-expand-xl .offcanvas-top,.navbar-expand-xl .offcanvas-bottom{height:auto;border-top:0;border-bottom:0}.navbar-expand-xl .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible}}@media(min-width: 1400px){.navbar-expand-xxl{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand-xxl .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand-xxl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xxl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xxl .navbar-nav-scroll{overflow:visible}.navbar-expand-xxl .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand-xxl .navbar-toggler{display:none}.navbar-expand-xxl .offcanvas-header{display:none}.navbar-expand-xxl .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;-webkit-flex-grow:1;visibility:visible !important;background-color:rgba(0,0,0,0);border-right:0;border-left:0;transition:none;transform:none}.navbar-expand-xxl .offcanvas-top,.navbar-expand-xxl .offcanvas-bottom{height:auto;border-top:0;border-bottom:0}.navbar-expand-xxl .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible}}.navbar-expand{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-expand .offcanvas-header{display:none}.navbar-expand .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;-webkit-flex-grow:1;visibility:visible !important;background-color:rgba(0,0,0,0);border-right:0;border-left:0;transition:none;transform:none}.navbar-expand .offcanvas-top,.navbar-expand .offcanvas-bottom{height:auto;border-top:0;border-bottom:0}.navbar-expand .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible}.navbar-light{background-color:#eee}.navbar-light .navbar-brand{color:#4f4f4f}.navbar-light .navbar-brand:hover,.navbar-light .navbar-brand:focus{color:#3399f3}.navbar-light .navbar-nav .nav-link{color:#4f4f4f}.navbar-light .navbar-nav .nav-link:hover,.navbar-light .navbar-nav .nav-link:focus{color:rgba(51,153,243,.8)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(79,79,79,.75)}.navbar-light .navbar-nav .show>.nav-link,.navbar-light .navbar-nav .nav-link.active{color:#3399f3}.navbar-light .navbar-toggler{color:#4f4f4f;border-color:rgba(79,79,79,0)}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='%234f4f4f' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-light .navbar-text{color:#4f4f4f}.navbar-light .navbar-text a,.navbar-light .navbar-text a:hover,.navbar-light .navbar-text a:focus{color:#3399f3}.navbar-dark{background-color:#eee}.navbar-dark .navbar-brand{color:#4f4f4f}.navbar-dark .navbar-brand:hover,.navbar-dark .navbar-brand:focus{color:#3399f3}.navbar-dark .navbar-nav .nav-link{color:#4f4f4f}.navbar-dark .navbar-nav .nav-link:hover,.navbar-dark .navbar-nav .nav-link:focus{color:rgba(51,153,243,.8)}.navbar-dark .navbar-nav .nav-link.disabled{color:rgba(79,79,79,.75)}.navbar-dark .navbar-nav .show>.nav-link,.navbar-dark .navbar-nav .active>.nav-link,.navbar-dark .navbar-nav .nav-link.active{color:#3399f3}.navbar-dark .navbar-toggler{color:#4f4f4f;border-color:rgba(79,79,79,0)}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='%234f4f4f' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-dark .navbar-text{color:#4f4f4f}.navbar-dark .navbar-text a,.navbar-dark .navbar-text a:hover,.navbar-dark .navbar-text a:focus{color:#3399f3}.card{position:relative;display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,.125);border-radius:.25rem}.card>hr{margin-right:0;margin-left:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-width:0;border-top-left-radius:calc(0.25rem - 1px);border-top-right-radius:calc(0.25rem - 1px)}.card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:calc(0.25rem - 1px);border-bottom-left-radius:calc(0.25rem - 1px)}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{flex:1 1 auto;-webkit-flex:1 1 auto;padding:1rem 1rem}.card-title{margin-bottom:.5rem}.card-subtitle{margin-top:-0.25rem;margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link+.card-link{margin-left:1rem}.card-header{padding:.5rem 1rem;margin-bottom:0;background-color:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.125)}.card-header:first-child{border-radius:calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0}.card-footer{padding:.5rem 1rem;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.125)}.card-footer:last-child{border-radius:0 0 calc(0.25rem - 1px) calc(0.25rem - 1px)}.card-header-tabs{margin-right:-0.5rem;margin-bottom:-0.5rem;margin-left:-0.5rem;border-bottom:0}.card-header-pills{margin-right:-0.5rem;margin-left:-0.5rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1rem;border-radius:calc(0.25rem - 1px)}.card-img,.card-img-top,.card-img-bottom{width:100%}.card-img,.card-img-top{border-top-left-radius:calc(0.25rem - 1px);border-top-right-radius:calc(0.25rem - 1px)}.card-img,.card-img-bottom{border-bottom-right-radius:calc(0.25rem - 1px);border-bottom-left-radius:calc(0.25rem - 1px)}.card-group>.card{margin-bottom:.75rem}@media(min-width: 576px){.card-group{display:flex;display:-webkit-flex;flex-flow:row wrap;-webkit-flex-flow:row wrap}.card-group>.card{flex:1 0 0%;-webkit-flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-img-top,.card-group>.card:not(:last-child) .card-header{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-img-bottom,.card-group>.card:not(:last-child) .card-footer{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-img-top,.card-group>.card:not(:first-child) .card-header{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-img-bottom,.card-group>.card:not(:first-child) .card-footer{border-bottom-left-radius:0}}.accordion-button{position:relative;display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;width:100%;padding:1rem 1.25rem;font-size:1rem;color:#777;text-align:left;background-color:#fff;border:0;border-radius:0;overflow-anchor:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,border-radius .15s ease}@media(prefers-reduced-motion: reduce){.accordion-button{transition:none}}.accordion-button:not(.collapsed){color:#3d638c;background-color:#ecf1f5;box-shadow:inset 0 -1px 0 rgba(0,0,0,.125)}.accordion-button:not(.collapsed)::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%233d638c'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");transform:rotate(-180deg)}.accordion-button::after{flex-shrink:0;-webkit-flex-shrink:0;width:1.25rem;height:1.25rem;margin-left:auto;content:"";background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23777'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-size:1.25rem;transition:transform .2s ease-in-out}@media(prefers-reduced-motion: reduce){.accordion-button::after{transition:none}}.accordion-button:hover{z-index:2}.accordion-button:focus{z-index:3;border-color:#a2b7cd;outline:0;box-shadow:0 0 0 .25rem rgba(68,110,155,.25)}.accordion-header{margin-bottom:0}.accordion-item{background-color:#fff;border:1px solid rgba(0,0,0,.125)}.accordion-item:first-of-type{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.accordion-item:first-of-type .accordion-button{border-top-left-radius:calc(0.25rem - 1px);border-top-right-radius:calc(0.25rem - 1px)}.accordion-item:not(:first-of-type){border-top:0}.accordion-item:last-of-type{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.accordion-item:last-of-type .accordion-button.collapsed{border-bottom-right-radius:calc(0.25rem - 1px);border-bottom-left-radius:calc(0.25rem - 1px)}.accordion-item:last-of-type .accordion-collapse{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.accordion-body{padding:1rem 1.25rem}.accordion-flush .accordion-collapse{border-width:0}.accordion-flush .accordion-item{border-right:0;border-left:0;border-radius:0}.accordion-flush .accordion-item:first-child{border-top:0}.accordion-flush .accordion-item:last-child{border-bottom:0}.accordion-flush .accordion-item .accordion-button{border-radius:0}.breadcrumb{display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;padding:0 0;margin-bottom:1rem;list-style:none}.breadcrumb-item+.breadcrumb-item{padding-left:.5rem}.breadcrumb-item+.breadcrumb-item::before{float:left;padding-right:.5rem;color:#777;content:var(--bs-breadcrumb-divider, ">") /* rtl: var(--bs-breadcrumb-divider, ">") */}.breadcrumb-item.active{color:#777}.pagination{display:flex;display:-webkit-flex;padding-left:0;list-style:none}.page-link{position:relative;display:block;color:#3399f3;text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;background-color:#fff;border:1px solid #dee2e6;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.page-link{transition:none}}.page-link:hover{z-index:2;color:#297ac2;background-color:#eee;border-color:#dee2e6}.page-link:focus{z-index:3;color:#297ac2;background-color:#eee;outline:0;box-shadow:0 0 0 .25rem rgba(68,110,155,.25)}.page-item:not(:first-child) .page-link{margin-left:-1px}.page-item.active .page-link{z-index:3;color:#fff;background-color:#446e9b;border-color:#446e9b}.page-item.disabled .page-link{color:#777;pointer-events:none;background-color:#fff;border-color:#dee2e6}.page-link{padding:.375rem .75rem}.page-item:first-child .page-link{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.page-item:last-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.pagination-sm .page-link{padding:.25rem .5rem;font-size:0.875rem}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.badge{display:inline-block;padding:.35em .65em;font-size:0.75em;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.alert{position:relative;padding:1rem 1rem;margin-bottom:1rem;border:1px solid rgba(0,0,0,0);border-radius:.25rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:3rem}.alert-dismissible .btn-close{position:absolute;top:0;right:0;z-index:2;padding:1.25rem 1rem}.alert-default{color:#5c5c5c;background-color:#ebebeb;border-color:#e0e0e0}.alert-default .alert-link{color:#4a4a4a}.alert-primary{color:#29425d;background-color:#dae2eb;border-color:#c7d4e1}.alert-primary .alert-link{color:#21354a}.alert-secondary{color:#5c5c5c;background-color:#ebebeb;border-color:#e0e0e0}.alert-secondary .alert-link{color:#4a4a4a}.alert-success{color:#246d14;background-color:#d8f0d3;border-color:#c5e9bc}.alert-success .alert-link{color:#1d5710}.alert-info{color:#1f5c92;background-color:#d6ebfd;border-color:#c2e0fb}.alert-info .alert-link{color:#194a75}.alert-warning{color:#7f4600;background-color:#f6e3cc;border-color:#f2d6b3}.alert-warning .alert-link{color:#663800}.alert-danger{color:#7b0100;background-color:#f5cccc;border-color:#f0b3b3}.alert-danger .alert-link{color:#620100}.alert-light{color:#8f8f8f;background-color:#fcfcfc;border-color:#fafafa}.alert-light .alert-link{color:#727272}.alert-dark{color:#1f1f1f;background-color:#d6d6d6;border-color:#c2c2c2}.alert-dark .alert-link{color:#191919}@keyframes progress-bar-stripes{0%{background-position-x:1rem}}.progress{display:flex;display:-webkit-flex;height:1rem;overflow:hidden;font-size:0.75rem;background-color:#eee;border-radius:.25rem}.progress-bar{display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;justify-content:center;-webkit-justify-content:center;overflow:hidden;color:#fff;text-align:center;white-space:nowrap;background-color:#446e9b;transition:width .6s ease}@media(prefers-reduced-motion: reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-size:1rem 1rem}.progress-bar-animated{animation:1s linear infinite progress-bar-stripes}@media(prefers-reduced-motion: reduce){.progress-bar-animated{animation:none}}.list-group{display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;padding-left:0;margin-bottom:0;border-radius:.25rem}.list-group-numbered{list-style-type:none;counter-reset:section}.list-group-numbered>li::before{content:counters(section, ".") ". ";counter-increment:section}.list-group-item-action{width:100%;color:#495057;text-align:inherit}.list-group-item-action:hover,.list-group-item-action:focus{z-index:1;color:#495057;text-decoration:none;background-color:#f8f9fa}.list-group-item-action:active{color:#777;background-color:#eee}.list-group-item{position:relative;display:block;padding:.5rem 1rem;color:#2d2d2d;text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;background-color:#fff;border:1px solid rgba(0,0,0,.125)}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:#777;pointer-events:none;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#446e9b;border-color:#446e9b}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:-1px;border-top-width:1px}.list-group-horizontal{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}@media(min-width: 576px){.list-group-horizontal-sm{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media(min-width: 768px){.list-group-horizontal-md{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media(min-width: 992px){.list-group-horizontal-lg{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media(min-width: 1200px){.list-group-horizontal-xl{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media(min-width: 1400px){.list-group-horizontal-xxl{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal-xxl>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-xxl>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-xxl>.list-group-item.active{margin-top:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 1px}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-default{color:#5c5c5c;background-color:#ebebeb}.list-group-item-default.list-group-item-action:hover,.list-group-item-default.list-group-item-action:focus{color:#5c5c5c;background-color:#d4d4d4}.list-group-item-default.list-group-item-action.active{color:#fff;background-color:#5c5c5c;border-color:#5c5c5c}.list-group-item-primary{color:#29425d;background-color:#dae2eb}.list-group-item-primary.list-group-item-action:hover,.list-group-item-primary.list-group-item-action:focus{color:#29425d;background-color:#c4cbd4}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#29425d;border-color:#29425d}.list-group-item-secondary{color:#5c5c5c;background-color:#ebebeb}.list-group-item-secondary.list-group-item-action:hover,.list-group-item-secondary.list-group-item-action:focus{color:#5c5c5c;background-color:#d4d4d4}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#5c5c5c;border-color:#5c5c5c}.list-group-item-success{color:#246d14;background-color:#d8f0d3}.list-group-item-success.list-group-item-action:hover,.list-group-item-success.list-group-item-action:focus{color:#246d14;background-color:#c2d8be}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#246d14;border-color:#246d14}.list-group-item-info{color:#1f5c92;background-color:#d6ebfd}.list-group-item-info.list-group-item-action:hover,.list-group-item-info.list-group-item-action:focus{color:#1f5c92;background-color:#c1d4e4}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#1f5c92;border-color:#1f5c92}.list-group-item-warning{color:#7f4600;background-color:#f6e3cc}.list-group-item-warning.list-group-item-action:hover,.list-group-item-warning.list-group-item-action:focus{color:#7f4600;background-color:#ddccb8}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#7f4600;border-color:#7f4600}.list-group-item-danger{color:#7b0100;background-color:#f5cccc}.list-group-item-danger.list-group-item-action:hover,.list-group-item-danger.list-group-item-action:focus{color:#7b0100;background-color:#ddb8b8}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#7b0100;border-color:#7b0100}.list-group-item-light{color:#8f8f8f;background-color:#fcfcfc}.list-group-item-light.list-group-item-action:hover,.list-group-item-light.list-group-item-action:focus{color:#8f8f8f;background-color:#e3e3e3}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#8f8f8f;border-color:#8f8f8f}.list-group-item-dark{color:#1f1f1f;background-color:#d6d6d6}.list-group-item-dark.list-group-item-action:hover,.list-group-item-dark.list-group-item-action:focus{color:#1f1f1f;background-color:#c1c1c1}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#1f1f1f;border-color:#1f1f1f}.btn-close{box-sizing:content-box;width:1em;height:1em;padding:.25em .25em;color:#000;background:rgba(0,0,0,0) url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat;border:0;border-radius:.25rem;opacity:.5}.btn-close:hover{color:#000;text-decoration:none;opacity:.75}.btn-close:focus{outline:0;box-shadow:0 0 0 .25rem rgba(68,110,155,.25);opacity:1}.btn-close:disabled,.btn-close.disabled{pointer-events:none;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;opacity:.25}.btn-close-white{filter:invert(1) grayscale(100%) brightness(200%)}.toast{width:350px;max-width:100%;font-size:0.875rem;pointer-events:auto;background-color:rgba(255,255,255,.85);background-clip:padding-box;border:1px solid rgba(0,0,0,.1);box-shadow:0 .5rem 1rem rgba(0,0,0,.15);border-radius:.25rem}.toast.showing{opacity:0}.toast:not(.show){display:none}.toast-container{width:max-content;width:-webkit-max-content;width:-moz-max-content;width:-ms-max-content;width:-o-max-content;max-width:100%;pointer-events:none}.toast-container>:not(:last-child){margin-bottom:.75rem}.toast-header{display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;padding:.5rem .75rem;color:#777;background-color:rgba(255,255,255,.85);background-clip:padding-box;border-bottom:1px solid rgba(0,0,0,.05);border-top-left-radius:calc(0.25rem - 1px);border-top-right-radius:calc(0.25rem - 1px)}.toast-header .btn-close{margin-right:-0.375rem;margin-left:.75rem}.toast-body{padding:.75rem;word-wrap:break-word}.modal{position:fixed;top:0;left:0;z-index:1055;display:none;width:100%;height:100%;overflow-x:hidden;overflow-y:auto;outline:0}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{transition:transform .3s ease-out;transform:translate(0, -50px)}@media(prefers-reduced-motion: reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{transform:none}.modal.modal-static .modal-dialog{transform:scale(1.02)}.modal-dialog-scrollable{height:calc(100% - 1rem)}.modal-dialog-scrollable .modal-content{max-height:100%;overflow:hidden}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;min-height:calc(100% - 1rem)}.modal-content{position:relative;display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem;outline:0}.modal-backdrop{position:fixed;top:0;left:0;z-index:1050;width:100vw;height:100vh;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:flex;display:-webkit-flex;flex-shrink:0;-webkit-flex-shrink:0;align-items:center;-webkit-align-items:center;justify-content:space-between;-webkit-justify-content:space-between;padding:1rem 1rem;border-bottom:1px solid #dee2e6;border-top-left-radius:calc(0.3rem - 1px);border-top-right-radius:calc(0.3rem - 1px)}.modal-header .btn-close{padding:.5rem .5rem;margin:-0.5rem -0.5rem -0.5rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;flex:1 1 auto;-webkit-flex:1 1 auto;padding:1rem}.modal-footer{display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;flex-shrink:0;-webkit-flex-shrink:0;align-items:center;-webkit-align-items:center;justify-content:flex-end;-webkit-justify-content:flex-end;padding:.75rem;border-top:1px solid #dee2e6;border-bottom-right-radius:calc(0.3rem - 1px);border-bottom-left-radius:calc(0.3rem - 1px)}.modal-footer>*{margin:.25rem}@media(min-width: 576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-scrollable{height:calc(100% - 3.5rem)}.modal-dialog-centered{min-height:calc(100% - 3.5rem)}.modal-sm{max-width:300px}}@media(min-width: 992px){.modal-lg,.modal-xl{max-width:800px}}@media(min-width: 1200px){.modal-xl{max-width:1140px}}.modal-fullscreen{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen .modal-header{border-radius:0}.modal-fullscreen .modal-body{overflow-y:auto}.modal-fullscreen .modal-footer{border-radius:0}@media(max-width: 575.98px){.modal-fullscreen-sm-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-sm-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-sm-down .modal-header{border-radius:0}.modal-fullscreen-sm-down .modal-body{overflow-y:auto}.modal-fullscreen-sm-down .modal-footer{border-radius:0}}@media(max-width: 767.98px){.modal-fullscreen-md-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-md-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-md-down .modal-header{border-radius:0}.modal-fullscreen-md-down .modal-body{overflow-y:auto}.modal-fullscreen-md-down .modal-footer{border-radius:0}}@media(max-width: 991.98px){.modal-fullscreen-lg-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-lg-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-lg-down .modal-header{border-radius:0}.modal-fullscreen-lg-down .modal-body{overflow-y:auto}.modal-fullscreen-lg-down .modal-footer{border-radius:0}}@media(max-width: 1199.98px){.modal-fullscreen-xl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xl-down .modal-header{border-radius:0}.modal-fullscreen-xl-down .modal-body{overflow-y:auto}.modal-fullscreen-xl-down .modal-footer{border-radius:0}}@media(max-width: 1399.98px){.modal-fullscreen-xxl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xxl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xxl-down .modal-header{border-radius:0}.modal-fullscreen-xxl-down .modal-body{overflow-y:auto}.modal-fullscreen-xxl-down .modal-footer{border-radius:0}}.tooltip{position:absolute;z-index:1080;display:block;margin:0;font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:0.875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip .tooltip-arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .tooltip-arrow::before{position:absolute;content:"";border-color:rgba(0,0,0,0);border-style:solid}.bs-tooltip-top,.bs-tooltip-auto[data-popper-placement^=top]{padding:.4rem 0}.bs-tooltip-top .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow{bottom:0}.bs-tooltip-top .tooltip-arrow::before,.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow::before{top:-1px;border-width:.4rem .4rem 0;border-top-color:#000}.bs-tooltip-end,.bs-tooltip-auto[data-popper-placement^=right]{padding:0 .4rem}.bs-tooltip-end .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-end .tooltip-arrow::before,.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow::before{right:-1px;border-width:.4rem .4rem .4rem 0;border-right-color:#000}.bs-tooltip-bottom,.bs-tooltip-auto[data-popper-placement^=bottom]{padding:.4rem 0}.bs-tooltip-bottom .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow{top:0}.bs-tooltip-bottom .tooltip-arrow::before,.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow::before{bottom:-1px;border-width:0 .4rem .4rem;border-bottom-color:#000}.bs-tooltip-start,.bs-tooltip-auto[data-popper-placement^=left]{padding:0 .4rem}.bs-tooltip-start .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-start .tooltip-arrow::before,.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow::before{left:-1px;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}.tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000;border-radius:.25rem}.popover{position:absolute;top:0;left:0 /* rtl:ignore */;z-index:1070;display:block;max-width:276px;font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:0.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem}.popover .popover-arrow{position:absolute;display:block;width:1rem;height:.5rem}.popover .popover-arrow::before,.popover .popover-arrow::after{position:absolute;display:block;content:"";border-color:rgba(0,0,0,0);border-style:solid}.bs-popover-top>.popover-arrow,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow{bottom:calc(-0.5rem - 1px)}.bs-popover-top>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::before{bottom:0;border-width:.5rem .5rem 0;border-top-color:rgba(0,0,0,.25)}.bs-popover-top>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}.bs-popover-end>.popover-arrow,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow{left:calc(-0.5rem - 1px);width:.5rem;height:1rem}.bs-popover-end>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:rgba(0,0,0,.25)}.bs-popover-end>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}.bs-popover-bottom>.popover-arrow,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow{top:calc(-0.5rem - 1px)}.bs-popover-bottom>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::before{top:0;border-width:0 .5rem .5rem .5rem;border-bottom-color:rgba(0,0,0,.25)}.bs-popover-bottom>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::after{top:1px;border-width:0 .5rem .5rem .5rem;border-bottom-color:#fff}.bs-popover-bottom .popover-header::before,.bs-popover-auto[data-popper-placement^=bottom] .popover-header::before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-0.5rem;content:"";border-bottom:1px solid #f0f0f0}.bs-popover-start>.popover-arrow,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow{right:calc(-0.5rem - 1px);width:.5rem;height:1rem}.bs-popover-start>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:rgba(0,0,0,.25)}.bs-popover-start>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}.popover-header{padding:.5rem 1rem;margin-bottom:0;font-size:1rem;color:#2d2d2d;background-color:#f0f0f0;border-bottom:1px solid rgba(0,0,0,.2);border-top-left-radius:calc(0.3rem - 1px);border-top-right-radius:calc(0.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:1rem 1rem;color:#777}.carousel{position:relative}.carousel.pointer-event{touch-action:pan-y;-webkit-touch-action:pan-y;-moz-touch-action:pan-y;-ms-touch-action:pan-y;-o-touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner::after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;backface-visibility:hidden;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;-ms-backface-visibility:hidden;-o-backface-visibility:hidden;transition:transform .6s ease-in-out}@media(prefers-reduced-motion: reduce){.carousel-item{transition:none}}.carousel-item.active,.carousel-item-next,.carousel-item-prev{display:block}.carousel-item-next:not(.carousel-item-start),.active.carousel-item-end{transform:translateX(100%)}.carousel-item-prev:not(.carousel-item-end),.active.carousel-item-start{transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}.carousel-fade .carousel-item.active,.carousel-fade .carousel-item-next.carousel-item-start,.carousel-fade .carousel-item-prev.carousel-item-end{z-index:1;opacity:1}.carousel-fade .active.carousel-item-start,.carousel-fade .active.carousel-item-end{z-index:0;opacity:0;transition:opacity 0s .6s}@media(prefers-reduced-motion: reduce){.carousel-fade .active.carousel-item-start,.carousel-fade .active.carousel-item-end{transition:none}}.carousel-control-prev,.carousel-control-next{position:absolute;top:0;bottom:0;z-index:1;display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;justify-content:center;-webkit-justify-content:center;width:15%;padding:0;color:#fff;text-align:center;background:none;border:0;opacity:.5;transition:opacity .15s ease}@media(prefers-reduced-motion: reduce){.carousel-control-prev,.carousel-control-next{transition:none}}.carousel-control-prev:hover,.carousel-control-prev:focus,.carousel-control-next:hover,.carousel-control-next:focus{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-prev-icon,.carousel-control-next-icon{display:inline-block;width:2rem;height:2rem;background-repeat:no-repeat;background-position:50%;background-size:100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:2;display:flex;display:-webkit-flex;justify-content:center;-webkit-justify-content:center;padding:0;margin-right:15%;margin-bottom:1rem;margin-left:15%;list-style:none}.carousel-indicators [data-bs-target]{box-sizing:content-box;flex:0 1 auto;-webkit-flex:0 1 auto;width:30px;height:3px;padding:0;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border:0;border-top:10px solid rgba(0,0,0,0);border-bottom:10px solid rgba(0,0,0,0);opacity:.5;transition:opacity .6s ease}@media(prefers-reduced-motion: reduce){.carousel-indicators [data-bs-target]{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:1.25rem;left:15%;padding-top:1.25rem;padding-bottom:1.25rem;color:#fff;text-align:center}.carousel-dark .carousel-control-prev-icon,.carousel-dark .carousel-control-next-icon{filter:invert(1) grayscale(100)}.carousel-dark .carousel-indicators [data-bs-target]{background-color:#000}.carousel-dark .carousel-caption{color:#000}@keyframes spinner-border{to{transform:rotate(360deg) /* rtl:ignore */}}.spinner-border{display:inline-block;width:2rem;height:2rem;vertical-align:-0.125em;border:.25em solid currentColor;border-right-color:rgba(0,0,0,0);border-radius:50%;animation:.75s linear infinite spinner-border}.spinner-border-sm{width:1rem;height:1rem;border-width:.2em}@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}.spinner-grow{display:inline-block;width:2rem;height:2rem;vertical-align:-0.125em;background-color:currentColor;border-radius:50%;opacity:0;animation:.75s linear infinite spinner-grow}.spinner-grow-sm{width:1rem;height:1rem}@media(prefers-reduced-motion: reduce){.spinner-border,.spinner-grow{animation-duration:1.5s;-webkit-animation-duration:1.5s;-moz-animation-duration:1.5s;-ms-animation-duration:1.5s;-o-animation-duration:1.5s}}.offcanvas{position:fixed;bottom:0;z-index:1045;display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;max-width:100%;visibility:hidden;background-color:#fff;background-clip:padding-box;outline:0;transition:transform .3s ease-in-out}@media(prefers-reduced-motion: reduce){.offcanvas{transition:none}}.offcanvas-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.offcanvas-backdrop.fade{opacity:0}.offcanvas-backdrop.show{opacity:.5}.offcanvas-header{display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;justify-content:space-between;-webkit-justify-content:space-between;padding:1rem 1rem}.offcanvas-header .btn-close{padding:.5rem .5rem;margin-top:-0.5rem;margin-right:-0.5rem;margin-bottom:-0.5rem}.offcanvas-title{margin-bottom:0;line-height:1.5}.offcanvas-body{flex-grow:1;-webkit-flex-grow:1;padding:1rem 1rem;overflow-y:auto}.offcanvas-start{top:0;left:0;width:400px;border-right:1px solid rgba(0,0,0,.2);transform:translateX(-100%)}.offcanvas-end{top:0;right:0;width:400px;border-left:1px solid rgba(0,0,0,.2);transform:translateX(100%)}.offcanvas-top{top:0;right:0;left:0;height:30vh;max-height:100%;border-bottom:1px solid rgba(0,0,0,.2);transform:translateY(-100%)}.offcanvas-bottom{right:0;left:0;height:30vh;max-height:100%;border-top:1px solid rgba(0,0,0,.2);transform:translateY(100%)}.offcanvas.show{transform:none}.placeholder{display:inline-block;min-height:1em;vertical-align:middle;cursor:wait;background-color:currentColor;opacity:.5}.placeholder.btn::before{display:inline-block;content:""}.placeholder-xs{min-height:.6em}.placeholder-sm{min-height:.8em}.placeholder-lg{min-height:1.2em}.placeholder-glow .placeholder{animation:placeholder-glow 2s ease-in-out infinite}@keyframes placeholder-glow{50%{opacity:.2}}.placeholder-wave{mask-image:linear-gradient(130deg, #000 55%, rgba(0, 0, 0, 0.8) 75%, #000 95%);-webkit-mask-image:linear-gradient(130deg, #000 55%, rgba(0, 0, 0, 0.8) 75%, #000 95%);mask-size:200% 100%;-webkit-mask-size:200% 100%;animation:placeholder-wave 2s linear infinite}@keyframes placeholder-wave{100%{mask-position:-200% 0%;-webkit-mask-position:-200% 0%}}.clearfix::after{display:block;clear:both;content:""}.link-default{color:#999}.link-default:hover,.link-default:focus{color:#7a7a7a}.link-primary{color:#446e9b}.link-primary:hover,.link-primary:focus{color:#36587c}.link-secondary{color:#999}.link-secondary:hover,.link-secondary:focus{color:#7a7a7a}.link-success{color:#3cb521}.link-success:hover,.link-success:focus{color:#30911a}.link-info{color:#3399f3}.link-info:hover,.link-info:focus{color:#297ac2}.link-warning{color:#d47500}.link-warning:hover,.link-warning:focus{color:#aa5e00}.link-danger{color:#cd0200}.link-danger:hover,.link-danger:focus{color:#a40200}.link-light{color:#eee}.link-light:hover,.link-light:focus{color:#f1f1f1}.link-dark{color:#333}.link-dark:hover,.link-dark:focus{color:#292929}.ratio{position:relative;width:100%}.ratio::before{display:block;padding-top:var(--bs-aspect-ratio);content:""}.ratio>*{position:absolute;top:0;left:0;width:100%;height:100%}.ratio-1x1{--bs-aspect-ratio: 100%}.ratio-4x3{--bs-aspect-ratio: 75%}.ratio-16x9{--bs-aspect-ratio: 56.25%}.ratio-21x9{--bs-aspect-ratio: 42.8571428571%}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}.sticky-top{position:sticky;top:0;z-index:1020}@media(min-width: 576px){.sticky-sm-top{position:sticky;top:0;z-index:1020}}@media(min-width: 768px){.sticky-md-top{position:sticky;top:0;z-index:1020}}@media(min-width: 992px){.sticky-lg-top{position:sticky;top:0;z-index:1020}}@media(min-width: 1200px){.sticky-xl-top{position:sticky;top:0;z-index:1020}}@media(min-width: 1400px){.sticky-xxl-top{position:sticky;top:0;z-index:1020}}.hstack{display:flex;display:-webkit-flex;flex-direction:row;-webkit-flex-direction:row;align-items:center;-webkit-align-items:center;align-self:stretch;-webkit-align-self:stretch}.vstack{display:flex;display:-webkit-flex;flex:1 1 auto;-webkit-flex:1 1 auto;flex-direction:column;-webkit-flex-direction:column;align-self:stretch;-webkit-align-self:stretch}.visually-hidden,.visually-hidden-focusable:not(:focus):not(:focus-within){position:absolute !important;width:1px !important;height:1px !important;padding:0 !important;margin:-1px !important;overflow:hidden !important;clip:rect(0, 0, 0, 0) !important;white-space:nowrap !important;border:0 !important}.stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;content:""}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vr{display:inline-block;align-self:stretch;-webkit-align-self:stretch;width:1px;min-height:1em;background-color:currentColor;opacity:.25}.align-baseline{vertical-align:baseline !important}.align-top{vertical-align:top !important}.align-middle{vertical-align:middle !important}.align-bottom{vertical-align:bottom !important}.align-text-bottom{vertical-align:text-bottom !important}.align-text-top{vertical-align:text-top !important}.float-start{float:left !important}.float-end{float:right !important}.float-none{float:none !important}.opacity-0{opacity:0 !important}.opacity-25{opacity:.25 !important}.opacity-50{opacity:.5 !important}.opacity-75{opacity:.75 !important}.opacity-100{opacity:1 !important}.overflow-auto{overflow:auto !important}.overflow-hidden{overflow:hidden !important}.overflow-visible{overflow:visible !important}.overflow-scroll{overflow:scroll !important}.d-inline{display:inline !important}.d-inline-block{display:inline-block !important}.d-block{display:block !important}.d-grid{display:grid !important}.d-table{display:table !important}.d-table-row{display:table-row !important}.d-table-cell{display:table-cell !important}.d-flex{display:flex !important}.d-inline-flex{display:inline-flex !important}.d-none{display:none !important}.shadow{box-shadow:0 .5rem 1rem rgba(0,0,0,.15) !important}.shadow-sm{box-shadow:0 .125rem .25rem rgba(0,0,0,.075) !important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,.175) !important}.shadow-none{box-shadow:none !important}.position-static{position:static !important}.position-relative{position:relative !important}.position-absolute{position:absolute !important}.position-fixed{position:fixed !important}.position-sticky{position:sticky !important}.top-0{top:0 !important}.top-50{top:50% !important}.top-100{top:100% !important}.bottom-0{bottom:0 !important}.bottom-50{bottom:50% !important}.bottom-100{bottom:100% !important}.start-0{left:0 !important}.start-50{left:50% !important}.start-100{left:100% !important}.end-0{right:0 !important}.end-50{right:50% !important}.end-100{right:100% !important}.translate-middle{transform:translate(-50%, -50%) !important}.translate-middle-x{transform:translateX(-50%) !important}.translate-middle-y{transform:translateY(-50%) !important}.border{border:1px solid #dee2e6 !important}.border-0{border:0 !important}.border-top{border-top:1px solid #dee2e6 !important}.border-top-0{border-top:0 !important}.border-end{border-right:1px solid #dee2e6 !important}.border-end-0{border-right:0 !important}.border-bottom{border-bottom:1px solid #dee2e6 !important}.border-bottom-0{border-bottom:0 !important}.border-start{border-left:1px solid #dee2e6 !important}.border-start-0{border-left:0 !important}.border-default{border-color:#999 !important}.border-primary{border-color:#446e9b !important}.border-secondary{border-color:#999 !important}.border-success{border-color:#3cb521 !important}.border-info{border-color:#3399f3 !important}.border-warning{border-color:#d47500 !important}.border-danger{border-color:#cd0200 !important}.border-light{border-color:#eee !important}.border-dark{border-color:#333 !important}.border-white{border-color:#fff !important}.border-1{border-width:1px !important}.border-2{border-width:2px !important}.border-3{border-width:3px !important}.border-4{border-width:4px !important}.border-5{border-width:5px !important}.w-25{width:25% !important}.w-50{width:50% !important}.w-75{width:75% !important}.w-100{width:100% !important}.w-auto{width:auto !important}.mw-100{max-width:100% !important}.vw-100{width:100vw !important}.min-vw-100{min-width:100vw !important}.h-25{height:25% !important}.h-50{height:50% !important}.h-75{height:75% !important}.h-100{height:100% !important}.h-auto{height:auto !important}.mh-100{max-height:100% !important}.vh-100{height:100vh !important}.min-vh-100{min-height:100vh !important}.flex-fill{flex:1 1 auto !important}.flex-row{flex-direction:row !important}.flex-column{flex-direction:column !important}.flex-row-reverse{flex-direction:row-reverse !important}.flex-column-reverse{flex-direction:column-reverse !important}.flex-grow-0{flex-grow:0 !important}.flex-grow-1{flex-grow:1 !important}.flex-shrink-0{flex-shrink:0 !important}.flex-shrink-1{flex-shrink:1 !important}.flex-wrap{flex-wrap:wrap !important}.flex-nowrap{flex-wrap:nowrap !important}.flex-wrap-reverse{flex-wrap:wrap-reverse !important}.gap-0{gap:0 !important}.gap-1{gap:.25rem !important}.gap-2{gap:.5rem !important}.gap-3{gap:1rem !important}.gap-4{gap:1.5rem !important}.gap-5{gap:3rem !important}.justify-content-start{justify-content:flex-start !important}.justify-content-end{justify-content:flex-end !important}.justify-content-center{justify-content:center !important}.justify-content-between{justify-content:space-between !important}.justify-content-around{justify-content:space-around !important}.justify-content-evenly{justify-content:space-evenly !important}.align-items-start{align-items:flex-start !important}.align-items-end{align-items:flex-end !important}.align-items-center{align-items:center !important}.align-items-baseline{align-items:baseline !important}.align-items-stretch{align-items:stretch !important}.align-content-start{align-content:flex-start !important}.align-content-end{align-content:flex-end !important}.align-content-center{align-content:center !important}.align-content-between{align-content:space-between !important}.align-content-around{align-content:space-around !important}.align-content-stretch{align-content:stretch !important}.align-self-auto{align-self:auto !important}.align-self-start{align-self:flex-start !important}.align-self-end{align-self:flex-end !important}.align-self-center{align-self:center !important}.align-self-baseline{align-self:baseline !important}.align-self-stretch{align-self:stretch !important}.order-first{order:-1 !important}.order-0{order:0 !important}.order-1{order:1 !important}.order-2{order:2 !important}.order-3{order:3 !important}.order-4{order:4 !important}.order-5{order:5 !important}.order-last{order:6 !important}.m-0{margin:0 !important}.m-1{margin:.25rem !important}.m-2{margin:.5rem !important}.m-3{margin:1rem !important}.m-4{margin:1.5rem !important}.m-5{margin:3rem !important}.m-auto{margin:auto !important}.mx-0{margin-right:0 !important;margin-left:0 !important}.mx-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-3{margin-right:1rem !important;margin-left:1rem !important}.mx-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-5{margin-right:3rem !important;margin-left:3rem !important}.mx-auto{margin-right:auto !important;margin-left:auto !important}.my-0{margin-top:0 !important;margin-bottom:0 !important}.my-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-0{margin-top:0 !important}.mt-1{margin-top:.25rem !important}.mt-2{margin-top:.5rem !important}.mt-3{margin-top:1rem !important}.mt-4{margin-top:1.5rem !important}.mt-5{margin-top:3rem !important}.mt-auto{margin-top:auto !important}.me-0{margin-right:0 !important}.me-1{margin-right:.25rem !important}.me-2{margin-right:.5rem !important}.me-3{margin-right:1rem !important}.me-4{margin-right:1.5rem !important}.me-5{margin-right:3rem !important}.me-auto{margin-right:auto !important}.mb-0{margin-bottom:0 !important}.mb-1{margin-bottom:.25rem !important}.mb-2{margin-bottom:.5rem !important}.mb-3{margin-bottom:1rem !important}.mb-4{margin-bottom:1.5rem !important}.mb-5{margin-bottom:3rem !important}.mb-auto{margin-bottom:auto !important}.ms-0{margin-left:0 !important}.ms-1{margin-left:.25rem !important}.ms-2{margin-left:.5rem !important}.ms-3{margin-left:1rem !important}.ms-4{margin-left:1.5rem !important}.ms-5{margin-left:3rem !important}.ms-auto{margin-left:auto !important}.p-0{padding:0 !important}.p-1{padding:.25rem !important}.p-2{padding:.5rem !important}.p-3{padding:1rem !important}.p-4{padding:1.5rem !important}.p-5{padding:3rem !important}.px-0{padding-right:0 !important;padding-left:0 !important}.px-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-3{padding-right:1rem !important;padding-left:1rem !important}.px-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-5{padding-right:3rem !important;padding-left:3rem !important}.py-0{padding-top:0 !important;padding-bottom:0 !important}.py-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-0{padding-top:0 !important}.pt-1{padding-top:.25rem !important}.pt-2{padding-top:.5rem !important}.pt-3{padding-top:1rem !important}.pt-4{padding-top:1.5rem !important}.pt-5{padding-top:3rem !important}.pe-0{padding-right:0 !important}.pe-1{padding-right:.25rem !important}.pe-2{padding-right:.5rem !important}.pe-3{padding-right:1rem !important}.pe-4{padding-right:1.5rem !important}.pe-5{padding-right:3rem !important}.pb-0{padding-bottom:0 !important}.pb-1{padding-bottom:.25rem !important}.pb-2{padding-bottom:.5rem !important}.pb-3{padding-bottom:1rem !important}.pb-4{padding-bottom:1.5rem !important}.pb-5{padding-bottom:3rem !important}.ps-0{padding-left:0 !important}.ps-1{padding-left:.25rem !important}.ps-2{padding-left:.5rem !important}.ps-3{padding-left:1rem !important}.ps-4{padding-left:1.5rem !important}.ps-5{padding-left:3rem !important}.font-monospace{font-family:var(--bs-font-monospace) !important}.fs-1{font-size:calc(1.325rem + 0.9vw) !important}.fs-2{font-size:calc(1.29rem + 0.48vw) !important}.fs-3{font-size:calc(1.27rem + 0.24vw) !important}.fs-4{font-size:1.25rem !important}.fs-5{font-size:1.1rem !important}.fs-6{font-size:1rem !important}.fst-italic{font-style:italic !important}.fst-normal{font-style:normal !important}.fw-light{font-weight:300 !important}.fw-lighter{font-weight:lighter !important}.fw-normal{font-weight:400 !important}.fw-bold{font-weight:700 !important}.fw-bolder{font-weight:bolder !important}.lh-1{line-height:1 !important}.lh-sm{line-height:1.25 !important}.lh-base{line-height:1.5 !important}.lh-lg{line-height:2 !important}.text-start{text-align:left !important}.text-end{text-align:right !important}.text-center{text-align:center !important}.text-decoration-none{text-decoration:none !important}.text-decoration-underline{text-decoration:underline !important}.text-decoration-line-through{text-decoration:line-through !important}.text-lowercase{text-transform:lowercase !important}.text-uppercase{text-transform:uppercase !important}.text-capitalize{text-transform:capitalize !important}.text-wrap{white-space:normal !important}.text-nowrap{white-space:nowrap !important}.text-break{word-wrap:break-word !important;word-break:break-word !important}.text-default{--bs-text-opacity: 1;color:rgba(var(--bs-default-rgb), var(--bs-text-opacity)) !important}.text-primary{--bs-text-opacity: 1;color:rgba(var(--bs-primary-rgb), var(--bs-text-opacity)) !important}.text-secondary{--bs-text-opacity: 1;color:rgba(var(--bs-secondary-rgb), var(--bs-text-opacity)) !important}.text-success{--bs-text-opacity: 1;color:rgba(var(--bs-success-rgb), var(--bs-text-opacity)) !important}.text-info{--bs-text-opacity: 1;color:rgba(var(--bs-info-rgb), var(--bs-text-opacity)) !important}.text-warning{--bs-text-opacity: 1;color:rgba(var(--bs-warning-rgb), var(--bs-text-opacity)) !important}.text-danger{--bs-text-opacity: 1;color:rgba(var(--bs-danger-rgb), var(--bs-text-opacity)) !important}.text-light{--bs-text-opacity: 1;color:rgba(var(--bs-light-rgb), var(--bs-text-opacity)) !important}.text-dark{--bs-text-opacity: 1;color:rgba(var(--bs-dark-rgb), var(--bs-text-opacity)) !important}.text-black{--bs-text-opacity: 1;color:rgba(var(--bs-black-rgb), var(--bs-text-opacity)) !important}.text-white{--bs-text-opacity: 1;color:rgba(var(--bs-white-rgb), var(--bs-text-opacity)) !important}.text-body{--bs-text-opacity: 1;color:rgba(var(--bs-body-color-rgb), var(--bs-text-opacity)) !important}.text-muted{--bs-text-opacity: 1;color:#777 !important}.text-black-50{--bs-text-opacity: 1;color:rgba(0,0,0,.5) !important}.text-white-50{--bs-text-opacity: 1;color:rgba(255,255,255,.5) !important}.text-reset{--bs-text-opacity: 1;color:inherit !important}.text-opacity-25{--bs-text-opacity: 0.25}.text-opacity-50{--bs-text-opacity: 0.5}.text-opacity-75{--bs-text-opacity: 0.75}.text-opacity-100{--bs-text-opacity: 1}.bg-default{--bs-bg-opacity: 1;background-color:rgba(var(--bs-default-rgb), var(--bs-bg-opacity)) !important}.bg-primary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-primary-rgb), var(--bs-bg-opacity)) !important}.bg-secondary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-secondary-rgb), var(--bs-bg-opacity)) !important}.bg-success{--bs-bg-opacity: 1;background-color:rgba(var(--bs-success-rgb), var(--bs-bg-opacity)) !important}.bg-info{--bs-bg-opacity: 1;background-color:rgba(var(--bs-info-rgb), var(--bs-bg-opacity)) !important}.bg-warning{--bs-bg-opacity: 1;background-color:rgba(var(--bs-warning-rgb), var(--bs-bg-opacity)) !important}.bg-danger{--bs-bg-opacity: 1;background-color:rgba(var(--bs-danger-rgb), var(--bs-bg-opacity)) !important}.bg-light{--bs-bg-opacity: 1;background-color:rgba(var(--bs-light-rgb), var(--bs-bg-opacity)) !important}.bg-dark{--bs-bg-opacity: 1;background-color:rgba(var(--bs-dark-rgb), var(--bs-bg-opacity)) !important}.bg-black{--bs-bg-opacity: 1;background-color:rgba(var(--bs-black-rgb), var(--bs-bg-opacity)) !important}.bg-white{--bs-bg-opacity: 1;background-color:rgba(var(--bs-white-rgb), var(--bs-bg-opacity)) !important}.bg-body{--bs-bg-opacity: 1;background-color:rgba(var(--bs-body-bg-rgb), var(--bs-bg-opacity)) !important}.bg-transparent{--bs-bg-opacity: 1;background-color:rgba(0,0,0,0) !important}.bg-opacity-10{--bs-bg-opacity: 0.1}.bg-opacity-25{--bs-bg-opacity: 0.25}.bg-opacity-50{--bs-bg-opacity: 0.5}.bg-opacity-75{--bs-bg-opacity: 0.75}.bg-opacity-100{--bs-bg-opacity: 1}.bg-gradient{background-image:var(--bs-gradient) !important}.user-select-all{user-select:all !important}.user-select-auto{user-select:auto !important}.user-select-none{user-select:none !important}.pe-none{pointer-events:none !important}.pe-auto{pointer-events:auto !important}.rounded{border-radius:.25rem !important}.rounded-0{border-radius:0 !important}.rounded-1{border-radius:.2rem !important}.rounded-2{border-radius:.25rem !important}.rounded-3{border-radius:.3rem !important}.rounded-circle{border-radius:50% !important}.rounded-pill{border-radius:50rem !important}.rounded-top{border-top-left-radius:.25rem !important;border-top-right-radius:.25rem !important}.rounded-end{border-top-right-radius:.25rem !important;border-bottom-right-radius:.25rem !important}.rounded-bottom{border-bottom-right-radius:.25rem !important;border-bottom-left-radius:.25rem !important}.rounded-start{border-bottom-left-radius:.25rem !important;border-top-left-radius:.25rem !important}.visible{visibility:visible !important}.invisible{visibility:hidden !important}@media(min-width: 576px){.float-sm-start{float:left !important}.float-sm-end{float:right !important}.float-sm-none{float:none !important}.d-sm-inline{display:inline !important}.d-sm-inline-block{display:inline-block !important}.d-sm-block{display:block !important}.d-sm-grid{display:grid !important}.d-sm-table{display:table !important}.d-sm-table-row{display:table-row !important}.d-sm-table-cell{display:table-cell !important}.d-sm-flex{display:flex !important}.d-sm-inline-flex{display:inline-flex !important}.d-sm-none{display:none !important}.flex-sm-fill{flex:1 1 auto !important}.flex-sm-row{flex-direction:row !important}.flex-sm-column{flex-direction:column !important}.flex-sm-row-reverse{flex-direction:row-reverse !important}.flex-sm-column-reverse{flex-direction:column-reverse !important}.flex-sm-grow-0{flex-grow:0 !important}.flex-sm-grow-1{flex-grow:1 !important}.flex-sm-shrink-0{flex-shrink:0 !important}.flex-sm-shrink-1{flex-shrink:1 !important}.flex-sm-wrap{flex-wrap:wrap !important}.flex-sm-nowrap{flex-wrap:nowrap !important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse !important}.gap-sm-0{gap:0 !important}.gap-sm-1{gap:.25rem !important}.gap-sm-2{gap:.5rem !important}.gap-sm-3{gap:1rem !important}.gap-sm-4{gap:1.5rem !important}.gap-sm-5{gap:3rem !important}.justify-content-sm-start{justify-content:flex-start !important}.justify-content-sm-end{justify-content:flex-end !important}.justify-content-sm-center{justify-content:center !important}.justify-content-sm-between{justify-content:space-between !important}.justify-content-sm-around{justify-content:space-around !important}.justify-content-sm-evenly{justify-content:space-evenly !important}.align-items-sm-start{align-items:flex-start !important}.align-items-sm-end{align-items:flex-end !important}.align-items-sm-center{align-items:center !important}.align-items-sm-baseline{align-items:baseline !important}.align-items-sm-stretch{align-items:stretch !important}.align-content-sm-start{align-content:flex-start !important}.align-content-sm-end{align-content:flex-end !important}.align-content-sm-center{align-content:center !important}.align-content-sm-between{align-content:space-between !important}.align-content-sm-around{align-content:space-around !important}.align-content-sm-stretch{align-content:stretch !important}.align-self-sm-auto{align-self:auto !important}.align-self-sm-start{align-self:flex-start !important}.align-self-sm-end{align-self:flex-end !important}.align-self-sm-center{align-self:center !important}.align-self-sm-baseline{align-self:baseline !important}.align-self-sm-stretch{align-self:stretch !important}.order-sm-first{order:-1 !important}.order-sm-0{order:0 !important}.order-sm-1{order:1 !important}.order-sm-2{order:2 !important}.order-sm-3{order:3 !important}.order-sm-4{order:4 !important}.order-sm-5{order:5 !important}.order-sm-last{order:6 !important}.m-sm-0{margin:0 !important}.m-sm-1{margin:.25rem !important}.m-sm-2{margin:.5rem !important}.m-sm-3{margin:1rem !important}.m-sm-4{margin:1.5rem !important}.m-sm-5{margin:3rem !important}.m-sm-auto{margin:auto !important}.mx-sm-0{margin-right:0 !important;margin-left:0 !important}.mx-sm-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-sm-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-sm-3{margin-right:1rem !important;margin-left:1rem !important}.mx-sm-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-sm-5{margin-right:3rem !important;margin-left:3rem !important}.mx-sm-auto{margin-right:auto !important;margin-left:auto !important}.my-sm-0{margin-top:0 !important;margin-bottom:0 !important}.my-sm-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-sm-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-sm-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-sm-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-sm-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-sm-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-sm-0{margin-top:0 !important}.mt-sm-1{margin-top:.25rem !important}.mt-sm-2{margin-top:.5rem !important}.mt-sm-3{margin-top:1rem !important}.mt-sm-4{margin-top:1.5rem !important}.mt-sm-5{margin-top:3rem !important}.mt-sm-auto{margin-top:auto !important}.me-sm-0{margin-right:0 !important}.me-sm-1{margin-right:.25rem !important}.me-sm-2{margin-right:.5rem !important}.me-sm-3{margin-right:1rem !important}.me-sm-4{margin-right:1.5rem !important}.me-sm-5{margin-right:3rem !important}.me-sm-auto{margin-right:auto !important}.mb-sm-0{margin-bottom:0 !important}.mb-sm-1{margin-bottom:.25rem !important}.mb-sm-2{margin-bottom:.5rem !important}.mb-sm-3{margin-bottom:1rem !important}.mb-sm-4{margin-bottom:1.5rem !important}.mb-sm-5{margin-bottom:3rem !important}.mb-sm-auto{margin-bottom:auto !important}.ms-sm-0{margin-left:0 !important}.ms-sm-1{margin-left:.25rem !important}.ms-sm-2{margin-left:.5rem !important}.ms-sm-3{margin-left:1rem !important}.ms-sm-4{margin-left:1.5rem !important}.ms-sm-5{margin-left:3rem !important}.ms-sm-auto{margin-left:auto !important}.p-sm-0{padding:0 !important}.p-sm-1{padding:.25rem !important}.p-sm-2{padding:.5rem !important}.p-sm-3{padding:1rem !important}.p-sm-4{padding:1.5rem !important}.p-sm-5{padding:3rem !important}.px-sm-0{padding-right:0 !important;padding-left:0 !important}.px-sm-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-sm-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-sm-3{padding-right:1rem !important;padding-left:1rem !important}.px-sm-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-sm-5{padding-right:3rem !important;padding-left:3rem !important}.py-sm-0{padding-top:0 !important;padding-bottom:0 !important}.py-sm-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-sm-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-sm-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-sm-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-sm-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-sm-0{padding-top:0 !important}.pt-sm-1{padding-top:.25rem !important}.pt-sm-2{padding-top:.5rem !important}.pt-sm-3{padding-top:1rem !important}.pt-sm-4{padding-top:1.5rem !important}.pt-sm-5{padding-top:3rem !important}.pe-sm-0{padding-right:0 !important}.pe-sm-1{padding-right:.25rem !important}.pe-sm-2{padding-right:.5rem !important}.pe-sm-3{padding-right:1rem !important}.pe-sm-4{padding-right:1.5rem !important}.pe-sm-5{padding-right:3rem !important}.pb-sm-0{padding-bottom:0 !important}.pb-sm-1{padding-bottom:.25rem !important}.pb-sm-2{padding-bottom:.5rem !important}.pb-sm-3{padding-bottom:1rem !important}.pb-sm-4{padding-bottom:1.5rem !important}.pb-sm-5{padding-bottom:3rem !important}.ps-sm-0{padding-left:0 !important}.ps-sm-1{padding-left:.25rem !important}.ps-sm-2{padding-left:.5rem !important}.ps-sm-3{padding-left:1rem !important}.ps-sm-4{padding-left:1.5rem !important}.ps-sm-5{padding-left:3rem !important}.text-sm-start{text-align:left !important}.text-sm-end{text-align:right !important}.text-sm-center{text-align:center !important}}@media(min-width: 768px){.float-md-start{float:left !important}.float-md-end{float:right !important}.float-md-none{float:none !important}.d-md-inline{display:inline !important}.d-md-inline-block{display:inline-block !important}.d-md-block{display:block !important}.d-md-grid{display:grid !important}.d-md-table{display:table !important}.d-md-table-row{display:table-row !important}.d-md-table-cell{display:table-cell !important}.d-md-flex{display:flex !important}.d-md-inline-flex{display:inline-flex !important}.d-md-none{display:none !important}.flex-md-fill{flex:1 1 auto !important}.flex-md-row{flex-direction:row !important}.flex-md-column{flex-direction:column !important}.flex-md-row-reverse{flex-direction:row-reverse !important}.flex-md-column-reverse{flex-direction:column-reverse !important}.flex-md-grow-0{flex-grow:0 !important}.flex-md-grow-1{flex-grow:1 !important}.flex-md-shrink-0{flex-shrink:0 !important}.flex-md-shrink-1{flex-shrink:1 !important}.flex-md-wrap{flex-wrap:wrap !important}.flex-md-nowrap{flex-wrap:nowrap !important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse !important}.gap-md-0{gap:0 !important}.gap-md-1{gap:.25rem !important}.gap-md-2{gap:.5rem !important}.gap-md-3{gap:1rem !important}.gap-md-4{gap:1.5rem !important}.gap-md-5{gap:3rem !important}.justify-content-md-start{justify-content:flex-start !important}.justify-content-md-end{justify-content:flex-end !important}.justify-content-md-center{justify-content:center !important}.justify-content-md-between{justify-content:space-between !important}.justify-content-md-around{justify-content:space-around !important}.justify-content-md-evenly{justify-content:space-evenly !important}.align-items-md-start{align-items:flex-start !important}.align-items-md-end{align-items:flex-end !important}.align-items-md-center{align-items:center !important}.align-items-md-baseline{align-items:baseline !important}.align-items-md-stretch{align-items:stretch !important}.align-content-md-start{align-content:flex-start !important}.align-content-md-end{align-content:flex-end !important}.align-content-md-center{align-content:center !important}.align-content-md-between{align-content:space-between !important}.align-content-md-around{align-content:space-around !important}.align-content-md-stretch{align-content:stretch !important}.align-self-md-auto{align-self:auto !important}.align-self-md-start{align-self:flex-start !important}.align-self-md-end{align-self:flex-end !important}.align-self-md-center{align-self:center !important}.align-self-md-baseline{align-self:baseline !important}.align-self-md-stretch{align-self:stretch !important}.order-md-first{order:-1 !important}.order-md-0{order:0 !important}.order-md-1{order:1 !important}.order-md-2{order:2 !important}.order-md-3{order:3 !important}.order-md-4{order:4 !important}.order-md-5{order:5 !important}.order-md-last{order:6 !important}.m-md-0{margin:0 !important}.m-md-1{margin:.25rem !important}.m-md-2{margin:.5rem !important}.m-md-3{margin:1rem !important}.m-md-4{margin:1.5rem !important}.m-md-5{margin:3rem !important}.m-md-auto{margin:auto !important}.mx-md-0{margin-right:0 !important;margin-left:0 !important}.mx-md-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-md-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-md-3{margin-right:1rem !important;margin-left:1rem !important}.mx-md-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-md-5{margin-right:3rem !important;margin-left:3rem !important}.mx-md-auto{margin-right:auto !important;margin-left:auto !important}.my-md-0{margin-top:0 !important;margin-bottom:0 !important}.my-md-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-md-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-md-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-md-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-md-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-md-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-md-0{margin-top:0 !important}.mt-md-1{margin-top:.25rem !important}.mt-md-2{margin-top:.5rem !important}.mt-md-3{margin-top:1rem !important}.mt-md-4{margin-top:1.5rem !important}.mt-md-5{margin-top:3rem !important}.mt-md-auto{margin-top:auto !important}.me-md-0{margin-right:0 !important}.me-md-1{margin-right:.25rem !important}.me-md-2{margin-right:.5rem !important}.me-md-3{margin-right:1rem !important}.me-md-4{margin-right:1.5rem !important}.me-md-5{margin-right:3rem !important}.me-md-auto{margin-right:auto !important}.mb-md-0{margin-bottom:0 !important}.mb-md-1{margin-bottom:.25rem !important}.mb-md-2{margin-bottom:.5rem !important}.mb-md-3{margin-bottom:1rem !important}.mb-md-4{margin-bottom:1.5rem !important}.mb-md-5{margin-bottom:3rem !important}.mb-md-auto{margin-bottom:auto !important}.ms-md-0{margin-left:0 !important}.ms-md-1{margin-left:.25rem !important}.ms-md-2{margin-left:.5rem !important}.ms-md-3{margin-left:1rem !important}.ms-md-4{margin-left:1.5rem !important}.ms-md-5{margin-left:3rem !important}.ms-md-auto{margin-left:auto !important}.p-md-0{padding:0 !important}.p-md-1{padding:.25rem !important}.p-md-2{padding:.5rem !important}.p-md-3{padding:1rem !important}.p-md-4{padding:1.5rem !important}.p-md-5{padding:3rem !important}.px-md-0{padding-right:0 !important;padding-left:0 !important}.px-md-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-md-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-md-3{padding-right:1rem !important;padding-left:1rem !important}.px-md-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-md-5{padding-right:3rem !important;padding-left:3rem !important}.py-md-0{padding-top:0 !important;padding-bottom:0 !important}.py-md-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-md-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-md-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-md-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-md-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-md-0{padding-top:0 !important}.pt-md-1{padding-top:.25rem !important}.pt-md-2{padding-top:.5rem !important}.pt-md-3{padding-top:1rem !important}.pt-md-4{padding-top:1.5rem !important}.pt-md-5{padding-top:3rem !important}.pe-md-0{padding-right:0 !important}.pe-md-1{padding-right:.25rem !important}.pe-md-2{padding-right:.5rem !important}.pe-md-3{padding-right:1rem !important}.pe-md-4{padding-right:1.5rem !important}.pe-md-5{padding-right:3rem !important}.pb-md-0{padding-bottom:0 !important}.pb-md-1{padding-bottom:.25rem !important}.pb-md-2{padding-bottom:.5rem !important}.pb-md-3{padding-bottom:1rem !important}.pb-md-4{padding-bottom:1.5rem !important}.pb-md-5{padding-bottom:3rem !important}.ps-md-0{padding-left:0 !important}.ps-md-1{padding-left:.25rem !important}.ps-md-2{padding-left:.5rem !important}.ps-md-3{padding-left:1rem !important}.ps-md-4{padding-left:1.5rem !important}.ps-md-5{padding-left:3rem !important}.text-md-start{text-align:left !important}.text-md-end{text-align:right !important}.text-md-center{text-align:center !important}}@media(min-width: 992px){.float-lg-start{float:left !important}.float-lg-end{float:right !important}.float-lg-none{float:none !important}.d-lg-inline{display:inline !important}.d-lg-inline-block{display:inline-block !important}.d-lg-block{display:block !important}.d-lg-grid{display:grid !important}.d-lg-table{display:table !important}.d-lg-table-row{display:table-row !important}.d-lg-table-cell{display:table-cell !important}.d-lg-flex{display:flex !important}.d-lg-inline-flex{display:inline-flex !important}.d-lg-none{display:none !important}.flex-lg-fill{flex:1 1 auto !important}.flex-lg-row{flex-direction:row !important}.flex-lg-column{flex-direction:column !important}.flex-lg-row-reverse{flex-direction:row-reverse !important}.flex-lg-column-reverse{flex-direction:column-reverse !important}.flex-lg-grow-0{flex-grow:0 !important}.flex-lg-grow-1{flex-grow:1 !important}.flex-lg-shrink-0{flex-shrink:0 !important}.flex-lg-shrink-1{flex-shrink:1 !important}.flex-lg-wrap{flex-wrap:wrap !important}.flex-lg-nowrap{flex-wrap:nowrap !important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse !important}.gap-lg-0{gap:0 !important}.gap-lg-1{gap:.25rem !important}.gap-lg-2{gap:.5rem !important}.gap-lg-3{gap:1rem !important}.gap-lg-4{gap:1.5rem !important}.gap-lg-5{gap:3rem !important}.justify-content-lg-start{justify-content:flex-start !important}.justify-content-lg-end{justify-content:flex-end !important}.justify-content-lg-center{justify-content:center !important}.justify-content-lg-between{justify-content:space-between !important}.justify-content-lg-around{justify-content:space-around !important}.justify-content-lg-evenly{justify-content:space-evenly !important}.align-items-lg-start{align-items:flex-start !important}.align-items-lg-end{align-items:flex-end !important}.align-items-lg-center{align-items:center !important}.align-items-lg-baseline{align-items:baseline !important}.align-items-lg-stretch{align-items:stretch !important}.align-content-lg-start{align-content:flex-start !important}.align-content-lg-end{align-content:flex-end !important}.align-content-lg-center{align-content:center !important}.align-content-lg-between{align-content:space-between !important}.align-content-lg-around{align-content:space-around !important}.align-content-lg-stretch{align-content:stretch !important}.align-self-lg-auto{align-self:auto !important}.align-self-lg-start{align-self:flex-start !important}.align-self-lg-end{align-self:flex-end !important}.align-self-lg-center{align-self:center !important}.align-self-lg-baseline{align-self:baseline !important}.align-self-lg-stretch{align-self:stretch !important}.order-lg-first{order:-1 !important}.order-lg-0{order:0 !important}.order-lg-1{order:1 !important}.order-lg-2{order:2 !important}.order-lg-3{order:3 !important}.order-lg-4{order:4 !important}.order-lg-5{order:5 !important}.order-lg-last{order:6 !important}.m-lg-0{margin:0 !important}.m-lg-1{margin:.25rem !important}.m-lg-2{margin:.5rem !important}.m-lg-3{margin:1rem !important}.m-lg-4{margin:1.5rem !important}.m-lg-5{margin:3rem !important}.m-lg-auto{margin:auto !important}.mx-lg-0{margin-right:0 !important;margin-left:0 !important}.mx-lg-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-lg-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-lg-3{margin-right:1rem !important;margin-left:1rem !important}.mx-lg-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-lg-5{margin-right:3rem !important;margin-left:3rem !important}.mx-lg-auto{margin-right:auto !important;margin-left:auto !important}.my-lg-0{margin-top:0 !important;margin-bottom:0 !important}.my-lg-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-lg-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-lg-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-lg-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-lg-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-lg-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-lg-0{margin-top:0 !important}.mt-lg-1{margin-top:.25rem !important}.mt-lg-2{margin-top:.5rem !important}.mt-lg-3{margin-top:1rem !important}.mt-lg-4{margin-top:1.5rem !important}.mt-lg-5{margin-top:3rem !important}.mt-lg-auto{margin-top:auto !important}.me-lg-0{margin-right:0 !important}.me-lg-1{margin-right:.25rem !important}.me-lg-2{margin-right:.5rem !important}.me-lg-3{margin-right:1rem !important}.me-lg-4{margin-right:1.5rem !important}.me-lg-5{margin-right:3rem !important}.me-lg-auto{margin-right:auto !important}.mb-lg-0{margin-bottom:0 !important}.mb-lg-1{margin-bottom:.25rem !important}.mb-lg-2{margin-bottom:.5rem !important}.mb-lg-3{margin-bottom:1rem !important}.mb-lg-4{margin-bottom:1.5rem !important}.mb-lg-5{margin-bottom:3rem !important}.mb-lg-auto{margin-bottom:auto !important}.ms-lg-0{margin-left:0 !important}.ms-lg-1{margin-left:.25rem !important}.ms-lg-2{margin-left:.5rem !important}.ms-lg-3{margin-left:1rem !important}.ms-lg-4{margin-left:1.5rem !important}.ms-lg-5{margin-left:3rem !important}.ms-lg-auto{margin-left:auto !important}.p-lg-0{padding:0 !important}.p-lg-1{padding:.25rem !important}.p-lg-2{padding:.5rem !important}.p-lg-3{padding:1rem !important}.p-lg-4{padding:1.5rem !important}.p-lg-5{padding:3rem !important}.px-lg-0{padding-right:0 !important;padding-left:0 !important}.px-lg-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-lg-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-lg-3{padding-right:1rem !important;padding-left:1rem !important}.px-lg-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-lg-5{padding-right:3rem !important;padding-left:3rem !important}.py-lg-0{padding-top:0 !important;padding-bottom:0 !important}.py-lg-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-lg-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-lg-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-lg-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-lg-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-lg-0{padding-top:0 !important}.pt-lg-1{padding-top:.25rem !important}.pt-lg-2{padding-top:.5rem !important}.pt-lg-3{padding-top:1rem !important}.pt-lg-4{padding-top:1.5rem !important}.pt-lg-5{padding-top:3rem !important}.pe-lg-0{padding-right:0 !important}.pe-lg-1{padding-right:.25rem !important}.pe-lg-2{padding-right:.5rem !important}.pe-lg-3{padding-right:1rem !important}.pe-lg-4{padding-right:1.5rem !important}.pe-lg-5{padding-right:3rem !important}.pb-lg-0{padding-bottom:0 !important}.pb-lg-1{padding-bottom:.25rem !important}.pb-lg-2{padding-bottom:.5rem !important}.pb-lg-3{padding-bottom:1rem !important}.pb-lg-4{padding-bottom:1.5rem !important}.pb-lg-5{padding-bottom:3rem !important}.ps-lg-0{padding-left:0 !important}.ps-lg-1{padding-left:.25rem !important}.ps-lg-2{padding-left:.5rem !important}.ps-lg-3{padding-left:1rem !important}.ps-lg-4{padding-left:1.5rem !important}.ps-lg-5{padding-left:3rem !important}.text-lg-start{text-align:left !important}.text-lg-end{text-align:right !important}.text-lg-center{text-align:center !important}}@media(min-width: 1200px){.float-xl-start{float:left !important}.float-xl-end{float:right !important}.float-xl-none{float:none !important}.d-xl-inline{display:inline !important}.d-xl-inline-block{display:inline-block !important}.d-xl-block{display:block !important}.d-xl-grid{display:grid !important}.d-xl-table{display:table !important}.d-xl-table-row{display:table-row !important}.d-xl-table-cell{display:table-cell !important}.d-xl-flex{display:flex !important}.d-xl-inline-flex{display:inline-flex !important}.d-xl-none{display:none !important}.flex-xl-fill{flex:1 1 auto !important}.flex-xl-row{flex-direction:row !important}.flex-xl-column{flex-direction:column !important}.flex-xl-row-reverse{flex-direction:row-reverse !important}.flex-xl-column-reverse{flex-direction:column-reverse !important}.flex-xl-grow-0{flex-grow:0 !important}.flex-xl-grow-1{flex-grow:1 !important}.flex-xl-shrink-0{flex-shrink:0 !important}.flex-xl-shrink-1{flex-shrink:1 !important}.flex-xl-wrap{flex-wrap:wrap !important}.flex-xl-nowrap{flex-wrap:nowrap !important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse !important}.gap-xl-0{gap:0 !important}.gap-xl-1{gap:.25rem !important}.gap-xl-2{gap:.5rem !important}.gap-xl-3{gap:1rem !important}.gap-xl-4{gap:1.5rem !important}.gap-xl-5{gap:3rem !important}.justify-content-xl-start{justify-content:flex-start !important}.justify-content-xl-end{justify-content:flex-end !important}.justify-content-xl-center{justify-content:center !important}.justify-content-xl-between{justify-content:space-between !important}.justify-content-xl-around{justify-content:space-around !important}.justify-content-xl-evenly{justify-content:space-evenly !important}.align-items-xl-start{align-items:flex-start !important}.align-items-xl-end{align-items:flex-end !important}.align-items-xl-center{align-items:center !important}.align-items-xl-baseline{align-items:baseline !important}.align-items-xl-stretch{align-items:stretch !important}.align-content-xl-start{align-content:flex-start !important}.align-content-xl-end{align-content:flex-end !important}.align-content-xl-center{align-content:center !important}.align-content-xl-between{align-content:space-between !important}.align-content-xl-around{align-content:space-around !important}.align-content-xl-stretch{align-content:stretch !important}.align-self-xl-auto{align-self:auto !important}.align-self-xl-start{align-self:flex-start !important}.align-self-xl-end{align-self:flex-end !important}.align-self-xl-center{align-self:center !important}.align-self-xl-baseline{align-self:baseline !important}.align-self-xl-stretch{align-self:stretch !important}.order-xl-first{order:-1 !important}.order-xl-0{order:0 !important}.order-xl-1{order:1 !important}.order-xl-2{order:2 !important}.order-xl-3{order:3 !important}.order-xl-4{order:4 !important}.order-xl-5{order:5 !important}.order-xl-last{order:6 !important}.m-xl-0{margin:0 !important}.m-xl-1{margin:.25rem !important}.m-xl-2{margin:.5rem !important}.m-xl-3{margin:1rem !important}.m-xl-4{margin:1.5rem !important}.m-xl-5{margin:3rem !important}.m-xl-auto{margin:auto !important}.mx-xl-0{margin-right:0 !important;margin-left:0 !important}.mx-xl-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-xl-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-xl-3{margin-right:1rem !important;margin-left:1rem !important}.mx-xl-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-xl-5{margin-right:3rem !important;margin-left:3rem !important}.mx-xl-auto{margin-right:auto !important;margin-left:auto !important}.my-xl-0{margin-top:0 !important;margin-bottom:0 !important}.my-xl-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-xl-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-xl-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-xl-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-xl-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-xl-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-xl-0{margin-top:0 !important}.mt-xl-1{margin-top:.25rem !important}.mt-xl-2{margin-top:.5rem !important}.mt-xl-3{margin-top:1rem !important}.mt-xl-4{margin-top:1.5rem !important}.mt-xl-5{margin-top:3rem !important}.mt-xl-auto{margin-top:auto !important}.me-xl-0{margin-right:0 !important}.me-xl-1{margin-right:.25rem !important}.me-xl-2{margin-right:.5rem !important}.me-xl-3{margin-right:1rem !important}.me-xl-4{margin-right:1.5rem !important}.me-xl-5{margin-right:3rem !important}.me-xl-auto{margin-right:auto !important}.mb-xl-0{margin-bottom:0 !important}.mb-xl-1{margin-bottom:.25rem !important}.mb-xl-2{margin-bottom:.5rem !important}.mb-xl-3{margin-bottom:1rem !important}.mb-xl-4{margin-bottom:1.5rem !important}.mb-xl-5{margin-bottom:3rem !important}.mb-xl-auto{margin-bottom:auto !important}.ms-xl-0{margin-left:0 !important}.ms-xl-1{margin-left:.25rem !important}.ms-xl-2{margin-left:.5rem !important}.ms-xl-3{margin-left:1rem !important}.ms-xl-4{margin-left:1.5rem !important}.ms-xl-5{margin-left:3rem !important}.ms-xl-auto{margin-left:auto !important}.p-xl-0{padding:0 !important}.p-xl-1{padding:.25rem !important}.p-xl-2{padding:.5rem !important}.p-xl-3{padding:1rem !important}.p-xl-4{padding:1.5rem !important}.p-xl-5{padding:3rem !important}.px-xl-0{padding-right:0 !important;padding-left:0 !important}.px-xl-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-xl-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-xl-3{padding-right:1rem !important;padding-left:1rem !important}.px-xl-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-xl-5{padding-right:3rem !important;padding-left:3rem !important}.py-xl-0{padding-top:0 !important;padding-bottom:0 !important}.py-xl-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-xl-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-xl-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-xl-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-xl-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-xl-0{padding-top:0 !important}.pt-xl-1{padding-top:.25rem !important}.pt-xl-2{padding-top:.5rem !important}.pt-xl-3{padding-top:1rem !important}.pt-xl-4{padding-top:1.5rem !important}.pt-xl-5{padding-top:3rem !important}.pe-xl-0{padding-right:0 !important}.pe-xl-1{padding-right:.25rem !important}.pe-xl-2{padding-right:.5rem !important}.pe-xl-3{padding-right:1rem !important}.pe-xl-4{padding-right:1.5rem !important}.pe-xl-5{padding-right:3rem !important}.pb-xl-0{padding-bottom:0 !important}.pb-xl-1{padding-bottom:.25rem !important}.pb-xl-2{padding-bottom:.5rem !important}.pb-xl-3{padding-bottom:1rem !important}.pb-xl-4{padding-bottom:1.5rem !important}.pb-xl-5{padding-bottom:3rem !important}.ps-xl-0{padding-left:0 !important}.ps-xl-1{padding-left:.25rem !important}.ps-xl-2{padding-left:.5rem !important}.ps-xl-3{padding-left:1rem !important}.ps-xl-4{padding-left:1.5rem !important}.ps-xl-5{padding-left:3rem !important}.text-xl-start{text-align:left !important}.text-xl-end{text-align:right !important}.text-xl-center{text-align:center !important}}@media(min-width: 1400px){.float-xxl-start{float:left !important}.float-xxl-end{float:right !important}.float-xxl-none{float:none !important}.d-xxl-inline{display:inline !important}.d-xxl-inline-block{display:inline-block !important}.d-xxl-block{display:block !important}.d-xxl-grid{display:grid !important}.d-xxl-table{display:table !important}.d-xxl-table-row{display:table-row !important}.d-xxl-table-cell{display:table-cell !important}.d-xxl-flex{display:flex !important}.d-xxl-inline-flex{display:inline-flex !important}.d-xxl-none{display:none !important}.flex-xxl-fill{flex:1 1 auto !important}.flex-xxl-row{flex-direction:row !important}.flex-xxl-column{flex-direction:column !important}.flex-xxl-row-reverse{flex-direction:row-reverse !important}.flex-xxl-column-reverse{flex-direction:column-reverse !important}.flex-xxl-grow-0{flex-grow:0 !important}.flex-xxl-grow-1{flex-grow:1 !important}.flex-xxl-shrink-0{flex-shrink:0 !important}.flex-xxl-shrink-1{flex-shrink:1 !important}.flex-xxl-wrap{flex-wrap:wrap !important}.flex-xxl-nowrap{flex-wrap:nowrap !important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse !important}.gap-xxl-0{gap:0 !important}.gap-xxl-1{gap:.25rem !important}.gap-xxl-2{gap:.5rem !important}.gap-xxl-3{gap:1rem !important}.gap-xxl-4{gap:1.5rem !important}.gap-xxl-5{gap:3rem !important}.justify-content-xxl-start{justify-content:flex-start !important}.justify-content-xxl-end{justify-content:flex-end !important}.justify-content-xxl-center{justify-content:center !important}.justify-content-xxl-between{justify-content:space-between !important}.justify-content-xxl-around{justify-content:space-around !important}.justify-content-xxl-evenly{justify-content:space-evenly !important}.align-items-xxl-start{align-items:flex-start !important}.align-items-xxl-end{align-items:flex-end !important}.align-items-xxl-center{align-items:center !important}.align-items-xxl-baseline{align-items:baseline !important}.align-items-xxl-stretch{align-items:stretch !important}.align-content-xxl-start{align-content:flex-start !important}.align-content-xxl-end{align-content:flex-end !important}.align-content-xxl-center{align-content:center !important}.align-content-xxl-between{align-content:space-between !important}.align-content-xxl-around{align-content:space-around !important}.align-content-xxl-stretch{align-content:stretch !important}.align-self-xxl-auto{align-self:auto !important}.align-self-xxl-start{align-self:flex-start !important}.align-self-xxl-end{align-self:flex-end !important}.align-self-xxl-center{align-self:center !important}.align-self-xxl-baseline{align-self:baseline !important}.align-self-xxl-stretch{align-self:stretch !important}.order-xxl-first{order:-1 !important}.order-xxl-0{order:0 !important}.order-xxl-1{order:1 !important}.order-xxl-2{order:2 !important}.order-xxl-3{order:3 !important}.order-xxl-4{order:4 !important}.order-xxl-5{order:5 !important}.order-xxl-last{order:6 !important}.m-xxl-0{margin:0 !important}.m-xxl-1{margin:.25rem !important}.m-xxl-2{margin:.5rem !important}.m-xxl-3{margin:1rem !important}.m-xxl-4{margin:1.5rem !important}.m-xxl-5{margin:3rem !important}.m-xxl-auto{margin:auto !important}.mx-xxl-0{margin-right:0 !important;margin-left:0 !important}.mx-xxl-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-xxl-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-xxl-3{margin-right:1rem !important;margin-left:1rem !important}.mx-xxl-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-xxl-5{margin-right:3rem !important;margin-left:3rem !important}.mx-xxl-auto{margin-right:auto !important;margin-left:auto !important}.my-xxl-0{margin-top:0 !important;margin-bottom:0 !important}.my-xxl-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-xxl-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-xxl-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-xxl-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-xxl-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-xxl-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-xxl-0{margin-top:0 !important}.mt-xxl-1{margin-top:.25rem !important}.mt-xxl-2{margin-top:.5rem !important}.mt-xxl-3{margin-top:1rem !important}.mt-xxl-4{margin-top:1.5rem !important}.mt-xxl-5{margin-top:3rem !important}.mt-xxl-auto{margin-top:auto !important}.me-xxl-0{margin-right:0 !important}.me-xxl-1{margin-right:.25rem !important}.me-xxl-2{margin-right:.5rem !important}.me-xxl-3{margin-right:1rem !important}.me-xxl-4{margin-right:1.5rem !important}.me-xxl-5{margin-right:3rem !important}.me-xxl-auto{margin-right:auto !important}.mb-xxl-0{margin-bottom:0 !important}.mb-xxl-1{margin-bottom:.25rem !important}.mb-xxl-2{margin-bottom:.5rem !important}.mb-xxl-3{margin-bottom:1rem !important}.mb-xxl-4{margin-bottom:1.5rem !important}.mb-xxl-5{margin-bottom:3rem !important}.mb-xxl-auto{margin-bottom:auto !important}.ms-xxl-0{margin-left:0 !important}.ms-xxl-1{margin-left:.25rem !important}.ms-xxl-2{margin-left:.5rem !important}.ms-xxl-3{margin-left:1rem !important}.ms-xxl-4{margin-left:1.5rem !important}.ms-xxl-5{margin-left:3rem !important}.ms-xxl-auto{margin-left:auto !important}.p-xxl-0{padding:0 !important}.p-xxl-1{padding:.25rem !important}.p-xxl-2{padding:.5rem !important}.p-xxl-3{padding:1rem !important}.p-xxl-4{padding:1.5rem !important}.p-xxl-5{padding:3rem !important}.px-xxl-0{padding-right:0 !important;padding-left:0 !important}.px-xxl-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-xxl-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-xxl-3{padding-right:1rem !important;padding-left:1rem !important}.px-xxl-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-xxl-5{padding-right:3rem !important;padding-left:3rem !important}.py-xxl-0{padding-top:0 !important;padding-bottom:0 !important}.py-xxl-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-xxl-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-xxl-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-xxl-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-xxl-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-xxl-0{padding-top:0 !important}.pt-xxl-1{padding-top:.25rem !important}.pt-xxl-2{padding-top:.5rem !important}.pt-xxl-3{padding-top:1rem !important}.pt-xxl-4{padding-top:1.5rem !important}.pt-xxl-5{padding-top:3rem !important}.pe-xxl-0{padding-right:0 !important}.pe-xxl-1{padding-right:.25rem !important}.pe-xxl-2{padding-right:.5rem !important}.pe-xxl-3{padding-right:1rem !important}.pe-xxl-4{padding-right:1.5rem !important}.pe-xxl-5{padding-right:3rem !important}.pb-xxl-0{padding-bottom:0 !important}.pb-xxl-1{padding-bottom:.25rem !important}.pb-xxl-2{padding-bottom:.5rem !important}.pb-xxl-3{padding-bottom:1rem !important}.pb-xxl-4{padding-bottom:1.5rem !important}.pb-xxl-5{padding-bottom:3rem !important}.ps-xxl-0{padding-left:0 !important}.ps-xxl-1{padding-left:.25rem !important}.ps-xxl-2{padding-left:.5rem !important}.ps-xxl-3{padding-left:1rem !important}.ps-xxl-4{padding-left:1.5rem !important}.ps-xxl-5{padding-left:3rem !important}.text-xxl-start{text-align:left !important}.text-xxl-end{text-align:right !important}.text-xxl-center{text-align:center !important}}.bg-default{color:#fff}.bg-primary{color:#fff}.bg-secondary{color:#fff}.bg-success{color:#fff}.bg-info{color:#fff}.bg-warning{color:#fff}.bg-danger{color:#fff}.bg-light{color:#000}.bg-dark{color:#fff}@media(min-width: 1200px){.fs-1{font-size:2rem !important}.fs-2{font-size:1.65rem !important}.fs-3{font-size:1.45rem !important}}@media print{.d-print-inline{display:inline !important}.d-print-inline-block{display:inline-block !important}.d-print-block{display:block !important}.d-print-grid{display:grid !important}.d-print-table{display:table !important}.d-print-table-row{display:table-row !important}.d-print-table-cell{display:table-cell !important}.d-print-flex{display:flex !important}.d-print-inline-flex{display:inline-flex !important}.d-print-none{display:none !important}}.tippy-box[data-theme~=quarto]{background-color:#fff;border:solid 1px #dee2e6;border-radius:.25rem;color:#777;font-size:.875rem}.tippy-box[data-theme~=quarto]>.tippy-backdrop{background-color:#fff}.tippy-box[data-theme~=quarto]>.tippy-arrow:after,.tippy-box[data-theme~=quarto]>.tippy-svg-arrow:after{content:"";position:absolute;z-index:-1}.tippy-box[data-theme~=quarto]>.tippy-arrow:after{border-color:rgba(0,0,0,0);border-style:solid}.tippy-box[data-placement^=top]>.tippy-arrow:before{bottom:-6px}.tippy-box[data-placement^=bottom]>.tippy-arrow:before{top:-6px}.tippy-box[data-placement^=right]>.tippy-arrow:before{left:-6px}.tippy-box[data-placement^=left]>.tippy-arrow:before{right:-6px}.tippy-box[data-theme~=quarto][data-placement^=top]>.tippy-arrow:before{border-top-color:#fff}.tippy-box[data-theme~=quarto][data-placement^=top]>.tippy-arrow:after{border-top-color:#dee2e6;border-width:7px 7px 0;top:17px;left:1px}.tippy-box[data-theme~=quarto][data-placement^=top]>.tippy-svg-arrow>svg{top:16px}.tippy-box[data-theme~=quarto][data-placement^=top]>.tippy-svg-arrow:after{top:17px}.tippy-box[data-theme~=quarto][data-placement^=bottom]>.tippy-arrow:before{border-bottom-color:#fff;bottom:16px}.tippy-box[data-theme~=quarto][data-placement^=bottom]>.tippy-arrow:after{border-bottom-color:#dee2e6;border-width:0 7px 7px;bottom:17px;left:1px}.tippy-box[data-theme~=quarto][data-placement^=bottom]>.tippy-svg-arrow>svg{bottom:15px}.tippy-box[data-theme~=quarto][data-placement^=bottom]>.tippy-svg-arrow:after{bottom:17px}.tippy-box[data-theme~=quarto][data-placement^=left]>.tippy-arrow:before{border-left-color:#fff}.tippy-box[data-theme~=quarto][data-placement^=left]>.tippy-arrow:after{border-left-color:#dee2e6;border-width:7px 0 7px 7px;left:17px;top:1px}.tippy-box[data-theme~=quarto][data-placement^=left]>.tippy-svg-arrow>svg{left:11px}.tippy-box[data-theme~=quarto][data-placement^=left]>.tippy-svg-arrow:after{left:12px}.tippy-box[data-theme~=quarto][data-placement^=right]>.tippy-arrow:before{border-right-color:#fff;right:16px}.tippy-box[data-theme~=quarto][data-placement^=right]>.tippy-arrow:after{border-width:7px 7px 7px 0;right:17px;top:1px;border-right-color:#dee2e6}.tippy-box[data-theme~=quarto][data-placement^=right]>.tippy-svg-arrow>svg{right:11px}.tippy-box[data-theme~=quarto][data-placement^=right]>.tippy-svg-arrow:after{right:12px}.tippy-box[data-theme~=quarto]>.tippy-svg-arrow{fill:#777}.tippy-box[data-theme~=quarto]>.tippy-svg-arrow:after{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMCA2czEuNzk2LS4wMTMgNC42Ny0zLjYxNUM1Ljg1MS45IDYuOTMuMDA2IDggMGMxLjA3LS4wMDYgMi4xNDguODg3IDMuMzQzIDIuMzg1QzE0LjIzMyA2LjAwNSAxNiA2IDE2IDZIMHoiIGZpbGw9InJnYmEoMCwgOCwgMTYsIDAuMikiLz48L3N2Zz4=);background-size:16px 6px;width:16px;height:6px}.top-right{position:absolute;top:1em;right:1em}.hidden{display:none !important}.zindex-bottom{z-index:-1 !important}.quarto-layout-panel{margin-bottom:1em}.quarto-layout-panel>figure{width:100%}.quarto-layout-panel>figure>figcaption,.quarto-layout-panel>.panel-caption{margin-top:10pt}.quarto-layout-panel>.table-caption{margin-top:0px}.table-caption p{margin-bottom:.5em}.quarto-layout-row{display:flex;flex-direction:row;align-items:flex-start}.quarto-layout-valign-top{align-items:flex-start}.quarto-layout-valign-bottom{align-items:flex-end}.quarto-layout-valign-center{align-items:center}.quarto-layout-cell{position:relative;margin-right:20px}.quarto-layout-cell:last-child{margin-right:0}.quarto-layout-cell figure,.quarto-layout-cell>p{margin:.2em}.quarto-layout-cell img{max-width:100%}.quarto-layout-cell .html-widget{width:100% !important}.quarto-layout-cell div figure p{margin:0}.quarto-layout-cell figure{display:inline-block;margin-inline-start:0;margin-inline-end:0}.quarto-layout-cell table{display:inline-table}.quarto-layout-cell-subref figcaption,figure .quarto-layout-row figure figcaption{text-align:center;font-style:italic}.quarto-figure{position:relative;margin-bottom:1em}.quarto-figure>figure{width:100%;margin-bottom:0}.quarto-figure-left>figure>p,.quarto-figure-left>figure>div{text-align:left}.quarto-figure-center>figure>p,.quarto-figure-center>figure>div{text-align:center}.quarto-figure-right>figure>p,.quarto-figure-right>figure>div{text-align:right}figure>p:empty{display:none}figure>p:first-child{margin-top:0;margin-bottom:0}figure>figcaption{margin-top:.5em}div[id^=tbl-]{position:relative}.quarto-figure>.anchorjs-link{position:absolute;top:.6em;right:.5em}div[id^=tbl-]>.anchorjs-link{position:absolute;top:.7em;right:.3em}.quarto-figure:hover>.anchorjs-link,div[id^=tbl-]:hover>.anchorjs-link,h2:hover>.anchorjs-link,.h2:hover>.anchorjs-link,h3:hover>.anchorjs-link,.h3:hover>.anchorjs-link,h4:hover>.anchorjs-link,.h4:hover>.anchorjs-link,h5:hover>.anchorjs-link,.h5:hover>.anchorjs-link,h6:hover>.anchorjs-link,.h6:hover>.anchorjs-link,.reveal-anchorjs-link>.anchorjs-link{opacity:1}#title-block-header{margin-block-end:1rem;position:relative;margin-top:-1px}#title-block-header .abstract{margin-block-start:1rem}#title-block-header .abstract .abstract-title{font-weight:600}#title-block-header a{text-decoration:none}#title-block-header .author,#title-block-header .date,#title-block-header .doi{margin-block-end:.2rem}#title-block-header .quarto-title-block>div{display:flex}#title-block-header .quarto-title-block>div>h1,#title-block-header .quarto-title-block>div>.h1{flex-grow:1}#title-block-header .quarto-title-block>div>button{flex-shrink:0;height:2.25rem;margin-top:0}@media(min-width: 992px){#title-block-header .quarto-title-block>div>button{margin-top:5px}}tr.header>th>p:last-of-type{margin-bottom:0px}table,.table{caption-side:top;margin-bottom:1.5rem}caption,.table-caption{padding-top:.5rem;padding-bottom:.5rem;text-align:center}.utterances{max-width:none;margin-left:-8px}iframe{margin-bottom:1em}details{margin-bottom:1em}details[show]{margin-bottom:0}details>summary{color:#777}details>summary>p:only-child{display:inline}pre.sourceCode,code.sourceCode{position:relative}p code:not(.sourceCode){white-space:pre-wrap}code{white-space:pre}@media print{code{white-space:pre-wrap}}pre>code{display:block}pre>code.sourceCode{white-space:pre}pre>code.sourceCode>span>a:first-child::before{text-decoration:none}pre.code-overflow-wrap>code.sourceCode{white-space:pre-wrap}pre.code-overflow-scroll>code.sourceCode{white-space:pre}code a:any-link{color:inherit;text-decoration:none}code a:hover{color:inherit;text-decoration:underline}ul.task-list{padding-left:1em}[data-tippy-root]{display:inline-block}.tippy-content .footnote-back{display:none}.quarto-embedded-source-code{display:none}.quarto-unresolved-ref{font-weight:600}.quarto-cover-image{max-width:35%;float:right;margin-left:30px}.cell-output-display .widget-subarea{margin-bottom:1em}.cell-output-display:not(.no-overflow-x),.knitsql-table:not(.no-overflow-x){overflow-x:auto}.panel-input{margin-bottom:1em}.panel-input>div,.panel-input>div>div{display:inline-block;vertical-align:top;padding-right:12px}.panel-input>p:last-child{margin-bottom:0}.layout-sidebar{margin-bottom:1em}.layout-sidebar .tab-content{border:none}.tab-content>.page-columns.active{display:grid}div.sourceCode>iframe{width:100%;height:300px;margin-bottom:-0.5em}div.ansi-escaped-output{font-family:monospace;display:block}/*! * * ansi colors from IPython notebook's * -*/.ansi-black-fg{color:#3e424d}.ansi-black-bg{background-color:#3e424d}.ansi-black-intense-fg{color:#282c36}.ansi-black-intense-bg{background-color:#282c36}.ansi-red-fg{color:#e75c58}.ansi-red-bg{background-color:#e75c58}.ansi-red-intense-fg{color:#b22b31}.ansi-red-intense-bg{background-color:#b22b31}.ansi-green-fg{color:#00a250}.ansi-green-bg{background-color:#00a250}.ansi-green-intense-fg{color:#007427}.ansi-green-intense-bg{background-color:#007427}.ansi-yellow-fg{color:#ddb62b}.ansi-yellow-bg{background-color:#ddb62b}.ansi-yellow-intense-fg{color:#b27d12}.ansi-yellow-intense-bg{background-color:#b27d12}.ansi-blue-fg{color:#208ffb}.ansi-blue-bg{background-color:#208ffb}.ansi-blue-intense-fg{color:#0065ca}.ansi-blue-intense-bg{background-color:#0065ca}.ansi-magenta-fg{color:#d160c4}.ansi-magenta-bg{background-color:#d160c4}.ansi-magenta-intense-fg{color:#a03196}.ansi-magenta-intense-bg{background-color:#a03196}.ansi-cyan-fg{color:#60c6c8}.ansi-cyan-bg{background-color:#60c6c8}.ansi-cyan-intense-fg{color:#258f8f}.ansi-cyan-intense-bg{background-color:#258f8f}.ansi-white-fg{color:#c5c1b4}.ansi-white-bg{background-color:#c5c1b4}.ansi-white-intense-fg{color:#a1a6b2}.ansi-white-intense-bg{background-color:#a1a6b2}.ansi-default-inverse-fg{color:#fff}.ansi-default-inverse-bg{background-color:#000}.ansi-bold{font-weight:bold}.ansi-underline{text-decoration:underline}:root{--quarto-body-bg: #fff;--quarto-body-color: #777;--quarto-text-muted: #777;--quarto-border-color: #dee2e6;--quarto-border-width: 1px;--quarto-border-radius: 0.25rem}table.gt_table{color:var(--quarto-body-color);font-size:1em;width:100%;background-color:transparent;border-top-width:inherit;border-bottom-width:inherit;border-color:var(--quarto-border-color)}table.gt_table th.gt_column_spanner_outer{color:var(--quarto-body-color);background-color:transparent;border-top-width:inherit;border-bottom-width:inherit;border-color:var(--quarto-border-color)}table.gt_table th.gt_col_heading{color:var(--quarto-body-color);font-weight:bold;background-color:transparent}table.gt_table thead.gt_col_headings{border-bottom:1px solid currentColor;border-top-width:inherit;border-top-color:var(--quarto-border-color)}table.gt_table thead.gt_col_headings:not(:first-child){border-top-width:1px;border-top-color:var(--quarto-border-color)}table.gt_table td.gt_row{border-bottom-width:1px;border-bottom-color:var(--quarto-border-color);border-top-width:0px}table.gt_table tbody.gt_table_body{border-top-width:1px;border-bottom-width:1px;border-bottom-color:var(--quarto-border-color);border-top-color:currentColor}div.columns{display:initial;gap:initial}div.column{display:inline-block;overflow-x:initial;vertical-align:top;width:50%}@media print{:root{font-size:11pt}#quarto-sidebar,#TOC,.nav-page{display:none}.page-columns .content{grid-column-start:page-start}.fixed-top{position:relative}.panel-caption,.figure-caption,figcaption{color:#666}}.code-copy-button{position:absolute;top:0;right:0;border:0;margin-top:5px;margin-right:5px;background-color:transparent}.code-copy-button:focus{outline:none}.code-copy-button-tooltip{font-size:.75em}pre.sourceCode:hover>.code-copy-button>.bi::before{display:inline-block;height:1rem;width:1rem;content:"";vertical-align:-0.125em;background-image:url('data:image/svg+xml,');background-repeat:no-repeat;background-size:1rem 1rem}pre.sourceCode:hover>.code-copy-button-checked>.bi::before{background-image:url('data:image/svg+xml,')}pre.sourceCode:hover>.code-copy-button:hover>.bi::before{background-image:url('data:image/svg+xml,')}pre.sourceCode:hover>.code-copy-button-checked:hover>.bi::before{background-image:url('data:image/svg+xml,')}main ol ol,main ul ul,main ol ul,main ul ol{margin-bottom:1em}body{margin:0}main.page-columns>header>h1.title,main.page-columns>header>.title.h1{margin-bottom:0}@media(min-width: 992px){body .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start page-start-inset] 35px [body-start-outset] 35px [body-start] 1.5em [body-content-start] minmax(500px, calc(850px - 3em)) [body-content-end] 1.5em [body-end] 35px [body-end-outset] minmax(75px, 145px) [page-end-inset] 35px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.fullcontent:not(.floating):not(.docked) .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start page-start-inset] 35px [body-start-outset] 35px [body-start] 1.5em [body-content-start] minmax(500px, calc(850px - 3em)) [body-content-end] 1.5em [body-end] 35px [body-end-outset] 35px [page-end-inset page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.slimcontent:not(.floating):not(.docked) .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start page-start-inset] 35px [body-start-outset] 35px [body-start] 1.5em [body-content-start] minmax(500px, calc(750px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(0px, 200px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.listing:not(.floating):not(.docked) .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start] minmax(50px, 100px) [page-start-inset] 50px [body-start-outset] 50px [body-start] 1.5em [body-content-start] minmax(500px, calc(1200px - 3em)) [body-content-end] 3em [body-end] 50px [body-end-outset] minmax(0px, 250px) [page-end-inset] 50px [page-end] 1fr [screen-end-inset] 1.5em [screen-end]}body:not(.floating):not(.docked) .page-columns.toc-left{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] 35px [page-start-inset] minmax(0px, 175px) [body-start-outset] 35px [body-start] 1.5em [body-content-start] minmax(450px, calc(750px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(0px, 200px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body:not(.floating):not(.docked) .page-columns.toc-left .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] 35px [page-start-inset] minmax(0px, 175px) [body-start-outset] 35px [body-start] 1.5em [body-content-start] minmax(450px, calc(750px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(0px, 200px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.floating .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] minmax(25px, 50px) [page-start-inset] minmax(50px, 150px) [body-start-outset] minmax(25px, 50px) [body-start] 1.5em [body-content-start] minmax(500px, calc(800px - 3em)) [body-content-end] 1.5em [body-end] minmax(25px, 50px) [body-end-outset] minmax(50px, 150px) [page-end-inset] minmax(25px, 50px) [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.docked .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start] minmax(50px, 100px) [page-start-inset] 50px [body-start-outset] 50px [body-start] 1.5em [body-content-start] minmax(500px, calc( 1000px - 3em )) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(0px, 100px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.docked.fullcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start] minmax(50px, 100px) [page-start-inset] 50px [body-start-outset] 50px [body-start] 1.5em [body-content-start] minmax(500px, calc( 1000px - 3em )) [body-content-end] 1.5em [body-end body-end-outset page-end-inset page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.floating.fullcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] 50px [page-start-inset] minmax(50px, 150px) [body-start-outset] 50px [body-start] 1.5em [body-content-start] minmax(500px, calc(800px - 3em)) [body-content-end] 1.5em [body-end body-end-outset page-end-inset page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.docked.slimcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start] minmax(50px, 100px) [page-start-inset] 50px [body-start-outset] 50px [body-start] 1.5em [body-content-start] minmax(450px, calc(750px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(0px, 200px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.docked.listing .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start] minmax(50px, 100px) [page-start-inset] 50px [body-start-outset] 50px [body-start] 1.5em [body-content-start] minmax(500px, calc( 1000px - 3em )) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(0px, 100px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.floating.slimcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] 50px [page-start-inset] minmax(50px, 150px) [body-start-outset] 50px [body-start] 1.5em [body-content-start] minmax(450px, calc(750px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(50px, 150px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.floating.listing .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] minmax(25px, 50px) [page-start-inset] minmax(50px, 150px) [body-start-outset] minmax(25px, 50px) [body-start] 1.5em [body-content-start] minmax(500px, calc(800px - 3em)) [body-content-end] 1.5em [body-end] minmax(25px, 50px) [body-end-outset] minmax(50px, 150px) [page-end-inset] minmax(25px, 50px) [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}}@media(max-width: 991.98px){body .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset] 5fr [body-start] 1.5em [body-content-start] minmax(500px, calc(750px - 3em)) [body-content-end] 1.5em [body-end] 35px [body-end-outset] minmax(75px, 145px) [page-end-inset] 35px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.fullcontent:not(.floating):not(.docked) .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset] 5fr [body-start] 1.5em [body-content-start] minmax(500px, calc(750px - 3em)) [body-content-end] 1.5em [body-end body-end-outset page-end-inset page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.slimcontent:not(.floating):not(.docked) .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset] 5fr [body-start] 1.5em [body-content-start] minmax(500px, calc(750px - 3em)) [body-content-end] 1.5em [body-end] 35px [body-end-outset] minmax(75px, 145px) [page-end-inset] 35px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.listing:not(.floating):not(.docked) .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset] 5fr [body-start] 1.5em [body-content-start] minmax(500px, calc(1200px - 3em)) [body-content-end body-end body-end-outset page-end-inset page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body:not(.floating):not(.docked) .page-columns.toc-left{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] 35px [page-start-inset] minmax(0px, 145px) [body-start-outset] 35px [body-start] 1.5em [body-content-start] minmax(450px, calc(750px - 3em)) [body-content-end] 1.5em [body-end body-end-outset page-end-inset page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body:not(.floating):not(.docked) .page-columns.toc-left .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] 35px [page-start-inset] minmax(0px, 145px) [body-start-outset] 35px [body-start] 1.5em [body-content-start] minmax(450px, calc(750px - 3em)) [body-content-end] 1.5em [body-end body-end-outset page-end-inset page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.floating .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start page-start-inset body-start-outset body-start] 1em [body-content-start] minmax(500px, calc(750px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(75px, 150px) [page-end-inset] 25px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.docked .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset body-start body-content-start] minmax(500px, calc(750px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(25px, 50px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.docked.fullcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset body-start body-content-start] minmax(500px, calc( 1000px - 3em )) [body-content-end] 1.5em [body-end body-end-outset page-end-inset page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.floating.fullcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start page-start-inset body-start-outset body-start] 1em [body-content-start] minmax(500px, calc(800px - 3em)) [body-content-end] 1.5em [body-end body-end-outset page-end-inset page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.docked.slimcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset body-start body-content-start] minmax(500px, calc(750px - 3em)) [body-content-end] 1.5em [body-end] 35px [body-end-outset] minmax(75px, 145px) [page-end-inset] 35px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.docked.listing .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset body-start body-content-start] minmax(500px, calc(750px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(25px, 50px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.floating.slimcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start page-start-inset body-start-outset body-start] 1em [body-content-start] minmax(500px, calc(750px - 3em)) [body-content-end] 1.5em [body-end] 35px [body-end-outset] minmax(75px, 145px) [page-end-inset] 35px [page-end] 4fr [screen-end-inset] 1.5em [screen-end]}body.floating.listing .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start page-start-inset body-start-outset body-start] 1em [body-content-start] minmax(500px, calc(750px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(75px, 150px) [page-end-inset] 25px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}}@media(max-width: 767.98px){body .page-columns,body.fullcontent:not(.floating):not(.docked) .page-columns,body.slimcontent:not(.floating):not(.docked) .page-columns,body.docked .page-columns,body.docked.slimcontent .page-columns,body.docked.fullcontent .page-columns,body.floating .page-columns,body.floating.slimcontent .page-columns,body.floating.fullcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset body-start body-content-start] minmax(0px, 1fr) [body-content-end body-end body-end-outset page-end-inset page-end screen-end-inset] 1.5em [screen-end]}body:not(.floating):not(.docked) .page-columns.toc-left{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset body-start body-content-start] minmax(0px, 1fr) [body-content-end body-end body-end-outset page-end-inset page-end screen-end-inset] 1.5em [screen-end]}body:not(.floating):not(.docked) .page-columns.toc-left .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset body-start body-content-start] minmax(0px, 1fr) [body-content-end body-end body-end-outset page-end-inset page-end screen-end-inset] 1.5em [screen-end]}nav[role=doc-toc]{display:none}}body,.page-row-navigation{grid-template-rows:[page-top] max-content [contents-top] max-content [contents-bottom] max-content [page-bottom]}.page-rows-contents{grid-template-rows:[content-top] minmax(max-content, 1fr) [content-bottom] minmax(60px, max-content) [page-bottom]}.page-full{grid-column:screen-start/screen-end !important}.page-columns>*{grid-column:body-content-start/body-content-end}.page-columns.column-page>*{grid-column:page-start/page-end}.page-columns.column-page-left>*{grid-column:page-start/body-content-end}.page-columns.column-page-right>*{grid-column:body-content-start/page-end}.page-rows{grid-auto-rows:auto}.header{grid-column:screen-start/screen-end;grid-row:page-top/contents-top}#quarto-content{padding:0;grid-column:screen-start/screen-end;grid-row:contents-top/contents-bottom}body.floating .sidebar.sidebar-navigation{grid-column:page-start/body-start;grid-row:content-top/page-bottom}body.docked .sidebar.sidebar-navigation{grid-column:screen-start/body-start;grid-row:content-top/page-bottom}.sidebar.toc-left{grid-column:page-start/body-start;grid-row:content-top/page-bottom}.sidebar.margin-sidebar{grid-column:body-end/page-end;grid-row:content-top/page-bottom}.page-columns .content{grid-column:body-content-start/body-content-end;grid-row:content-top/content-bottom;align-content:flex-start}.page-columns .page-navigation{grid-column:body-content-start/body-content-end;grid-row:content-bottom/page-bottom}.page-columns .footer{grid-column:screen-start/screen-end;grid-row:contents-bottom/page-bottom}.page-columns .column-body{grid-column:body-content-start/body-content-end}.page-columns .column-body-fullbleed{grid-column:body-start/body-end}.page-columns .column-body-outset{grid-column:body-start-outset/body-end-outset;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-body-outset table{background:#fff}.page-columns .column-body-outset-left{grid-column:body-start-outset/body-content-end;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-body-outset-left table{background:#fff}.page-columns .column-body-outset-right{grid-column:body-content-start/body-end-outset;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-body-outset-right table{background:#fff}.page-columns .column-page{grid-column:page-start/page-end;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-page table{background:#fff}.page-columns .column-page-inset{grid-column:page-start-inset/page-end-inset;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-page-inset table{background:#fff}.page-columns .column-page-inset-left{grid-column:page-start-inset/body-content-end;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-page-inset-left table{background:#fff}.page-columns .column-page-inset-right{grid-column:body-content-start/page-end-inset;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-page-inset-right figcaption table{background:#fff}.page-columns .column-page-left{grid-column:page-start/body-content-end;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-page-left table{background:#fff}.page-columns .column-page-right{grid-column:body-content-start/page-end;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-page-right figcaption table{background:#fff}#quarto-content.page-columns #quarto-margin-sidebar,#quarto-content.page-columns #quarto-sidebar{z-index:1}@media(max-width: 991.98px){#quarto-content.page-columns #quarto-margin-sidebar.collapse,#quarto-content.page-columns #quarto-sidebar.collapse{z-index:1055}}#quarto-content.page-columns main.column-page,#quarto-content.page-columns main.column-page-right,#quarto-content.page-columns main.column-page-left{z-index:0}.page-columns .column-screen-inset{grid-column:screen-start-inset/screen-end-inset;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-screen-inset table{background:#fff}.page-columns .column-screen-inset-left{grid-column:screen-start-inset/body-content-end;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-screen-inset-left table{background:#fff}.page-columns .column-screen-inset-right{grid-column:body-content-start/screen-end-inset;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-screen-inset-right table{background:#fff}.page-columns .column-screen{grid-column:screen-start/screen-end;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-screen table{background:#fff}.page-columns .column-screen-left{grid-column:screen-start/body-content-end;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-screen-left table{background:#fff}.page-columns .column-screen-right{grid-column:body-content-start/screen-end;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-screen-right table{background:#fff}.page-columns .column-screen-inset-shaded{grid-column:screen-start/screen-end;padding:1em;background:#eee;z-index:998;transform:translate3d(0, 0, 0);margin-bottom:1em}.zindex-content{z-index:998;transform:translate3d(0, 0, 0)}.zindex-modal{z-index:1055;transform:translate3d(0, 0, 0)}.zindex-over-content{z-index:999;transform:translate3d(0, 0, 0)}img.img-fluid.column-screen,img.img-fluid.column-screen-inset-shaded,img.img-fluid.column-screen-inset,img.img-fluid.column-screen-inset-left,img.img-fluid.column-screen-inset-right,img.img-fluid.column-screen-left,img.img-fluid.column-screen-right{width:100%}@media(min-width: 992px){.margin-caption,div.aside,aside,.column-margin{grid-column:body-end/page-end !important;z-index:998}.column-sidebar{grid-column:page-start/body-start !important;z-index:998}.column-leftmargin{grid-column:screen-start-inset/body-start !important;z-index:998}.no-row-height{height:1em;overflow:visible}}@media(max-width: 991.98px){.margin-caption,div.aside,aside,.column-margin{grid-column:body-end/page-end !important;z-index:998}.no-row-height{height:1em;overflow:visible}.page-columns.page-full{overflow:visible}.page-columns.toc-left .margin-caption,.page-columns.toc-left div.aside,.page-columns.toc-left aside,.page-columns.toc-left .column-margin{grid-column:body-content-start/body-content-end !important;z-index:998;transform:translate3d(0, 0, 0)}.page-columns.toc-left .no-row-height{height:initial;overflow:initial}}@media(max-width: 767.98px){.margin-caption,div.aside,aside,.column-margin{grid-column:body-content-start/body-content-end !important;z-index:998;transform:translate3d(0, 0, 0)}.no-row-height{height:initial;overflow:initial}#quarto-margin-sidebar{display:none}.hidden-sm{display:none}}.panel-grid{display:grid;grid-template-rows:repeat(1, 1fr);grid-template-columns:repeat(24, 1fr);gap:1em}.panel-grid .g-col-1{grid-column:auto/span 1}.panel-grid .g-col-2{grid-column:auto/span 2}.panel-grid .g-col-3{grid-column:auto/span 3}.panel-grid .g-col-4{grid-column:auto/span 4}.panel-grid .g-col-5{grid-column:auto/span 5}.panel-grid .g-col-6{grid-column:auto/span 6}.panel-grid .g-col-7{grid-column:auto/span 7}.panel-grid .g-col-8{grid-column:auto/span 8}.panel-grid .g-col-9{grid-column:auto/span 9}.panel-grid .g-col-10{grid-column:auto/span 10}.panel-grid .g-col-11{grid-column:auto/span 11}.panel-grid .g-col-12{grid-column:auto/span 12}.panel-grid .g-col-13{grid-column:auto/span 13}.panel-grid .g-col-14{grid-column:auto/span 14}.panel-grid .g-col-15{grid-column:auto/span 15}.panel-grid .g-col-16{grid-column:auto/span 16}.panel-grid .g-col-17{grid-column:auto/span 17}.panel-grid .g-col-18{grid-column:auto/span 18}.panel-grid .g-col-19{grid-column:auto/span 19}.panel-grid .g-col-20{grid-column:auto/span 20}.panel-grid .g-col-21{grid-column:auto/span 21}.panel-grid .g-col-22{grid-column:auto/span 22}.panel-grid .g-col-23{grid-column:auto/span 23}.panel-grid .g-col-24{grid-column:auto/span 24}.panel-grid .g-start-1{grid-column-start:1}.panel-grid .g-start-2{grid-column-start:2}.panel-grid .g-start-3{grid-column-start:3}.panel-grid .g-start-4{grid-column-start:4}.panel-grid .g-start-5{grid-column-start:5}.panel-grid .g-start-6{grid-column-start:6}.panel-grid .g-start-7{grid-column-start:7}.panel-grid .g-start-8{grid-column-start:8}.panel-grid .g-start-9{grid-column-start:9}.panel-grid .g-start-10{grid-column-start:10}.panel-grid .g-start-11{grid-column-start:11}.panel-grid .g-start-12{grid-column-start:12}.panel-grid .g-start-13{grid-column-start:13}.panel-grid .g-start-14{grid-column-start:14}.panel-grid .g-start-15{grid-column-start:15}.panel-grid .g-start-16{grid-column-start:16}.panel-grid .g-start-17{grid-column-start:17}.panel-grid .g-start-18{grid-column-start:18}.panel-grid .g-start-19{grid-column-start:19}.panel-grid .g-start-20{grid-column-start:20}.panel-grid .g-start-21{grid-column-start:21}.panel-grid .g-start-22{grid-column-start:22}.panel-grid .g-start-23{grid-column-start:23}@media(min-width: 576px){.panel-grid .g-col-sm-1{grid-column:auto/span 1}.panel-grid .g-col-sm-2{grid-column:auto/span 2}.panel-grid .g-col-sm-3{grid-column:auto/span 3}.panel-grid .g-col-sm-4{grid-column:auto/span 4}.panel-grid .g-col-sm-5{grid-column:auto/span 5}.panel-grid .g-col-sm-6{grid-column:auto/span 6}.panel-grid .g-col-sm-7{grid-column:auto/span 7}.panel-grid .g-col-sm-8{grid-column:auto/span 8}.panel-grid .g-col-sm-9{grid-column:auto/span 9}.panel-grid .g-col-sm-10{grid-column:auto/span 10}.panel-grid .g-col-sm-11{grid-column:auto/span 11}.panel-grid .g-col-sm-12{grid-column:auto/span 12}.panel-grid .g-col-sm-13{grid-column:auto/span 13}.panel-grid .g-col-sm-14{grid-column:auto/span 14}.panel-grid .g-col-sm-15{grid-column:auto/span 15}.panel-grid .g-col-sm-16{grid-column:auto/span 16}.panel-grid .g-col-sm-17{grid-column:auto/span 17}.panel-grid .g-col-sm-18{grid-column:auto/span 18}.panel-grid .g-col-sm-19{grid-column:auto/span 19}.panel-grid .g-col-sm-20{grid-column:auto/span 20}.panel-grid .g-col-sm-21{grid-column:auto/span 21}.panel-grid .g-col-sm-22{grid-column:auto/span 22}.panel-grid .g-col-sm-23{grid-column:auto/span 23}.panel-grid .g-col-sm-24{grid-column:auto/span 24}.panel-grid .g-start-sm-1{grid-column-start:1}.panel-grid .g-start-sm-2{grid-column-start:2}.panel-grid .g-start-sm-3{grid-column-start:3}.panel-grid .g-start-sm-4{grid-column-start:4}.panel-grid .g-start-sm-5{grid-column-start:5}.panel-grid .g-start-sm-6{grid-column-start:6}.panel-grid .g-start-sm-7{grid-column-start:7}.panel-grid .g-start-sm-8{grid-column-start:8}.panel-grid .g-start-sm-9{grid-column-start:9}.panel-grid .g-start-sm-10{grid-column-start:10}.panel-grid .g-start-sm-11{grid-column-start:11}.panel-grid .g-start-sm-12{grid-column-start:12}.panel-grid .g-start-sm-13{grid-column-start:13}.panel-grid .g-start-sm-14{grid-column-start:14}.panel-grid .g-start-sm-15{grid-column-start:15}.panel-grid .g-start-sm-16{grid-column-start:16}.panel-grid .g-start-sm-17{grid-column-start:17}.panel-grid .g-start-sm-18{grid-column-start:18}.panel-grid .g-start-sm-19{grid-column-start:19}.panel-grid .g-start-sm-20{grid-column-start:20}.panel-grid .g-start-sm-21{grid-column-start:21}.panel-grid .g-start-sm-22{grid-column-start:22}.panel-grid .g-start-sm-23{grid-column-start:23}}@media(min-width: 768px){.panel-grid .g-col-md-1{grid-column:auto/span 1}.panel-grid .g-col-md-2{grid-column:auto/span 2}.panel-grid .g-col-md-3{grid-column:auto/span 3}.panel-grid .g-col-md-4{grid-column:auto/span 4}.panel-grid .g-col-md-5{grid-column:auto/span 5}.panel-grid .g-col-md-6{grid-column:auto/span 6}.panel-grid .g-col-md-7{grid-column:auto/span 7}.panel-grid .g-col-md-8{grid-column:auto/span 8}.panel-grid .g-col-md-9{grid-column:auto/span 9}.panel-grid .g-col-md-10{grid-column:auto/span 10}.panel-grid .g-col-md-11{grid-column:auto/span 11}.panel-grid .g-col-md-12{grid-column:auto/span 12}.panel-grid .g-col-md-13{grid-column:auto/span 13}.panel-grid .g-col-md-14{grid-column:auto/span 14}.panel-grid .g-col-md-15{grid-column:auto/span 15}.panel-grid .g-col-md-16{grid-column:auto/span 16}.panel-grid .g-col-md-17{grid-column:auto/span 17}.panel-grid .g-col-md-18{grid-column:auto/span 18}.panel-grid .g-col-md-19{grid-column:auto/span 19}.panel-grid .g-col-md-20{grid-column:auto/span 20}.panel-grid .g-col-md-21{grid-column:auto/span 21}.panel-grid .g-col-md-22{grid-column:auto/span 22}.panel-grid .g-col-md-23{grid-column:auto/span 23}.panel-grid .g-col-md-24{grid-column:auto/span 24}.panel-grid .g-start-md-1{grid-column-start:1}.panel-grid .g-start-md-2{grid-column-start:2}.panel-grid .g-start-md-3{grid-column-start:3}.panel-grid .g-start-md-4{grid-column-start:4}.panel-grid .g-start-md-5{grid-column-start:5}.panel-grid .g-start-md-6{grid-column-start:6}.panel-grid .g-start-md-7{grid-column-start:7}.panel-grid .g-start-md-8{grid-column-start:8}.panel-grid .g-start-md-9{grid-column-start:9}.panel-grid .g-start-md-10{grid-column-start:10}.panel-grid .g-start-md-11{grid-column-start:11}.panel-grid .g-start-md-12{grid-column-start:12}.panel-grid .g-start-md-13{grid-column-start:13}.panel-grid .g-start-md-14{grid-column-start:14}.panel-grid .g-start-md-15{grid-column-start:15}.panel-grid .g-start-md-16{grid-column-start:16}.panel-grid .g-start-md-17{grid-column-start:17}.panel-grid .g-start-md-18{grid-column-start:18}.panel-grid .g-start-md-19{grid-column-start:19}.panel-grid .g-start-md-20{grid-column-start:20}.panel-grid .g-start-md-21{grid-column-start:21}.panel-grid .g-start-md-22{grid-column-start:22}.panel-grid .g-start-md-23{grid-column-start:23}}@media(min-width: 992px){.panel-grid .g-col-lg-1{grid-column:auto/span 1}.panel-grid .g-col-lg-2{grid-column:auto/span 2}.panel-grid .g-col-lg-3{grid-column:auto/span 3}.panel-grid .g-col-lg-4{grid-column:auto/span 4}.panel-grid .g-col-lg-5{grid-column:auto/span 5}.panel-grid .g-col-lg-6{grid-column:auto/span 6}.panel-grid .g-col-lg-7{grid-column:auto/span 7}.panel-grid .g-col-lg-8{grid-column:auto/span 8}.panel-grid .g-col-lg-9{grid-column:auto/span 9}.panel-grid .g-col-lg-10{grid-column:auto/span 10}.panel-grid .g-col-lg-11{grid-column:auto/span 11}.panel-grid .g-col-lg-12{grid-column:auto/span 12}.panel-grid .g-col-lg-13{grid-column:auto/span 13}.panel-grid .g-col-lg-14{grid-column:auto/span 14}.panel-grid .g-col-lg-15{grid-column:auto/span 15}.panel-grid .g-col-lg-16{grid-column:auto/span 16}.panel-grid .g-col-lg-17{grid-column:auto/span 17}.panel-grid .g-col-lg-18{grid-column:auto/span 18}.panel-grid .g-col-lg-19{grid-column:auto/span 19}.panel-grid .g-col-lg-20{grid-column:auto/span 20}.panel-grid .g-col-lg-21{grid-column:auto/span 21}.panel-grid .g-col-lg-22{grid-column:auto/span 22}.panel-grid .g-col-lg-23{grid-column:auto/span 23}.panel-grid .g-col-lg-24{grid-column:auto/span 24}.panel-grid .g-start-lg-1{grid-column-start:1}.panel-grid .g-start-lg-2{grid-column-start:2}.panel-grid .g-start-lg-3{grid-column-start:3}.panel-grid .g-start-lg-4{grid-column-start:4}.panel-grid .g-start-lg-5{grid-column-start:5}.panel-grid .g-start-lg-6{grid-column-start:6}.panel-grid .g-start-lg-7{grid-column-start:7}.panel-grid .g-start-lg-8{grid-column-start:8}.panel-grid .g-start-lg-9{grid-column-start:9}.panel-grid .g-start-lg-10{grid-column-start:10}.panel-grid .g-start-lg-11{grid-column-start:11}.panel-grid .g-start-lg-12{grid-column-start:12}.panel-grid .g-start-lg-13{grid-column-start:13}.panel-grid .g-start-lg-14{grid-column-start:14}.panel-grid .g-start-lg-15{grid-column-start:15}.panel-grid .g-start-lg-16{grid-column-start:16}.panel-grid .g-start-lg-17{grid-column-start:17}.panel-grid .g-start-lg-18{grid-column-start:18}.panel-grid .g-start-lg-19{grid-column-start:19}.panel-grid .g-start-lg-20{grid-column-start:20}.panel-grid .g-start-lg-21{grid-column-start:21}.panel-grid .g-start-lg-22{grid-column-start:22}.panel-grid .g-start-lg-23{grid-column-start:23}}@media(min-width: 1200px){.panel-grid .g-col-xl-1{grid-column:auto/span 1}.panel-grid .g-col-xl-2{grid-column:auto/span 2}.panel-grid .g-col-xl-3{grid-column:auto/span 3}.panel-grid .g-col-xl-4{grid-column:auto/span 4}.panel-grid .g-col-xl-5{grid-column:auto/span 5}.panel-grid .g-col-xl-6{grid-column:auto/span 6}.panel-grid .g-col-xl-7{grid-column:auto/span 7}.panel-grid .g-col-xl-8{grid-column:auto/span 8}.panel-grid .g-col-xl-9{grid-column:auto/span 9}.panel-grid .g-col-xl-10{grid-column:auto/span 10}.panel-grid .g-col-xl-11{grid-column:auto/span 11}.panel-grid .g-col-xl-12{grid-column:auto/span 12}.panel-grid .g-col-xl-13{grid-column:auto/span 13}.panel-grid .g-col-xl-14{grid-column:auto/span 14}.panel-grid .g-col-xl-15{grid-column:auto/span 15}.panel-grid .g-col-xl-16{grid-column:auto/span 16}.panel-grid .g-col-xl-17{grid-column:auto/span 17}.panel-grid .g-col-xl-18{grid-column:auto/span 18}.panel-grid .g-col-xl-19{grid-column:auto/span 19}.panel-grid .g-col-xl-20{grid-column:auto/span 20}.panel-grid .g-col-xl-21{grid-column:auto/span 21}.panel-grid .g-col-xl-22{grid-column:auto/span 22}.panel-grid .g-col-xl-23{grid-column:auto/span 23}.panel-grid .g-col-xl-24{grid-column:auto/span 24}.panel-grid .g-start-xl-1{grid-column-start:1}.panel-grid .g-start-xl-2{grid-column-start:2}.panel-grid .g-start-xl-3{grid-column-start:3}.panel-grid .g-start-xl-4{grid-column-start:4}.panel-grid .g-start-xl-5{grid-column-start:5}.panel-grid .g-start-xl-6{grid-column-start:6}.panel-grid .g-start-xl-7{grid-column-start:7}.panel-grid .g-start-xl-8{grid-column-start:8}.panel-grid .g-start-xl-9{grid-column-start:9}.panel-grid .g-start-xl-10{grid-column-start:10}.panel-grid .g-start-xl-11{grid-column-start:11}.panel-grid .g-start-xl-12{grid-column-start:12}.panel-grid .g-start-xl-13{grid-column-start:13}.panel-grid .g-start-xl-14{grid-column-start:14}.panel-grid .g-start-xl-15{grid-column-start:15}.panel-grid .g-start-xl-16{grid-column-start:16}.panel-grid .g-start-xl-17{grid-column-start:17}.panel-grid .g-start-xl-18{grid-column-start:18}.panel-grid .g-start-xl-19{grid-column-start:19}.panel-grid .g-start-xl-20{grid-column-start:20}.panel-grid .g-start-xl-21{grid-column-start:21}.panel-grid .g-start-xl-22{grid-column-start:22}.panel-grid .g-start-xl-23{grid-column-start:23}}@media(min-width: 1400px){.panel-grid .g-col-xxl-1{grid-column:auto/span 1}.panel-grid .g-col-xxl-2{grid-column:auto/span 2}.panel-grid .g-col-xxl-3{grid-column:auto/span 3}.panel-grid .g-col-xxl-4{grid-column:auto/span 4}.panel-grid .g-col-xxl-5{grid-column:auto/span 5}.panel-grid .g-col-xxl-6{grid-column:auto/span 6}.panel-grid .g-col-xxl-7{grid-column:auto/span 7}.panel-grid .g-col-xxl-8{grid-column:auto/span 8}.panel-grid .g-col-xxl-9{grid-column:auto/span 9}.panel-grid .g-col-xxl-10{grid-column:auto/span 10}.panel-grid .g-col-xxl-11{grid-column:auto/span 11}.panel-grid .g-col-xxl-12{grid-column:auto/span 12}.panel-grid .g-col-xxl-13{grid-column:auto/span 13}.panel-grid .g-col-xxl-14{grid-column:auto/span 14}.panel-grid .g-col-xxl-15{grid-column:auto/span 15}.panel-grid .g-col-xxl-16{grid-column:auto/span 16}.panel-grid .g-col-xxl-17{grid-column:auto/span 17}.panel-grid .g-col-xxl-18{grid-column:auto/span 18}.panel-grid .g-col-xxl-19{grid-column:auto/span 19}.panel-grid .g-col-xxl-20{grid-column:auto/span 20}.panel-grid .g-col-xxl-21{grid-column:auto/span 21}.panel-grid .g-col-xxl-22{grid-column:auto/span 22}.panel-grid .g-col-xxl-23{grid-column:auto/span 23}.panel-grid .g-col-xxl-24{grid-column:auto/span 24}.panel-grid .g-start-xxl-1{grid-column-start:1}.panel-grid .g-start-xxl-2{grid-column-start:2}.panel-grid .g-start-xxl-3{grid-column-start:3}.panel-grid .g-start-xxl-4{grid-column-start:4}.panel-grid .g-start-xxl-5{grid-column-start:5}.panel-grid .g-start-xxl-6{grid-column-start:6}.panel-grid .g-start-xxl-7{grid-column-start:7}.panel-grid .g-start-xxl-8{grid-column-start:8}.panel-grid .g-start-xxl-9{grid-column-start:9}.panel-grid .g-start-xxl-10{grid-column-start:10}.panel-grid .g-start-xxl-11{grid-column-start:11}.panel-grid .g-start-xxl-12{grid-column-start:12}.panel-grid .g-start-xxl-13{grid-column-start:13}.panel-grid .g-start-xxl-14{grid-column-start:14}.panel-grid .g-start-xxl-15{grid-column-start:15}.panel-grid .g-start-xxl-16{grid-column-start:16}.panel-grid .g-start-xxl-17{grid-column-start:17}.panel-grid .g-start-xxl-18{grid-column-start:18}.panel-grid .g-start-xxl-19{grid-column-start:19}.panel-grid .g-start-xxl-20{grid-column-start:20}.panel-grid .g-start-xxl-21{grid-column-start:21}.panel-grid .g-start-xxl-22{grid-column-start:22}.panel-grid .g-start-xxl-23{grid-column-start:23}}main{margin-top:1em;margin-bottom:1em}h1,.h1,h2,.h2{margin-top:2rem;margin-bottom:1rem}h1.title,.title.h1{margin-top:0}h2,.h2{border-bottom:1px solid #dee2e6;padding-bottom:.5rem}h3,.h3,h4,.h4{margin-top:1.5rem}.header-section-number{color:#b7b7b7}.nav-link.active .header-section-number{color:inherit}mark,.mark{padding:0em}.panel-caption,caption,.figure-caption{font-size:1rem}.panel-caption,.figure-caption,figcaption{color:#b7b7b7}.table-caption,caption{color:#777}.quarto-layout-cell[data-ref-parent] caption{color:#b7b7b7}.column-margin figcaption,.margin-caption,div.aside,aside,.column-margin{color:#b7b7b7;font-size:.825rem}.panel-caption.margin-caption{text-align:inherit}.column-margin.column-container p{margin-bottom:0}.column-margin.column-container>*:not(.collapse){padding-top:.5em;padding-bottom:.5em;display:block}.column-margin.column-container>*.collapse:not(.show){display:none}@media(min-width: 768px){.column-margin.column-container .callout-margin-content:first-child{margin-top:4.5em}.column-margin.column-container .callout-margin-content-simple:first-child{margin-top:3.5em}}.margin-caption>*{padding-top:.5em;padding-bottom:.5em}@media(max-width: 767.98px){.quarto-layout-row{flex-direction:column}}.tab-content{margin-top:0px;border-left:#dee2e6 1px solid;border-right:#dee2e6 1px solid;border-bottom:#dee2e6 1px solid;margin-left:0;padding:1em;margin-bottom:1em}@media(max-width: 767.98px){.layout-sidebar{margin-left:0;margin-right:0}}.panel-sidebar,.panel-sidebar .form-control,.panel-input,.panel-input .form-control,.selectize-dropdown{font-size:.9rem}.panel-sidebar .form-control,.panel-input .form-control{padding-top:.1rem}.tab-pane div.sourceCode{margin-top:0px}.tab-pane>p{padding-top:1em}.tab-content>.tab-pane:not(.active){display:none !important}div.sourceCode{background-color:#fdf6e3;border:1px solid #fdf6e3;border-radius:.25rem}pre.sourceCode{background-color:transparent}pre.sourceCode{border:none;font-size:.875em;overflow:visible !important;padding:.4em}.callout pre.sourceCode{padding-left:0}div.sourceCode{overflow-y:hidden}.callout div.sourceCode{margin-left:initial}.blockquote{font-size:inherit;padding-left:1rem;padding-right:1.5rem;color:#b7b7b7}.blockquote h1:first-child,.blockquote .h1:first-child,.blockquote h2:first-child,.blockquote .h2:first-child,.blockquote h3:first-child,.blockquote .h3:first-child,.blockquote h4:first-child,.blockquote .h4:first-child,.blockquote h5:first-child,.blockquote .h5:first-child{margin-top:0}pre{background-color:initial;padding:initial;border:initial}p code:not(.sourceCode),li code:not(.sourceCode){background-color:#fafafa;padding:.2em}nav p code:not(.sourceCode),nav li code:not(.sourceCode){background-color:transparent;padding:0}#quarto-embedded-source-code-modal>.modal-dialog{max-width:1000px;padding-left:1.75rem;padding-right:1.75rem}#quarto-embedded-source-code-modal>.modal-dialog>.modal-content>.modal-body{padding:0}#quarto-embedded-source-code-modal>.modal-dialog>.modal-content>.modal-body div.sourceCode{margin:0;padding:.2rem .2rem;border-radius:0px;border:none}#quarto-embedded-source-code-modal>.modal-dialog>.modal-content>.modal-header{padding:.7rem}.code-tools-button{font-size:1rem;padding:.15rem .15rem;margin-left:5px;color:#777;background-color:transparent;transition:initial;cursor:pointer}.code-tools-button>.bi::before{display:inline-block;height:1rem;width:1rem;content:"";vertical-align:-0.125em;background-image:url('data:image/svg+xml,');background-repeat:no-repeat;background-size:1rem 1rem}.code-tools-button:hover>.bi::before{background-image:url('data:image/svg+xml,')}#quarto-embedded-source-code-modal .code-copy-button>.bi::before{background-image:url('data:image/svg+xml,')}#quarto-embedded-source-code-modal .code-copy-button-checked>.bi::before{background-image:url('data:image/svg+xml,')}.sidebar{will-change:top;transition:top 200ms linear;position:sticky;overflow-y:auto;padding-top:1.2em;max-height:100vh}.sidebar.toc-left,.sidebar.margin-sidebar{top:0px;padding-top:1em}.sidebar.toc-left>*,.sidebar.margin-sidebar>*{padding-top:.5em}.sidebar.quarto-banner-title-block-sidebar>*{padding-top:1.65em}.sidebar nav[role=doc-toc]>h2,.sidebar nav[role=doc-toc]>.h2{font-size:.875rem;font-weight:400;margin-bottom:.5rem;margin-top:.3rem;font-family:inherit;border-bottom:0;padding-bottom:0;padding-top:0px}.sidebar nav[role=doc-toc]>ul a{border-left:1px solid #eee;padding-left:.6rem}.sidebar nav[role=doc-toc]>ul a:empty{display:none}.sidebar nav[role=doc-toc] ul{padding-left:0;list-style:none;font-size:.875rem;font-weight:300}.sidebar nav[role=doc-toc]>ul li a{line-height:1.1rem;padding-bottom:.2rem;padding-top:.2rem;color:inherit}.sidebar nav[role=doc-toc] ul>li>ul>li>a{padding-left:1.2em}.sidebar nav[role=doc-toc] ul>li>ul>li>ul>li>a{padding-left:2.4em}.sidebar nav[role=doc-toc] ul>li>ul>li>ul>li>ul>li>a{padding-left:3.6em}.sidebar nav[role=doc-toc] ul>li>ul>li>ul>li>ul>li>ul>li>a{padding-left:4.8em}.sidebar nav[role=doc-toc] ul>li>ul>li>ul>li>ul>li>ul>li>ul>li>a{padding-left:6em}.sidebar nav[role=doc-toc] ul>li>ul>li>a.active{border-left:1px solid #3399f3;color:#3399f3 !important}.sidebar nav[role=doc-toc] ul>li>a.active{border-left:1px solid #3399f3;color:#3399f3 !important}kbd,.kbd{color:#777;background-color:#f8f9fa;border:1px solid;border-radius:5px;border-color:#dee2e6}div.hanging-indent{margin-left:1em;text-indent:-1em}.citation a,.footnote-ref{text-decoration:none}.footnotes ol{padding-left:1em}.tippy-content>*{margin-bottom:.7em}.tippy-content>*:last-child{margin-bottom:0}.table a{word-break:break-word}.table>:not(:first-child){border-top-width:1px;border-top-color:#dee2e6}.table>thead{border-bottom:1px solid currentColor}.table>tbody{border-top:1px solid #dee2e6}.callout{margin-top:1.25rem;margin-bottom:1.25rem;border-radius:.25rem}.callout.callout-style-simple{padding:.4em .7em;border-left:5px solid;border-right:1px solid #dee2e6;border-top:1px solid #dee2e6;border-bottom:1px solid #dee2e6}.callout.callout-style-default{border-left:5px solid;border-right:1px solid #dee2e6;border-top:1px solid #dee2e6;border-bottom:1px solid #dee2e6}.callout .callout-body-container{flex-grow:1}.callout.callout-style-simple .callout-body{font-size:.9rem;font-weight:400}.callout.callout-style-default .callout-body{font-size:.9rem;font-weight:400}.callout.callout-captioned .callout-body{margin-top:.2em}.callout:not(.no-icon).callout-captioned.callout-style-simple .callout-body{padding-left:1.6em}.callout.callout-captioned>.callout-header{padding-top:.2em;margin-bottom:-0.2em}.callout.callout-style-simple>div.callout-header{border-bottom:none;font-size:.9rem;font-weight:600;opacity:75%}.callout.callout-style-default>div.callout-header{border-bottom:none;font-weight:600;opacity:85%;font-size:.9rem;padding-left:.5em;padding-right:.5em}.callout.callout-style-default div.callout-body{padding-left:.5em;padding-right:.5em}.callout.callout-style-default div.callout-body>:first-child{margin-top:.5em}.callout>div.callout-header[data-bs-toggle=collapse]{cursor:pointer}.callout.callout-style-default .callout-header[aria-expanded=false],.callout.callout-style-default .callout-header[aria-expanded=true]{padding-top:0px;margin-bottom:0px;align-items:center}.callout.callout-captioned .callout-body>:last-child:not(.sourceCode),.callout.callout-captioned .callout-body>div>:last-child:not(.sourceCode){margin-bottom:.5rem}.callout:not(.callout-captioned) .callout-body>:first-child,.callout:not(.callout-captioned) .callout-body>div>:first-child{margin-top:.25rem}.callout:not(.callout-captioned) .callout-body>:last-child,.callout:not(.callout-captioned) .callout-body>div>:last-child{margin-bottom:.2rem}.callout.callout-style-simple .callout-icon::before,.callout.callout-style-simple .callout-toggle::before{height:1rem;width:1rem;display:inline-block;content:"";background-repeat:no-repeat;background-size:1rem 1rem}.callout.callout-style-default .callout-icon::before,.callout.callout-style-default .callout-toggle::before{height:.9rem;width:.9rem;display:inline-block;content:"";background-repeat:no-repeat;background-size:.9rem .9rem}.callout.callout-style-default .callout-toggle::before{margin-top:5px}.callout .callout-btn-toggle .callout-toggle::before{transition:transform .2s linear}.callout .callout-header[aria-expanded=false] .callout-toggle::before{transform:rotate(-90deg)}.callout .callout-header[aria-expanded=true] .callout-toggle::before{transform:none}.callout.callout-style-simple:not(.no-icon) div.callout-icon-container{padding-top:.2em;padding-right:.55em}.callout.callout-style-default:not(.no-icon) div.callout-icon-container{padding-top:.1em;padding-right:.35em}.callout.callout-style-default:not(.no-icon) div.callout-caption-container{margin-top:-1px}.callout.callout-style-default.callout-caution:not(.no-icon) div.callout-icon-container{padding-top:.3em;padding-right:.35em}.callout>.callout-body>.callout-icon-container>.no-icon,.callout>.callout-header>.callout-icon-container>.no-icon{display:none}div.callout.callout{border-left-color:#777}div.callout.callout-style-default>.callout-header{background-color:#777}div.callout-note.callout{border-left-color:#446e9b}div.callout-note.callout-style-default>.callout-header{background-color:#ecf1f5}div.callout-note:not(.callout-captioned) .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-note.callout-captioned .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-note .callout-toggle::before{background-image:url('data:image/svg+xml,')}div.callout-tip.callout{border-left-color:#3cb521}div.callout-tip.callout-style-default>.callout-header{background-color:#ecf8e9}div.callout-tip:not(.callout-captioned) .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-tip.callout-captioned .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-tip .callout-toggle::before{background-image:url('data:image/svg+xml,')}div.callout-warning.callout{border-left-color:#d47500}div.callout-warning.callout-style-default>.callout-header{background-color:#fbf1e6}div.callout-warning:not(.callout-captioned) .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-warning.callout-captioned .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-warning .callout-toggle::before{background-image:url('data:image/svg+xml,')}div.callout-caution.callout{border-left-color:#fd7e14}div.callout-caution.callout-style-default>.callout-header{background-color:#fff2e8}div.callout-caution:not(.callout-captioned) .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-caution.callout-captioned .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-caution .callout-toggle::before{background-image:url('data:image/svg+xml,')}div.callout-important.callout{border-left-color:#cd0200}div.callout-important.callout-style-default>.callout-header{background-color:#fae6e6}div.callout-important:not(.callout-captioned) .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-important.callout-captioned .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-important .callout-toggle::before{background-image:url('data:image/svg+xml,')}.quarto-toggle-container{display:flex;align-items:center}@media(min-width: 992px){.navbar .quarto-color-scheme-toggle{padding-left:.5rem;padding-right:.5rem}}@media(max-width: 767.98px){.navbar .quarto-color-scheme-toggle{padding-left:0;padding-right:0;padding-bottom:.5em}}.quarto-reader-toggle .bi::before,.quarto-color-scheme-toggle .bi::before{display:inline-block;height:1rem;width:1rem;content:"";background-repeat:no-repeat;background-size:1rem 1rem}.navbar-collapse .quarto-color-scheme-toggle{padding-left:.6rem;padding-right:0;margin-top:-12px}.sidebar-navigation{padding-left:20px}.sidebar-navigation .quarto-color-scheme-toggle .bi::before{padding-top:.2rem;margin-bottom:-0.2rem}.sidebar-tools-main .quarto-color-scheme-toggle .bi::before{padding-top:.2rem;margin-bottom:-0.2rem}.navbar .quarto-color-scheme-toggle .bi::before{padding-top:7px;margin-bottom:-7px;padding-left:2px;margin-right:2px}.navbar .quarto-color-scheme-toggle:not(.alternate) .bi::before{background-image:url('data:image/svg+xml,')}.navbar .quarto-color-scheme-toggle.alternate .bi::before{background-image:url('data:image/svg+xml,')}.sidebar-navigation .quarto-color-scheme-toggle:not(.alternate) .bi::before{background-image:url('data:image/svg+xml,')}.sidebar-navigation .quarto-color-scheme-toggle.alternate .bi::before{background-image:url('data:image/svg+xml,')}.quarto-sidebar-toggle{border-color:#dee2e6;border-bottom-left-radius:.25rem;border-bottom-right-radius:.25rem;border-style:solid;border-width:1px;overflow:hidden;border-top-width:0px;padding-top:0px !important}.quarto-sidebar-toggle-title{cursor:pointer;padding-bottom:2px;margin-left:.25em;text-align:center;font-weight:400;font-size:.775em}#quarto-content .quarto-sidebar-toggle{background:#fafafa}#quarto-content .quarto-sidebar-toggle-title{color:#777}.quarto-sidebar-toggle-icon{color:#dee2e6;margin-right:.5em;float:right;transition:transform .2s ease}.quarto-sidebar-toggle-icon::before{padding-top:5px}.quarto-sidebar-toggle.expanded .quarto-sidebar-toggle-icon{transform:rotate(-180deg)}.quarto-sidebar-toggle.expanded .quarto-sidebar-toggle-title{border-bottom:solid #dee2e6 1px}.quarto-sidebar-toggle-contents{background-color:#fff;padding-right:10px;padding-left:10px;margin-top:0px !important;transition:max-height .5s ease}.quarto-sidebar-toggle.expanded .quarto-sidebar-toggle-contents{padding-top:1em;padding-bottom:10px}.quarto-sidebar-toggle:not(.expanded) .quarto-sidebar-toggle-contents{padding-top:0px !important;padding-bottom:0px}nav[role=doc-toc]{z-index:1020}#quarto-sidebar>*,nav[role=doc-toc]>*{transition:opacity .1s ease,border .1s ease}#quarto-sidebar.slow>*,nav[role=doc-toc].slow>*{transition:opacity .4s ease,border .4s ease}.quarto-color-scheme-toggle:not(.alternate).top-right .bi::before{background-image:url('data:image/svg+xml,')}.quarto-color-scheme-toggle.alternate.top-right .bi::before{background-image:url('data:image/svg+xml,')}#quarto-appendix.default{border-top:1px solid #dee2e6}#quarto-appendix.default{background-color:#fff;padding-top:1.5em;margin-top:2em;z-index:998}#quarto-appendix.default .quarto-appendix-heading{margin-top:0;line-height:1.4em;font-weight:600;opacity:.9;border-bottom:none;margin-bottom:0}#quarto-appendix.default .footnotes ol,#quarto-appendix.default .footnotes ol li>p:last-of-type,#quarto-appendix.default .quarto-appendix-contents>p:last-of-type{margin-bottom:0}#quarto-appendix.default .quarto-appendix-secondary-label{margin-bottom:.4em}#quarto-appendix.default .quarto-appendix-bibtex{font-size:.7em;padding:1em;border:solid 1px #dee2e6;margin-bottom:1em}#quarto-appendix.default .quarto-appendix-bibtex code.sourceCode{white-space:pre-wrap}#quarto-appendix.default .quarto-appendix-citeas{font-size:.9em;padding:1em;border:solid 1px #dee2e6;margin-bottom:1em}#quarto-appendix.default .quarto-appendix-heading{font-size:1em !important}#quarto-appendix.default *[role=doc-endnotes]>ol,#quarto-appendix.default .quarto-appendix-contents>*:not(h2):not(.h2){font-size:.9em}#quarto-appendix.default section{padding-bottom:1.5em}#quarto-appendix.default section *[role=doc-endnotes],#quarto-appendix.default section>*:not(a){opacity:.9;word-wrap:break-word}.btn.btn-quarto,div.cell-output-display .btn-quarto{color:#080808;background-color:#999;border-color:#999}.btn.btn-quarto:hover,div.cell-output-display .btn-quarto:hover{color:#080808;background-color:#a8a8a8;border-color:#a3a3a3}.btn-check:focus+.btn.btn-quarto,.btn.btn-quarto:focus,.btn-check:focus+div.cell-output-display .btn-quarto,div.cell-output-display .btn-quarto:focus{color:#080808;background-color:#a8a8a8;border-color:#a3a3a3;box-shadow:0 0 0 .25rem rgba(131,131,131,.5)}.btn-check:checked+.btn.btn-quarto,.btn-check:active+.btn.btn-quarto,.btn.btn-quarto:active,.btn.btn-quarto.active,.show>.btn.btn-quarto.dropdown-toggle,.btn-check:checked+div.cell-output-display .btn-quarto,.btn-check:active+div.cell-output-display .btn-quarto,div.cell-output-display .btn-quarto:active,div.cell-output-display .btn-quarto.active,.show>div.cell-output-display .btn-quarto.dropdown-toggle{color:#000;background-color:#adadad;border-color:#a3a3a3}.btn-check:checked+.btn.btn-quarto:focus,.btn-check:active+.btn.btn-quarto:focus,.btn.btn-quarto:active:focus,.btn.btn-quarto.active:focus,.show>.btn.btn-quarto.dropdown-toggle:focus,.btn-check:checked+div.cell-output-display .btn-quarto:focus,.btn-check:active+div.cell-output-display .btn-quarto:focus,div.cell-output-display .btn-quarto:active:focus,div.cell-output-display .btn-quarto.active:focus,.show>div.cell-output-display .btn-quarto.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(131,131,131,.5)}.btn.btn-quarto:disabled,.btn.btn-quarto.disabled,div.cell-output-display .btn-quarto:disabled,div.cell-output-display .btn-quarto.disabled{color:#fff;background-color:#999;border-color:#999}nav.quarto-secondary-nav.color-navbar{background-color:#eee;color:#4f4f4f}nav.quarto-secondary-nav.color-navbar h1,nav.quarto-secondary-nav.color-navbar .h1,nav.quarto-secondary-nav.color-navbar .quarto-btn-toggle{color:#4f4f4f}@media(max-width: 991.98px){body.nav-sidebar .quarto-title-banner,body.nav-sidebar .quarto-title-banner{display:none}}p.subtitle{margin-top:.25em;margin-bottom:.5em}code a:any-link{color:inherit;text-decoration-color:#777}/*! light */div.observablehq table thead tr th{background-color:var(--bs-body-bg)}input,button,select,optgroup,textarea{background-color:var(--bs-body-bg)}@media print{.page-columns .column-screen-inset{grid-column:page-start-inset/page-end-inset;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-screen-inset table{background:#fff}.page-columns .column-screen-inset-left{grid-column:page-start-inset/body-content-end;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-screen-inset-left table{background:#fff}.page-columns .column-screen-inset-right{grid-column:body-content-start/page-end-inset;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-screen-inset-right table{background:#fff}.page-columns .column-screen{grid-column:page-start/page-end;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-screen table{background:#fff}.page-columns .column-screen-left{grid-column:page-start/body-content-end;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-screen-left table{background:#fff}.page-columns .column-screen-right{grid-column:body-content-start/page-end;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-screen-right table{background:#fff}.page-columns .column-screen-inset-shaded{grid-column:page-start-inset/page-end-inset;padding:1em;background:#eee;z-index:998;transform:translate3d(0, 0, 0);margin-bottom:1em}}.quarto-video{margin-bottom:1em}a.external:after{display:inline-block;height:.75rem;width:.75rem;margin-bottom:.15em;margin-left:.25em;content:"";vertical-align:-0.125em;background-image:url('data:image/svg+xml,');background-repeat:no-repeat;background-size:.75rem .75rem}a.external:after:hover{cursor:pointer}.quarto-ext-icon{display:inline-block;font-size:.75em;padding-left:.3em}.code-with-filename .code-with-filename-file{margin-bottom:0;padding-bottom:2px;padding-top:2px;padding-left:.7em;border:var(--quarto-border-width) solid var(--quarto-border-color);border-radius:var(--quarto-border-radius);border-bottom:0;border-bottom-left-radius:0%;border-bottom-right-radius:0%}.code-with-filename div.sourceCode,.reveal .code-with-filename div.sourceCode{margin-top:0;border-top-left-radius:0%;border-top-right-radius:0%}.code-with-filename .code-with-filename-file pre{margin-bottom:0}.code-with-filename .code-with-filename-file,.code-with-filename .code-with-filename-file pre{background-color:rgba(219,219,219,.8)}.quarto-dark .code-with-filename .code-with-filename-file,.quarto-dark .code-with-filename .code-with-filename-file pre{background-color:#555}.code-with-filename .code-with-filename-file strong{font-weight:400}.quarto-title-banner{margin-bottom:1em;color:#4f4f4f;background:#eee}.quarto-title-banner .code-tools-button{color:#828282}.quarto-title-banner .code-tools-button:hover{color:#4f4f4f}.quarto-title-banner .code-tools-button>.bi::before{background-image:url('data:image/svg+xml,')}.quarto-title-banner .code-tools-button:hover>.bi::before{background-image:url('data:image/svg+xml,')}.quarto-title-banner .quarto-title .title{font-weight:600}.quarto-title-banner .quarto-categories{margin-top:.75em}@media(min-width: 992px){.quarto-title-banner{padding-top:2.5em;padding-bottom:2.5em}}@media(max-width: 991.98px){.quarto-title-banner{padding-top:1em;padding-bottom:1em}}main.quarto-banner-title-block section:first-of-type h2:first-of-type,main.quarto-banner-title-block section:first-of-type .h2:first-of-type,main.quarto-banner-title-block section:first-of-type h3:first-of-type,main.quarto-banner-title-block section:first-of-type .h3:first-of-type,main.quarto-banner-title-block section:first-of-type h4:first-of-type,main.quarto-banner-title-block section:first-of-type .h4:first-of-type{margin-top:0}.quarto-title .quarto-categories{display:flex;column-gap:.4em;padding-bottom:.5em;margin-top:.75em}.quarto-title .quarto-categories .quarto-category{padding:.25em .75em;font-size:.65em;text-transform:uppercase;border:solid 1px;border-radius:.25rem;opacity:.6}.quarto-title .quarto-categories .quarto-category a{color:inherit}#title-block-header.quarto-title-block.default .quarto-title-meta{display:grid;grid-template-columns:repeat(2, 1fr)}#title-block-header.quarto-title-block.default .quarto-title .title{margin-bottom:0}#title-block-header.quarto-title-block.default .quarto-title-author-orcid img{margin-top:-5px}#title-block-header.quarto-title-block.default .quarto-description p:last-of-type{margin-bottom:0}#title-block-header.quarto-title-block.default .quarto-title-meta-contents p,#title-block-header.quarto-title-block.default .quarto-title-authors p,#title-block-header.quarto-title-block.default .quarto-title-affiliations p{margin-bottom:.1em}#title-block-header.quarto-title-block.default .quarto-title-meta-heading{text-transform:uppercase;margin-top:1em;font-size:.8em;opacity:.8;font-weight:400}#title-block-header.quarto-title-block.default .quarto-title-meta-contents{font-size:.9em}#title-block-header.quarto-title-block.default .quarto-title-meta-contents a{color:#777}#title-block-header.quarto-title-block.default .quarto-title-meta-contents p.affiliation:last-of-type{margin-bottom:.7em}#title-block-header.quarto-title-block.default p.affiliation{margin-bottom:.1em}#title-block-header.quarto-title-block.default .description,#title-block-header.quarto-title-block.default .abstract{margin-top:0}#title-block-header.quarto-title-block.default .description>p,#title-block-header.quarto-title-block.default .abstract>p{font-size:.9em}#title-block-header.quarto-title-block.default .description>p:last-of-type,#title-block-header.quarto-title-block.default .abstract>p:last-of-type{margin-bottom:0}#title-block-header.quarto-title-block.default .description .abstract-title,#title-block-header.quarto-title-block.default .abstract .abstract-title{margin-top:1em;text-transform:uppercase;font-size:.8em;opacity:.8;font-weight:400}#title-block-header.quarto-title-block.default .quarto-title-meta-author{display:grid;grid-template-columns:1fr 1fr}.navbar .nav-link,.navbar .navbar-brand{text-shadow:-1px -1px 0 rgba(0,0,0,.1);transition:color ease-in-out .2s}.navbar.bg-default{background-image:linear-gradient(#b1b1b1, #999 50%, #8d8d8d);filter:none;border:1px solid #7a7a7a}.navbar.bg-primary{background-image:linear-gradient(#7191b3, #446e9b 50%, #3f658f);filter:none;border:1px solid #36587c}.navbar.bg-secondary{background-image:linear-gradient(#b1b1b1, #999 50%, #8d8d8d);filter:none;border:1px solid #7a7a7a}.navbar.bg-success{background-image:linear-gradient(#6bc756, #3cb521 50%, #37a71e);filter:none;border:1px solid #30911a}.navbar.bg-info{background-image:linear-gradient(#64b1f6, #3399f3 50%, #2f8de0);filter:none;border:1px solid #297ac2}.navbar.bg-warning{background-image:linear-gradient(#de963d, #d47500 50%, #c36c00);filter:none;border:1px solid #aa5e00}.navbar.bg-danger{background-image:linear-gradient(#d93f3d, #cd0200 50%, #bd0200);filter:none;border:1px solid #a40200}.navbar.bg-light{background-image:linear-gradient(#f2f2f2, #eee 50%, #dbdbdb);filter:none;border:1px solid #bebebe}.navbar.bg-dark{background-image:linear-gradient(#646464, #333 50%, #2f2f2f);filter:none;border:1px solid #292929}.navbar.bg-light .nav-link,.navbar.bg-light .navbar-brand,.navbar.navbar-default .nav-link,.navbar.navbar-default .navbar-brand{text-shadow:1px 1px 0 rgba(255,255,255,.1)}.navbar.bg-light .navbar-brand,.navbar.navbar-default .navbar-brand{color:#4f4f4f}.navbar.bg-light .navbar-brand:hover,.navbar.navbar-default .navbar-brand:hover{color:#3399f3}.btn{text-shadow:-1px -1px 0 rgba(0,0,0,.1)}.btn-link{text-shadow:none}.btn-default{background-image:linear-gradient(#b1b1b1, #999 50%, #8d8d8d);filter:none;border:1px solid #7a7a7a}.btn-default:not(.disabled):hover{background-image:linear-gradient(#a8a8a8, #8d8d8d 50%, #828282);filter:none;border:1px solid #717171}.btn-primary{background-image:linear-gradient(#7191b3, #446e9b 50%, #3f658f);filter:none;border:1px solid #36587c}.btn-primary:not(.disabled):hover{background-image:linear-gradient(#6d8aaa, #3f658f 50%, #3a5d84);filter:none;border:1px solid #325172}.btn-secondary{background-image:linear-gradient(#b1b1b1, #999 50%, #8d8d8d);filter:none;border:1px solid #7a7a7a}.btn-secondary:not(.disabled):hover{background-image:linear-gradient(#a8a8a8, #8d8d8d 50%, #828282);filter:none;border:1px solid #717171}.btn-success{background-image:linear-gradient(#6bc756, #3cb521 50%, #37a71e);filter:none;border:1px solid #30911a}.btn-success:not(.disabled):hover{background-image:linear-gradient(#67bc54, #37a71e 50%, #339a1c);filter:none;border:1px solid #2c8618}.btn-info{background-image:linear-gradient(#64b1f6, #3399f3 50%, #2f8de0);filter:none;border:1px solid #297ac2}.btn-info:not(.disabled):hover{background-image:linear-gradient(#61a8e7, #2f8de0 50%, #2b82ce);filter:none;border:1px solid #2671b3}.btn-warning{background-image:linear-gradient(#de963d, #d47500 50%, #c36c00);filter:none;border:1px solid #aa5e00}.btn-warning:not(.disabled):hover{background-image:linear-gradient(#d18f3d, #c36c00 50%, #b36300);filter:none;border:1px solid #9c5600}.btn-danger{background-image:linear-gradient(#d93f3d, #cd0200 50%, #bd0200);filter:none;border:1px solid #a40200}.btn-danger:not(.disabled):hover{background-image:linear-gradient(#cd3f3d, #bd0200 50%, #ae0200);filter:none;border:1px solid #970200}.btn-light{background-image:linear-gradient(#f2f2f2, #eee 50%, #dbdbdb);filter:none;border:1px solid #bebebe}.btn-light:not(.disabled):hover{background-image:linear-gradient(#e4e4e4, #dbdbdb 50%, #c9c9c9);filter:none;border:1px solid #afafaf}.btn-dark{background-image:linear-gradient(#646464, #333 50%, #2f2f2f);filter:none;border:1px solid #292929}.btn-dark:not(.disabled):hover{background-image:linear-gradient(#616161, #2f2f2f 50%, #2b2b2b);filter:none;border:1px solid #262626}[class*=btn-outline-]{text-shadow:none}.badge.bg-light{color:#333}.card h1,.card .h1,.card h2,.card .h2,.card h3,.card .h3,.card h4,.card .h4,.card h5,.card .h5,.card h6,.card .h6,.list-group-item h1,.list-group-item .h1,.list-group-item h2,.list-group-item .h2,.list-group-item h3,.list-group-item .h3,.list-group-item h4,.list-group-item .h4,.list-group-item h5,.list-group-item .h5,.list-group-item h6,.list-group-item .h6{color:inherit}/*# sourceMappingURL=397ef2e52d54cf686e4908b90039e9db.css.map */ +*/.ansi-black-fg{color:#3e424d}.ansi-black-bg{background-color:#3e424d}.ansi-black-intense-fg{color:#282c36}.ansi-black-intense-bg{background-color:#282c36}.ansi-red-fg{color:#e75c58}.ansi-red-bg{background-color:#e75c58}.ansi-red-intense-fg{color:#b22b31}.ansi-red-intense-bg{background-color:#b22b31}.ansi-green-fg{color:#00a250}.ansi-green-bg{background-color:#00a250}.ansi-green-intense-fg{color:#007427}.ansi-green-intense-bg{background-color:#007427}.ansi-yellow-fg{color:#ddb62b}.ansi-yellow-bg{background-color:#ddb62b}.ansi-yellow-intense-fg{color:#b27d12}.ansi-yellow-intense-bg{background-color:#b27d12}.ansi-blue-fg{color:#208ffb}.ansi-blue-bg{background-color:#208ffb}.ansi-blue-intense-fg{color:#0065ca}.ansi-blue-intense-bg{background-color:#0065ca}.ansi-magenta-fg{color:#d160c4}.ansi-magenta-bg{background-color:#d160c4}.ansi-magenta-intense-fg{color:#a03196}.ansi-magenta-intense-bg{background-color:#a03196}.ansi-cyan-fg{color:#60c6c8}.ansi-cyan-bg{background-color:#60c6c8}.ansi-cyan-intense-fg{color:#258f8f}.ansi-cyan-intense-bg{background-color:#258f8f}.ansi-white-fg{color:#c5c1b4}.ansi-white-bg{background-color:#c5c1b4}.ansi-white-intense-fg{color:#a1a6b2}.ansi-white-intense-bg{background-color:#a1a6b2}.ansi-default-inverse-fg{color:#fff}.ansi-default-inverse-bg{background-color:#000}.ansi-bold{font-weight:bold}.ansi-underline{text-decoration:underline}:root{--quarto-body-bg: #fff;--quarto-body-color: #777;--quarto-text-muted: #777;--quarto-border-color: #dee2e6;--quarto-border-width: 1px;--quarto-border-radius: 0.25rem}table.gt_table{color:var(--quarto-body-color);font-size:1em;width:100%;background-color:rgba(0,0,0,0);border-top-width:inherit;border-bottom-width:inherit;border-color:var(--quarto-border-color)}table.gt_table th.gt_column_spanner_outer{color:var(--quarto-body-color);background-color:rgba(0,0,0,0);border-top-width:inherit;border-bottom-width:inherit;border-color:var(--quarto-border-color)}table.gt_table th.gt_col_heading{color:var(--quarto-body-color);font-weight:bold;background-color:rgba(0,0,0,0)}table.gt_table thead.gt_col_headings{border-bottom:1px solid currentColor;border-top-width:inherit;border-top-color:var(--quarto-border-color)}table.gt_table thead.gt_col_headings:not(:first-child){border-top-width:1px;border-top-color:var(--quarto-border-color)}table.gt_table td.gt_row{border-bottom-width:1px;border-bottom-color:var(--quarto-border-color);border-top-width:0px}table.gt_table tbody.gt_table_body{border-top-width:1px;border-bottom-width:1px;border-bottom-color:var(--quarto-border-color);border-top-color:currentColor}div.columns{display:initial;gap:initial}div.column{display:inline-block;overflow-x:initial;vertical-align:top;width:50%}.code-annotation-tip-content{word-wrap:break-word}.code-annotation-container-hidden{display:none !important}dl.code-annotation-container-grid{display:grid;grid-template-columns:min-content auto}dl.code-annotation-container-grid dt{grid-column:1}dl.code-annotation-container-grid dd{grid-column:2}pre.sourceCode.code-annotation-code{padding-right:0}code.sourceCode .code-annotation-anchor{z-index:100;position:absolute;right:.5em;left:inherit;background-color:rgba(0,0,0,0)}:root{--mermaid-bg-color: #fff;--mermaid-edge-color: #999;--mermaid-node-fg-color: #777;--mermaid-fg-color: #777;--mermaid-fg-color--lighter: #919191;--mermaid-fg-color--lightest: #aaaaaa;--mermaid-font-family: Open Sans, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;--mermaid-label-bg-color: #fff;--mermaid-label-fg-color: #446e9b;--mermaid-node-bg-color: rgba(68, 110, 155, 0.1);--mermaid-node-fg-color: #777}@media print{:root{font-size:11pt}#quarto-sidebar,#TOC,.nav-page{display:none}.page-columns .content{grid-column-start:page-start}.fixed-top{position:relative}.panel-caption,.figure-caption,figcaption{color:#666}}.code-copy-button{position:absolute;top:0;right:0;border:0;margin-top:5px;margin-right:5px;background-color:rgba(0,0,0,0);z-index:3}.code-copy-button:focus{outline:none}.code-copy-button-tooltip{font-size:.75em}pre.sourceCode:hover>.code-copy-button>.bi::before{display:inline-block;height:1rem;width:1rem;content:"";vertical-align:-0.125em;background-image:url('data:image/svg+xml,');background-repeat:no-repeat;background-size:1rem 1rem}pre.sourceCode:hover>.code-copy-button-checked>.bi::before{background-image:url('data:image/svg+xml,')}pre.sourceCode:hover>.code-copy-button:hover>.bi::before{background-image:url('data:image/svg+xml,')}pre.sourceCode:hover>.code-copy-button-checked:hover>.bi::before{background-image:url('data:image/svg+xml,')}main ol ol,main ul ul,main ol ul,main ul ol{margin-bottom:1em}ul>li:not(:has(>p))>ul,ol>li:not(:has(>p))>ul,ul>li:not(:has(>p))>ol,ol>li:not(:has(>p))>ol{margin-bottom:0}ul>li:not(:has(>p))>ul>li:has(>p),ol>li:not(:has(>p))>ul>li:has(>p),ul>li:not(:has(>p))>ol>li:has(>p),ol>li:not(:has(>p))>ol>li:has(>p){margin-top:1rem}body{margin:0}main.page-columns>header>h1.title,main.page-columns>header>.title.h1{margin-bottom:0}@media(min-width: 992px){body .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start page-start-inset] 35px [body-start-outset] 35px [body-start] 1.5em [body-content-start] minmax(500px, calc( 850px - 3em )) [body-content-end] 1.5em [body-end] 35px [body-end-outset] minmax(75px, 145px) [page-end-inset] 35px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.fullcontent:not(.floating):not(.docked) .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start page-start-inset] 35px [body-start-outset] 35px [body-start] 1.5em [body-content-start] minmax(500px, calc( 850px - 3em )) [body-content-end] 1.5em [body-end] 35px [body-end-outset] 35px [page-end-inset page-end] 5fr [screen-end-inset] 1.5em}body.slimcontent:not(.floating):not(.docked) .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start page-start-inset] 35px [body-start-outset] 35px [body-start] 1.5em [body-content-start] minmax(500px, calc( 850px - 3em )) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(0px, 200px) [page-end-inset] 35px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.listing:not(.floating):not(.docked) .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start] minmax(50px, 100px) [page-start-inset] 50px [body-start-outset] 50px [body-start] 1.5em [body-content-start] minmax(500px, calc( 850px - 3em )) [body-content-end] 3em [body-end] 50px [body-end-outset] minmax(0px, 250px) [page-end-inset] minmax(50px, 100px) [page-end] 1fr [screen-end-inset] 1.5em [screen-end]}body:not(.floating):not(.docked) .page-columns.toc-left{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] 35px [page-start-inset] minmax(0px, 175px) [body-start-outset] 35px [body-start] 1.5em [body-content-start] minmax(450px, calc( 800px - 3em )) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(0px, 200px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body:not(.floating):not(.docked) .page-columns.toc-left .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] 35px [page-start-inset] minmax(0px, 175px) [body-start-outset] 35px [body-start] 1.5em [body-content-start] minmax(450px, calc( 800px - 3em )) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(0px, 200px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.floating .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] minmax(25px, 50px) [page-start-inset] minmax(50px, 150px) [body-start-outset] minmax(25px, 50px) [body-start] 1.5em [body-content-start] minmax(500px, calc( 800px - 3em )) [body-content-end] 1.5em [body-end] minmax(25px, 50px) [body-end-outset] minmax(50px, 150px) [page-end-inset] minmax(25px, 50px) [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.docked .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start] minmax(50px, 100px) [page-start-inset] 50px [body-start-outset] 50px [body-start] 1.5em [body-content-start] minmax(500px, calc( 1000px - 3em )) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(50px, 100px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.docked.fullcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start] minmax(50px, 100px) [page-start-inset] 50px [body-start-outset] 50px [body-start] 1.5em [body-content-start] minmax(500px, calc( 1000px - 3em )) [body-content-end] 1.5em [body-end body-end-outset page-end-inset page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.floating.fullcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] 50px [page-start-inset] minmax(50px, 150px) [body-start-outset] 50px [body-start] 1.5em [body-content-start] minmax(500px, calc( 800px - 3em )) [body-content-end] 1.5em [body-end body-end-outset page-end-inset page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.docked.slimcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start] minmax(50px, 100px) [page-start-inset] 50px [body-start-outset] 50px [body-start] 1.5em [body-content-start] minmax(450px, calc( 750px - 3em )) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(0px, 200px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.docked.listing .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start] minmax(50px, 100px) [page-start-inset] 50px [body-start-outset] 50px [body-start] 1.5em [body-content-start] minmax(500px, calc( 1000px - 3em )) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(0px, 200px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.floating.slimcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] 50px [page-start-inset] minmax(50px, 150px) [body-start-outset] 50px [body-start] 1.5em [body-content-start] minmax(450px, calc( 750px - 3em )) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(50px, 150px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.floating.listing .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] minmax(25px, 50px) [page-start-inset] minmax(50px, 150px) [body-start-outset] minmax(25px, 50px) [body-start] 1.5em [body-content-start] minmax(500px, calc( 800px - 3em )) [body-content-end] 1.5em [body-end] minmax(25px, 50px) [body-end-outset] minmax(50px, 150px) [page-end-inset] minmax(25px, 50px) [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}}@media(max-width: 991.98px){body .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset] 5fr [body-start] 1.5em [body-content-start] minmax(500px, calc( 800px - 3em )) [body-content-end] 1.5em [body-end] 35px [body-end-outset] minmax(75px, 145px) [page-end-inset] 35px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.fullcontent:not(.floating):not(.docked) .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset] 5fr [body-start] 1.5em [body-content-start] minmax(500px, calc( 800px - 3em )) [body-content-end] 1.5em [body-end body-end-outset page-end-inset page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.slimcontent:not(.floating):not(.docked) .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset] 5fr [body-start] 1.5em [body-content-start] minmax(500px, calc( 800px - 3em )) [body-content-end] 1.5em [body-end] 35px [body-end-outset] minmax(75px, 145px) [page-end-inset] 35px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.listing:not(.floating):not(.docked) .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset] 5fr [body-start] 1.5em [body-content-start] minmax(500px, calc( 1250px - 3em )) [body-content-end body-end body-end-outset page-end-inset page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body:not(.floating):not(.docked) .page-columns.toc-left{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] 35px [page-start-inset] minmax(0px, 145px) [body-start-outset] 35px [body-start] 1.5em [body-content-start] minmax(450px, calc( 800px - 3em )) [body-content-end] 1.5em [body-end body-end-outset page-end-inset page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body:not(.floating):not(.docked) .page-columns.toc-left .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] 35px [page-start-inset] minmax(0px, 145px) [body-start-outset] 35px [body-start] 1.5em [body-content-start] minmax(450px, calc( 800px - 3em )) [body-content-end] 1.5em [body-end body-end-outset page-end-inset page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.floating .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start page-start-inset body-start-outset body-start] 1.5em [body-content-start] minmax(500px, calc( 750px - 3em )) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(75px, 150px) [page-end-inset] 25px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.docked .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset body-start body-content-start] minmax(500px, calc( 750px - 3em )) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(25px, 50px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.docked.fullcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset body-start body-content-start] minmax(500px, calc( 1000px - 3em )) [body-content-end] 1.5em [body-end body-end-outset page-end-inset page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.floating.fullcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start page-start-inset body-start-outset body-start] 1em [body-content-start] minmax(500px, calc( 800px - 3em )) [body-content-end] 1.5em [body-end body-end-outset page-end-inset page-end] 4fr [screen-end-inset] 1.5em [screen-end]}body.docked.slimcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset body-start body-content-start] minmax(500px, calc( 750px - 3em )) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(25px, 50px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.docked.listing .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset body-start body-content-start] minmax(500px, calc( 750px - 3em )) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(25px, 50px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.floating.slimcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start page-start-inset body-start-outset body-start] 1em [body-content-start] minmax(500px, calc( 750px - 3em )) [body-content-end] 1.5em [body-end] 35px [body-end-outset] minmax(75px, 145px) [page-end-inset] 35px [page-end] 4fr [screen-end-inset] 1.5em [screen-end]}body.floating.listing .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start page-start-inset body-start-outset body-start] 1em [body-content-start] minmax(500px, calc( 750px - 3em )) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(75px, 150px) [page-end-inset] 25px [page-end] 4fr [screen-end-inset] 1.5em [screen-end]}}@media(max-width: 767.98px){body .page-columns,body.fullcontent:not(.floating):not(.docked) .page-columns,body.slimcontent:not(.floating):not(.docked) .page-columns,body.docked .page-columns,body.docked.slimcontent .page-columns,body.docked.fullcontent .page-columns,body.floating .page-columns,body.floating.slimcontent .page-columns,body.floating.fullcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset body-start body-content-start] minmax(0px, 1fr) [body-content-end body-end body-end-outset page-end-inset page-end screen-end-inset] 1.5em [screen-end]}body:not(.floating):not(.docked) .page-columns.toc-left{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset body-start body-content-start] minmax(0px, 1fr) [body-content-end body-end body-end-outset page-end-inset page-end screen-end-inset] 1.5em [screen-end]}body:not(.floating):not(.docked) .page-columns.toc-left .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset body-start body-content-start] minmax(0px, 1fr) [body-content-end body-end body-end-outset page-end-inset page-end screen-end-inset] 1.5em [screen-end]}nav[role=doc-toc]{display:none}}body,.page-row-navigation{grid-template-rows:[page-top] max-content [contents-top] max-content [contents-bottom] max-content [page-bottom]}.page-rows-contents{grid-template-rows:[content-top] minmax(max-content, 1fr) [content-bottom] minmax(60px, max-content) [page-bottom]}.page-full{grid-column:screen-start/screen-end !important}.page-columns>*{grid-column:body-content-start/body-content-end}.page-columns.column-page>*{grid-column:page-start/page-end}.page-columns.column-page-left>*{grid-column:page-start/body-content-end}.page-columns.column-page-right>*{grid-column:body-content-start/page-end}.page-rows{grid-auto-rows:auto}.header{grid-column:screen-start/screen-end;grid-row:page-top/contents-top}#quarto-content{padding:0;grid-column:screen-start/screen-end;grid-row:contents-top/contents-bottom}body.floating .sidebar.sidebar-navigation{grid-column:page-start/body-start;grid-row:content-top/page-bottom}body.docked .sidebar.sidebar-navigation{grid-column:screen-start/body-start;grid-row:content-top/page-bottom}.sidebar.toc-left{grid-column:page-start/body-start;grid-row:content-top/page-bottom}.sidebar.margin-sidebar{grid-column:body-end/page-end;grid-row:content-top/page-bottom}.page-columns .content{grid-column:body-content-start/body-content-end;grid-row:content-top/content-bottom;align-content:flex-start}.page-columns .page-navigation{grid-column:body-content-start/body-content-end;grid-row:content-bottom/page-bottom}.page-columns .footer{grid-column:screen-start/screen-end;grid-row:contents-bottom/page-bottom}.page-columns .column-body{grid-column:body-content-start/body-content-end}.page-columns .column-body-fullbleed{grid-column:body-start/body-end}.page-columns .column-body-outset{grid-column:body-start-outset/body-end-outset;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-body-outset table{background:#fff}.page-columns .column-body-outset-left{grid-column:body-start-outset/body-content-end;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-body-outset-left table{background:#fff}.page-columns .column-body-outset-right{grid-column:body-content-start/body-end-outset;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-body-outset-right table{background:#fff}.page-columns .column-page{grid-column:page-start/page-end;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-page table{background:#fff}.page-columns .column-page-inset{grid-column:page-start-inset/page-end-inset;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-page-inset table{background:#fff}.page-columns .column-page-inset-left{grid-column:page-start-inset/body-content-end;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-page-inset-left table{background:#fff}.page-columns .column-page-inset-right{grid-column:body-content-start/page-end-inset;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-page-inset-right figcaption table{background:#fff}.page-columns .column-page-left{grid-column:page-start/body-content-end;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-page-left table{background:#fff}.page-columns .column-page-right{grid-column:body-content-start/page-end;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-page-right figcaption table{background:#fff}#quarto-content.page-columns #quarto-margin-sidebar,#quarto-content.page-columns #quarto-sidebar{z-index:1}@media(max-width: 991.98px){#quarto-content.page-columns #quarto-margin-sidebar.collapse,#quarto-content.page-columns #quarto-sidebar.collapse,#quarto-content.page-columns #quarto-margin-sidebar.collapsing,#quarto-content.page-columns #quarto-sidebar.collapsing{z-index:1055}}#quarto-content.page-columns main.column-page,#quarto-content.page-columns main.column-page-right,#quarto-content.page-columns main.column-page-left{z-index:0}.page-columns .column-screen-inset{grid-column:screen-start-inset/screen-end-inset;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-screen-inset table{background:#fff}.page-columns .column-screen-inset-left{grid-column:screen-start-inset/body-content-end;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-screen-inset-left table{background:#fff}.page-columns .column-screen-inset-right{grid-column:body-content-start/screen-end-inset;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-screen-inset-right table{background:#fff}.page-columns .column-screen{grid-column:screen-start/screen-end;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-screen table{background:#fff}.page-columns .column-screen-left{grid-column:screen-start/body-content-end;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-screen-left table{background:#fff}.page-columns .column-screen-right{grid-column:body-content-start/screen-end;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-screen-right table{background:#fff}.page-columns .column-screen-inset-shaded{grid-column:screen-start/screen-end;padding:1em;background:#eee;z-index:998;transform:translate3d(0, 0, 0);margin-bottom:1em}.zindex-content{z-index:998;transform:translate3d(0, 0, 0)}.zindex-modal{z-index:1055;transform:translate3d(0, 0, 0)}.zindex-over-content{z-index:999;transform:translate3d(0, 0, 0)}img.img-fluid.column-screen,img.img-fluid.column-screen-inset-shaded,img.img-fluid.column-screen-inset,img.img-fluid.column-screen-inset-left,img.img-fluid.column-screen-inset-right,img.img-fluid.column-screen-left,img.img-fluid.column-screen-right{width:100%}@media(min-width: 992px){.margin-caption,div.aside,aside,.column-margin{grid-column:body-end/page-end !important;z-index:998}.column-sidebar{grid-column:page-start/body-start !important;z-index:998}.column-leftmargin{grid-column:screen-start-inset/body-start !important;z-index:998}.no-row-height{height:1em;overflow:visible}}@media(max-width: 991.98px){.margin-caption,div.aside,aside,.column-margin{grid-column:body-end/page-end !important;z-index:998}.no-row-height{height:1em;overflow:visible}.page-columns.page-full{overflow:visible}.page-columns.toc-left .margin-caption,.page-columns.toc-left div.aside,.page-columns.toc-left aside,.page-columns.toc-left .column-margin{grid-column:body-content-start/body-content-end !important;z-index:998;transform:translate3d(0, 0, 0)}.page-columns.toc-left .no-row-height{height:initial;overflow:initial}}@media(max-width: 767.98px){.margin-caption,div.aside,aside,.column-margin{grid-column:body-content-start/body-content-end !important;z-index:998;transform:translate3d(0, 0, 0)}.no-row-height{height:initial;overflow:initial}#quarto-margin-sidebar{display:none}#quarto-sidebar-toc-left{display:none}.hidden-sm{display:none}}.panel-grid{display:grid;grid-template-rows:repeat(1, 1fr);grid-template-columns:repeat(24, 1fr);gap:1em}.panel-grid .g-col-1{grid-column:auto/span 1}.panel-grid .g-col-2{grid-column:auto/span 2}.panel-grid .g-col-3{grid-column:auto/span 3}.panel-grid .g-col-4{grid-column:auto/span 4}.panel-grid .g-col-5{grid-column:auto/span 5}.panel-grid .g-col-6{grid-column:auto/span 6}.panel-grid .g-col-7{grid-column:auto/span 7}.panel-grid .g-col-8{grid-column:auto/span 8}.panel-grid .g-col-9{grid-column:auto/span 9}.panel-grid .g-col-10{grid-column:auto/span 10}.panel-grid .g-col-11{grid-column:auto/span 11}.panel-grid .g-col-12{grid-column:auto/span 12}.panel-grid .g-col-13{grid-column:auto/span 13}.panel-grid .g-col-14{grid-column:auto/span 14}.panel-grid .g-col-15{grid-column:auto/span 15}.panel-grid .g-col-16{grid-column:auto/span 16}.panel-grid .g-col-17{grid-column:auto/span 17}.panel-grid .g-col-18{grid-column:auto/span 18}.panel-grid .g-col-19{grid-column:auto/span 19}.panel-grid .g-col-20{grid-column:auto/span 20}.panel-grid .g-col-21{grid-column:auto/span 21}.panel-grid .g-col-22{grid-column:auto/span 22}.panel-grid .g-col-23{grid-column:auto/span 23}.panel-grid .g-col-24{grid-column:auto/span 24}.panel-grid .g-start-1{grid-column-start:1}.panel-grid .g-start-2{grid-column-start:2}.panel-grid .g-start-3{grid-column-start:3}.panel-grid .g-start-4{grid-column-start:4}.panel-grid .g-start-5{grid-column-start:5}.panel-grid .g-start-6{grid-column-start:6}.panel-grid .g-start-7{grid-column-start:7}.panel-grid .g-start-8{grid-column-start:8}.panel-grid .g-start-9{grid-column-start:9}.panel-grid .g-start-10{grid-column-start:10}.panel-grid .g-start-11{grid-column-start:11}.panel-grid .g-start-12{grid-column-start:12}.panel-grid .g-start-13{grid-column-start:13}.panel-grid .g-start-14{grid-column-start:14}.panel-grid .g-start-15{grid-column-start:15}.panel-grid .g-start-16{grid-column-start:16}.panel-grid .g-start-17{grid-column-start:17}.panel-grid .g-start-18{grid-column-start:18}.panel-grid .g-start-19{grid-column-start:19}.panel-grid .g-start-20{grid-column-start:20}.panel-grid .g-start-21{grid-column-start:21}.panel-grid .g-start-22{grid-column-start:22}.panel-grid .g-start-23{grid-column-start:23}@media(min-width: 576px){.panel-grid .g-col-sm-1{grid-column:auto/span 1}.panel-grid .g-col-sm-2{grid-column:auto/span 2}.panel-grid .g-col-sm-3{grid-column:auto/span 3}.panel-grid .g-col-sm-4{grid-column:auto/span 4}.panel-grid .g-col-sm-5{grid-column:auto/span 5}.panel-grid .g-col-sm-6{grid-column:auto/span 6}.panel-grid .g-col-sm-7{grid-column:auto/span 7}.panel-grid .g-col-sm-8{grid-column:auto/span 8}.panel-grid .g-col-sm-9{grid-column:auto/span 9}.panel-grid .g-col-sm-10{grid-column:auto/span 10}.panel-grid .g-col-sm-11{grid-column:auto/span 11}.panel-grid .g-col-sm-12{grid-column:auto/span 12}.panel-grid .g-col-sm-13{grid-column:auto/span 13}.panel-grid .g-col-sm-14{grid-column:auto/span 14}.panel-grid .g-col-sm-15{grid-column:auto/span 15}.panel-grid .g-col-sm-16{grid-column:auto/span 16}.panel-grid .g-col-sm-17{grid-column:auto/span 17}.panel-grid .g-col-sm-18{grid-column:auto/span 18}.panel-grid .g-col-sm-19{grid-column:auto/span 19}.panel-grid .g-col-sm-20{grid-column:auto/span 20}.panel-grid .g-col-sm-21{grid-column:auto/span 21}.panel-grid .g-col-sm-22{grid-column:auto/span 22}.panel-grid .g-col-sm-23{grid-column:auto/span 23}.panel-grid .g-col-sm-24{grid-column:auto/span 24}.panel-grid .g-start-sm-1{grid-column-start:1}.panel-grid .g-start-sm-2{grid-column-start:2}.panel-grid .g-start-sm-3{grid-column-start:3}.panel-grid .g-start-sm-4{grid-column-start:4}.panel-grid .g-start-sm-5{grid-column-start:5}.panel-grid .g-start-sm-6{grid-column-start:6}.panel-grid .g-start-sm-7{grid-column-start:7}.panel-grid .g-start-sm-8{grid-column-start:8}.panel-grid .g-start-sm-9{grid-column-start:9}.panel-grid .g-start-sm-10{grid-column-start:10}.panel-grid .g-start-sm-11{grid-column-start:11}.panel-grid .g-start-sm-12{grid-column-start:12}.panel-grid .g-start-sm-13{grid-column-start:13}.panel-grid .g-start-sm-14{grid-column-start:14}.panel-grid .g-start-sm-15{grid-column-start:15}.panel-grid .g-start-sm-16{grid-column-start:16}.panel-grid .g-start-sm-17{grid-column-start:17}.panel-grid .g-start-sm-18{grid-column-start:18}.panel-grid .g-start-sm-19{grid-column-start:19}.panel-grid .g-start-sm-20{grid-column-start:20}.panel-grid .g-start-sm-21{grid-column-start:21}.panel-grid .g-start-sm-22{grid-column-start:22}.panel-grid .g-start-sm-23{grid-column-start:23}}@media(min-width: 768px){.panel-grid .g-col-md-1{grid-column:auto/span 1}.panel-grid .g-col-md-2{grid-column:auto/span 2}.panel-grid .g-col-md-3{grid-column:auto/span 3}.panel-grid .g-col-md-4{grid-column:auto/span 4}.panel-grid .g-col-md-5{grid-column:auto/span 5}.panel-grid .g-col-md-6{grid-column:auto/span 6}.panel-grid .g-col-md-7{grid-column:auto/span 7}.panel-grid .g-col-md-8{grid-column:auto/span 8}.panel-grid .g-col-md-9{grid-column:auto/span 9}.panel-grid .g-col-md-10{grid-column:auto/span 10}.panel-grid .g-col-md-11{grid-column:auto/span 11}.panel-grid .g-col-md-12{grid-column:auto/span 12}.panel-grid .g-col-md-13{grid-column:auto/span 13}.panel-grid .g-col-md-14{grid-column:auto/span 14}.panel-grid .g-col-md-15{grid-column:auto/span 15}.panel-grid .g-col-md-16{grid-column:auto/span 16}.panel-grid .g-col-md-17{grid-column:auto/span 17}.panel-grid .g-col-md-18{grid-column:auto/span 18}.panel-grid .g-col-md-19{grid-column:auto/span 19}.panel-grid .g-col-md-20{grid-column:auto/span 20}.panel-grid .g-col-md-21{grid-column:auto/span 21}.panel-grid .g-col-md-22{grid-column:auto/span 22}.panel-grid .g-col-md-23{grid-column:auto/span 23}.panel-grid .g-col-md-24{grid-column:auto/span 24}.panel-grid .g-start-md-1{grid-column-start:1}.panel-grid .g-start-md-2{grid-column-start:2}.panel-grid .g-start-md-3{grid-column-start:3}.panel-grid .g-start-md-4{grid-column-start:4}.panel-grid .g-start-md-5{grid-column-start:5}.panel-grid .g-start-md-6{grid-column-start:6}.panel-grid .g-start-md-7{grid-column-start:7}.panel-grid .g-start-md-8{grid-column-start:8}.panel-grid .g-start-md-9{grid-column-start:9}.panel-grid .g-start-md-10{grid-column-start:10}.panel-grid .g-start-md-11{grid-column-start:11}.panel-grid .g-start-md-12{grid-column-start:12}.panel-grid .g-start-md-13{grid-column-start:13}.panel-grid .g-start-md-14{grid-column-start:14}.panel-grid .g-start-md-15{grid-column-start:15}.panel-grid .g-start-md-16{grid-column-start:16}.panel-grid .g-start-md-17{grid-column-start:17}.panel-grid .g-start-md-18{grid-column-start:18}.panel-grid .g-start-md-19{grid-column-start:19}.panel-grid .g-start-md-20{grid-column-start:20}.panel-grid .g-start-md-21{grid-column-start:21}.panel-grid .g-start-md-22{grid-column-start:22}.panel-grid .g-start-md-23{grid-column-start:23}}@media(min-width: 992px){.panel-grid .g-col-lg-1{grid-column:auto/span 1}.panel-grid .g-col-lg-2{grid-column:auto/span 2}.panel-grid .g-col-lg-3{grid-column:auto/span 3}.panel-grid .g-col-lg-4{grid-column:auto/span 4}.panel-grid .g-col-lg-5{grid-column:auto/span 5}.panel-grid .g-col-lg-6{grid-column:auto/span 6}.panel-grid .g-col-lg-7{grid-column:auto/span 7}.panel-grid .g-col-lg-8{grid-column:auto/span 8}.panel-grid .g-col-lg-9{grid-column:auto/span 9}.panel-grid .g-col-lg-10{grid-column:auto/span 10}.panel-grid .g-col-lg-11{grid-column:auto/span 11}.panel-grid .g-col-lg-12{grid-column:auto/span 12}.panel-grid .g-col-lg-13{grid-column:auto/span 13}.panel-grid .g-col-lg-14{grid-column:auto/span 14}.panel-grid .g-col-lg-15{grid-column:auto/span 15}.panel-grid .g-col-lg-16{grid-column:auto/span 16}.panel-grid .g-col-lg-17{grid-column:auto/span 17}.panel-grid .g-col-lg-18{grid-column:auto/span 18}.panel-grid .g-col-lg-19{grid-column:auto/span 19}.panel-grid .g-col-lg-20{grid-column:auto/span 20}.panel-grid .g-col-lg-21{grid-column:auto/span 21}.panel-grid .g-col-lg-22{grid-column:auto/span 22}.panel-grid .g-col-lg-23{grid-column:auto/span 23}.panel-grid .g-col-lg-24{grid-column:auto/span 24}.panel-grid .g-start-lg-1{grid-column-start:1}.panel-grid .g-start-lg-2{grid-column-start:2}.panel-grid .g-start-lg-3{grid-column-start:3}.panel-grid .g-start-lg-4{grid-column-start:4}.panel-grid .g-start-lg-5{grid-column-start:5}.panel-grid .g-start-lg-6{grid-column-start:6}.panel-grid .g-start-lg-7{grid-column-start:7}.panel-grid .g-start-lg-8{grid-column-start:8}.panel-grid .g-start-lg-9{grid-column-start:9}.panel-grid .g-start-lg-10{grid-column-start:10}.panel-grid .g-start-lg-11{grid-column-start:11}.panel-grid .g-start-lg-12{grid-column-start:12}.panel-grid .g-start-lg-13{grid-column-start:13}.panel-grid .g-start-lg-14{grid-column-start:14}.panel-grid .g-start-lg-15{grid-column-start:15}.panel-grid .g-start-lg-16{grid-column-start:16}.panel-grid .g-start-lg-17{grid-column-start:17}.panel-grid .g-start-lg-18{grid-column-start:18}.panel-grid .g-start-lg-19{grid-column-start:19}.panel-grid .g-start-lg-20{grid-column-start:20}.panel-grid .g-start-lg-21{grid-column-start:21}.panel-grid .g-start-lg-22{grid-column-start:22}.panel-grid .g-start-lg-23{grid-column-start:23}}@media(min-width: 1200px){.panel-grid .g-col-xl-1{grid-column:auto/span 1}.panel-grid .g-col-xl-2{grid-column:auto/span 2}.panel-grid .g-col-xl-3{grid-column:auto/span 3}.panel-grid .g-col-xl-4{grid-column:auto/span 4}.panel-grid .g-col-xl-5{grid-column:auto/span 5}.panel-grid .g-col-xl-6{grid-column:auto/span 6}.panel-grid .g-col-xl-7{grid-column:auto/span 7}.panel-grid .g-col-xl-8{grid-column:auto/span 8}.panel-grid .g-col-xl-9{grid-column:auto/span 9}.panel-grid .g-col-xl-10{grid-column:auto/span 10}.panel-grid .g-col-xl-11{grid-column:auto/span 11}.panel-grid .g-col-xl-12{grid-column:auto/span 12}.panel-grid .g-col-xl-13{grid-column:auto/span 13}.panel-grid .g-col-xl-14{grid-column:auto/span 14}.panel-grid .g-col-xl-15{grid-column:auto/span 15}.panel-grid .g-col-xl-16{grid-column:auto/span 16}.panel-grid .g-col-xl-17{grid-column:auto/span 17}.panel-grid .g-col-xl-18{grid-column:auto/span 18}.panel-grid .g-col-xl-19{grid-column:auto/span 19}.panel-grid .g-col-xl-20{grid-column:auto/span 20}.panel-grid .g-col-xl-21{grid-column:auto/span 21}.panel-grid .g-col-xl-22{grid-column:auto/span 22}.panel-grid .g-col-xl-23{grid-column:auto/span 23}.panel-grid .g-col-xl-24{grid-column:auto/span 24}.panel-grid .g-start-xl-1{grid-column-start:1}.panel-grid .g-start-xl-2{grid-column-start:2}.panel-grid .g-start-xl-3{grid-column-start:3}.panel-grid .g-start-xl-4{grid-column-start:4}.panel-grid .g-start-xl-5{grid-column-start:5}.panel-grid .g-start-xl-6{grid-column-start:6}.panel-grid .g-start-xl-7{grid-column-start:7}.panel-grid .g-start-xl-8{grid-column-start:8}.panel-grid .g-start-xl-9{grid-column-start:9}.panel-grid .g-start-xl-10{grid-column-start:10}.panel-grid .g-start-xl-11{grid-column-start:11}.panel-grid .g-start-xl-12{grid-column-start:12}.panel-grid .g-start-xl-13{grid-column-start:13}.panel-grid .g-start-xl-14{grid-column-start:14}.panel-grid .g-start-xl-15{grid-column-start:15}.panel-grid .g-start-xl-16{grid-column-start:16}.panel-grid .g-start-xl-17{grid-column-start:17}.panel-grid .g-start-xl-18{grid-column-start:18}.panel-grid .g-start-xl-19{grid-column-start:19}.panel-grid .g-start-xl-20{grid-column-start:20}.panel-grid .g-start-xl-21{grid-column-start:21}.panel-grid .g-start-xl-22{grid-column-start:22}.panel-grid .g-start-xl-23{grid-column-start:23}}@media(min-width: 1400px){.panel-grid .g-col-xxl-1{grid-column:auto/span 1}.panel-grid .g-col-xxl-2{grid-column:auto/span 2}.panel-grid .g-col-xxl-3{grid-column:auto/span 3}.panel-grid .g-col-xxl-4{grid-column:auto/span 4}.panel-grid .g-col-xxl-5{grid-column:auto/span 5}.panel-grid .g-col-xxl-6{grid-column:auto/span 6}.panel-grid .g-col-xxl-7{grid-column:auto/span 7}.panel-grid .g-col-xxl-8{grid-column:auto/span 8}.panel-grid .g-col-xxl-9{grid-column:auto/span 9}.panel-grid .g-col-xxl-10{grid-column:auto/span 10}.panel-grid .g-col-xxl-11{grid-column:auto/span 11}.panel-grid .g-col-xxl-12{grid-column:auto/span 12}.panel-grid .g-col-xxl-13{grid-column:auto/span 13}.panel-grid .g-col-xxl-14{grid-column:auto/span 14}.panel-grid .g-col-xxl-15{grid-column:auto/span 15}.panel-grid .g-col-xxl-16{grid-column:auto/span 16}.panel-grid .g-col-xxl-17{grid-column:auto/span 17}.panel-grid .g-col-xxl-18{grid-column:auto/span 18}.panel-grid .g-col-xxl-19{grid-column:auto/span 19}.panel-grid .g-col-xxl-20{grid-column:auto/span 20}.panel-grid .g-col-xxl-21{grid-column:auto/span 21}.panel-grid .g-col-xxl-22{grid-column:auto/span 22}.panel-grid .g-col-xxl-23{grid-column:auto/span 23}.panel-grid .g-col-xxl-24{grid-column:auto/span 24}.panel-grid .g-start-xxl-1{grid-column-start:1}.panel-grid .g-start-xxl-2{grid-column-start:2}.panel-grid .g-start-xxl-3{grid-column-start:3}.panel-grid .g-start-xxl-4{grid-column-start:4}.panel-grid .g-start-xxl-5{grid-column-start:5}.panel-grid .g-start-xxl-6{grid-column-start:6}.panel-grid .g-start-xxl-7{grid-column-start:7}.panel-grid .g-start-xxl-8{grid-column-start:8}.panel-grid .g-start-xxl-9{grid-column-start:9}.panel-grid .g-start-xxl-10{grid-column-start:10}.panel-grid .g-start-xxl-11{grid-column-start:11}.panel-grid .g-start-xxl-12{grid-column-start:12}.panel-grid .g-start-xxl-13{grid-column-start:13}.panel-grid .g-start-xxl-14{grid-column-start:14}.panel-grid .g-start-xxl-15{grid-column-start:15}.panel-grid .g-start-xxl-16{grid-column-start:16}.panel-grid .g-start-xxl-17{grid-column-start:17}.panel-grid .g-start-xxl-18{grid-column-start:18}.panel-grid .g-start-xxl-19{grid-column-start:19}.panel-grid .g-start-xxl-20{grid-column-start:20}.panel-grid .g-start-xxl-21{grid-column-start:21}.panel-grid .g-start-xxl-22{grid-column-start:22}.panel-grid .g-start-xxl-23{grid-column-start:23}}main{margin-top:1em;margin-bottom:1em}h1,.h1,h2,.h2{opacity:.9;margin-top:2rem;margin-bottom:1rem;font-weight:600}h1.title,.title.h1{margin-top:0}h2,.h2{border-bottom:1px solid #dee2e6;padding-bottom:.5rem}h3,.h3{font-weight:600}h3,.h3,h4,.h4{opacity:.9;margin-top:1.5rem}h5,.h5,h6,.h6{opacity:.9}.header-section-number{color:#b7b7b7}.nav-link.active .header-section-number{color:inherit}mark,.mark{padding:0em}.panel-caption,caption,.figure-caption{font-size:.9rem}.panel-caption,.figure-caption,figcaption{color:#b7b7b7}.table-caption,caption{color:#777}.quarto-layout-cell[data-ref-parent] caption{color:#b7b7b7}.column-margin figcaption,.margin-caption,div.aside,aside,.column-margin{color:#b7b7b7;font-size:.825rem}.panel-caption.margin-caption{text-align:inherit}.column-margin.column-container p{margin-bottom:0}.column-margin.column-container>*:not(.collapse){padding-top:.5em;padding-bottom:.5em;display:block}.column-margin.column-container>*.collapse:not(.show){display:none}@media(min-width: 768px){.column-margin.column-container .callout-margin-content:first-child{margin-top:4.5em}.column-margin.column-container .callout-margin-content-simple:first-child{margin-top:3.5em}}.margin-caption>*{padding-top:.5em;padding-bottom:.5em}@media(max-width: 767.98px){.quarto-layout-row{flex-direction:column}}.nav-tabs .nav-item{margin-top:1px;cursor:pointer}.tab-content{margin-top:0px;border-left:#dee2e6 1px solid;border-right:#dee2e6 1px solid;border-bottom:#dee2e6 1px solid;margin-left:0;padding:1em;margin-bottom:1em}@media(max-width: 767.98px){.layout-sidebar{margin-left:0;margin-right:0}}.panel-sidebar,.panel-sidebar .form-control,.panel-input,.panel-input .form-control,.selectize-dropdown{font-size:.9rem}.panel-sidebar .form-control,.panel-input .form-control{padding-top:.1rem}.tab-pane div.sourceCode{margin-top:0px}.tab-pane>p{padding-top:1em}.tab-content>.tab-pane:not(.active){display:none !important}div.sourceCode{background-color:#fdf6e3;border:1px solid #fdf6e3;border-radius:.25rem}pre.sourceCode{background-color:rgba(0,0,0,0)}pre.sourceCode{border:none;font-size:.875em;overflow:visible !important;padding:.4em}.callout pre.sourceCode{padding-left:0}div.sourceCode{overflow-y:hidden}.callout div.sourceCode{margin-left:initial}.blockquote{font-size:inherit;padding-left:1rem;padding-right:1.5rem;color:#b7b7b7}.blockquote h1:first-child,.blockquote .h1:first-child,.blockquote h2:first-child,.blockquote .h2:first-child,.blockquote h3:first-child,.blockquote .h3:first-child,.blockquote h4:first-child,.blockquote .h4:first-child,.blockquote h5:first-child,.blockquote .h5:first-child{margin-top:0}pre{background-color:initial;padding:initial;border:initial}p code:not(.sourceCode),li code:not(.sourceCode),td code:not(.sourceCode){background-color:#fafafa;padding:.2em}nav p code:not(.sourceCode),nav li code:not(.sourceCode),nav td code:not(.sourceCode){background-color:rgba(0,0,0,0);padding:0}td code:not(.sourceCode){white-space:pre-wrap}#quarto-embedded-source-code-modal>.modal-dialog{max-width:1000px;padding-left:1.75rem;padding-right:1.75rem}#quarto-embedded-source-code-modal>.modal-dialog>.modal-content>.modal-body{padding:0}#quarto-embedded-source-code-modal>.modal-dialog>.modal-content>.modal-body div.sourceCode{margin:0;padding:.2rem .2rem;border-radius:0px;border:none}#quarto-embedded-source-code-modal>.modal-dialog>.modal-content>.modal-header{padding:.7rem}.code-tools-button{font-size:1rem;padding:.15rem .15rem;margin-left:5px;color:#777;background-color:rgba(0,0,0,0);transition:initial;cursor:pointer}.code-tools-button>.bi::before{display:inline-block;height:1rem;width:1rem;content:"";vertical-align:-0.125em;background-image:url('data:image/svg+xml,');background-repeat:no-repeat;background-size:1rem 1rem}.code-tools-button:hover>.bi::before{background-image:url('data:image/svg+xml,')}#quarto-embedded-source-code-modal .code-copy-button>.bi::before{background-image:url('data:image/svg+xml,')}#quarto-embedded-source-code-modal .code-copy-button-checked>.bi::before{background-image:url('data:image/svg+xml,')}.sidebar{will-change:top;transition:top 200ms linear;position:sticky;overflow-y:auto;padding-top:1.2em;max-height:100vh}.sidebar.toc-left,.sidebar.margin-sidebar{top:0px;padding-top:1em}.sidebar.toc-left>*,.sidebar.margin-sidebar>*{padding-top:.5em}.sidebar.quarto-banner-title-block-sidebar>*{padding-top:1.65em}figure .quarto-notebook-link{margin-top:.5em}.quarto-notebook-link{font-size:.75em;color:#777;margin-bottom:1em;text-decoration:none;display:block}.quarto-notebook-link:hover{text-decoration:underline;color:#3399f3}.quarto-notebook-link::before{display:inline-block;height:.75rem;width:.75rem;margin-bottom:0em;margin-right:.25em;content:"";vertical-align:-0.125em;background-image:url('data:image/svg+xml,');background-repeat:no-repeat;background-size:.75rem .75rem}.quarto-alternate-notebooks i.bi,.quarto-alternate-formats i.bi{margin-right:.4em}.quarto-notebook .cell-container{display:flex}.quarto-notebook .cell-container .cell{flex-grow:4}.quarto-notebook .cell-container .cell-decorator{padding-top:1.5em;padding-right:1em;text-align:right}.quarto-notebook h2,.quarto-notebook .h2{border-bottom:none}.sidebar .quarto-alternate-formats a,.sidebar .quarto-alternate-notebooks a{text-decoration:none}.sidebar .quarto-alternate-formats a:hover,.sidebar .quarto-alternate-notebooks a:hover{color:#3399f3}.sidebar .quarto-alternate-notebooks h2,.sidebar .quarto-alternate-notebooks .h2,.sidebar .quarto-alternate-formats h2,.sidebar .quarto-alternate-formats .h2,.sidebar nav[role=doc-toc]>h2,.sidebar nav[role=doc-toc]>.h2{font-size:.875rem;font-weight:400;margin-bottom:.5rem;margin-top:.3rem;font-family:inherit;border-bottom:0;padding-bottom:0;padding-top:0px}.sidebar .quarto-alternate-notebooks h2,.sidebar .quarto-alternate-notebooks .h2,.sidebar .quarto-alternate-formats h2,.sidebar .quarto-alternate-formats .h2{margin-top:1rem}.sidebar nav[role=doc-toc]>ul a{border-left:1px solid #eee;padding-left:.6rem}.sidebar .quarto-alternate-notebooks h2>ul a,.sidebar .quarto-alternate-notebooks .h2>ul a,.sidebar .quarto-alternate-formats h2>ul a,.sidebar .quarto-alternate-formats .h2>ul a{border-left:none;padding-left:.6rem}.sidebar .quarto-alternate-notebooks ul a:empty,.sidebar .quarto-alternate-formats ul a:empty,.sidebar nav[role=doc-toc]>ul a:empty{display:none}.sidebar .quarto-alternate-notebooks ul,.sidebar .quarto-alternate-formats ul,.sidebar nav[role=doc-toc] ul{padding-left:0;list-style:none;font-size:.875rem;font-weight:300}.sidebar .quarto-alternate-notebooks ul li a,.sidebar .quarto-alternate-formats ul li a,.sidebar nav[role=doc-toc]>ul li a{line-height:1.1rem;padding-bottom:.2rem;padding-top:.2rem;color:inherit}.sidebar nav[role=doc-toc] ul>li>ul>li>a{padding-left:1.2em}.sidebar nav[role=doc-toc] ul>li>ul>li>ul>li>a{padding-left:2.4em}.sidebar nav[role=doc-toc] ul>li>ul>li>ul>li>ul>li>a{padding-left:3.6em}.sidebar nav[role=doc-toc] ul>li>ul>li>ul>li>ul>li>ul>li>a{padding-left:4.8em}.sidebar nav[role=doc-toc] ul>li>ul>li>ul>li>ul>li>ul>li>ul>li>a{padding-left:6em}.sidebar nav[role=doc-toc] ul>li>a.active,.sidebar nav[role=doc-toc] ul>li>ul>li>a.active{border-left:1px solid #3399f3;color:#3399f3 !important}.sidebar nav[role=doc-toc] ul>li>a:hover,.sidebar nav[role=doc-toc] ul>li>ul>li>a:hover{color:#3399f3 !important}kbd,.kbd{color:#777;background-color:#f8f9fa;border:1px solid;border-radius:5px;border-color:#dee2e6}div.hanging-indent{margin-left:1em;text-indent:-1em}.citation a,.footnote-ref{text-decoration:none}.footnotes ol{padding-left:1em}.tippy-content>*{margin-bottom:.7em}.tippy-content>*:last-child{margin-bottom:0}.table a{word-break:break-word}.table>thead{border-top-width:1px;border-top-color:#dee2e6;border-bottom:1px solid #f7f7f7}.callout{margin-top:1.25rem;margin-bottom:1.25rem;border-radius:.25rem;overflow-wrap:break-word}.callout .callout-title-container{overflow-wrap:anywhere}.callout.callout-style-simple{padding:.4em .7em;border-left:5px solid;border-right:1px solid #dee2e6;border-top:1px solid #dee2e6;border-bottom:1px solid #dee2e6}.callout.callout-style-default{border-left:5px solid;border-right:1px solid #dee2e6;border-top:1px solid #dee2e6;border-bottom:1px solid #dee2e6}.callout .callout-body-container{flex-grow:1}.callout.callout-style-simple .callout-body{font-size:.9rem;font-weight:400}.callout.callout-style-default .callout-body{font-size:.9rem;font-weight:400}.callout.callout-titled .callout-body{margin-top:.2em}.callout:not(.no-icon).callout-titled.callout-style-simple .callout-body{padding-left:1.6em}.callout.callout-titled>.callout-header{padding-top:.2em;margin-bottom:-0.2em}.callout.callout-style-simple>div.callout-header{border-bottom:none;font-size:.9rem;font-weight:600;opacity:75%}.callout.callout-style-default>div.callout-header{border-bottom:none;font-weight:600;opacity:85%;font-size:.9rem;padding-left:.5em;padding-right:.5em}.callout.callout-style-default div.callout-body{padding-left:.5em;padding-right:.5em}.callout.callout-style-default div.callout-body>:first-child{margin-top:.5em}.callout>div.callout-header[data-bs-toggle=collapse]{cursor:pointer}.callout.callout-style-default .callout-header[aria-expanded=false],.callout.callout-style-default .callout-header[aria-expanded=true]{padding-top:0px;margin-bottom:0px;align-items:center}.callout.callout-titled .callout-body>:last-child:not(.sourceCode),.callout.callout-titled .callout-body>div>:last-child:not(.sourceCode){margin-bottom:.5rem}.callout:not(.callout-titled) .callout-body>:first-child,.callout:not(.callout-titled) .callout-body>div>:first-child{margin-top:.25rem}.callout:not(.callout-titled) .callout-body>:last-child,.callout:not(.callout-titled) .callout-body>div>:last-child{margin-bottom:.2rem}.callout.callout-style-simple .callout-icon::before,.callout.callout-style-simple .callout-toggle::before{height:1rem;width:1rem;display:inline-block;content:"";background-repeat:no-repeat;background-size:1rem 1rem}.callout.callout-style-default .callout-icon::before,.callout.callout-style-default .callout-toggle::before{height:.9rem;width:.9rem;display:inline-block;content:"";background-repeat:no-repeat;background-size:.9rem .9rem}.callout.callout-style-default .callout-toggle::before{margin-top:5px}.callout .callout-btn-toggle .callout-toggle::before{transition:transform .2s linear}.callout .callout-header[aria-expanded=false] .callout-toggle::before{transform:rotate(-90deg)}.callout .callout-header[aria-expanded=true] .callout-toggle::before{transform:none}.callout.callout-style-simple:not(.no-icon) div.callout-icon-container{padding-top:.2em;padding-right:.55em}.callout.callout-style-default:not(.no-icon) div.callout-icon-container{padding-top:.1em;padding-right:.35em}.callout.callout-style-default:not(.no-icon) div.callout-title-container{margin-top:-1px}.callout.callout-style-default.callout-caution:not(.no-icon) div.callout-icon-container{padding-top:.3em;padding-right:.35em}.callout>.callout-body>.callout-icon-container>.no-icon,.callout>.callout-header>.callout-icon-container>.no-icon{display:none}div.callout.callout{border-left-color:#777}div.callout.callout-style-default>.callout-header{background-color:#777}div.callout-note.callout{border-left-color:#446e9b}div.callout-note.callout-style-default>.callout-header{background-color:#ecf1f5}div.callout-note:not(.callout-titled) .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-note.callout-titled .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-note .callout-toggle::before{background-image:url('data:image/svg+xml,')}div.callout-tip.callout{border-left-color:#3cb521}div.callout-tip.callout-style-default>.callout-header{background-color:#ecf8e9}div.callout-tip:not(.callout-titled) .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-tip.callout-titled .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-tip .callout-toggle::before{background-image:url('data:image/svg+xml,')}div.callout-warning.callout{border-left-color:#d47500}div.callout-warning.callout-style-default>.callout-header{background-color:#fbf1e6}div.callout-warning:not(.callout-titled) .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-warning.callout-titled .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-warning .callout-toggle::before{background-image:url('data:image/svg+xml,')}div.callout-caution.callout{border-left-color:#fd7e14}div.callout-caution.callout-style-default>.callout-header{background-color:#fff2e8}div.callout-caution:not(.callout-titled) .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-caution.callout-titled .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-caution .callout-toggle::before{background-image:url('data:image/svg+xml,')}div.callout-important.callout{border-left-color:#cd0200}div.callout-important.callout-style-default>.callout-header{background-color:#fae6e6}div.callout-important:not(.callout-titled) .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-important.callout-titled .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-important .callout-toggle::before{background-image:url('data:image/svg+xml,')}.quarto-toggle-container{display:flex;align-items:center}.quarto-reader-toggle .bi::before,.quarto-color-scheme-toggle .bi::before{display:inline-block;height:1rem;width:1rem;content:"";background-repeat:no-repeat;background-size:1rem 1rem}.sidebar-navigation{padding-left:20px}.navbar .quarto-color-scheme-toggle:not(.alternate) .bi::before{background-image:url('data:image/svg+xml,')}.navbar .quarto-color-scheme-toggle.alternate .bi::before{background-image:url('data:image/svg+xml,')}.sidebar-navigation .quarto-color-scheme-toggle:not(.alternate) .bi::before{background-image:url('data:image/svg+xml,')}.sidebar-navigation .quarto-color-scheme-toggle.alternate .bi::before{background-image:url('data:image/svg+xml,')}.quarto-sidebar-toggle{border-color:#dee2e6;border-bottom-left-radius:.25rem;border-bottom-right-radius:.25rem;border-style:solid;border-width:1px;overflow:hidden;border-top-width:0px;padding-top:0px !important}.quarto-sidebar-toggle-title{cursor:pointer;padding-bottom:2px;margin-left:.25em;text-align:center;font-weight:400;font-size:.775em}#quarto-content .quarto-sidebar-toggle{background:#fafafa}#quarto-content .quarto-sidebar-toggle-title{color:#777}.quarto-sidebar-toggle-icon{color:#dee2e6;margin-right:.5em;float:right;transition:transform .2s ease}.quarto-sidebar-toggle-icon::before{padding-top:5px}.quarto-sidebar-toggle.expanded .quarto-sidebar-toggle-icon{transform:rotate(-180deg)}.quarto-sidebar-toggle.expanded .quarto-sidebar-toggle-title{border-bottom:solid #dee2e6 1px}.quarto-sidebar-toggle-contents{background-color:#fff;padding-right:10px;padding-left:10px;margin-top:0px !important;transition:max-height .5s ease}.quarto-sidebar-toggle.expanded .quarto-sidebar-toggle-contents{padding-top:1em;padding-bottom:10px}.quarto-sidebar-toggle:not(.expanded) .quarto-sidebar-toggle-contents{padding-top:0px !important;padding-bottom:0px}nav[role=doc-toc]{z-index:1020}#quarto-sidebar>*,nav[role=doc-toc]>*{transition:opacity .1s ease,border .1s ease}#quarto-sidebar.slow>*,nav[role=doc-toc].slow>*{transition:opacity .4s ease,border .4s ease}.quarto-color-scheme-toggle:not(.alternate).top-right .bi::before{background-image:url('data:image/svg+xml,')}.quarto-color-scheme-toggle.alternate.top-right .bi::before{background-image:url('data:image/svg+xml,')}#quarto-appendix.default{border-top:1px solid #dee2e6}#quarto-appendix.default{background-color:#fff;padding-top:1.5em;margin-top:2em;z-index:998}#quarto-appendix.default .quarto-appendix-heading{margin-top:0;line-height:1.4em;font-weight:600;opacity:.9;border-bottom:none;margin-bottom:0}#quarto-appendix.default .footnotes ol,#quarto-appendix.default .footnotes ol li>p:last-of-type,#quarto-appendix.default .quarto-appendix-contents>p:last-of-type{margin-bottom:0}#quarto-appendix.default .quarto-appendix-secondary-label{margin-bottom:.4em}#quarto-appendix.default .quarto-appendix-bibtex{font-size:.7em;padding:1em;border:solid 1px #dee2e6;margin-bottom:1em}#quarto-appendix.default .quarto-appendix-bibtex code.sourceCode{white-space:pre-wrap}#quarto-appendix.default .quarto-appendix-citeas{font-size:.9em;padding:1em;border:solid 1px #dee2e6;margin-bottom:1em}#quarto-appendix.default .quarto-appendix-heading{font-size:1em !important}#quarto-appendix.default *[role=doc-endnotes]>ol,#quarto-appendix.default .quarto-appendix-contents>*:not(h2):not(.h2){font-size:.9em}#quarto-appendix.default section{padding-bottom:1.5em}#quarto-appendix.default section *[role=doc-endnotes],#quarto-appendix.default section>*:not(a){opacity:.9;word-wrap:break-word}.btn.btn-quarto,div.cell-output-display .btn-quarto{color:#080808;background-color:#999;border-color:#999}.btn.btn-quarto:hover,div.cell-output-display .btn-quarto:hover{color:#080808;background-color:#a8a8a8;border-color:#a3a3a3}.btn-check:focus+.btn.btn-quarto,.btn.btn-quarto:focus,.btn-check:focus+div.cell-output-display .btn-quarto,div.cell-output-display .btn-quarto:focus{color:#080808;background-color:#a8a8a8;border-color:#a3a3a3;box-shadow:0 0 0 .25rem rgba(131,131,131,.5)}.btn-check:checked+.btn.btn-quarto,.btn-check:active+.btn.btn-quarto,.btn.btn-quarto:active,.btn.btn-quarto.active,.show>.btn.btn-quarto.dropdown-toggle,.btn-check:checked+div.cell-output-display .btn-quarto,.btn-check:active+div.cell-output-display .btn-quarto,div.cell-output-display .btn-quarto:active,div.cell-output-display .btn-quarto.active,.show>div.cell-output-display .btn-quarto.dropdown-toggle{color:#000;background-color:#adadad;border-color:#a3a3a3}.btn-check:checked+.btn.btn-quarto:focus,.btn-check:active+.btn.btn-quarto:focus,.btn.btn-quarto:active:focus,.btn.btn-quarto.active:focus,.show>.btn.btn-quarto.dropdown-toggle:focus,.btn-check:checked+div.cell-output-display .btn-quarto:focus,.btn-check:active+div.cell-output-display .btn-quarto:focus,div.cell-output-display .btn-quarto:active:focus,div.cell-output-display .btn-quarto.active:focus,.show>div.cell-output-display .btn-quarto.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(131,131,131,.5)}.btn.btn-quarto:disabled,.btn.btn-quarto.disabled,div.cell-output-display .btn-quarto:disabled,div.cell-output-display .btn-quarto.disabled{color:#fff;background-color:#999;border-color:#999}nav.quarto-secondary-nav.color-navbar{background-color:#eee;color:#4f4f4f}nav.quarto-secondary-nav.color-navbar h1,nav.quarto-secondary-nav.color-navbar .h1,nav.quarto-secondary-nav.color-navbar .quarto-btn-toggle{color:#4f4f4f}@media(max-width: 991.98px){body.nav-sidebar .quarto-title-banner{margin-bottom:0;padding-bottom:0}body.nav-sidebar #title-block-header{margin-block-end:0}}p.subtitle{margin-top:.25em;margin-bottom:.5em}code a:any-link{color:inherit;text-decoration-color:#777}/*! light */div.observablehq table thead tr th{background-color:var(--bs-body-bg)}input,button,select,optgroup,textarea{background-color:var(--bs-body-bg)}.code-annotated .code-copy-button{margin-right:1.25em;margin-top:0;padding-bottom:0;padding-top:3px}.code-annotation-gutter-bg{background-color:#fff}.code-annotation-gutter{background-color:#fdf6e3}.code-annotation-gutter,.code-annotation-gutter-bg{height:100%;width:calc(20px + .5em);position:absolute;top:0;right:0}dl.code-annotation-container-grid dt{margin-right:1em;margin-top:.25rem}dl.code-annotation-container-grid dt{font-family:var(--bs-font-monospace);color:#919191;border:solid #919191 1px;border-radius:50%;height:22px;width:22px;line-height:22px;font-size:11px;text-align:center;vertical-align:middle;text-decoration:none}dl.code-annotation-container-grid dt[data-target-cell]{cursor:pointer}dl.code-annotation-container-grid dt[data-target-cell].code-annotation-active{color:#fff;border:solid #aaa 1px;background-color:#aaa}pre.code-annotation-code{padding-top:0;padding-bottom:0}pre.code-annotation-code code{z-index:3}#code-annotation-line-highlight-gutter{width:100%;border-top:solid rgba(170,170,170,.2666666667) 1px;border-bottom:solid rgba(170,170,170,.2666666667) 1px;z-index:2;background-color:rgba(170,170,170,.1333333333)}#code-annotation-line-highlight{margin-left:-4em;width:calc(100% + 4em);border-top:solid rgba(170,170,170,.2666666667) 1px;border-bottom:solid rgba(170,170,170,.2666666667) 1px;z-index:2;background-color:rgba(170,170,170,.1333333333)}code.sourceCode .code-annotation-anchor.code-annotation-active{background-color:var(--quarto-hl-normal-color, #aaaaaa);border:solid var(--quarto-hl-normal-color, #aaaaaa) 1px;color:#fdf6e3;font-weight:bolder}code.sourceCode .code-annotation-anchor{font-family:var(--bs-font-monospace);color:var(--quarto-hl-co-color);border:solid var(--quarto-hl-co-color) 1px;border-radius:50%;height:18px;width:18px;font-size:9px;margin-top:2px}code.sourceCode button.code-annotation-anchor{padding:2px}code.sourceCode a.code-annotation-anchor{line-height:18px;text-align:center;vertical-align:middle;cursor:default;text-decoration:none}@media print{.page-columns .column-screen-inset{grid-column:page-start-inset/page-end-inset;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-screen-inset table{background:#fff}.page-columns .column-screen-inset-left{grid-column:page-start-inset/body-content-end;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-screen-inset-left table{background:#fff}.page-columns .column-screen-inset-right{grid-column:body-content-start/page-end-inset;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-screen-inset-right table{background:#fff}.page-columns .column-screen{grid-column:page-start/page-end;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-screen table{background:#fff}.page-columns .column-screen-left{grid-column:page-start/body-content-end;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-screen-left table{background:#fff}.page-columns .column-screen-right{grid-column:body-content-start/page-end;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-screen-right table{background:#fff}.page-columns .column-screen-inset-shaded{grid-column:page-start-inset/page-end-inset;padding:1em;background:#eee;z-index:998;transform:translate3d(0, 0, 0);margin-bottom:1em}}.quarto-video{margin-bottom:1em}.table>thead{border-top-width:0}.table>:not(caption)>*:not(:last-child)>*{border-bottom-color:#fff;border-bottom-style:solid;border-bottom-width:1px}.table>:not(:first-child){border-top:1px solid #f7f7f7;border-bottom:1px solid inherit}.table tbody{border-bottom-color:#f7f7f7}a.external:after{display:inline-block;height:.75rem;width:.75rem;margin-bottom:.15em;margin-left:.25em;content:"";vertical-align:-0.125em;background-image:url('data:image/svg+xml,');background-repeat:no-repeat;background-size:.75rem .75rem}div.sourceCode code a.external:after{content:none}a.external:after:hover{cursor:pointer}.quarto-ext-icon{display:inline-block;font-size:.75em;padding-left:.3em}.code-with-filename .code-with-filename-file{margin-bottom:0;padding-bottom:2px;padding-top:2px;padding-left:.7em;border:var(--quarto-border-width) solid var(--quarto-border-color);border-radius:var(--quarto-border-radius);border-bottom:0;border-bottom-left-radius:0%;border-bottom-right-radius:0%}.code-with-filename div.sourceCode,.reveal .code-with-filename div.sourceCode{margin-top:0;border-top-left-radius:0%;border-top-right-radius:0%}.code-with-filename .code-with-filename-file pre{margin-bottom:0}.code-with-filename .code-with-filename-file,.code-with-filename .code-with-filename-file pre{background-color:rgba(219,219,219,.8)}.quarto-dark .code-with-filename .code-with-filename-file,.quarto-dark .code-with-filename .code-with-filename-file pre{background-color:#555}.code-with-filename .code-with-filename-file strong{font-weight:400}.quarto-title-banner{margin-bottom:1em;color:#4f4f4f;background:#eee}.quarto-title-banner .code-tools-button{color:#828282}.quarto-title-banner .code-tools-button:hover{color:#4f4f4f}.quarto-title-banner .code-tools-button>.bi::before{background-image:url('data:image/svg+xml,')}.quarto-title-banner .code-tools-button:hover>.bi::before{background-image:url('data:image/svg+xml,')}.quarto-title-banner .quarto-title .title{font-weight:600}.quarto-title-banner .quarto-categories{margin-top:.75em}@media(min-width: 992px){.quarto-title-banner{padding-top:2.5em;padding-bottom:2.5em}}@media(max-width: 991.98px){.quarto-title-banner{padding-top:1em;padding-bottom:1em}}main.quarto-banner-title-block>section:first-child>h2,main.quarto-banner-title-block>section:first-child>.h2,main.quarto-banner-title-block>section:first-child>h3,main.quarto-banner-title-block>section:first-child>.h3,main.quarto-banner-title-block>section:first-child>h4,main.quarto-banner-title-block>section:first-child>.h4{margin-top:0}.quarto-title .quarto-categories{display:flex;flex-wrap:wrap;row-gap:.5em;column-gap:.4em;padding-bottom:.5em;margin-top:.75em}.quarto-title .quarto-categories .quarto-category{padding:.25em .75em;font-size:.65em;text-transform:uppercase;border:solid 1px;border-radius:.25rem;opacity:.6}.quarto-title .quarto-categories .quarto-category a{color:inherit}#title-block-header.quarto-title-block.default .quarto-title-meta{display:grid;grid-template-columns:repeat(2, 1fr)}#title-block-header.quarto-title-block.default .quarto-title .title{margin-bottom:0}#title-block-header.quarto-title-block.default .quarto-title-author-orcid img{margin-top:-5px}#title-block-header.quarto-title-block.default .quarto-description p:last-of-type{margin-bottom:0}#title-block-header.quarto-title-block.default .quarto-title-meta-contents p,#title-block-header.quarto-title-block.default .quarto-title-authors p,#title-block-header.quarto-title-block.default .quarto-title-affiliations p{margin-bottom:.1em}#title-block-header.quarto-title-block.default .quarto-title-meta-heading{text-transform:uppercase;margin-top:1em;font-size:.8em;opacity:.8;font-weight:400}#title-block-header.quarto-title-block.default .quarto-title-meta-contents{font-size:.9em}#title-block-header.quarto-title-block.default .quarto-title-meta-contents a{color:#777}#title-block-header.quarto-title-block.default .quarto-title-meta-contents p.affiliation:last-of-type{margin-bottom:.7em}#title-block-header.quarto-title-block.default p.affiliation{margin-bottom:.1em}#title-block-header.quarto-title-block.default .description,#title-block-header.quarto-title-block.default .abstract{margin-top:0}#title-block-header.quarto-title-block.default .description>p,#title-block-header.quarto-title-block.default .abstract>p{font-size:.9em}#title-block-header.quarto-title-block.default .description>p:last-of-type,#title-block-header.quarto-title-block.default .abstract>p:last-of-type{margin-bottom:0}#title-block-header.quarto-title-block.default .description .abstract-title,#title-block-header.quarto-title-block.default .abstract .abstract-title{margin-top:1em;text-transform:uppercase;font-size:.8em;opacity:.8;font-weight:400}#title-block-header.quarto-title-block.default .quarto-title-meta-author{display:grid;grid-template-columns:1fr 1fr}.quarto-title-tools-only{display:flex;justify-content:right}.navbar .nav-link,.navbar .navbar-brand{text-shadow:-1px -1px 0 rgba(0,0,0,.1);transition:color ease-in-out .2s}.navbar.bg-default{background-image:linear-gradient(#b1b1b1, #999 50%, #8d8d8d);filter:none;border:1px solid #7a7a7a}.navbar.bg-primary{background-image:linear-gradient(#7191b3, #446e9b 50%, #3f658f);filter:none;border:1px solid #36587c}.navbar.bg-secondary{background-image:linear-gradient(#b1b1b1, #999 50%, #8d8d8d);filter:none;border:1px solid #7a7a7a}.navbar.bg-success{background-image:linear-gradient(#6bc756, #3cb521 50%, #37a71e);filter:none;border:1px solid #30911a}.navbar.bg-info{background-image:linear-gradient(#64b1f6, #3399f3 50%, #2f8de0);filter:none;border:1px solid #297ac2}.navbar.bg-warning{background-image:linear-gradient(#de963d, #d47500 50%, #c36c00);filter:none;border:1px solid #aa5e00}.navbar.bg-danger{background-image:linear-gradient(#d93f3d, #cd0200 50%, #bd0200);filter:none;border:1px solid #a40200}.navbar.bg-light{background-image:linear-gradient(#f2f2f2, #eee 50%, #dbdbdb);filter:none;border:1px solid #bebebe}.navbar.bg-dark{background-image:linear-gradient(#646464, #333 50%, #2f2f2f);filter:none;border:1px solid #292929}.navbar.bg-light .nav-link,.navbar.bg-light .navbar-brand,.navbar.navbar-default .nav-link,.navbar.navbar-default .navbar-brand{text-shadow:1px 1px 0 rgba(255,255,255,.1)}.navbar.bg-light .navbar-brand,.navbar.navbar-default .navbar-brand{color:#4f4f4f}.navbar.bg-light .navbar-brand:hover,.navbar.navbar-default .navbar-brand:hover{color:#3399f3}.btn{text-shadow:-1px -1px 0 rgba(0,0,0,.1)}.btn-link{text-shadow:none}.btn-default{background-image:linear-gradient(#b1b1b1, #999 50%, #8d8d8d);filter:none;border:1px solid #7a7a7a}.btn-default:not(.disabled):hover{background-image:linear-gradient(#a8a8a8, #8d8d8d 50%, #828282);filter:none;border:1px solid #717171}.btn-primary{background-image:linear-gradient(#7191b3, #446e9b 50%, #3f658f);filter:none;border:1px solid #36587c}.btn-primary:not(.disabled):hover{background-image:linear-gradient(#6d8aaa, #3f658f 50%, #3a5d84);filter:none;border:1px solid #325172}.btn-secondary{background-image:linear-gradient(#b1b1b1, #999 50%, #8d8d8d);filter:none;border:1px solid #7a7a7a}.btn-secondary:not(.disabled):hover{background-image:linear-gradient(#a8a8a8, #8d8d8d 50%, #828282);filter:none;border:1px solid #717171}.btn-success{background-image:linear-gradient(#6bc756, #3cb521 50%, #37a71e);filter:none;border:1px solid #30911a}.btn-success:not(.disabled):hover{background-image:linear-gradient(#67bc54, #37a71e 50%, #339a1c);filter:none;border:1px solid #2c8618}.btn-info{background-image:linear-gradient(#64b1f6, #3399f3 50%, #2f8de0);filter:none;border:1px solid #297ac2}.btn-info:not(.disabled):hover{background-image:linear-gradient(#61a8e7, #2f8de0 50%, #2b82ce);filter:none;border:1px solid #2671b3}.btn-warning{background-image:linear-gradient(#de963d, #d47500 50%, #c36c00);filter:none;border:1px solid #aa5e00}.btn-warning:not(.disabled):hover{background-image:linear-gradient(#d18f3d, #c36c00 50%, #b36300);filter:none;border:1px solid #9c5600}.btn-danger{background-image:linear-gradient(#d93f3d, #cd0200 50%, #bd0200);filter:none;border:1px solid #a40200}.btn-danger:not(.disabled):hover{background-image:linear-gradient(#cd3f3d, #bd0200 50%, #ae0200);filter:none;border:1px solid #970200}.btn-light{background-image:linear-gradient(#f2f2f2, #eee 50%, #dbdbdb);filter:none;border:1px solid #bebebe}.btn-light:not(.disabled):hover{background-image:linear-gradient(#e4e4e4, #dbdbdb 50%, #c9c9c9);filter:none;border:1px solid #afafaf}.btn-dark{background-image:linear-gradient(#646464, #333 50%, #2f2f2f);filter:none;border:1px solid #292929}.btn-dark:not(.disabled):hover{background-image:linear-gradient(#616161, #2f2f2f 50%, #2b2b2b);filter:none;border:1px solid #262626}[class*=btn-outline-]{text-shadow:none}.badge.bg-light{color:#333}.card h1,.card .h1,.card h2,.card .h2,.card h3,.card .h3,.card h4,.card .h4,.card h5,.card .h5,.card h6,.card .h6,.list-group-item h1,.list-group-item .h1,.list-group-item h2,.list-group-item .h2,.list-group-item h3,.list-group-item .h3,.list-group-item h4,.list-group-item .h4,.list-group-item h5,.list-group-item .h5,.list-group-item h6,.list-group-item .h6{color:inherit}.table{width:auto}code{font-family:"Fira Code Medium",monospace}/*# sourceMappingURL=397ef2e52d54cf686e4908b90039e9db.css.map */ diff --git a/docs/index_files/libs/quarto-html/quarto-syntax-highlighting.css b/docs/index_files/libs/quarto-html/quarto-syntax-highlighting.css index 07c0488..446b4e0 100644 --- a/docs/index_files/libs/quarto-html/quarto-syntax-highlighting.css +++ b/docs/index_files/libs/quarto-html/quarto-syntax-highlighting.css @@ -38,19 +38,23 @@ pre > code.sourceCode > span { color: #657b83; + font-style: inherit; } code span { color: #657b83; + font-style: inherit; } code.sourceCode > span { color: #657b83; + font-style: inherit; } div.sourceCode, div.sourceCode pre.sourceCode { color: #657b83; + font-style: inherit; } code span.kw { @@ -157,6 +161,7 @@ code span.cv { code span.re { color: #268bd2; + background-color: #eee8d5; } code span.in { diff --git a/docs/notebooks/custom.scss b/docs/notebooks/custom.scss new file mode 100644 index 0000000..1b2c0e6 --- /dev/null +++ b/docs/notebooks/custom.scss @@ -0,0 +1,11 @@ +@import url(https://cdn.jsdelivr.net/npm/firacode@6.2.0/distr/fira_code.css); + +/*-- scss:default --*/ +$font-size-root: 0.8em; + +/*-- scss:imports --*/ + +/*-- scss:rules --*/ +.table {width:auto;} + +code {font-family: 'Fira Code Medium', monospace;} diff --git a/notebooks/column_api.clj b/notebooks/column_api.clj new file mode 100644 index 0000000..557014a --- /dev/null +++ b/notebooks/column_api.clj @@ -0,0 +1,168 @@ +^:kindly/hide-code? +(ns column-api + (:require [tablecloth.api :as tc] + [tablecloth.column.api :as tcc] + [scicloj.kindly.v4.kind :as kind :refer [md]])) + +;; ## Column API + +;; A `column` in tablecloth is a named sequence of typed data. This special type is defined in the `tech.ml.dataset`. It is roughly comparable to a R vector. + +;; ### Column Creation + +;; Empty column + +(tcc/column) + +;; Column from a vector or a sequence + +(tcc/column [1 2 3 4 5]) + +(tcc/column `(1 2 3 4 5)) + +;; #### Ones & Zeros + +;; You can also quickly create columns of ones or zeros: + +(tcc/ones 10) + +(tcc/zeros 10) + +;; #### Column? + +;; Finally, you can use the `column?` function to check if an item is a column: + +(tcc/column? [1 2 3 4 5]) +(tcc/column? (tcc/column)) + +;; Tablecloth's datasets of course consists of columns: + +(tcc/column? (-> (tc/dataset {:a [1 2 3 4 5]}) + :a)) + +;; ### Types and Type detection + +;; The default set of types for a column are defined in the underlying "tech ml" system. We can see the set here: + +(tech.v3.datatype.casting/all-datatypes) + +;; #### Typeof & Typeof? + +;; When you create a column, the underlying system will try to autodetect its type. We can see that here using the `tcc/typeof` function to check the type of a column: + +(-> (tcc/column [1 2 3 4 5]) + (tcc/typeof)) + +(-> (tcc/column [:a :b :c :d :e]) + (tcc/typeof)) + +;; Columns containing heterogenous data will receive type `:object`: + +(-> (tcc/column [1 :b 3 :c 5]) + (tcc/typeof)) + +;; You can also use the `tcc/typeof?` function to check the value of a function as an asssertion: + +(-> (tcc/column [1 2 3 4 6]) + (tcc/typeof? :boolean)) + +(-> (tcc/column [1 2 3 4 6]) + (tcc/typeof? :int64)) + +;; Tablecloth has a concept of "concrete" and "general" types. A general type is the broad category of type and the concrete type is the actual type in memory. For example, a concrete type is a 64-bit integer `:int64`, which is also of the general type `:integer`. The `typeof?` function supports checking both. + +(-> (tcc/column [1 2 3 4 6]) + (tcc/typeof? :int64)) + +(-> (tcc/column [1 2 3 4 6]) + (tcc/typeof? :integer)) + +;; ### Column Access & Manipulation + +;; #### Column Access + +;; The method for accessing a particular index position in a column is the same as for Clojure vectors: + +(-> (tcc/column [1 2 3 4 5]) + (get 3)) + +(-> (tcc/column [1 2 3 4 5]) + (nth 3)) + +;; #### Slice + +;; You can also slice a column + +(-> (tcc/column (range 10)) + (tcc/slice 5)) + +(-> (tcc/column (range 10)) + (tcc/slice 1 4)) + +(-> (tcc/column (range 10)) + (tcc/slice 0 9 2)) + +;; For clarity, the `slice` method supports the `:end` and `:start` keywords: + +(-> (tcc/column (range 10)) + (tcc/slice :start :end 2)) + +;; If you need to create a discontinuous subset of the column, you can use the `select` function. This method accepts an array of index positions or an array of booleans. When using boolean select, a true value will select the value at the index positions containing true values: + +;; #### Select + +;; Select the values at index positions 1 and 9: + +(-> (tcc/column (range 10)) + (tcc/select [1 9])) + + +;; Select the values at index positions 0 and 2 using booelan select: + +(-> (tcc/column (range 10)) + (tcc/select (tcc/column [true false true]))) + +;; #### Sort + +;; Use `sort-column` to sort a column: + +;; Default sort is in ascending order: + +(-> (tcc/column [:c :z :a :f]) + (tcc/sort-column)) + +;; You can provide the `:desc` and `:asc` keywords to change the default behavior: + +(-> (tcc/column [:c :z :a :f]) + (tcc/sort-column :desc)) + +;; You can also provide a comparator fn: + +(-> (tcc/column [{:position 2 + :text "and then stopped"} + {:position 1 + :text "I ran fast"}]) + (tcc/sort-column (fn [a b] (< (:position a) (:position b))))) + + +;; ### Column Operations + +;; The Column API contains a large number of operations. These operations all take one or more columns as an argument, and they return either a scalar value or a new column, depending on the operations. These operations all take a column as the first argument so they are easy to use with the pipe `->` macro, as with all functions in Tablecloth. + +(def a (tcc/column [20 30 40 50])) +(def b (tcc/column (range 4))) + +(tcc/- a b) + +(tcc/pow a 2) + +(tcc/* 10 (tcc/sin a)) + +(tcc/< a 35) + +;; All these operations take a column as their first argument and +;; return a column, so they can be chained easily. + +(-> a + (tcc/* b) + (tcc/< 70)) diff --git a/notebooks/index.clj b/notebooks/index.clj index 1d0ff02..8555e42 100644 --- a/notebooks/index.clj +++ b/notebooks/index.clj @@ -68,13 +68,11 @@ DS (md " -## Functionality - -### Dataset +## Dataset API Dataset is a special type which can be considered as a map of columns implemented around `tech.ml.dataset` library. Each column can be considered as named sequence of typed data. Supported types include integers, floats, string, boolean, date/time, objects etc. -#### Dataset creation +### Dataset creation Dataset can be created from various of types of Clojure structures and files: @@ -295,7 +293,7 @@ Set column name for single value. Also set the dataset name and turn off creatin (md " -#### Saving +### Saving Export dataset to a file or output stream can be done by calling `tc/write!`. Function accepts: @@ -311,7 +309,7 @@ Export dataset to a file or output stream can be done by calling `tc/write!`. Fu (md " -##### Nippy +#### Nippy ") @@ -325,7 +323,7 @@ Export dataset to a file or output stream can be done by calling `tc/write!`. Fu (md " -#### Dataset related functions +### Dataset related functions Summary functions about the dataset like number of rows, columns and basic stats. @@ -397,7 +395,7 @@ Setting a dataset name (operation is immutable). (md " -#### Columns and rows +### Columns and rows Get columns and rows as sequences. `column`, `columns` and `rows` treat grouped dataset as regular one. See `Groups` to read more about grouped datasets. @@ -508,7 +506,7 @@ Rows with elided missing values (md " -#### Single entry +### Single entry Get single value from the table using `get-in` from Clojure API or `get-entry`. First argument is column name, second is row number. ") @@ -524,7 +522,7 @@ Get single value from the table using `get-in` from Clojure API or `get-entry`. (md " -#### Printing +### Printing Dataset is printed using `dataset->str` or `print-dataset` functions. Options are the same as in `tech.ml.dataset/dataset-data->str`. Most important is `:print-line-policy` which can be one of the: `:single`, `:repl` or `:markdown`. ") @@ -1611,6 +1609,54 @@ You can also cast the type to the other one (if casting is possible): (tc/->array DS :V4 :string) (tc/->array DS :V1 :float32) +(md " +### Column Operations + +There are a large number of column operations that can be performed on the columns in your dataset. These operations are a similar set as the [Column API operations](#operations), but instead of operating directly on columns, they take a Dataset and a [`columns-selector`](#names). + +The behavior of the operations differ based on their return value: + +* If an operation would return a scalar value, then the function behaves like an aggregator and can be used in group-by expresesions. Such functions will have the general signature: + + ``` + (dataset columns-selector) => dataset + ``` + +* If an operation would return another column, then the function will not behave like an aggregator. Instead, it asks you to specify a target column, which it will add to the dataset that it returns. The signature of these functions is: + + + ``` + (ds target-col columns-selector) => dataset + ``` + +As there are a large number of operations, we will illustrate their usage. To begin with, here are some examples of operations whose result is a new column: +") + +DS + +(-> DS + (tc/+ :SUM [:V1 :V2])) + +(-> DS + (tc/* :MULTIPY [:V1 :V2])) + + +;; Now let's look at operations that would return a scalar: + +(-> DS + (tc/mean [:V1])) + +(md " +Notice that we did not supply a target column to the `mean` function. Since `mean` does not return a column, we do not provide this argument. Instead, we simply provide the dataset and a `columns-selector.` We then get back a dataset with the result. + +Now let's use this function within a grouping expression:") + +(-> DS + (tc/group-by [:V4]) + (tc/mean [:V2])) + +;; In this example, we grouped `DS` and then passed the resulting grouped Dataset directly to the `mean` operation. Since `mean` returns a scalar, it operates as an aggregator, summarizing the results of each group. + (md " ### Rows @@ -4538,6 +4584,195 @@ To get a sequence of pairs, use `split->seq` function (tc/split->seq :bootstrap {:partition-selector :partition :seed 11 :ratio 0.8 :repeats 2}) (first)) +(md " +## Column API + +A `column` in tablecloth is a named sequence of typed data. It is the building block of the `dataset` since datasets are at base just a map of columns. Like `dataset`, the `column` is defined in the `tech.ml.dataset`. In this section, we will show how you can interact with the column by itself. + +Let's begin by requiring the Column API, which we suggest you alias as `tcc`:") + +(require '[tablecloth.column.api :as tcc]) + +;; ### Creation & Identity + +;; Creating an empty column is pretty straightforward: + +(tcc/column) + +;; You can also create a Column from a vector or a sequence + +(tcc/column [1 2 3 4 5]) + +(tcc/column `(1 2 3 4 5)) + +;; You can also quickly create columns of ones or zeros: + +(tcc/ones 10) + +(tcc/zeros 10) + +;; Finally, to identify a column, you can use the `column?` function to check if an item is a column: + +(tcc/column? [1 2 3 4 5]) +(tcc/column? (tcc/column)) + +;; Tablecloth's datasets of course consists of columns: + +(tcc/column? (-> (tc/dataset {:a [1 2 3 4 5]}) + :a)) + +;; ### Datatypes + +;; The default set of types for a column are defined in the underlying "tech ml" system. We can see the set here: + +(tech.v3.datatype.casting/all-datatypes) + +;; When you create a column, the underlying system will try to autodetect its type. We can illustrate that behavior using the `tcc/typeof` function to check the type of a column: + +(-> (tcc/column [1 2 3 4 5]) + (tcc/typeof)) + +(-> (tcc/column [:a :b :c :d :e]) + (tcc/typeof)) + +;; Columns containing heterogenous data will receive type `:object`: + +(-> (tcc/column [1 :b 3 :c 5]) + (tcc/typeof)) + +;; You can also use the `tcc/typeof?` function to check the value of a function as an asssertion: + +(-> (tcc/column [1 2 3 4 6]) + (tcc/typeof? :boolean)) + +(-> (tcc/column [1 2 3 4 6]) + (tcc/typeof? :int64)) + +;; Tablecloth has a concept of "concrete" and "general" types. A general type is the broad category of type and the concrete type is the actual type in memory. For example, a concrete type is a 64-bit integer `:int64`, which is also of the general type `:integer`. + +;; The `typeof?` function supports checking both. + +(-> (tcc/column [1 2 3 4 6]) + (tcc/typeof? :int64)) + +(-> (tcc/column [1 2 3 4 6]) + (tcc/typeof? :integer)) + +;; ### Access & Manipulation + +;; #### Column Access + +;; The method for accessing a particular index position in a column is the same as for Clojure vectors: + +(-> (tcc/column [1 2 3 4 5]) + (get 3)) + +(-> (tcc/column [1 2 3 4 5]) + (nth 3)) + +;; #### Slice + +;; You can also slice a column + +(-> (tcc/column (range 10)) + (tcc/slice 5)) + +(-> (tcc/column (range 10)) + (tcc/slice 1 4)) + +(-> (tcc/column (range 10)) + (tcc/slice 0 9 2)) + +;; The `slice` method supports the `:end` and `:start` keywords, which can add clarity to your code: + +(-> (tcc/column (range 10)) + (tcc/slice :start :end 2)) + +;; #### Select + +;; If you need to create a discontinuous subset of the column, you can use the `select` function. This method accepts an array of index positions or an array of booleans. When using boolean select, a true value will select the value at the index positions containing true values: + +;; Select the values at index positions 1 and 9: + +(-> (tcc/column (range 10)) + (tcc/select [1 9])) + +;; Select the values at index positions 0 and 2 using booelan select: + +(-> (tcc/column (range 10)) + (tcc/select (tcc/column [true false true]))) + +;; The boolean select feature is particularly useful when used with the large number of operations (see [below](#operations)) that the Column API includes: + +(let [col (tcc/column (range 10))] + (-> col + (tcc/odd?) + (->> (tcc/select col)))) + +;; Here, we used the `odd?` operator to create a boolean array indicating all index positions in the Column that included an odd value. Then we pass that boolean Column to the `select` function using the `->>` to send it to the second argument position. + +;; #### Sort + +;; Use `sort-column` to sort a column: + +;; Default sort is in ascending order: + +(-> (tcc/column [:c :z :a :f]) + (tcc/sort-column)) + +;; You can provide the `:desc` and `:asc` keywords to change the default behavior: + +(-> (tcc/column [:c :z :a :f]) + (tcc/sort-column :desc)) + +;; You can also provide a comparator fn: + +(-> (tcc/column [{:position 2 + :text "and then stopped"} + {:position 1 + :text "I ran fast"}]) + (tcc/sort-column (fn [a b] (< (:position a) (:position b))))) + + +;; ### Operations + +(md " +The Column API contains a large number of operations, which have been lifted from the underlying `tech.ml.dataset` library and adapted to Tablecloth. These operations all take one or more columns as an argument, and they return either a scalar value or a new column, depending on the operation. In other words, their signature is this general form: + +``` +(column1 column2 ...) => column | scalar +``` + +Because these functions all take a column as the first argument, they are easy to use with the pipe `->` macro, as with all functions in Tablecloth. + +Given the incredibly large number of available functions, we will illustrate instead how these operations can be used. + +We'll start with two columns `a` and `b`: +") + +(def a (tcc/column [20 30 40 50])) +(def b (tcc/column (range 4))) + +;; Here is a small sampling of operator functions: + +(tcc/- a b) + +(tcc/* a b) + +(tcc// a 2) + +(tcc/pow a 2) + +(tcc/* 10 (tcc/sin a)) + +(tcc/< a 35) + +;; All these operations take a column as their first argument and +;; return a column, so they can be chained easily. + +(-> a + (tcc/* b) + (tcc/< 70)) (md " ## Pipeline @@ -4553,15 +4788,6 @@ Pipeline operations are prepared to work with [metamorph](https://github.com/sci > **Warning: Duplicated `metamorph` pipeline functions are removed from `tablecloth.pipeline` namespace.** -## Functions - -This API doesn't provide any statistical, numerical or date/time functions. Use below namespaces: - -| Namespace | functions | -|-----------|-----------| -| `tech.v3.datatype.functional` | primitive oprations, reducers, statistics | -| `tech.v3.datatype.datetime` | date/time converters and operations| - ## Other examples ### Stocks diff --git a/src/tablecloth/api.clj b/src/tablecloth/api.clj index a4fedfb..49d3120 100644 --- a/src/tablecloth/api.clj +++ b/src/tablecloth/api.clj @@ -10,6 +10,7 @@ [tablecloth.api.join-concat-ds] [tablecloth.api.join-separate] [tablecloth.api.missing] + [tablecloth.api.operators] [tablecloth.api.order-by] [tablecloth.api.reshape] [tablecloth.api.rows] @@ -21,6 +22,48 @@ [tech.v3.datatype]) (:refer-clojure :exclude [group-by drop concat rand-nth first last shuffle])) +(defn * + "Applies the operation tablecloth.column.api.operators/* to the columns selected by + `columns-selector` and returns a new ds with the the result in + `target-col`. null + + `columns-selector can be: + - name + - sequence of names + - map of names with new names (rename) + - function which filter names (via column metadata)" + ([ds target-col columns-selector] + (tablecloth.api.operators/* ds target-col columns-selector))) + + +(defn + + "Applies the operation tablecloth.column.api.operators/+ to the columns selected by + `columns-selector` and returns a new ds with the the result in + `target-col`. null + + `columns-selector can be: + - name + - sequence of names + - map of names with new names (rename) + - function which filter names (via column metadata)" + ([ds target-col columns-selector] + (tablecloth.api.operators/+ ds target-col columns-selector))) + + +(defn - + "Applies the operation tablecloth.column.api.operators/- to the columns selected by + `columns-selector` and returns a new ds with the the result in + `target-col`. null + + `columns-selector can be: + - name + - sequence of names + - map of names with new names (rename) + - function which filter names (via column metadata)" + ([ds target-col columns-selector] + (tablecloth.api.operators/- ds target-col columns-selector))) + + (defn ->array "Convert numerical column(s) to java array" ([ds colname] @@ -29,6 +72,114 @@ (tablecloth.api.columns/->array ds colname datatype))) +(defn / + "Applies the operation tablecloth.column.api.operators// to the columns selected by + `columns-selector` and returns a new ds with the the result in + `target-col`. null + + `columns-selector can be: + - name + - sequence of names + - map of names with new names (rename) + - function which filter names (via column metadata)" + ([ds target-col columns-selector] + (tablecloth.api.operators// ds target-col columns-selector))) + + +(defn < + "Applies the operation tablecloth.column.api.operators/< to the columns selected by + `columns-selector` and returns a new ds with the the result in + `target-col`. This operation takes a maximum of 3 columns, so + `columns-selector` can yield no more than that many columns. + + `columns-selector can be: + - name + - sequence of names + - map of names with new names (rename) + - function which filter names (via column metadata)" + ([ds target-col columns-selector] + (tablecloth.api.operators/< ds target-col columns-selector))) + + +(defn <= + "Applies the operation tablecloth.column.api.operators/<= to the columns selected by + `columns-selector` and returns a new ds with the the result in + `target-col`. This operation takes a maximum of 3 columns, so + `columns-selector` can yield no more than that many columns. + + `columns-selector can be: + - name + - sequence of names + - map of names with new names (rename) + - function which filter names (via column metadata)" + ([ds target-col columns-selector] + (tablecloth.api.operators/<= ds target-col columns-selector))) + + +(defn > + "Applies the operation tablecloth.column.api.operators/> to the columns selected by + `columns-selector` and returns a new ds with the the result in + `target-col`. This operation takes a maximum of 3 columns, so + `columns-selector` can yield no more than that many columns. + + `columns-selector can be: + - name + - sequence of names + - map of names with new names (rename) + - function which filter names (via column metadata)" + ([ds target-col columns-selector] + (tablecloth.api.operators/> ds target-col columns-selector))) + + +(defn >= + "Applies the operation tablecloth.column.api.operators/>= to the columns selected by + `columns-selector` and returns a new ds with the the result in + `target-col`. This operation takes a maximum of 3 columns, so + `columns-selector` can yield no more than that many columns. + + `columns-selector can be: + - name + - sequence of names + - map of names with new names (rename) + - function which filter names (via column metadata)" + ([ds target-col columns-selector] + (tablecloth.api.operators/>= ds target-col columns-selector))) + + +(defn abs + "Applies the operation tablecloth.column.api.operators/abs to the columns selected by + `columns-selector` and returns a new ds with the the result in + `target-col`. This operation takes a maximum of 1 columns, so + `columns-selector` can yield no more than that many columns. + + `columns-selector can be: + - name + - sequence of names + - map of names with new names (rename) + - function which filter names (via column metadata)" + ([ds target-col columns-selector options] + (tablecloth.api.operators/abs ds target-col columns-selector options)) + ([ds target-col columns-selector] + (tablecloth.api.operators/abs ds target-col columns-selector))) + + +(defn acos + "Applies the operation tablecloth.column.api.operators/acos to the columns selected by + `columns-selector` and returns a new ds with the the result in + `target-col`. This operation takes a maximum of 1 columns, so + `columns-selector` can yield no more than that many columns. + + `columns-selector can be: + - name + - sequence of names + - map of names with new names (rename) + - function which filter names (via column metadata)" + ([ds target-col columns-selector options] + (tablecloth.api.operators/acos ds target-col columns-selector options)) + ([ds target-col columns-selector] + (tablecloth.api.operators/acos ds target-col columns-selector))) + + (defn add-column "Add or update (modify) column under `column-name`. @@ -96,6 +247,21 @@ (tablecloth.api.aggregate/aggregate-columns ds columns-selector column-aggregators options))) +(defn and + "Applies the operation tablecloth.column.api.operators/and to the columns selected by + `columns-selector` and returns a new ds with the the result in + `target-col`. This operation takes a maximum of 2 columns, so + `columns-selector` can yield no more than that many columns. + + `columns-selector can be: + - name + - sequence of names + - map of names with new names (rename) + - function which filter names (via column metadata)" + ([ds target-col columns-selector] + (tablecloth.api.operators/and ds target-col columns-selector))) + + (defn anti-join ([ds-left ds-right columns-selector] (tablecloth.api.join-concat-ds/anti-join ds-left ds-right columns-selector)) @@ -131,6 +297,23 @@ (tablecloth.api.utils/as-regular-dataset ds))) +(defn asin + "Applies the operation tablecloth.column.api.operators/asin to the columns selected by + `columns-selector` and returns a new ds with the the result in + `target-col`. This operation takes a maximum of 1 columns, so + `columns-selector` can yield no more than that many columns. + + `columns-selector can be: + - name + - sequence of names + - map of names with new names (rename) + - function which filter names (via column metadata)" + ([ds target-col columns-selector options] + (tablecloth.api.operators/asin ds target-col columns-selector options)) + ([ds target-col columns-selector] + (tablecloth.api.operators/asin ds target-col columns-selector))) + + (defn asof-join ([ds-left ds-right columns-selector] (tablecloth.api.join-concat-ds/asof-join ds-left ds-right columns-selector)) @@ -138,11 +321,185 @@ (tablecloth.api.join-concat-ds/asof-join ds-left ds-right columns-selector options))) +(defn atan + "Applies the operation tablecloth.column.api.operators/atan to the columns selected by + `columns-selector` and returns a new ds with the the result in + `target-col`. This operation takes a maximum of 1 columns, so + `columns-selector` can yield no more than that many columns. + + `columns-selector can be: + - name + - sequence of names + - map of names with new names (rename) + - function which filter names (via column metadata)" + ([ds target-col columns-selector options] + (tablecloth.api.operators/atan ds target-col columns-selector options)) + ([ds target-col columns-selector] + (tablecloth.api.operators/atan ds target-col columns-selector))) + + +(defn atan2 + "Applies the operation tablecloth.column.api.operators/atan2 to the columns selected by + `columns-selector` and returns a new ds with the the result in + `target-col`. null + + `columns-selector can be: + - name + - sequence of names + - map of names with new names (rename) + - function which filter names (via column metadata)" + ([ds target-col columns-selector] + (tablecloth.api.operators/atan2 ds target-col columns-selector))) + + (defn bind ([ds & args] (apply tablecloth.api.join-concat-ds/bind ds args))) +(defn bit-and + "Applies the operation tablecloth.column.api.operators/bit-and to the columns selected by + `columns-selector` and returns a new ds with the the result in + `target-col`. null + + `columns-selector can be: + - name + - sequence of names + - map of names with new names (rename) + - function which filter names (via column metadata)" + ([ds target-col columns-selector] + (tablecloth.api.operators/bit-and ds target-col columns-selector))) + + +(defn bit-and-not + "Applies the operation tablecloth.column.api.operators/bit-and-not to the columns selected by + `columns-selector` and returns a new ds with the the result in + `target-col`. null + + `columns-selector can be: + - name + - sequence of names + - map of names with new names (rename) + - function which filter names (via column metadata)" + ([ds target-col columns-selector] + (tablecloth.api.operators/bit-and-not ds target-col columns-selector))) + + +(defn bit-clear + "Applies the operation tablecloth.column.api.operators/bit-clear to the columns selected by + `columns-selector` and returns a new ds with the the result in + `target-col`. null + + `columns-selector can be: + - name + - sequence of names + - map of names with new names (rename) + - function which filter names (via column metadata)" + ([ds target-col columns-selector] + (tablecloth.api.operators/bit-clear ds target-col columns-selector))) + + +(defn bit-flip + "Applies the operation tablecloth.column.api.operators/bit-flip to the columns selected by + `columns-selector` and returns a new ds with the the result in + `target-col`. null + + `columns-selector can be: + - name + - sequence of names + - map of names with new names (rename) + - function which filter names (via column metadata)" + ([ds target-col columns-selector] + (tablecloth.api.operators/bit-flip ds target-col columns-selector))) + + +(defn bit-not + "Applies the operation tablecloth.column.api.operators/bit-not to the columns selected by + `columns-selector` and returns a new ds with the the result in + `target-col`. This operation takes a maximum of 1 columns, so + `columns-selector` can yield no more than that many columns. + + `columns-selector can be: + - name + - sequence of names + - map of names with new names (rename) + - function which filter names (via column metadata)" + ([ds target-col columns-selector options] + (tablecloth.api.operators/bit-not ds target-col columns-selector options)) + ([ds target-col columns-selector] + (tablecloth.api.operators/bit-not ds target-col columns-selector))) + + +(defn bit-or + "Applies the operation tablecloth.column.api.operators/bit-or to the columns selected by + `columns-selector` and returns a new ds with the the result in + `target-col`. null + + `columns-selector can be: + - name + - sequence of names + - map of names with new names (rename) + - function which filter names (via column metadata)" + ([ds target-col columns-selector] + (tablecloth.api.operators/bit-or ds target-col columns-selector))) + + +(defn bit-set + "Applies the operation tablecloth.column.api.operators/bit-set to the columns selected by + `columns-selector` and returns a new ds with the the result in + `target-col`. null + + `columns-selector can be: + - name + - sequence of names + - map of names with new names (rename) + - function which filter names (via column metadata)" + ([ds target-col columns-selector] + (tablecloth.api.operators/bit-set ds target-col columns-selector))) + + +(defn bit-shift-left + "Applies the operation tablecloth.column.api.operators/bit-shift-left to the columns selected by + `columns-selector` and returns a new ds with the the result in + `target-col`. null + + `columns-selector can be: + - name + - sequence of names + - map of names with new names (rename) + - function which filter names (via column metadata)" + ([ds target-col columns-selector] + (tablecloth.api.operators/bit-shift-left ds target-col columns-selector))) + + +(defn bit-shift-right + "Applies the operation tablecloth.column.api.operators/bit-shift-right to the columns selected by + `columns-selector` and returns a new ds with the the result in + `target-col`. null + + `columns-selector can be: + - name + - sequence of names + - map of names with new names (rename) + - function which filter names (via column metadata)" + ([ds target-col columns-selector] + (tablecloth.api.operators/bit-shift-right ds target-col columns-selector))) + + +(defn bit-xor + "Applies the operation tablecloth.column.api.operators/bit-xor to the columns selected by + `columns-selector` and returns a new ds with the the result in + `target-col`. null + + `columns-selector can be: + - name + - sequence of names + - map of names with new names (rename) + - function which filter names (via column metadata)" + ([ds target-col columns-selector] + (tablecloth.api.operators/bit-xor ds target-col columns-selector))) + + (defn by-rank "Select rows using `rank` on a column, ties are resolved using `:dense` method. @@ -159,6 +516,40 @@ (tablecloth.api.rows/by-rank ds columns-selector rank-predicate options))) +(defn cbrt + "Applies the operation tablecloth.column.api.operators/cbrt to the columns selected by + `columns-selector` and returns a new ds with the the result in + `target-col`. This operation takes a maximum of 1 columns, so + `columns-selector` can yield no more than that many columns. + + `columns-selector can be: + - name + - sequence of names + - map of names with new names (rename) + - function which filter names (via column metadata)" + ([ds target-col columns-selector options] + (tablecloth.api.operators/cbrt ds target-col columns-selector options)) + ([ds target-col columns-selector] + (tablecloth.api.operators/cbrt ds target-col columns-selector))) + + +(defn ceil + "Applies the operation tablecloth.column.api.operators/ceil to the columns selected by + `columns-selector` and returns a new ds with the the result in + `target-col`. This operation takes a maximum of 1 columns, so + `columns-selector` can yield no more than that many columns. + + `columns-selector can be: + - name + - sequence of names + - map of names with new names (rename) + - function which filter names (via column metadata)" + ([ds target-col columns-selector options] + (tablecloth.api.operators/ceil ds target-col columns-selector options)) + ([ds target-col columns-selector] + (tablecloth.api.operators/ceil ds target-col columns-selector))) + + (defn clone "Clone an object. Can clone anything convertible to a reader." ([item] @@ -266,6 +657,40 @@ column-names function returns names according to columns-selector (tablecloth.api.columns/convert-types ds columns-selector new-types))) +(defn cos + "Applies the operation tablecloth.column.api.operators/cos to the columns selected by + `columns-selector` and returns a new ds with the the result in + `target-col`. This operation takes a maximum of 1 columns, so + `columns-selector` can yield no more than that many columns. + + `columns-selector can be: + - name + - sequence of names + - map of names with new names (rename) + - function which filter names (via column metadata)" + ([ds target-col columns-selector options] + (tablecloth.api.operators/cos ds target-col columns-selector options)) + ([ds target-col columns-selector] + (tablecloth.api.operators/cos ds target-col columns-selector))) + + +(defn cosh + "Applies the operation tablecloth.column.api.operators/cosh to the columns selected by + `columns-selector` and returns a new ds with the the result in + `target-col`. This operation takes a maximum of 1 columns, so + `columns-selector` can yield no more than that many columns. + + `columns-selector can be: + - name + - sequence of names + - map of names with new names (rename) + - function which filter names (via column metadata)" + ([ds target-col columns-selector options] + (tablecloth.api.operators/cosh ds target-col columns-selector options)) + ([ds target-col columns-selector] + (tablecloth.api.operators/cosh ds target-col columns-selector))) + + (defn cross-join "Cross product from selected columns" ([ds-left ds-right] @@ -294,6 +719,74 @@ column-names function returns names according to columns-selector (tablecloth.api.aggregate/crosstab ds row-selector col-selector options))) +(defn cummax + "Applies the operation tablecloth.column.api.operators/cummax to the columns selected by + `columns-selector` and returns a new ds with the the result in + `target-col`. This operation takes a maximum of 1 columns, so + `columns-selector` can yield no more than that many columns. + + `columns-selector can be: + - name + - sequence of names + - map of names with new names (rename) + - function which filter names (via column metadata)" + ([ds target-col columns-selector options] + (tablecloth.api.operators/cummax ds target-col columns-selector options)) + ([ds target-col columns-selector] + (tablecloth.api.operators/cummax ds target-col columns-selector))) + + +(defn cummin + "Applies the operation tablecloth.column.api.operators/cummin to the columns selected by + `columns-selector` and returns a new ds with the the result in + `target-col`. This operation takes a maximum of 1 columns, so + `columns-selector` can yield no more than that many columns. + + `columns-selector can be: + - name + - sequence of names + - map of names with new names (rename) + - function which filter names (via column metadata)" + ([ds target-col columns-selector options] + (tablecloth.api.operators/cummin ds target-col columns-selector options)) + ([ds target-col columns-selector] + (tablecloth.api.operators/cummin ds target-col columns-selector))) + + +(defn cumprod + "Applies the operation tablecloth.column.api.operators/cumprod to the columns selected by + `columns-selector` and returns a new ds with the the result in + `target-col`. This operation takes a maximum of 1 columns, so + `columns-selector` can yield no more than that many columns. + + `columns-selector can be: + - name + - sequence of names + - map of names with new names (rename) + - function which filter names (via column metadata)" + ([ds target-col columns-selector options] + (tablecloth.api.operators/cumprod ds target-col columns-selector options)) + ([ds target-col columns-selector] + (tablecloth.api.operators/cumprod ds target-col columns-selector))) + + +(defn cumsum + "Applies the operation tablecloth.column.api.operators/cumsum to the columns selected by + `columns-selector` and returns a new ds with the the result in + `target-col`. This operation takes a maximum of 1 columns, so + `columns-selector` can yield no more than that many columns. + + `columns-selector can be: + - name + - sequence of names + - map of names with new names (rename) + - function which filter names (via column metadata)" + ([ds target-col columns-selector options] + (tablecloth.api.operators/cumsum ds target-col columns-selector options)) + ([ds target-col columns-selector] + (tablecloth.api.operators/cumsum ds target-col columns-selector))) + + (defn dataset "Create a `dataset`. @@ -448,6 +941,51 @@ column-names function returns names according to columns-selector (tablecloth.api.join-concat-ds/difference ds-left ds-right options))) +(defn distance + "Applies the operation tablecloth.column.api.operators/distance to the columns selected by + `columns-selector` and returns a new ds with the the result in + `target-col`. This operation takes a maximum of 2 columns, so + `columns-selector` can yield no more than that many columns. + + `columns-selector can be: + - name + - sequence of names + - map of names with new names (rename) + - function which filter names (via column metadata)" + ([ds columns-selector] + (tablecloth.api.operators/distance ds columns-selector))) + + +(defn distance-squared + "Applies the operation tablecloth.column.api.operators/distance-squared to the columns selected by + `columns-selector` and returns a new ds with the the result in + `target-col`. This operation takes a maximum of 2 columns, so + `columns-selector` can yield no more than that many columns. + + `columns-selector can be: + - name + - sequence of names + - map of names with new names (rename) + - function which filter names (via column metadata)" + ([ds columns-selector] + (tablecloth.api.operators/distance-squared ds columns-selector))) + + +(defn dot-product + "Applies the operation tablecloth.column.api.operators/dot-product to the columns selected by + `columns-selector` and returns a new ds with the the result in + `target-col`. This operation takes a maximum of 2 columns, so + `columns-selector` can yield no more than that many columns. + + `columns-selector can be: + - name + - sequence of names + - map of names with new names (rename) + - function which filter names (via column metadata)" + ([ds columns-selector] + (tablecloth.api.operators/dot-product ds columns-selector))) + + (defn drop "Drop columns and rows." ([ds columns-selector rows-selector] @@ -499,6 +1037,55 @@ column-names function returns names according to columns-selector (tablecloth.api.dataset/empty-ds? ds))) +(defn eq + "Applies the operation tablecloth.column.api.operators/eq to the columns selected by + `columns-selector` and returns a new ds with the the result in + `target-col`. This operation takes a maximum of 2 columns, so + `columns-selector` can yield no more than that many columns. + + `columns-selector can be: + - name + - sequence of names + - map of names with new names (rename) + - function which filter names (via column metadata)" + ([ds target-col columns-selector] + (tablecloth.api.operators/eq ds target-col columns-selector))) + + +(defn even? + "Applies the operation tablecloth.column.api.operators/even? to the columns selected by + `columns-selector` and returns a new ds with the the result in + `target-col`. This operation takes a maximum of 1 columns, so + `columns-selector` can yield no more than that many columns. + + `columns-selector can be: + - name + - sequence of names + - map of names with new names (rename) + - function which filter names (via column metadata)" + ([ds target-col columns-selector options] + (tablecloth.api.operators/even? ds target-col columns-selector options)) + ([ds target-col columns-selector] + (tablecloth.api.operators/even? ds target-col columns-selector))) + + +(defn exp + "Applies the operation tablecloth.column.api.operators/exp to the columns selected by + `columns-selector` and returns a new ds with the the result in + `target-col`. This operation takes a maximum of 1 columns, so + `columns-selector` can yield no more than that many columns. + + `columns-selector can be: + - name + - sequence of names + - map of names with new names (rename) + - function which filter names (via column metadata)" + ([ds target-col columns-selector options] + (tablecloth.api.operators/exp ds target-col columns-selector options)) + ([ds target-col columns-selector] + (tablecloth.api.operators/exp ds target-col columns-selector))) + + (defn expand "TidyR expand. @@ -507,6 +1094,23 @@ column-names function returns names according to columns-selector (apply tablecloth.api.join-concat-ds/expand ds columns-selector args))) +(defn expm1 + "Applies the operation tablecloth.column.api.operators/expm1 to the columns selected by + `columns-selector` and returns a new ds with the the result in + `target-col`. This operation takes a maximum of 1 columns, so + `columns-selector` can yield no more than that many columns. + + `columns-selector can be: + - name + - sequence of names + - map of names with new names (rename) + - function which filter names (via column metadata)" + ([ds target-col columns-selector options] + (tablecloth.api.operators/expm1 ds target-col columns-selector options)) + ([ds target-col columns-selector] + (tablecloth.api.operators/expm1 ds target-col columns-selector))) + + (defn fill-range-replace "Fill missing up with lacking values. Accepts * dataset @@ -523,12 +1127,46 @@ column-names function returns names according to columns-selector (tablecloth.api.missing/fill-range-replace ds colname max-span missing-strategy missing-value))) +(defn finite? + "Applies the operation tablecloth.column.api.operators/finite? to the columns selected by + `columns-selector` and returns a new ds with the the result in + `target-col`. This operation takes a maximum of 1 columns, so + `columns-selector` can yield no more than that many columns. + + `columns-selector can be: + - name + - sequence of names + - map of names with new names (rename) + - function which filter names (via column metadata)" + ([ds target-col columns-selector options] + (tablecloth.api.operators/finite? ds target-col columns-selector options)) + ([ds target-col columns-selector] + (tablecloth.api.operators/finite? ds target-col columns-selector))) + + (defn first "First row" ([ds] (tablecloth.api.rows/first ds))) +(defn floor + "Applies the operation tablecloth.column.api.operators/floor to the columns selected by + `columns-selector` and returns a new ds with the the result in + `target-col`. This operation takes a maximum of 1 columns, so + `columns-selector` can yield no more than that many columns. + + `columns-selector can be: + - name + - sequence of names + - map of names with new names (rename) + - function which filter names (via column metadata)" + ([ds target-col columns-selector options] + (tablecloth.api.operators/floor ds target-col columns-selector options)) + ([ds target-col columns-selector] + (tablecloth.api.operators/floor ds target-col columns-selector))) + + (defn fold-by "Group-by and pack columns into vector - the output data set has a row for each unique combination of the provided columns while each remaining column has its valu(es) collected into a vector, similar @@ -554,6 +1192,23 @@ column-names function returns names according to columns-selector (tablecloth.api.dataset/get-entry ds column row))) +(defn get-significand + "Applies the operation tablecloth.column.api.operators/get-significand to the columns selected by + `columns-selector` and returns a new ds with the the result in + `target-col`. This operation takes a maximum of 1 columns, so + `columns-selector` can yield no more than that many columns. + + `columns-selector can be: + - name + - sequence of names + - map of names with new names (rename) + - function which filter names (via column metadata)" + ([ds target-col columns-selector options] + (tablecloth.api.operators/get-significand ds target-col columns-selector options)) + ([ds target-col columns-selector] + (tablecloth.api.operators/get-significand ds target-col columns-selector))) + + (defn group-by "Group dataset by: @@ -610,6 +1265,68 @@ column-names function returns names according to columns-selector (tablecloth.api.rows/head ds n))) +(defn hypot + "Applies the operation tablecloth.column.api.operators/hypot to the columns selected by + `columns-selector` and returns a new ds with the the result in + `target-col`. null + + `columns-selector can be: + - name + - sequence of names + - map of names with new names (rename) + - function which filter names (via column metadata)" + ([ds target-col columns-selector] + (tablecloth.api.operators/hypot ds target-col columns-selector))) + + +(defn identity + "Applies the operation tablecloth.column.api.operators/identity to the columns selected by + `columns-selector` and returns a new ds with the the result in + `target-col`. This operation takes a maximum of 1 columns, so + `columns-selector` can yield no more than that many columns. + + `columns-selector can be: + - name + - sequence of names + - map of names with new names (rename) + - function which filter names (via column metadata)" + ([ds target-col columns-selector options] + (tablecloth.api.operators/identity ds target-col columns-selector options)) + ([ds target-col columns-selector] + (tablecloth.api.operators/identity ds target-col columns-selector))) + + +(defn ieee-remainder + "Applies the operation tablecloth.column.api.operators/ieee-remainder to the columns selected by + `columns-selector` and returns a new ds with the the result in + `target-col`. null + + `columns-selector can be: + - name + - sequence of names + - map of names with new names (rename) + - function which filter names (via column metadata)" + ([ds target-col columns-selector] + (tablecloth.api.operators/ieee-remainder ds target-col columns-selector))) + + +(defn infinite? + "Applies the operation tablecloth.column.api.operators/infinite? to the columns selected by + `columns-selector` and returns a new ds with the the result in + `target-col`. This operation takes a maximum of 1 columns, so + `columns-selector` can yield no more than that many columns. + + `columns-selector can be: + - name + - sequence of names + - map of names with new names (rename) + - function which filter names (via column metadata)" + ([ds target-col columns-selector options] + (tablecloth.api.operators/infinite? ds target-col columns-selector options)) + ([ds target-col columns-selector] + (tablecloth.api.operators/infinite? ds target-col columns-selector))) + + (defn info "Returns a statistcial information about the columns of a dataset. `result-type ` can be :descriptive or :columns" @@ -652,6 +1369,23 @@ column-names function returns names according to columns-selector (tablecloth.api.join-separate/join-columns ds target-column columns-selector conf))) +(defn kurtosis + "Applies the operation tablecloth.column.api.operators/kurtosis to the columns selected by + `columns-selector` and returns a new ds with the the result in + `target-col`. This operation takes a maximum of 1 columns, so + `columns-selector` can yield no more than that many columns. + + `columns-selector can be: + - name + - sequence of names + - map of names with new names (rename) + - function which filter names (via column metadata)" + ([ds columns-selector options] + (tablecloth.api.operators/kurtosis ds columns-selector options)) + ([ds columns-selector] + (tablecloth.api.operators/kurtosis ds columns-selector))) + + (defn last "Last row" ([ds] @@ -672,6 +1406,104 @@ column-names function returns names according to columns-selector `(tablecloth.api.api-template/let-dataset ~bindings ~options))) +(defn log + "Applies the operation tablecloth.column.api.operators/log to the columns selected by + `columns-selector` and returns a new ds with the the result in + `target-col`. This operation takes a maximum of 1 columns, so + `columns-selector` can yield no more than that many columns. + + `columns-selector can be: + - name + - sequence of names + - map of names with new names (rename) + - function which filter names (via column metadata)" + ([ds target-col columns-selector options] + (tablecloth.api.operators/log ds target-col columns-selector options)) + ([ds target-col columns-selector] + (tablecloth.api.operators/log ds target-col columns-selector))) + + +(defn log10 + "Applies the operation tablecloth.column.api.operators/log10 to the columns selected by + `columns-selector` and returns a new ds with the the result in + `target-col`. This operation takes a maximum of 1 columns, so + `columns-selector` can yield no more than that many columns. + + `columns-selector can be: + - name + - sequence of names + - map of names with new names (rename) + - function which filter names (via column metadata)" + ([ds target-col columns-selector options] + (tablecloth.api.operators/log10 ds target-col columns-selector options)) + ([ds target-col columns-selector] + (tablecloth.api.operators/log10 ds target-col columns-selector))) + + +(defn log1p + "Applies the operation tablecloth.column.api.operators/log1p to the columns selected by + `columns-selector` and returns a new ds with the the result in + `target-col`. This operation takes a maximum of 1 columns, so + `columns-selector` can yield no more than that many columns. + + `columns-selector can be: + - name + - sequence of names + - map of names with new names (rename) + - function which filter names (via column metadata)" + ([ds target-col columns-selector options] + (tablecloth.api.operators/log1p ds target-col columns-selector options)) + ([ds target-col columns-selector] + (tablecloth.api.operators/log1p ds target-col columns-selector))) + + +(defn logistic + "Applies the operation tablecloth.column.api.operators/logistic to the columns selected by + `columns-selector` and returns a new ds with the the result in + `target-col`. This operation takes a maximum of 1 columns, so + `columns-selector` can yield no more than that many columns. + + `columns-selector can be: + - name + - sequence of names + - map of names with new names (rename) + - function which filter names (via column metadata)" + ([ds target-col columns-selector options] + (tablecloth.api.operators/logistic ds target-col columns-selector options)) + ([ds target-col columns-selector] + (tablecloth.api.operators/logistic ds target-col columns-selector))) + + +(defn magnitude + "Applies the operation tablecloth.column.api.operators/magnitude to the columns selected by + `columns-selector` and returns a new ds with the the result in + `target-col`. This operation takes a maximum of 1 columns, so + `columns-selector` can yield no more than that many columns. + + `columns-selector can be: + - name + - sequence of names + - map of names with new names (rename) + - function which filter names (via column metadata)" + ([ds columns-selector] + (tablecloth.api.operators/magnitude ds columns-selector))) + + +(defn magnitude-squared + "Applies the operation tablecloth.column.api.operators/magnitude-squared to the columns selected by + `columns-selector` and returns a new ds with the the result in + `target-col`. This operation takes a maximum of 1 columns, so + `columns-selector` can yield no more than that many columns. + + `columns-selector can be: + - name + - sequence of names + - map of names with new names (rename) + - function which filter names (via column metadata)" + ([ds columns-selector] + (tablecloth.api.operators/magnitude-squared ds columns-selector))) + + (defn map-columns "Map over rows using a map function. The arity should match the columns selected." ([ds column-name map-fn] @@ -696,6 +1528,247 @@ column-names function returns names according to columns-selector (tablecloth.api.utils/mark-as-group ds))) +(defn mathematical-integer? + "Applies the operation tablecloth.column.api.operators/mathematical-integer? to the columns selected by + `columns-selector` and returns a new ds with the the result in + `target-col`. This operation takes a maximum of 1 columns, so + `columns-selector` can yield no more than that many columns. + + `columns-selector can be: + - name + - sequence of names + - map of names with new names (rename) + - function which filter names (via column metadata)" + ([ds target-col columns-selector options] + (tablecloth.api.operators/mathematical-integer? ds target-col columns-selector options)) + ([ds target-col columns-selector] + (tablecloth.api.operators/mathematical-integer? ds target-col columns-selector))) + + +(defn max + "Applies the operation tablecloth.column.api.operators/max to the columns selected by + `columns-selector` and returns a new ds with the the result in + `target-col`. null + + `columns-selector can be: + - name + - sequence of names + - map of names with new names (rename) + - function which filter names (via column metadata)" + ([ds target-col columns-selector] + (tablecloth.api.operators/max ds target-col columns-selector))) + + +(defn mean + "Applies the operation tablecloth.column.api.operators/mean to the columns selected by + `columns-selector` and returns a new ds with the the result in + `target-col`. This operation takes a maximum of 1 columns, so + `columns-selector` can yield no more than that many columns. + + `columns-selector can be: + - name + - sequence of names + - map of names with new names (rename) + - function which filter names (via column metadata)" + ([ds columns-selector options] + (tablecloth.api.operators/mean ds columns-selector options)) + ([ds columns-selector] + (tablecloth.api.operators/mean ds columns-selector))) + + +(defn mean-fast + "Applies the operation tablecloth.column.api.operators/mean-fast to the columns selected by + `columns-selector` and returns a new ds with the the result in + `target-col`. This operation takes a maximum of 1 columns, so + `columns-selector` can yield no more than that many columns. + + `columns-selector can be: + - name + - sequence of names + - map of names with new names (rename) + - function which filter names (via column metadata)" + ([ds columns-selector] + (tablecloth.api.operators/mean-fast ds columns-selector))) + + +(defn median + "Applies the operation tablecloth.column.api.operators/median to the columns selected by + `columns-selector` and returns a new ds with the the result in + `target-col`. This operation takes a maximum of 1 columns, so + `columns-selector` can yield no more than that many columns. + + `columns-selector can be: + - name + - sequence of names + - map of names with new names (rename) + - function which filter names (via column metadata)" + ([ds columns-selector options] + (tablecloth.api.operators/median ds columns-selector options)) + ([ds columns-selector] + (tablecloth.api.operators/median ds columns-selector))) + + +(defn min + "Applies the operation tablecloth.column.api.operators/min to the columns selected by + `columns-selector` and returns a new ds with the the result in + `target-col`. null + + `columns-selector can be: + - name + - sequence of names + - map of names with new names (rename) + - function which filter names (via column metadata)" + ([ds target-col columns-selector] + (tablecloth.api.operators/min ds target-col columns-selector))) + + +(defn nan? + "Applies the operation tablecloth.column.api.operators/nan? to the columns selected by + `columns-selector` and returns a new ds with the the result in + `target-col`. This operation takes a maximum of 1 columns, so + `columns-selector` can yield no more than that many columns. + + `columns-selector can be: + - name + - sequence of names + - map of names with new names (rename) + - function which filter names (via column metadata)" + ([ds target-col columns-selector options] + (tablecloth.api.operators/nan? ds target-col columns-selector options)) + ([ds target-col columns-selector] + (tablecloth.api.operators/nan? ds target-col columns-selector))) + + +(defn neg? + "Applies the operation tablecloth.column.api.operators/neg? to the columns selected by + `columns-selector` and returns a new ds with the the result in + `target-col`. This operation takes a maximum of 1 columns, so + `columns-selector` can yield no more than that many columns. + + `columns-selector can be: + - name + - sequence of names + - map of names with new names (rename) + - function which filter names (via column metadata)" + ([ds target-col columns-selector options] + (tablecloth.api.operators/neg? ds target-col columns-selector options)) + ([ds target-col columns-selector] + (tablecloth.api.operators/neg? ds target-col columns-selector))) + + +(defn next-down + "Applies the operation tablecloth.column.api.operators/next-down to the columns selected by + `columns-selector` and returns a new ds with the the result in + `target-col`. This operation takes a maximum of 1 columns, so + `columns-selector` can yield no more than that many columns. + + `columns-selector can be: + - name + - sequence of names + - map of names with new names (rename) + - function which filter names (via column metadata)" + ([ds target-col columns-selector options] + (tablecloth.api.operators/next-down ds target-col columns-selector options)) + ([ds target-col columns-selector] + (tablecloth.api.operators/next-down ds target-col columns-selector))) + + +(defn next-up + "Applies the operation tablecloth.column.api.operators/next-up to the columns selected by + `columns-selector` and returns a new ds with the the result in + `target-col`. This operation takes a maximum of 1 columns, so + `columns-selector` can yield no more than that many columns. + + `columns-selector can be: + - name + - sequence of names + - map of names with new names (rename) + - function which filter names (via column metadata)" + ([ds target-col columns-selector options] + (tablecloth.api.operators/next-up ds target-col columns-selector options)) + ([ds target-col columns-selector] + (tablecloth.api.operators/next-up ds target-col columns-selector))) + + +(defn normalize + "Applies the operation tablecloth.column.api.operators/normalize to the columns selected by + `columns-selector` and returns a new ds with the the result in + `target-col`. This operation takes a maximum of 1 columns, so + `columns-selector` can yield no more than that many columns. + + `columns-selector can be: + - name + - sequence of names + - map of names with new names (rename) + - function which filter names (via column metadata)" + ([ds target-col columns-selector] + (tablecloth.api.operators/normalize ds target-col columns-selector))) + + +(defn not + "Applies the operation tablecloth.column.api.operators/not to the columns selected by + `columns-selector` and returns a new ds with the the result in + `target-col`. This operation takes a maximum of 1 columns, so + `columns-selector` can yield no more than that many columns. + + `columns-selector can be: + - name + - sequence of names + - map of names with new names (rename) + - function which filter names (via column metadata)" + ([ds target-col columns-selector options] + (tablecloth.api.operators/not ds target-col columns-selector options)) + ([ds target-col columns-selector] + (tablecloth.api.operators/not ds target-col columns-selector))) + + +(defn not-eq + "Applies the operation tablecloth.column.api.operators/not-eq to the columns selected by + `columns-selector` and returns a new ds with the the result in + `target-col`. This operation takes a maximum of 2 columns, so + `columns-selector` can yield no more than that many columns. + + `columns-selector can be: + - name + - sequence of names + - map of names with new names (rename) + - function which filter names (via column metadata)" + ([ds target-col columns-selector] + (tablecloth.api.operators/not-eq ds target-col columns-selector))) + + +(defn odd? + "Applies the operation tablecloth.column.api.operators/odd? to the columns selected by + `columns-selector` and returns a new ds with the the result in + `target-col`. This operation takes a maximum of 1 columns, so + `columns-selector` can yield no more than that many columns. + + `columns-selector can be: + - name + - sequence of names + - map of names with new names (rename) + - function which filter names (via column metadata)" + ([ds target-col columns-selector options] + (tablecloth.api.operators/odd? ds target-col columns-selector options)) + ([ds target-col columns-selector] + (tablecloth.api.operators/odd? ds target-col columns-selector))) + + +(defn or + "Applies the operation tablecloth.column.api.operators/or to the columns selected by + `columns-selector` and returns a new ds with the the result in + `target-col`. This operation takes a maximum of 2 columns, so + `columns-selector` can yield no more than that many columns. + + `columns-selector can be: + - name + - sequence of names + - map of names with new names (rename) + - function which filter names (via column metadata)" + ([ds target-col columns-selector] + (tablecloth.api.operators/or ds target-col columns-selector))) + + (defn order-by "Order dataset by: - column name @@ -714,6 +1787,23 @@ column-names function returns names according to columns-selector (tablecloth.api.order-by/order-by ds columns-or-fn comparators options))) +(defn percentiles + "Applies the operation tablecloth.column.api.operators/percentiles to the columns selected by + `columns-selector` and returns a new ds with the the result in + `target-col`. This operation takes a maximum of 1 columns, so + `columns-selector` can yield no more than that many columns. + + `columns-selector can be: + - name + - sequence of names + - map of names with new names (rename) + - function which filter names (via column metadata)" + ([ds target-col columns-selector percentages options] + (tablecloth.api.operators/percentiles ds target-col columns-selector percentages options)) + ([ds target-col columns-selector percentages] + (tablecloth.api.operators/percentiles ds target-col columns-selector percentages))) + + (defn pivot->longer "`tidyr` pivot_longer api" ([ds] @@ -748,6 +1838,37 @@ column-names function returns names according to columns-selector (tablecloth.api.reshape/pivot->wider ds columns-selector value-columns options))) +(defn pos? + "Applies the operation tablecloth.column.api.operators/pos? to the columns selected by + `columns-selector` and returns a new ds with the the result in + `target-col`. This operation takes a maximum of 1 columns, so + `columns-selector` can yield no more than that many columns. + + `columns-selector can be: + - name + - sequence of names + - map of names with new names (rename) + - function which filter names (via column metadata)" + ([ds target-col columns-selector options] + (tablecloth.api.operators/pos? ds target-col columns-selector options)) + ([ds target-col columns-selector] + (tablecloth.api.operators/pos? ds target-col columns-selector))) + + +(defn pow + "Applies the operation tablecloth.column.api.operators/pow to the columns selected by + `columns-selector` and returns a new ds with the the result in + `target-col`. null + + `columns-selector can be: + - name + - sequence of names + - map of names with new names (rename) + - function which filter names (via column metadata)" + ([ds target-col columns-selector] + (tablecloth.api.operators/pow ds target-col columns-selector))) + + (defn print-dataset "Prints dataset into console. For options see tech.v3.dataset.print/dataset-data->str" @@ -765,6 +1886,54 @@ column-names function returns names according to columns-selector (tablecloth.api.utils/process-group-data ds f parallel?))) +(defn quartile-1 + "Applies the operation tablecloth.column.api.operators/quartile-1 to the columns selected by + `columns-selector` and returns a new ds with the the result in + `target-col`. This operation takes a maximum of 1 columns, so + `columns-selector` can yield no more than that many columns. + + `columns-selector can be: + - name + - sequence of names + - map of names with new names (rename) + - function which filter names (via column metadata)" + ([ds columns-selector options] + (tablecloth.api.operators/quartile-1 ds columns-selector options)) + ([ds columns-selector] + (tablecloth.api.operators/quartile-1 ds columns-selector))) + + +(defn quartile-3 + "Applies the operation tablecloth.column.api.operators/quartile-3 to the columns selected by + `columns-selector` and returns a new ds with the the result in + `target-col`. This operation takes a maximum of 1 columns, so + `columns-selector` can yield no more than that many columns. + + `columns-selector can be: + - name + - sequence of names + - map of names with new names (rename) + - function which filter names (via column metadata)" + ([ds columns-selector options] + (tablecloth.api.operators/quartile-3 ds columns-selector options)) + ([ds columns-selector] + (tablecloth.api.operators/quartile-3 ds columns-selector))) + + +(defn quot + "Applies the operation tablecloth.column.api.operators/quot to the columns selected by + `columns-selector` and returns a new ds with the the result in + `target-col`. null + + `columns-selector can be: + - name + - sequence of names + - map of names with new names (rename) + - function which filter names (via column metadata)" + ([ds target-col columns-selector] + (tablecloth.api.operators/quot ds target-col columns-selector))) + + (defn rand-nth "Returns single random row" ([ds] @@ -788,6 +1957,80 @@ column-names function returns names according to columns-selector (tablecloth.api.utils/read-nippy filename))) +(defn reduce-* + "Applies the operation tablecloth.column.api.operators/reduce-* to the columns selected by + `columns-selector` and returns a new ds with the the result in + `target-col`. This operation takes a maximum of 1 columns, so + `columns-selector` can yield no more than that many columns. + + `columns-selector can be: + - name + - sequence of names + - map of names with new names (rename) + - function which filter names (via column metadata)" + ([ds columns-selector] + (tablecloth.api.operators/reduce-* ds columns-selector))) + + +(defn reduce-+ + "Applies the operation tablecloth.column.api.operators/reduce-+ to the columns selected by + `columns-selector` and returns a new ds with the the result in + `target-col`. This operation takes a maximum of 1 columns, so + `columns-selector` can yield no more than that many columns. + + `columns-selector can be: + - name + - sequence of names + - map of names with new names (rename) + - function which filter names (via column metadata)" + ([ds columns-selector] + (tablecloth.api.operators/reduce-+ ds columns-selector))) + + +(defn reduce-max + "Applies the operation tablecloth.column.api.operators/reduce-max to the columns selected by + `columns-selector` and returns a new ds with the the result in + `target-col`. This operation takes a maximum of 1 columns, so + `columns-selector` can yield no more than that many columns. + + `columns-selector can be: + - name + - sequence of names + - map of names with new names (rename) + - function which filter names (via column metadata)" + ([ds columns-selector] + (tablecloth.api.operators/reduce-max ds columns-selector))) + + +(defn reduce-min + "Applies the operation tablecloth.column.api.operators/reduce-min to the columns selected by + `columns-selector` and returns a new ds with the the result in + `target-col`. This operation takes a maximum of 1 columns, so + `columns-selector` can yield no more than that many columns. + + `columns-selector can be: + - name + - sequence of names + - map of names with new names (rename) + - function which filter names (via column metadata)" + ([ds columns-selector] + (tablecloth.api.operators/reduce-min ds columns-selector))) + + +(defn rem + "Applies the operation tablecloth.column.api.operators/rem to the columns selected by + `columns-selector` and returns a new ds with the the result in + `target-col`. null + + `columns-selector can be: + - name + - sequence of names + - map of names with new names (rename) + - function which filter names (via column metadata)" + ([ds target-col columns-selector] + (tablecloth.api.operators/rem ds target-col columns-selector))) + + (defn rename-columns "Rename columns with provided old -> new name map" ([ds columns-selector columns-map-fn] @@ -841,6 +2084,40 @@ column-names function returns names according to columns-selector (tablecloth.api.join-concat-ds/right-join ds-left ds-right columns-selector options))) +(defn rint + "Applies the operation tablecloth.column.api.operators/rint to the columns selected by + `columns-selector` and returns a new ds with the the result in + `target-col`. This operation takes a maximum of 1 columns, so + `columns-selector` can yield no more than that many columns. + + `columns-selector can be: + - name + - sequence of names + - map of names with new names (rename) + - function which filter names (via column metadata)" + ([ds target-col columns-selector options] + (tablecloth.api.operators/rint ds target-col columns-selector options)) + ([ds target-col columns-selector] + (tablecloth.api.operators/rint ds target-col columns-selector))) + + +(defn round + "Applies the operation tablecloth.column.api.operators/round to the columns selected by + `columns-selector` and returns a new ds with the the result in + `target-col`. This operation takes a maximum of 1 columns, so + `columns-selector` can yield no more than that many columns. + + `columns-selector can be: + - name + - sequence of names + - map of names with new names (rename) + - function which filter names (via column metadata)" + ([ds target-col columns-selector options] + (tablecloth.api.operators/round ds target-col columns-selector options)) + ([ds target-col columns-selector] + (tablecloth.api.operators/round ds target-col columns-selector))) + + (defn row-count (^{:tag long} [dataset-or-col] (tech.v3.dataset/row-count dataset-or-col))) @@ -938,6 +2215,21 @@ column-names function returns names according to columns-selector (tablecloth.api.dataset/shape ds))) +(defn shift + "Applies the operation tablecloth.column.api.operators/shift to the columns selected by + `columns-selector` and returns a new ds with the the result in + `target-col`. This operation takes a maximum of 1 columns, so + `columns-selector` can yield no more than that many columns. + + `columns-selector can be: + - name + - sequence of names + - map of names with new names (rename) + - function which filter names (via column metadata)" + ([ds target-col columns-selector n] + (tablecloth.api.operators/shift ds target-col columns-selector n))) + + (defn shuffle "Shuffle dataset (with seed)" ([ds] @@ -946,6 +2238,74 @@ column-names function returns names according to columns-selector (tablecloth.api.rows/shuffle ds options))) +(defn signum + "Applies the operation tablecloth.column.api.operators/signum to the columns selected by + `columns-selector` and returns a new ds with the the result in + `target-col`. This operation takes a maximum of 1 columns, so + `columns-selector` can yield no more than that many columns. + + `columns-selector can be: + - name + - sequence of names + - map of names with new names (rename) + - function which filter names (via column metadata)" + ([ds target-col columns-selector options] + (tablecloth.api.operators/signum ds target-col columns-selector options)) + ([ds target-col columns-selector] + (tablecloth.api.operators/signum ds target-col columns-selector))) + + +(defn sin + "Applies the operation tablecloth.column.api.operators/sin to the columns selected by + `columns-selector` and returns a new ds with the the result in + `target-col`. This operation takes a maximum of 1 columns, so + `columns-selector` can yield no more than that many columns. + + `columns-selector can be: + - name + - sequence of names + - map of names with new names (rename) + - function which filter names (via column metadata)" + ([ds target-col columns-selector options] + (tablecloth.api.operators/sin ds target-col columns-selector options)) + ([ds target-col columns-selector] + (tablecloth.api.operators/sin ds target-col columns-selector))) + + +(defn sinh + "Applies the operation tablecloth.column.api.operators/sinh to the columns selected by + `columns-selector` and returns a new ds with the the result in + `target-col`. This operation takes a maximum of 1 columns, so + `columns-selector` can yield no more than that many columns. + + `columns-selector can be: + - name + - sequence of names + - map of names with new names (rename) + - function which filter names (via column metadata)" + ([ds target-col columns-selector options] + (tablecloth.api.operators/sinh ds target-col columns-selector options)) + ([ds target-col columns-selector] + (tablecloth.api.operators/sinh ds target-col columns-selector))) + + +(defn skew + "Applies the operation tablecloth.column.api.operators/skew to the columns selected by + `columns-selector` and returns a new ds with the the result in + `target-col`. This operation takes a maximum of 1 columns, so + `columns-selector` can yield no more than that many columns. + + `columns-selector can be: + - name + - sequence of names + - map of names with new names (rename) + - function which filter names (via column metadata)" + ([ds columns-selector options] + (tablecloth.api.operators/skew ds columns-selector options)) + ([ds columns-selector] + (tablecloth.api.operators/skew ds columns-selector))) + + (defn split "Split given dataset into 2 or more (holdout) splits @@ -996,6 +2356,72 @@ column-names function returns names according to columns-selector (tablecloth.api.split/split->seq ds split-type options))) +(defn sq + "Applies the operation tablecloth.column.api.operators/sq to the columns selected by + `columns-selector` and returns a new ds with the the result in + `target-col`. This operation takes a maximum of 1 columns, so + `columns-selector` can yield no more than that many columns. + + `columns-selector can be: + - name + - sequence of names + - map of names with new names (rename) + - function which filter names (via column metadata)" + ([ds target-col columns-selector options] + (tablecloth.api.operators/sq ds target-col columns-selector options)) + ([ds target-col columns-selector] + (tablecloth.api.operators/sq ds target-col columns-selector))) + + +(defn sqrt + "Applies the operation tablecloth.column.api.operators/sqrt to the columns selected by + `columns-selector` and returns a new ds with the the result in + `target-col`. This operation takes a maximum of 1 columns, so + `columns-selector` can yield no more than that many columns. + + `columns-selector can be: + - name + - sequence of names + - map of names with new names (rename) + - function which filter names (via column metadata)" + ([ds target-col columns-selector options] + (tablecloth.api.operators/sqrt ds target-col columns-selector options)) + ([ds target-col columns-selector] + (tablecloth.api.operators/sqrt ds target-col columns-selector))) + + +(defn sum + "Applies the operation tablecloth.column.api.operators/sum to the columns selected by + `columns-selector` and returns a new ds with the the result in + `target-col`. This operation takes a maximum of 1 columns, so + `columns-selector` can yield no more than that many columns. + + `columns-selector can be: + - name + - sequence of names + - map of names with new names (rename) + - function which filter names (via column metadata)" + ([ds columns-selector options] + (tablecloth.api.operators/sum ds columns-selector options)) + ([ds columns-selector] + (tablecloth.api.operators/sum ds columns-selector))) + + +(defn sum-fast + "Applies the operation tablecloth.column.api.operators/sum-fast to the columns selected by + `columns-selector` and returns a new ds with the the result in + `target-col`. This operation takes a maximum of 1 columns, so + `columns-selector` can yield no more than that many columns. + + `columns-selector can be: + - name + - sequence of names + - map of names with new names (rename) + - function which filter names (via column metadata)" + ([ds columns-selector] + (tablecloth.api.operators/sum-fast ds columns-selector))) + + (defn tail "Last n rows (default 5)" ([ds] @@ -1004,6 +2430,91 @@ column-names function returns names according to columns-selector (tablecloth.api.rows/tail ds n))) +(defn tan + "Applies the operation tablecloth.column.api.operators/tan to the columns selected by + `columns-selector` and returns a new ds with the the result in + `target-col`. This operation takes a maximum of 1 columns, so + `columns-selector` can yield no more than that many columns. + + `columns-selector can be: + - name + - sequence of names + - map of names with new names (rename) + - function which filter names (via column metadata)" + ([ds target-col columns-selector options] + (tablecloth.api.operators/tan ds target-col columns-selector options)) + ([ds target-col columns-selector] + (tablecloth.api.operators/tan ds target-col columns-selector))) + + +(defn tanh + "Applies the operation tablecloth.column.api.operators/tanh to the columns selected by + `columns-selector` and returns a new ds with the the result in + `target-col`. This operation takes a maximum of 1 columns, so + `columns-selector` can yield no more than that many columns. + + `columns-selector can be: + - name + - sequence of names + - map of names with new names (rename) + - function which filter names (via column metadata)" + ([ds target-col columns-selector options] + (tablecloth.api.operators/tanh ds target-col columns-selector options)) + ([ds target-col columns-selector] + (tablecloth.api.operators/tanh ds target-col columns-selector))) + + +(defn to-degrees + "Applies the operation tablecloth.column.api.operators/to-degrees to the columns selected by + `columns-selector` and returns a new ds with the the result in + `target-col`. This operation takes a maximum of 1 columns, so + `columns-selector` can yield no more than that many columns. + + `columns-selector can be: + - name + - sequence of names + - map of names with new names (rename) + - function which filter names (via column metadata)" + ([ds target-col columns-selector options] + (tablecloth.api.operators/to-degrees ds target-col columns-selector options)) + ([ds target-col columns-selector] + (tablecloth.api.operators/to-degrees ds target-col columns-selector))) + + +(defn to-radians + "Applies the operation tablecloth.column.api.operators/to-radians to the columns selected by + `columns-selector` and returns a new ds with the the result in + `target-col`. This operation takes a maximum of 1 columns, so + `columns-selector` can yield no more than that many columns. + + `columns-selector can be: + - name + - sequence of names + - map of names with new names (rename) + - function which filter names (via column metadata)" + ([ds target-col columns-selector options] + (tablecloth.api.operators/to-radians ds target-col columns-selector options)) + ([ds target-col columns-selector] + (tablecloth.api.operators/to-radians ds target-col columns-selector))) + + +(defn ulp + "Applies the operation tablecloth.column.api.operators/ulp to the columns selected by + `columns-selector` and returns a new ds with the the result in + `target-col`. This operation takes a maximum of 1 columns, so + `columns-selector` can yield no more than that many columns. + + `columns-selector can be: + - name + - sequence of names + - map of names with new names (rename) + - function which filter names (via column metadata)" + ([ds target-col columns-selector options] + (tablecloth.api.operators/ulp ds target-col columns-selector options)) + ([ds target-col columns-selector] + (tablecloth.api.operators/ulp ds target-col columns-selector))) + + (defn ungroup "Concat groups into dataset. @@ -1056,6 +2567,20 @@ column-names function returns names according to columns-selector (tablecloth.api.fold-unroll/unroll ds columns-selector options))) +(defn unsigned-bit-shift-right + "Applies the operation tablecloth.column.api.operators/unsigned-bit-shift-right to the columns selected by + `columns-selector` and returns a new ds with the the result in + `target-col`. null + + `columns-selector can be: + - name + - sequence of names + - map of names with new names (rename) + - function which filter names (via column metadata)" + ([ds target-col columns-selector] + (tablecloth.api.operators/unsigned-bit-shift-right ds target-col columns-selector))) + + (defn update-columns ([ds columns-map] (tablecloth.api.columns/update-columns ds columns-map)) @@ -1063,6 +2588,23 @@ column-names function returns names according to columns-selector (tablecloth.api.columns/update-columns ds columns-selector update-functions))) +(defn variance + "Applies the operation tablecloth.column.api.operators/variance to the columns selected by + `columns-selector` and returns a new ds with the the result in + `target-col`. This operation takes a maximum of 1 columns, so + `columns-selector` can yield no more than that many columns. + + `columns-selector can be: + - name + - sequence of names + - map of names with new names (rename) + - function which filter names (via column metadata)" + ([ds columns-selector options] + (tablecloth.api.operators/variance ds columns-selector options)) + ([ds columns-selector] + (tablecloth.api.operators/variance ds columns-selector))) + + (defmacro without-grouping-> ([ds & args] `(tablecloth.api.api-template/without-grouping-> ~ds ~@args))) @@ -1101,3 +2643,20 @@ Options: (tablecloth.api.utils/write-nippy! ds filename))) +(defn zero? + "Applies the operation tablecloth.column.api.operators/zero? to the columns selected by + `columns-selector` and returns a new ds with the the result in + `target-col`. This operation takes a maximum of 1 columns, so + `columns-selector` can yield no more than that many columns. + + `columns-selector can be: + - name + - sequence of names + - map of names with new names (rename) + - function which filter names (via column metadata)" + ([ds target-col columns-selector options] + (tablecloth.api.operators/zero? ds target-col columns-selector options)) + ([ds target-col columns-selector] + (tablecloth.api.operators/zero? ds target-col columns-selector))) + + diff --git a/src/tablecloth/api/api_template.clj b/src/tablecloth/api/api_template.clj index c212db5..f2e3b71 100644 --- a/src/tablecloth/api/api_template.clj +++ b/src/tablecloth/api/api_template.clj @@ -127,6 +127,10 @@ (exporter/export-symbols tablecloth.api.split split split->seq) + + (exporter/export-symbols tablecloth.api.operators + * + - / < <= > >= abs acos and asin atan atan2 bit-and bit-and-not bit-clear bit-flip bit-not bit-or bit-set bit-shift-left bit-shift-right bit-xor cbrt ceil cos cosh cummax cummin cumprod cumsum distance distance-squared dot-product eq even? exp expm1 finite? floor get-significand hypot identity ieee-remainder infinite? kurtosis log log10 log1p logistic magnitude magnitude-squared mathematical-integer? max mean mean-fast median min nan? neg? next-down next-up normalize not not-eq odd? or percentiles pos? pow quartile-1 quartile-3 quot reduce-* reduce-+ reduce-max reduce-min rem rint round shift signum sin sinh skew sq sqrt sum sum-fast tan tanh to-degrees to-radians ulp unsigned-bit-shift-right variance zero?) + ;; (defn- select-or-drop diff --git a/src/tablecloth/api/lift_operators.clj b/src/tablecloth/api/lift_operators.clj index b2b758a..80833e5 100644 --- a/src/tablecloth/api/lift_operators.clj +++ b/src/tablecloth/api/lift_operators.clj @@ -1,5 +1,8 @@ (ns tablecloth.api.lift-operators - (:require [tablecloth.api :refer [select-columns add-or-replace-column]] + (:require [tablecloth.api.dataset :refer [columns]] + [tablecloth.api.columns :refer [select-columns add-or-replace-column]] + [tablecloth.api.utils :refer [column-names]] + [tablecloth.api.aggregate :refer [aggregate]] [tablecloth.utils.codegen :refer [do-lift]])) (defn get-meta [fn-sym] @@ -22,7 +25,6 @@ col-symbol-set (set longest-arglist)))))) - (defn convert-arglists [arglists target-column?] (let [convert-arglist (fn [arglist] @@ -83,16 +85,16 @@ (select-columns ds# ~'columns-selector) cols-count# (-> ds-with-selected-cols# - tablecloth.api/column-names + column-names count) - selected-cols# (tablecloth.api/columns ds-with-selected-cols#)] + selected-cols# (columns ds-with-selected-cols#)] (if (>= ~max-cols cols-count#) (apply ~fn-sym (apply vector selected-cols#)) (throw (Exception. (str "Exceeded maximum number of columns allowed for operation."))))))] - (tablecloth.api/aggregate ~'ds aggregator#))) + (aggregate ~'ds aggregator#))) ;; build either a fn that returns a dataset or the result of the operation `(~args - (~let [selected-cols# (apply vector (tablecloth.api.dataset/columns + (~let [selected-cols# (apply vector (columns (select-columns ~'ds ~'columns-selector))) args-to-pass# (concat selected-cols# [~@(drop 3 args)])] (if (>= ~max-cols (count selected-cols#)) @@ -101,10 +103,6 @@ ~(if return-ds? `(add-or-replace-column ~'ds ~'target-col) `(identity))) (throw (Exception. (str "Exceeded maximum number of columns allowed for operation."))))))))))) -(lift-op 'tablecloth.column.api.operators/bit-set {}) - -(lift-op 'tablecloth.column.api.operators/mean {:make-aggregator? true}) - (def serialized-lift-fn-lookup {'[distance distance-squared diff --git a/src/tablecloth/api/operators.clj b/src/tablecloth/api/operators.clj index 3649b90..b306e57 100644 --- a/src/tablecloth/api/operators.clj +++ b/src/tablecloth/api/operators.clj @@ -47,83 +47,85 @@ "Applies the operation tablecloth.column.api.operators/kurtosis to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds columns-selector options] (let - [aggregator__47425__auto__ + [aggregator__31576__auto__ (clojure.core/fn - [ds__47426__auto__] + [ds__31577__auto__] (let - [ds-with-selected-cols__47427__auto__ - (tablecloth.api/select-columns - ds__47426__auto__ + [ds-with-selected-cols__31578__auto__ + (tablecloth.api.columns/select-columns + ds__31577__auto__ columns-selector) - cols-count__47428__auto__ + cols-count__31579__auto__ (clojure.core/-> - ds-with-selected-cols__47427__auto__ - tablecloth.api/column-names + ds-with-selected-cols__31578__auto__ + tablecloth.api.utils/column-names clojure.core/count) - selected-cols__47429__auto__ - (tablecloth.api/columns ds-with-selected-cols__47427__auto__)] + selected-cols__31580__auto__ + (tablecloth.api.dataset/columns + ds-with-selected-cols__31578__auto__)] (if - (clojure.core/>= 1 cols-count__47428__auto__) + (clojure.core/>= 1 cols-count__31579__auto__) (clojure.core/apply tablecloth.column.api.operators/kurtosis (clojure.core/apply clojure.core/vector - selected-cols__47429__auto__)) + selected-cols__31580__auto__)) (throw (java.lang.Exception. (clojure.core/str "Exceeded maximum number of columns allowed for operation."))))))] - (tablecloth.api/aggregate ds aggregator__47425__auto__))) + (tablecloth.api.aggregate/aggregate ds aggregator__31576__auto__))) ([ds columns-selector] (let - [aggregator__47425__auto__ + [aggregator__31576__auto__ (clojure.core/fn - [ds__47426__auto__] + [ds__31577__auto__] (let - [ds-with-selected-cols__47427__auto__ - (tablecloth.api/select-columns - ds__47426__auto__ + [ds-with-selected-cols__31578__auto__ + (tablecloth.api.columns/select-columns + ds__31577__auto__ columns-selector) - cols-count__47428__auto__ + cols-count__31579__auto__ (clojure.core/-> - ds-with-selected-cols__47427__auto__ - tablecloth.api/column-names + ds-with-selected-cols__31578__auto__ + tablecloth.api.utils/column-names clojure.core/count) - selected-cols__47429__auto__ - (tablecloth.api/columns ds-with-selected-cols__47427__auto__)] + selected-cols__31580__auto__ + (tablecloth.api.dataset/columns + ds-with-selected-cols__31578__auto__)] (if - (clojure.core/>= 1 cols-count__47428__auto__) + (clojure.core/>= 1 cols-count__31579__auto__) (clojure.core/apply tablecloth.column.api.operators/kurtosis (clojure.core/apply clojure.core/vector - selected-cols__47429__auto__)) + selected-cols__31580__auto__)) (throw (java.lang.Exception. (clojure.core/str "Exceeded maximum number of columns allowed for operation."))))))] - (tablecloth.api/aggregate ds aggregator__47425__auto__)))) + (tablecloth.api.aggregate/aggregate ds aggregator__31576__auto__)))) (defn bit-set "Applies the operation tablecloth.column.api.operators/bit-set to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. null\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [])] (if (clojure.core/>= ##Inf - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/bit-set) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str @@ -134,42 +136,42 @@ "Applies the operation tablecloth.column.api.operators/finite? to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector options] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [options])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [options])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/finite?) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str "Exceeded maximum number of columns allowed for operation.")))))) ([ds target-col columns-selector] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/finite?) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str @@ -180,108 +182,110 @@ "Applies the operation tablecloth.column.api.operators/distance to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 2 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds columns-selector] (let - [aggregator__47425__auto__ + [aggregator__31576__auto__ (clojure.core/fn - [ds__47426__auto__] + [ds__31577__auto__] (let - [ds-with-selected-cols__47427__auto__ - (tablecloth.api/select-columns - ds__47426__auto__ + [ds-with-selected-cols__31578__auto__ + (tablecloth.api.columns/select-columns + ds__31577__auto__ columns-selector) - cols-count__47428__auto__ + cols-count__31579__auto__ (clojure.core/-> - ds-with-selected-cols__47427__auto__ - tablecloth.api/column-names + ds-with-selected-cols__31578__auto__ + tablecloth.api.utils/column-names clojure.core/count) - selected-cols__47429__auto__ - (tablecloth.api/columns ds-with-selected-cols__47427__auto__)] + selected-cols__31580__auto__ + (tablecloth.api.dataset/columns + ds-with-selected-cols__31578__auto__)] (if - (clojure.core/>= 2 cols-count__47428__auto__) + (clojure.core/>= 2 cols-count__31579__auto__) (clojure.core/apply tablecloth.column.api.operators/distance (clojure.core/apply clojure.core/vector - selected-cols__47429__auto__)) + selected-cols__31580__auto__)) (throw (java.lang.Exception. (clojure.core/str "Exceeded maximum number of columns allowed for operation."))))))] - (tablecloth.api/aggregate ds aggregator__47425__auto__)))) + (tablecloth.api.aggregate/aggregate ds aggregator__31576__auto__)))) (defn reduce-min "Applies the operation tablecloth.column.api.operators/reduce-min to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds columns-selector] (let - [aggregator__47425__auto__ + [aggregator__31576__auto__ (clojure.core/fn - [ds__47426__auto__] + [ds__31577__auto__] (let - [ds-with-selected-cols__47427__auto__ - (tablecloth.api/select-columns - ds__47426__auto__ + [ds-with-selected-cols__31578__auto__ + (tablecloth.api.columns/select-columns + ds__31577__auto__ columns-selector) - cols-count__47428__auto__ + cols-count__31579__auto__ (clojure.core/-> - ds-with-selected-cols__47427__auto__ - tablecloth.api/column-names + ds-with-selected-cols__31578__auto__ + tablecloth.api.utils/column-names clojure.core/count) - selected-cols__47429__auto__ - (tablecloth.api/columns ds-with-selected-cols__47427__auto__)] + selected-cols__31580__auto__ + (tablecloth.api.dataset/columns + ds-with-selected-cols__31578__auto__)] (if - (clojure.core/>= 1 cols-count__47428__auto__) + (clojure.core/>= 1 cols-count__31579__auto__) (clojure.core/apply tablecloth.column.api.operators/reduce-min (clojure.core/apply clojure.core/vector - selected-cols__47429__auto__)) + selected-cols__31580__auto__)) (throw (java.lang.Exception. (clojure.core/str "Exceeded maximum number of columns allowed for operation."))))))] - (tablecloth.api/aggregate ds aggregator__47425__auto__)))) + (tablecloth.api.aggregate/aggregate ds aggregator__31576__auto__)))) (defn to-radians "Applies the operation tablecloth.column.api.operators/to-radians to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector options] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [options])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [options])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/to-radians) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str "Exceeded maximum number of columns allowed for operation.")))))) ([ds target-col columns-selector] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/to-radians) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str @@ -292,22 +296,22 @@ "Applies the operation tablecloth.column.api.operators/bit-shift-right to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. null\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [])] (if (clojure.core/>= ##Inf - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/bit-shift-right) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str @@ -318,22 +322,22 @@ "Applies the operation tablecloth.column.api.operators/ieee-remainder to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. null\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [])] (if (clojure.core/>= ##Inf - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/ieee-remainder) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str @@ -344,42 +348,42 @@ "Applies the operation tablecloth.column.api.operators/log to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector options] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [options])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [options])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/log) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str "Exceeded maximum number of columns allowed for operation.")))))) ([ds target-col columns-selector] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/log) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str @@ -390,22 +394,22 @@ "Applies the operation tablecloth.column.api.operators/bit-shift-left to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. null\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [])] (if (clojure.core/>= ##Inf - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/bit-shift-left) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str @@ -416,42 +420,42 @@ "Applies the operation tablecloth.column.api.operators/acos to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector options] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [options])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [options])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/acos) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str "Exceeded maximum number of columns allowed for operation.")))))) ([ds target-col columns-selector] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/acos) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str @@ -462,42 +466,42 @@ "Applies the operation tablecloth.column.api.operators/to-degrees to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector options] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [options])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [options])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/to-degrees) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str "Exceeded maximum number of columns allowed for operation.")))))) ([ds target-col columns-selector] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/to-degrees) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str @@ -508,21 +512,21 @@ "Applies the operation tablecloth.column.api.operators/< to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 3 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [])] (if (clojure.core/>= 3 - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/<) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str @@ -533,42 +537,42 @@ "Applies the operation tablecloth.column.api.operators/floor to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector options] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [options])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [options])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/floor) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str "Exceeded maximum number of columns allowed for operation.")))))) ([ds target-col columns-selector] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/floor) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str @@ -579,21 +583,21 @@ "Applies the operation tablecloth.column.api.operators/atan2 to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. null\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [])] (if (clojure.core/>= ##Inf - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/atan2) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str @@ -604,21 +608,21 @@ "Applies the operation tablecloth.column.api.operators/normalize to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/normalize) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str @@ -629,21 +633,21 @@ "Applies the operation tablecloth.column.api.operators/hypot to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. null\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [])] (if (clojure.core/>= ##Inf - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/hypot) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str @@ -654,42 +658,42 @@ "Applies the operation tablecloth.column.api.operators/tanh to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector options] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [options])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [options])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/tanh) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str "Exceeded maximum number of columns allowed for operation.")))))) ([ds target-col columns-selector] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/tanh) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str @@ -700,42 +704,42 @@ "Applies the operation tablecloth.column.api.operators/sq to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector options] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [options])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [options])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/sq) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str "Exceeded maximum number of columns allowed for operation.")))))) ([ds target-col columns-selector] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/sq) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str @@ -746,104 +750,106 @@ "Applies the operation tablecloth.column.api.operators/sum to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds columns-selector options] (let - [aggregator__47425__auto__ + [aggregator__31576__auto__ (clojure.core/fn - [ds__47426__auto__] + [ds__31577__auto__] (let - [ds-with-selected-cols__47427__auto__ - (tablecloth.api/select-columns - ds__47426__auto__ + [ds-with-selected-cols__31578__auto__ + (tablecloth.api.columns/select-columns + ds__31577__auto__ columns-selector) - cols-count__47428__auto__ + cols-count__31579__auto__ (clojure.core/-> - ds-with-selected-cols__47427__auto__ - tablecloth.api/column-names + ds-with-selected-cols__31578__auto__ + tablecloth.api.utils/column-names clojure.core/count) - selected-cols__47429__auto__ - (tablecloth.api/columns ds-with-selected-cols__47427__auto__)] + selected-cols__31580__auto__ + (tablecloth.api.dataset/columns + ds-with-selected-cols__31578__auto__)] (if - (clojure.core/>= 1 cols-count__47428__auto__) + (clojure.core/>= 1 cols-count__31579__auto__) (clojure.core/apply tablecloth.column.api.operators/sum (clojure.core/apply clojure.core/vector - selected-cols__47429__auto__)) + selected-cols__31580__auto__)) (throw (java.lang.Exception. (clojure.core/str "Exceeded maximum number of columns allowed for operation."))))))] - (tablecloth.api/aggregate ds aggregator__47425__auto__))) + (tablecloth.api.aggregate/aggregate ds aggregator__31576__auto__))) ([ds columns-selector] (let - [aggregator__47425__auto__ + [aggregator__31576__auto__ (clojure.core/fn - [ds__47426__auto__] + [ds__31577__auto__] (let - [ds-with-selected-cols__47427__auto__ - (tablecloth.api/select-columns - ds__47426__auto__ + [ds-with-selected-cols__31578__auto__ + (tablecloth.api.columns/select-columns + ds__31577__auto__ columns-selector) - cols-count__47428__auto__ + cols-count__31579__auto__ (clojure.core/-> - ds-with-selected-cols__47427__auto__ - tablecloth.api/column-names + ds-with-selected-cols__31578__auto__ + tablecloth.api.utils/column-names clojure.core/count) - selected-cols__47429__auto__ - (tablecloth.api/columns ds-with-selected-cols__47427__auto__)] + selected-cols__31580__auto__ + (tablecloth.api.dataset/columns + ds-with-selected-cols__31578__auto__)] (if - (clojure.core/>= 1 cols-count__47428__auto__) + (clojure.core/>= 1 cols-count__31579__auto__) (clojure.core/apply tablecloth.column.api.operators/sum (clojure.core/apply clojure.core/vector - selected-cols__47429__auto__)) + selected-cols__31580__auto__)) (throw (java.lang.Exception. (clojure.core/str "Exceeded maximum number of columns allowed for operation."))))))] - (tablecloth.api/aggregate ds aggregator__47425__auto__)))) + (tablecloth.api.aggregate/aggregate ds aggregator__31576__auto__)))) (defn pos? "Applies the operation tablecloth.column.api.operators/pos? to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector options] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [options])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [options])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/pos?) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str "Exceeded maximum number of columns allowed for operation.")))))) ([ds target-col columns-selector] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/pos?) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str @@ -854,21 +860,21 @@ "Applies the operation tablecloth.column.api.operators/shift to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector n] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [n])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [n])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/shift) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str @@ -879,42 +885,42 @@ "Applies the operation tablecloth.column.api.operators/ceil to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector options] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [options])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [options])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/ceil) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str "Exceeded maximum number of columns allowed for operation.")))))) ([ds target-col columns-selector] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/ceil) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str @@ -925,21 +931,21 @@ "Applies the operation tablecloth.column.api.operators/bit-xor to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. null\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [])] (if (clojure.core/>= ##Inf - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/bit-xor) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str @@ -950,22 +956,22 @@ "Applies the operation tablecloth.column.api.operators/unsigned-bit-shift-right to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. null\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [])] (if (clojure.core/>= ##Inf - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/unsigned-bit-shift-right) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str @@ -976,42 +982,42 @@ "Applies the operation tablecloth.column.api.operators/neg? to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector options] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [options])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [options])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/neg?) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str "Exceeded maximum number of columns allowed for operation.")))))) ([ds target-col columns-selector] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/neg?) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str @@ -1022,21 +1028,21 @@ "Applies the operation tablecloth.column.api.operators/<= to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 3 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [])] (if (clojure.core/>= 3 - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/<=) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str @@ -1047,21 +1053,21 @@ "Applies the operation tablecloth.column.api.operators/* to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. null\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [])] (if (clojure.core/>= ##Inf - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/*) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str @@ -1072,21 +1078,21 @@ "Applies the operation tablecloth.column.api.operators/min to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. null\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [])] (if (clojure.core/>= ##Inf - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/min) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str @@ -1097,42 +1103,42 @@ "Applies the operation tablecloth.column.api.operators/atan to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector options] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [options])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [options])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/atan) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str "Exceeded maximum number of columns allowed for operation.")))))) ([ds target-col columns-selector] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/atan) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str @@ -1143,44 +1149,44 @@ "Applies the operation tablecloth.column.api.operators/mathematical-integer? to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector options] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [options])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [options])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/mathematical-integer?) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str "Exceeded maximum number of columns allowed for operation.")))))) ([ds target-col columns-selector] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/mathematical-integer?) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str @@ -1191,42 +1197,42 @@ "Applies the operation tablecloth.column.api.operators/cumprod to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector options] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [options])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [options])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/cumprod) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str "Exceeded maximum number of columns allowed for operation.")))))) ([ds target-col columns-selector] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/cumprod) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str @@ -1237,42 +1243,42 @@ "Applies the operation tablecloth.column.api.operators/expm1 to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector options] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [options])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [options])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/expm1) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str "Exceeded maximum number of columns allowed for operation.")))))) ([ds target-col columns-selector] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/expm1) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str @@ -1283,42 +1289,42 @@ "Applies the operation tablecloth.column.api.operators/identity to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector options] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [options])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [options])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/identity) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str "Exceeded maximum number of columns allowed for operation.")))))) ([ds target-col columns-selector] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/identity) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str @@ -1329,75 +1335,76 @@ "Applies the operation tablecloth.column.api.operators/reduce-max to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds columns-selector] (let - [aggregator__47425__auto__ + [aggregator__31576__auto__ (clojure.core/fn - [ds__47426__auto__] + [ds__31577__auto__] (let - [ds-with-selected-cols__47427__auto__ - (tablecloth.api/select-columns - ds__47426__auto__ + [ds-with-selected-cols__31578__auto__ + (tablecloth.api.columns/select-columns + ds__31577__auto__ columns-selector) - cols-count__47428__auto__ + cols-count__31579__auto__ (clojure.core/-> - ds-with-selected-cols__47427__auto__ - tablecloth.api/column-names + ds-with-selected-cols__31578__auto__ + tablecloth.api.utils/column-names clojure.core/count) - selected-cols__47429__auto__ - (tablecloth.api/columns ds-with-selected-cols__47427__auto__)] + selected-cols__31580__auto__ + (tablecloth.api.dataset/columns + ds-with-selected-cols__31578__auto__)] (if - (clojure.core/>= 1 cols-count__47428__auto__) + (clojure.core/>= 1 cols-count__31579__auto__) (clojure.core/apply tablecloth.column.api.operators/reduce-max (clojure.core/apply clojure.core/vector - selected-cols__47429__auto__)) + selected-cols__31580__auto__)) (throw (java.lang.Exception. (clojure.core/str "Exceeded maximum number of columns allowed for operation."))))))] - (tablecloth.api/aggregate ds aggregator__47425__auto__)))) + (tablecloth.api.aggregate/aggregate ds aggregator__31576__auto__)))) (defn cumsum "Applies the operation tablecloth.column.api.operators/cumsum to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector options] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [options])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [options])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/cumsum) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str "Exceeded maximum number of columns allowed for operation.")))))) ([ds target-col columns-selector] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/cumsum) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str @@ -1408,42 +1415,42 @@ "Applies the operation tablecloth.column.api.operators/nan? to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector options] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [options])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [options])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/nan?) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str "Exceeded maximum number of columns allowed for operation.")))))) ([ds target-col columns-selector] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/nan?) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str @@ -1454,21 +1461,21 @@ "Applies the operation tablecloth.column.api.operators/bit-and-not to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. null\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [])] (if (clojure.core/>= ##Inf - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/bit-and-not) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str @@ -1479,42 +1486,42 @@ "Applies the operation tablecloth.column.api.operators/logistic to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector options] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [options])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [options])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/logistic) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str "Exceeded maximum number of columns allowed for operation.")))))) ([ds target-col columns-selector] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/logistic) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str @@ -1525,42 +1532,42 @@ "Applies the operation tablecloth.column.api.operators/cos to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector options] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [options])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [options])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/cos) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str "Exceeded maximum number of columns allowed for operation.")))))) ([ds target-col columns-selector] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/cos) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str @@ -1571,42 +1578,42 @@ "Applies the operation tablecloth.column.api.operators/log10 to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector options] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [options])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [options])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/log10) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str "Exceeded maximum number of columns allowed for operation.")))))) ([ds target-col columns-selector] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/log10) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str @@ -1617,21 +1624,21 @@ "Applies the operation tablecloth.column.api.operators/quot to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. null\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [])] (if (clojure.core/>= ##Inf - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/quot) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str @@ -1642,75 +1649,76 @@ "Applies the operation tablecloth.column.api.operators/dot-product to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 2 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds columns-selector] (let - [aggregator__47425__auto__ + [aggregator__31576__auto__ (clojure.core/fn - [ds__47426__auto__] + [ds__31577__auto__] (let - [ds-with-selected-cols__47427__auto__ - (tablecloth.api/select-columns - ds__47426__auto__ + [ds-with-selected-cols__31578__auto__ + (tablecloth.api.columns/select-columns + ds__31577__auto__ columns-selector) - cols-count__47428__auto__ + cols-count__31579__auto__ (clojure.core/-> - ds-with-selected-cols__47427__auto__ - tablecloth.api/column-names + ds-with-selected-cols__31578__auto__ + tablecloth.api.utils/column-names clojure.core/count) - selected-cols__47429__auto__ - (tablecloth.api/columns ds-with-selected-cols__47427__auto__)] + selected-cols__31580__auto__ + (tablecloth.api.dataset/columns + ds-with-selected-cols__31578__auto__)] (if - (clojure.core/>= 2 cols-count__47428__auto__) + (clojure.core/>= 2 cols-count__31579__auto__) (clojure.core/apply tablecloth.column.api.operators/dot-product (clojure.core/apply clojure.core/vector - selected-cols__47429__auto__)) + selected-cols__31580__auto__)) (throw (java.lang.Exception. (clojure.core/str "Exceeded maximum number of columns allowed for operation."))))))] - (tablecloth.api/aggregate ds aggregator__47425__auto__)))) + (tablecloth.api.aggregate/aggregate ds aggregator__31576__auto__)))) (defn tan "Applies the operation tablecloth.column.api.operators/tan to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector options] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [options])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [options])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/tan) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str "Exceeded maximum number of columns allowed for operation.")))))) ([ds target-col columns-selector] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/tan) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str @@ -1721,42 +1729,42 @@ "Applies the operation tablecloth.column.api.operators/cbrt to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector options] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [options])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [options])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/cbrt) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str "Exceeded maximum number of columns allowed for operation.")))))) ([ds target-col columns-selector] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/cbrt) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str @@ -1767,21 +1775,21 @@ "Applies the operation tablecloth.column.api.operators/eq to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 2 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [])] (if (clojure.core/>= 2 - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/eq) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str @@ -1792,83 +1800,85 @@ "Applies the operation tablecloth.column.api.operators/mean to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds columns-selector options] (let - [aggregator__47425__auto__ + [aggregator__31576__auto__ (clojure.core/fn - [ds__47426__auto__] + [ds__31577__auto__] (let - [ds-with-selected-cols__47427__auto__ - (tablecloth.api/select-columns - ds__47426__auto__ + [ds-with-selected-cols__31578__auto__ + (tablecloth.api.columns/select-columns + ds__31577__auto__ columns-selector) - cols-count__47428__auto__ + cols-count__31579__auto__ (clojure.core/-> - ds-with-selected-cols__47427__auto__ - tablecloth.api/column-names + ds-with-selected-cols__31578__auto__ + tablecloth.api.utils/column-names clojure.core/count) - selected-cols__47429__auto__ - (tablecloth.api/columns ds-with-selected-cols__47427__auto__)] + selected-cols__31580__auto__ + (tablecloth.api.dataset/columns + ds-with-selected-cols__31578__auto__)] (if - (clojure.core/>= 1 cols-count__47428__auto__) + (clojure.core/>= 1 cols-count__31579__auto__) (clojure.core/apply tablecloth.column.api.operators/mean (clojure.core/apply clojure.core/vector - selected-cols__47429__auto__)) + selected-cols__31580__auto__)) (throw (java.lang.Exception. (clojure.core/str "Exceeded maximum number of columns allowed for operation."))))))] - (tablecloth.api/aggregate ds aggregator__47425__auto__))) + (tablecloth.api.aggregate/aggregate ds aggregator__31576__auto__))) ([ds columns-selector] (let - [aggregator__47425__auto__ + [aggregator__31576__auto__ (clojure.core/fn - [ds__47426__auto__] + [ds__31577__auto__] (let - [ds-with-selected-cols__47427__auto__ - (tablecloth.api/select-columns - ds__47426__auto__ + [ds-with-selected-cols__31578__auto__ + (tablecloth.api.columns/select-columns + ds__31577__auto__ columns-selector) - cols-count__47428__auto__ + cols-count__31579__auto__ (clojure.core/-> - ds-with-selected-cols__47427__auto__ - tablecloth.api/column-names + ds-with-selected-cols__31578__auto__ + tablecloth.api.utils/column-names clojure.core/count) - selected-cols__47429__auto__ - (tablecloth.api/columns ds-with-selected-cols__47427__auto__)] + selected-cols__31580__auto__ + (tablecloth.api.dataset/columns + ds-with-selected-cols__31578__auto__)] (if - (clojure.core/>= 1 cols-count__47428__auto__) + (clojure.core/>= 1 cols-count__31579__auto__) (clojure.core/apply tablecloth.column.api.operators/mean (clojure.core/apply clojure.core/vector - selected-cols__47429__auto__)) + selected-cols__31580__auto__)) (throw (java.lang.Exception. (clojure.core/str "Exceeded maximum number of columns allowed for operation."))))))] - (tablecloth.api/aggregate ds aggregator__47425__auto__)))) + (tablecloth.api.aggregate/aggregate ds aggregator__31576__auto__)))) (defn > "Applies the operation tablecloth.column.api.operators/> to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 3 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [])] (if (clojure.core/>= 3 - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/>) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str @@ -1879,21 +1889,21 @@ "Applies the operation tablecloth.column.api.operators/not-eq to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 2 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [])] (if (clojure.core/>= 2 - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/not-eq) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str @@ -1904,42 +1914,42 @@ "Applies the operation tablecloth.column.api.operators/even? to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector options] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [options])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [options])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/even?) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str "Exceeded maximum number of columns allowed for operation.")))))) ([ds target-col columns-selector] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/even?) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str @@ -1950,42 +1960,42 @@ "Applies the operation tablecloth.column.api.operators/sqrt to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector options] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [options])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [options])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/sqrt) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str "Exceeded maximum number of columns allowed for operation.")))))) ([ds target-col columns-selector] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/sqrt) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str @@ -1996,75 +2006,76 @@ "Applies the operation tablecloth.column.api.operators/reduce-* to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds columns-selector] (let - [aggregator__47425__auto__ + [aggregator__31576__auto__ (clojure.core/fn - [ds__47426__auto__] + [ds__31577__auto__] (let - [ds-with-selected-cols__47427__auto__ - (tablecloth.api/select-columns - ds__47426__auto__ + [ds-with-selected-cols__31578__auto__ + (tablecloth.api.columns/select-columns + ds__31577__auto__ columns-selector) - cols-count__47428__auto__ + cols-count__31579__auto__ (clojure.core/-> - ds-with-selected-cols__47427__auto__ - tablecloth.api/column-names + ds-with-selected-cols__31578__auto__ + tablecloth.api.utils/column-names clojure.core/count) - selected-cols__47429__auto__ - (tablecloth.api/columns ds-with-selected-cols__47427__auto__)] + selected-cols__31580__auto__ + (tablecloth.api.dataset/columns + ds-with-selected-cols__31578__auto__)] (if - (clojure.core/>= 1 cols-count__47428__auto__) + (clojure.core/>= 1 cols-count__31579__auto__) (clojure.core/apply tablecloth.column.api.operators/reduce-* (clojure.core/apply clojure.core/vector - selected-cols__47429__auto__)) + selected-cols__31580__auto__)) (throw (java.lang.Exception. (clojure.core/str "Exceeded maximum number of columns allowed for operation."))))))] - (tablecloth.api/aggregate ds aggregator__47425__auto__)))) + (tablecloth.api.aggregate/aggregate ds aggregator__31576__auto__)))) (defn next-down "Applies the operation tablecloth.column.api.operators/next-down to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector options] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [options])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [options])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/next-down) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str "Exceeded maximum number of columns allowed for operation.")))))) ([ds target-col columns-selector] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/next-down) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str @@ -2075,21 +2086,21 @@ "Applies the operation tablecloth.column.api.operators/- to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. null\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [])] (if (clojure.core/>= ##Inf - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/-) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str @@ -2100,21 +2111,21 @@ "Applies the operation tablecloth.column.api.operators/or to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 2 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [])] (if (clojure.core/>= 2 - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/or) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str @@ -2125,54 +2136,55 @@ "Applies the operation tablecloth.column.api.operators/distance-squared to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 2 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds columns-selector] (let - [aggregator__47425__auto__ + [aggregator__31576__auto__ (clojure.core/fn - [ds__47426__auto__] + [ds__31577__auto__] (let - [ds-with-selected-cols__47427__auto__ - (tablecloth.api/select-columns - ds__47426__auto__ + [ds-with-selected-cols__31578__auto__ + (tablecloth.api.columns/select-columns + ds__31577__auto__ columns-selector) - cols-count__47428__auto__ + cols-count__31579__auto__ (clojure.core/-> - ds-with-selected-cols__47427__auto__ - tablecloth.api/column-names + ds-with-selected-cols__31578__auto__ + tablecloth.api.utils/column-names clojure.core/count) - selected-cols__47429__auto__ - (tablecloth.api/columns ds-with-selected-cols__47427__auto__)] + selected-cols__31580__auto__ + (tablecloth.api.dataset/columns + ds-with-selected-cols__31578__auto__)] (if - (clojure.core/>= 2 cols-count__47428__auto__) + (clojure.core/>= 2 cols-count__31579__auto__) (clojure.core/apply tablecloth.column.api.operators/distance-squared (clojure.core/apply clojure.core/vector - selected-cols__47429__auto__)) + selected-cols__31580__auto__)) (throw (java.lang.Exception. (clojure.core/str "Exceeded maximum number of columns allowed for operation."))))))] - (tablecloth.api/aggregate ds aggregator__47425__auto__)))) + (tablecloth.api.aggregate/aggregate ds aggregator__31576__auto__)))) (defn pow "Applies the operation tablecloth.column.api.operators/pow to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. null\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [])] (if (clojure.core/>= ##Inf - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/pow) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str @@ -2183,42 +2195,42 @@ "Applies the operation tablecloth.column.api.operators/next-up to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector options] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [options])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [options])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/next-up) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str "Exceeded maximum number of columns allowed for operation.")))))) ([ds target-col columns-selector] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/next-up) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str @@ -2229,104 +2241,106 @@ "Applies the operation tablecloth.column.api.operators/skew to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds columns-selector options] (let - [aggregator__47425__auto__ + [aggregator__31576__auto__ (clojure.core/fn - [ds__47426__auto__] + [ds__31577__auto__] (let - [ds-with-selected-cols__47427__auto__ - (tablecloth.api/select-columns - ds__47426__auto__ + [ds-with-selected-cols__31578__auto__ + (tablecloth.api.columns/select-columns + ds__31577__auto__ columns-selector) - cols-count__47428__auto__ + cols-count__31579__auto__ (clojure.core/-> - ds-with-selected-cols__47427__auto__ - tablecloth.api/column-names + ds-with-selected-cols__31578__auto__ + tablecloth.api.utils/column-names clojure.core/count) - selected-cols__47429__auto__ - (tablecloth.api/columns ds-with-selected-cols__47427__auto__)] + selected-cols__31580__auto__ + (tablecloth.api.dataset/columns + ds-with-selected-cols__31578__auto__)] (if - (clojure.core/>= 1 cols-count__47428__auto__) + (clojure.core/>= 1 cols-count__31579__auto__) (clojure.core/apply tablecloth.column.api.operators/skew (clojure.core/apply clojure.core/vector - selected-cols__47429__auto__)) + selected-cols__31580__auto__)) (throw (java.lang.Exception. (clojure.core/str "Exceeded maximum number of columns allowed for operation."))))))] - (tablecloth.api/aggregate ds aggregator__47425__auto__))) + (tablecloth.api.aggregate/aggregate ds aggregator__31576__auto__))) ([ds columns-selector] (let - [aggregator__47425__auto__ + [aggregator__31576__auto__ (clojure.core/fn - [ds__47426__auto__] + [ds__31577__auto__] (let - [ds-with-selected-cols__47427__auto__ - (tablecloth.api/select-columns - ds__47426__auto__ + [ds-with-selected-cols__31578__auto__ + (tablecloth.api.columns/select-columns + ds__31577__auto__ columns-selector) - cols-count__47428__auto__ + cols-count__31579__auto__ (clojure.core/-> - ds-with-selected-cols__47427__auto__ - tablecloth.api/column-names + ds-with-selected-cols__31578__auto__ + tablecloth.api.utils/column-names clojure.core/count) - selected-cols__47429__auto__ - (tablecloth.api/columns ds-with-selected-cols__47427__auto__)] + selected-cols__31580__auto__ + (tablecloth.api.dataset/columns + ds-with-selected-cols__31578__auto__)] (if - (clojure.core/>= 1 cols-count__47428__auto__) + (clojure.core/>= 1 cols-count__31579__auto__) (clojure.core/apply tablecloth.column.api.operators/skew (clojure.core/apply clojure.core/vector - selected-cols__47429__auto__)) + selected-cols__31580__auto__)) (throw (java.lang.Exception. (clojure.core/str "Exceeded maximum number of columns allowed for operation."))))))] - (tablecloth.api/aggregate ds aggregator__47425__auto__)))) + (tablecloth.api.aggregate/aggregate ds aggregator__31576__auto__)))) (defn exp "Applies the operation tablecloth.column.api.operators/exp to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector options] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [options])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [options])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/exp) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str "Exceeded maximum number of columns allowed for operation.")))))) ([ds target-col columns-selector] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/exp) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str @@ -2337,75 +2351,76 @@ "Applies the operation tablecloth.column.api.operators/mean-fast to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds columns-selector] (let - [aggregator__47425__auto__ + [aggregator__31576__auto__ (clojure.core/fn - [ds__47426__auto__] + [ds__31577__auto__] (let - [ds-with-selected-cols__47427__auto__ - (tablecloth.api/select-columns - ds__47426__auto__ + [ds-with-selected-cols__31578__auto__ + (tablecloth.api.columns/select-columns + ds__31577__auto__ columns-selector) - cols-count__47428__auto__ + cols-count__31579__auto__ (clojure.core/-> - ds-with-selected-cols__47427__auto__ - tablecloth.api/column-names + ds-with-selected-cols__31578__auto__ + tablecloth.api.utils/column-names clojure.core/count) - selected-cols__47429__auto__ - (tablecloth.api/columns ds-with-selected-cols__47427__auto__)] + selected-cols__31580__auto__ + (tablecloth.api.dataset/columns + ds-with-selected-cols__31578__auto__)] (if - (clojure.core/>= 1 cols-count__47428__auto__) + (clojure.core/>= 1 cols-count__31579__auto__) (clojure.core/apply tablecloth.column.api.operators/mean-fast (clojure.core/apply clojure.core/vector - selected-cols__47429__auto__)) + selected-cols__31580__auto__)) (throw (java.lang.Exception. (clojure.core/str "Exceeded maximum number of columns allowed for operation."))))))] - (tablecloth.api/aggregate ds aggregator__47425__auto__)))) + (tablecloth.api.aggregate/aggregate ds aggregator__31576__auto__)))) (defn zero? "Applies the operation tablecloth.column.api.operators/zero? to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector options] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [options])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [options])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/zero?) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str "Exceeded maximum number of columns allowed for operation.")))))) ([ds target-col columns-selector] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/zero?) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str @@ -2416,21 +2431,21 @@ "Applies the operation tablecloth.column.api.operators/rem to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. null\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [])] (if (clojure.core/>= ##Inf - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/rem) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str @@ -2441,42 +2456,42 @@ "Applies the operation tablecloth.column.api.operators/cosh to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector options] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [options])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [options])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/cosh) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str "Exceeded maximum number of columns allowed for operation.")))))) ([ds target-col columns-selector] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/cosh) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str @@ -2487,139 +2502,142 @@ "Applies the operation tablecloth.column.api.operators/variance to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds columns-selector options] (let - [aggregator__47425__auto__ + [aggregator__31576__auto__ (clojure.core/fn - [ds__47426__auto__] + [ds__31577__auto__] (let - [ds-with-selected-cols__47427__auto__ - (tablecloth.api/select-columns - ds__47426__auto__ + [ds-with-selected-cols__31578__auto__ + (tablecloth.api.columns/select-columns + ds__31577__auto__ columns-selector) - cols-count__47428__auto__ + cols-count__31579__auto__ (clojure.core/-> - ds-with-selected-cols__47427__auto__ - tablecloth.api/column-names + ds-with-selected-cols__31578__auto__ + tablecloth.api.utils/column-names clojure.core/count) - selected-cols__47429__auto__ - (tablecloth.api/columns ds-with-selected-cols__47427__auto__)] + selected-cols__31580__auto__ + (tablecloth.api.dataset/columns + ds-with-selected-cols__31578__auto__)] (if - (clojure.core/>= 1 cols-count__47428__auto__) + (clojure.core/>= 1 cols-count__31579__auto__) (clojure.core/apply tablecloth.column.api.operators/variance (clojure.core/apply clojure.core/vector - selected-cols__47429__auto__)) + selected-cols__31580__auto__)) (throw (java.lang.Exception. (clojure.core/str "Exceeded maximum number of columns allowed for operation."))))))] - (tablecloth.api/aggregate ds aggregator__47425__auto__))) + (tablecloth.api.aggregate/aggregate ds aggregator__31576__auto__))) ([ds columns-selector] (let - [aggregator__47425__auto__ + [aggregator__31576__auto__ (clojure.core/fn - [ds__47426__auto__] + [ds__31577__auto__] (let - [ds-with-selected-cols__47427__auto__ - (tablecloth.api/select-columns - ds__47426__auto__ + [ds-with-selected-cols__31578__auto__ + (tablecloth.api.columns/select-columns + ds__31577__auto__ columns-selector) - cols-count__47428__auto__ + cols-count__31579__auto__ (clojure.core/-> - ds-with-selected-cols__47427__auto__ - tablecloth.api/column-names + ds-with-selected-cols__31578__auto__ + tablecloth.api.utils/column-names clojure.core/count) - selected-cols__47429__auto__ - (tablecloth.api/columns ds-with-selected-cols__47427__auto__)] + selected-cols__31580__auto__ + (tablecloth.api.dataset/columns + ds-with-selected-cols__31578__auto__)] (if - (clojure.core/>= 1 cols-count__47428__auto__) + (clojure.core/>= 1 cols-count__31579__auto__) (clojure.core/apply tablecloth.column.api.operators/variance (clojure.core/apply clojure.core/vector - selected-cols__47429__auto__)) + selected-cols__31580__auto__)) (throw (java.lang.Exception. (clojure.core/str "Exceeded maximum number of columns allowed for operation."))))))] - (tablecloth.api/aggregate ds aggregator__47425__auto__)))) + (tablecloth.api.aggregate/aggregate ds aggregator__31576__auto__)))) (defn reduce-+ "Applies the operation tablecloth.column.api.operators/reduce-+ to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds columns-selector] (let - [aggregator__47425__auto__ + [aggregator__31576__auto__ (clojure.core/fn - [ds__47426__auto__] + [ds__31577__auto__] (let - [ds-with-selected-cols__47427__auto__ - (tablecloth.api/select-columns - ds__47426__auto__ + [ds-with-selected-cols__31578__auto__ + (tablecloth.api.columns/select-columns + ds__31577__auto__ columns-selector) - cols-count__47428__auto__ + cols-count__31579__auto__ (clojure.core/-> - ds-with-selected-cols__47427__auto__ - tablecloth.api/column-names + ds-with-selected-cols__31578__auto__ + tablecloth.api.utils/column-names clojure.core/count) - selected-cols__47429__auto__ - (tablecloth.api/columns ds-with-selected-cols__47427__auto__)] + selected-cols__31580__auto__ + (tablecloth.api.dataset/columns + ds-with-selected-cols__31578__auto__)] (if - (clojure.core/>= 1 cols-count__47428__auto__) + (clojure.core/>= 1 cols-count__31579__auto__) (clojure.core/apply tablecloth.column.api.operators/reduce-+ (clojure.core/apply clojure.core/vector - selected-cols__47429__auto__)) + selected-cols__31580__auto__)) (throw (java.lang.Exception. (clojure.core/str "Exceeded maximum number of columns allowed for operation."))))))] - (tablecloth.api/aggregate ds aggregator__47425__auto__)))) + (tablecloth.api.aggregate/aggregate ds aggregator__31576__auto__)))) (defn get-significand "Applies the operation tablecloth.column.api.operators/get-significand to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector options] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [options])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [options])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/get-significand) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str "Exceeded maximum number of columns allowed for operation.")))))) ([ds target-col columns-selector] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/get-significand) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str @@ -2630,21 +2648,21 @@ "Applies the operation tablecloth.column.api.operators/bit-and to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. null\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [])] (if (clojure.core/>= ##Inf - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/bit-and) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str @@ -2655,42 +2673,42 @@ "Applies the operation tablecloth.column.api.operators/not to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector options] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [options])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [options])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/not) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str "Exceeded maximum number of columns allowed for operation.")))))) ([ds target-col columns-selector] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/not) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str @@ -2701,42 +2719,42 @@ "Applies the operation tablecloth.column.api.operators/cummin to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector options] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [options])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [options])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/cummin) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str "Exceeded maximum number of columns allowed for operation.")))))) ([ds target-col columns-selector] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/cummin) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str @@ -2747,75 +2765,76 @@ "Applies the operation tablecloth.column.api.operators/magnitude to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds columns-selector] (let - [aggregator__47425__auto__ + [aggregator__31576__auto__ (clojure.core/fn - [ds__47426__auto__] + [ds__31577__auto__] (let - [ds-with-selected-cols__47427__auto__ - (tablecloth.api/select-columns - ds__47426__auto__ + [ds-with-selected-cols__31578__auto__ + (tablecloth.api.columns/select-columns + ds__31577__auto__ columns-selector) - cols-count__47428__auto__ + cols-count__31579__auto__ (clojure.core/-> - ds-with-selected-cols__47427__auto__ - tablecloth.api/column-names + ds-with-selected-cols__31578__auto__ + tablecloth.api.utils/column-names clojure.core/count) - selected-cols__47429__auto__ - (tablecloth.api/columns ds-with-selected-cols__47427__auto__)] + selected-cols__31580__auto__ + (tablecloth.api.dataset/columns + ds-with-selected-cols__31578__auto__)] (if - (clojure.core/>= 1 cols-count__47428__auto__) + (clojure.core/>= 1 cols-count__31579__auto__) (clojure.core/apply tablecloth.column.api.operators/magnitude (clojure.core/apply clojure.core/vector - selected-cols__47429__auto__)) + selected-cols__31580__auto__)) (throw (java.lang.Exception. (clojure.core/str "Exceeded maximum number of columns allowed for operation."))))))] - (tablecloth.api/aggregate ds aggregator__47425__auto__)))) + (tablecloth.api.aggregate/aggregate ds aggregator__31576__auto__)))) (defn cummax "Applies the operation tablecloth.column.api.operators/cummax to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector options] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [options])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [options])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/cummax) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str "Exceeded maximum number of columns allowed for operation.")))))) ([ds target-col columns-selector] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/cummax) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str @@ -2826,21 +2845,21 @@ "Applies the operation tablecloth.column.api.operators// to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. null\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [])] (if (clojure.core/>= ##Inf - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators//) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str @@ -2851,21 +2870,21 @@ "Applies the operation tablecloth.column.api.operators/bit-or to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. null\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [])] (if (clojure.core/>= ##Inf - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/bit-or) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str @@ -2876,21 +2895,21 @@ "Applies the operation tablecloth.column.api.operators/>= to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 3 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [])] (if (clojure.core/>= 3 - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/>=) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str @@ -2901,21 +2920,21 @@ "Applies the operation tablecloth.column.api.operators/bit-flip to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. null\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [])] (if (clojure.core/>= ##Inf - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/bit-flip) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str @@ -2926,42 +2945,42 @@ "Applies the operation tablecloth.column.api.operators/log1p to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector options] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [options])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [options])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/log1p) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str "Exceeded maximum number of columns allowed for operation.")))))) ([ds target-col columns-selector] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/log1p) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str @@ -2972,42 +2991,42 @@ "Applies the operation tablecloth.column.api.operators/asin to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector options] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [options])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [options])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/asin) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str "Exceeded maximum number of columns allowed for operation.")))))) ([ds target-col columns-selector] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/asin) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str @@ -3018,104 +3037,106 @@ "Applies the operation tablecloth.column.api.operators/quartile-3 to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds columns-selector options] (let - [aggregator__47425__auto__ + [aggregator__31576__auto__ (clojure.core/fn - [ds__47426__auto__] + [ds__31577__auto__] (let - [ds-with-selected-cols__47427__auto__ - (tablecloth.api/select-columns - ds__47426__auto__ + [ds-with-selected-cols__31578__auto__ + (tablecloth.api.columns/select-columns + ds__31577__auto__ columns-selector) - cols-count__47428__auto__ + cols-count__31579__auto__ (clojure.core/-> - ds-with-selected-cols__47427__auto__ - tablecloth.api/column-names + ds-with-selected-cols__31578__auto__ + tablecloth.api.utils/column-names clojure.core/count) - selected-cols__47429__auto__ - (tablecloth.api/columns ds-with-selected-cols__47427__auto__)] + selected-cols__31580__auto__ + (tablecloth.api.dataset/columns + ds-with-selected-cols__31578__auto__)] (if - (clojure.core/>= 1 cols-count__47428__auto__) + (clojure.core/>= 1 cols-count__31579__auto__) (clojure.core/apply tablecloth.column.api.operators/quartile-3 (clojure.core/apply clojure.core/vector - selected-cols__47429__auto__)) + selected-cols__31580__auto__)) (throw (java.lang.Exception. (clojure.core/str "Exceeded maximum number of columns allowed for operation."))))))] - (tablecloth.api/aggregate ds aggregator__47425__auto__))) + (tablecloth.api.aggregate/aggregate ds aggregator__31576__auto__))) ([ds columns-selector] (let - [aggregator__47425__auto__ + [aggregator__31576__auto__ (clojure.core/fn - [ds__47426__auto__] + [ds__31577__auto__] (let - [ds-with-selected-cols__47427__auto__ - (tablecloth.api/select-columns - ds__47426__auto__ + [ds-with-selected-cols__31578__auto__ + (tablecloth.api.columns/select-columns + ds__31577__auto__ columns-selector) - cols-count__47428__auto__ + cols-count__31579__auto__ (clojure.core/-> - ds-with-selected-cols__47427__auto__ - tablecloth.api/column-names + ds-with-selected-cols__31578__auto__ + tablecloth.api.utils/column-names clojure.core/count) - selected-cols__47429__auto__ - (tablecloth.api/columns ds-with-selected-cols__47427__auto__)] + selected-cols__31580__auto__ + (tablecloth.api.dataset/columns + ds-with-selected-cols__31578__auto__)] (if - (clojure.core/>= 1 cols-count__47428__auto__) + (clojure.core/>= 1 cols-count__31579__auto__) (clojure.core/apply tablecloth.column.api.operators/quartile-3 (clojure.core/apply clojure.core/vector - selected-cols__47429__auto__)) + selected-cols__31580__auto__)) (throw (java.lang.Exception. (clojure.core/str "Exceeded maximum number of columns allowed for operation."))))))] - (tablecloth.api/aggregate ds aggregator__47425__auto__)))) + (tablecloth.api.aggregate/aggregate ds aggregator__31576__auto__)))) (defn infinite? "Applies the operation tablecloth.column.api.operators/infinite? to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector options] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [options])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [options])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/infinite?) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str "Exceeded maximum number of columns allowed for operation.")))))) ([ds target-col columns-selector] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/infinite?) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str @@ -3126,42 +3147,42 @@ "Applies the operation tablecloth.column.api.operators/round to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector options] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [options])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [options])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/round) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str "Exceeded maximum number of columns allowed for operation.")))))) ([ds target-col columns-selector] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/round) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str @@ -3172,104 +3193,106 @@ "Applies the operation tablecloth.column.api.operators/quartile-1 to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds columns-selector options] (let - [aggregator__47425__auto__ + [aggregator__31576__auto__ (clojure.core/fn - [ds__47426__auto__] + [ds__31577__auto__] (let - [ds-with-selected-cols__47427__auto__ - (tablecloth.api/select-columns - ds__47426__auto__ + [ds-with-selected-cols__31578__auto__ + (tablecloth.api.columns/select-columns + ds__31577__auto__ columns-selector) - cols-count__47428__auto__ + cols-count__31579__auto__ (clojure.core/-> - ds-with-selected-cols__47427__auto__ - tablecloth.api/column-names + ds-with-selected-cols__31578__auto__ + tablecloth.api.utils/column-names clojure.core/count) - selected-cols__47429__auto__ - (tablecloth.api/columns ds-with-selected-cols__47427__auto__)] + selected-cols__31580__auto__ + (tablecloth.api.dataset/columns + ds-with-selected-cols__31578__auto__)] (if - (clojure.core/>= 1 cols-count__47428__auto__) + (clojure.core/>= 1 cols-count__31579__auto__) (clojure.core/apply tablecloth.column.api.operators/quartile-1 (clojure.core/apply clojure.core/vector - selected-cols__47429__auto__)) + selected-cols__31580__auto__)) (throw (java.lang.Exception. (clojure.core/str "Exceeded maximum number of columns allowed for operation."))))))] - (tablecloth.api/aggregate ds aggregator__47425__auto__))) + (tablecloth.api.aggregate/aggregate ds aggregator__31576__auto__))) ([ds columns-selector] (let - [aggregator__47425__auto__ + [aggregator__31576__auto__ (clojure.core/fn - [ds__47426__auto__] + [ds__31577__auto__] (let - [ds-with-selected-cols__47427__auto__ - (tablecloth.api/select-columns - ds__47426__auto__ + [ds-with-selected-cols__31578__auto__ + (tablecloth.api.columns/select-columns + ds__31577__auto__ columns-selector) - cols-count__47428__auto__ + cols-count__31579__auto__ (clojure.core/-> - ds-with-selected-cols__47427__auto__ - tablecloth.api/column-names + ds-with-selected-cols__31578__auto__ + tablecloth.api.utils/column-names clojure.core/count) - selected-cols__47429__auto__ - (tablecloth.api/columns ds-with-selected-cols__47427__auto__)] + selected-cols__31580__auto__ + (tablecloth.api.dataset/columns + ds-with-selected-cols__31578__auto__)] (if - (clojure.core/>= 1 cols-count__47428__auto__) + (clojure.core/>= 1 cols-count__31579__auto__) (clojure.core/apply tablecloth.column.api.operators/quartile-1 (clojure.core/apply clojure.core/vector - selected-cols__47429__auto__)) + selected-cols__31580__auto__)) (throw (java.lang.Exception. (clojure.core/str "Exceeded maximum number of columns allowed for operation."))))))] - (tablecloth.api/aggregate ds aggregator__47425__auto__)))) + (tablecloth.api.aggregate/aggregate ds aggregator__31576__auto__)))) (defn odd? "Applies the operation tablecloth.column.api.operators/odd? to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector options] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [options])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [options])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/odd?) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str "Exceeded maximum number of columns allowed for operation.")))))) ([ds target-col columns-selector] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/odd?) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str @@ -3280,21 +3303,21 @@ "Applies the operation tablecloth.column.api.operators/bit-clear to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. null\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [])] (if (clojure.core/>= ##Inf - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/bit-clear) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str @@ -3305,21 +3328,21 @@ "Applies the operation tablecloth.column.api.operators/+ to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. null\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [])] (if (clojure.core/>= ##Inf - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/+) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str @@ -3330,42 +3353,42 @@ "Applies the operation tablecloth.column.api.operators/abs to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector options] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [options])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [options])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/abs) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str "Exceeded maximum number of columns allowed for operation.")))))) ([ds target-col columns-selector] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/abs) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str @@ -3376,104 +3399,106 @@ "Applies the operation tablecloth.column.api.operators/median to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds columns-selector options] (let - [aggregator__47425__auto__ + [aggregator__31576__auto__ (clojure.core/fn - [ds__47426__auto__] + [ds__31577__auto__] (let - [ds-with-selected-cols__47427__auto__ - (tablecloth.api/select-columns - ds__47426__auto__ + [ds-with-selected-cols__31578__auto__ + (tablecloth.api.columns/select-columns + ds__31577__auto__ columns-selector) - cols-count__47428__auto__ + cols-count__31579__auto__ (clojure.core/-> - ds-with-selected-cols__47427__auto__ - tablecloth.api/column-names + ds-with-selected-cols__31578__auto__ + tablecloth.api.utils/column-names clojure.core/count) - selected-cols__47429__auto__ - (tablecloth.api/columns ds-with-selected-cols__47427__auto__)] + selected-cols__31580__auto__ + (tablecloth.api.dataset/columns + ds-with-selected-cols__31578__auto__)] (if - (clojure.core/>= 1 cols-count__47428__auto__) + (clojure.core/>= 1 cols-count__31579__auto__) (clojure.core/apply tablecloth.column.api.operators/median (clojure.core/apply clojure.core/vector - selected-cols__47429__auto__)) + selected-cols__31580__auto__)) (throw (java.lang.Exception. (clojure.core/str "Exceeded maximum number of columns allowed for operation."))))))] - (tablecloth.api/aggregate ds aggregator__47425__auto__))) + (tablecloth.api.aggregate/aggregate ds aggregator__31576__auto__))) ([ds columns-selector] (let - [aggregator__47425__auto__ + [aggregator__31576__auto__ (clojure.core/fn - [ds__47426__auto__] + [ds__31577__auto__] (let - [ds-with-selected-cols__47427__auto__ - (tablecloth.api/select-columns - ds__47426__auto__ + [ds-with-selected-cols__31578__auto__ + (tablecloth.api.columns/select-columns + ds__31577__auto__ columns-selector) - cols-count__47428__auto__ + cols-count__31579__auto__ (clojure.core/-> - ds-with-selected-cols__47427__auto__ - tablecloth.api/column-names + ds-with-selected-cols__31578__auto__ + tablecloth.api.utils/column-names clojure.core/count) - selected-cols__47429__auto__ - (tablecloth.api/columns ds-with-selected-cols__47427__auto__)] + selected-cols__31580__auto__ + (tablecloth.api.dataset/columns + ds-with-selected-cols__31578__auto__)] (if - (clojure.core/>= 1 cols-count__47428__auto__) + (clojure.core/>= 1 cols-count__31579__auto__) (clojure.core/apply tablecloth.column.api.operators/median (clojure.core/apply clojure.core/vector - selected-cols__47429__auto__)) + selected-cols__31580__auto__)) (throw (java.lang.Exception. (clojure.core/str "Exceeded maximum number of columns allowed for operation."))))))] - (tablecloth.api/aggregate ds aggregator__47425__auto__)))) + (tablecloth.api.aggregate/aggregate ds aggregator__31576__auto__)))) (defn sinh "Applies the operation tablecloth.column.api.operators/sinh to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector options] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [options])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [options])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/sinh) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str "Exceeded maximum number of columns allowed for operation.")))))) ([ds target-col columns-selector] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/sinh) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str @@ -3484,42 +3509,42 @@ "Applies the operation tablecloth.column.api.operators/rint to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector options] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [options])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [options])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/rint) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str "Exceeded maximum number of columns allowed for operation.")))))) ([ds target-col columns-selector] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/rint) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str @@ -3530,42 +3555,42 @@ "Applies the operation tablecloth.column.api.operators/bit-not to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector options] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [options])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [options])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/bit-not) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str "Exceeded maximum number of columns allowed for operation.")))))) ([ds target-col columns-selector] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/bit-not) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str @@ -3576,21 +3601,21 @@ "Applies the operation tablecloth.column.api.operators/max to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. null\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [])] (if (clojure.core/>= ##Inf - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/max) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str @@ -3601,42 +3626,42 @@ "Applies the operation tablecloth.column.api.operators/ulp to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector options] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [options])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [options])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/ulp) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str "Exceeded maximum number of columns allowed for operation.")))))) ([ds target-col columns-selector] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/ulp) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str @@ -3647,44 +3672,44 @@ "Applies the operation tablecloth.column.api.operators/percentiles to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector percentages options] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ (clojure.core/concat - selected-cols__47430__auto__ + selected-cols__31581__auto__ [percentages options])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/percentiles) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str "Exceeded maximum number of columns allowed for operation.")))))) ([ds target-col columns-selector percentages] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [percentages])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [percentages])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/percentiles) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str @@ -3695,42 +3720,42 @@ "Applies the operation tablecloth.column.api.operators/sin to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector options] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [options])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [options])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/sin) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str "Exceeded maximum number of columns allowed for operation.")))))) ([ds target-col columns-selector] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/sin) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str @@ -3741,75 +3766,76 @@ "Applies the operation tablecloth.column.api.operators/sum-fast to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds columns-selector] (let - [aggregator__47425__auto__ + [aggregator__31576__auto__ (clojure.core/fn - [ds__47426__auto__] + [ds__31577__auto__] (let - [ds-with-selected-cols__47427__auto__ - (tablecloth.api/select-columns - ds__47426__auto__ + [ds-with-selected-cols__31578__auto__ + (tablecloth.api.columns/select-columns + ds__31577__auto__ columns-selector) - cols-count__47428__auto__ + cols-count__31579__auto__ (clojure.core/-> - ds-with-selected-cols__47427__auto__ - tablecloth.api/column-names + ds-with-selected-cols__31578__auto__ + tablecloth.api.utils/column-names clojure.core/count) - selected-cols__47429__auto__ - (tablecloth.api/columns ds-with-selected-cols__47427__auto__)] + selected-cols__31580__auto__ + (tablecloth.api.dataset/columns + ds-with-selected-cols__31578__auto__)] (if - (clojure.core/>= 1 cols-count__47428__auto__) + (clojure.core/>= 1 cols-count__31579__auto__) (clojure.core/apply tablecloth.column.api.operators/sum-fast (clojure.core/apply clojure.core/vector - selected-cols__47429__auto__)) + selected-cols__31580__auto__)) (throw (java.lang.Exception. (clojure.core/str "Exceeded maximum number of columns allowed for operation."))))))] - (tablecloth.api/aggregate ds aggregator__47425__auto__)))) + (tablecloth.api.aggregate/aggregate ds aggregator__31576__auto__)))) (defn signum "Applies the operation tablecloth.column.api.operators/signum to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector options] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [options])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [options])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/signum) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str "Exceeded maximum number of columns allowed for operation.")))))) ([ds target-col columns-selector] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [])] (if (clojure.core/>= 1 - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/signum) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str @@ -3820,54 +3846,55 @@ "Applies the operation tablecloth.column.api.operators/magnitude-squared to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 1 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds columns-selector] (let - [aggregator__47425__auto__ + [aggregator__31576__auto__ (clojure.core/fn - [ds__47426__auto__] + [ds__31577__auto__] (let - [ds-with-selected-cols__47427__auto__ - (tablecloth.api/select-columns - ds__47426__auto__ + [ds-with-selected-cols__31578__auto__ + (tablecloth.api.columns/select-columns + ds__31577__auto__ columns-selector) - cols-count__47428__auto__ + cols-count__31579__auto__ (clojure.core/-> - ds-with-selected-cols__47427__auto__ - tablecloth.api/column-names + ds-with-selected-cols__31578__auto__ + tablecloth.api.utils/column-names clojure.core/count) - selected-cols__47429__auto__ - (tablecloth.api/columns ds-with-selected-cols__47427__auto__)] + selected-cols__31580__auto__ + (tablecloth.api.dataset/columns + ds-with-selected-cols__31578__auto__)] (if - (clojure.core/>= 1 cols-count__47428__auto__) + (clojure.core/>= 1 cols-count__31579__auto__) (clojure.core/apply tablecloth.column.api.operators/magnitude-squared (clojure.core/apply clojure.core/vector - selected-cols__47429__auto__)) + selected-cols__31580__auto__)) (throw (java.lang.Exception. (clojure.core/str "Exceeded maximum number of columns allowed for operation."))))))] - (tablecloth.api/aggregate ds aggregator__47425__auto__)))) + (tablecloth.api.aggregate/aggregate ds aggregator__31576__auto__)))) (defn and "Applies the operation tablecloth.column.api.operators/and to the columns selected by\n `columns-selector` and returns a new ds with the the result in\n `target-col`. This operation takes a maximum of 2 columns, so\n `columns-selector` can yield no more than that many columns.\n \n `columns-selector can be:\n - name\n - sequence of names\n - map of names with new names (rename)\n - function which filter names (via column metadata)" ([ds target-col columns-selector] (let - [selected-cols__47430__auto__ + [selected-cols__31581__auto__ (clojure.core/apply clojure.core/vector (tablecloth.api.dataset/columns - (tablecloth.api/select-columns ds columns-selector))) - args-to-pass__47431__auto__ - (clojure.core/concat selected-cols__47430__auto__ [])] + (tablecloth.api.columns/select-columns ds columns-selector))) + args-to-pass__31582__auto__ + (clojure.core/concat selected-cols__31581__auto__ [])] (if (clojure.core/>= 2 - (clojure.core/count selected-cols__47430__auto__)) + (clojure.core/count selected-cols__31581__auto__)) (clojure.core/->> - args-to-pass__47431__auto__ + args-to-pass__31582__auto__ (clojure.core/apply tablecloth.column.api.operators/and) - (tablecloth.api/add-or-replace-column ds target-col)) + (tablecloth.api.columns/add-or-replace-column ds target-col)) (throw (java.lang.Exception. (clojure.core/str diff --git a/src/tablecloth/column/api.clj b/src/tablecloth/column/api.clj index 34a249d..b7fd473 100644 --- a/src/tablecloth/column/api.clj +++ b/src/tablecloth/column/api.clj @@ -4,8 +4,195 @@ (:require [tablecloth.column.api.api-template] [tablecloth.column.api.column] [tablecloth.column.api.missing] + [tablecloth.column.api.operators] [tech.v3.dataset.column])) +(defn * + ([x y] + (tablecloth.column.api.operators/* x y)) + ([x y & args] + (apply tablecloth.column.api.operators/* x y args))) + + +(defn + + ([x] + (tablecloth.column.api.operators/+ x)) + ([x y] + (tablecloth.column.api.operators/+ x y)) + ([x y & args] + (apply tablecloth.column.api.operators/+ x y args))) + + +(defn - + ([x] + (tablecloth.column.api.operators/- x)) + ([x y] + (tablecloth.column.api.operators/- x y)) + ([x y & args] + (apply tablecloth.column.api.operators/- x y args))) + + +(defn / + ([x] + (tablecloth.column.api.operators// x)) + ([x y] + (tablecloth.column.api.operators// x y)) + ([x y & args] + (apply tablecloth.column.api.operators// x y args))) + + +(defn < + ([x y z] + (tablecloth.column.api.operators/< x y z)) + ([x y] + (tablecloth.column.api.operators/< x y))) + + +(defn <= + ([x y z] + (tablecloth.column.api.operators/<= x y z)) + ([x y] + (tablecloth.column.api.operators/<= x y))) + + +(defn > + ([x y z] + (tablecloth.column.api.operators/> x y z)) + ([x y] + (tablecloth.column.api.operators/> x y))) + + +(defn >= + ([x y z] + (tablecloth.column.api.operators/>= x y z)) + ([x y] + (tablecloth.column.api.operators/>= x y))) + + +(defn abs + ([x options] + (tablecloth.column.api.operators/abs x options)) + ([x] + (tablecloth.column.api.operators/abs x))) + + +(defn acos + ([x options] + (tablecloth.column.api.operators/acos x options)) + ([x] + (tablecloth.column.api.operators/acos x))) + + +(defn and + ([x y] + (tablecloth.column.api.operators/and x y))) + + +(defn asin + ([x options] + (tablecloth.column.api.operators/asin x options)) + ([x] + (tablecloth.column.api.operators/asin x))) + + +(defn atan + ([x options] + (tablecloth.column.api.operators/atan x options)) + ([x] + (tablecloth.column.api.operators/atan x))) + + +(defn atan2 + ([x y] + (tablecloth.column.api.operators/atan2 x y)) + ([x y & args] + (apply tablecloth.column.api.operators/atan2 x y args))) + + +(defn bit-and + ([x y] + (tablecloth.column.api.operators/bit-and x y)) + ([x y & args] + (apply tablecloth.column.api.operators/bit-and x y args))) + + +(defn bit-and-not + ([x y] + (tablecloth.column.api.operators/bit-and-not x y)) + ([x y & args] + (apply tablecloth.column.api.operators/bit-and-not x y args))) + + +(defn bit-clear + ([x y] + (tablecloth.column.api.operators/bit-clear x y)) + ([x y & args] + (apply tablecloth.column.api.operators/bit-clear x y args))) + + +(defn bit-flip + ([x y] + (tablecloth.column.api.operators/bit-flip x y)) + ([x y & args] + (apply tablecloth.column.api.operators/bit-flip x y args))) + + +(defn bit-not + ([x options] + (tablecloth.column.api.operators/bit-not x options)) + ([x] + (tablecloth.column.api.operators/bit-not x))) + + +(defn bit-or + ([x y] + (tablecloth.column.api.operators/bit-or x y)) + ([x y & args] + (apply tablecloth.column.api.operators/bit-or x y args))) + + +(defn bit-set + ([x y] + (tablecloth.column.api.operators/bit-set x y)) + ([x y & args] + (apply tablecloth.column.api.operators/bit-set x y args))) + + +(defn bit-shift-left + ([x y] + (tablecloth.column.api.operators/bit-shift-left x y)) + ([x y & args] + (apply tablecloth.column.api.operators/bit-shift-left x y args))) + + +(defn bit-shift-right + ([x y] + (tablecloth.column.api.operators/bit-shift-right x y)) + ([x y & args] + (apply tablecloth.column.api.operators/bit-shift-right x y args))) + + +(defn bit-xor + ([x y] + (tablecloth.column.api.operators/bit-xor x y)) + ([x y & args] + (apply tablecloth.column.api.operators/bit-xor x y args))) + + +(defn cbrt + ([x options] + (tablecloth.column.api.operators/cbrt x options)) + ([x] + (tablecloth.column.api.operators/cbrt x))) + + +(defn ceil + ([x options] + (tablecloth.column.api.operators/ceil x options)) + ([x] + (tablecloth.column.api.operators/ceil x))) + + (defn column "Create a `column` from a vector or sequence. " ([] @@ -40,36 +227,471 @@ (tablecloth.column.api.column/column? item))) +(defn cos + ([x options] + (tablecloth.column.api.operators/cos x options)) + ([x] + (tablecloth.column.api.operators/cos x))) + + +(defn cosh + ([x options] + (tablecloth.column.api.operators/cosh x options)) + ([x] + (tablecloth.column.api.operators/cosh x))) + + (defn count-missing "Returns the number of missing values in column `col`. " ([col] (tablecloth.column.api.missing/count-missing col))) +(defn cummax + "Cumulative running max; returns result in double space. + + Options: + + * `:nan-strategy` - one of `:keep`, `:remove`, `:exception`. Defaults to `:remove`." + ([x options] + (tablecloth.column.api.operators/cummax x options)) + ([x] + (tablecloth.column.api.operators/cummax x))) + + +(defn cummin + "Cumulative running min; returns result in double space. + + Options: + + * `:nan-strategy` - one of `:keep`, `:remove`, `:exception`. Defaults to `:remove`." + ([x options] + (tablecloth.column.api.operators/cummin x options)) + ([x] + (tablecloth.column.api.operators/cummin x))) + + +(defn cumprod + "Cumulative running product; returns result in double space. + + Options: + + * `:nan-strategy` - one of `:keep`, `:remove`, `:exception`. Defaults to `:remove`." + ([x options] + (tablecloth.column.api.operators/cumprod x options)) + ([x] + (tablecloth.column.api.operators/cumprod x))) + + +(defn cumsum + "Cumulative running summation; returns result in double space. + + Options: + + * `:nan-strategy` - one of `:keep`, `:remove`, `:exception`. Defaults to `:remove`." + ([x options] + (tablecloth.column.api.operators/cumsum x options)) + ([x] + (tablecloth.column.api.operators/cumsum x))) + + +(defn descriptive-statistics + "Calculate a set of descriptive statistics on a single reader. + + Available stats: + #{:min :quartile-1 :sum :mean :mode :median :quartile-3 :max + :variance :standard-deviation :skew :n-elems :kurtosis} + + options + - `:nan-strategy` - defaults to :remove, one of + [:keep :remove :exception]. The fastest option is :keep but this + may result in your results having NaN's in them. You can also pass + in a double predicate to filter custom double values." + ([x stats-names stats-data options] + (tablecloth.column.api.operators/descriptive-statistics x stats-names stats-data options)) + ([x stats-names options] + (tablecloth.column.api.operators/descriptive-statistics x stats-names options)) + ([x stats-names] + (tablecloth.column.api.operators/descriptive-statistics x stats-names)) + ([x] + (tablecloth.column.api.operators/descriptive-statistics x))) + + +(defn distance + ([x y] + (tablecloth.column.api.operators/distance x y))) + + +(defn distance-squared + ([x y] + (tablecloth.column.api.operators/distance-squared x y))) + + +(defn dot-product + ([x y] + (tablecloth.column.api.operators/dot-product x y))) + + (defn drop-missing "Remove missing values from column `col`." ([col] (tablecloth.column.api.missing/drop-missing col))) +(defn eq + ([x y] + (tablecloth.column.api.operators/eq x y))) + + +(defn equals + ([x y & args] + (apply tablecloth.column.api.operators/equals x y args))) + + +(defn even? + ([x options] + (tablecloth.column.api.operators/even? x options)) + ([x] + (tablecloth.column.api.operators/even? x))) + + +(defn exp + ([x options] + (tablecloth.column.api.operators/exp x options)) + ([x] + (tablecloth.column.api.operators/exp x))) + + +(defn expm1 + ([x options] + (tablecloth.column.api.operators/expm1 x options)) + ([x] + (tablecloth.column.api.operators/expm1 x))) + + +(defn fill-range + "Given a reader of numeric data and a max span amount, produce + a new reader where the difference between any two consecutive elements + is less than or equal to the max span amount. Also return a bitmap of the added + indexes. Uses linear interpolation to fill in areas, operates in double space. + Returns + {:result :missing}" + ([x max-span] + (tablecloth.column.api.operators/fill-range x max-span))) + + +(defn finite? + ([x options] + (tablecloth.column.api.operators/finite? x options)) + ([x] + (tablecloth.column.api.operators/finite? x))) + + +(defn floor + ([x options] + (tablecloth.column.api.operators/floor x options)) + ([x] + (tablecloth.column.api.operators/floor x))) + + +(defn get-significand + ([x options] + (tablecloth.column.api.operators/get-significand x options)) + ([x] + (tablecloth.column.api.operators/get-significand x))) + + +(defn hypot + ([x y] + (tablecloth.column.api.operators/hypot x y)) + ([x y & args] + (apply tablecloth.column.api.operators/hypot x y args))) + + +(defn identity + ([x options] + (tablecloth.column.api.operators/identity x options)) + ([x] + (tablecloth.column.api.operators/identity x))) + + +(defn ieee-remainder + ([x y] + (tablecloth.column.api.operators/ieee-remainder x y)) + ([x y & args] + (apply tablecloth.column.api.operators/ieee-remainder x y args))) + + +(defn infinite? + ([x options] + (tablecloth.column.api.operators/infinite? x options)) + ([x] + (tablecloth.column.api.operators/infinite? x))) + + (defn is-missing? "Return true if this index is missing." ([col idx] (tech.v3.dataset.column/is-missing? col idx))) +(defn kendalls-correlation + ([x y options] + (tablecloth.column.api.operators/kendalls-correlation x y options)) + ([x y] + (tablecloth.column.api.operators/kendalls-correlation x y))) + + +(defn kurtosis + ([x options] + (tablecloth.column.api.operators/kurtosis x options)) + ([x] + (tablecloth.column.api.operators/kurtosis x))) + + +(defn log + ([x options] + (tablecloth.column.api.operators/log x options)) + ([x] + (tablecloth.column.api.operators/log x))) + + +(defn log10 + ([x options] + (tablecloth.column.api.operators/log10 x options)) + ([x] + (tablecloth.column.api.operators/log10 x))) + + +(defn log1p + ([x options] + (tablecloth.column.api.operators/log1p x options)) + ([x] + (tablecloth.column.api.operators/log1p x))) + + +(defn logistic + ([x options] + (tablecloth.column.api.operators/logistic x options)) + ([x] + (tablecloth.column.api.operators/logistic x))) + + +(defn magnitude + ([x] + (tablecloth.column.api.operators/magnitude x))) + + +(defn magnitude-squared + ([x] + (tablecloth.column.api.operators/magnitude-squared x))) + + +(defn mathematical-integer? + ([x options] + (tablecloth.column.api.operators/mathematical-integer? x options)) + ([x] + (tablecloth.column.api.operators/mathematical-integer? x))) + + +(defn max + ([x] + (tablecloth.column.api.operators/max x)) + ([x y] + (tablecloth.column.api.operators/max x y)) + ([x y & args] + (apply tablecloth.column.api.operators/max x y args))) + + +(defn mean + "double mean of x" + ([x options] + (tablecloth.column.api.operators/mean x options)) + ([x] + (tablecloth.column.api.operators/mean x))) + + +(defn mean-fast + "Take the mean of the x. This operation doesn't know anything about nan hence it is + a bit faster than the base [[mean]] fn." + ([x] + (tablecloth.column.api.operators/mean-fast x))) + + +(defn median + ([x options] + (tablecloth.column.api.operators/median x options)) + ([x] + (tablecloth.column.api.operators/median x))) + + +(defn min + ([x] + (tablecloth.column.api.operators/min x)) + ([x y] + (tablecloth.column.api.operators/min x y)) + ([x y & args] + (apply tablecloth.column.api.operators/min x y args))) + + (defn missing "Indexes of missing values. Both iterable and reader." (^{:tag org.roaringbitmap.RoaringBitmap} [col] (tech.v3.dataset.column/missing col))) +(defn nan? + ([x options] + (tablecloth.column.api.operators/nan? x options)) + ([x] + (tablecloth.column.api.operators/nan? x))) + + +(defn neg? + ([x options] + (tablecloth.column.api.operators/neg? x options)) + ([x] + (tablecloth.column.api.operators/neg? x))) + + +(defn next-down + ([x options] + (tablecloth.column.api.operators/next-down x options)) + ([x] + (tablecloth.column.api.operators/next-down x))) + + +(defn next-up + ([x options] + (tablecloth.column.api.operators/next-up x options)) + ([x] + (tablecloth.column.api.operators/next-up x))) + + +(defn normalize + ([x] + (tablecloth.column.api.operators/normalize x))) + + +(defn not + ([x options] + (tablecloth.column.api.operators/not x options)) + ([x] + (tablecloth.column.api.operators/not x))) + + +(defn not-eq + ([x y] + (tablecloth.column.api.operators/not-eq x y))) + + +(defn odd? + ([x options] + (tablecloth.column.api.operators/odd? x options)) + ([x] + (tablecloth.column.api.operators/odd? x))) + + (defn ones "Creates a new column filled with `n-ones`" ([n-ones] (tablecloth.column.api.column/ones n-ones))) +(defn or + ([x y] + (tablecloth.column.api.operators/or x y))) + + +(defn pearsons-correlation + ([x y options] + (tablecloth.column.api.operators/pearsons-correlation x y options)) + ([x y] + (tablecloth.column.api.operators/pearsons-correlation x y))) + + +(defn percentiles + "Create a reader of percentile values, one for each percentage passed in. + Estimation types are in the set of #{:r1,r2...legacy} and are described + here: https://commons.apache.org/proper/commons-math/javadocs/api-3.3/index.html. + + nan-strategy can be one of [:keep :remove :exception] and defaults to :exception." + ([x percentages options] + (tablecloth.column.api.operators/percentiles x percentages options)) + ([x percentages] + (tablecloth.column.api.operators/percentiles x percentages))) + + +(defn pos? + ([x options] + (tablecloth.column.api.operators/pos? x options)) + ([x] + (tablecloth.column.api.operators/pos? x))) + + +(defn pow + ([x y] + (tablecloth.column.api.operators/pow x y)) + ([x y & args] + (apply tablecloth.column.api.operators/pow x y args))) + + +(defn quartile-1 + ([x options] + (tablecloth.column.api.operators/quartile-1 x options)) + ([x] + (tablecloth.column.api.operators/quartile-1 x))) + + +(defn quartile-3 + ([x options] + (tablecloth.column.api.operators/quartile-3 x options)) + ([x] + (tablecloth.column.api.operators/quartile-3 x))) + + +(defn quartiles + "return [min, 25 50 75 max] of item" + ([x] + (tablecloth.column.api.operators/quartiles x)) + ([x options] + (tablecloth.column.api.operators/quartiles x options))) + + +(defn quot + ([x y] + (tablecloth.column.api.operators/quot x y)) + ([x y & args] + (apply tablecloth.column.api.operators/quot x y args))) + + +(defn reduce-* + ([x] + (tablecloth.column.api.operators/reduce-* x))) + + +(defn reduce-+ + ([x] + (tablecloth.column.api.operators/reduce-+ x))) + + +(defn reduce-max + ([x] + (tablecloth.column.api.operators/reduce-max x))) + + +(defn reduce-min + ([x] + (tablecloth.column.api.operators/reduce-min x))) + + +(defn rem + ([x y] + (tablecloth.column.api.operators/rem x y)) + ([x y & args] + (apply tablecloth.column.api.operators/rem x y args))) + + (defn replace-missing "Replace missing values in column `col` with give `strategy`. @@ -95,6 +717,22 @@ (tablecloth.column.api.missing/replace-missing col strategy value))) +(defn rint + ([x options] + (tablecloth.column.api.operators/rint x options)) + ([x] + (tablecloth.column.api.operators/rint x))) + + +(defn round + "Vectorized implementation of Math/round. Operates in double space + but returns a long or long reader." + ([x options] + (tablecloth.column.api.operators/round x options)) + ([x] + (tablecloth.column.api.operators/round x))) + + (defn select "Return a new column with the subset of indexes based on the provided `selection`. `selection` can be a list of indexes to select or boolean values where the index @@ -105,6 +743,49 @@ (tech.v3.dataset.column/select col selection))) +(defn shift + "Shift by n and fill in with the first element for n>0 or last element for n<0. + + Examples: + +```clojure +user> (dfn/shift (range 10) 2) +[0 0 0 1 2 3 4 5 6 7] +user> (dfn/shift (range 10) -2) +[2 3 4 5 6 7 8 9 9 9] +```" + ([x n] + (tablecloth.column.api.operators/shift x n))) + + +(defn signum + ([x options] + (tablecloth.column.api.operators/signum x options)) + ([x] + (tablecloth.column.api.operators/signum x))) + + +(defn sin + ([x options] + (tablecloth.column.api.operators/sin x options)) + ([x] + (tablecloth.column.api.operators/sin x))) + + +(defn sinh + ([x options] + (tablecloth.column.api.operators/sinh x options)) + ([x] + (tablecloth.column.api.operators/sinh x))) + + +(defn skew + ([x options] + (tablecloth.column.api.operators/skew x options)) + ([x] + (tablecloth.column.api.operators/skew x))) + + (defn slice "Returns a subset of the column defined by the inclusive `from` and `to` indexes. If `to` is not provided, slices to the end of the @@ -141,6 +822,80 @@ (tablecloth.column.api.column/sort-column col order-or-comparator))) +(defn spearmans-correlation + ([x y options] + (tablecloth.column.api.operators/spearmans-correlation x y options)) + ([x y] + (tablecloth.column.api.operators/spearmans-correlation x y))) + + +(defn sq + ([x options] + (tablecloth.column.api.operators/sq x options)) + ([x] + (tablecloth.column.api.operators/sq x))) + + +(defn sqrt + ([x options] + (tablecloth.column.api.operators/sqrt x options)) + ([x] + (tablecloth.column.api.operators/sqrt x))) + + +(defn standard-deviation + ([x options] + (tablecloth.column.api.operators/standard-deviation x options)) + ([x] + (tablecloth.column.api.operators/standard-deviation x))) + + +(defn sum + "Double sum of data using + [Kahan compensated summation](https://en.wikipedia.org/wiki/Kahan_summation_algorithm)." + ([x options] + (tablecloth.column.api.operators/sum x options)) + ([x] + (tablecloth.column.api.operators/sum x))) + + +(defn sum-fast + "Find the sum of the data. This operation is neither nan-aware nor does it implement + kahans compensation although via parallelization it implements pairwise summation + compensation. For a more but slightly slower but far more correct sum operator, + use [[sum]]." + ([x] + (tablecloth.column.api.operators/sum-fast x))) + + +(defn tan + ([x options] + (tablecloth.column.api.operators/tan x options)) + ([x] + (tablecloth.column.api.operators/tan x))) + + +(defn tanh + ([x options] + (tablecloth.column.api.operators/tanh x options)) + ([x] + (tablecloth.column.api.operators/tanh x))) + + +(defn to-degrees + ([x options] + (tablecloth.column.api.operators/to-degrees x options)) + ([x] + (tablecloth.column.api.operators/to-degrees x))) + + +(defn to-radians + ([x options] + (tablecloth.column.api.operators/to-radians x options)) + ([x] + (tablecloth.column.api.operators/to-radians x))) + + (defn typeof "Returns the concrete type of the elements within the column `col`." ([col] @@ -154,6 +909,34 @@ (tablecloth.column.api.column/typeof? col datatype))) +(defn ulp + ([x options] + (tablecloth.column.api.operators/ulp x options)) + ([x] + (tablecloth.column.api.operators/ulp x))) + + +(defn unsigned-bit-shift-right + ([x y] + (tablecloth.column.api.operators/unsigned-bit-shift-right x y)) + ([x y & args] + (apply tablecloth.column.api.operators/unsigned-bit-shift-right x y args))) + + +(defn variance + ([x options] + (tablecloth.column.api.operators/variance x options)) + ([x] + (tablecloth.column.api.operators/variance x))) + + +(defn zero? + ([x options] + (tablecloth.column.api.operators/zero? x options)) + ([x] + (tablecloth.column.api.operators/zero? x))) + + (defn zeros "Create a new column filled wth `n-zeros`." ([n-zeros] diff --git a/src/tablecloth/column/api/api_template.clj b/src/tablecloth/column/api/api_template.clj index 11a0047..e7d4096 100644 --- a/src/tablecloth/column/api/api_template.clj +++ b/src/tablecloth/column/api/api_template.clj @@ -23,6 +23,9 @@ missing select) +(exporter/export-symbols tablecloth.column.api.operators + * + - / < <= > >= abs acos and asin atan atan2 bit-and bit-and-not bit-clear bit-flip bit-not bit-or bit-set bit-shift-left bit-shift-right bit-xor cbrt ceil cos cosh cummax cummin cumprod cumsum descriptive-statistics distance distance-squared dot-product eq equals even? exp expm1 fill-range finite? floor get-significand hypot identity ieee-remainder infinite? kendalls-correlation kurtosis log log10 log1p logistic magnitude magnitude-squared mathematical-integer? max mean mean-fast median min nan? neg? next-down next-up normalize not not-eq odd? or pearsons-correlation percentiles pos? pow quartile-1 quartile-3 quartiles quot reduce-* reduce-+ reduce-max reduce-min rem rint round shift signum sin sinh skew spearmans-correlation sq sqrt standard-deviation sum sum-fast tan tanh to-degrees to-radians ulp unsigned-bit-shift-right variance zero?) + (comment ;; Use this to generate the column api (exporter/write-api! 'tablecloth.column.api.api-template diff --git a/src/tablecloth/column/api/lift_operators.clj b/src/tablecloth/column/api/lift_operators.clj index 2c398c6..4ef95bb 100644 --- a/src/tablecloth/column/api/lift_operators.clj +++ b/src/tablecloth/column/api/lift_operators.clj @@ -1,6 +1,6 @@ (ns tablecloth.column.api.lift-operators (:require [tablecloth.utils.codegen :refer [do-lift]] - [tablecloth.column.api :refer [column]] + [tablecloth.column.api.column :refer [column]] [tech.v3.datatype.argtypes :refer [arg-type]])) (defn get-meta [fn-sym] From 26ae38e2862d30399a1e755a646277a39f18bbf0 Mon Sep 17 00:00:00 2001 From: Ethan Miller Date: Fri, 23 Feb 2024 16:55:42 -0800 Subject: [PATCH 33/42] Try deploying a documentation preview --- .github/workflows/prs-doc-preview.yml | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 .github/workflows/prs-doc-preview.yml diff --git a/.github/workflows/prs-doc-preview.yml b/.github/workflows/prs-doc-preview.yml new file mode 100644 index 0000000..f0e5677 --- /dev/null +++ b/.github/workflows/prs-doc-preview.yml @@ -0,0 +1,23 @@ +name: PR Docs Preview + +on: + pull_request: + types: + - opened + - reopened + - synchronize + - closed + +concurrency: prs-doc-preview-${{ github.ref }} + +jobs: + deploy-preview: + runs-on: ubuntu-20.04 + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: Deploy preview + uses: rossjrw/pr-preview-action@v1 + with: + source-dir: ./docs/ From e2a2b82383e267f65347a822cfd3d640f5a543cb Mon Sep 17 00:00:00 2001 From: Ethan Miller Date: Fri, 23 Feb 2024 17:20:10 -0800 Subject: [PATCH 34/42] Add preview-branch to docs preview action Default was gh-pages, we use master. --- .github/workflows/prs-doc-preview.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/prs-doc-preview.yml b/.github/workflows/prs-doc-preview.yml index f0e5677..5ae08c4 100644 --- a/.github/workflows/prs-doc-preview.yml +++ b/.github/workflows/prs-doc-preview.yml @@ -21,3 +21,4 @@ jobs: uses: rossjrw/pr-preview-action@v1 with: source-dir: ./docs/ + preview-branch: master From b9370111b4f94c05a9dd365e4c16f7f0543699a0 Mon Sep 17 00:00:00 2001 From: Ethan Miller Date: Fri, 23 Feb 2024 17:24:51 -0800 Subject: [PATCH 35/42] Try adding umbrella-dir setting --- .github/workflows/prs-doc-preview.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/prs-doc-preview.yml b/.github/workflows/prs-doc-preview.yml index 5ae08c4..2bc9eec 100644 --- a/.github/workflows/prs-doc-preview.yml +++ b/.github/workflows/prs-doc-preview.yml @@ -22,3 +22,4 @@ jobs: with: source-dir: ./docs/ preview-branch: master + umbrella-dir: docs/pr-preview From 4e8dd2c57807268854fb89e2d557b6b09a284a9e Mon Sep 17 00:00:00 2001 From: Ethan Miller Date: Fri, 23 Feb 2024 17:46:51 -0800 Subject: [PATCH 36/42] Try removing docs folder in umbrella-dir --- .github/workflows/prs-doc-preview.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/prs-doc-preview.yml b/.github/workflows/prs-doc-preview.yml index 2bc9eec..ce6c2f1 100644 --- a/.github/workflows/prs-doc-preview.yml +++ b/.github/workflows/prs-doc-preview.yml @@ -22,4 +22,4 @@ jobs: with: source-dir: ./docs/ preview-branch: master - umbrella-dir: docs/pr-preview + umbrella-dir: pr-preview From 515eb7320761dddf8c1d4adf031e987c9f8b7895 Mon Sep 17 00:00:00 2001 From: Ethan Miller Date: Sat, 23 Mar 2024 18:28:54 -0400 Subject: [PATCH 37/42] Remove old pr docs preview workflow --- .github/workflows/prs-doc-preview.yml | 25 ------------------------- 1 file changed, 25 deletions(-) delete mode 100644 .github/workflows/prs-doc-preview.yml diff --git a/.github/workflows/prs-doc-preview.yml b/.github/workflows/prs-doc-preview.yml deleted file mode 100644 index ce6c2f1..0000000 --- a/.github/workflows/prs-doc-preview.yml +++ /dev/null @@ -1,25 +0,0 @@ -name: PR Docs Preview - -on: - pull_request: - types: - - opened - - reopened - - synchronize - - closed - -concurrency: prs-doc-preview-${{ github.ref }} - -jobs: - deploy-preview: - runs-on: ubuntu-20.04 - steps: - - name: Checkout - uses: actions/checkout@v3 - - - name: Deploy preview - uses: rossjrw/pr-preview-action@v1 - with: - source-dir: ./docs/ - preview-branch: master - umbrella-dir: pr-preview From 7120166c3fe6ebcfdc69ed36dffea3c1be4ed306 Mon Sep 17 00:00:00 2001 From: Ethan Miller Date: Fri, 29 Mar 2024 10:16:22 -0400 Subject: [PATCH 38/42] Regenerated docs after merge from master --- docs/.clay.html | 1651 ++----- docs/.clay_files/html-default0.js | 2 + docs/.clay_files/html-default1.js | 8 +- docs/index.html | 4285 ++++++++--------- .../libs/bootstrap/bootstrap.min.css | 12 +- src/tablecloth/api/api_template.clj | 4 +- 6 files changed, 2526 insertions(+), 3436 deletions(-) create mode 100644 docs/.clay_files/html-default0.js diff --git a/docs/.clay.html b/docs/.clay.html index 2486ea1..13f14d3 100644 --- a/docs/.clay.html +++ b/docs/.clay.html @@ -2,10 +2,7 @@ -Clay +
                \ No newline at end of file +;const e=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","p","q","quote","samp","section","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video","defs","g","marker","mask","pattern","svg","switch","symbol","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feFlood","feGaussianBlur","feImage","feMerge","feMorphology","feOffset","feSpecularLighting","feTile","feTurbulence","linearGradient","radialGradient","stop","circle","ellipse","image","line","path","polygon","polyline","rect","text","use","textPath","tspan","foreignObject","clipPath"],r=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"].sort().reverse(),i=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"].sort().reverse(),t=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"].sort().reverse(),o=["align-content","align-items","align-self","alignment-baseline","all","animation","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-timing-function","backface-visibility","background","background-attachment","background-blend-mode","background-clip","background-color","background-image","background-origin","background-position","background-repeat","background-size","baseline-shift","block-size","border","border-block","border-block-color","border-block-end","border-block-end-color","border-block-end-style","border-block-end-width","border-block-start","border-block-start-color","border-block-start-style","border-block-start-width","border-block-style","border-block-width","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-inline","border-inline-color","border-inline-end","border-inline-end-color","border-inline-end-style","border-inline-end-width","border-inline-start","border-inline-start-color","border-inline-start-style","border-inline-start-width","border-inline-style","border-inline-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-decoration-break","box-shadow","box-sizing","break-after","break-before","break-inside","cx","cy","caption-side","caret-color","clear","clip","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","contain","content","content-visibility","counter-increment","counter-reset","cue","cue-after","cue-before","cursor","direction","display","dominant-baseline","empty-cells","enable-background","fill","fill-opacity","fill-rule","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","flow","flood-color","flood-opacity","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-size","font-size-adjust","font-smoothing","font-stretch","font-style","font-synthesis","font-variant","font-variant-caps","font-variant-east-asian","font-variant-ligatures","font-variant-numeric","font-variant-position","font-variation-settings","font-weight","gap","glyph-orientation-horizontal","glyph-orientation-vertical","grid","grid-area","grid-auto-columns","grid-auto-flow","grid-auto-rows","grid-column","grid-column-end","grid-column-start","grid-gap","grid-row","grid-row-end","grid-row-start","grid-template","grid-template-areas","grid-template-columns","grid-template-rows","hanging-punctuation","height","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","inline-size","isolation","kerning","justify-content","left","letter-spacing","lighting-color","line-break","line-height","list-style","list-style-image","list-style-position","list-style-type","marker","marker-end","marker-mid","marker-start","mask","margin","margin-block","margin-block-end","margin-block-start","margin-bottom","margin-inline","margin-inline-end","margin-inline-start","margin-left","margin-right","margin-top","marks","mask","mask-border","mask-border-mode","mask-border-outset","mask-border-repeat","mask-border-slice","mask-border-source","mask-border-width","mask-clip","mask-composite","mask-image","mask-mode","mask-origin","mask-position","mask-repeat","mask-size","mask-type","max-block-size","max-height","max-inline-size","max-width","min-block-size","min-height","min-inline-size","min-width","mix-blend-mode","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-wrap","overflow-x","overflow-y","padding","padding-block","padding-block-end","padding-block-start","padding-bottom","padding-inline","padding-inline-end","padding-inline-start","padding-left","padding-right","padding-top","page-break-after","page-break-before","page-break-inside","pause","pause-after","pause-before","perspective","perspective-origin","pointer-events","position","quotes","r","resize","rest","rest-after","rest-before","right","row-gap","scroll-margin","scroll-margin-block","scroll-margin-block-end","scroll-margin-block-start","scroll-margin-bottom","scroll-margin-inline","scroll-margin-inline-end","scroll-margin-inline-start","scroll-margin-left","scroll-margin-right","scroll-margin-top","scroll-padding","scroll-padding-block","scroll-padding-block-end","scroll-padding-block-start","scroll-padding-bottom","scroll-padding-inline","scroll-padding-inline-end","scroll-padding-inline-start","scroll-padding-left","scroll-padding-right","scroll-padding-top","scroll-snap-align","scroll-snap-stop","scroll-snap-type","scrollbar-color","scrollbar-gutter","scrollbar-width","shape-image-threshold","shape-margin","shape-outside","shape-rendering","stop-color","stop-opacity","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","speak","speak-as","src","tab-size","table-layout","text-anchor","text-align","text-align-all","text-align-last","text-combine-upright","text-decoration","text-decoration-color","text-decoration-line","text-decoration-style","text-emphasis","text-emphasis-color","text-emphasis-position","text-emphasis-style","text-indent","text-justify","text-orientation","text-overflow","text-rendering","text-shadow","text-transform","text-underline-position","top","transform","transform-box","transform-origin","transform-style","transition","transition-delay","transition-duration","transition-property","transition-timing-function","unicode-bidi","vector-effect","vertical-align","visibility","voice-balance","voice-duration","voice-family","voice-pitch","voice-range","voice-rate","voice-stress","voice-volume","white-space","widows","width","will-change","word-break","word-spacing","word-wrap","writing-mode","x","y","z-index"].sort().reverse() +;return n=>{const a=(e=>({IMPORTANT:{scope:"meta",begin:"!important"}, +BLOCK_COMMENT:e.C_BLOCK_COMMENT_MODE,HEXCOLOR:{scope:"number", +begin:/#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\b/},FUNCTION_DISPATCH:{ +className:"built_in",begin:/[\w-]+(?=\()/},ATTRIBUTE_SELECTOR_MODE:{ +scope:"selector-attr",begin:/\[/,end:/\]/,illegal:"$", +contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},CSS_NUMBER_MODE:{ +scope:"number", +begin:e.NUMBER_RE+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?", +relevance:0},CSS_VARIABLE:{className:"attr",begin:/--[A-Za-z_][A-Za-z0-9_-]*/} +}))(n),l=t,s=i,d="@[a-z-]+",c={className:"variable", +begin:"(\\$[a-zA-Z-][a-zA-Z0-9_-]*)\\b",relevance:0};return{name:"SCSS", +case_insensitive:!0,illegal:"[=/|']", +contains:[n.C_LINE_COMMENT_MODE,n.C_BLOCK_COMMENT_MODE,a.CSS_NUMBER_MODE,{ +className:"selector-id",begin:"#[A-Za-z0-9_-]+",relevance:0},{ +className:"selector-class",begin:"\\.[A-Za-z0-9_-]+",relevance:0 +},a.ATTRIBUTE_SELECTOR_MODE,{className:"selector-tag", +begin:"\\b("+e.join("|")+")\\b",relevance:0},{className:"selector-pseudo", +begin:":("+s.join("|")+")"},{className:"selector-pseudo", +begin:":(:)?("+l.join("|")+")"},c,{begin:/\(/,end:/\)/, +contains:[a.CSS_NUMBER_MODE]},a.CSS_VARIABLE,{className:"attribute", +begin:"\\b("+o.join("|")+")\\b"},{ +begin:"\\b(whitespace|wait|w-resize|visible|vertical-text|vertical-ideographic|uppercase|upper-roman|upper-alpha|underline|transparent|top|thin|thick|text|text-top|text-bottom|tb-rl|table-header-group|table-footer-group|sw-resize|super|strict|static|square|solid|small-caps|separate|se-resize|scroll|s-resize|rtl|row-resize|ridge|right|repeat|repeat-y|repeat-x|relative|progress|pointer|overline|outside|outset|oblique|nowrap|not-allowed|normal|none|nw-resize|no-repeat|no-drop|newspaper|ne-resize|n-resize|move|middle|medium|ltr|lr-tb|lowercase|lower-roman|lower-alpha|loose|list-item|line|line-through|line-edge|lighter|left|keep-all|justify|italic|inter-word|inter-ideograph|inside|inset|inline|inline-block|inherit|inactive|ideograph-space|ideograph-parenthesis|ideograph-numeric|ideograph-alpha|horizontal|hidden|help|hand|groove|fixed|ellipsis|e-resize|double|dotted|distribute|distribute-space|distribute-letter|distribute-all-lines|disc|disabled|default|decimal|dashed|crosshair|collapse|col-resize|circle|char|center|capitalize|break-word|break-all|bottom|both|bolder|bold|block|bidi-override|below|baseline|auto|always|all-scroll|absolute|table|table-cell)\\b" +},{begin:/:/,end:/[;}{]/,relevance:0, +contains:[a.BLOCK_COMMENT,c,a.HEXCOLOR,a.CSS_NUMBER_MODE,n.QUOTE_STRING_MODE,n.APOS_STRING_MODE,a.IMPORTANT,a.FUNCTION_DISPATCH] +},{begin:"@(page|font-face)",keywords:{$pattern:d,keyword:"@page @font-face"}},{ +begin:"@",end:"[{;]",returnBegin:!0,keywords:{$pattern:/[a-z-]+/, +keyword:"and or not only",attribute:r.join(" ")},contains:[{begin:d, +className:"keyword"},{begin:/[a-z-]+(?=:)/,className:"attribute" +},c,n.QUOTE_STRING_MODE,n.APOS_STRING_MODE,a.HEXCOLOR,a.CSS_NUMBER_MODE] +},a.FUNCTION_DISPATCH]}}})();hljs.registerLanguage("scss",e)})(); \ No newline at end of file diff --git a/docs/.clay_files/html-default0.js b/docs/.clay_files/html-default0.js new file mode 100644 index 0000000..c4c6022 --- /dev/null +++ b/docs/.clay_files/html-default0.js @@ -0,0 +1,2 @@ +/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"
                ","
                "],col:[2,"","
                "],tr:[2,"","
                "],td:[3,"","
                "],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="
                ",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
                "],col:[2,"","
                "],tr:[2,"","
                "],td:[3,"","
                "],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="
                ",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0",options:{classes:{},disabled:!1,create:null},_createWidget:function(t,e){e=V(e||this.defaultElement||this)[0],this.element=V(e),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=V(),this.hoverable=V(),this.focusable=V(),this.classesElementLookup={},e!==this&&(V.data(e,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===e&&this.destroy()}}),this.document=V(e.style?e.ownerDocument:e.document||e),this.window=V(this.document[0].defaultView||this.document[0].parentWindow)),this.options=V.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:V.noop,_create:V.noop,_init:V.noop,destroy:function(){var i=this;this._destroy(),V.each(this.classesElementLookup,function(t,e){i._removeClass(e,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:V.noop,widget:function(){return this.element},option:function(t,e){var i,s,n,o=t;if(0===arguments.length)return V.widget.extend({},this.options);if("string"==typeof t)if(o={},t=(i=t.split(".")).shift(),i.length){for(s=o[t]=V.widget.extend({},this.options[t]),n=0;n
                "),i=e.children()[0];return V("body").append(e),t=i.offsetWidth,e.css("overflow","scroll"),t===(i=i.offsetWidth)&&(i=e[0].clientWidth),e.remove(),s=t-i},getScrollInfo:function(t){var e=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),i=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),e="scroll"===e||"auto"===e&&t.widthx(k(s),k(n))?o.important="horizontal":o.important="vertical",u.using.call(this,t,o)}),a.offset(V.extend(h,{using:t}))})},V.ui.position={fit:{left:function(t,e){var i=e.within,s=i.isWindow?i.scrollLeft:i.offset.left,n=i.width,o=t.left-e.collisionPosition.marginLeft,a=s-o,r=o+e.collisionWidth-n-s;e.collisionWidth>n?0n?0")[0],w=d.each;function P(t){return null==t?t+"":"object"==typeof t?p[e.call(t)]||"object":typeof t}function M(t,e,i){var s=v[e.type]||{};return null==t?i||!e.def?null:e.def:(t=s.floor?~~t:parseFloat(t),isNaN(t)?e.def:s.mod?(t+s.mod)%s.mod:Math.min(s.max,Math.max(0,t)))}function S(s){var n=m(),o=n._rgba=[];return s=s.toLowerCase(),w(g,function(t,e){var i=e.re.exec(s),i=i&&e.parse(i),e=e.space||"rgba";if(i)return i=n[e](i),n[_[e].cache]=i[_[e].cache],o=n._rgba=i._rgba,!1}),o.length?("0,0,0,0"===o.join()&&d.extend(o,B.transparent),n):B[s]}function H(t,e,i){return 6*(i=(i+1)%1)<1?t+(e-t)*i*6:2*i<1?e:3*i<2?t+(e-t)*(2/3-i)*6:t}y.style.cssText="background-color:rgba(1,1,1,.5)",b.rgba=-1o.mod/2?s+=o.mod:s-n>o.mod/2&&(s-=o.mod)),l[i]=M((n-s)*a+s,e)))}),this[e](l)},blend:function(t){if(1===this._rgba[3])return this;var e=this._rgba.slice(),i=e.pop(),s=m(t)._rgba;return m(d.map(e,function(t,e){return(1-i)*s[e]+i*t}))},toRgbaString:function(){var t="rgba(",e=d.map(this._rgba,function(t,e){return null!=t?t:2
                ").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}),e={width:i.width(),height:i.height()},n=document.activeElement;try{n.id}catch(t){n=document.body}return i.wrap(t),i[0]!==n&&!V.contains(i[0],n)||V(n).trigger("focus"),t=i.parent(),"static"===i.css("position")?(t.css({position:"relative"}),i.css({position:"relative"})):(V.extend(s,{position:i.css("position"),zIndex:i.css("z-index")}),V.each(["top","left","bottom","right"],function(t,e){s[e]=i.css(e),isNaN(parseInt(s[e],10))&&(s[e]="auto")}),i.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})),i.css(e),t.css(s).show()},removeWrapper:function(t){var e=document.activeElement;return t.parent().is(".ui-effects-wrapper")&&(t.parent().replaceWith(t),t[0]!==e&&!V.contains(t[0],e)||V(e).trigger("focus")),t}}),V.extend(V.effects,{version:"1.13.1",define:function(t,e,i){return i||(i=e,e="effect"),V.effects.effect[t]=i,V.effects.effect[t].mode=e,i},scaledDimensions:function(t,e,i){if(0===e)return{height:0,width:0,outerHeight:0,outerWidth:0};var s="horizontal"!==i?(e||100)/100:1,e="vertical"!==i?(e||100)/100:1;return{height:t.height()*e,width:t.width()*s,outerHeight:t.outerHeight()*e,outerWidth:t.outerWidth()*s}},clipToBox:function(t){return{width:t.clip.right-t.clip.left,height:t.clip.bottom-t.clip.top,left:t.clip.left,top:t.clip.top}},unshift:function(t,e,i){var s=t.queue();1").insertAfter(t).css({display:/^(inline|ruby)/.test(t.css("display"))?"inline-block":"block",visibility:"hidden",marginTop:t.css("marginTop"),marginBottom:t.css("marginBottom"),marginLeft:t.css("marginLeft"),marginRight:t.css("marginRight"),float:t.css("float")}).outerWidth(t.outerWidth()).outerHeight(t.outerHeight()).addClass("ui-effects-placeholder"),t.data(j+"placeholder",e)),t.css({position:i,left:s.left,top:s.top}),e},removePlaceholder:function(t){var e=j+"placeholder",i=t.data(e);i&&(i.remove(),t.removeData(e))},cleanUp:function(t){V.effects.restoreStyle(t),V.effects.removePlaceholder(t)},setTransition:function(s,t,n,o){return o=o||{},V.each(t,function(t,e){var i=s.cssUnit(e);0
                ");l.appendTo("body").addClass(t.className).css({top:s.top-a,left:s.left-r,height:i.innerHeight(),width:i.innerWidth(),position:n?"fixed":"absolute"}).animate(o,t.duration,t.easing,function(){l.remove(),"function"==typeof e&&e()})}}),V.fx.step.clip=function(t){t.clipInit||(t.start=V(t.elem).cssClip(),"string"==typeof t.end&&(t.end=G(t.end,t.elem)),t.clipInit=!0),V(t.elem).cssClip({top:t.pos*(t.end.top-t.start.top)+t.start.top,right:t.pos*(t.end.right-t.start.right)+t.start.right,bottom:t.pos*(t.end.bottom-t.start.bottom)+t.start.bottom,left:t.pos*(t.end.left-t.start.left)+t.start.left})},Y={},V.each(["Quad","Cubic","Quart","Quint","Expo"],function(e,t){Y[t]=function(t){return Math.pow(t,e+2)}}),V.extend(Y,{Sine:function(t){return 1-Math.cos(t*Math.PI/2)},Circ:function(t){return 1-Math.sqrt(1-t*t)},Elastic:function(t){return 0===t||1===t?t:-Math.pow(2,8*(t-1))*Math.sin((80*(t-1)-7.5)*Math.PI/15)},Back:function(t){return t*t*(3*t-2)},Bounce:function(t){for(var e,i=4;t<((e=Math.pow(2,--i))-1)/11;);return 1/Math.pow(4,3-i)-7.5625*Math.pow((3*e-2)/22-t,2)}}),V.each(Y,function(t,e){V.easing["easeIn"+t]=e,V.easing["easeOut"+t]=function(t){return 1-e(1-t)},V.easing["easeInOut"+t]=function(t){return t<.5?e(2*t)/2:1-e(-2*t+2)/2}});y=V.effects,V.effects.define("blind","hide",function(t,e){var i={up:["bottom","top"],vertical:["bottom","top"],down:["top","bottom"],left:["right","left"],horizontal:["right","left"],right:["left","right"]},s=V(this),n=t.direction||"up",o=s.cssClip(),a={clip:V.extend({},o)},r=V.effects.createPlaceholder(s);a.clip[i[n][0]]=a.clip[i[n][1]],"show"===t.mode&&(s.cssClip(a.clip),r&&r.css(V.effects.clipToBox(a)),a.clip=o),r&&r.animate(V.effects.clipToBox(a),t.duration,t.easing),s.animate(a,{queue:!1,duration:t.duration,easing:t.easing,complete:e})}),V.effects.define("bounce",function(t,e){var i,s,n=V(this),o=t.mode,a="hide"===o,r="show"===o,l=t.direction||"up",h=t.distance,c=t.times||5,o=2*c+(r||a?1:0),u=t.duration/o,d=t.easing,p="up"===l||"down"===l?"top":"left",f="up"===l||"left"===l,g=0,t=n.queue().length;for(V.effects.createPlaceholder(n),l=n.css(p),h=h||n["top"==p?"outerHeight":"outerWidth"]()/3,r&&((s={opacity:1})[p]=l,n.css("opacity",0).css(p,f?2*-h:2*h).animate(s,u,d)),a&&(h/=Math.pow(2,c-1)),(s={})[p]=l;g
                ").css({position:"absolute",visibility:"visible",left:-s*p,top:-i*f}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:p,height:f,left:n+(u?a*p:0),top:o+(u?r*f:0),opacity:u?0:1}).animate({left:n+(u?0:a*p),top:o+(u?0:r*f),opacity:u?1:0},t.duration||500,t.easing,m)}),V.effects.define("fade","toggle",function(t,e){var i="show"===t.mode;V(this).css("opacity",i?0:1).animate({opacity:i?1:0},{queue:!1,duration:t.duration,easing:t.easing,complete:e})}),V.effects.define("fold","hide",function(e,t){var i=V(this),s=e.mode,n="show"===s,o="hide"===s,a=e.size||15,r=/([0-9]+)%/.exec(a),l=!!e.horizFirst?["right","bottom"]:["bottom","right"],h=e.duration/2,c=V.effects.createPlaceholder(i),u=i.cssClip(),d={clip:V.extend({},u)},p={clip:V.extend({},u)},f=[u[l[0]],u[l[1]]],s=i.queue().length;r&&(a=parseInt(r[1],10)/100*f[o?0:1]),d.clip[l[0]]=a,p.clip[l[0]]=a,p.clip[l[1]]=0,n&&(i.cssClip(p.clip),c&&c.css(V.effects.clipToBox(p)),p.clip=u),i.queue(function(t){c&&c.animate(V.effects.clipToBox(d),h,e.easing).animate(V.effects.clipToBox(p),h,e.easing),t()}).animate(d,h,e.easing).animate(p,h,e.easing).queue(t),V.effects.unshift(i,s,4)}),V.effects.define("highlight","show",function(t,e){var i=V(this),s={backgroundColor:i.css("backgroundColor")};"hide"===t.mode&&(s.opacity=0),V.effects.saveStyle(i),i.css({backgroundImage:"none",backgroundColor:t.color||"#ffff99"}).animate(s,{queue:!1,duration:t.duration,easing:t.easing,complete:e})}),V.effects.define("size",function(s,e){var n,i=V(this),t=["fontSize"],o=["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"],a=["borderLeftWidth","borderRightWidth","paddingLeft","paddingRight"],r=s.mode,l="effect"!==r,h=s.scale||"both",c=s.origin||["middle","center"],u=i.css("position"),d=i.position(),p=V.effects.scaledDimensions(i),f=s.from||p,g=s.to||V.effects.scaledDimensions(i,0);V.effects.createPlaceholder(i),"show"===r&&(r=f,f=g,g=r),n={from:{y:f.height/p.height,x:f.width/p.width},to:{y:g.height/p.height,x:g.width/p.width}},"box"!==h&&"both"!==h||(n.from.y!==n.to.y&&(f=V.effects.setTransition(i,o,n.from.y,f),g=V.effects.setTransition(i,o,n.to.y,g)),n.from.x!==n.to.x&&(f=V.effects.setTransition(i,a,n.from.x,f),g=V.effects.setTransition(i,a,n.to.x,g))),"content"!==h&&"both"!==h||n.from.y!==n.to.y&&(f=V.effects.setTransition(i,t,n.from.y,f),g=V.effects.setTransition(i,t,n.to.y,g)),c&&(c=V.effects.getBaseline(c,p),f.top=(p.outerHeight-f.outerHeight)*c.y+d.top,f.left=(p.outerWidth-f.outerWidth)*c.x+d.left,g.top=(p.outerHeight-g.outerHeight)*c.y+d.top,g.left=(p.outerWidth-g.outerWidth)*c.x+d.left),delete f.outerHeight,delete f.outerWidth,i.css(f),"content"!==h&&"both"!==h||(o=o.concat(["marginTop","marginBottom"]).concat(t),a=a.concat(["marginLeft","marginRight"]),i.find("*[width]").each(function(){var t=V(this),e=V.effects.scaledDimensions(t),i={height:e.height*n.from.y,width:e.width*n.from.x,outerHeight:e.outerHeight*n.from.y,outerWidth:e.outerWidth*n.from.x},e={height:e.height*n.to.y,width:e.width*n.to.x,outerHeight:e.height*n.to.y,outerWidth:e.width*n.to.x};n.from.y!==n.to.y&&(i=V.effects.setTransition(t,o,n.from.y,i),e=V.effects.setTransition(t,o,n.to.y,e)),n.from.x!==n.to.x&&(i=V.effects.setTransition(t,a,n.from.x,i),e=V.effects.setTransition(t,a,n.to.x,e)),l&&V.effects.saveStyle(t),t.css(i),t.animate(e,s.duration,s.easing,function(){l&&V.effects.restoreStyle(t)})})),i.animate(g,{queue:!1,duration:s.duration,easing:s.easing,complete:function(){var t=i.offset();0===g.opacity&&i.css("opacity",f.opacity),l||(i.css("position","static"===u?"relative":u).offset(t),V.effects.saveStyle(i)),e()}})}),V.effects.define("scale",function(t,e){var i=V(this),s=t.mode,s=parseInt(t.percent,10)||(0===parseInt(t.percent,10)||"effect"!==s?0:100),s=V.extend(!0,{from:V.effects.scaledDimensions(i),to:V.effects.scaledDimensions(i,s,t.direction||"both"),origin:t.origin||["middle","center"]},t);t.fade&&(s.from.opacity=1,s.to.opacity=0),V.effects.effect.size.call(this,s,e)}),V.effects.define("puff","hide",function(t,e){t=V.extend(!0,{},t,{fade:!0,percent:parseInt(t.percent,10)||150});V.effects.effect.scale.call(this,t,e)}),V.effects.define("pulsate","show",function(t,e){var i=V(this),s=t.mode,n="show"===s,o=2*(t.times||5)+(n||"hide"===s?1:0),a=t.duration/o,r=0,l=1,s=i.queue().length;for(!n&&i.is(":visible")||(i.css("opacity",0).show(),r=1);l li > :first-child").add(t.find("> :not(li)").even())},heightStyle:"auto",icons:{activeHeader:"ui-icon-triangle-1-s",header:"ui-icon-triangle-1-e"},activate:null,beforeActivate:null},hideProps:{borderTopWidth:"hide",borderBottomWidth:"hide",paddingTop:"hide",paddingBottom:"hide",height:"hide"},showProps:{borderTopWidth:"show",borderBottomWidth:"show",paddingTop:"show",paddingBottom:"show",height:"show"},_create:function(){var t=this.options;this.prevShow=this.prevHide=V(),this._addClass("ui-accordion","ui-widget ui-helper-reset"),this.element.attr("role","tablist"),t.collapsible||!1!==t.active&&null!=t.active||(t.active=0),this._processPanels(),t.active<0&&(t.active+=this.headers.length),this._refresh()},_getCreateEventData:function(){return{header:this.active,panel:this.active.length?this.active.next():V()}},_createIcons:function(){var t,e=this.options.icons;e&&(t=V(""),this._addClass(t,"ui-accordion-header-icon","ui-icon "+e.header),t.prependTo(this.headers),t=this.active.children(".ui-accordion-header-icon"),this._removeClass(t,e.header)._addClass(t,null,e.activeHeader)._addClass(this.headers,"ui-accordion-icons"))},_destroyIcons:function(){this._removeClass(this.headers,"ui-accordion-icons"),this.headers.children(".ui-accordion-header-icon").remove()},_destroy:function(){var t;this.element.removeAttr("role"),this.headers.removeAttr("role aria-expanded aria-selected aria-controls tabIndex").removeUniqueId(),this._destroyIcons(),t=this.headers.next().css("display","").removeAttr("role aria-hidden aria-labelledby").removeUniqueId(),"content"!==this.options.heightStyle&&t.css("height","")},_setOption:function(t,e){"active"!==t?("event"===t&&(this.options.event&&this._off(this.headers,this.options.event),this._setupEvents(e)),this._super(t,e),"collapsible"!==t||e||!1!==this.options.active||this._activate(0),"icons"===t&&(this._destroyIcons(),e&&this._createIcons())):this._activate(e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",t),this._toggleClass(null,"ui-state-disabled",!!t),this._toggleClass(this.headers.add(this.headers.next()),null,"ui-state-disabled",!!t)},_keydown:function(t){if(!t.altKey&&!t.ctrlKey){var e=V.ui.keyCode,i=this.headers.length,s=this.headers.index(t.target),n=!1;switch(t.keyCode){case e.RIGHT:case e.DOWN:n=this.headers[(s+1)%i];break;case e.LEFT:case e.UP:n=this.headers[(s-1+i)%i];break;case e.SPACE:case e.ENTER:this._eventHandler(t);break;case e.HOME:n=this.headers[0];break;case e.END:n=this.headers[i-1]}n&&(V(t.target).attr("tabIndex",-1),V(n).attr("tabIndex",0),V(n).trigger("focus"),t.preventDefault())}},_panelKeyDown:function(t){t.keyCode===V.ui.keyCode.UP&&t.ctrlKey&&V(t.currentTarget).prev().trigger("focus")},refresh:function(){var t=this.options;this._processPanels(),!1===t.active&&!0===t.collapsible||!this.headers.length?(t.active=!1,this.active=V()):!1===t.active?this._activate(0):this.active.length&&!V.contains(this.element[0],this.active[0])?this.headers.length===this.headers.find(".ui-state-disabled").length?(t.active=!1,this.active=V()):this._activate(Math.max(0,t.active-1)):t.active=this.headers.index(this.active),this._destroyIcons(),this._refresh()},_processPanels:function(){var t=this.headers,e=this.panels;"function"==typeof this.options.header?this.headers=this.options.header(this.element):this.headers=this.element.find(this.options.header),this._addClass(this.headers,"ui-accordion-header ui-accordion-header-collapsed","ui-state-default"),this.panels=this.headers.next().filter(":not(.ui-accordion-content-active)").hide(),this._addClass(this.panels,"ui-accordion-content","ui-helper-reset ui-widget-content"),e&&(this._off(t.not(this.headers)),this._off(e.not(this.panels)))},_refresh:function(){var i,t=this.options,e=t.heightStyle,s=this.element.parent();this.active=this._findActive(t.active),this._addClass(this.active,"ui-accordion-header-active","ui-state-active")._removeClass(this.active,"ui-accordion-header-collapsed"),this._addClass(this.active.next(),"ui-accordion-content-active"),this.active.next().show(),this.headers.attr("role","tab").each(function(){var t=V(this),e=t.uniqueId().attr("id"),i=t.next(),s=i.uniqueId().attr("id");t.attr("aria-controls",s),i.attr("aria-labelledby",e)}).next().attr("role","tabpanel"),this.headers.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}).next().attr({"aria-hidden":"true"}).hide(),this.active.length?this.active.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}).next().attr({"aria-hidden":"false"}):this.headers.eq(0).attr("tabIndex",0),this._createIcons(),this._setupEvents(t.event),"fill"===e?(i=s.height(),this.element.siblings(":visible").each(function(){var t=V(this),e=t.css("position");"absolute"!==e&&"fixed"!==e&&(i-=t.outerHeight(!0))}),this.headers.each(function(){i-=V(this).outerHeight(!0)}),this.headers.next().each(function(){V(this).height(Math.max(0,i-V(this).innerHeight()+V(this).height()))}).css("overflow","auto")):"auto"===e&&(i=0,this.headers.next().each(function(){var t=V(this).is(":visible");t||V(this).show(),i=Math.max(i,V(this).css("height","").height()),t||V(this).hide()}).height(i))},_activate:function(t){t=this._findActive(t)[0];t!==this.active[0]&&(t=t||this.active[0],this._eventHandler({target:t,currentTarget:t,preventDefault:V.noop}))},_findActive:function(t){return"number"==typeof t?this.headers.eq(t):V()},_setupEvents:function(t){var i={keydown:"_keydown"};t&&V.each(t.split(" "),function(t,e){i[e]="_eventHandler"}),this._off(this.headers.add(this.headers.next())),this._on(this.headers,i),this._on(this.headers.next(),{keydown:"_panelKeyDown"}),this._hoverable(this.headers),this._focusable(this.headers)},_eventHandler:function(t){var e=this.options,i=this.active,s=V(t.currentTarget),n=s[0]===i[0],o=n&&e.collapsible,a=o?V():s.next(),r=i.next(),a={oldHeader:i,oldPanel:r,newHeader:o?V():s,newPanel:a};t.preventDefault(),n&&!e.collapsible||!1===this._trigger("beforeActivate",t,a)||(e.active=!o&&this.headers.index(s),this.active=n?V():s,this._toggle(a),this._removeClass(i,"ui-accordion-header-active","ui-state-active"),e.icons&&(i=i.children(".ui-accordion-header-icon"),this._removeClass(i,null,e.icons.activeHeader)._addClass(i,null,e.icons.header)),n||(this._removeClass(s,"ui-accordion-header-collapsed")._addClass(s,"ui-accordion-header-active","ui-state-active"),e.icons&&(n=s.children(".ui-accordion-header-icon"),this._removeClass(n,null,e.icons.header)._addClass(n,null,e.icons.activeHeader)),this._addClass(s.next(),"ui-accordion-content-active")))},_toggle:function(t){var e=t.newPanel,i=this.prevShow.length?this.prevShow:t.oldPanel;this.prevShow.add(this.prevHide).stop(!0,!0),this.prevShow=e,this.prevHide=i,this.options.animate?this._animate(e,i,t):(i.hide(),e.show(),this._toggleComplete(t)),i.attr({"aria-hidden":"true"}),i.prev().attr({"aria-selected":"false","aria-expanded":"false"}),e.length&&i.length?i.prev().attr({tabIndex:-1,"aria-expanded":"false"}):e.length&&this.headers.filter(function(){return 0===parseInt(V(this).attr("tabIndex"),10)}).attr("tabIndex",-1),e.attr("aria-hidden","false").prev().attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_animate:function(t,i,e){var s,n,o,a=this,r=0,l=t.css("box-sizing"),h=t.length&&(!i.length||t.index()",delay:300,options:{icons:{submenu:"ui-icon-caret-1-e"},items:"> *",menus:"ul",position:{my:"left top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.lastMousePosition={x:null,y:null},this.element.uniqueId().attr({role:this.options.role,tabIndex:0}),this._addClass("ui-menu","ui-widget ui-widget-content"),this._on({"mousedown .ui-menu-item":function(t){t.preventDefault(),this._activateItem(t)},"click .ui-menu-item":function(t){var e=V(t.target),i=V(V.ui.safeActiveElement(this.document[0]));!this.mouseHandled&&e.not(".ui-state-disabled").length&&(this.select(t),t.isPropagationStopped()||(this.mouseHandled=!0),e.has(".ui-menu").length?this.expand(t):!this.element.is(":focus")&&i.closest(".ui-menu").length&&(this.element.trigger("focus",[!0]),this.active&&1===this.active.parents(".ui-menu").length&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":"_activateItem","mousemove .ui-menu-item":"_activateItem",mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(t,e){var i=this.active||this._menuItems().first();e||this.focus(t,i)},blur:function(t){this._delay(function(){V.contains(this.element[0],V.ui.safeActiveElement(this.document[0]))||this.collapseAll(t)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(t){this._closeOnDocumentClick(t)&&this.collapseAll(t,!0),this.mouseHandled=!1}})},_activateItem:function(t){var e,i;this.previousFilter||t.clientX===this.lastMousePosition.x&&t.clientY===this.lastMousePosition.y||(this.lastMousePosition={x:t.clientX,y:t.clientY},e=V(t.target).closest(".ui-menu-item"),i=V(t.currentTarget),e[0]===i[0]&&(i.is(".ui-state-active")||(this._removeClass(i.siblings().children(".ui-state-active"),null,"ui-state-active"),this.focus(t,i))))},_destroy:function(){var t=this.element.find(".ui-menu-item").removeAttr("role aria-disabled").children(".ui-menu-item-wrapper").removeUniqueId().removeAttr("tabIndex role aria-haspopup");this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeAttr("role aria-labelledby aria-expanded aria-hidden aria-disabled tabIndex").removeUniqueId().show(),t.children().each(function(){var t=V(this);t.data("ui-menu-submenu-caret")&&t.remove()})},_keydown:function(t){var e,i,s,n=!0;switch(t.keyCode){case V.ui.keyCode.PAGE_UP:this.previousPage(t);break;case V.ui.keyCode.PAGE_DOWN:this.nextPage(t);break;case V.ui.keyCode.HOME:this._move("first","first",t);break;case V.ui.keyCode.END:this._move("last","last",t);break;case V.ui.keyCode.UP:this.previous(t);break;case V.ui.keyCode.DOWN:this.next(t);break;case V.ui.keyCode.LEFT:this.collapse(t);break;case V.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(t);break;case V.ui.keyCode.ENTER:case V.ui.keyCode.SPACE:this._activate(t);break;case V.ui.keyCode.ESCAPE:this.collapse(t);break;default:e=this.previousFilter||"",s=n=!1,i=96<=t.keyCode&&t.keyCode<=105?(t.keyCode-96).toString():String.fromCharCode(t.keyCode),clearTimeout(this.filterTimer),i===e?s=!0:i=e+i,e=this._filterMenuItems(i),(e=s&&-1!==e.index(this.active.next())?this.active.nextAll(".ui-menu-item"):e).length||(i=String.fromCharCode(t.keyCode),e=this._filterMenuItems(i)),e.length?(this.focus(t,e),this.previousFilter=i,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter}n&&t.preventDefault()},_activate:function(t){this.active&&!this.active.is(".ui-state-disabled")&&(this.active.children("[aria-haspopup='true']").length?this.expand(t):this.select(t))},refresh:function(){var t,e,s=this,n=this.options.icons.submenu,i=this.element.find(this.options.menus);this._toggleClass("ui-menu-icons",null,!!this.element.find(".ui-icon").length),e=i.filter(":not(.ui-menu)").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var t=V(this),e=t.prev(),i=V("").data("ui-menu-submenu-caret",!0);s._addClass(i,"ui-menu-icon","ui-icon "+n),e.attr("aria-haspopup","true").prepend(i),t.attr("aria-labelledby",e.attr("id"))}),this._addClass(e,"ui-menu","ui-widget ui-widget-content ui-front"),(t=i.add(this.element).find(this.options.items)).not(".ui-menu-item").each(function(){var t=V(this);s._isDivider(t)&&s._addClass(t,"ui-menu-divider","ui-widget-content")}),i=(e=t.not(".ui-menu-item, .ui-menu-divider")).children().not(".ui-menu").uniqueId().attr({tabIndex:-1,role:this._itemRole()}),this._addClass(e,"ui-menu-item")._addClass(i,"ui-menu-item-wrapper"),t.filter(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!V.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(t,e){var i;"icons"===t&&(i=this.element.find(".ui-menu-icon"),this._removeClass(i,null,this.options.icons.submenu)._addClass(i,null,e.submenu)),this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",String(t)),this._toggleClass(null,"ui-state-disabled",!!t)},focus:function(t,e){var i;this.blur(t,t&&"focus"===t.type),this._scrollIntoView(e),this.active=e.first(),i=this.active.children(".ui-menu-item-wrapper"),this._addClass(i,null,"ui-state-active"),this.options.role&&this.element.attr("aria-activedescendant",i.attr("id")),i=this.active.parent().closest(".ui-menu-item").children(".ui-menu-item-wrapper"),this._addClass(i,null,"ui-state-active"),t&&"keydown"===t.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),(i=e.children(".ui-menu")).length&&t&&/^mouse/.test(t.type)&&this._startOpening(i),this.activeMenu=e.parent(),this._trigger("focus",t,{item:e})},_scrollIntoView:function(t){var e,i,s;this._hasScroll()&&(i=parseFloat(V.css(this.activeMenu[0],"borderTopWidth"))||0,s=parseFloat(V.css(this.activeMenu[0],"paddingTop"))||0,e=t.offset().top-this.activeMenu.offset().top-i-s,i=this.activeMenu.scrollTop(),s=this.activeMenu.height(),t=t.outerHeight(),e<0?this.activeMenu.scrollTop(i+e):s",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},requestIndex:0,pending:0,liveRegionTimer:null,_create:function(){var i,s,n,t=this.element[0].nodeName.toLowerCase(),e="textarea"===t,t="input"===t;this.isMultiLine=e||!t&&this._isContentEditable(this.element),this.valueMethod=this.element[e||t?"val":"text"],this.isNewMenu=!0,this._addClass("ui-autocomplete-input"),this.element.attr("autocomplete","off"),this._on(this.element,{keydown:function(t){if(this.element.prop("readOnly"))s=n=i=!0;else{s=n=i=!1;var e=V.ui.keyCode;switch(t.keyCode){case e.PAGE_UP:i=!0,this._move("previousPage",t);break;case e.PAGE_DOWN:i=!0,this._move("nextPage",t);break;case e.UP:i=!0,this._keyEvent("previous",t);break;case e.DOWN:i=!0,this._keyEvent("next",t);break;case e.ENTER:this.menu.active&&(i=!0,t.preventDefault(),this.menu.select(t));break;case e.TAB:this.menu.active&&this.menu.select(t);break;case e.ESCAPE:this.menu.element.is(":visible")&&(this.isMultiLine||this._value(this.term),this.close(t),t.preventDefault());break;default:s=!0,this._searchTimeout(t)}}},keypress:function(t){if(i)return i=!1,void(this.isMultiLine&&!this.menu.element.is(":visible")||t.preventDefault());if(!s){var e=V.ui.keyCode;switch(t.keyCode){case e.PAGE_UP:this._move("previousPage",t);break;case e.PAGE_DOWN:this._move("nextPage",t);break;case e.UP:this._keyEvent("previous",t);break;case e.DOWN:this._keyEvent("next",t)}}},input:function(t){if(n)return n=!1,void t.preventDefault();this._searchTimeout(t)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(t){clearTimeout(this.searching),this.close(t),this._change(t)}}),this._initSource(),this.menu=V("
                  ").appendTo(this._appendTo()).menu({role:null}).hide().attr({unselectable:"on"}).menu("instance"),this._addClass(this.menu.element,"ui-autocomplete","ui-front"),this._on(this.menu.element,{mousedown:function(t){t.preventDefault()},menufocus:function(t,e){var i,s;if(this.isNewMenu&&(this.isNewMenu=!1,t.originalEvent&&/^mouse/.test(t.originalEvent.type)))return this.menu.blur(),void this.document.one("mousemove",function(){V(t.target).trigger(t.originalEvent)});s=e.item.data("ui-autocomplete-item"),!1!==this._trigger("focus",t,{item:s})&&t.originalEvent&&/^key/.test(t.originalEvent.type)&&this._value(s.value),(i=e.item.attr("aria-label")||s.value)&&String.prototype.trim.call(i).length&&(clearTimeout(this.liveRegionTimer),this.liveRegionTimer=this._delay(function(){this.liveRegion.html(V("
                  ").text(i))},100))},menuselect:function(t,e){var i=e.item.data("ui-autocomplete-item"),s=this.previous;this.element[0]!==V.ui.safeActiveElement(this.document[0])&&(this.element.trigger("focus"),this.previous=s,this._delay(function(){this.previous=s,this.selectedItem=i})),!1!==this._trigger("select",t,{item:i})&&this._value(i.value),this.term=this._value(),this.close(t),this.selectedItem=i}}),this.liveRegion=V("
                  ",{role:"status","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(t,e){this._super(t,e),"source"===t&&this._initSource(),"appendTo"===t&&this.menu.element.appendTo(this._appendTo()),"disabled"===t&&e&&this.xhr&&this.xhr.abort()},_isEventTargetInWidget:function(t){var e=this.menu.element[0];return t.target===this.element[0]||t.target===e||V.contains(e,t.target)},_closeOnClickOutside:function(t){this._isEventTargetInWidget(t)||this.close()},_appendTo:function(){var t=this.options.appendTo;return t=!(t=!(t=t&&(t.jquery||t.nodeType?V(t):this.document.find(t).eq(0)))||!t[0]?this.element.closest(".ui-front, dialog"):t).length?this.document[0].body:t},_initSource:function(){var i,s,n=this;Array.isArray(this.options.source)?(i=this.options.source,this.source=function(t,e){e(V.ui.autocomplete.filter(i,t.term))}):"string"==typeof this.options.source?(s=this.options.source,this.source=function(t,e){n.xhr&&n.xhr.abort(),n.xhr=V.ajax({url:s,data:t,dataType:"json",success:function(t){e(t)},error:function(){e([])}})}):this.source=this.options.source},_searchTimeout:function(s){clearTimeout(this.searching),this.searching=this._delay(function(){var t=this.term===this._value(),e=this.menu.element.is(":visible"),i=s.altKey||s.ctrlKey||s.metaKey||s.shiftKey;t&&(e||i)||(this.selectedItem=null,this.search(null,s))},this.options.delay)},search:function(t,e){return t=null!=t?t:this._value(),this.term=this._value(),t.length").append(V("
                  ").text(e.label)).appendTo(t)},_move:function(t,e){if(this.menu.element.is(":visible"))return this.menu.isFirstItem()&&/^previous/.test(t)||this.menu.isLastItem()&&/^next/.test(t)?(this.isMultiLine||this._value(this.term),void this.menu.blur()):void this.menu[t](e);this.search(null,e)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(t,e){this.isMultiLine&&!this.menu.element.is(":visible")||(this._move(t,e),e.preventDefault())},_isContentEditable:function(t){if(!t.length)return!1;var e=t.prop("contentEditable");return"inherit"===e?this._isContentEditable(t.parent()):"true"===e}}),V.extend(V.ui.autocomplete,{escapeRegex:function(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(t,e){var i=new RegExp(V.ui.autocomplete.escapeRegex(e),"i");return V.grep(t,function(t){return i.test(t.label||t.value||t)})}}),V.widget("ui.autocomplete",V.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(t){return t+(1").text(e))},100))}});V.ui.autocomplete;var tt=/ui-corner-([a-z]){2,6}/g;V.widget("ui.controlgroup",{version:"1.13.1",defaultElement:"
                  ",options:{direction:"horizontal",disabled:null,onlyVisible:!0,items:{button:"input[type=button], input[type=submit], input[type=reset], button, a",controlgroupLabel:".ui-controlgroup-label",checkboxradio:"input[type='checkbox'], input[type='radio']",selectmenu:"select",spinner:".ui-spinner-input"}},_create:function(){this._enhance()},_enhance:function(){this.element.attr("role","toolbar"),this.refresh()},_destroy:function(){this._callChildMethod("destroy"),this.childWidgets.removeData("ui-controlgroup-data"),this.element.removeAttr("role"),this.options.items.controlgroupLabel&&this.element.find(this.options.items.controlgroupLabel).find(".ui-controlgroup-label-contents").contents().unwrap()},_initWidgets:function(){var o=this,a=[];V.each(this.options.items,function(s,t){var e,n={};if(t)return"controlgroupLabel"===s?((e=o.element.find(t)).each(function(){var t=V(this);t.children(".ui-controlgroup-label-contents").length||t.contents().wrapAll("")}),o._addClass(e,null,"ui-widget ui-widget-content ui-state-default"),void(a=a.concat(e.get()))):void(V.fn[s]&&(n=o["_"+s+"Options"]?o["_"+s+"Options"]("middle"):{classes:{}},o.element.find(t).each(function(){var t=V(this),e=t[s]("instance"),i=V.widget.extend({},n);"button"===s&&t.parent(".ui-spinner").length||((e=e||t[s]()[s]("instance"))&&(i.classes=o._resolveClassesValues(i.classes,e)),t[s](i),i=t[s]("widget"),V.data(i[0],"ui-controlgroup-data",e||t[s]("instance")),a.push(i[0]))})))}),this.childWidgets=V(V.uniqueSort(a)),this._addClass(this.childWidgets,"ui-controlgroup-item")},_callChildMethod:function(e){this.childWidgets.each(function(){var t=V(this).data("ui-controlgroup-data");t&&t[e]&&t[e]()})},_updateCornerClass:function(t,e){e=this._buildSimpleOptions(e,"label").classes.label;this._removeClass(t,null,"ui-corner-top ui-corner-bottom ui-corner-left ui-corner-right ui-corner-all"),this._addClass(t,null,e)},_buildSimpleOptions:function(t,e){var i="vertical"===this.options.direction,s={classes:{}};return s.classes[e]={middle:"",first:"ui-corner-"+(i?"top":"left"),last:"ui-corner-"+(i?"bottom":"right"),only:"ui-corner-all"}[t],s},_spinnerOptions:function(t){t=this._buildSimpleOptions(t,"ui-spinner");return t.classes["ui-spinner-up"]="",t.classes["ui-spinner-down"]="",t},_buttonOptions:function(t){return this._buildSimpleOptions(t,"ui-button")},_checkboxradioOptions:function(t){return this._buildSimpleOptions(t,"ui-checkboxradio-label")},_selectmenuOptions:function(t){var e="vertical"===this.options.direction;return{width:e&&"auto",classes:{middle:{"ui-selectmenu-button-open":"","ui-selectmenu-button-closed":""},first:{"ui-selectmenu-button-open":"ui-corner-"+(e?"top":"tl"),"ui-selectmenu-button-closed":"ui-corner-"+(e?"top":"left")},last:{"ui-selectmenu-button-open":e?"":"ui-corner-tr","ui-selectmenu-button-closed":"ui-corner-"+(e?"bottom":"right")},only:{"ui-selectmenu-button-open":"ui-corner-top","ui-selectmenu-button-closed":"ui-corner-all"}}[t]}},_resolveClassesValues:function(i,s){var n={};return V.each(i,function(t){var e=s.options.classes[t]||"",e=String.prototype.trim.call(e.replace(tt,""));n[t]=(e+" "+i[t]).replace(/\s+/g," ")}),n},_setOption:function(t,e){"direction"===t&&this._removeClass("ui-controlgroup-"+this.options.direction),this._super(t,e),"disabled"!==t?this.refresh():this._callChildMethod(e?"disable":"enable")},refresh:function(){var n,o=this;this._addClass("ui-controlgroup ui-controlgroup-"+this.options.direction),"horizontal"===this.options.direction&&this._addClass(null,"ui-helper-clearfix"),this._initWidgets(),n=this.childWidgets,(n=this.options.onlyVisible?n.filter(":visible"):n).length&&(V.each(["first","last"],function(t,e){var i,s=n[e]().data("ui-controlgroup-data");s&&o["_"+s.widgetName+"Options"]?((i=o["_"+s.widgetName+"Options"](1===n.length?"only":e)).classes=o._resolveClassesValues(i.classes,s),s.element[s.widgetName](i)):o._updateCornerClass(n[e](),e)}),this._callChildMethod("refresh"))}});V.widget("ui.checkboxradio",[V.ui.formResetMixin,{version:"1.13.1",options:{disabled:null,label:null,icon:!0,classes:{"ui-checkboxradio-label":"ui-corner-all","ui-checkboxradio-icon":"ui-corner-all"}},_getCreateOptions:function(){var t,e=this,i=this._super()||{};return this._readType(),t=this.element.labels(),this.label=V(t[t.length-1]),this.label.length||V.error("No label found for checkboxradio widget"),this.originalLabel="",this.label.contents().not(this.element[0]).each(function(){e.originalLabel+=3===this.nodeType?V(this).text():this.outerHTML}),this.originalLabel&&(i.label=this.originalLabel),null!=(t=this.element[0].disabled)&&(i.disabled=t),i},_create:function(){var t=this.element[0].checked;this._bindFormResetHandler(),null==this.options.disabled&&(this.options.disabled=this.element[0].disabled),this._setOption("disabled",this.options.disabled),this._addClass("ui-checkboxradio","ui-helper-hidden-accessible"),this._addClass(this.label,"ui-checkboxradio-label","ui-button ui-widget"),"radio"===this.type&&this._addClass(this.label,"ui-checkboxradio-radio-label"),this.options.label&&this.options.label!==this.originalLabel?this._updateLabel():this.originalLabel&&(this.options.label=this.originalLabel),this._enhance(),t&&this._addClass(this.label,"ui-checkboxradio-checked","ui-state-active"),this._on({change:"_toggleClasses",focus:function(){this._addClass(this.label,null,"ui-state-focus ui-visual-focus")},blur:function(){this._removeClass(this.label,null,"ui-state-focus ui-visual-focus")}})},_readType:function(){var t=this.element[0].nodeName.toLowerCase();this.type=this.element[0].type,"input"===t&&/radio|checkbox/.test(this.type)||V.error("Can't create checkboxradio on element.nodeName="+t+" and element.type="+this.type)},_enhance:function(){this._updateIcon(this.element[0].checked)},widget:function(){return this.label},_getRadioGroup:function(){var t=this.element[0].name,e="input[name='"+V.escapeSelector(t)+"']";return t?(this.form.length?V(this.form[0].elements).filter(e):V(e).filter(function(){return 0===V(this)._form().length})).not(this.element):V([])},_toggleClasses:function(){var t=this.element[0].checked;this._toggleClass(this.label,"ui-checkboxradio-checked","ui-state-active",t),this.options.icon&&"checkbox"===this.type&&this._toggleClass(this.icon,null,"ui-icon-check ui-state-checked",t)._toggleClass(this.icon,null,"ui-icon-blank",!t),"radio"===this.type&&this._getRadioGroup().each(function(){var t=V(this).checkboxradio("instance");t&&t._removeClass(t.label,"ui-checkboxradio-checked","ui-state-active")})},_destroy:function(){this._unbindFormResetHandler(),this.icon&&(this.icon.remove(),this.iconSpace.remove())},_setOption:function(t,e){if("label"!==t||e){if(this._super(t,e),"disabled"===t)return this._toggleClass(this.label,null,"ui-state-disabled",e),void(this.element[0].disabled=e);this.refresh()}},_updateIcon:function(t){var e="ui-icon ui-icon-background ";this.options.icon?(this.icon||(this.icon=V(""),this.iconSpace=V(" "),this._addClass(this.iconSpace,"ui-checkboxradio-icon-space")),"checkbox"===this.type?(e+=t?"ui-icon-check ui-state-checked":"ui-icon-blank",this._removeClass(this.icon,null,t?"ui-icon-blank":"ui-icon-check")):e+="ui-icon-blank",this._addClass(this.icon,"ui-checkboxradio-icon",e),t||this._removeClass(this.icon,null,"ui-icon-check ui-state-checked"),this.icon.prependTo(this.label).after(this.iconSpace)):void 0!==this.icon&&(this.icon.remove(),this.iconSpace.remove(),delete this.icon)},_updateLabel:function(){var t=this.label.contents().not(this.element[0]);this.icon&&(t=t.not(this.icon[0])),(t=this.iconSpace?t.not(this.iconSpace[0]):t).remove(),this.label.append(this.options.label)},refresh:function(){var t=this.element[0].checked,e=this.element[0].disabled;this._updateIcon(t),this._toggleClass(this.label,"ui-checkboxradio-checked","ui-state-active",t),null!==this.options.label&&this._updateLabel(),e!==this.options.disabled&&this._setOptions({disabled:e})}}]);var et;V.ui.checkboxradio;V.widget("ui.button",{version:"1.13.1",defaultElement:"
                  "+(0
                  ":""):"")}f+=_}return f+=F,t._keyEvent=!1,f},_generateMonthYearHeader:function(t,e,i,s,n,o,a,r){var l,h,c,u,d,p,f=this._get(t,"changeMonth"),g=this._get(t,"changeYear"),m=this._get(t,"showMonthAfterYear"),_=this._get(t,"selectMonthLabel"),v=this._get(t,"selectYearLabel"),b="
                  ",y="";if(o||!f)y+=""+a[e]+"";else{for(l=s&&s.getFullYear()===i,h=n&&n.getFullYear()===i,y+=""}if(m||(b+=y+(!o&&f&&g?"":" ")),!t.yearshtml)if(t.yearshtml="",o||!g)b+=""+i+"";else{for(a=this._get(t,"yearRange").split(":"),u=(new Date).getFullYear(),d=(_=function(t){t=t.match(/c[+\-].*/)?i+parseInt(t.substring(1),10):t.match(/[+\-].*/)?u+parseInt(t,10):parseInt(t,10);return isNaN(t)?u:t})(a[0]),p=Math.max(d,_(a[1]||"")),d=s?Math.max(d,s.getFullYear()):d,p=n?Math.min(p,n.getFullYear()):p,t.yearshtml+="",b+=t.yearshtml,t.yearshtml=null}return b+=this._get(t,"yearSuffix"),m&&(b+=(!o&&f&&g?"":" ")+y),b+="
                  "},_adjustInstDate:function(t,e,i){var s=t.selectedYear+("Y"===i?e:0),n=t.selectedMonth+("M"===i?e:0),e=Math.min(t.selectedDay,this._getDaysInMonth(s,n))+("D"===i?e:0),e=this._restrictMinMax(t,this._daylightSavingAdjust(new Date(s,n,e)));t.selectedDay=e.getDate(),t.drawMonth=t.selectedMonth=e.getMonth(),t.drawYear=t.selectedYear=e.getFullYear(),"M"!==i&&"Y"!==i||this._notifyChange(t)},_restrictMinMax:function(t,e){var i=this._getMinMaxDate(t,"min"),t=this._getMinMaxDate(t,"max"),e=i&&e=i.getTime())&&(!s||e.getTime()<=s.getTime())&&(!n||e.getFullYear()>=n)&&(!o||e.getFullYear()<=o)},_getFormatConfig:function(t){var e=this._get(t,"shortYearCutoff");return{shortYearCutoff:e="string"!=typeof e?e:(new Date).getFullYear()%100+parseInt(e,10),dayNamesShort:this._get(t,"dayNamesShort"),dayNames:this._get(t,"dayNames"),monthNamesShort:this._get(t,"monthNamesShort"),monthNames:this._get(t,"monthNames")}},_formatDate:function(t,e,i,s){e||(t.currentDay=t.selectedDay,t.currentMonth=t.selectedMonth,t.currentYear=t.selectedYear);e=e?"object"==typeof e?e:this._daylightSavingAdjust(new Date(s,i,e)):this._daylightSavingAdjust(new Date(t.currentYear,t.currentMonth,t.currentDay));return this.formatDate(this._get(t,"dateFormat"),e,this._getFormatConfig(t))}}),V.fn.datepicker=function(t){if(!this.length)return this;V.datepicker.initialized||(V(document).on("mousedown",V.datepicker._checkExternalClick),V.datepicker.initialized=!0),0===V("#"+V.datepicker._mainDivId).length&&V("body").append(V.datepicker.dpDiv);var e=Array.prototype.slice.call(arguments,1);return"string"==typeof t&&("isDisabled"===t||"getDate"===t||"widget"===t)||"option"===t&&2===arguments.length&&"string"==typeof arguments[1]?V.datepicker["_"+t+"Datepicker"].apply(V.datepicker,[this[0]].concat(e)):this.each(function(){"string"==typeof t?V.datepicker["_"+t+"Datepicker"].apply(V.datepicker,[this].concat(e)):V.datepicker._attachDatepicker(this,t)})},V.datepicker=new st,V.datepicker.initialized=!1,V.datepicker.uuid=(new Date).getTime(),V.datepicker.version="1.13.1";V.datepicker,V.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase());var rt=!1;V(document).on("mouseup",function(){rt=!1});V.widget("ui.mouse",{version:"1.13.1",options:{cancel:"input, textarea, button, select, option",distance:1,delay:0},_mouseInit:function(){var e=this;this.element.on("mousedown."+this.widgetName,function(t){return e._mouseDown(t)}).on("click."+this.widgetName,function(t){if(!0===V.data(t.target,e.widgetName+".preventClickEvent"))return V.removeData(t.target,e.widgetName+".preventClickEvent"),t.stopImmediatePropagation(),!1}),this.started=!1},_mouseDestroy:function(){this.element.off("."+this.widgetName),this._mouseMoveDelegate&&this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(t){if(!rt){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(t),this._mouseDownEvent=t;var e=this,i=1===t.which,s=!("string"!=typeof this.options.cancel||!t.target.nodeName)&&V(t.target).closest(this.options.cancel).length;return i&&!s&&this._mouseCapture(t)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){e.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=!1!==this._mouseStart(t),!this._mouseStarted)?(t.preventDefault(),!0):(!0===V.data(t.target,this.widgetName+".preventClickEvent")&&V.removeData(t.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(t){return e._mouseMove(t)},this._mouseUpDelegate=function(t){return e._mouseUp(t)},this.document.on("mousemove."+this.widgetName,this._mouseMoveDelegate).on("mouseup."+this.widgetName,this._mouseUpDelegate),t.preventDefault(),rt=!0)):!0}},_mouseMove:function(t){if(this._mouseMoved){if(V.ui.ie&&(!document.documentMode||document.documentMode<9)&&!t.button)return this._mouseUp(t);if(!t.which)if(t.originalEvent.altKey||t.originalEvent.ctrlKey||t.originalEvent.metaKey||t.originalEvent.shiftKey)this.ignoreMissingWhich=!0;else if(!this.ignoreMissingWhich)return this._mouseUp(t)}return(t.which||t.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(t),t.preventDefault()):(this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=!1!==this._mouseStart(this._mouseDownEvent,t),this._mouseStarted?this._mouseDrag(t):this._mouseUp(t)),!this._mouseStarted)},_mouseUp:function(t){this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,t.target===this._mouseDownEvent.target&&V.data(t.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(t)),this._mouseDelayTimer&&(clearTimeout(this._mouseDelayTimer),delete this._mouseDelayTimer),this.ignoreMissingWhich=!1,rt=!1,t.preventDefault()},_mouseDistanceMet:function(t){return Math.max(Math.abs(this._mouseDownEvent.pageX-t.pageX),Math.abs(this._mouseDownEvent.pageY-t.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),V.ui.plugin={add:function(t,e,i){var s,n=V.ui[t].prototype;for(s in i)n.plugins[s]=n.plugins[s]||[],n.plugins[s].push([e,i[s]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;n").css("position","absolute").appendTo(t.parent()).outerWidth(t.outerWidth()).outerHeight(t.outerHeight()).offset(t.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_blurActiveElement:function(t){var e=V.ui.safeActiveElement(this.document[0]);V(t.target).closest(e).length||V.ui.safeBlur(e)},_mouseStart:function(t){var e=this.options;return this.helper=this._createHelper(t),this._addClass(this.helper,"ui-draggable-dragging"),this._cacheHelperProportions(),V.ui.ddmanager&&(V.ui.ddmanager.current=this),this._cacheMargins(),this.cssPosition=this.helper.css("position"),this.scrollParent=this.helper.scrollParent(!0),this.offsetParent=this.helper.offsetParent(),this.hasFixedAncestor=0i[2]&&(o=i[2]+this.offset.click.left),t.pageY-this.offset.click.top>i[3]&&(a=i[3]+this.offset.click.top)),s.grid&&(t=s.grid[1]?this.originalPageY+Math.round((a-this.originalPageY)/s.grid[1])*s.grid[1]:this.originalPageY,a=!i||t-this.offset.click.top>=i[1]||t-this.offset.click.top>i[3]?t:t-this.offset.click.top>=i[1]?t-s.grid[1]:t+s.grid[1],t=s.grid[0]?this.originalPageX+Math.round((o-this.originalPageX)/s.grid[0])*s.grid[0]:this.originalPageX,o=!i||t-this.offset.click.left>=i[0]||t-this.offset.click.left>i[2]?t:t-this.offset.click.left>=i[0]?t-s.grid[0]:t+s.grid[0]),"y"===s.axis&&(o=this.originalPageX),"x"===s.axis&&(a=this.originalPageY)),{top:a-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.offset.scroll.top:n?0:this.offset.scroll.top),left:o-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.offset.scroll.left:n?0:this.offset.scroll.left)}},_clear:function(){this._removeClass(this.helper,"ui-draggable-dragging"),this.helper[0]===this.element[0]||this.cancelHelperRemoval||this.helper.remove(),this.helper=null,this.cancelHelperRemoval=!1,this.destroyOnClear&&this.destroy()},_trigger:function(t,e,i){return i=i||this._uiHash(),V.ui.plugin.call(this,t,[e,i,this],!0),/^(drag|start|stop)/.test(t)&&(this.positionAbs=this._convertPositionTo("absolute"),i.offset=this.positionAbs),V.Widget.prototype._trigger.call(this,t,e,i)},plugins:{},_uiHash:function(){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}}),V.ui.plugin.add("draggable","connectToSortable",{start:function(e,t,i){var s=V.extend({},t,{item:i.element});i.sortables=[],V(i.options.connectToSortable).each(function(){var t=V(this).sortable("instance");t&&!t.options.disabled&&(i.sortables.push(t),t.refreshPositions(),t._trigger("activate",e,s))})},stop:function(e,t,i){var s=V.extend({},t,{item:i.element});i.cancelHelperRemoval=!1,V.each(i.sortables,function(){var t=this;t.isOver?(t.isOver=0,i.cancelHelperRemoval=!0,t.cancelHelperRemoval=!1,t._storedCSS={position:t.placeholder.css("position"),top:t.placeholder.css("top"),left:t.placeholder.css("left")},t._mouseStop(e),t.options.helper=t.options._helper):(t.cancelHelperRemoval=!0,t._trigger("deactivate",e,s))})},drag:function(i,s,n){V.each(n.sortables,function(){var t=!1,e=this;e.positionAbs=n.positionAbs,e.helperProportions=n.helperProportions,e.offset.click=n.offset.click,e._intersectsWith(e.containerCache)&&(t=!0,V.each(n.sortables,function(){return this.positionAbs=n.positionAbs,this.helperProportions=n.helperProportions,this.offset.click=n.offset.click,t=this!==e&&this._intersectsWith(this.containerCache)&&V.contains(e.element[0],this.element[0])?!1:t})),t?(e.isOver||(e.isOver=1,n._parent=s.helper.parent(),e.currentItem=s.helper.appendTo(e.element).data("ui-sortable-item",!0),e.options._helper=e.options.helper,e.options.helper=function(){return s.helper[0]},i.target=e.currentItem[0],e._mouseCapture(i,!0),e._mouseStart(i,!0,!0),e.offset.click.top=n.offset.click.top,e.offset.click.left=n.offset.click.left,e.offset.parent.left-=n.offset.parent.left-e.offset.parent.left,e.offset.parent.top-=n.offset.parent.top-e.offset.parent.top,n._trigger("toSortable",i),n.dropped=e.element,V.each(n.sortables,function(){this.refreshPositions()}),n.currentItem=n.element,e.fromOutside=n),e.currentItem&&(e._mouseDrag(i),s.position=e.position)):e.isOver&&(e.isOver=0,e.cancelHelperRemoval=!0,e.options._revert=e.options.revert,e.options.revert=!1,e._trigger("out",i,e._uiHash(e)),e._mouseStop(i,!0),e.options.revert=e.options._revert,e.options.helper=e.options._helper,e.placeholder&&e.placeholder.remove(),s.helper.appendTo(n._parent),n._refreshOffsets(i),s.position=n._generatePosition(i,!0),n._trigger("fromSortable",i),n.dropped=!1,V.each(n.sortables,function(){this.refreshPositions()}))})}}),V.ui.plugin.add("draggable","cursor",{start:function(t,e,i){var s=V("body"),i=i.options;s.css("cursor")&&(i._cursor=s.css("cursor")),s.css("cursor",i.cursor)},stop:function(t,e,i){i=i.options;i._cursor&&V("body").css("cursor",i._cursor)}}),V.ui.plugin.add("draggable","opacity",{start:function(t,e,i){e=V(e.helper),i=i.options;e.css("opacity")&&(i._opacity=e.css("opacity")),e.css("opacity",i.opacity)},stop:function(t,e,i){i=i.options;i._opacity&&V(e.helper).css("opacity",i._opacity)}}),V.ui.plugin.add("draggable","scroll",{start:function(t,e,i){i.scrollParentNotHidden||(i.scrollParentNotHidden=i.helper.scrollParent(!1)),i.scrollParentNotHidden[0]!==i.document[0]&&"HTML"!==i.scrollParentNotHidden[0].tagName&&(i.overflowOffset=i.scrollParentNotHidden.offset())},drag:function(t,e,i){var s=i.options,n=!1,o=i.scrollParentNotHidden[0],a=i.document[0];o!==a&&"HTML"!==o.tagName?(s.axis&&"x"===s.axis||(i.overflowOffset.top+o.offsetHeight-t.pageY
                  ").css({overflow:"hidden",position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,t={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(t),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(t),this._proportionallyResize()),this._setupHandles(),e.autoHide&&V(this.element).on("mouseenter",function(){e.disabled||(i._removeClass("ui-resizable-autohide"),i._handles.show())}).on("mouseleave",function(){e.disabled||i.resizing||(i._addClass("ui-resizable-autohide"),i._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy(),this._addedHandles.remove();function t(t){V(t).removeData("resizable").removeData("ui-resizable").off(".resizable")}var e;return this.elementIsWrapper&&(t(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),t(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;case"aspectRatio":this._aspectRatio=!!e}},_setupHandles:function(){var t,e,i,s,n,o=this.options,a=this;if(this.handles=o.handles||(V(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=V(),this._addedHandles=V(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),i=this.handles.split(","),this.handles={},e=0;e"),this._addClass(n,"ui-resizable-handle "+s),n.css({zIndex:o.zIndex}),this.handles[t]=".ui-resizable-"+t,this.element.children(this.handles[t]).length||(this.element.append(n),this._addedHandles=this._addedHandles.add(n));this._renderAxis=function(t){var e,i,s;for(e in t=t||this.element,this.handles)this.handles[e].constructor===String?this.handles[e]=this.element.children(this.handles[e]).first().show():(this.handles[e].jquery||this.handles[e].nodeType)&&(this.handles[e]=V(this.handles[e]),this._on(this.handles[e],{mousedown:a._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(i=V(this.handles[e],this.element),s=/sw|ne|nw|se|n|s/.test(e)?i.outerHeight():i.outerWidth(),i=["padding",/ne|nw|n/.test(e)?"Top":/se|sw|s/.test(e)?"Bottom":/^e$/.test(e)?"Right":"Left"].join(""),t.css(i,s),this._proportionallyResize()),this._handles=this._handles.add(this.handles[e])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){a.resizing||(this.className&&(n=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),a.axis=n&&n[1]?n[1]:"se")}),o.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._addedHandles.remove()},_mouseCapture:function(t){var e,i,s=!1;for(e in this.handles)(i=V(this.handles[e])[0])!==t.target&&!V.contains(i,t.target)||(s=!0);return!this.options.disabled&&s},_mouseStart:function(t){var e,i,s=this.options,n=this.element;return this.resizing=!0,this._renderProxy(),e=this._num(this.helper.css("left")),i=this._num(this.helper.css("top")),s.containment&&(e+=V(s.containment).scrollLeft()||0,i+=V(s.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:e,top:i},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:n.width(),height:n.height()},this.originalSize=this._helper?{width:n.outerWidth(),height:n.outerHeight()}:{width:n.width(),height:n.height()},this.sizeDiff={width:n.outerWidth()-n.width(),height:n.outerHeight()-n.height()},this.originalPosition={left:e,top:i},this.originalMousePosition={left:t.pageX,top:t.pageY},this.aspectRatio="number"==typeof s.aspectRatio?s.aspectRatio:this.originalSize.width/this.originalSize.height||1,s=V(".ui-resizable-"+this.axis).css("cursor"),V("body").css("cursor","auto"===s?this.axis+"-resize":s),this._addClass("ui-resizable-resizing"),this._propagate("start",t),!0},_mouseDrag:function(t){var e=this.originalMousePosition,i=this.axis,s=t.pageX-e.left||0,e=t.pageY-e.top||0,i=this._change[i];return this._updatePrevProperties(),i&&(e=i.apply(this,[t,s,e]),this._updateVirtualBoundaries(t.shiftKey),(this._aspectRatio||t.shiftKey)&&(e=this._updateRatio(e,t)),e=this._respectSize(e,t),this._updateCache(e),this._propagate("resize",t),e=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),V.isEmptyObject(e)||(this._updatePrevProperties(),this._trigger("resize",t,this.ui()),this._applyChanges())),!1},_mouseStop:function(t){this.resizing=!1;var e,i,s,n=this.options,o=this;return this._helper&&(s=(e=(i=this._proportionallyResizeElements).length&&/textarea/i.test(i[0].nodeName))&&this._hasScroll(i[0],"left")?0:o.sizeDiff.height,i=e?0:o.sizeDiff.width,e={width:o.helper.width()-i,height:o.helper.height()-s},i=parseFloat(o.element.css("left"))+(o.position.left-o.originalPosition.left)||null,s=parseFloat(o.element.css("top"))+(o.position.top-o.originalPosition.top)||null,n.animate||this.element.css(V.extend(e,{top:s,left:i})),o.helper.height(o.size.height),o.helper.width(o.size.width),this._helper&&!n.animate&&this._proportionallyResize()),V("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",t),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s=this.options,n={minWidth:this._isNumber(s.minWidth)?s.minWidth:0,maxWidth:this._isNumber(s.maxWidth)?s.maxWidth:1/0,minHeight:this._isNumber(s.minHeight)?s.minHeight:0,maxHeight:this._isNumber(s.maxHeight)?s.maxHeight:1/0};(this._aspectRatio||t)&&(e=n.minHeight*this.aspectRatio,i=n.minWidth/this.aspectRatio,s=n.maxHeight*this.aspectRatio,t=n.maxWidth/this.aspectRatio,e>n.minWidth&&(n.minWidth=e),i>n.minHeight&&(n.minHeight=i),st.width,a=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,r=this.originalPosition.left+this.originalSize.width,l=this.originalPosition.top+this.originalSize.height,h=/sw|nw|w/.test(i),i=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),a&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&h&&(t.left=r-e.minWidth),s&&h&&(t.left=r-e.maxWidth),a&&i&&(t.top=l-e.minHeight),n&&i&&(t.top=l-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];e<4;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;e
                  ").css({overflow:"hidden"}),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++e.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize;return{left:this.originalPosition.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize;return{top:this.originalPosition.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(t,e,i){return V.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},sw:function(t,e,i){return V.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,e,i]))},ne:function(t,e,i){return V.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},nw:function(t,e,i){return V.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,e,i]))}},_propagate:function(t,e){V.ui.plugin.call(this,t,[e,this.ui()]),"resize"!==t&&this._trigger(t,e,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),V.ui.plugin.add("resizable","animate",{stop:function(e){var i=V(this).resizable("instance"),t=i.options,s=i._proportionallyResizeElements,n=s.length&&/textarea/i.test(s[0].nodeName),o=n&&i._hasScroll(s[0],"left")?0:i.sizeDiff.height,a=n?0:i.sizeDiff.width,n={width:i.size.width-a,height:i.size.height-o},a=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,o=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(V.extend(n,o&&a?{top:o,left:a}:{}),{duration:t.animateDuration,easing:t.animateEasing,step:function(){var t={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};s&&s.length&&V(s[0]).css({width:t.width,height:t.height}),i._updateCache(t),i._propagate("resize",e)}})}}),V.ui.plugin.add("resizable","containment",{start:function(){var i,s,n=V(this).resizable("instance"),t=n.options,e=n.element,o=t.containment,a=o instanceof V?o.get(0):/parent/.test(o)?e.parent().get(0):o;a&&(n.containerElement=V(a),/document/.test(o)||o===document?(n.containerOffset={left:0,top:0},n.containerPosition={left:0,top:0},n.parentData={element:V(document),left:0,top:0,width:V(document).width(),height:V(document).height()||document.body.parentNode.scrollHeight}):(i=V(a),s=[],V(["Top","Right","Left","Bottom"]).each(function(t,e){s[t]=n._num(i.css("padding"+e))}),n.containerOffset=i.offset(),n.containerPosition=i.position(),n.containerSize={height:i.innerHeight()-s[3],width:i.innerWidth()-s[1]},t=n.containerOffset,e=n.containerSize.height,o=n.containerSize.width,o=n._hasScroll(a,"left")?a.scrollWidth:o,e=n._hasScroll(a)?a.scrollHeight:e,n.parentData={element:a,left:t.left,top:t.top,width:o,height:e}))},resize:function(t){var e=V(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.position,o=e._aspectRatio||t.shiftKey,a={top:0,left:0},r=e.containerElement,t=!0;r[0]!==document&&/static/.test(r.css("position"))&&(a=s),n.left<(e._helper?s.left:0)&&(e.size.width=e.size.width+(e._helper?e.position.left-s.left:e.position.left-a.left),o&&(e.size.height=e.size.width/e.aspectRatio,t=!1),e.position.left=i.helper?s.left:0),n.top<(e._helper?s.top:0)&&(e.size.height=e.size.height+(e._helper?e.position.top-s.top:e.position.top),o&&(e.size.width=e.size.height*e.aspectRatio,t=!1),e.position.top=e._helper?s.top:0),i=e.containerElement.get(0)===e.element.parent().get(0),n=/relative|absolute/.test(e.containerElement.css("position")),i&&n?(e.offset.left=e.parentData.left+e.position.left,e.offset.top=e.parentData.top+e.position.top):(e.offset.left=e.element.offset().left,e.offset.top=e.element.offset().top),n=Math.abs(e.sizeDiff.width+(e._helper?e.offset.left-a.left:e.offset.left-s.left)),s=Math.abs(e.sizeDiff.height+(e._helper?e.offset.top-a.top:e.offset.top-s.top)),n+e.size.width>=e.parentData.width&&(e.size.width=e.parentData.width-n,o&&(e.size.height=e.size.width/e.aspectRatio,t=!1)),s+e.size.height>=e.parentData.height&&(e.size.height=e.parentData.height-s,o&&(e.size.width=e.size.height*e.aspectRatio,t=!1)),t||(e.position.left=e.prevPosition.left,e.position.top=e.prevPosition.top,e.size.width=e.prevSize.width,e.size.height=e.prevSize.height)},stop:function(){var t=V(this).resizable("instance"),e=t.options,i=t.containerOffset,s=t.containerPosition,n=t.containerElement,o=V(t.helper),a=o.offset(),r=o.outerWidth()-t.sizeDiff.width,o=o.outerHeight()-t.sizeDiff.height;t._helper&&!e.animate&&/relative/.test(n.css("position"))&&V(this).css({left:a.left-s.left-i.left,width:r,height:o}),t._helper&&!e.animate&&/static/.test(n.css("position"))&&V(this).css({left:a.left-s.left-i.left,width:r,height:o})}}),V.ui.plugin.add("resizable","alsoResize",{start:function(){var t=V(this).resizable("instance").options;V(t.alsoResize).each(function(){var t=V(this);t.data("ui-resizable-alsoresize",{width:parseFloat(t.width()),height:parseFloat(t.height()),left:parseFloat(t.css("left")),top:parseFloat(t.css("top"))})})},resize:function(t,i){var e=V(this).resizable("instance"),s=e.options,n=e.originalSize,o=e.originalPosition,a={height:e.size.height-n.height||0,width:e.size.width-n.width||0,top:e.position.top-o.top||0,left:e.position.left-o.left||0};V(s.alsoResize).each(function(){var t=V(this),s=V(this).data("ui-resizable-alsoresize"),n={},e=t.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];V.each(e,function(t,e){var i=(s[e]||0)+(a[e]||0);i&&0<=i&&(n[e]=i||null)}),t.css(n)})},stop:function(){V(this).removeData("ui-resizable-alsoresize")}}),V.ui.plugin.add("resizable","ghost",{start:function(){var t=V(this).resizable("instance"),e=t.size;t.ghost=t.originalElement.clone(),t.ghost.css({opacity:.25,display:"block",position:"relative",height:e.height,width:e.width,margin:0,left:0,top:0}),t._addClass(t.ghost,"ui-resizable-ghost"),!1!==V.uiBackCompat&&"string"==typeof t.options.ghost&&t.ghost.addClass(this.options.ghost),t.ghost.appendTo(t.helper)},resize:function(){var t=V(this).resizable("instance");t.ghost&&t.ghost.css({position:"relative",height:t.size.height,width:t.size.width})},stop:function(){var t=V(this).resizable("instance");t.ghost&&t.helper&&t.helper.get(0).removeChild(t.ghost.get(0))}}),V.ui.plugin.add("resizable","grid",{resize:function(){var t,e=V(this).resizable("instance"),i=e.options,s=e.size,n=e.originalSize,o=e.originalPosition,a=e.axis,r="number"==typeof i.grid?[i.grid,i.grid]:i.grid,l=r[0]||1,h=r[1]||1,c=Math.round((s.width-n.width)/l)*l,u=Math.round((s.height-n.height)/h)*h,d=n.width+c,p=n.height+u,f=i.maxWidth&&i.maxWidthd,s=i.minHeight&&i.minHeight>p;i.grid=r,m&&(d+=l),s&&(p+=h),f&&(d-=l),g&&(p-=h),/^(se|s|e)$/.test(a)?(e.size.width=d,e.size.height=p):/^(ne)$/.test(a)?(e.size.width=d,e.size.height=p,e.position.top=o.top-u):/^(sw)$/.test(a)?(e.size.width=d,e.size.height=p,e.position.left=o.left-c):((p-h<=0||d-l<=0)&&(t=e._getPaddingPlusBorderDimensions(this)),0=+this.uiDialog.css("z-index")&&(this.uiDialog.css("z-index",s+1),i=!0),i&&!e&&this._trigger("focus",t),i},open:function(){var t=this;this._isOpen?this._moveToTop()&&this._focusTabbable():(this._isOpen=!0,this.opener=V(V.ui.safeActiveElement(this.document[0])),this._size(),this._position(),this._createOverlay(),this._moveToTop(null,!0),this.overlay&&this.overlay.css("z-index",this.uiDialog.css("z-index")-1),this._show(this.uiDialog,this.options.show,function(){t._focusTabbable(),t._trigger("focus")}),this._makeFocusTarget(),this._trigger("open"))},_focusTabbable:function(){var t=this._focusedElement;(t=!(t=!(t=!(t=!(t=t||this.element.find("[autofocus]")).length?this.element.find(":tabbable"):t).length?this.uiDialogButtonPane.find(":tabbable"):t).length?this.uiDialogTitlebarClose.filter(":tabbable"):t).length?this.uiDialog:t).eq(0).trigger("focus")},_restoreTabbableFocus:function(){var t=V.ui.safeActiveElement(this.document[0]);this.uiDialog[0]===t||V.contains(this.uiDialog[0],t)||this._focusTabbable()},_keepFocus:function(t){t.preventDefault(),this._restoreTabbableFocus(),this._delay(this._restoreTabbableFocus)},_createWrapper:function(){this.uiDialog=V("
                  ").hide().attr({tabIndex:-1,role:"dialog"}).appendTo(this._appendTo()),this._addClass(this.uiDialog,"ui-dialog","ui-widget ui-widget-content ui-front"),this._on(this.uiDialog,{keydown:function(t){if(this.options.closeOnEscape&&!t.isDefaultPrevented()&&t.keyCode&&t.keyCode===V.ui.keyCode.ESCAPE)return t.preventDefault(),void this.close(t);var e,i,s;t.keyCode!==V.ui.keyCode.TAB||t.isDefaultPrevented()||(e=this.uiDialog.find(":tabbable"),i=e.first(),s=e.last(),t.target!==s[0]&&t.target!==this.uiDialog[0]||t.shiftKey?t.target!==i[0]&&t.target!==this.uiDialog[0]||!t.shiftKey||(this._delay(function(){s.trigger("focus")}),t.preventDefault()):(this._delay(function(){i.trigger("focus")}),t.preventDefault()))},mousedown:function(t){this._moveToTop(t)&&this._focusTabbable()}}),this.element.find("[aria-describedby]").length||this.uiDialog.attr({"aria-describedby":this.element.uniqueId().attr("id")})},_createTitlebar:function(){var t;this.uiDialogTitlebar=V("
                  "),this._addClass(this.uiDialogTitlebar,"ui-dialog-titlebar","ui-widget-header ui-helper-clearfix"),this._on(this.uiDialogTitlebar,{mousedown:function(t){V(t.target).closest(".ui-dialog-titlebar-close")||this.uiDialog.trigger("focus")}}),this.uiDialogTitlebarClose=V("").button({label:V("").text(this.options.closeText).html(),icon:"ui-icon-closethick",showLabel:!1}).appendTo(this.uiDialogTitlebar),this._addClass(this.uiDialogTitlebarClose,"ui-dialog-titlebar-close"),this._on(this.uiDialogTitlebarClose,{click:function(t){t.preventDefault(),this.close(t)}}),t=V("").uniqueId().prependTo(this.uiDialogTitlebar),this._addClass(t,"ui-dialog-title"),this._title(t),this.uiDialogTitlebar.prependTo(this.uiDialog),this.uiDialog.attr({"aria-labelledby":t.attr("id")})},_title:function(t){this.options.title?t.text(this.options.title):t.html(" ")},_createButtonPane:function(){this.uiDialogButtonPane=V("
                  "),this._addClass(this.uiDialogButtonPane,"ui-dialog-buttonpane","ui-widget-content ui-helper-clearfix"),this.uiButtonSet=V("
                  ").appendTo(this.uiDialogButtonPane),this._addClass(this.uiButtonSet,"ui-dialog-buttonset"),this._createButtons()},_createButtons:function(){var s=this,t=this.options.buttons;this.uiDialogButtonPane.remove(),this.uiButtonSet.empty(),V.isEmptyObject(t)||Array.isArray(t)&&!t.length?this._removeClass(this.uiDialog,"ui-dialog-buttons"):(V.each(t,function(t,e){var i;e=V.extend({type:"button"},e="function"==typeof e?{click:e,text:t}:e),i=e.click,t={icon:e.icon,iconPosition:e.iconPosition,showLabel:e.showLabel,icons:e.icons,text:e.text},delete e.click,delete e.icon,delete e.iconPosition,delete e.showLabel,delete e.icons,"boolean"==typeof e.text&&delete e.text,V("",e).button(t).appendTo(s.uiButtonSet).on("click",function(){i.apply(s.element[0],arguments)})}),this._addClass(this.uiDialog,"ui-dialog-buttons"),this.uiDialogButtonPane.appendTo(this.uiDialog))},_makeDraggable:function(){var n=this,o=this.options;function a(t){return{position:t.position,offset:t.offset}}this.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(t,e){n._addClass(V(this),"ui-dialog-dragging"),n._blockFrames(),n._trigger("dragStart",t,a(e))},drag:function(t,e){n._trigger("drag",t,a(e))},stop:function(t,e){var i=e.offset.left-n.document.scrollLeft(),s=e.offset.top-n.document.scrollTop();o.position={my:"left top",at:"left"+(0<=i?"+":"")+i+" top"+(0<=s?"+":"")+s,of:n.window},n._removeClass(V(this),"ui-dialog-dragging"),n._unblockFrames(),n._trigger("dragStop",t,a(e))}})},_makeResizable:function(){var n=this,o=this.options,t=o.resizable,e=this.uiDialog.css("position"),t="string"==typeof t?t:"n,e,s,w,se,sw,ne,nw";function a(t){return{originalPosition:t.originalPosition,originalSize:t.originalSize,position:t.position,size:t.size}}this.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:this.element,maxWidth:o.maxWidth,maxHeight:o.maxHeight,minWidth:o.minWidth,minHeight:this._minHeight(),handles:t,start:function(t,e){n._addClass(V(this),"ui-dialog-resizing"),n._blockFrames(),n._trigger("resizeStart",t,a(e))},resize:function(t,e){n._trigger("resize",t,a(e))},stop:function(t,e){var i=n.uiDialog.offset(),s=i.left-n.document.scrollLeft(),i=i.top-n.document.scrollTop();o.height=n.uiDialog.height(),o.width=n.uiDialog.width(),o.position={my:"left top",at:"left"+(0<=s?"+":"")+s+" top"+(0<=i?"+":"")+i,of:n.window},n._removeClass(V(this),"ui-dialog-resizing"),n._unblockFrames(),n._trigger("resizeStop",t,a(e))}}).css("position",e)},_trackFocus:function(){this._on(this.widget(),{focusin:function(t){this._makeFocusTarget(),this._focusedElement=V(t.target)}})},_makeFocusTarget:function(){this._untrackInstance(),this._trackingInstances().unshift(this)},_untrackInstance:function(){var t=this._trackingInstances(),e=V.inArray(this,t);-1!==e&&t.splice(e,1)},_trackingInstances:function(){var t=this.document.data("ui-dialog-instances");return t||this.document.data("ui-dialog-instances",t=[]),t},_minHeight:function(){var t=this.options;return"auto"===t.height?t.minHeight:Math.min(t.minHeight,t.height)},_position:function(){var t=this.uiDialog.is(":visible");t||this.uiDialog.show(),this.uiDialog.position(this.options.position),t||this.uiDialog.hide()},_setOptions:function(t){var i=this,s=!1,n={};V.each(t,function(t,e){i._setOption(t,e),t in i.sizeRelatedOptions&&(s=!0),t in i.resizableRelatedOptions&&(n[t]=e)}),s&&(this._size(),this._position()),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option",n)},_setOption:function(t,e){var i,s=this.uiDialog;"disabled"!==t&&(this._super(t,e),"appendTo"===t&&this.uiDialog.appendTo(this._appendTo()),"buttons"===t&&this._createButtons(),"closeText"===t&&this.uiDialogTitlebarClose.button({label:V("").text(""+this.options.closeText).html()}),"draggable"===t&&((i=s.is(":data(ui-draggable)"))&&!e&&s.draggable("destroy"),!i&&e&&this._makeDraggable()),"position"===t&&this._position(),"resizable"===t&&((i=s.is(":data(ui-resizable)"))&&!e&&s.resizable("destroy"),i&&"string"==typeof e&&s.resizable("option","handles",e),i||!1===e||this._makeResizable()),"title"===t&&this._title(this.uiDialogTitlebar.find(".ui-dialog-title")))},_size:function(){var t,e,i,s=this.options;this.element.show().css({width:"auto",minHeight:0,maxHeight:"none",height:0}),s.minWidth>s.width&&(s.width=s.minWidth),t=this.uiDialog.css({height:"auto",width:s.width}).outerHeight(),e=Math.max(0,s.minHeight-t),i="number"==typeof s.maxHeight?Math.max(0,s.maxHeight-t):"none","auto"===s.height?this.element.css({minHeight:e,maxHeight:i,height:"auto"}):this.element.height(Math.max(0,s.height-t)),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())},_blockFrames:function(){this.iframeBlocks=this.document.find("iframe").map(function(){var t=V(this);return V("
                  ").css({position:"absolute",width:t.outerWidth(),height:t.outerHeight()}).appendTo(t.parent()).offset(t.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_allowInteraction:function(t){return!!V(t.target).closest(".ui-dialog").length||!!V(t.target).closest(".ui-datepicker").length},_createOverlay:function(){var i,s;this.options.modal&&(i=V.fn.jquery.substring(0,4),s=!0,this._delay(function(){s=!1}),this.document.data("ui-dialog-overlays")||this.document.on("focusin.ui-dialog",function(t){var e;s||((e=this._trackingInstances()[0])._allowInteraction(t)||(t.preventDefault(),e._focusTabbable(),"3.4."!==i&&"3.5."!==i||e._delay(e._restoreTabbableFocus)))}.bind(this)),this.overlay=V("
                  ").appendTo(this._appendTo()),this._addClass(this.overlay,null,"ui-widget-overlay ui-front"),this._on(this.overlay,{mousedown:"_keepFocus"}),this.document.data("ui-dialog-overlays",(this.document.data("ui-dialog-overlays")||0)+1))},_destroyOverlay:function(){var t;this.options.modal&&this.overlay&&((t=this.document.data("ui-dialog-overlays")-1)?this.document.data("ui-dialog-overlays",t):(this.document.off("focusin.ui-dialog"),this.document.removeData("ui-dialog-overlays")),this.overlay.remove(),this.overlay=null)}}),!1!==V.uiBackCompat&&V.widget("ui.dialog",V.ui.dialog,{options:{dialogClass:""},_createWrapper:function(){this._super(),this.uiDialog.addClass(this.options.dialogClass)},_setOption:function(t,e){"dialogClass"===t&&this.uiDialog.removeClass(this.options.dialogClass).addClass(e),this._superApply(arguments)}});V.ui.dialog;function lt(t,e,i){return e<=t&&t").appendTo(this.element),this._addClass(this.valueDiv,"ui-progressbar-value","ui-widget-header"),this._refreshValue()},_destroy:function(){this.element.removeAttr("role aria-valuemin aria-valuemax aria-valuenow"),this.valueDiv.remove()},value:function(t){if(void 0===t)return this.options.value;this.options.value=this._constrainedValue(t),this._refreshValue()},_constrainedValue:function(t){return void 0===t&&(t=this.options.value),this.indeterminate=!1===t,"number"!=typeof t&&(t=0),!this.indeterminate&&Math.min(this.options.max,Math.max(this.min,t))},_setOptions:function(t){var e=t.value;delete t.value,this._super(t),this.options.value=this._constrainedValue(e),this._refreshValue()},_setOption:function(t,e){"max"===t&&(e=Math.max(this.min,e)),this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",t),this._toggleClass(null,"ui-state-disabled",!!t)},_percentage:function(){return this.indeterminate?100:100*(this.options.value-this.min)/(this.options.max-this.min)},_refreshValue:function(){var t=this.options.value,e=this._percentage();this.valueDiv.toggle(this.indeterminate||t>this.min).width(e.toFixed(0)+"%"),this._toggleClass(this.valueDiv,"ui-progressbar-complete",null,t===this.options.max)._toggleClass("ui-progressbar-indeterminate",null,this.indeterminate),this.indeterminate?(this.element.removeAttr("aria-valuenow"),this.overlayDiv||(this.overlayDiv=V("
                  ").appendTo(this.valueDiv),this._addClass(this.overlayDiv,"ui-progressbar-overlay"))):(this.element.attr({"aria-valuemax":this.options.max,"aria-valuenow":t}),this.overlayDiv&&(this.overlayDiv.remove(),this.overlayDiv=null)),this.oldValue!==t&&(this.oldValue=t,this._trigger("change")),t===this.options.max&&this._trigger("complete")}}),V.widget("ui.selectable",V.ui.mouse,{version:"1.13.1",options:{appendTo:"body",autoRefresh:!0,distance:0,filter:"*",tolerance:"touch",selected:null,selecting:null,start:null,stop:null,unselected:null,unselecting:null},_create:function(){var i=this;this._addClass("ui-selectable"),this.dragged=!1,this.refresh=function(){i.elementPos=V(i.element[0]).offset(),i.selectees=V(i.options.filter,i.element[0]),i._addClass(i.selectees,"ui-selectee"),i.selectees.each(function(){var t=V(this),e=t.offset(),e={left:e.left-i.elementPos.left,top:e.top-i.elementPos.top};V.data(this,"selectable-item",{element:this,$element:t,left:e.left,top:e.top,right:e.left+t.outerWidth(),bottom:e.top+t.outerHeight(),startselected:!1,selected:t.hasClass("ui-selected"),selecting:t.hasClass("ui-selecting"),unselecting:t.hasClass("ui-unselecting")})})},this.refresh(),this._mouseInit(),this.helper=V("
                  "),this._addClass(this.helper,"ui-selectable-helper")},_destroy:function(){this.selectees.removeData("selectable-item"),this._mouseDestroy()},_mouseStart:function(i){var s=this,t=this.options;this.opos=[i.pageX,i.pageY],this.elementPos=V(this.element[0]).offset(),this.options.disabled||(this.selectees=V(t.filter,this.element[0]),this._trigger("start",i),V(t.appendTo).append(this.helper),this.helper.css({left:i.pageX,top:i.pageY,width:0,height:0}),t.autoRefresh&&this.refresh(),this.selectees.filter(".ui-selected").each(function(){var t=V.data(this,"selectable-item");t.startselected=!0,i.metaKey||i.ctrlKey||(s._removeClass(t.$element,"ui-selected"),t.selected=!1,s._addClass(t.$element,"ui-unselecting"),t.unselecting=!0,s._trigger("unselecting",i,{unselecting:t.element}))}),V(i.target).parents().addBack().each(function(){var t,e=V.data(this,"selectable-item");if(e)return t=!i.metaKey&&!i.ctrlKey||!e.$element.hasClass("ui-selected"),s._removeClass(e.$element,t?"ui-unselecting":"ui-selected")._addClass(e.$element,t?"ui-selecting":"ui-unselecting"),e.unselecting=!t,e.selecting=t,(e.selected=t)?s._trigger("selecting",i,{selecting:e.element}):s._trigger("unselecting",i,{unselecting:e.element}),!1}))},_mouseDrag:function(s){if(this.dragged=!0,!this.options.disabled){var t,n=this,o=this.options,a=this.opos[0],r=this.opos[1],l=s.pageX,h=s.pageY;return ll||i.righth||i.bottoma&&i.rightr&&i.bottom",options:{appendTo:null,classes:{"ui-selectmenu-button-open":"ui-corner-top","ui-selectmenu-button-closed":"ui-corner-all"},disabled:null,icons:{button:"ui-icon-triangle-1-s"},position:{my:"left top",at:"left bottom",collision:"none"},width:!1,change:null,close:null,focus:null,open:null,select:null},_create:function(){var t=this.element.uniqueId().attr("id");this.ids={element:t,button:t+"-button",menu:t+"-menu"},this._drawButton(),this._drawMenu(),this._bindFormResetHandler(),this._rendered=!1,this.menuItems=V()},_drawButton:function(){var t,e=this,i=this._parseOption(this.element.find("option:selected"),this.element[0].selectedIndex);this.labels=this.element.labels().attr("for",this.ids.button),this._on(this.labels,{click:function(t){this.button.trigger("focus"),t.preventDefault()}}),this.element.hide(),this.button=V("",{tabindex:this.options.disabled?-1:0,id:this.ids.button,role:"combobox","aria-expanded":"false","aria-autocomplete":"list","aria-owns":this.ids.menu,"aria-haspopup":"true",title:this.element.attr("title")}).insertAfter(this.element),this._addClass(this.button,"ui-selectmenu-button ui-selectmenu-button-closed","ui-button ui-widget"),t=V("").appendTo(this.button),this._addClass(t,"ui-selectmenu-icon","ui-icon "+this.options.icons.button),this.buttonItem=this._renderButtonItem(i).appendTo(this.button),!1!==this.options.width&&this._resizeButton(),this._on(this.button,this._buttonEvents),this.button.one("focusin",function(){e._rendered||e._refreshMenu()})},_drawMenu:function(){var i=this;this.menu=V("
                • Pipeline
                • -
                • Functions
                • Other examples
                  • Stocks
                  • @@ -259,10 +231,8 @@

                    Tablecloth documentation

                • - -