diff --git a/.buildinfo b/.buildinfo index 129a01d..1c6172a 100644 --- a/.buildinfo +++ b/.buildinfo @@ -1,4 +1,4 @@ # Sphinx build info version 1 # This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. -config: cb320af031130cc7e35bd60276690b16 +config: 393c39f3d8fbdc92383b9e105fb39e96 tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/_sources/en/EVGumbel-EN.md b/_sources/en/EVGumbel-EN.md new file mode 100644 index 0000000..c7c5559 --- /dev/null +++ b/_sources/en/EVGumbel-EN.md @@ -0,0 +1,447 @@ + +```{code-cell} + +``` + +```{code-cell} + + +import numpy as np +import pandas as pd +import matplotlib.pyplot as plt +from scipy.stats import gumbel_r + + +# # Metallurgical context + +# Extreme value statistics is a branch of statistics dealing with assesing the probability of occurence of an event more extreme than any previously observed one. +# +# In a metallurgical quality and materials characterization context, an extreme event would be the probability that the largest size of a microstructural feature (e.g., inclusions, graphite flakes, precipitates, porosities, cavities, etc.) in a product be larger than a given threshold value. In this context, the (Gumbel) Extreme Value distribution is used to estimate these probabilities. +# +# The purpose of this Notebook is thus to provide a practical-aid using Python libraries, for performing extreme value analysis of microstructural features in materials. Two topics are discussed: +# +# 1) Estimation of (Gumbel) Extreme Value distribution parameters. +# +# 2) Construction of Gumbel plots. +# +# A **References / Further Reading** section is provided at the end of this notebook. + +# # Fundamentals for Extreme Value Analysis + +# In this section, the empirical cumulative density function is first discussed. Then the (Gumbel) Extreme Value Distribution is presented, along with two methodologies for estimating the distribution parameters (moments method and maximum likelihood method). Finally, the procedure for the construction of a Gumbel plot is presented. + +# ## Empirical Cumulative Density Function + +# Each of the $N$ measurements of size of a microstructural feature can be represented as $x_i$, where $1 \le i \le N$. +# +# To estimate the __Empirical Cumulative Density Function (ECDF)__ the data of measurements of size of a microstructural feature, $x_i$, are ordered in ascending order so that: +# +# $$x_1 \le x_2 \le x_3 \ldots \le x_N$$ +# +# Then the ECDF is calculated with the following equation: +# +# $$P_i = \frac{i}{N+1}$$ +# +# The function `eCDF()`, presents an implementation of the ECDF: +``` + +```{code-cell} + + +def eCDF(df:str | pd.DataFrame): + """ + empirical cumulative distribution function for inclusion size, + or any other microstructural feature that can be analyzed with + Extreme Value methodology. + + Parameters + ---------- + df: pandas.DataFrame + data of measurements with three columns: [run, specimen, Y]. + The column names are in concordance with ASTM E2283 nomenclature. + - run: a string identifying each of the four runs: [A, B, C, D]. + - specimen: An integer identifying a set of measurements over a + defined surface area (for inclusions, 150 microns). + For each run, 6 specimens are required: [1, 2, 3, 5, 6]. + - Y: Measurements of the microstructural feature that will be studied + using Extreme Value Methodology. In the case of inclusions, + Y correponds to the longest inclusion length in an specimen. + + Returns + ------- + Ysorted: np.ndarray + microstructural feature measurements, in ascending order. + ecdf: numpy.ndarray + empirical cumulative distribution function values. + """ + Ysorted = df.Y.sort_values().reset_index(drop=True).to_numpy() # sort values + Nvalues = len(Ysorted) + ecdf = np.linspace(1, Nvalues, Nvalues) / (Nvalues+1) # estimate ecdf + return Ysorted, ecdf + + +# ## (Gumbel) Extreme Value Distribution + +# ### Probability Density Function and Cumulative Density Functions + +# +# +# The __Probability Density Function (PDF)__ for the two-parameter (Gumbel) Extreme Value Distribution is given by: +# +# $$f(x) = \frac{1}{\delta} \left[\exp\left(-\frac{x-\lambda}{\delta}\right)\right] \times \exp\left[-\exp\left(-\frac{x-\lambda}{\delta}\right)\right]$$ +# +# The __Cumulative Density Function (CDF)__ is given by: +# +# $$F(x) = \exp\left(-\exp\left(-\frac{x - \lambda}{\delta}\right)\right)$$ +# +# +# where: +# +# - $x$: size of the largest microstructural feature in each control area, $A_0$. +# +# - $\lambda$: location parameter of the (Gumbel) Extreme Value distribution function. +# +# - $\delta$: scale parameter of the (Gumbel) Extreme Value distribution function + +# ### Estimation of distribution parameters (Moments Method) + +# The parameters of the (Gumbel) Extreme Value distribution can be estimated with the following equations: +# +# $$\delta_{mom} = \frac{s \, \sqrt{6}}{\pi}$$ +# +# $$\lambda_{mom} = \bar{X} - 0.5772 \, \delta_{mom}$$ +# +# The subscript, $_{mom}$ , indicates that the estimates are obtained by the moments method, in which: +# +# - The first moment is the mean largest size of the dataset of measurements of size of the microstructural feature, $\bar{X}$. It is estimated as: +# +# $$\bar{X} = \frac{1}{N} \sum_{i=1}^{n} x_i$$ +# +# - The square root of the second moment is the standard deviation of the dataset of measurements of size of microstructural feature, $s$. It is estimated as: +# +# $$s = \left[\sum_{i=1}^{N} \frac{\left(x_i - \bar{X}\right)^2}{N-1}\right]^{0.5}$$ +# +# +# The function `fitEVmom()`, presents an implementation of the procedure for estimating the Extreme Value distribution parameters with the Moments Method: +``` + +```{code-cell} + + +def fitEVmom(df:str | pd.DataFrame, verbose:bool = True): + """ + Fit (Gumbel) Extreme Value distribution to measurements + of a microstructural feature (e.g., inclusion size) using + Moments Method (as presented in ASTM E2283 norm) + + Parameters + ---------- + df: pandas.DataFrame + data of measurements with three columns: [run, specimen, Y]. + The column names are in concordance with ASTM E2283 nomenclature. + - run: a string identifying each of the four runs: [A, B, C, D]. + - specimen: An integer identifying a set of measurements over a + defined control area. + For each run, 6 specimens are required: [1, 2, 3, 5, 6]. + - Y: Measurements of the microstructural feature that will be studied + using Extreme Value Methodology. In the case of inclusions, + Y correponds to the longest inclusion length in an specimen. + + Returns + ------- + lamb: Float + location parameter of the fitted (Gumbel) Extreme Value distriution. + delta: Float + scale parameter of the fitted (Gumbel) Extreme Value distriution. + """ + Ymean = df.Y.mean() # mean + Ystd = df.Y.std() # std. dev. pop. + delta = Ystd * np.sqrt(6) / np.pi # scale parameter + lamb = Ymean - 0.5772 * delta # location parameter + if verbose==True: + print('Gumbel distribution params.') + print('lambda: {:.4f}'.format(lamb)) + print('delta : {:.4f}'.format(delta)) + print('*MoM est.') + return lamb, delta + + +# ### Estimation of distribution parameters (Maximum Likelihood Method) + +# The method of maximum likelihood is based on the approach that the best estimation of distribution parameters are those that maximize the likelihood of obtaining the set of measurements of the given microstructural feature. This is done using a numerical method sought for determining the values of the distribution parameters which maximize the sum of the logarithms of the probability density function, when evaluating the data set. When the natural logarithm is chosen, the optimization function is of the form: +# +# $$LL=\sum_{i=1}^{N} \ln \left(f\left(x_i, \lambda, \delta \right) \right)$$ +# +# where the optimization procedure consists on finding the $\lambda_{ML}$ and $\delta_{ML}$ that maximize the value of $LL$. The subscript, $_{ML}$, indicate that the estimates are obtained by the Maximum Likelihood method. +# +# The function `fitEVml()`, presents an implementation of the procedure for estimating the Extreme Value distribution parameters with the Maximum Likelihood Method. This implementation is simply a wrapper of one of the methods of the `gumbel_r` class from the `scipy.stats` library: +``` + +```{code-cell} + + +def fitEVml(df:str | pd.DataFrame, verbose:bool = True): + """ + Fit (Gumbel) Extreme Value distribution to measurements + of a microstructural feature (e.g., inclusion size) using + Maximum Likelihood methods (as implemented in scipy.stats) + + Parameters + ---------- + df: pandas.DataFrame + data of measurements with three columns: [run, specimen, Y]. + The column names are in concordance with ASTM E2283 nomenclature. + - run: a string identifying each of the four runs: [A, B, C, D]. + - specimen: An integer identifying a set of measurements over a + defined control area. + For each run, 6 specimens are required: [1, 2, 3, 5, 6]. + - Y: Measurements of the microstructural feature that will be studied + using Extreme Value Methodology. In the case of inclusions, + Y correponds to the longest inclusion length in an specimen. + + Returns + ------- + lamb: Float + location parameter of the fitted (Gumbel) Extreme Value distriution. + delta: Float + scale parameter of the fitted (Gumbel) Extreme Value distriution. + """ + evDist = gumbel_r.fit(df.Y) #ML fitting + delta = evDist[1] # scale parameter + lamb = evDist[0] # location parameter + if verbose==True: + print('Gumbel distribution params.') + print('lambda: {:.4f}'.format(lamb)) + print('delta : {:.4f}'.format(delta)) + print('*ML est.') + return lamb, delta + + +# ### Confidence interval of estimations of sizes of microstructural features + +# The standard error of any microstructural feature of size $x$, based on the maximum likelihood method is given by: +# +# $$\mathrm{SE}(x) = \delta \sqrt{\frac{1.109+0.514\,y+0.608\,y^2}{N}}$$ +# +# The 95% confidence interval is given by: +# +# $$95\%\,\mathrm{CI} = \pm 2\, \mathrm{SE}(x)$$ +# +# where: +# +# - $x$: size of the microstructural feature. +# +# - $\lambda$: location parameter of the (Gumbel) Extreme Value distribution function. +# +# - $\delta$: scale parameter of the (Gumbel) Extreme Value distribution function. +# +# - $y$: reduced variable, defined as: $y=\frac{x - \lambda}{\delta}$. +# +# - $N$: number of measurements used when performing the fitting of the (Gumbel) Extreme Value distribution. +# +# +``` + +```{code-cell} + + +def calcSE(x:float, lamb:float, delta:float, N:int): + """ + Estimate the Standard Error (SE) of size estimation for + a population of microstructural features that has been fit + to the (Gumbel) Extreme Value distribution. + + Parameters + ---------- + x: Float + size of microstructural feature + lamb: Float + location parameter of the fitted (Gumbel) Extreme Value distribution. + delta: Float + scale parameter of the fitted (Gumbel) Extreme Value distribution. + N: Int + number of measurements + + Returns + ------- + SE: Float + standard error of size estimations + """ + y = (x - lamb) / delta + SE = delta * np.sqrt((1.109 + 0.514*y + 0.608*y**2)/N) + return SE + + +# ## Gumbel plot + +# The Gumbel plot is a visualization tool developped in the times when computers where not readily available for the general public. Originally, these kind of plots were made by hand-plotting the linearized (Gumbel) Extreme Value Cumulative Distribution Function and the data-points on 2-cycle log-probability paper. + +# ### Linearization of the Cumulative Density Function: + +# First, the __reduced variable__, $y$, is defined as: +# +# $$y = \frac{x - \lambda}{\delta}$$ +# +# The Cumulative Density Function of the (Gumbel) Extreme Value distribution, $F(x)$, can be then rewriten as a function of $y$: +# +# $$F(x) = \exp\left(-\exp\left(-\frac{x - \lambda}{\delta}\right)\right)$$ +# +# $$F(y) = \exp\left(-\exp\left(-y\right)\right)$$ +# +# The linearized cumulative distribution function is then written as: +# +# $$-\ln\left(-\ln\left(F(x)\right)\right) = \frac{x - \lambda}{\delta}$$ +# +# $$-\ln\left(-\ln\left(F(y)\right)\right) = y$$ +# +# where $F(x) = F(y) = P$, is the probability thet the largest microstructural feature be as large as size $x$. +# +# The function `calcRedVar()`, presents an implementation of the procedure for linealizing the Cumulative Density Function of the (Gumbel) Extreme Value distribution: +``` + +```{code-cell} + + +def calcRedVar(F:float): + """ + reduced variable, y, used in the procedure of linearization + of the (Gumbel) Extreme Value CDF. + + Parameters + ---------- + F: float + Cumulative density function F(y) + + Returns + ------- + y: float + linealized (Gumbel) Extreme Value cumulative density function. + """ + y = -1.0 * np.log(-np.log(F)) + return y + + +# Once the best estimates for the location $(\lambda)$ and scale $(\delta)$ parameters are determined, the expected maximum size of the microstructural feature can be estimated for a given probability using the equation: +# +# $$x = \delta y + \lambda$$ +# +# or +# +# $$x = \delta \left[-\ln\left(-\ln\left(P\right)\right)\right] + \lambda$$ +# +# This corresponds to the equation of a straight line, where the slope is given by the scale parameter $(\delta)$, and the intercept is given by the location parameter $(\lambda)$. + +# ### Construction of the Gumbel plot + +# The development of the Gumbel plot preceeds the advent of computer methods. As such, these kind of plots were useful to enable the estimation of (Gumbel) Extreme Value distribution parameters by graphical methods. Today, they serve as a tool for verifying the goodness-of-fit of the distribution parameters against the set of data. +# +# The steps for constructing one of such plots are as follows: + +# - Perform work on data set using the Empirical Cumulative distribution function: +# - Sort the data of measurements of size of microstructural feature, $x$, in ascending order. +# - Estimate the empirical cumulative distribution function (ECDF) of the data, $P$. +# - Estimate the value of the reduced variable, for the ECDF calculated in the previous step, $y=-\ln\left(-\ln\left(P\right)\right)$. + +# - Fit the (Gumbel) Extreme value distribution to the data set using a numerical method: +# - Use either Moments Method or Maximum Likelihood method for estimation of the distribution parameters, $\delta$ and $\lambda$. +# - Obtain the estimates of size of microstructural feature, $x_{ML}$, for the given empirical probabilities of the data, $P$. + +# - Plot the data +# - Plot the linealized empirical distribution function vs the sorted size measurements, $-\ln\left(-\ln\left(P\right)\right)$ vs $x$. +# - Plot the linealized empirical distribution function vs the Extreme Value size estimations, $-\ln\left(-\ln\left(P\right)\right)$ vs $x_{ML}$. +# - Plot the lines representing the confidence interval of the Extreme Value estimations. + +# The function `gumbelPlot()`, presents an implementation of the procedure for constructing a Gumbel plot: +``` + +```{code-cell} + + +def gumbelPlot(df:str | pd.DataFrame, gamma:float = None, delta:float = None, ax=None): + + if ax==None: + fig = plt.figure() + ax = fig.add_subplot(111) + + #### Perform work on data set using the ECDF + xSorted, ecdf = eCDF(df) # ecdf + redVar = -1.0 * np.log(-np.log(ecdf)) # reduced variable + + #### Fit the distribution to the data set + if ((gamma==None) or (delta==None)): + lamb, delta = fitEVml(df) # Maximum Likelihood + xML = delta*redVar + lamb # x-value estimation + + #### plot data + ax.plot(xSorted, redVar, ls='', marker='o', color='k', markerfacecolor='w') # ECDF + ax.plot(xML, redVar, ls='-', color='k') # EV-Distribution + + #### plot confidence interval + N = len(df) + SE = calcSE(xML, lamb, delta, N) + xmin = xML - 2.0*SE + xmax = xML + 2.0*SE + ax.plot(xmin, redVar, ls='--', color='k') # EV-Distribution min 95%CI + ax.plot(xmax, redVar, ls='--', color='k') # EV-Distribution max 95%CI + + #### plot layout + ax.set_ylabel('Reduced variable') + ax.set_xlabel('x (size, length, etc.)') + ax.grid(ls='--', color='lightgray') + ax.annotate("Gumbel params.", fontweight='bold', + xy=(0.15, 0.85), xycoords='subfigure fraction') + ax.annotate(r"$\lambda =${:.4f}".format(lamb), + xy=(0.15, 0.80), xycoords='subfigure fraction') + ax.annotate(r"$\delta =${:.4f}".format(delta), + xy=(0.15, 0.75), xycoords='subfigure fraction') + + +# # Example of application of Extreme Value Analysis + +# The dataset for this example is taken from the ASTM E-2283 standard. The dataset consists of 24 measurements of the largest inclusion found in six steel specimens(specimen: 1 - 6), with the procedure being repeated four times (run: A - D). +# +# Below, the data is put into Pandas DataFrame format, and the function `gumbelPlot()` defined above is used to fit a (Gumbel) Extreme Value Distribution function to the data, and draw a Gumbel plot for the data. +``` + +```{code-cell} + + +# Dataset from ASTM-E2283 +specimen = [1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6] +run = ['A', 'A', 'A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', 'B', 'B', 'C', 'C', 'C', 'C', 'C', 'C', 'D', 'D', 'D', 'D', 'D', 'D'] +Y = [40.29, 37.24, 29.03, 52.46, 62.21, 33.98, 30.73, 37.43, 35.00, 44.82, 66.13, 48.55, 73.48, 44.79, 70.87, 59.83, 22.18, 64.32, 78.91, 46.53, 94.28, 49.15, 82.39, 37.43] +``` + +```{code-cell} + + +# Construct dataframe +df = pd.DataFrame(list(zip(run, specimen, Y)), + columns=['run', 'specimen', 'Y']) +``` + +```{code-cell} + + +# Show the dataframe +#df.sort_values(by='Y', ascending=True, inplace=True) # uncomment for sorting by size +display(df) +``` + +```{code-cell} + + +# Construct the Gumbel plot (with estimation of parameters) +gumbelPlot(df) + + +# # References / Further reading + +# - ASTM Norm: [ASTM E2283: Standard Practice for Extreme Value Analysis of Nonmetallic Inclusions in Steel and Other Microstructural Features](https://www.astm.org/e2283-08r19.html) +# +# - Book: [Y. Murakami, Metal Fatigue (2002)](https://www.sciencedirect.com/book/9780080440644/metal-fatigue) +# +# - Wikipedia site: [Gumbel Distribution](https://en.wikipedia.org/wiki/Gumbel_distribution) +# +# - Scipy documentation: [scipy.stats.gumbel_r](https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.gumbel_r.html) +``` diff --git a/_sources/es/EVGumbel-ES.md b/_sources/es/EVGumbel-ES.md new file mode 100644 index 0000000..0b5b0e5 --- /dev/null +++ b/_sources/es/EVGumbel-ES.md @@ -0,0 +1,447 @@ + +```{code-cell} + +``` + +```{code-cell} + + +import numpy as np +import pandas as pd +import matplotlib.pyplot as plt +from scipy.stats import gumbel_r + + +# # Contexto metalúrgico + +# La estadística de valores extremos es una rama de la estadística que se interesa en estimar la probabilidad de que ocurra un evento más extremo que cualquier evento observado previamente. +# +# Dentro del contexto de calidad metalúrgica y de caracterización de materiales, un evento extremo podría ser la probabilidad de que una característica microstructural en un material (e.g., inclusiones, hojuelas de grafito, precipitados, porosidades, cavidades, etc.) sea más grande que a un tamaño crítico. En este contexto, la Distribución (Gumbel) de Valores Extremos se utiliza para estimar las probabilidades. +# +# El objetivo de este Notebook es proveer una guía práctica para realizar análisis de características microestructurales de materiales, utilizando librerías de Python. Se presentan dos temas: +# +# 1) Estimación de parámetros de la Distribución (Gumbel) de Valores Extremos. +# +# 2) Construcción de gráficos de Gumbel. +# +# +# Al final de este Notebook, se provee una sección con **Referencias**. + +# # Fundamentos de Análisis de Valores Extremos + +# En esta sección se presenta primeramente la Distribución Empírica (de Probabilidad Acumulada). Después se presenta la Distribución (Gumbel) de Valores Extremos, junto con dos metodologías para la estimación de los parámetros de la distribución (método de momentos, y método de la máxima verosimilitud). Finalmente, se presenta el procedimiento para la construcción de un gráfico de Gumbel. + +# ## Distribución Empírica + +# Cada una de las $N$ mediciones de tamaño de una característica microestructural se puede representar como $x_i$, en donde $1 \le i \le N$. +# +# Para estimar la __Distribución Empírica__, los datos de tamaño de una característica microestructural, $x_i$, se ordenan en orden ascendente de tal forma que: +# +# $$x_1 \le x_2 \le x_3 \ldots \le x_N$$ +# +# La distribución empírica se calcula como: +# +# $$P_i = \frac{i}{N+1}$$ +# +# La función `eCDF()`, presenta una implementación de la Distribución empírica: +``` + +```{code-cell} + + +def eCDF(df:str | pd.DataFrame): + """ + empirical cumulative distribution function for inclusion size, + or any other microstructural feature that can be analyzed with + Extreme Value methodology. + + Parameters + ---------- + df: pandas.DataFrame + data of measurements with three columns: [run, specimen, Y]. + The column names are in concordance with ASTM E2283 nomenclature. + - run: a string identifying each of the four runs: [A, B, C, D]. + - specimen: An integer identifying a set of measurements over a + defined surface area (for inclusions, 150 microns). + For each run, 6 specimens are required: [1, 2, 3, 5, 6]. + - Y: Measurements of the microstructural feature that will be studied + using Extreme Value Methodology. In the case of inclusions, + Y correponds to the longest inclusion length in an specimen. + + Returns + ------- + Ysorted: np.ndarray + microstructural feature measurements, in ascending order. + ecdf: numpy.ndarray + empirical cumulative distribution function values. + """ + Ysorted = df.Y.sort_values().reset_index(drop=True).to_numpy() # sort values + Nvalues = len(Ysorted) + ecdf = np.linspace(1, Nvalues, Nvalues) / (Nvalues+1) # estimate ecdf + return Ysorted, ecdf + + +# ## Distribución (Gumbel) de Valores Extremos + +# ### Funciones de densidad de probabilidad (PDF) y densidad acumulada (CDF) + +# +# La función de densidad de probabilidad (PDF) para la Distribución (Gumbel) de Valores Extremos está dada por: +# +# $$f(x) = \frac{1}{\delta} \left[\exp\left(-\frac{x-\lambda}{\delta}\right)\right] \times \exp\left[-\exp\left(-\frac{x-\lambda}{\delta}\right)\right]$$ +# +# La función de densidad acumulada (CDF) está dada por: +# +# $$F(x) = \exp\left(-\exp\left(-\frac{x - \lambda}{\delta}\right)\right)$$ +# +# +# donde: +# +# - $x$: tamaño de la característica microestructural más grande en un área de control, $A_0$. +# +# - $\lambda$: parámetro de locación de la Distribución (Gumbel) de Valores Extremos. +# +# - $\delta$: parámetro de escala de la Distribución (Gumbel) de Valores Extremos. + +# ### Estimación de parámetros de la distribución (Método de momentos) + +# Los parámetros de la Distribución (Gumbel) de Valores Extremos se estiman mediante las siguientes ecuaciones: +# +# $$\delta_{mom} = \frac{s \, \sqrt{6}}{\pi}$$ +# +# $$\lambda_{mom} = \bar{X} - 0.5772 \, \delta_{mom}$$ +# +# El subindice, $_{mom}$ , indica que los estimados se obtienen por el método de momentos, en el cuál: +# +# - El primer momento es el promedio del tamaño más grande de la característica microestructural, $\bar{X}$, calculado a partir de la serie de datos: +# +# $$\bar{X} = \frac{1}{N} \sum_{i=1}^{n} x_i$$ +# +# - La raíz cuadrada del segundo momento es la desviación estandar de la serie de datos: +# +# $$s = \left[\sum_{i=1}^{N} \frac{\left(x_i - \bar{X}\right)^2}{N-1}\right]^{0.5}$$ +# +# +# La función `fitEVmom()` es una implementación del procedimiento para estimar los parámetros de la Distribución (Gumbel) de Valores Extremos mediante el método de momentos. +``` + +```{code-cell} + + +def fitEVmom(df:str | pd.DataFrame, verbose:bool = True): + """ + Fit (Gumbel) Extreme Value distribution to measurements + of a microstructural feature (e.g., inclusion size) using + Moments Method (as presented in ASTM E2283 norm) + + Parameters + ---------- + df: pandas.DataFrame + data of measurements with three columns: [run, specimen, Y]. + The column names are in concordance with ASTM E2283 nomenclature. + - run: a string identifying each of the four runs: [A, B, C, D]. + - specimen: An integer identifying a set of measurements over a + defined control area. + For each run, 6 specimens are required: [1, 2, 3, 5, 6]. + - Y: Measurements of the microstructural feature that will be studied + using Extreme Value Methodology. In the case of inclusions, + Y correponds to the longest inclusion length in an specimen. + + Returns + ------- + lamb: Float + location parameter of the fitted (Gumbel) Extreme Value distriution. + delta: Float + scale parameter of the fitted (Gumbel) Extreme Value distriution. + """ + Ymean = df.Y.mean() # mean + Ystd = df.Y.std() # std. dev. pop. + delta = Ystd * np.sqrt(6) / np.pi # scale parameter + lamb = Ymean - 0.5772 * delta # location parameter + if verbose==True: + print('Gumbel distribution params.') + print('lambda: {:.4f}'.format(lamb)) + print('delta : {:.4f}'.format(delta)) + print('*MoM est.') + return lamb, delta + + +# ### Estimación de parámetros de la distribución (Método de máxima verosimilitud) + +# El método de máxima verosimilitud se basa en el postulado que el mejor estimado de parámetros para la distribución es aquel que maximice la verosimilitud entre la distribución y los datos de tamaño de característica microestructural. Este procedimiento se lleva a cabo mediante un método numérico en el cuál se buscan los parámetros de distribución que maximicen una función objetivo dada por la suma de los logaritmos de la función de densidad de probabilidad evaluada para todos los datos. Cuando se utiliza logaritmo natural, la función de optimización es de la forma: +# +# $$LL=\sum_{i=1}^{N} \ln \left(f\left(x_i, \lambda, \delta \right) \right)$$ +# +# para la cual, el procedimiento de optimización consiste en encontrar los valores de $\lambda_{ML}$ y $\delta_{ML}$ que maximicen el valor de $LL$. El subídice $_{ML}$, indica que los estimados son obtenidos mediante el método de máxima verosimilitud. +# +# +# La función `fitEVml()`, es un wrapper para la clase `gumbel_r` de la librería `scipy.stats`, que permite estimar los parámetros mediante el método de máxima verosimilitud. +``` + +```{code-cell} + + +def fitEVml(df:str | pd.DataFrame, verbose:bool = True): + """ + Fit (Gumbel) Extreme Value distribution to measurements + of a microstructural feature (e.g., inclusion size) using + Maximum Likelihood methods (as implemented in scipy.stats) + + Parameters + ---------- + df: pandas.DataFrame + data of measurements with three columns: [run, specimen, Y]. + The column names are in concordance with ASTM E2283 nomenclature. + - run: a string identifying each of the four runs: [A, B, C, D]. + - specimen: An integer identifying a set of measurements over a + defined control area. + For each run, 6 specimens are required: [1, 2, 3, 5, 6]. + - Y: Measurements of the microstructural feature that will be studied + using Extreme Value Methodology. In the case of inclusions, + Y correponds to the longest inclusion length in an specimen. + + Returns + ------- + lamb: Float + location parameter of the fitted (Gumbel) Extreme Value distriution. + delta: Float + scale parameter of the fitted (Gumbel) Extreme Value distriution. + """ + evDist = gumbel_r.fit(df.Y) #ML fitting + delta = evDist[1] # scale parameter + lamb = evDist[0] # location parameter + if verbose==True: + print('Gumbel distribution params.') + print('lambda: {:.4f}'.format(lamb)) + print('delta : {:.4f}'.format(delta)) + print('*ML est.') + return lamb, delta + + +# ### Intervalo de confianza para la estimaciones de tamaño de características microestructurales + +# El error estándar para el tamaño de una característica microestructural, $x$, basado en los résultados del método de máxima verosimilitud, está dado por: +# +# +# $$\mathrm{SE}(x) = \delta \sqrt{\frac{1.109+0.514\,y+0.608\,y^2}{N}}$$ +# +# El intervalor de confianza de 95% está dado por: +# +# $$95\%\,\mathrm{CI} = \pm 2\, \mathrm{SE}(x)$$ +# +# donde: +# +# - $x$: tamaño de la característica microestructural. +# +# - $\lambda$: parámetro de locación de la Distribución (Gumbel) de Valores Extremos. +# +# - $\delta$: parámetro de escala de la Distribución (Gumbel) de Valores Extremos. +# +# - $y$: variable reducida, definida como: $y=\frac{x - \lambda}{\delta}$. +# +# - $N$: numero de datos de mediciones utilizadas en el proceso de ajuste de la Distribución (Gumbel) de Valores Extremos. +``` + +```{code-cell} + + +def calcSE(x:float, lamb:float, delta:float, N:int): + """ + Estimate the Standard Error (SE) of size estimation for + a population of microstructural features that has been fit + to the (Gumbel) Extreme Value distribution. + + Parameters + ---------- + x: Float + size of microstructural feature + lamb: Float + location parameter of the fitted (Gumbel) Extreme Value distribution. + delta: Float + scale parameter of the fitted (Gumbel) Extreme Value distribution. + N: Int + number of measurements + + Returns + ------- + SE: Float + standard error of size estimations + """ + y = (x - lamb) / delta + SE = delta * np.sqrt((1.109 + 0.514*y + 0.608*y**2)/N) + return SE + + +# ## Gráfico de Gumbel + +# El gráfico de Gumbel es una herramienta de visualización desarrollada en tiempos en los que no había acceso a computadoras para el público en general. Originalmente, este tipo de gráficos se hacían trazando a mano la función de probabilidad acumulada de la Distribución (Gumbel) de Valores Extremos linealizada y los puntos de datos en papel logarítmico de dos ciclos. + +# ### Linealización de la función de probabilidad acumulada: + +# Primeramente, se define a la __variable reducida__, $y$, como: +# +# $$y = \frac{x - \lambda}{\delta}$$ +# +# Entonces, la función de probabilidad acumulada de la Distribución (Gumbel) de Valores Extremos, $F(x)$, se puede reescribir en función de $y$: +# +# $$F(x) = \exp\left(-\exp\left(-\frac{x - \lambda}{\delta}\right)\right)$$ +# +# $$F(y) = \exp\left(-\exp\left(-y\right)\right)$$ +# +# La función linealizada se puede reescribir posteriormente como: +# +# $$-\ln\left(-\ln\left(F(x)\right)\right) = \frac{x - \lambda}{\delta}$$ +# +# $$-\ln\left(-\ln\left(F(y)\right)\right) = y$$ +# +# en donde $F(x) = F(y) = P$, es la probabilidad de que la característica microestructural más grande sea tan grande como el tamaño $x$. +# +# La función `calcRedVar()`, es una implementación del proceso para linealizar la función de probabilidad acumulada de la Distribución (Gumbel) de Valores Extremos: +``` + +```{code-cell} + + +def calcRedVar(F:float): + """ + reduced variable, y, used in the procedure of linearization + of the (Gumbel) Extreme Value CDF. + + Parameters + ---------- + F: float + Cumulative density function F(y) + + Returns + ------- + y: float + linealized (Gumbel) Extreme Value cumulative density function. + """ + y = -1.0 * np.log(-np.log(F)) + return y + + +# Una vez que se hayan obtenido los mejores estimados para el parámetro de locación $(\lambda)$ y escala $(\delta)$, se puede estimar el tamaño máximo esperado de una característica microestructural, para una probabilidad dada, usando la ecuación: +# +# $$x = \delta y + \lambda$$ +# +# o +# +# $$x = \delta \left[-\ln\left(-\ln\left(P\right)\right)\right] + \lambda$$ +# +# Esto corresponde a la ecuación de una línea recta, en la que la pendiente está dada por el parámetro de escala $(\delta)$, y el intercepto está dado por el parámetro de locación $(\lambda)$. + +# ### Construcción de un gráfico de Gumbel + +# El desarrollo inicial del gráfico de Gumbel se llevó a cabo antes de la disponibilidad masiva de métodos computacionales. Es por eso, que este tipo de gráficos eran útiles para estimar mediante métodos gráficos los valores de los parámetros de la Distribución (Gumbel) de Valores Extremos. Al día de hoy, sirven como herramienta gráfica para verificar el buen ajuste de la distribución a los datos. +# +# Los pasos para construír un gráfico de Gumbel son los siguientes: + +# - Procesar la serie de datos utilizando la Distribución Empírica: +# - Ordenar las mediciones de tamaño de característica microestructural, $x$, in orden ascendiente. +# - Estimar los valores de la Distribución Empírica, $P$, para la serie de datos. +# - Estimar el valor de la variable reducida que corresponde a la Distribución empírica ajustada previamente: $y=-\ln\left(-\ln\left(P\right)\right)$. + +# - Utilizar un método para ajustar la Distribución (Gumbel) de Valores extremos a la serie de datos: +# - Utilizar el método de momentos o el método de máxima verosimilitud para obtener estimados de los parámetros de la distribución, $\delta$ y $\lambda$. +# - Obtener estimados de tamaños de la característica microestructural, $X_{ML}$, para las probabilidad empíricas estimadas para la serie de datos, $P$. + +# - Graficar los datos: +# - Graficar la distribución empírica linealizada contra las mediciones ordenadas, $-\ln\left(-\ln\left(P\right)\right)$ vs $x$. +# - Graficar la distribución empírica linealizada contra las estimaciones dadas por la Distribución (Gumbel) de Valores Extremos, $-\ln\left(-\ln\left(P\right)\right)$ vs $x_{ML}$. +# - Graficar los intervalos de confianza. + +# La función `gumbelPlot()`, presenta una implementación del prodimiento para construír un gráfico de Gumbel. +``` + +```{code-cell} + + +def gumbelPlot(df:str | pd.DataFrame, gamma:float = None, delta:float = None, ax=None): + + if ax==None: + fig = plt.figure() + ax = fig.add_subplot(111) + + #### Perform work on data set using the ECDF + xSorted, ecdf = eCDF(df) # ecdf + redVar = -1.0 * np.log(-np.log(ecdf)) # reduced variable + + #### Fit the distribution to the data set + if ((gamma==None) or (delta==None)): + lamb, delta = fitEVml(df) # Maximum Likelihood + xML = delta*redVar + lamb # x-value estimation + + #### plot data + ax.plot(xSorted, redVar, ls='', marker='o', color='k', markerfacecolor='w') # ECDF + ax.plot(xML, redVar, ls='-', color='k') # EV-Distribution + + #### plot confidence interval + N = len(df) + SE = calcSE(xML, lamb, delta, N) + xmin = xML - 2.0*SE + xmax = xML + 2.0*SE + ax.plot(xmin, redVar, ls='--', color='k') # EV-Distribution min 95%CI + ax.plot(xmax, redVar, ls='--', color='k') # EV-Distribution max 95%CI + + #### plot layout + ax.set_ylabel('Reduced variable') + ax.set_xlabel('x (size, length, etc.)') + ax.grid(ls='--', color='lightgray') + ax.annotate("Gumbel params.", fontweight='bold', + xy=(0.15, 0.85), xycoords='subfigure fraction') + ax.annotate(r"$\lambda =${:.4f}".format(lamb), + xy=(0.15, 0.80), xycoords='subfigure fraction') + ax.annotate(r"$\delta =${:.4f}".format(delta), + xy=(0.15, 0.75), xycoords='subfigure fraction') + + +# # Ejemplo de aplicación de Análisis de Valores Extremos + +# Los datos utilizados en este ejemplo se tomaron de la norma ASTM E-2283. Los datos están constituidos por 24 mediciones del tamaño más grande de inclusión observada en seis especímenes de acero (specimen: 1-6), en un procedimiento que se repite cuatro veces (run: A - D). +# +# Debajo, los datos se ponen en un formato Pandas DataFrame, y se utiliza la función `gumbelPlot()` para ajustar la Distribución (Gumbel) de Valores Extremos a los datos, y trazar un gráfico de Gumbel para los mismos. +``` + +```{code-cell} + + +# Datos de la norma ASTM-E2283 +specimen = [1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6] +run = ['A', 'A', 'A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', 'B', 'B', 'C', 'C', 'C', 'C', 'C', 'C', 'D', 'D', 'D', 'D', 'D', 'D'] +Y = [40.29, 37.24, 29.03, 52.46, 62.21, 33.98, 30.73, 37.43, 35.00, 44.82, 66.13, 48.55, 73.48, 44.79, 70.87, 59.83, 22.18, 64.32, 78.91, 46.53, 94.28, 49.15, 82.39, 37.43] +``` + +```{code-cell} + + +# Construir el DataFrame +df = pd.DataFrame(list(zip(run, specimen, Y)), + columns=['run', 'specimen', 'Y']) +``` + +```{code-cell} + + +# Mostrar el DataFrame +#df.sort_values(by='Y', ascending=True, inplace=True) # uncomment for sorting by size +display(df) +``` + +```{code-cell} + + +# Construir el gráfico de Gumbel (con estimación de parámetros) +gumbelPlot(df) + + +# # Referencias + +# - Norma ASTM: [ASTM E2283: Standard Practice for Extreme Value Analysis of Nonmetallic Inclusions in Steel and Other Microstructural Features](https://www.astm.org/e2283-08r19.html) +# +# - Libro: [Y. Murakami, Metal Fatigue (2002)](https://www.sciencedirect.com/book/9780080440644/metal-fatigue) +# +# - Página Wikipedia: [Gumbel Distribution](https://en.wikipedia.org/wiki/Gumbel_distribution) +# +# - Documentación Scipy: [scipy.stats.gumbel_r](https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.gumbel_r.html) +``` diff --git a/_static/scripts/pydata-sphinx-theme.js b/_static/scripts/pydata-sphinx-theme.js index 85ae6ba..db2e63a 100644 --- a/_static/scripts/pydata-sphinx-theme.js +++ b/_static/scripts/pydata-sphinx-theme.js @@ -1,2 +1,2 @@ -(()=>{"use strict";var e,t,n,r,o={803:(e,t,n)=>{n.d(t,{Gu:()=>r,qu:()=>o});const r=e=>"string"==typeof e&&/^[v\d]/.test(e)&&a.test(e),o=(e,t,n)=>{h(n);const r=((e,t)=>{const n=c(e),r=c(t),o=n.pop(),a=r.pop(),d=l(n,r);return 0!==d?d:o&&a?l(o.split("."),a.split(".")):o||a?o?-1:1:0})(e,t);return u[n].includes(r)},a=/^[v^~<>=]*?(\d+)(?:\.([x*]|\d+)(?:\.([x*]|\d+)(?:\.([x*]|\d+))?(?:-([\da-z\-]+(?:\.[\da-z\-]+)*))?(?:\+[\da-z\-]+(?:\.[\da-z\-]+)*)?)?)?$/i,c=e=>{if("string"!=typeof e)throw new TypeError("Invalid argument expected string");const t=e.match(a);if(!t)throw new Error(`Invalid argument not valid semver ('${e}' received)`);return t.shift(),t},d=e=>"*"===e||"x"===e||"X"===e,i=e=>{const t=parseInt(e,10);return isNaN(t)?e:t},s=(e,t)=>{if(d(e)||d(t))return 0;const[n,r]=((e,t)=>typeof e!=typeof t?[String(e),String(t)]:[e,t])(i(e),i(t));return n>r?1:n{for(let n=0;n":[1],">=":[0,1],"=":[0],"<=":[-1,0],"<":[-1]},m=Object.keys(u),h=e=>{if("string"!=typeof e)throw new TypeError("Invalid operator type, expected string but got "+typeof e);if(-1===m.indexOf(e))throw new Error(`Invalid operator, expected one of ${m.join("|")}`)}},375:(e,t,n)=>{function r(e){"loading"!=document.readyState?e():document.addEventListener("DOMContentLoaded",e)}n.d(t,{A:()=>r})},937:(e,t,n)=>{n.a(e,(async(e,t)=>{try{var r=n(375),o=n(803),a=window.matchMedia("(prefers-color-scheme: dark)");function l(e){document.documentElement.dataset.theme=a.matches?"dark":"light"}function u(e){"light"!==e&&"dark"!==e&&"auto"!==e&&(console.error(`Got invalid theme mode: ${e}. Resetting to auto.`),e="auto");var t=a.matches?"dark":"light";document.documentElement.dataset.mode=e;var n="auto"==e?t:e;document.documentElement.dataset.theme=n,document.querySelectorAll(".dropdown-menu").forEach((e=>{"dark"===n?e.classList.add("dropdown-menu-dark"):e.classList.remove("dropdown-menu-dark")})),localStorage.setItem("mode",e),localStorage.setItem("theme",n),console.log(`[PST]: Changed to ${e} mode using the ${n} theme.`),a.onchange="auto"==e?l:""}function m(){const e=document.documentElement.dataset.defaultMode||"auto",t=localStorage.getItem("mode")||e;var n,r;u(((r=(n=a.matches?["auto","light","dark"]:["auto","dark","light"]).indexOf(t)+1)===n.length&&(r=0),n[r]))}function h(){u(document.documentElement.dataset.mode),document.querySelectorAll(".theme-switch-button").forEach((e=>{e.addEventListener("click",m)}))}function p(){window.addEventListener("activate.bs.scrollspy",(function(){document.querySelectorAll(".bd-toc-nav a").forEach((e=>{e.parentElement.classList.remove("active")})),document.querySelectorAll(".bd-toc-nav a.active").forEach((e=>{e.parentElement.classList.add("active")}))}))}function f(){if(!document.querySelector(".bd-docs-nav"))return;var e=document.querySelector("div.bd-sidebar");let t=parseInt(sessionStorage.getItem("sidebar-scroll-top"),10);if(isNaN(t)){var n=document.querySelector(".bd-docs-nav").querySelectorAll(".active");if(n.length>0){var r=n[n.length-1],o=r.getBoundingClientRect().y-e.getBoundingClientRect().y;if(r.getBoundingClientRect().y>.5*window.innerHeight){let t=.25;e.scrollTop=o-e.clientHeight*t,console.log("[PST]: Scrolled sidebar using last active link...")}}}else e.scrollTop=t,console.log("[PST]: Scrolled sidebar using stored browser position...");window.addEventListener("beforeunload",(()=>{sessionStorage.setItem("sidebar-scroll-top",e.scrollTop)}))}var c=()=>{let e=document.querySelectorAll("form.bd-search");return e.length?(1==e.length?e[0]:document.querySelector("div:not(.search-button__search-container) > form.bd-search")).querySelector("input"):void 0},d=()=>{let e=c(),t=document.querySelector(".search-button__wrapper");e===t.querySelector("input")&&t.classList.toggle("show"),document.activeElement===e?e.blur():(e.focus(),e.select(),e.scrollIntoView({block:"center"}))},i=e=>{var t="";return void 0!==e.userAgentData&&null!=e.userAgentData?t=e.userAgentData.platform:void 0!==e.platform&&(t=e.platform),/mac.?os/.test(t.toLowerCase())};async function v(e){e.preventDefault();let t=`${DOCUMENTATION_OPTIONS.pagename}.html`,n=e.currentTarget.getAttribute("href"),r=n.replace(t,"");try{(await fetch(n,{method:"HEAD"})).ok?location.href=n:location.href=r}catch(e){location.href=r}}async function g(e){try{var t=new URL(e)}catch(n){if(!(n instanceof TypeError))throw n;{const n=await fetch(window.location.origin,{method:"HEAD"});t=new URL(e,n.url)}}const n=await fetch(t);return await n.json()}function y(e,t){const n=`${DOCUMENTATION_OPTIONS.pagename}.html`;t.forEach((e=>{e.dataset.activeVersionName="",e.dataset.activeVersion=""}));const r=(e=e.map((e=>(e.match=e.version==DOCUMENTATION_OPTIONS.theme_switcher_version_match,e.preferred=e.preferred||!1,"name"in e||(e.name=e.version),e)))).map((e=>e.preferred&&e.match)).some(Boolean);var o=!1;e.forEach((e=>{const a=document.createElement("a");a.setAttribute("class","dropdown-item list-group-item list-group-item-action py-1"),a.setAttribute("href",`${e.url}${n}`),a.setAttribute("role","option");const c=document.createElement("span");c.textContent=`${e.name}`,a.appendChild(c),a.dataset.versionName=e.name,a.dataset.version=e.version;let d=r&&e.preferred,i=!r&&!o&&e.match;(d||i)&&(a.classList.add("active"),t.forEach((t=>{t.innerText=e.name,t.dataset.activeVersionName=e.name,t.dataset.activeVersion=e.version})),o=!0),document.querySelectorAll(".version-switcher__menu").forEach((e=>{let t=a.cloneNode(!0);t.onclick=v,e.append(t)}))}))}function w(e){var t=DOCUMENTATION_OPTIONS.VERSION,n=e.filter((e=>e.preferred));if(1!==n.length){const e=0==n.length?"No":"Multiple";return void console.log(`[PST] ${e} versions marked "preferred" found in versions JSON, ignoring.`)}const r=n[0].version,a=n[0].url,c=(0,o.Gu)(t)&&(0,o.Gu)(r);if(c&&(0,o.qu)(t,r,"="))return;var d=document.createElement("div");const i=document.createElement("div"),s=document.createElement("div"),l=document.createElement("strong"),u=document.createElement("a");d.classList="bd-header-version-warning container-fluid",i.classList="bd-header-announcement__content",s.classList="sidebar-message",u.classList="sd-btn sd-btn-danger sd-shadow-sm sd-text-wrap font-weight-bold ms-3 my-1 align-baseline",u.href=`${a}${DOCUMENTATION_OPTIONS.pagename}.html`,u.innerText="Switch to stable version",u.onclick=v,s.innerText="This is documentation for ";const m=t.includes("dev")||t.includes("rc")||t.includes("pre"),h=c&&(0,o.qu)(t,r,">");m||h?l.innerText="an unstable development version":c&&(0,o.qu)(t,r,"<")?l.innerText=`an old version (${t})`:l.innerText=t?`version ${t}`:"an unknown version",d.appendChild(i),i.appendChild(s),s.appendChild(l),s.appendChild(document.createTextNode(".")),s.appendChild(u),document.body.prepend(d)}function b(){new MutationObserver(((e,t)=>{e.forEach((e=>{0!==e.addedNodes.length&&void 0!==e.addedNodes[0].data&&-1!=e.addedNodes[0].data.search("Inserted RTD Footer")&&e.addedNodes.forEach((e=>{document.getElementById("rtd-footer-container").append(e)}))}))})).observe(document.body,{childList:!0})}var s=document.querySelectorAll(".version-switcher__button");const E=s.length>0,_=DOCUMENTATION_OPTIONS.hasOwnProperty("theme_switcher_json_url"),S=DOCUMENTATION_OPTIONS.show_version_warning_banner;if(_&&(E||S)){const T=await g(DOCUMENTATION_OPTIONS.theme_switcher_json_url);y(T,s),S&&w(T)}(0,r.A)(h),(0,r.A)(f),(0,r.A)(p),(0,r.A)((()=>{(()=>{let e=document.querySelectorAll(".search-button__kbd-shortcut");i(window.navigator)&&e.forEach((e=>e.querySelector("kbd.kbd-shortcut__modifier").innerText="⌘"))})(),window.addEventListener("keydown",(e=>{let t=c();e.shiftKey||e.altKey||(i?!e.metaKey||e.ctrlKey:e.metaKey||!e.ctrlKey)||!/k/i.test(e.key)?document.activeElement===t&&/Escape/i.test(e.key)&&d():(e.preventDefault(),d())}),!0),document.querySelectorAll(".search-button__button").forEach((e=>{e.onclick=d}));let e=document.querySelector(".search-button__overlay");e&&(e.onclick=d)})),(0,r.A)(b),t()}catch(O){t(O)}}),1)}},a={};function c(e){var t=a[e];if(void 0!==t)return t.exports;var n=a[e]={exports:{}};return o[e](n,n.exports,c),n.exports}e="function"==typeof Symbol?Symbol("webpack queues"):"__webpack_queues__",t="function"==typeof Symbol?Symbol("webpack exports"):"__webpack_exports__",n="function"==typeof Symbol?Symbol("webpack error"):"__webpack_error__",r=e=>{e&&e.d<1&&(e.d=1,e.forEach((e=>e.r--)),e.forEach((e=>e.r--?e.r++:e())))},c.a=(o,a,c)=>{var d;c&&((d=[]).d=-1);var i,s,l,u=new Set,m=o.exports,h=new Promise(((e,t)=>{l=t,s=e}));h[t]=m,h[e]=e=>(d&&e(d),u.forEach(e),h.catch((e=>{}))),o.exports=h,a((o=>{var a;i=(o=>o.map((o=>{if(null!==o&&"object"==typeof o){if(o[e])return o;if(o.then){var a=[];a.d=0,o.then((e=>{c[t]=e,r(a)}),(e=>{c[n]=e,r(a)}));var c={};return c[e]=e=>e(a),c}}var d={};return d[e]=e=>{},d[t]=o,d})))(o);var c=()=>i.map((e=>{if(e[n])throw e[n];return e[t]})),s=new Promise((t=>{(a=()=>t(c)).r=0;var n=e=>e!==d&&!u.has(e)&&(u.add(e),e&&!e.d&&(a.r++,e.push(a)));i.map((t=>t[e](n)))}));return a.r?s:c()}),(e=>(e?l(h[n]=e):s(m),r(d)))),d&&d.d<0&&(d.d=0)},c.d=(e,t)=>{for(var n in t)c.o(t,n)&&!c.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},c.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),c(937)})(); +(()=>{"use strict";var e,t,n,r,o={803:(e,t,n)=>{n.d(t,{Gu:()=>r,qu:()=>o});const r=e=>"string"==typeof e&&/^[v\d]/.test(e)&&a.test(e),o=(e,t,n)=>{h(n);const r=((e,t)=>{const n=c(e),r=c(t),o=n.pop(),a=r.pop(),i=l(n,r);return 0!==i?i:o&&a?l(o.split("."),a.split(".")):o||a?o?-1:1:0})(e,t);return u[n].includes(r)},a=/^[v^~<>=]*?(\d+)(?:\.([x*]|\d+)(?:\.([x*]|\d+)(?:\.([x*]|\d+))?(?:-([\da-z\-]+(?:\.[\da-z\-]+)*))?(?:\+[\da-z\-]+(?:\.[\da-z\-]+)*)?)?)?$/i,c=e=>{if("string"!=typeof e)throw new TypeError("Invalid argument expected string");const t=e.match(a);if(!t)throw new Error(`Invalid argument not valid semver ('${e}' received)`);return t.shift(),t},i=e=>"*"===e||"x"===e||"X"===e,d=e=>{const t=parseInt(e,10);return isNaN(t)?e:t},s=(e,t)=>{if(i(e)||i(t))return 0;const[n,r]=((e,t)=>typeof e!=typeof t?[String(e),String(t)]:[e,t])(d(e),d(t));return n>r?1:n{for(let n=0;n":[1],">=":[0,1],"=":[0],"<=":[-1,0],"<":[-1]},m=Object.keys(u),h=e=>{if("string"!=typeof e)throw new TypeError("Invalid operator type, expected string but got "+typeof e);if(-1===m.indexOf(e))throw new Error(`Invalid operator, expected one of ${m.join("|")}`)}},375:(e,t,n)=>{function r(e){"loading"!=document.readyState?e():document.addEventListener("DOMContentLoaded",e)}n.d(t,{A:()=>r})},937:(e,t,n)=>{n.a(e,(async(e,t)=>{try{var r=n(375),o=n(803),a=window.matchMedia("(prefers-color-scheme: dark)");function l(e){document.documentElement.dataset.theme=a.matches?"dark":"light"}function u(e){"light"!==e&&"dark"!==e&&"auto"!==e&&(console.error(`Got invalid theme mode: ${e}. Resetting to auto.`),e="auto");var t=a.matches?"dark":"light";document.documentElement.dataset.mode=e;var n="auto"==e?t:e;document.documentElement.dataset.theme=n,document.querySelectorAll(".dropdown-menu").forEach((e=>{"dark"===n?e.classList.add("dropdown-menu-dark"):e.classList.remove("dropdown-menu-dark")})),localStorage.setItem("mode",e),localStorage.setItem("theme",n),console.log(`[PST]: Changed to ${e} mode using the ${n} theme.`),a.onchange="auto"==e?l:""}function m(){const e=document.documentElement.dataset.defaultMode||"auto",t=localStorage.getItem("mode")||e;var n,r;u(((r=(n=a.matches?["auto","light","dark"]:["auto","dark","light"]).indexOf(t)+1)===n.length&&(r=0),n[r]))}function h(){u(document.documentElement.dataset.mode),document.querySelectorAll(".theme-switch-button").forEach((e=>{e.addEventListener("click",m)}))}function p(){window.addEventListener("activate.bs.scrollspy",(function(){document.querySelectorAll(".bd-toc-nav a").forEach((e=>{e.parentElement.classList.remove("active")})),document.querySelectorAll(".bd-toc-nav a.active").forEach((e=>{e.parentElement.classList.add("active")}))}))}function f(){if(!document.querySelector(".bd-docs-nav"))return;var e=document.querySelector("div.bd-sidebar");let t=parseInt(sessionStorage.getItem("sidebar-scroll-top"),10);if(isNaN(t)){var n=document.querySelector(".bd-docs-nav").querySelectorAll(".active");if(n.length>0){var r=n[n.length-1],o=r.getBoundingClientRect().y-e.getBoundingClientRect().y;if(r.getBoundingClientRect().y>.5*window.innerHeight){let t=.25;e.scrollTop=o-e.clientHeight*t,console.log("[PST]: Scrolled sidebar using last active link...")}}}else e.scrollTop=t,console.log("[PST]: Scrolled sidebar using stored browser position...");window.addEventListener("beforeunload",(()=>{sessionStorage.setItem("sidebar-scroll-top",e.scrollTop)}))}var c=()=>{let e=document.querySelectorAll("form.bd-search");return e.length?(1==e.length?e[0]:document.querySelector("div:not(.search-button__search-container) > form.bd-search")).querySelector("input"):void 0},i=()=>{let e=c(),t=document.querySelector(".search-button__wrapper");e===t.querySelector("input")&&t.classList.toggle("show"),document.activeElement===e?e.blur():(e.focus(),e.select(),e.scrollIntoView({block:"center"}))},d=0===navigator.platform.indexOf("Mac")||"iPhone"===navigator.platform;async function v(e){e.preventDefault();let t=`${DOCUMENTATION_OPTIONS.pagename}.html`,n=e.currentTarget.getAttribute("href"),r=n.replace(t,"");try{(await fetch(n,{method:"HEAD"})).ok?location.href=n:location.href=r}catch(e){location.href=r}}async function g(e){try{var t=new URL(e)}catch(n){if(!(n instanceof TypeError))throw n;{const n=await fetch(window.location.origin,{method:"HEAD"});t=new URL(e,n.url)}}const n=await fetch(t);return await n.json()}function y(e,t){const n=`${DOCUMENTATION_OPTIONS.pagename}.html`;t.forEach((e=>{e.dataset.activeVersionName="",e.dataset.activeVersion=""}));const r=(e=e.map((e=>(e.match=e.version==DOCUMENTATION_OPTIONS.theme_switcher_version_match,e.preferred=e.preferred||!1,"name"in e||(e.name=e.version),e)))).map((e=>e.preferred&&e.match)).some(Boolean);var o=!1;e.forEach((e=>{const a=document.createElement("a");a.setAttribute("class","dropdown-item list-group-item list-group-item-action py-1"),a.setAttribute("href",`${e.url}${n}`),a.setAttribute("role","option");const c=document.createElement("span");c.textContent=`${e.name}`,a.appendChild(c),a.dataset.versionName=e.name,a.dataset.version=e.version;let i=r&&e.preferred,d=!r&&!o&&e.match;(i||d)&&(a.classList.add("active"),t.forEach((t=>{t.innerText=e.name,t.dataset.activeVersionName=e.name,t.dataset.activeVersion=e.version})),o=!0),document.querySelectorAll(".version-switcher__menu").forEach((e=>{let t=a.cloneNode(!0);t.onclick=v,e.append(t)}))}))}function b(e){var t=DOCUMENTATION_OPTIONS.VERSION,n=e.filter((e=>e.preferred));if(1!==n.length){const e=0==n.length?"No":"Multiple";return void console.log(`[PST] ${e} versions marked "preferred" found in versions JSON, ignoring.`)}const r=n[0].version,a=n[0].url,c=(0,o.Gu)(t)&&(0,o.Gu)(r);if(c&&(0,o.qu)(t,r,"="))return;var i=document.createElement("aside");i.setAttribute("aria-label","Version warning");const d=document.createElement("div"),s=document.createElement("div"),l=document.createElement("strong"),u=document.createElement("a");i.classList="bd-header-version-warning container-fluid",d.classList="bd-header-announcement__content",s.classList="sidebar-message",u.classList="sd-btn sd-btn-danger sd-shadow-sm sd-text-wrap font-weight-bold ms-3 my-1 align-baseline",u.href=`${a}${DOCUMENTATION_OPTIONS.pagename}.html`,u.innerText="Switch to stable version",u.onclick=v,s.innerText="This is documentation for ";const m=t.includes("dev")||t.includes("rc")||t.includes("pre"),h=c&&(0,o.qu)(t,r,">");m||h?l.innerText="an unstable development version":c&&(0,o.qu)(t,r,"<")?l.innerText=`an old version (${t})`:l.innerText=t?`version ${t}`:"an unknown version",i.appendChild(d),d.appendChild(s),s.appendChild(l),s.appendChild(document.createTextNode(".")),s.appendChild(u),document.getElementById("pst-skip-link").after(i)}function w(){new MutationObserver(((e,t)=>{e.forEach((e=>{0!==e.addedNodes.length&&void 0!==e.addedNodes[0].data&&-1!=e.addedNodes[0].data.search("Inserted RTD Footer")&&e.addedNodes.forEach((e=>{document.getElementById("rtd-footer-container").append(e)}))}))})).observe(document.body,{childList:!0})}var s=document.querySelectorAll(".version-switcher__button");const E=s.length>0,_=DOCUMENTATION_OPTIONS.hasOwnProperty("theme_switcher_json_url"),S=DOCUMENTATION_OPTIONS.show_version_warning_banner;if(_&&(E||S)){const O=await g(DOCUMENTATION_OPTIONS.theme_switcher_json_url);y(O,s),S&&b(O)}function T(){document.querySelector(".bd-sidebar-primary [id^=pst-nav-more-links]").classList.add("show")}(0,r.A)(h),(0,r.A)(f),(0,r.A)(p),(0,r.A)((()=>{(()=>{let e=document.querySelectorAll(".search-button__kbd-shortcut");d&&e.forEach((e=>e.querySelector("kbd.kbd-shortcut__modifier").innerText="⌘"))})(),window.addEventListener("keydown",(e=>{let t=c();e.shiftKey||e.altKey||(d?!e.metaKey||e.ctrlKey:e.metaKey||!e.ctrlKey)||!/k/i.test(e.key)?document.activeElement===t&&/Escape/i.test(e.key)&&i():(e.preventDefault(),i())}),!0),document.querySelectorAll(".search-button__button").forEach((e=>{e.onclick=i}));let e=document.querySelector(".search-button__overlay");e&&(e.onclick=i)})),(0,r.A)(w),(0,r.A)(T),t()}catch(N){t(N)}}),1)}},a={};function c(e){var t=a[e];if(void 0!==t)return t.exports;var n=a[e]={exports:{}};return o[e](n,n.exports,c),n.exports}e="function"==typeof Symbol?Symbol("webpack queues"):"__webpack_queues__",t="function"==typeof Symbol?Symbol("webpack exports"):"__webpack_exports__",n="function"==typeof Symbol?Symbol("webpack error"):"__webpack_error__",r=e=>{e&&e.d<1&&(e.d=1,e.forEach((e=>e.r--)),e.forEach((e=>e.r--?e.r++:e())))},c.a=(o,a,c)=>{var i;c&&((i=[]).d=-1);var d,s,l,u=new Set,m=o.exports,h=new Promise(((e,t)=>{l=t,s=e}));h[t]=m,h[e]=e=>(i&&e(i),u.forEach(e),h.catch((e=>{}))),o.exports=h,a((o=>{var a;d=(o=>o.map((o=>{if(null!==o&&"object"==typeof o){if(o[e])return o;if(o.then){var a=[];a.d=0,o.then((e=>{c[t]=e,r(a)}),(e=>{c[n]=e,r(a)}));var c={};return c[e]=e=>e(a),c}}var i={};return i[e]=e=>{},i[t]=o,i})))(o);var c=()=>d.map((e=>{if(e[n])throw e[n];return e[t]})),s=new Promise((t=>{(a=()=>t(c)).r=0;var n=e=>e!==i&&!u.has(e)&&(u.add(e),e&&!e.d&&(a.r++,e.push(a)));d.map((t=>t[e](n)))}));return a.r?s:c()}),(e=>(e?l(h[n]=e):s(m),r(i)))),i&&i.d<0&&(i.d=0)},c.d=(e,t)=>{for(var n in t)c.o(t,n)&&!c.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},c.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),c(937)})(); //# sourceMappingURL=pydata-sphinx-theme.js.map \ No newline at end of file diff --git a/_static/scripts/pydata-sphinx-theme.js.map b/_static/scripts/pydata-sphinx-theme.js.map index 51965aa..2224497 100644 --- a/_static/scripts/pydata-sphinx-theme.js.map +++ b/_static/scripts/pydata-sphinx-theme.js.map @@ -1 +1 @@ -{"version":3,"file":"scripts/pydata-sphinx-theme.js","mappings":"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","sources":["webpack://pydata_sphinx_theme/webpack/runtime/async module","webpack://pydata_sphinx_theme/./node_modules/compare-versions/lib/esm/index.js","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/scripts/mixin.js","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/scripts/pydata-sphinx-theme.js","webpack://pydata_sphinx_theme/webpack/bootstrap","webpack://pydata_sphinx_theme/webpack/runtime/define property getters","webpack://pydata_sphinx_theme/webpack/runtime/hasOwnProperty shorthand","webpack://pydata_sphinx_theme/webpack/startup"],"sourcesContent":["var webpackQueues = typeof Symbol === \"function\" ? Symbol(\"webpack queues\") : \"__webpack_queues__\";\nvar webpackExports = typeof Symbol === \"function\" ? Symbol(\"webpack exports\") : \"__webpack_exports__\";\nvar webpackError = typeof Symbol === \"function\" ? Symbol(\"webpack error\") : \"__webpack_error__\";\nvar resolveQueue = (queue) => {\n\tif(queue && queue.d < 1) {\n\t\tqueue.d = 1;\n\t\tqueue.forEach((fn) => (fn.r--));\n\t\tqueue.forEach((fn) => (fn.r-- ? fn.r++ : fn()));\n\t}\n}\nvar wrapDeps = (deps) => (deps.map((dep) => {\n\tif(dep !== null && typeof dep === \"object\") {\n\t\tif(dep[webpackQueues]) return dep;\n\t\tif(dep.then) {\n\t\t\tvar queue = [];\n\t\t\tqueue.d = 0;\n\t\t\tdep.then((r) => {\n\t\t\t\tobj[webpackExports] = r;\n\t\t\t\tresolveQueue(queue);\n\t\t\t}, (e) => {\n\t\t\t\tobj[webpackError] = e;\n\t\t\t\tresolveQueue(queue);\n\t\t\t});\n\t\t\tvar obj = {};\n\t\t\tobj[webpackQueues] = (fn) => (fn(queue));\n\t\t\treturn obj;\n\t\t}\n\t}\n\tvar ret = {};\n\tret[webpackQueues] = x => {};\n\tret[webpackExports] = dep;\n\treturn ret;\n}));\n__webpack_require__.a = (module, body, hasAwait) => {\n\tvar queue;\n\thasAwait && ((queue = []).d = -1);\n\tvar depQueues = new Set();\n\tvar exports = module.exports;\n\tvar currentDeps;\n\tvar outerResolve;\n\tvar reject;\n\tvar promise = new Promise((resolve, rej) => {\n\t\treject = rej;\n\t\touterResolve = resolve;\n\t});\n\tpromise[webpackExports] = exports;\n\tpromise[webpackQueues] = (fn) => (queue && fn(queue), depQueues.forEach(fn), promise[\"catch\"](x => {}));\n\tmodule.exports = promise;\n\tbody((deps) => {\n\t\tcurrentDeps = wrapDeps(deps);\n\t\tvar fn;\n\t\tvar getResult = () => (currentDeps.map((d) => {\n\t\t\tif(d[webpackError]) throw d[webpackError];\n\t\t\treturn d[webpackExports];\n\t\t}))\n\t\tvar promise = new Promise((resolve) => {\n\t\t\tfn = () => (resolve(getResult));\n\t\t\tfn.r = 0;\n\t\t\tvar fnQueue = (q) => (q !== queue && !depQueues.has(q) && (depQueues.add(q), q && !q.d && (fn.r++, q.push(fn))));\n\t\t\tcurrentDeps.map((dep) => (dep[webpackQueues](fnQueue)));\n\t\t});\n\t\treturn fn.r ? promise : getResult();\n\t}, (err) => ((err ? reject(promise[webpackError] = err) : outerResolve(exports)), resolveQueue(queue)));\n\tqueue && queue.d < 0 && (queue.d = 0);\n};","/**\n * Compare [semver](https://semver.org/) version strings to find greater, equal or lesser.\n * This library supports the full semver specification, including comparing versions with different number of digits like `1.0.0`, `1.0`, `1`, and pre-release versions like `1.0.0-alpha`.\n * @param v1 - First version to compare\n * @param v2 - Second version to compare\n * @returns Numeric value compatible with the [Array.sort(fn) interface](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#Parameters).\n */\nexport const compareVersions = (v1, v2) => {\n // validate input and split into segments\n const n1 = validateAndParse(v1);\n const n2 = validateAndParse(v2);\n // pop off the patch\n const p1 = n1.pop();\n const p2 = n2.pop();\n // validate numbers\n const r = compareSegments(n1, n2);\n if (r !== 0)\n return r;\n // validate pre-release\n if (p1 && p2) {\n return compareSegments(p1.split('.'), p2.split('.'));\n }\n else if (p1 || p2) {\n return p1 ? -1 : 1;\n }\n return 0;\n};\n/**\n * Validate [semver](https://semver.org/) version strings.\n *\n * @param version Version number to validate\n * @returns `true` if the version number is a valid semver version number, `false` otherwise.\n *\n * @example\n * ```\n * validate('1.0.0-rc.1'); // return true\n * validate('1.0-rc.1'); // return false\n * validate('foo'); // return false\n * ```\n */\nexport const validate = (version) => typeof version === 'string' && /^[v\\d]/.test(version) && semver.test(version);\n/**\n * Compare [semver](https://semver.org/) version strings using the specified operator.\n *\n * @param v1 First version to compare\n * @param v2 Second version to compare\n * @param operator Allowed arithmetic operator to use\n * @returns `true` if the comparison between the firstVersion and the secondVersion satisfies the operator, `false` otherwise.\n *\n * @example\n * ```\n * compare('10.1.8', '10.0.4', '>'); // return true\n * compare('10.0.1', '10.0.1', '='); // return true\n * compare('10.1.1', '10.2.2', '<'); // return true\n * compare('10.1.1', '10.2.2', '<='); // return true\n * compare('10.1.1', '10.2.2', '>='); // return false\n * ```\n */\nexport const compare = (v1, v2, operator) => {\n // validate input operator\n assertValidOperator(operator);\n // since result of compareVersions can only be -1 or 0 or 1\n // a simple map can be used to replace switch\n const res = compareVersions(v1, v2);\n return operatorResMap[operator].includes(res);\n};\n/**\n * Match [npm semver](https://docs.npmjs.com/cli/v6/using-npm/semver) version range.\n *\n * @param version Version number to match\n * @param range Range pattern for version\n * @returns `true` if the version number is within the range, `false` otherwise.\n *\n * @example\n * ```\n * satisfies('1.1.0', '^1.0.0'); // return true\n * satisfies('1.1.0', '~1.0.0'); // return false\n * ```\n */\nexport const satisfies = (version, range) => {\n // if no range operator then \"=\"\n const m = range.match(/^([<>=~^]+)/);\n const op = m ? m[1] : '=';\n // if gt/lt/eq then operator compare\n if (op !== '^' && op !== '~')\n return compare(version, range, op);\n // else range of either \"~\" or \"^\" is assumed\n const [v1, v2, v3, , vp] = validateAndParse(version);\n const [r1, r2, r3, , rp] = validateAndParse(range);\n const v = [v1, v2, v3];\n const r = [r1, r2 !== null && r2 !== void 0 ? r2 : 'x', r3 !== null && r3 !== void 0 ? r3 : 'x'];\n // validate pre-release\n if (rp) {\n if (!vp)\n return false;\n if (compareSegments(v, r) !== 0)\n return false;\n if (compareSegments(vp.split('.'), rp.split('.')) === -1)\n return false;\n }\n // first non-zero number\n const nonZero = r.findIndex((v) => v !== '0') + 1;\n // pointer to where segments can be >=\n const i = op === '~' ? 2 : nonZero > 1 ? nonZero : 1;\n // before pointer must be equal\n if (compareSegments(v.slice(0, i), r.slice(0, i)) !== 0)\n return false;\n // after pointer must be >=\n if (compareSegments(v.slice(i), r.slice(i)) === -1)\n return false;\n return true;\n};\nconst semver = /^[v^~<>=]*?(\\d+)(?:\\.([x*]|\\d+)(?:\\.([x*]|\\d+)(?:\\.([x*]|\\d+))?(?:-([\\da-z\\-]+(?:\\.[\\da-z\\-]+)*))?(?:\\+[\\da-z\\-]+(?:\\.[\\da-z\\-]+)*)?)?)?$/i;\nconst validateAndParse = (version) => {\n if (typeof version !== 'string') {\n throw new TypeError('Invalid argument expected string');\n }\n const match = version.match(semver);\n if (!match) {\n throw new Error(`Invalid argument not valid semver ('${version}' received)`);\n }\n match.shift();\n return match;\n};\nconst isWildcard = (s) => s === '*' || s === 'x' || s === 'X';\nconst tryParse = (v) => {\n const n = parseInt(v, 10);\n return isNaN(n) ? v : n;\n};\nconst forceType = (a, b) => typeof a !== typeof b ? [String(a), String(b)] : [a, b];\nconst compareStrings = (a, b) => {\n if (isWildcard(a) || isWildcard(b))\n return 0;\n const [ap, bp] = forceType(tryParse(a), tryParse(b));\n if (ap > bp)\n return 1;\n if (ap < bp)\n return -1;\n return 0;\n};\nconst compareSegments = (a, b) => {\n for (let i = 0; i < Math.max(a.length, b.length); i++) {\n const r = compareStrings(a[i] || '0', b[i] || '0');\n if (r !== 0)\n return r;\n }\n return 0;\n};\nconst operatorResMap = {\n '>': [1],\n '>=': [0, 1],\n '=': [0],\n '<=': [-1, 0],\n '<': [-1],\n};\nconst allowedOperators = Object.keys(operatorResMap);\nconst assertValidOperator = (op) => {\n if (typeof op !== 'string') {\n throw new TypeError(`Invalid operator type, expected string but got ${typeof op}`);\n }\n if (allowedOperators.indexOf(op) === -1) {\n throw new Error(`Invalid operator, expected one of ${allowedOperators.join('|')}`);\n }\n};\n//# sourceMappingURL=index.js.map","/* define several functions to replace jQuery methods\n * inspired by https://tobiasahlin.com/blog/move-from-jquery-to-vanilla-javascript/\n */\n\n/**\n * Execute a method if DOM has finished loading\n *\n * @param {function} callback the method to execute\n */\nexport function documentReady(callback) {\n if (document.readyState != \"loading\") callback();\n else document.addEventListener(\"DOMContentLoaded\", callback);\n}\n","// Define the custom behavior of the page\nimport { documentReady } from \"./mixin\";\nimport { compare, validate } from \"compare-versions\";\n\nimport \"../styles/pydata-sphinx-theme.scss\";\n\n/*******************************************************************************\n * Theme interaction\n */\n\nvar prefersDark = window.matchMedia(\"(prefers-color-scheme: dark)\");\n\n/**\n * set the the body theme to the one specified by the user browser\n *\n * @param {event} e\n */\nfunction autoTheme(e) {\n document.documentElement.dataset.theme = prefersDark.matches\n ? \"dark\"\n : \"light\";\n}\n\n/**\n * Set the theme using the specified mode.\n * It can be one of [\"auto\", \"dark\", \"light\"]\n *\n * @param {str} mode\n */\nfunction setTheme(mode) {\n if (mode !== \"light\" && mode !== \"dark\" && mode !== \"auto\") {\n console.error(`Got invalid theme mode: ${mode}. Resetting to auto.`);\n mode = \"auto\";\n }\n\n // get the theme\n var colorScheme = prefersDark.matches ? \"dark\" : \"light\";\n document.documentElement.dataset.mode = mode;\n var theme = mode == \"auto\" ? colorScheme : mode;\n document.documentElement.dataset.theme = theme;\n // TODO: remove this line after Bootstrap upgrade\n // v5.3 has a colors mode: https://getbootstrap.com/docs/5.3/customize/color-modes/\n document.querySelectorAll(\".dropdown-menu\").forEach((el) => {\n if (theme === \"dark\") {\n el.classList.add(\"dropdown-menu-dark\");\n } else {\n el.classList.remove(\"dropdown-menu-dark\");\n }\n });\n\n // save mode and theme\n localStorage.setItem(\"mode\", mode);\n localStorage.setItem(\"theme\", theme);\n console.log(`[PST]: Changed to ${mode} mode using the ${theme} theme.`);\n\n // add a listener if set on auto\n prefersDark.onchange = mode == \"auto\" ? autoTheme : \"\";\n}\n\n/**\n * Change the theme option order so that clicking on the btn is always a change\n * from \"auto\"\n */\nfunction cycleMode() {\n const defaultMode = document.documentElement.dataset.defaultMode || \"auto\";\n const currentMode = localStorage.getItem(\"mode\") || defaultMode;\n\n var loopArray = (arr, current) => {\n var nextPosition = arr.indexOf(current) + 1;\n if (nextPosition === arr.length) {\n nextPosition = 0;\n }\n return arr[nextPosition];\n };\n\n // make sure the next theme after auto is always a change\n var modeList = prefersDark.matches\n ? [\"auto\", \"light\", \"dark\"]\n : [\"auto\", \"dark\", \"light\"];\n var newMode = loopArray(modeList, currentMode);\n setTheme(newMode);\n}\n\n/**\n * add the theme listener on the btns of the navbar\n */\nfunction addModeListener() {\n // the theme was set a first time using the initial mini-script\n // running setMode will ensure the use of the dark mode if auto is selected\n setTheme(document.documentElement.dataset.mode);\n\n // Attach event handlers for toggling themes colors\n document.querySelectorAll(\".theme-switch-button\").forEach((el) => {\n el.addEventListener(\"click\", cycleMode);\n });\n}\n\n/*******************************************************************************\n * TOC interactivity\n */\n\n/**\n * TOC sidebar - add \"active\" class to parent list\n *\n * Bootstrap's scrollspy adds the active class to the link,\n * but for the automatic collapsing we need this on the parent list item.\n *\n * The event is triggered on \"window\" (and not the nav item as documented),\n * see https://github.com/twbs/bootstrap/issues/20086\n */\nfunction addTOCInteractivity() {\n window.addEventListener(\"activate.bs.scrollspy\", function () {\n const navLinks = document.querySelectorAll(\".bd-toc-nav a\");\n\n navLinks.forEach((navLink) => {\n navLink.parentElement.classList.remove(\"active\");\n });\n\n const activeNavLinks = document.querySelectorAll(\".bd-toc-nav a.active\");\n activeNavLinks.forEach((navLink) => {\n navLink.parentElement.classList.add(\"active\");\n });\n });\n}\n\n/*******************************************************************************\n * Scroll\n */\n\n/**\n * Navigation sidebar scrolling to active page\n */\nfunction scrollToActive() {\n // If the docs nav doesn't exist, do nothing (e.g., on search page)\n if (!document.querySelector(\".bd-docs-nav\")) {\n return;\n }\n\n var sidebar = document.querySelector(\"div.bd-sidebar\");\n\n // Remember the sidebar scroll position between page loads\n // Inspired on source of revealjs.com\n let storedScrollTop = parseInt(\n sessionStorage.getItem(\"sidebar-scroll-top\"),\n 10\n );\n\n if (!isNaN(storedScrollTop)) {\n // If we've got a saved scroll position, just use that\n sidebar.scrollTop = storedScrollTop;\n console.log(\"[PST]: Scrolled sidebar using stored browser position...\");\n } else {\n // Otherwise, calculate a position to scroll to based on the lowest `active` link\n var sidebarNav = document.querySelector(\".bd-docs-nav\");\n var active_pages = sidebarNav.querySelectorAll(\".active\");\n if (active_pages.length > 0) {\n // Use the last active page as the offset since it's the page we're on\n var latest_active = active_pages[active_pages.length - 1];\n var offset =\n latest_active.getBoundingClientRect().y -\n sidebar.getBoundingClientRect().y;\n // Only scroll the navbar if the active link is lower than 50% of the page\n if (latest_active.getBoundingClientRect().y > window.innerHeight * 0.5) {\n let buffer = 0.25; // Buffer so we have some space above the scrolled item\n sidebar.scrollTop = offset - sidebar.clientHeight * buffer;\n console.log(\"[PST]: Scrolled sidebar using last active link...\");\n }\n }\n }\n\n // Store the sidebar scroll position\n window.addEventListener(\"beforeunload\", () => {\n sessionStorage.setItem(\"sidebar-scroll-top\", sidebar.scrollTop);\n });\n}\n\n/*******************************************************************************\n * Search\n */\n\n/**\n * Find any search forms on the page and return their input element\n */\nvar findSearchInput = () => {\n let forms = document.querySelectorAll(\"form.bd-search\");\n if (!forms.length) {\n // no search form found\n return;\n } else {\n var form;\n if (forms.length == 1) {\n // there is exactly one search form (persistent or hidden)\n form = forms[0];\n } else {\n // must be at least one persistent form, use the first persistent one\n form = document.querySelector(\n \"div:not(.search-button__search-container) > form.bd-search\"\n );\n }\n return form.querySelector(\"input\");\n }\n};\n\n/**\n * Activate the search field on the page.\n * - If there is a search field already visible it will be activated.\n * - If not, then a search field will pop up.\n */\nvar toggleSearchField = () => {\n // Find the search input to highlight\n let input = findSearchInput();\n\n // if the input field is the hidden one (the one associated with the\n // search button) then toggle the button state (to show/hide the field)\n let searchPopupWrapper = document.querySelector(\".search-button__wrapper\");\n let hiddenInput = searchPopupWrapper.querySelector(\"input\");\n if (input === hiddenInput) {\n searchPopupWrapper.classList.toggle(\"show\");\n }\n // when toggling off the search field, remove its focus\n if (document.activeElement === input) {\n input.blur();\n } else {\n input.focus();\n input.select();\n input.scrollIntoView({ block: \"center\" });\n }\n};\n\n/**\n * Add an event listener for toggleSearchField() for Ctrl/Cmd + K\n */\nvar addEventListenerForSearchKeyboard = () => {\n window.addEventListener(\n \"keydown\",\n (event) => {\n let input = findSearchInput();\n // toggle on Ctrl+k or ⌘+k\n if (\n // Ignore if shift or alt are pressed\n !event.shiftKey &&\n !event.altKey &&\n // On Mac use ⌘, all other OS use Ctrl\n (isMac\n ? event.metaKey && !event.ctrlKey\n : !event.metaKey && event.ctrlKey) &&\n // Case-insensitive so the shortcut still works with caps lock\n /k/i.test(event.key)\n ) {\n event.preventDefault();\n toggleSearchField();\n }\n // also allow Escape key to hide (but not show) the dynamic search field\n else if (document.activeElement === input && /Escape/i.test(event.key)) {\n toggleSearchField();\n }\n },\n true\n );\n};\n\n/**\n * Find out if we're on a Mac\n */\nvar isMac = (navigator) => {\n var platform = \"\";\n if (\n typeof navigator.userAgentData !== \"undefined\" &&\n navigator.userAgentData != null\n ) {\n platform = navigator.userAgentData.platform;\n } else if (typeof navigator.platform !== \"undefined\") {\n platform = navigator.platform;\n }\n return /mac.?os/.test(platform.toLowerCase());\n};\n\n/**\n * Change the search hint to `meta key` if we are a Mac\n */\n\nvar changeSearchShortcutKey = () => {\n let shortcuts = document.querySelectorAll(\".search-button__kbd-shortcut\");\n if (isMac(window.navigator)) {\n shortcuts.forEach(\n (f) => (f.querySelector(\"kbd.kbd-shortcut__modifier\").innerText = \"⌘\")\n );\n }\n};\n\n/**\n * Activate callbacks for search button popup\n */\nvar setupSearchButtons = () => {\n changeSearchShortcutKey();\n addEventListenerForSearchKeyboard();\n\n // Add the search button trigger event callback\n document.querySelectorAll(\".search-button__button\").forEach((btn) => {\n btn.onclick = toggleSearchField;\n });\n\n // Add the search button overlay event callback\n let overlay = document.querySelector(\".search-button__overlay\");\n if (overlay) {\n overlay.onclick = toggleSearchField;\n }\n};\n\n/*******************************************************************************\n * Version Switcher\n * Note that this depends on two variables existing that are defined in\n * and `html-page-context` hook:\n *\n * - DOCUMENTATION_OPTIONS.pagename\n * - DOCUMENTATION_OPTIONS.theme_switcher_url\n */\n\n/**\n * Check if corresponding page path exists in other version of docs\n * and, if so, go there instead of the homepage of the other docs version\n *\n * @param {event} event the event that trigger the check\n */\nasync function checkPageExistsAndRedirect(event) {\n // ensure we don't follow the initial link\n event.preventDefault();\n let currentFilePath = `${DOCUMENTATION_OPTIONS.pagename}.html`;\n let tryUrl = event.currentTarget.getAttribute(\"href\");\n let otherDocsHomepage = tryUrl.replace(currentFilePath, \"\");\n try {\n let head = await fetch(tryUrl, { method: \"HEAD\" });\n if (head.ok) {\n location.href = tryUrl; // the page exists, go there\n } else {\n location.href = otherDocsHomepage;\n }\n } catch (err) {\n // something went wrong, probably CORS restriction, fallback to other docs homepage\n location.href = otherDocsHomepage;\n }\n}\n\n/**\n * Load and parse the version switcher JSON file from an absolute or relative URL.\n *\n * @param {string} url The URL to load version switcher entries from.\n */\nasync function fetchVersionSwitcherJSON(url) {\n // first check if it's a valid URL\n try {\n var result = new URL(url);\n } catch (err) {\n if (err instanceof TypeError) {\n // assume we got a relative path, and fix accordingly. But first, we need to\n // use `fetch()` to follow redirects so we get the correct final base URL\n const origin = await fetch(window.location.origin, { method: \"HEAD\" });\n result = new URL(url, origin.url);\n } else {\n // something unexpected happened\n throw err;\n }\n }\n // load and return the JSON\n const response = await fetch(result);\n const data = await response.json();\n return data;\n}\n\n// Populate the version switcher from the JSON data\nfunction populateVersionSwitcher(data, versionSwitcherBtns) {\n const currentFilePath = `${DOCUMENTATION_OPTIONS.pagename}.html`;\n versionSwitcherBtns.forEach((btn) => {\n // Set empty strings by default so that these attributes exist and can be used in CSS selectors\n btn.dataset[\"activeVersionName\"] = \"\";\n btn.dataset[\"activeVersion\"] = \"\";\n });\n // in case there are multiple entries with the same version string, this helps us\n // decide which entry's `name` to put on the button itself. Without this, it would\n // always be the *last* version-matching entry; now it will be either the\n // version-matching entry that is also marked as `\"preferred\": true`, or if that\n // doesn't exist: the *first* version-matching entry.\n data = data.map((entry) => {\n // does this entry match the version that we're currently building/viewing?\n entry.match =\n entry.version == DOCUMENTATION_OPTIONS.theme_switcher_version_match;\n entry.preferred = entry.preferred || false;\n // if no custom name specified (e.g., \"latest\"), use version string\n if (!(\"name\" in entry)) {\n entry.name = entry.version;\n }\n return entry;\n });\n const hasMatchingPreferredEntry = data\n .map((entry) => entry.preferred && entry.match)\n .some(Boolean);\n var foundMatch = false;\n // create links to the corresponding page in the other docs versions\n data.forEach((entry) => {\n // create the node\n const anchor = document.createElement(\"a\");\n anchor.setAttribute(\n \"class\",\n \"dropdown-item list-group-item list-group-item-action py-1\"\n );\n anchor.setAttribute(\"href\", `${entry.url}${currentFilePath}`);\n anchor.setAttribute(\"role\", \"option\");\n const span = document.createElement(\"span\");\n span.textContent = `${entry.name}`;\n anchor.appendChild(span);\n // Add dataset values for the version and name in case people want\n // to apply CSS styling based on this information.\n anchor.dataset[\"versionName\"] = entry.name;\n anchor.dataset[\"version\"] = entry.version;\n // replace dropdown button text with the preferred display name of the\n // currently-viewed version, rather than using sphinx's {{ version }} variable.\n // also highlight the dropdown entry for the currently-viewed version's entry\n let matchesAndIsPreferred = hasMatchingPreferredEntry && entry.preferred;\n let matchesAndIsFirst =\n !hasMatchingPreferredEntry && !foundMatch && entry.match;\n if (matchesAndIsPreferred || matchesAndIsFirst) {\n anchor.classList.add(\"active\");\n versionSwitcherBtns.forEach((btn) => {\n btn.innerText = entry.name;\n btn.dataset[\"activeVersionName\"] = entry.name;\n btn.dataset[\"activeVersion\"] = entry.version;\n });\n foundMatch = true;\n }\n // There may be multiple version-switcher elements, e.g. one\n // in a slide-over panel displayed on smaller screens.\n document.querySelectorAll(\".version-switcher__menu\").forEach((menu) => {\n // we need to clone the node for each menu, but onclick attributes are not\n // preserved by `.cloneNode()` so we add onclick here after cloning.\n let node = anchor.cloneNode(true);\n node.onclick = checkPageExistsAndRedirect;\n // on click, AJAX calls will check if the linked page exists before\n // trying to redirect, and if not, will redirect to the homepage\n // for that version of the docs.\n menu.append(node);\n });\n });\n}\n\n/*******************************************************************************\n * Warning banner when viewing non-stable version of the docs.\n */\n\n/**\n * Show a warning banner when viewing a non-stable version of the docs.\n *\n * adapted 2023-06 from https://mne.tools/versionwarning.js, which was\n * originally adapted 2020-05 from https://scikit-learn.org/versionwarning.js\n *\n * @param {Array} data The version data used to populate the switcher menu.\n */\nfunction showVersionWarningBanner(data) {\n var version = DOCUMENTATION_OPTIONS.VERSION;\n // figure out what latest stable version is\n var preferredEntries = data.filter((entry) => entry.preferred);\n if (preferredEntries.length !== 1) {\n const howMany = preferredEntries.length == 0 ? \"No\" : \"Multiple\";\n console.log(\n `[PST] ${howMany} versions marked \"preferred\" found in versions JSON, ignoring.`\n );\n return;\n }\n const preferredVersion = preferredEntries[0].version;\n const preferredURL = preferredEntries[0].url;\n // if already on preferred version, nothing to do\n const versionsAreComparable = validate(version) && validate(preferredVersion);\n if (versionsAreComparable && compare(version, preferredVersion, \"=\")) {\n return;\n }\n // now construct the warning banner\n var outer = document.createElement(\"div\");\n const middle = document.createElement(\"div\");\n const inner = document.createElement(\"div\");\n const bold = document.createElement(\"strong\");\n const button = document.createElement(\"a\");\n // these classes exist since pydata-sphinx-theme v0.10.0\n outer.classList = \"bd-header-version-warning container-fluid\";\n middle.classList = \"bd-header-announcement__content\";\n inner.classList = \"sidebar-message\";\n button.classList =\n \"sd-btn sd-btn-danger sd-shadow-sm sd-text-wrap font-weight-bold ms-3 my-1 align-baseline\";\n button.href = `${preferredURL}${DOCUMENTATION_OPTIONS.pagename}.html`;\n button.innerText = \"Switch to stable version\";\n button.onclick = checkPageExistsAndRedirect;\n // add the version-dependent text\n inner.innerText = \"This is documentation for \";\n const isDev =\n version.includes(\"dev\") ||\n version.includes(\"rc\") ||\n version.includes(\"pre\");\n const newerThanPreferred =\n versionsAreComparable && compare(version, preferredVersion, \">\");\n if (isDev || newerThanPreferred) {\n bold.innerText = \"an unstable development version\";\n } else if (versionsAreComparable && compare(version, preferredVersion, \"<\")) {\n bold.innerText = `an old version (${version})`;\n } else if (!version) {\n bold.innerText = \"an unknown version\"; // e.g., an empty string\n } else {\n bold.innerText = `version ${version}`;\n }\n outer.appendChild(middle);\n middle.appendChild(inner);\n inner.appendChild(bold);\n inner.appendChild(document.createTextNode(\".\"));\n inner.appendChild(button);\n document.body.prepend(outer);\n}\n\n/*******************************************************************************\n * MutationObserver to move the ReadTheDocs button\n */\n\n/**\n * intercept the RTD flyout and place it in the rtd-footer-container if existing\n * if not it stays where on top of the page\n */\nfunction initRTDObserver() {\n const mutatedCallback = (mutationList, observer) => {\n mutationList.forEach((mutation) => {\n // Check whether the mutation is for RTD, which will have a specific structure\n if (mutation.addedNodes.length === 0) {\n return;\n }\n if (mutation.addedNodes[0].data === undefined) {\n return;\n }\n if (mutation.addedNodes[0].data.search(\"Inserted RTD Footer\") != -1) {\n mutation.addedNodes.forEach((node) => {\n document.getElementById(\"rtd-footer-container\").append(node);\n });\n }\n });\n };\n\n const observer = new MutationObserver(mutatedCallback);\n const config = { childList: true };\n observer.observe(document.body, config);\n}\n\n// fetch the JSON version data (only once), then use it to populate the version\n// switcher and maybe show the version warning bar\nvar versionSwitcherBtns = document.querySelectorAll(\n \".version-switcher__button\"\n);\nconst hasSwitcherMenu = versionSwitcherBtns.length > 0;\nconst hasVersionsJSON = DOCUMENTATION_OPTIONS.hasOwnProperty(\n \"theme_switcher_json_url\"\n);\nconst wantsWarningBanner = DOCUMENTATION_OPTIONS.show_version_warning_banner;\n\nif (hasVersionsJSON && (hasSwitcherMenu || wantsWarningBanner)) {\n const data = await fetchVersionSwitcherJSON(\n DOCUMENTATION_OPTIONS.theme_switcher_json_url\n );\n populateVersionSwitcher(data, versionSwitcherBtns);\n if (wantsWarningBanner) {\n showVersionWarningBanner(data);\n }\n}\n\n/*******************************************************************************\n * Call functions after document loading.\n */\n\ndocumentReady(addModeListener);\ndocumentReady(scrollToActive);\ndocumentReady(addTOCInteractivity);\ndocumentReady(setupSearchButtons);\ndocumentReady(initRTDObserver);\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// startup\n// Load entry module and return exports\n// This entry module used 'module' so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(937);\n"],"names":["webpackQueues","webpackExports","webpackError","resolveQueue","validate","version","test","semver","compare","v1","v2","operator","assertValidOperator","res","n1","validateAndParse","n2","p1","pop","p2","r","compareSegments","split","compareVersions","operatorResMap","includes","TypeError","match","Error","shift","isWildcard","s","tryParse","v","n","parseInt","isNaN","compareStrings","a","b","ap","bp","String","forceType","i","Math","max","length","allowedOperators","Object","keys","op","indexOf","join","documentReady","callback","document","readyState","addEventListener","prefersDark","window","matchMedia","autoTheme","e","documentElement","dataset","theme","matches","setTheme","mode","console","error","colorScheme","querySelectorAll","forEach","el","classList","add","remove","localStorage","setItem","log","onchange","cycleMode","defaultMode","currentMode","getItem","arr","nextPosition","addModeListener","addTOCInteractivity","navLink","parentElement","scrollToActive","querySelector","sidebar","storedScrollTop","sessionStorage","active_pages","latest_active","offset","getBoundingClientRect","y","innerHeight","buffer","scrollTop","clientHeight","findSearchInput","forms","toggleSearchField","input","searchPopupWrapper","toggle","activeElement","blur","focus","select","scrollIntoView","block","isMac","navigator","platform","userAgentData","toLowerCase","async","checkPageExistsAndRedirect","event","preventDefault","currentFilePath","DOCUMENTATION_OPTIONS","pagename","tryUrl","currentTarget","getAttribute","otherDocsHomepage","replace","fetch","method","ok","location","href","err","fetchVersionSwitcherJSON","url","result","URL","origin","response","json","populateVersionSwitcher","data","versionSwitcherBtns","btn","hasMatchingPreferredEntry","map","entry","theme_switcher_version_match","preferred","name","some","Boolean","foundMatch","anchor","createElement","setAttribute","span","textContent","appendChild","matchesAndIsPreferred","matchesAndIsFirst","innerText","menu","node","cloneNode","onclick","append","showVersionWarningBanner","VERSION","preferredEntries","filter","howMany","preferredVersion","preferredURL","versionsAreComparable","outer","middle","inner","bold","button","isDev","newerThanPreferred","createTextNode","body","prepend","initRTDObserver","MutationObserver","mutationList","observer","mutation","addedNodes","undefined","search","getElementById","observe","childList","hasSwitcherMenu","hasVersionsJSON","hasOwnProperty","wantsWarningBanner","show_version_warning_banner","theme_switcher_json_url","shortcuts","f","changeSearchShortcutKey","shiftKey","altKey","metaKey","ctrlKey","key","overlay","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","module","__webpack_modules__","Symbol","queue","d","fn","hasAwait","currentDeps","outerResolve","reject","depQueues","Set","promise","Promise","resolve","rej","x","deps","dep","then","obj","ret","wrapDeps","getResult","fnQueue","q","has","push","definition","o","defineProperty","enumerable","get","prop","prototype","call"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"scripts/pydata-sphinx-theme.js","mappings":"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","sources":["webpack://pydata_sphinx_theme/webpack/runtime/async module","webpack://pydata_sphinx_theme/./node_modules/compare-versions/lib/esm/index.js","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/scripts/mixin.js","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/scripts/pydata-sphinx-theme.js","webpack://pydata_sphinx_theme/webpack/bootstrap","webpack://pydata_sphinx_theme/webpack/runtime/define property getters","webpack://pydata_sphinx_theme/webpack/runtime/hasOwnProperty shorthand","webpack://pydata_sphinx_theme/webpack/startup"],"sourcesContent":["var webpackQueues = typeof Symbol === \"function\" ? Symbol(\"webpack queues\") : \"__webpack_queues__\";\nvar webpackExports = typeof Symbol === \"function\" ? Symbol(\"webpack exports\") : \"__webpack_exports__\";\nvar webpackError = typeof Symbol === \"function\" ? Symbol(\"webpack error\") : \"__webpack_error__\";\nvar resolveQueue = (queue) => {\n\tif(queue && queue.d < 1) {\n\t\tqueue.d = 1;\n\t\tqueue.forEach((fn) => (fn.r--));\n\t\tqueue.forEach((fn) => (fn.r-- ? fn.r++ : fn()));\n\t}\n}\nvar wrapDeps = (deps) => (deps.map((dep) => {\n\tif(dep !== null && typeof dep === \"object\") {\n\t\tif(dep[webpackQueues]) return dep;\n\t\tif(dep.then) {\n\t\t\tvar queue = [];\n\t\t\tqueue.d = 0;\n\t\t\tdep.then((r) => {\n\t\t\t\tobj[webpackExports] = r;\n\t\t\t\tresolveQueue(queue);\n\t\t\t}, (e) => {\n\t\t\t\tobj[webpackError] = e;\n\t\t\t\tresolveQueue(queue);\n\t\t\t});\n\t\t\tvar obj = {};\n\t\t\tobj[webpackQueues] = (fn) => (fn(queue));\n\t\t\treturn obj;\n\t\t}\n\t}\n\tvar ret = {};\n\tret[webpackQueues] = x => {};\n\tret[webpackExports] = dep;\n\treturn ret;\n}));\n__webpack_require__.a = (module, body, hasAwait) => {\n\tvar queue;\n\thasAwait && ((queue = []).d = -1);\n\tvar depQueues = new Set();\n\tvar exports = module.exports;\n\tvar currentDeps;\n\tvar outerResolve;\n\tvar reject;\n\tvar promise = new Promise((resolve, rej) => {\n\t\treject = rej;\n\t\touterResolve = resolve;\n\t});\n\tpromise[webpackExports] = exports;\n\tpromise[webpackQueues] = (fn) => (queue && fn(queue), depQueues.forEach(fn), promise[\"catch\"](x => {}));\n\tmodule.exports = promise;\n\tbody((deps) => {\n\t\tcurrentDeps = wrapDeps(deps);\n\t\tvar fn;\n\t\tvar getResult = () => (currentDeps.map((d) => {\n\t\t\tif(d[webpackError]) throw d[webpackError];\n\t\t\treturn d[webpackExports];\n\t\t}))\n\t\tvar promise = new Promise((resolve) => {\n\t\t\tfn = () => (resolve(getResult));\n\t\t\tfn.r = 0;\n\t\t\tvar fnQueue = (q) => (q !== queue && !depQueues.has(q) && (depQueues.add(q), q && !q.d && (fn.r++, q.push(fn))));\n\t\t\tcurrentDeps.map((dep) => (dep[webpackQueues](fnQueue)));\n\t\t});\n\t\treturn fn.r ? promise : getResult();\n\t}, (err) => ((err ? reject(promise[webpackError] = err) : outerResolve(exports)), resolveQueue(queue)));\n\tqueue && queue.d < 0 && (queue.d = 0);\n};","/**\n * Compare [semver](https://semver.org/) version strings to find greater, equal or lesser.\n * This library supports the full semver specification, including comparing versions with different number of digits like `1.0.0`, `1.0`, `1`, and pre-release versions like `1.0.0-alpha`.\n * @param v1 - First version to compare\n * @param v2 - Second version to compare\n * @returns Numeric value compatible with the [Array.sort(fn) interface](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#Parameters).\n */\nexport const compareVersions = (v1, v2) => {\n // validate input and split into segments\n const n1 = validateAndParse(v1);\n const n2 = validateAndParse(v2);\n // pop off the patch\n const p1 = n1.pop();\n const p2 = n2.pop();\n // validate numbers\n const r = compareSegments(n1, n2);\n if (r !== 0)\n return r;\n // validate pre-release\n if (p1 && p2) {\n return compareSegments(p1.split('.'), p2.split('.'));\n }\n else if (p1 || p2) {\n return p1 ? -1 : 1;\n }\n return 0;\n};\n/**\n * Validate [semver](https://semver.org/) version strings.\n *\n * @param version Version number to validate\n * @returns `true` if the version number is a valid semver version number, `false` otherwise.\n *\n * @example\n * ```\n * validate('1.0.0-rc.1'); // return true\n * validate('1.0-rc.1'); // return false\n * validate('foo'); // return false\n * ```\n */\nexport const validate = (version) => typeof version === 'string' && /^[v\\d]/.test(version) && semver.test(version);\n/**\n * Compare [semver](https://semver.org/) version strings using the specified operator.\n *\n * @param v1 First version to compare\n * @param v2 Second version to compare\n * @param operator Allowed arithmetic operator to use\n * @returns `true` if the comparison between the firstVersion and the secondVersion satisfies the operator, `false` otherwise.\n *\n * @example\n * ```\n * compare('10.1.8', '10.0.4', '>'); // return true\n * compare('10.0.1', '10.0.1', '='); // return true\n * compare('10.1.1', '10.2.2', '<'); // return true\n * compare('10.1.1', '10.2.2', '<='); // return true\n * compare('10.1.1', '10.2.2', '>='); // return false\n * ```\n */\nexport const compare = (v1, v2, operator) => {\n // validate input operator\n assertValidOperator(operator);\n // since result of compareVersions can only be -1 or 0 or 1\n // a simple map can be used to replace switch\n const res = compareVersions(v1, v2);\n return operatorResMap[operator].includes(res);\n};\n/**\n * Match [npm semver](https://docs.npmjs.com/cli/v6/using-npm/semver) version range.\n *\n * @param version Version number to match\n * @param range Range pattern for version\n * @returns `true` if the version number is within the range, `false` otherwise.\n *\n * @example\n * ```\n * satisfies('1.1.0', '^1.0.0'); // return true\n * satisfies('1.1.0', '~1.0.0'); // return false\n * ```\n */\nexport const satisfies = (version, range) => {\n // if no range operator then \"=\"\n const m = range.match(/^([<>=~^]+)/);\n const op = m ? m[1] : '=';\n // if gt/lt/eq then operator compare\n if (op !== '^' && op !== '~')\n return compare(version, range, op);\n // else range of either \"~\" or \"^\" is assumed\n const [v1, v2, v3, , vp] = validateAndParse(version);\n const [r1, r2, r3, , rp] = validateAndParse(range);\n const v = [v1, v2, v3];\n const r = [r1, r2 !== null && r2 !== void 0 ? r2 : 'x', r3 !== null && r3 !== void 0 ? r3 : 'x'];\n // validate pre-release\n if (rp) {\n if (!vp)\n return false;\n if (compareSegments(v, r) !== 0)\n return false;\n if (compareSegments(vp.split('.'), rp.split('.')) === -1)\n return false;\n }\n // first non-zero number\n const nonZero = r.findIndex((v) => v !== '0') + 1;\n // pointer to where segments can be >=\n const i = op === '~' ? 2 : nonZero > 1 ? nonZero : 1;\n // before pointer must be equal\n if (compareSegments(v.slice(0, i), r.slice(0, i)) !== 0)\n return false;\n // after pointer must be >=\n if (compareSegments(v.slice(i), r.slice(i)) === -1)\n return false;\n return true;\n};\nconst semver = /^[v^~<>=]*?(\\d+)(?:\\.([x*]|\\d+)(?:\\.([x*]|\\d+)(?:\\.([x*]|\\d+))?(?:-([\\da-z\\-]+(?:\\.[\\da-z\\-]+)*))?(?:\\+[\\da-z\\-]+(?:\\.[\\da-z\\-]+)*)?)?)?$/i;\nconst validateAndParse = (version) => {\n if (typeof version !== 'string') {\n throw new TypeError('Invalid argument expected string');\n }\n const match = version.match(semver);\n if (!match) {\n throw new Error(`Invalid argument not valid semver ('${version}' received)`);\n }\n match.shift();\n return match;\n};\nconst isWildcard = (s) => s === '*' || s === 'x' || s === 'X';\nconst tryParse = (v) => {\n const n = parseInt(v, 10);\n return isNaN(n) ? v : n;\n};\nconst forceType = (a, b) => typeof a !== typeof b ? [String(a), String(b)] : [a, b];\nconst compareStrings = (a, b) => {\n if (isWildcard(a) || isWildcard(b))\n return 0;\n const [ap, bp] = forceType(tryParse(a), tryParse(b));\n if (ap > bp)\n return 1;\n if (ap < bp)\n return -1;\n return 0;\n};\nconst compareSegments = (a, b) => {\n for (let i = 0; i < Math.max(a.length, b.length); i++) {\n const r = compareStrings(a[i] || '0', b[i] || '0');\n if (r !== 0)\n return r;\n }\n return 0;\n};\nconst operatorResMap = {\n '>': [1],\n '>=': [0, 1],\n '=': [0],\n '<=': [-1, 0],\n '<': [-1],\n};\nconst allowedOperators = Object.keys(operatorResMap);\nconst assertValidOperator = (op) => {\n if (typeof op !== 'string') {\n throw new TypeError(`Invalid operator type, expected string but got ${typeof op}`);\n }\n if (allowedOperators.indexOf(op) === -1) {\n throw new Error(`Invalid operator, expected one of ${allowedOperators.join('|')}`);\n }\n};\n//# sourceMappingURL=index.js.map","/* define several functions to replace jQuery methods\n * inspired by https://tobiasahlin.com/blog/move-from-jquery-to-vanilla-javascript/\n */\n\n/**\n * Execute a method if DOM has finished loading\n *\n * @param {function} callback the method to execute\n */\nexport function documentReady(callback) {\n if (document.readyState != \"loading\") callback();\n else document.addEventListener(\"DOMContentLoaded\", callback);\n}\n","// Define the custom behavior of the page\nimport { documentReady } from \"./mixin\";\nimport { compare, validate } from \"compare-versions\";\n\nimport \"../styles/pydata-sphinx-theme.scss\";\n\n/*******************************************************************************\n * Theme interaction\n */\n\nvar prefersDark = window.matchMedia(\"(prefers-color-scheme: dark)\");\n\n/**\n * set the the body theme to the one specified by the user browser\n *\n * @param {event} e\n */\nfunction autoTheme(e) {\n document.documentElement.dataset.theme = prefersDark.matches\n ? \"dark\"\n : \"light\";\n}\n\n/**\n * Set the theme using the specified mode.\n * It can be one of [\"auto\", \"dark\", \"light\"]\n *\n * @param {str} mode\n */\nfunction setTheme(mode) {\n if (mode !== \"light\" && mode !== \"dark\" && mode !== \"auto\") {\n console.error(`Got invalid theme mode: ${mode}. Resetting to auto.`);\n mode = \"auto\";\n }\n\n // get the theme\n var colorScheme = prefersDark.matches ? \"dark\" : \"light\";\n document.documentElement.dataset.mode = mode;\n var theme = mode == \"auto\" ? colorScheme : mode;\n document.documentElement.dataset.theme = theme;\n // TODO: remove this line after Bootstrap upgrade\n // v5.3 has a colors mode: https://getbootstrap.com/docs/5.3/customize/color-modes/\n document.querySelectorAll(\".dropdown-menu\").forEach((el) => {\n if (theme === \"dark\") {\n el.classList.add(\"dropdown-menu-dark\");\n } else {\n el.classList.remove(\"dropdown-menu-dark\");\n }\n });\n\n // save mode and theme\n localStorage.setItem(\"mode\", mode);\n localStorage.setItem(\"theme\", theme);\n console.log(`[PST]: Changed to ${mode} mode using the ${theme} theme.`);\n\n // add a listener if set on auto\n prefersDark.onchange = mode == \"auto\" ? autoTheme : \"\";\n}\n\n/**\n * Change the theme option order so that clicking on the btn is always a change\n * from \"auto\"\n */\nfunction cycleMode() {\n const defaultMode = document.documentElement.dataset.defaultMode || \"auto\";\n const currentMode = localStorage.getItem(\"mode\") || defaultMode;\n\n var loopArray = (arr, current) => {\n var nextPosition = arr.indexOf(current) + 1;\n if (nextPosition === arr.length) {\n nextPosition = 0;\n }\n return arr[nextPosition];\n };\n\n // make sure the next theme after auto is always a change\n var modeList = prefersDark.matches\n ? [\"auto\", \"light\", \"dark\"]\n : [\"auto\", \"dark\", \"light\"];\n var newMode = loopArray(modeList, currentMode);\n setTheme(newMode);\n}\n\n/**\n * add the theme listener on the btns of the navbar\n */\nfunction addModeListener() {\n // the theme was set a first time using the initial mini-script\n // running setMode will ensure the use of the dark mode if auto is selected\n setTheme(document.documentElement.dataset.mode);\n\n // Attach event handlers for toggling themes colors\n document.querySelectorAll(\".theme-switch-button\").forEach((el) => {\n el.addEventListener(\"click\", cycleMode);\n });\n}\n\n/*******************************************************************************\n * TOC interactivity\n */\n\n/**\n * TOC sidebar - add \"active\" class to parent list\n *\n * Bootstrap's scrollspy adds the active class to the link,\n * but for the automatic collapsing we need this on the parent list item.\n *\n * The event is triggered on \"window\" (and not the nav item as documented),\n * see https://github.com/twbs/bootstrap/issues/20086\n */\nfunction addTOCInteractivity() {\n window.addEventListener(\"activate.bs.scrollspy\", function () {\n const navLinks = document.querySelectorAll(\".bd-toc-nav a\");\n\n navLinks.forEach((navLink) => {\n navLink.parentElement.classList.remove(\"active\");\n });\n\n const activeNavLinks = document.querySelectorAll(\".bd-toc-nav a.active\");\n activeNavLinks.forEach((navLink) => {\n navLink.parentElement.classList.add(\"active\");\n });\n });\n}\n\n/*******************************************************************************\n * Scroll\n */\n\n/**\n * Navigation sidebar scrolling to active page\n */\nfunction scrollToActive() {\n // If the docs nav doesn't exist, do nothing (e.g., on search page)\n if (!document.querySelector(\".bd-docs-nav\")) {\n return;\n }\n\n var sidebar = document.querySelector(\"div.bd-sidebar\");\n\n // Remember the sidebar scroll position between page loads\n // Inspired on source of revealjs.com\n let storedScrollTop = parseInt(\n sessionStorage.getItem(\"sidebar-scroll-top\"),\n 10\n );\n\n if (!isNaN(storedScrollTop)) {\n // If we've got a saved scroll position, just use that\n sidebar.scrollTop = storedScrollTop;\n console.log(\"[PST]: Scrolled sidebar using stored browser position...\");\n } else {\n // Otherwise, calculate a position to scroll to based on the lowest `active` link\n var sidebarNav = document.querySelector(\".bd-docs-nav\");\n var active_pages = sidebarNav.querySelectorAll(\".active\");\n if (active_pages.length > 0) {\n // Use the last active page as the offset since it's the page we're on\n var latest_active = active_pages[active_pages.length - 1];\n var offset =\n latest_active.getBoundingClientRect().y -\n sidebar.getBoundingClientRect().y;\n // Only scroll the navbar if the active link is lower than 50% of the page\n if (latest_active.getBoundingClientRect().y > window.innerHeight * 0.5) {\n let buffer = 0.25; // Buffer so we have some space above the scrolled item\n sidebar.scrollTop = offset - sidebar.clientHeight * buffer;\n console.log(\"[PST]: Scrolled sidebar using last active link...\");\n }\n }\n }\n\n // Store the sidebar scroll position\n window.addEventListener(\"beforeunload\", () => {\n sessionStorage.setItem(\"sidebar-scroll-top\", sidebar.scrollTop);\n });\n}\n\n/*******************************************************************************\n * Search\n */\n\n/**\n * Find any search forms on the page and return their input element\n */\nvar findSearchInput = () => {\n let forms = document.querySelectorAll(\"form.bd-search\");\n if (!forms.length) {\n // no search form found\n return;\n } else {\n var form;\n if (forms.length == 1) {\n // there is exactly one search form (persistent or hidden)\n form = forms[0];\n } else {\n // must be at least one persistent form, use the first persistent one\n form = document.querySelector(\n \"div:not(.search-button__search-container) > form.bd-search\"\n );\n }\n return form.querySelector(\"input\");\n }\n};\n\n/**\n * Activate the search field on the page.\n * - If there is a search field already visible it will be activated.\n * - If not, then a search field will pop up.\n */\nvar toggleSearchField = () => {\n // Find the search input to highlight\n let input = findSearchInput();\n\n // if the input field is the hidden one (the one associated with the\n // search button) then toggle the button state (to show/hide the field)\n let searchPopupWrapper = document.querySelector(\".search-button__wrapper\");\n let hiddenInput = searchPopupWrapper.querySelector(\"input\");\n if (input === hiddenInput) {\n searchPopupWrapper.classList.toggle(\"show\");\n }\n // when toggling off the search field, remove its focus\n if (document.activeElement === input) {\n input.blur();\n } else {\n input.focus();\n input.select();\n input.scrollIntoView({ block: \"center\" });\n }\n};\n\n/**\n * Add an event listener for toggleSearchField() for Ctrl/Cmd + K\n */\nvar addEventListenerForSearchKeyboard = () => {\n window.addEventListener(\n \"keydown\",\n (event) => {\n let input = findSearchInput();\n // toggle on Ctrl+k or ⌘+k\n if (\n // Ignore if shift or alt are pressed\n !event.shiftKey &&\n !event.altKey &&\n // On Mac use ⌘, all other OS use Ctrl\n (useCommandKey\n ? event.metaKey && !event.ctrlKey\n : !event.metaKey && event.ctrlKey) &&\n // Case-insensitive so the shortcut still works with caps lock\n /k/i.test(event.key)\n ) {\n event.preventDefault();\n toggleSearchField();\n }\n // also allow Escape key to hide (but not show) the dynamic search field\n else if (document.activeElement === input && /Escape/i.test(event.key)) {\n toggleSearchField();\n }\n },\n true\n );\n};\n\n/**\n * If the user is on a Mac, use command (⌘) instead of control (ctrl) key\n *\n * Note: `navigator.platform` is deprecated; however MDN still recommends using\n * it for the one specific use case of detecting whether a keyboard shortcut\n * should use control or command:\n * https://developer.mozilla.org/en-US/docs/Web/API/Navigator/platform#examples\n */\nvar useCommandKey =\n navigator.platform.indexOf(\"Mac\") === 0 || navigator.platform === \"iPhone\";\n\n/**\n * Change the search hint to `meta key` if we are a Mac\n */\n\nvar changeSearchShortcutKey = () => {\n let shortcuts = document.querySelectorAll(\".search-button__kbd-shortcut\");\n if (useCommandKey) {\n shortcuts.forEach(\n (f) => (f.querySelector(\"kbd.kbd-shortcut__modifier\").innerText = \"⌘\")\n );\n }\n};\n\n/**\n * Activate callbacks for search button popup\n */\nvar setupSearchButtons = () => {\n changeSearchShortcutKey();\n addEventListenerForSearchKeyboard();\n\n // Add the search button trigger event callback\n document.querySelectorAll(\".search-button__button\").forEach((btn) => {\n btn.onclick = toggleSearchField;\n });\n\n // Add the search button overlay event callback\n let overlay = document.querySelector(\".search-button__overlay\");\n if (overlay) {\n overlay.onclick = toggleSearchField;\n }\n};\n\n/*******************************************************************************\n * Version Switcher\n * Note that this depends on two variables existing that are defined in\n * and `html-page-context` hook:\n *\n * - DOCUMENTATION_OPTIONS.pagename\n * - DOCUMENTATION_OPTIONS.theme_switcher_url\n */\n\n/**\n * Check if corresponding page path exists in other version of docs\n * and, if so, go there instead of the homepage of the other docs version\n *\n * @param {event} event the event that trigger the check\n */\nasync function checkPageExistsAndRedirect(event) {\n // ensure we don't follow the initial link\n event.preventDefault();\n let currentFilePath = `${DOCUMENTATION_OPTIONS.pagename}.html`;\n let tryUrl = event.currentTarget.getAttribute(\"href\");\n let otherDocsHomepage = tryUrl.replace(currentFilePath, \"\");\n try {\n let head = await fetch(tryUrl, { method: \"HEAD\" });\n if (head.ok) {\n location.href = tryUrl; // the page exists, go there\n } else {\n location.href = otherDocsHomepage;\n }\n } catch (err) {\n // something went wrong, probably CORS restriction, fallback to other docs homepage\n location.href = otherDocsHomepage;\n }\n}\n\n/**\n * Load and parse the version switcher JSON file from an absolute or relative URL.\n *\n * @param {string} url The URL to load version switcher entries from.\n */\nasync function fetchVersionSwitcherJSON(url) {\n // first check if it's a valid URL\n try {\n var result = new URL(url);\n } catch (err) {\n if (err instanceof TypeError) {\n // assume we got a relative path, and fix accordingly. But first, we need to\n // use `fetch()` to follow redirects so we get the correct final base URL\n const origin = await fetch(window.location.origin, { method: \"HEAD\" });\n result = new URL(url, origin.url);\n } else {\n // something unexpected happened\n throw err;\n }\n }\n // load and return the JSON\n const response = await fetch(result);\n const data = await response.json();\n return data;\n}\n\n// Populate the version switcher from the JSON data\nfunction populateVersionSwitcher(data, versionSwitcherBtns) {\n const currentFilePath = `${DOCUMENTATION_OPTIONS.pagename}.html`;\n versionSwitcherBtns.forEach((btn) => {\n // Set empty strings by default so that these attributes exist and can be used in CSS selectors\n btn.dataset[\"activeVersionName\"] = \"\";\n btn.dataset[\"activeVersion\"] = \"\";\n });\n // in case there are multiple entries with the same version string, this helps us\n // decide which entry's `name` to put on the button itself. Without this, it would\n // always be the *last* version-matching entry; now it will be either the\n // version-matching entry that is also marked as `\"preferred\": true`, or if that\n // doesn't exist: the *first* version-matching entry.\n data = data.map((entry) => {\n // does this entry match the version that we're currently building/viewing?\n entry.match =\n entry.version == DOCUMENTATION_OPTIONS.theme_switcher_version_match;\n entry.preferred = entry.preferred || false;\n // if no custom name specified (e.g., \"latest\"), use version string\n if (!(\"name\" in entry)) {\n entry.name = entry.version;\n }\n return entry;\n });\n const hasMatchingPreferredEntry = data\n .map((entry) => entry.preferred && entry.match)\n .some(Boolean);\n var foundMatch = false;\n // create links to the corresponding page in the other docs versions\n data.forEach((entry) => {\n // create the node\n const anchor = document.createElement(\"a\");\n anchor.setAttribute(\n \"class\",\n \"dropdown-item list-group-item list-group-item-action py-1\"\n );\n anchor.setAttribute(\"href\", `${entry.url}${currentFilePath}`);\n anchor.setAttribute(\"role\", \"option\");\n const span = document.createElement(\"span\");\n span.textContent = `${entry.name}`;\n anchor.appendChild(span);\n // Add dataset values for the version and name in case people want\n // to apply CSS styling based on this information.\n anchor.dataset[\"versionName\"] = entry.name;\n anchor.dataset[\"version\"] = entry.version;\n // replace dropdown button text with the preferred display name of the\n // currently-viewed version, rather than using sphinx's {{ version }} variable.\n // also highlight the dropdown entry for the currently-viewed version's entry\n let matchesAndIsPreferred = hasMatchingPreferredEntry && entry.preferred;\n let matchesAndIsFirst =\n !hasMatchingPreferredEntry && !foundMatch && entry.match;\n if (matchesAndIsPreferred || matchesAndIsFirst) {\n anchor.classList.add(\"active\");\n versionSwitcherBtns.forEach((btn) => {\n btn.innerText = entry.name;\n btn.dataset[\"activeVersionName\"] = entry.name;\n btn.dataset[\"activeVersion\"] = entry.version;\n });\n foundMatch = true;\n }\n // There may be multiple version-switcher elements, e.g. one\n // in a slide-over panel displayed on smaller screens.\n document.querySelectorAll(\".version-switcher__menu\").forEach((menu) => {\n // we need to clone the node for each menu, but onclick attributes are not\n // preserved by `.cloneNode()` so we add onclick here after cloning.\n let node = anchor.cloneNode(true);\n node.onclick = checkPageExistsAndRedirect;\n // on click, AJAX calls will check if the linked page exists before\n // trying to redirect, and if not, will redirect to the homepage\n // for that version of the docs.\n menu.append(node);\n });\n });\n}\n\n/*******************************************************************************\n * Warning banner when viewing non-stable version of the docs.\n */\n\n/**\n * Show a warning banner when viewing a non-stable version of the docs.\n *\n * adapted 2023-06 from https://mne.tools/versionwarning.js, which was\n * originally adapted 2020-05 from https://scikit-learn.org/versionwarning.js\n *\n * @param {Array} data The version data used to populate the switcher menu.\n */\nfunction showVersionWarningBanner(data) {\n var version = DOCUMENTATION_OPTIONS.VERSION;\n // figure out what latest stable version is\n var preferredEntries = data.filter((entry) => entry.preferred);\n if (preferredEntries.length !== 1) {\n const howMany = preferredEntries.length == 0 ? \"No\" : \"Multiple\";\n console.log(\n `[PST] ${howMany} versions marked \"preferred\" found in versions JSON, ignoring.`\n );\n return;\n }\n const preferredVersion = preferredEntries[0].version;\n const preferredURL = preferredEntries[0].url;\n // if already on preferred version, nothing to do\n const versionsAreComparable = validate(version) && validate(preferredVersion);\n if (versionsAreComparable && compare(version, preferredVersion, \"=\")) {\n return;\n }\n // now construct the warning banner\n var outer = document.createElement(\"aside\");\n // TODO: add to translatable strings\n outer.setAttribute(\"aria-label\", \"Version warning\");\n const middle = document.createElement(\"div\");\n const inner = document.createElement(\"div\");\n const bold = document.createElement(\"strong\");\n const button = document.createElement(\"a\");\n // these classes exist since pydata-sphinx-theme v0.10.0\n outer.classList = \"bd-header-version-warning container-fluid\";\n middle.classList = \"bd-header-announcement__content\";\n inner.classList = \"sidebar-message\";\n button.classList =\n \"sd-btn sd-btn-danger sd-shadow-sm sd-text-wrap font-weight-bold ms-3 my-1 align-baseline\";\n button.href = `${preferredURL}${DOCUMENTATION_OPTIONS.pagename}.html`;\n button.innerText = \"Switch to stable version\";\n button.onclick = checkPageExistsAndRedirect;\n // add the version-dependent text\n inner.innerText = \"This is documentation for \";\n const isDev =\n version.includes(\"dev\") ||\n version.includes(\"rc\") ||\n version.includes(\"pre\");\n const newerThanPreferred =\n versionsAreComparable && compare(version, preferredVersion, \">\");\n if (isDev || newerThanPreferred) {\n bold.innerText = \"an unstable development version\";\n } else if (versionsAreComparable && compare(version, preferredVersion, \"<\")) {\n bold.innerText = `an old version (${version})`;\n } else if (!version) {\n bold.innerText = \"an unknown version\"; // e.g., an empty string\n } else {\n bold.innerText = `version ${version}`;\n }\n outer.appendChild(middle);\n middle.appendChild(inner);\n inner.appendChild(bold);\n inner.appendChild(document.createTextNode(\".\"));\n inner.appendChild(button);\n const skipLink = document.getElementById(\"pst-skip-link\");\n skipLink.after(outer);\n}\n\n/*******************************************************************************\n * MutationObserver to move the ReadTheDocs button\n */\n\n/**\n * intercept the RTD flyout and place it in the rtd-footer-container if existing\n * if not it stays where on top of the page\n */\nfunction initRTDObserver() {\n const mutatedCallback = (mutationList, observer) => {\n mutationList.forEach((mutation) => {\n // Check whether the mutation is for RTD, which will have a specific structure\n if (mutation.addedNodes.length === 0) {\n return;\n }\n if (mutation.addedNodes[0].data === undefined) {\n return;\n }\n if (mutation.addedNodes[0].data.search(\"Inserted RTD Footer\") != -1) {\n mutation.addedNodes.forEach((node) => {\n document.getElementById(\"rtd-footer-container\").append(node);\n });\n }\n });\n };\n\n const observer = new MutationObserver(mutatedCallback);\n const config = { childList: true };\n observer.observe(document.body, config);\n}\n\n// fetch the JSON version data (only once), then use it to populate the version\n// switcher and maybe show the version warning bar\nvar versionSwitcherBtns = document.querySelectorAll(\n \".version-switcher__button\"\n);\nconst hasSwitcherMenu = versionSwitcherBtns.length > 0;\nconst hasVersionsJSON = DOCUMENTATION_OPTIONS.hasOwnProperty(\n \"theme_switcher_json_url\"\n);\nconst wantsWarningBanner = DOCUMENTATION_OPTIONS.show_version_warning_banner;\n\nif (hasVersionsJSON && (hasSwitcherMenu || wantsWarningBanner)) {\n const data = await fetchVersionSwitcherJSON(\n DOCUMENTATION_OPTIONS.theme_switcher_json_url\n );\n populateVersionSwitcher(data, versionSwitcherBtns);\n if (wantsWarningBanner) {\n showVersionWarningBanner(data);\n }\n}\n\n/**\n * Fix bug #1603\n */\nfunction fixMoreLinksInMobileSidebar() {\n const dropdown = document.querySelector(\n \".bd-sidebar-primary [id^=pst-nav-more-links]\"\n );\n dropdown.classList.add(\"show\");\n}\n\n/*******************************************************************************\n * Call functions after document loading.\n */\n\ndocumentReady(addModeListener);\ndocumentReady(scrollToActive);\ndocumentReady(addTOCInteractivity);\ndocumentReady(setupSearchButtons);\ndocumentReady(initRTDObserver);\ndocumentReady(fixMoreLinksInMobileSidebar);\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// startup\n// Load entry module and return exports\n// This entry module used 'module' so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(937);\n"],"names":["webpackQueues","webpackExports","webpackError","resolveQueue","validate","version","test","semver","compare","v1","v2","operator","assertValidOperator","res","n1","validateAndParse","n2","p1","pop","p2","r","compareSegments","split","compareVersions","operatorResMap","includes","TypeError","match","Error","shift","isWildcard","s","tryParse","v","n","parseInt","isNaN","compareStrings","a","b","ap","bp","String","forceType","i","Math","max","length","allowedOperators","Object","keys","op","indexOf","join","documentReady","callback","document","readyState","addEventListener","prefersDark","window","matchMedia","autoTheme","e","documentElement","dataset","theme","matches","setTheme","mode","console","error","colorScheme","querySelectorAll","forEach","el","classList","add","remove","localStorage","setItem","log","onchange","cycleMode","defaultMode","currentMode","getItem","arr","nextPosition","addModeListener","addTOCInteractivity","navLink","parentElement","scrollToActive","querySelector","sidebar","storedScrollTop","sessionStorage","active_pages","latest_active","offset","getBoundingClientRect","y","innerHeight","buffer","scrollTop","clientHeight","findSearchInput","forms","toggleSearchField","input","searchPopupWrapper","toggle","activeElement","blur","focus","select","scrollIntoView","block","useCommandKey","navigator","platform","async","checkPageExistsAndRedirect","event","preventDefault","currentFilePath","DOCUMENTATION_OPTIONS","pagename","tryUrl","currentTarget","getAttribute","otherDocsHomepage","replace","fetch","method","ok","location","href","err","fetchVersionSwitcherJSON","url","result","URL","origin","response","json","populateVersionSwitcher","data","versionSwitcherBtns","btn","hasMatchingPreferredEntry","map","entry","theme_switcher_version_match","preferred","name","some","Boolean","foundMatch","anchor","createElement","setAttribute","span","textContent","appendChild","matchesAndIsPreferred","matchesAndIsFirst","innerText","menu","node","cloneNode","onclick","append","showVersionWarningBanner","VERSION","preferredEntries","filter","howMany","preferredVersion","preferredURL","versionsAreComparable","outer","middle","inner","bold","button","isDev","newerThanPreferred","createTextNode","getElementById","after","initRTDObserver","MutationObserver","mutationList","observer","mutation","addedNodes","undefined","search","observe","body","childList","hasSwitcherMenu","hasVersionsJSON","hasOwnProperty","wantsWarningBanner","show_version_warning_banner","theme_switcher_json_url","fixMoreLinksInMobileSidebar","shortcuts","f","changeSearchShortcutKey","shiftKey","altKey","metaKey","ctrlKey","key","overlay","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","module","__webpack_modules__","Symbol","queue","d","fn","hasAwait","currentDeps","outerResolve","reject","depQueues","Set","promise","Promise","resolve","rej","x","deps","dep","then","obj","ret","wrapDeps","getResult","fnQueue","q","has","push","definition","o","defineProperty","enumerable","get","prop","prototype","call"],"sourceRoot":""} \ No newline at end of file diff --git a/_static/styles/pydata-sphinx-theme.css b/_static/styles/pydata-sphinx-theme.css index db7635b..9d12a96 100644 --- a/_static/styles/pydata-sphinx-theme.css +++ b/_static/styles/pydata-sphinx-theme.css @@ -1,2 +1,2 @@ -html{--pst-header-height:4rem;--pst-header-article-height:calc(var(--pst-header-height)*2/3);--pst-sidebar-secondary:17rem;--pst-font-size-base:1rem;--pst-font-size-h1:2.5rem;--pst-font-size-h2:2rem;--pst-font-size-h3:1.75rem;--pst-font-size-h4:1.5rem;--pst-font-size-h5:1.25rem;--pst-font-size-h6:1.1rem;--pst-font-size-milli:0.9rem;--pst-sidebar-font-size:0.9rem;--pst-sidebar-font-size-mobile:1.1rem;--pst-sidebar-header-font-size:1.2rem;--pst-sidebar-header-font-weight:600;--pst-admonition-font-weight-heading:600;--pst-font-weight-caption:300;--pst-font-weight-heading:400;--pst-font-family-base-system:-apple-system,BlinkMacSystemFont,Segoe UI,"Helvetica Neue",Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;--pst-font-family-monospace-system:"SFMono-Regular",Menlo,Consolas,Monaco,Liberation Mono,Lucida Console,monospace;--pst-font-family-base:var(--pst-font-family-base-system);--pst-font-family-heading:var(--pst-font-family-base-system);--pst-font-family-monospace:var(--pst-font-family-monospace-system);--pst-font-size-icon:1.5rem;--pst-icon-check-circle:"";--pst-icon-info-circle:"";--pst-icon-exclamation-triangle:"";--pst-icon-exclamation-circle:"";--pst-icon-times-circle:"";--pst-icon-lightbulb:"";--pst-icon-download:"";--pst-icon-angle-left:"";--pst-icon-angle-right:"";--pst-icon-external-link:"";--pst-icon-search-minus:"";--pst-icon-github:"";--pst-icon-gitlab:"";--pst-icon-share:"";--pst-icon-bell:"";--pst-icon-pencil:"";--pst-breadcrumb-divider:"";--pst-icon-admonition-default:var(--pst-icon-bell);--pst-icon-admonition-note:var(--pst-icon-info-circle);--pst-icon-admonition-attention:var(--pst-icon-exclamation-circle);--pst-icon-admonition-caution:var(--pst-icon-exclamation-triangle);--pst-icon-admonition-warning:var(--pst-icon-exclamation-triangle);--pst-icon-admonition-danger:var(--pst-icon-exclamation-triangle);--pst-icon-admonition-error:var(--pst-icon-times-circle);--pst-icon-admonition-hint:var(--pst-icon-lightbulb);--pst-icon-admonition-tip:var(--pst-icon-lightbulb);--pst-icon-admonition-important:var(--pst-icon-exclamation-circle);--pst-icon-admonition-seealso:var(--pst-icon-share);--pst-icon-admonition-todo:var(--pst-icon-pencil);--pst-icon-versionmodified-default:var(--pst-icon-exclamation-circle);--pst-icon-versionmodified-added:var(--pst-icon-exclamation-circle);--pst-icon-versionmodified-changed:var(--pst-icon-exclamation-circle);--pst-icon-versionmodified-deprecated:var(--pst-icon-exclamation-circle);font-size:var(--pst-font-size-base);scroll-padding-top:calc(var(--pst-header-height) + 1rem)}body{background-color:var(--pst-color-background);color:var(--pst-color-text-base);display:flex;flex-direction:column;font-family:var(--pst-font-family-base);font-weight:400;line-height:1.65;min-height:100vh}body::-webkit-scrollbar-track{background:var(--pst-color-background)}p{color:var(--pst-color-text-base);font-size:1em;margin-bottom:1.15rem}p.rubric{border-bottom:1px solid var(--pst-color-border)}p.centered{text-align:center}a{word-wrap:break-word;color:var(--pst-color-link);text-decoration:underline;text-decoration-thickness:max(1px,.0625rem);text-underline-offset:.1578em}a:hover{text-decoration-skip:none;color:var(--pst-color-link-hover);text-decoration-skip-ink:none;text-decoration-thickness:max(3px,.1875rem,.12em)}a:active,a:visited{color:var(--pst-color-link)}a:visited:hover{color:var(--pst-color-link-hover)}a:focus-visible{outline:2px solid var(--pst-color-accent)}a.headerlink{color:var(--pst-color-secondary);font-size:.8em;margin-left:.2em;opacity:.7;padding:0 4px;text-decoration:none;transition:all .2s ease-out;user-select:none}a.headerlink:hover{opacity:1}a.github:before,a.gitlab:before{color:var(--pst-color-text-muted);font:var(--fa-font-brands);margin-right:.25rem}a.github:before{content:var(--pst-icon-github)}a.gitlab:before{content:var(--pst-icon-gitlab)}.heading-style,h1,h2,h3,h4,h5,h6{font-family:var(--pst-font-family-heading);font-weight:var(--pst-font-weight-heading);line-height:1.15;margin:2.75rem 0 1.05rem}h1{font-size:var(--pst-font-size-h1);margin-top:0}h1,h2{color:var(--pst-heading-color)}h2{font-size:var(--pst-font-size-h2)}h3{font-size:var(--pst-font-size-h3)}h3,h4{color:var(--pst-heading-color)}h4{font-size:var(--pst-font-size-h4)}h5{font-size:var(--pst-font-size-h5)}h5,h6{color:var(--pst-color-text-base)}h6{font-size:var(--pst-font-size-h6)}.text_small,small{font-size:var(--pst-font-size-milli)}hr{border:0;border-top:1px solid var(--pst-color-border)}code,kbd,pre,samp{font-family:var(--pst-font-family-monospace)}kbd{background-color:var(--pst-color-on-background);color:var(--pst-color-text-muted)}kbd:not(.compound){border:1px solid var(--pst-color-border);box-shadow:1px 1px 1px var(--pst-color-shadow);margin:0 .1rem;padding:.1rem .4rem}code{color:var(--pst-color-inline-code)}pre{background-color:var(--pst-color-surface);border:1px solid var(--pst-color-border);border-radius:.25rem;color:var(--pst-color-text-base);line-height:1.2em;margin:1.5em 0;padding:1rem}pre .linenos{opacity:.8;padding-right:10px}#pst-back-to-top{background-color:var(--pst-color-secondary);border:none;color:var(--pst-color-secondary-text);display:none;left:50vw;position:fixed;top:80vh;transform:translate(-50%);z-index:1080}.skip-link{background-color:var(--pst-color-warning);border-bottom:1px solid var(--pst-color-border);color:var(--pst-color-warning-text)!important;left:0;padding:.5rem;position:fixed;right:0;text-align:center;top:0;transform:translateY(-100%);transition:transform .15s ease-in-out;z-index:1055}.skip-link:focus{outline:3px solid #14181e;transform:translateY(0)}.bd-container{display:flex;flex-grow:1;justify-content:center}.bd-container .bd-container__inner{display:flex}.bd-page-width{width:100%}@media(min-width:960px){.bd-page-width{max-width:88rem}}.bd-header-announcement,.bd-header-version-warning{align-items:center;display:flex;justify-content:center;min-height:3rem;padding:.5rem 12.5%;position:relative;text-align:center;width:100%}@media(max-width:959.98px){.bd-header-announcement,.bd-header-version-warning{padding:.5rem 2%}}.bd-header-announcement p,.bd-header-version-warning p{font-weight:700;margin:0}.bd-header-announcement:after,.bd-header-version-warning:after{content:"";height:100%;left:0;position:absolute;top:0;width:100%;z-index:-1}.bd-header-announcement:empty,.bd-header-version-warning:empty{display:none}.bd-header-announcement a,.bd-header-version-warning a{color:var(--pst-color-inline-code-links)}.bd-header-announcement:after{background-color:var(--pst-color-secondary-bg)}.bd-header-version-warning:after{background-color:var(--pst-color-danger-bg)}.bd-main{display:flex;flex-direction:column;flex-grow:1;min-width:0}.bd-main .bd-content{display:flex;height:100%;justify-content:center}.bd-main .bd-content .bd-article-container{display:flex;flex-direction:column;justify-content:start;max-width:60em;overflow-x:auto;padding:1rem;width:100%}@media(min-width:1200px){.bd-main .bd-content .bd-article-container .bd-article{padding-left:2rem;padding-top:1.5rem}}.bd-footer{border-top:1px solid var(--pst-color-border);width:100%}.bd-footer .bd-footer__inner{display:flex;flex-grow:1;margin:auto;padding:1rem}.bd-footer .footer-items__center,.bd-footer .footer-items__end,.bd-footer .footer-items__start{display:flex;flex-direction:column;flex-grow:1;gap:.5rem;justify-content:center}.bd-footer .footer-items__center{text-align:center}.bd-footer .footer-items__end{text-align:end}.bd-footer .footer-item p{margin-bottom:0}.bd-footer-article{margin-top:auto}.bd-footer-article .footer-article-items{display:flex;flex-direction:column}.bd-footer-content .footer-content-items{display:flex;flex-direction:column;margin-top:auto}.bd-header{background:var(--pst-color-on-background)!important;box-shadow:0 .125rem .25rem 0 var(--pst-color-shadow);justify-content:center;max-width:100vw;padding:0;position:sticky;top:0;width:100%;z-index:1030}.bd-header .bd-header__inner{align-items:center;display:flex;height:fit-content;padding-left:1rem;padding-right:1rem}.bd-header .navbar-item{align-items:center;display:flex;height:var(--pst-header-height);max-height:var(--pst-header-height)}.bd-header .navbar-header-items{flex-shrink:1}@media(min-width:960px){.bd-header .navbar-header-items{display:flex;flex-grow:1;padding:0 0 0 .5rem}}.bd-header .navbar-header-items__center,.bd-header .navbar-header-items__end,.bd-header .navbar-header-items__start{align-items:center;display:flex;flex-flow:wrap;row-gap:0}.bd-header .navbar-header-items__center,.bd-header .navbar-header-items__end{column-gap:1rem}.bd-header .navbar-header-items__start{flex-shrink:0;gap:.5rem;margin-right:auto}.bd-header .navbar-header-items__end{justify-content:end}.bd-header .navbar-nav{display:flex}@media(min-width:960px){.bd-header .navbar-nav{align-items:center}}.bd-header .navbar-nav li a.nav-link{color:var(--pst-color-text-muted);text-decoration:none}.bd-header .navbar-nav li a.nav-link:hover{text-decoration-skip:none;color:var(--pst-color-link-hover);text-decoration:underline;text-decoration-skip-ink:none;text-decoration-thickness:max(1px,.0625rem);text-decoration-thickness:max(3px,.1875rem,.12em);text-underline-offset:.1578em}.bd-header .navbar-nav li a.nav-link:focus-visible{outline:2px solid var(--pst-color-accent)}.bd-header .navbar-nav>.current>.nav-link{border-bottom:max(3px,.1875rem,.12em) solid var(--pst-color-primary);color:var(--pst-color-primary);font-weight:600}.bd-header .navbar-nav .dropdown button{border:none;color:var(--pst-color-text-muted);display:unset}.bd-header .navbar-nav .dropdown button:hover{text-decoration-skip:none;color:var(--pst-color-link-hover);text-decoration:underline;text-decoration-skip-ink:none;text-decoration-thickness:max(1px,.0625rem);text-decoration-thickness:max(3px,.1875rem,.12em);text-underline-offset:.1578em}.bd-header .navbar-nav .dropdown button:focus-visible{outline:2px solid var(--pst-color-accent)}.bd-header .navbar-nav .dropdown .dropdown-menu{background-color:var(--pst-color-on-background);border:1px solid var(--pst-color-border);box-shadow:0 0 .3rem .1rem var(--pst-color-shadow);margin:.5rem 0;min-width:20rem;padding:.5rem 0;z-index:1070}.bd-header .navbar-nav .dropdown .dropdown-menu .dropdown-item{padding:.25rem 1.5rem}.bd-header .navbar-nav .dropdown .dropdown-menu .dropdown-item:focus:not(:hover):not(:active){background-color:inherit}.bd-header .navbar-nav .dropdown .dropdown-menu:not(.show){display:none}@media(min-width:960px){.navbar-center-items .navbar-item{display:inline-block}}.nav-link{transition:none}.nav-link:hover{text-decoration-skip:none;color:var(--pst-color-link-hover);text-decoration:underline;text-decoration-skip-ink:none;text-decoration-thickness:max(1px,.0625rem);text-decoration-thickness:max(3px,.1875rem,.12em);text-underline-offset:.1578em}.nav-link.nav-external:after{content:var(--pst-icon-external-link);font:var(--fa-font-solid);font-size:.75em;margin-left:.3em}.bd-navbar-elements li.nav-item i{font-size:.7rem;padding-left:2px;vertical-align:middle}.bd-header label.sidebar-toggle{align-items:center;color:var(--pst-color-muted);cursor:pointer;display:flex;font-size:var(--pst-font-size-icon);margin-bottom:0;padding-bottom:.25rem}.bd-header label.primary-toggle{margin-right:1rem}@media(min-width:960px){.bd-header label.primary-toggle{display:none}}.bd-header label.secondary-toggle{margin-left:1rem}@media(min-width:1200px){.bd-header label.secondary-toggle{display:none}}.bd-header label:hover{box-shadow:0 max(3px,.1875rem,.12em) 0 var(--pst-color-link-hover);color:var(--pst-color-link-hover)}.bd-header label:focus-visible{outline:2px solid var(--pst-color-accent)}.bd-header .navbar-header-items{display:none}@media(min-width:960px){.bd-header .navbar-header-items{display:inherit}}.navbar-persistent--mobile{margin-left:auto}@media(min-width:960px){.navbar-persistent--mobile{display:none}}.navbar-persistent--container{display:none}@media(min-width:960px){.navbar-persistent--container{display:flex}}.header-article__inner{display:flex;padding:0 .5rem}.header-article__inner .header-article-item{height:var(--pst-header-article-height);min-height:var(--pst-header-article-height)}.header-article__inner .header-article-items__end,.header-article__inner .header-article-items__start{align-items:start;display:flex;gap:.5rem}.header-article__inner .header-article-items__end{margin-left:auto}.bd-sidebar-primary{background-color:var(--pst-color-background);border-right:1px solid var(--pst-color-border);display:flex;flex:0 0 auto;flex-direction:column;font-size:var(--pst-sidebar-font-size-mobile);gap:1rem;max-height:calc(100vh - var(--pst-header-height));overflow-y:auto;padding:2rem 1rem 1rem;position:sticky;top:var(--pst-header-height);width:25%}@media(min-width:960px){.bd-sidebar-primary{font-size:var(--pst-sidebar-font-size)}}.bd-sidebar-primary .nav-link{font-size:var(--pst-sidebar-font-size-mobile)}.bd-sidebar-primary.no-sidebar{border-right:0}@media(min-width:960px){.bd-sidebar-primary.hide-on-wide{display:none}}.bd-sidebar-primary h1,.bd-sidebar-primary h2,.bd-sidebar-primary h3,.bd-sidebar-primary h4{color:var(--pst-color-text-base)}.bd-sidebar-primary .sidebar-primary-items__end .sidebar-primary-item,.bd-sidebar-primary .sidebar-primary-items__start .sidebar-primary-item{padding:.5rem 0}.bd-sidebar-primary .sidebar-header-items{display:flex;flex-direction:column}.bd-sidebar-primary .sidebar-header-items .sidebar-header-items__title{color:var(--pst-color-text-base);font-size:var(--pst-sidebar-header-font-size);font-weight:var(--pst-sidebar-header-font-weight);margin-bottom:.5rem}.bd-sidebar-primary .sidebar-header-items .nav-item.dropdown button{display:none}.bd-sidebar-primary .sidebar-header-items .nav-item.dropdown .dropdown-menu{background-color:inherit;border:none;display:flex;flex-direction:column;font-size:inherit;margin:0;padding:0}.bd-sidebar-primary .sidebar-header-items .sidebar-header-items__center{display:flex;flex-direction:column}.bd-sidebar-primary .sidebar-header-items .sidebar-header-items__end{align-items:center;display:flex;gap:.5rem}@media(min-width:960px){.bd-sidebar-primary .sidebar-header-items{display:none}}.bd-sidebar-primary .sidebar-primary-items__start{border-top:1px solid var(--pst-color-border)}@media(min-width:960px){.bd-sidebar-primary .sidebar-primary-items__start{border-top:none}}.bd-sidebar-primary .sidebar-primary-items__end{margin-bottom:1em;margin-top:auto}.bd-sidebar-primary .list-caption{list-style:none;padding-left:0}.bd-sidebar-primary li{position:relative}.bd-sidebar-primary li.has-children>.reference{padding-right:30px}.bd-sidebar-primary label.toctree-toggle{align-items:center;cursor:pointer;display:flex;height:30px;justify-content:center;position:absolute;right:0;top:0;width:30px}.bd-sidebar-primary label.toctree-toggle:hover{background:var(--pst-color-surface)}.bd-sidebar-primary label.toctree-toggle i{display:inline-block;font-size:.75rem;text-align:center}.bd-sidebar-primary label.toctree-toggle i:hover{color:var(--pst-color-primary)}.bd-sidebar-primary .label-parts{height:100%;width:100%}.bd-sidebar-primary .label-parts:hover{background:none}.bd-sidebar-primary .label-parts i{position:absolute;right:0;top:.3em;width:30px}nav.bd-links{margin-right:-1rem}@media(min-width:960px){nav.bd-links{display:block}}nav.bd-links ul{list-style:none}nav.bd-links ul ul{padding:0 0 0 1rem}nav.bd-links li>a{box-shadow:none;color:var(--pst-color-text-muted);display:block;padding:.25rem .65rem;text-decoration:none}nav.bd-links li>a:hover{text-decoration-skip:none;background-color:transparent;text-decoration:underline;text-decoration-skip-ink:none;text-decoration-thickness:max(3px,.1875rem,.12em)}nav.bd-links li>a:active,nav.bd-links li>a:hover{color:var(--pst-color-link-hover)}nav.bd-links li>a.reference.external:after{content:var(--pst-icon-external-link);font:var(--fa-font-solid);font-size:.75em;margin-left:.3em}nav.bd-links .current>a{background-color:transparent;box-shadow:inset max(3px,.1875rem,.12em) 0 0 var(--pst-color-primary);color:var(--pst-color-primary);font-weight:600}nav.bd-links p.bd-links__title{font-size:var(--pst-sidebar-header-font-size)}nav.bd-links p.bd-links__title,nav.bd-links p.caption{font-weight:var(--pst-sidebar-header-font-weight);margin-bottom:.5rem}nav.bd-links p.caption{color:var(--pst-color-text-base);font-size:var(--pst-sidebar-font-size-mobile);margin-top:1.25rem;position:relative}nav.bd-links p.caption:first-child{margin-top:0}@media(min-width:960px){nav.bd-links p.caption{font-size:var(--pst-sidebar-font-size)}}.bd-sidebar-secondary{background-color:var(--pst-color-background);display:flex;flex-direction:column;flex-shrink:0;font-size:var(--pst-sidebar-font-size-mobile);max-height:calc(100vh - var(--pst-header-height));order:2;overflow-y:auto;padding:2rem 1rem 1rem;position:sticky;top:var(--pst-header-height);width:var(--pst-sidebar-secondary)}@media(min-width:1200px){.bd-sidebar-secondary{font-size:var(--pst-sidebar-font-size)}}.sidebar-secondary-item{padding:.5rem}@media(min-width:1200px){.sidebar-secondary-item{border-left:1px solid var(--pst-color-border);padding-left:1rem}}.sidebar-secondary-item i{padding-right:.5rem}input.sidebar-toggle{display:none}label.overlay{background-color:#000;height:0;left:0;opacity:.5;position:fixed;top:0;transition:opacity .2s ease-out;width:0;z-index:1050}input#__primary:checked+label.overlay.overlay-primary,input#__secondary:checked+label.overlay.overlay-secondary{height:100vh;width:100vw}input#__primary:checked~.bd-container .bd-sidebar-primary{margin-left:0;visibility:visible}input#__secondary:checked~.bd-container .bd-sidebar-secondary{margin-right:0;visibility:visible}@media(min-width:960px){label.sidebar-toggle.primary-toggle{display:none}input#__primary:checked+label.overlay.overlay-primary{height:0;width:0}.bd-sidebar-primary{margin-left:0;visibility:visible}}@media(max-width:959.98px){.bd-sidebar-primary{flex-grow:.75;height:100vh;left:0;margin-left:-75%;max-height:100vh;max-width:350px;position:fixed;top:0;transition:visibility .2s ease-out,margin .2s ease-out;visibility:hidden;width:75%;z-index:1055}}@media(max-width:1199.98px){.bd-sidebar-secondary{flex-grow:.75;height:100vh;margin-right:-75%;max-height:100vh;max-width:350px;position:fixed;right:0;top:0;transition:visibility .2s ease-out,margin .2s ease-out;visibility:hidden;width:75%;z-index:1055}}ul.bd-breadcrumbs{display:flex;flex-wrap:wrap;font-size:.8rem;list-style:none;padding-left:0}ul.bd-breadcrumbs li.breadcrumb-item{align-items:baseline;display:flex;font-weight:700}ul.bd-breadcrumbs li.breadcrumb-item a{color:var(--pst-color-text-muted);text-decoration:none}ul.bd-breadcrumbs li.breadcrumb-item a:hover{text-decoration-skip:none;color:var(--pst-color-link-hover);text-decoration:underline;text-decoration-skip-ink:none;text-decoration-thickness:max(1px,.0625rem);text-decoration-thickness:max(3px,.1875rem,.12em);text-underline-offset:.1578em}ul.bd-breadcrumbs li.breadcrumb-item a:focus-visible{outline:2px solid var(--pst-color-accent)}ul.bd-breadcrumbs li.breadcrumb-item:not(.breadcrumb-home):before{color:var(--pst-color-text-muted);content:var(--pst-breadcrumb-divider);font:var(--fa-font-solid);font-size:.8rem;padding:0 .5rem}.navbar-icon-links{column-gap:1rem;display:flex;flex-direction:row;flex-wrap:wrap}.navbar-icon-links li.nav-item a.nav-link{padding-left:0;padding-right:0}.navbar-icon-links li.nav-item a.nav-link:hover{box-shadow:0 max(3px,.1875rem,.12em) 0 var(--pst-color-link-hover);color:var(--pst-color-link-hover)}.navbar-icon-links a span{align-items:center;display:flex}.navbar-icon-links i.fa-brands,.navbar-icon-links i.fa-regular,.navbar-icon-links i.fa-solid{font-size:var(--pst-font-size-icon);font-style:normal;vertical-align:middle}.navbar-icon-links i.fa-square-twitter:before{color:#55acee}.navbar-icon-links i.fa-square-gitlab:before{color:#548}.navbar-icon-links i.fa-bitbucket:before{color:#0052cc}.navbar-icon-links img.icon-link-image{border-radius:.2rem;height:1.5em}.navbar-brand{align-items:center;display:flex;flex-shrink:0;gap:.5rem;height:var(--pst-header-height);margin:0;max-height:var(--pst-header-height);padding:.5rem 0;position:relative;width:auto}.navbar-brand p{margin-bottom:0}.navbar-brand img{height:100%;max-width:100%;width:auto}.navbar-brand a{text-decoration:none}.navbar-brand:hover:hover,.navbar-brand:visited:hover:hover{text-decoration-skip:none;color:var(--pst-color-link-hover);text-decoration:underline;text-decoration-skip-ink:none;text-decoration-thickness:max(1px,.0625rem);text-decoration-thickness:max(3px,.1875rem,.12em);text-underline-offset:.1578em}.navbar-nav ul{display:block;list-style:none}.navbar-nav ul ul{padding:0 0 0 1rem}.navbar-nav li{display:flex;flex-direction:column}.navbar-nav li a{align-items:center;color:var(--pst-color-text-muted);display:flex;height:100%;padding-bottom:.25rem;padding-top:.25rem;text-decoration:none}.navbar-nav li a:hover{text-decoration-skip:none;color:var(--pst-color-link-hover);text-decoration:underline;text-decoration-skip-ink:none;text-decoration-thickness:max(1px,.0625rem);text-decoration-thickness:max(3px,.1875rem,.12em);text-underline-offset:.1578em}.navbar-nav li a:focus-visible{outline:2px solid var(--pst-color-accent)}.navbar-nav .toctree-checkbox{display:none;position:absolute}.navbar-nav .toctree-checkbox~ul{display:none}.navbar-nav .toctree-checkbox~label i{transform:rotate(0deg)}.navbar-nav .toctree-checkbox:checked~ul{display:block}.navbar-nav .toctree-checkbox:checked~label i{transform:rotate(180deg)}.bd-header .navbar-nav>p.sidebar-header-items__title{display:none}.page-toc .section-nav{border-bottom:none;padding-left:0}.page-toc .section-nav ul{padding-left:1rem}.page-toc .nav-link{font-size:var(--pst-sidebar-font-size-mobile)}@media(min-width:1200px){.page-toc .nav-link{font-size:var(--pst-sidebar-font-size)}}.page-toc .onthispage{color:var(--pst-color-text-base);font-weight:var(--pst-sidebar-header-font-weight);margin-bottom:.5rem}.prev-next-area{width:100%}.prev-next-area p{line-height:1.3em;margin:0 .3em}.prev-next-area i{font-size:1.2em}.prev-next-area a{align-items:center;border:none;color:var(--pst-color-text-muted);display:flex;max-width:45%;overflow-x:hidden;padding:10px;text-decoration:none}.prev-next-area a p.prev-next-title{word-wrap:break-word;color:var(--pst-color-link);font-size:1.1em;font-weight:var(--pst-admonition-font-weight-heading);text-decoration:underline;text-decoration-thickness:max(1px,.0625rem);text-underline-offset:.1578em}.prev-next-area a p.prev-next-title:hover{text-decoration-skip:none;color:var(--pst-color-link-hover);text-decoration-skip-ink:none;text-decoration-thickness:max(3px,.1875rem,.12em)}.prev-next-area a p.prev-next-title:active,.prev-next-area a p.prev-next-title:visited{color:var(--pst-color-link)}.prev-next-area a p.prev-next-title:visited:hover{color:var(--pst-color-link-hover)}.prev-next-area a p.prev-next-title:focus-visible{outline:2px solid var(--pst-color-accent)}.prev-next-area a:hover p.prev-next-title:hover{text-decoration-skip:none;color:var(--pst-color-link-hover);text-decoration:underline;text-decoration-skip-ink:none;text-decoration-thickness:max(1px,.0625rem);text-decoration-thickness:max(3px,.1875rem,.12em);text-underline-offset:.1578em}.prev-next-area a:visited p.prev-next-title{color:var(--pst-color-link)}.prev-next-area a:visited p.prev-next-title:hover{color:var(--pst-color-link-hover)}.prev-next-area a .prev-next-info{flex-direction:column;margin:0 .5em}.prev-next-area a .prev-next-info .prev-next-subtitle{text-transform:capitalize}.prev-next-area a.left-prev{float:left}.prev-next-area a.right-next{float:right}.prev-next-area a.right-next div.prev-next-info{text-align:right}.bd-search{border:1px solid var(--pst-color-border);border-radius:.25rem;color:var(--pst-color-text-base);gap:.5rem;padding-left:.5rem;position:relative}.bd-search,.bd-search:active{background-color:var(--pst-color-background)}.bd-search:active{color:var(--pst-color-text-muted)}.bd-search .icon{color:var(--pst-color-border);left:25px;position:absolute}.bd-search .fa-solid.fa-magnifying-glass{color:var(--pst-color-text-muted);left:calc(1.25rem - .35em);position:absolute}.bd-search input::placeholder{color:var(--pst-color-text-muted)}.bd-search input::-webkit-search-cancel-button,.bd-search input::-webkit-search-decoration{-webkit-appearance:none;appearance:none}.bd-search .search-button__kbd-shortcut{color:var(--pst-color-border);display:flex;position:absolute;right:.5rem}.form-control{background-color:var(--pst-color-background);color:var(--pst-color-text-base)}.form-control:focus,.form-control:focus-visible{background-color:var(--pst-color-background);border:none;box-shadow:none;color:var(--pst-color-text-muted);outline:3px solid var(--pst-color-accent)}.search-button{align-content:center;align-items:center;border-radius:0;color:var(--pst-color-text-muted);display:flex;padding:0 0 .25rem}.search-button:hover{box-shadow:0 max(3px,.1875rem,.12em) 0 var(--pst-color-link-hover);color:var(--pst-color-link-hover)}.search-button:focus-visible{outline:2px solid var(--pst-color-accent)}.search-button i{font-size:1.3rem}.search-button__overlay,.search-button__search-container{display:none}.search-button__wrapper.show .search-button__search-container{display:flex;left:50%;margin-top:.5rem;max-width:800px;position:fixed;right:1rem;top:30%;transform:translate(-50%,-50%);width:90%;z-index:1055}.search-button__wrapper.show .search-button__overlay{background-color:#000;display:flex;height:100%;left:0;opacity:.5;position:fixed;top:0;width:100%;z-index:1050}.search-button__wrapper.show form.bd-search{flex-grow:1;padding-bottom:0;padding-top:0}.search-button__wrapper.show input,.search-button__wrapper.show svg{font-size:var(--pst-font-size-icon)}.search-button-field{align-items:center;background-color:var(--pst-color-surface);border:1px solid var(--pst-color-border);border-radius:1.5em;color:var(--pst-color-text-muted);display:inline-flex;padding:.5em}.search-button-field:hover{border:2px solid var(--pst-color-link-hover)}.search-button-field:focus-visible{border:2px solid var(--pst-color-accent)}.search-button-field .search-button__default-text{font-size:var(--bs-nav-link-font-size);font-weight:var(--bs-nav-link-font-weight);margin-left:.5em;margin-right:.5em}.search-button-field .kbd-shortcut__modifier{font-size:.75em}.search-button-field>*{align-items:center}.search-button-field>:not(svg){display:none}@media(min-width:960px){.search-button-field>:not(svg){display:flex}}div#searchbox p.highlight-link{box-shadow:0 .2rem .5rem var(--pst-color-shadow),0 0 .0625rem var(--pst-color-shadow)!important;margin:1rem 0;width:fit-content}@media(min-width:1200px){div#searchbox p.highlight-link{margin-left:2rem}}div#searchbox p.highlight-link a{background-color:var(--pst-color-primary);border-radius:.25rem;color:var(--pst-color-primary-text);font-size:1.25rem;padding:.75rem;text-decoration:none;transition:box-shadow .25s ease-out}div#searchbox p.highlight-link a:hover{box-shadow:inset 0 0 50px 50px rgba(0,0,0,.25)}div#searchbox p.highlight-link a:before{color:unset;content:var(--pst-icon-search-minus);font:var(--fa-font-solid);margin-right:.5rem}.theme-switch-button{border-radius:0;color:var(--pst-color-text-muted);margin:0 -.5rem;padding:0}.theme-switch-button:focus-visible{outline:2px solid var(--pst-color-accent)}.theme-switch-button span{display:none;padding:.5em}.theme-switch-button span:hover{box-shadow:0 max(3px,.1875rem,.12em) 0 var(--pst-color-link-hover);color:var(--pst-color-link-hover)}.theme-switch-button span:active{color:var(--pst-color-link-hover);text-decoration:none}html[data-mode=auto] .theme-switch-button span[data-mode=auto],html[data-mode=dark] .theme-switch-button span[data-mode=dark],html[data-mode=light] .theme-switch-button span[data-mode=light]{display:flex}button.btn.version-switcher__button{border-color:var(--pst-color-border);color:var(--pst-color-text-base);margin-bottom:1em}@media(min-width:960px){button.btn.version-switcher__button{margin-bottom:unset}}button.btn.version-switcher__button:hover{text-decoration-skip:none;color:var(--pst-color-link-hover);text-decoration:underline;text-decoration-skip-ink:none;text-decoration-thickness:max(1px,.0625rem);text-decoration-thickness:max(3px,.1875rem,.12em);text-underline-offset:.1578em}button.btn.version-switcher__button:focus-visible{outline:2px solid var(--pst-color-accent)}button.btn.version-switcher__button:active{border-color:var(--pst-color-border);color:var(--pst-color-text-base)}.version-switcher__menu{border-color:var(--pst-color-border);border-radius:var(--bs-dropdown-border-radius)}.version-switcher__menu a.list-group-item{background-color:var(--pst-color-on-background);color:var(--pst-color-text-base);padding:.75rem 1.25rem}.version-switcher__menu a.list-group-item:not(:last-child){border-bottom:1px solid var(--pst-color-border)}.version-switcher__menu a.list-group-item:hover{text-decoration-skip:none;background-color:var(--pst-color-surface);color:var(--pst-color-link-hover);text-decoration:underline;text-decoration-skip-ink:none;text-decoration-thickness:max(1px,.0625rem);text-decoration-thickness:max(3px,.1875rem,.12em);text-underline-offset:.1578em}.version-switcher__menu a.list-group-item.active{box-shadow:inset max(3px,.1875rem,.12em) 0 0 var(--pst-color-primary);color:var(--pst-color-primary);font-weight:600;position:relative;z-index:1}.version-switcher__menu a.list-group-item.active span:before{content:"";height:100%;left:0;position:absolute;top:0;width:100%;z-index:-1}.version-switcher__menu,button.version-switcher__button{font-size:1.1em;z-index:1055}@media(min-width:960px){.version-switcher__menu,button.version-switcher__button{font-size:unset}}nav.page-toc{margin-bottom:1rem}.bd-toc .nav .nav,.list-caption .nav{display:none}.bd-toc .nav .nav.visible,.bd-toc .nav>.active>ul,.list-caption .nav.visible,.list-caption>.active>ul,.toc-entry{display:block}.toc-entry a.nav-link,.toc-entry a>code{color:var(--pst-color-text-muted)}.toc-entry a.nav-link{display:block;margin-left:-1rem;padding:.125rem 0 .125rem 1rem;text-decoration:none}.toc-entry a.nav-link:hover{text-decoration-skip:none;background-color:transparent;text-decoration:underline;text-decoration-skip-ink:none;text-decoration-thickness:max(3px,.1875rem,.12em)}.toc-entry a.nav-link:active,.toc-entry a.nav-link:hover{color:var(--pst-color-link-hover)}.toc-entry a.nav-link.active{background-color:transparent;box-shadow:inset max(3px,.1875rem,.12em) 0 0 var(--pst-color-primary);color:var(--pst-color-primary);font-weight:600}.toc-entry a.nav-link.active:hover{color:var(--pst-color-link-hover)}div.deprecated,div.versionadded,div.versionchanged{background-color:var(--pst-color-on-background);border-left:.2rem solid;border-color:var(--pst-color-info);border-radius:.25rem;box-shadow:0 .2rem .5rem var(--pst-color-shadow),0 0 .0625rem var(--pst-color-shadow)!important;margin:1.5625em auto;overflow:hidden;padding:0 .6rem;page-break-inside:avoid;position:relative;vertical-align:middle}div.deprecated>p,div.versionadded>p,div.versionchanged>p{margin-bottom:.6rem;margin-top:.6rem}div.versionadded{background-color:var(--pst-color-success-bg);border-color:var(--pst-color-success)}div.versionchanged{background-color:var(--pst-color-warning-bg);border-color:var(--pst-color-warning)}div.deprecated{background-color:var(--pst-color-danger-bg);border-color:var(--pst-color-danger)}span.versionmodified{font-weight:600}span.versionmodified:before{color:var(--pst-color-info);content:var(--pst-icon-versionmodified-default);font:var(--fa-font-solid);margin-right:.6rem}span.versionmodified.added:before{color:var(--pst-color-success);content:var(--pst-icon-versionmodified-added)}span.versionmodified.changed:before{color:var(--pst-color-warning);content:var(--pst-icon-versionmodified-changed)}span.versionmodified.deprecated:before{color:var(--pst-color-danger);content:var(--pst-icon-versionmodified-deprecated)}.sidebar-indices-items{border-top:1px solid var(--pst-color-border);display:flex;flex-direction:column}@media(min-width:960px){.sidebar-indices-items{border-top:none}}.sidebar-indices-items .sidebar-indices-items__title{color:var(--pst-color-text-base);font-size:var(--pst-sidebar-header-font-size);font-weight:var(--pst-sidebar-header-font-weight);margin-bottom:.5rem}.sidebar-indices-items ul.indices-link{list-style:none;margin-right:-1rem;padding:0}.sidebar-indices-items ul.indices-link li>a{color:var(--pst-color-text-muted);display:block;padding:.25rem 0}.sidebar-indices-items ul.indices-link li>a:hover{background-color:transparent;color:var(--pst-color-primary);text-decoration:none}.bd-sidebar-primary div#rtd-footer-container{bottom:-1rem;margin:-1rem;position:sticky}.bd-sidebar-primary div#rtd-footer-container .rst-versions.rst-badge{font-family:var(--pst-font-family-base);font-size:.9em;max-width:unset;position:unset}.bd-sidebar-primary div#rtd-footer-container .rst-versions.rst-badge .rst-current-version{align-items:center;background-color:var(--pst-color-background);border-top:1px solid var(--pst-color-border);color:var(--pst-color-success);display:flex;gap:.2rem;height:2.5rem;transition:background-color .2s ease-out}.bd-sidebar-primary div#rtd-footer-container .rst-versions.rst-badge .fa.fa-book{color:var(--pst-color-text-muted);margin-right:auto}.bd-sidebar-primary div#rtd-footer-container .rst-versions.rst-badge .fa.fa-book:after{color:var(--pst-color-text-base);content:"Read The Docs";font-family:var(--pst-font-family-base);font-weight:var(--pst-admonition-font-weight-heading)}.bd-sidebar-primary div#rtd-footer-container .rst-versions.rst-badge .fa.fa-caret-down{color:var(--pst-color-text-muted)}.bd-sidebar-primary div#rtd-footer-container .rst-versions.rst-badge.shift-up .rst-current-version{border-bottom:1px solid var(--pst-color-border)}.bd-sidebar-primary div#rtd-footer-container .rst-other-versions{background-color:var(--pst-color-surface);color:var(--pst-color-text-base)}.bd-sidebar-primary div#rtd-footer-container .rst-other-versions dl dd a{color:var(--pst-color-text-muted)}.bd-sidebar-primary div#rtd-footer-container .rst-other-versions hr{background-color:var(--pst-color-border)}.bd-sidebar-primary div#rtd-footer-container .rst-other-versions small a{color:var(--pst-color-link)}.bd-sidebar-primary div#rtd-footer-container .rst-other-versions input{background-color:var(--pst-color-surface);border:1px solid var(--pst-color-border);padding-left:.5rem}.admonition,div.admonition{background-color:var(--pst-color-on-background);border-left:.2rem solid;border-color:var(--pst-color-info);border-radius:.25rem;box-shadow:0 .2rem .5rem var(--pst-color-shadow),0 0 .0625rem var(--pst-color-shadow)!important;margin:1.5625em auto;overflow:hidden;padding:0 .6rem .8rem;page-break-inside:avoid}.admonition :last-child,div.admonition :last-child{margin-bottom:0}.admonition p.admonition-title~*,div.admonition p.admonition-title~*{margin-left:1.4rem;margin-right:1.4rem}.admonition>ol,.admonition>ul,div.admonition>ol,div.admonition>ul{margin-left:1em}.admonition>.admonition-title,div.admonition>.admonition-title{font-weight:var(--pst-admonition-font-weight-heading);margin:0 -.6rem;padding:.4rem .6rem .4rem 2rem;position:relative;z-index:1}.admonition>.admonition-title:before,div.admonition>.admonition-title:before{background-color:var(--pst-color-info-bg);content:"";height:100%;left:0;pointer-events:none;position:absolute;top:0;width:100%;z-index:-1}.admonition>.admonition-title:after,div.admonition>.admonition-title:after{color:var(--pst-color-info);content:var(--pst-icon-admonition-default);font:var(--fa-font-solid);height:1rem;left:.5rem;line-height:inherit;opacity:1;position:absolute;width:1rem}.admonition>.admonition-title+*,div.admonition>.admonition-title+*{margin-top:.4em}.admonition.attention,div.admonition.attention{border-color:var(--pst-color-attention)}.admonition.attention>.admonition-title:before,div.admonition.attention>.admonition-title:before{background-color:var(--pst-color-attention-bg)}.admonition.attention>.admonition-title:after,div.admonition.attention>.admonition-title:after{color:var(--pst-color-attention);content:var(--pst-icon-admonition-attention)}.admonition.caution,div.admonition.caution{border-color:var(--pst-color-warning)}.admonition.caution>.admonition-title:before,div.admonition.caution>.admonition-title:before{background-color:var(--pst-color-warning-bg)}.admonition.caution>.admonition-title:after,div.admonition.caution>.admonition-title:after{color:var(--pst-color-warning);content:var(--pst-icon-admonition-caution)}.admonition.warning,div.admonition.warning{border-color:var(--pst-color-warning)}.admonition.warning>.admonition-title:before,div.admonition.warning>.admonition-title:before{background-color:var(--pst-color-warning-bg)}.admonition.warning>.admonition-title:after,div.admonition.warning>.admonition-title:after{color:var(--pst-color-warning);content:var(--pst-icon-admonition-warning)}.admonition.danger,div.admonition.danger{border-color:var(--pst-color-danger)}.admonition.danger>.admonition-title:before,div.admonition.danger>.admonition-title:before{background-color:var(--pst-color-danger-bg)}.admonition.danger>.admonition-title:after,div.admonition.danger>.admonition-title:after{color:var(--pst-color-danger);content:var(--pst-icon-admonition-danger)}.admonition.error,div.admonition.error{border-color:var(--pst-color-danger)}.admonition.error>.admonition-title:before,div.admonition.error>.admonition-title:before{background-color:var(--pst-color-danger-bg)}.admonition.error>.admonition-title:after,div.admonition.error>.admonition-title:after{color:var(--pst-color-danger);content:var(--pst-icon-admonition-error)}.admonition.hint,div.admonition.hint{border-color:var(--pst-color-success)}.admonition.hint>.admonition-title:before,div.admonition.hint>.admonition-title:before{background-color:var(--pst-color-success-bg)}.admonition.hint>.admonition-title:after,div.admonition.hint>.admonition-title:after{color:var(--pst-color-success);content:var(--pst-icon-admonition-hint)}.admonition.tip,div.admonition.tip{border-color:var(--pst-color-success)}.admonition.tip>.admonition-title:before,div.admonition.tip>.admonition-title:before{background-color:var(--pst-color-success-bg)}.admonition.tip>.admonition-title:after,div.admonition.tip>.admonition-title:after{color:var(--pst-color-success);content:var(--pst-icon-admonition-tip)}.admonition.important,div.admonition.important{border-color:var(--pst-color-attention)}.admonition.important>.admonition-title:before,div.admonition.important>.admonition-title:before{background-color:var(--pst-color-attention-bg)}.admonition.important>.admonition-title:after,div.admonition.important>.admonition-title:after{color:var(--pst-color-attention);content:var(--pst-icon-admonition-important)}.admonition.note,div.admonition.note{border-color:var(--pst-color-info)}.admonition.note>.admonition-title:before,div.admonition.note>.admonition-title:before{background-color:var(--pst-color-info-bg)}.admonition.note>.admonition-title:after,div.admonition.note>.admonition-title:after{color:var(--pst-color-info);content:var(--pst-icon-admonition-note)}.admonition.seealso,div.admonition.seealso{border-color:var(--pst-color-success)}.admonition.seealso>.admonition-title:before,div.admonition.seealso>.admonition-title:before{background-color:var(--pst-color-success-bg)}.admonition.seealso>.admonition-title:after,div.admonition.seealso>.admonition-title:after{color:var(--pst-color-success);content:var(--pst-icon-admonition-seealso)}.admonition.admonition-todo,div.admonition.admonition-todo{border-color:var(--pst-color-secondary)}.admonition.admonition-todo>.admonition-title:before,div.admonition.admonition-todo>.admonition-title:before{background-color:var(--pst-color-secondary-bg)}.admonition.admonition-todo>.admonition-title:after,div.admonition.admonition-todo>.admonition-title:after{color:var(--pst-color-secondary);content:var(--pst-icon-admonition-todo)}.admonition.sidebar,div.admonition.sidebar{border-width:0 0 0 .2rem;clear:both;float:right;margin-left:.5rem;margin-top:0;max-width:40%}.admonition.sidebar.attention,.admonition.sidebar.important,div.admonition.sidebar.attention,div.admonition.sidebar.important{border-color:var(--pst-color-attention)}.admonition.sidebar.caution,.admonition.sidebar.warning,div.admonition.sidebar.caution,div.admonition.sidebar.warning{border-color:var(--pst-color-warning)}.admonition.sidebar.danger,.admonition.sidebar.error,div.admonition.sidebar.danger,div.admonition.sidebar.error{border-color:var(--pst-color-danger)}.admonition.sidebar.hint,.admonition.sidebar.seealso,.admonition.sidebar.tip,div.admonition.sidebar.hint,div.admonition.sidebar.seealso,div.admonition.sidebar.tip{border-color:var(--pst-color-success)}.admonition.sidebar.note,.admonition.sidebar.todo,div.admonition.sidebar.note,div.admonition.sidebar.todo{border-color:var(--pst-color-info)}.admonition.sidebar p.admonition-title~*,div.admonition.sidebar p.admonition-title~*{margin-left:0;margin-right:0}aside.topic,div.topic,div.topic.contents,nav.contents{background-color:var(--pst-color-surface);border-color:var(--pst-color-border);border-radius:.25rem;box-shadow:0 .2rem .5rem var(--pst-color-shadow),0 0 .0625rem var(--pst-color-shadow)!important;display:flex;flex-direction:column;padding:1rem 1.25rem}aside.topic .topic-title,div.topic .topic-title,div.topic.contents .topic-title,nav.contents .topic-title{margin:0 0 .5rem}aside.topic p,div.topic p,div.topic.contents p,nav.contents p{color:var(--pst-color-on-surface)!important}aside.topic ul.simple,div.topic ul.simple,div.topic.contents ul.simple,nav.contents ul.simple{padding-left:1rem}aside.topic ul.simple ul,div.topic ul.simple ul,div.topic.contents ul.simple ul,nav.contents ul.simple ul{padding-left:2em}aside.sidebar{background-color:var(--pst-color-surface);border:1px solid var(--pst-color-border);border-radius:.25rem;margin-left:.5rem;padding:0}aside.sidebar>:last-child{padding-bottom:1rem}aside.sidebar p.sidebar-title{border-bottom:1px solid var(--pst-color-border);font-family:var(--pst-font-family-heading);font-weight:var(--pst-admonition-font-weight-heading);margin-bottom:0;padding-bottom:.5rem;padding-top:.5rem;position:relative}aside.sidebar>:not(.sidebar-title):first-child,aside.sidebar>p.sidebar-title+*{margin-top:1rem}aside.sidebar>*{padding-left:1rem;padding-right:1rem}p.rubric{display:flex;flex-direction:column}.seealso dd{margin-bottom:0;margin-top:0}table.field-list{border-collapse:separate;border-spacing:10px;margin-left:1px}table.field-list th.field-name{background-color:var(--pst-color-surface);padding:1px 8px 1px 5px;white-space:nowrap}table.field-list td.field-body p{font-style:italic}table.field-list td.field-body p>strong{font-style:normal}table.field-list td.field-body blockquote{border-left:none;margin:0 0 .3em;padding-left:30px}.table.autosummary td:first-child{white-space:nowrap}.sig{font-family:var(--pst-font-family-monospace)}.sig-inline.c-texpr,.sig-inline.cpp-texpr{font-family:unset}.sig.c .k,.sig.c .kt,.sig.c .m,.sig.c .s,.sig.c .sc,.sig.cpp .k,.sig.cpp .kt,.sig.cpp .m,.sig.cpp .s,.sig.cpp .sc{color:var(--pst-color-text-base)}.sig-name{color:var(--pst-color-inline-code)}.sig-param .default_value,.sig-param .o{color:var(--pst-color-text-muted);font-weight:400}dt:target,span.highlighted{background-color:var(--pst-color-target)}.viewcode-back{font-family:var(--pst-font-family-base)}.viewcode-block:target{background-color:var(--pst-color-target);border-bottom:1px solid var(--pst-color-border);border-top:1px solid var(--pst-color-border);position:relative}dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) dd{margin-left:2rem}dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) dd>dl.simple>dt{display:flex}dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) dl.field-list{display:grid;grid-template-columns:unset}dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) dt.field-even,dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) dt.field-odd{background-color:var(--pst-color-surface);margin-bottom:.1rem;margin-top:.2rem}div.highlight,div.literal-block-wrapper,div[class*=highlight-]{border-radius:.25rem;display:flex;flex-direction:column;width:unset}div.literal-block-wrapper{border:1px solid var(--pst-color-border);border-radius:.25rem}div.literal-block-wrapper div.code-block-caption{border-bottom:1px solid var(--pst-color-border);font-size:1rem;font-weight:var(--pst-font-weight-caption);margin:0;padding:.5rem}div.literal-block-wrapper div.code-block-caption a.headerlink{font-size:inherit}div.literal-block-wrapper div[class*=highlight-]{border-radius:0;margin:0}div.literal-block-wrapper div[class*=highlight-] pre{border:none;box-shadow:none}code.literal{background-color:var(--pst-color-surface);border:1px solid var(--pst-color-border);border-radius:.25rem;padding:.1rem .25rem}a>code{color:var(--pst-color-inline-code-links)}html[data-theme=light] .highlight .nf{color:#0078a1!important}span.linenos{opacity:.8!important}figure a.headerlink{font-size:inherit;position:absolute}figure:hover a.headerlink{visibility:visible}figure figcaption{color:var(--pst-color-text-muted);font-family:var(--pst-font-family-heading);font-weight:var(--pst-font-weight-caption);margin-left:auto;margin-right:auto}figure figcaption table.table{margin-left:auto;margin-right:auto;width:fit-content}dt.label>span.brackets:not(:only-child):before{content:"["}dt.label>span.brackets:not(:only-child):after{content:"]"}a.footnote-reference{font-size:small;vertical-align:super}aside.footnote{margin-bottom:.5rem}aside.footnote:last-child{margin-bottom:1rem}aside.footnote span.backrefs,aside.footnote span.label{font-weight:700}aside.footnote:target{background-color:var(--pst-color-target)}div.doctest>div.highlight span.gp,span.linenos,table.highlighttable td.linenos{user-select:none;-webkit-user-select:text;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}dd{margin-bottom:10px;margin-left:30px;margin-top:3px}ol,ul{padding-inline-start:2rem}ol li>p:first-child,ul li>p:first-child{margin-bottom:.25rem;margin-top:.25rem}blockquote{border-left:.25em solid var(--pst-color-border);border-radius:.25rem;color:var(--pst-color-text-muted);padding:1em;position:relative}blockquote p{color:var(--pst-color-text-base)}blockquote .line-block{margin:0}blockquote p:last-child{margin-bottom:0}blockquote:before{background-color:var(--pst-color-on-background);content:"";height:100%;left:0;pointer-events:none;position:absolute;top:0;width:100%;z-index:-1}span.guilabel{border:1px solid var(--pst-color-info);border-radius:4px;color:var(--pst-color-info);font-size:80%;font-weight:700;margin:auto 2px;padding:2.4px 6px;position:relative}span.guilabel:before{background-color:var(--pst-color-info-bg);content:"";height:100%;left:0;pointer-events:none;position:absolute;top:0;width:100%;z-index:-1}a.reference.download:before{color:var(--pst-color-text-muted);content:var(--pst-icon-download);font:var(--fa-font-solid);font-size:.8em;padding:0 .25em}table{display:table;margin-left:auto;margin-right:auto;overflow:auto}table.table-right{margin-right:0}table.table-left{margin-left:0}table caption{caption-side:top;color:var(--pst-color-text-muted);text-align:center}td.text-align\:left,th.text-align\:left{text-align:left}td.text-align\:right,th.text-align\:right{text-align:right}td.text-align\:center,th.text-align\:center{text-align:center}.table{--bs-table-bg:transparent}.toctree-wrapper p.caption{font-size:1.5em;margin-bottom:0}.toctree-wrapper>ul{padding-left:0}.toctree-wrapper li[class^=toctree-l]{list-style:none;margin-bottom:.2em}.toctree-wrapper li[class^=toctree-l]>a{font-size:1.1em;list-style:none}.toctree-wrapper li[class^=toctree-l]>ul{list-style:none;padding-inline-start:1.5em}.toctree-wrapper .toctree-l1>a{font-size:1.3em}div.topic.contents ul.simple,nav.contents ul.simple{list-style:none;padding-left:0}div.math,span.math{align-items:center;display:flex;max-width:100%;overflow:hidden}span.math{display:inline-flex}div.math{flex-direction:row-reverse;gap:.5em}div.math span.eqno a.headerlink{font-size:1em;position:relative}div.math mjx-container{flex-grow:1;overflow:auto;padding-bottom:.2rem}div.math mjx-container mjx-assistive-mml{height:0}.ablog-sidebar-item h2,.ablog-sidebar-item h3{font-size:var(--pst-sidebar-header-font-size);margin-top:.5rem}.ablog-sidebar-item h2 a,.ablog-sidebar-item h3 a{color:var(--pst-color-text-base)}.ablog-sidebar-item ul{display:flex;flex-direction:column;gap:.5em;list-style:none;margin-bottom:0;overflow-y:hidden;padding-left:0}.ablog-sidebar-item ul.ablog-cloud{flex-direction:row;flex-flow:wrap;gap:.5rem}.ablog-sidebar-item ul.ablog-cloud li{align-items:center;display:flex}.ablog__prev-next{display:flex;font-size:1.2em;padding:1rem 0}.ablog__prev-next>span{display:flex;max-width:45%}.ablog__prev-next>span a{align-items:center;display:flex;gap:1rem;line-height:1.5rem;margin-left:auto}.ablog__prev-next>span a i:before{color:var(--pst-color-text-base)}.ablog__prev-next span.ablog__prev i.fa-arrow-circle-left:before{content:var(--pst-icon-angle-left)}.ablog__prev-next span.ablog__spacer{display:none}.ablog__prev-next span.ablog__next{margin-left:auto;text-align:right}.ablog__prev-next span.ablog__next i.fa-arrow-circle-right:before{content:var(--pst-icon-angle-right)}.ablog__collection,.postlist{padding-left:0}.ablog__collection .ablog-post,.postlist .ablog-post{list-style:none}.ablog__collection .ablog-post .ablog-archive,.postlist .ablog-post .ablog-archive{display:flex;flex-direction:row;flex-wrap:wrap;font-size:.75rem;gap:1rem;list-style:none;padding-left:0}.ablog__collection .ablog-post .ablog-post-title,.postlist .ablog-post .ablog-post-title{font-size:1.25rem;margin-top:0}.ablog__collection .ablog-post .ablog-post-title a,.postlist .ablog-post .ablog-post-title a{font-weight:700}.ablog__collection .ablog-post .ablog-post-expand,.postlist .ablog-post .ablog-post-expand{margin-bottom:.5rem}.docutils.container{margin-left:unset;margin-right:unset;max-width:unset;padding-left:unset;padding-right:unset;width:unset}div.highlight button.copybtn{align-items:center;background-color:unset;background-color:var(--pst-color-surface);border:none;display:flex;justify-content:center}div.highlight button.copybtn:not(.success){color:var(--pst-color-muted)}div.highlight button.copybtn:hover:not(.success){background-color:var(--pst-color-shadow);color:var(--pst-color-text)}div.highlight button.copybtn.o-tooltip--left:after{background-color:var(--pst-color-surface);color:var(--pst-color-text)}#ethical-ad-placement .ethical-footer a,#ethical-ad-placement .ethical-footer a:active,#ethical-ad-placement .ethical-footer a:hover,#ethical-ad-placement .ethical-footer a:visited,#ethical-ad-placement .ethical-sidebar a,#ethical-ad-placement .ethical-sidebar a:active,#ethical-ad-placement .ethical-sidebar a:hover,#ethical-ad-placement .ethical-sidebar a:visited{color:var(--pst-color-text-base)}#ethical-ad-placement .ethical-footer,#ethical-ad-placement .ethical-sidebar{background-color:var(--pst-color-background);border:1px solid var(--pst-color-border);border-radius:5px;color:var(--pst-color-text-base);font-size:14px;line-height:20px}.bd-content div.jupyter_container{background-color:unset;border:none;box-shadow:none}.bd-content div.jupyter_container div.highlight,.bd-content div.jupyter_container div.output{border-radius:.25rem}.bd-content div.jupyter_container div.highlight{background-color:var(--pst-color-surface)}.bd-content div.jupyter_container .cell_input,.bd-content div.jupyter_container .cell_output{border-radius:.25rem}.bd-content div.jupyter_container .cell_input pre,.bd-content div.jupyter_container .cell_output pre{padding:1rem}.xr-wrap[hidden]{display:block!important}:root{--pst-teal-50:#f4fbfc;--pst-teal-100:#e9f6f8;--pst-teal-200:#d0ecf1;--pst-teal-300:#abdde6;--pst-teal-400:#3fb1c5;--pst-teal-500:#0a7d91;--pst-teal-600:#085d6c;--pst-teal-700:#064752;--pst-teal-800:#042c33;--pst-teal-900:#021b1f;--pst-violet-50:#f4eefb;--pst-violet-100:#e0c7ff;--pst-violet-200:#d5b4fd;--pst-violet-300:#b780ff;--pst-violet-400:#9c5ffd;--pst-violet-500:#8045e5;--pst-violet-600:#6432bd;--pst-violet-700:#4b258f;--pst-violet-800:#341a61;--pst-violet-900:#1e0e39;--pst-gray-50:#f9f9fa;--pst-gray-100:#f3f4f5;--pst-gray-200:#e5e7ea;--pst-gray-300:#d1d5da;--pst-gray-400:#9ca4af;--pst-gray-500:#677384;--pst-gray-600:#48566b;--pst-gray-700:#29313d;--pst-gray-800:#222832;--pst-gray-900:#14181e;--pst-pink-50:#fcf8fd;--pst-pink-100:#fcf0fa;--pst-pink-200:#f8dff5;--pst-pink-300:#f3c7ee;--pst-pink-400:#e47fd7;--pst-pink-500:#c132af;--pst-pink-600:#912583;--pst-pink-700:#6e1c64;--pst-pink-800:#46123f;--pst-pink-900:#2b0b27;--pst-foundation-white:#fff;--pst-foundation-black:#14181e}html:not([data-theme]){--pst-color-primary:#0a7d91;--pst-color-primary-bg:#d0ecf1;--pst-color-secondary:#8045e5;--pst-color-secondary-bg:#e0c7ff;--pst-color-accent:#c132af;--pst-color-accent-bg:#f8dff5;--pst-color-info:#276be9;--pst-color-info-bg:#dce7fc;--pst-color-warning:#f66a0a;--pst-color-warning-bg:#f8e3d0;--pst-color-success:#00843f;--pst-color-success-bg:#d6ece1;--pst-color-attention:var(--pst-color-warning);--pst-color-attention-bg:var(--pst-color-warning-bg);--pst-color-danger:#d72d47;--pst-color-danger-bg:#f9e1e4;--pst-color-text-base:#222832;--pst-color-text-muted:#48566b;--pst-color-heading-color:#fff;--pst-color-shadow:rgba(0,0,0,.1);--pst-color-border:#d1d5da;--pst-color-border-muted:rgba(23,23,26,.2);--pst-color-inline-code:#912583;--pst-color-inline-code-links:#085d6c;--pst-color-target:#f3cf95;--pst-color-background:#fff;--pst-color-on-background:#fff;--pst-color-surface:#f3f4f5;--pst-color-on-surface:#222832;--pst-color-link:var(--pst-color-primary);--pst-color-link-hover:var(--pst-color-secondary)}html:not([data-theme]) .only-dark,html:not([data-theme]) .only-dark~figcaption{display:none!important}html[data-theme=light]{--pst-color-primary-bg:#d0ecf1;--pst-color-secondary-bg:#e0c7ff;--pst-color-accent:#c132af;--pst-color-accent-bg:#f8dff5;--pst-color-info-bg:#dce7fc;--pst-color-warning-bg:#f8e3d0;--pst-color-success-bg:#d6ece1;--pst-color-attention:var(--pst-color-warning);--pst-color-attention-bg:var(--pst-color-warning-bg);--pst-color-danger-bg:#f9e1e4;--pst-color-text-base:#222832;--pst-color-text-muted:#48566b;--pst-color-heading-color:#fff;--pst-color-shadow:rgba(0,0,0,.1);--pst-color-border:#d1d5da;--pst-color-border-muted:rgba(23,23,26,.2);--pst-color-inline-code:#912583;--pst-color-inline-code-links:#085d6c;--pst-color-target:#f3cf95;--pst-color-background:#fff;--pst-color-on-background:#fff;--pst-color-surface:#f3f4f5;--pst-color-on-surface:#222832;--pst-color-link:var(--pst-color-primary);--pst-color-link-hover:var(--pst-color-secondary);color-scheme:light}html[data-theme=light] .only-dark,html[data-theme=light] .only-dark~figcaption{display:none!important}html[data-theme=dark]{--pst-color-primary-bg:#042c33;--pst-color-secondary-bg:#341a61;--pst-color-accent:#e47fd7;--pst-color-accent-bg:#46123f;--pst-color-info-bg:#06245d;--pst-color-warning-bg:#652a02;--pst-color-success-bg:#002f17;--pst-color-attention:var(--pst-color-warning);--pst-color-attention-bg:var(--pst-color-warning-bg);--pst-color-danger-bg:#4e111b;--pst-color-text-base:#ced6dd;--pst-color-text-muted:#9ca4af;--pst-color-heading-color:#14181e;--pst-color-shadow:rgba(0,0,0,.2);--pst-color-border:#48566b;--pst-color-border-muted:#29313d;--pst-color-inline-code:#f3c7ee;--pst-color-inline-code-links:#3fb1c5;--pst-color-target:#675c04;--pst-color-background:#14181e;--pst-color-on-background:#222832;--pst-color-surface:#29313d;--pst-color-on-surface:#f3f4f5;--pst-color-link:var(--pst-color-primary);--pst-color-link-hover:var(--pst-color-secondary);color-scheme:dark}html[data-theme=dark] .only-light,html[data-theme=dark] .only-light~figcaption{display:none!important}html[data-theme=dark] img:not(.only-dark):not(.dark-light){filter:brightness(.8) contrast(1.2)}html[data-theme=dark] .bd-content img:not(.only-dark):not(.dark-light){background:#fff;border-radius:.25rem}html[data-theme=dark] .MathJax_SVG *{fill:var(--pst-color-text-base)}.pst-color-primary{color:var(--pst-color-primary)}.pst-color-secondary{color:var(--pst-color-secondary)}.pst-color-accent{color:var(--pst-color-accent)}.pst-color-info{color:var(--pst-color-info)}.pst-color-warning{color:var(--pst-color-warning)}.pst-color-success{color:var(--pst-color-success)}.pst-color-attention{color:var(--pst-color-attention)}.pst-color-danger{color:var(--pst-color-danger)}.pst-color-text-base{color:var(--pst-color-text-base)}.pst-color-text-muted{color:var(--pst-color-text-muted)}.pst-color-heading-color{color:var(--pst-color-heading-color)}.pst-color-shadow{color:var(--pst-color-shadow)}.pst-color-border{color:var(--pst-color-border)}.pst-color-border-muted{color:var(--pst-color-border-muted)}.pst-color-inline-code{color:var(--pst-color-inline-code)}.pst-color-inline-code-links{color:var(--pst-color-inline-code-links)}.pst-color-target{color:var(--pst-color-target)}.pst-color-background{color:var(--pst-color-background)}.pst-color-on-background{color:var(--pst-color-on-background)}.pst-color-surface{color:var(--pst-color-surface)}.pst-color-on-surface{color:var(--pst-color-on-surface)}html[data-theme=light]{--pst-color-primary:#0a7d91;--pst-color-primary-text:#fff;--pst-color-primary-highlight:#053f49;--sd-color-primary:var(--pst-color-primary);--sd-color-primary-text:var(--pst-color-primary-text);--sd-color-primary-highlight:var(--pst-color-primary-highlight);--sd-color-primary-bg:#d0ecf1;--sd-color-primary-bg-text:#14181e;--pst-color-secondary:#8045e5;--pst-color-secondary-text:#fff;--pst-color-secondary-highlight:#591bc2;--sd-color-secondary:var(--pst-color-secondary);--sd-color-secondary-text:var(--pst-color-secondary-text);--sd-color-secondary-highlight:var(--pst-color-secondary-highlight);--sd-color-secondary-bg:#e0c7ff;--sd-color-secondary-bg-text:#14181e;--pst-color-success:#00843f;--pst-color-success-text:#fff;--pst-color-success-highlight:#00381a;--sd-color-success:var(--pst-color-success);--sd-color-success-text:var(--pst-color-success-text);--sd-color-success-highlight:var(--pst-color-success-highlight);--sd-color-success-bg:#d6ece1;--sd-color-success-bg-text:#14181e;--pst-color-info:#276be9;--pst-color-info-text:#fff;--pst-color-info-highlight:#124ab1;--sd-color-info:var(--pst-color-info);--sd-color-info-text:var(--pst-color-info-text);--sd-color-info-highlight:var(--pst-color-info-highlight);--sd-color-info-bg:#dce7fc;--sd-color-info-bg-text:#14181e;--pst-color-warning:#f66a0a;--pst-color-warning-text:#14181e;--pst-color-warning-highlight:#ad4a06;--sd-color-warning:var(--pst-color-warning);--sd-color-warning-text:var(--pst-color-warning-text);--sd-color-warning-highlight:var(--pst-color-warning-highlight);--sd-color-warning-bg:#f8e3d0;--sd-color-warning-bg-text:#14181e;--pst-color-danger:#d72d47;--pst-color-danger-text:#fff;--pst-color-danger-highlight:#9a1d30;--sd-color-danger:var(--pst-color-danger);--sd-color-danger-text:var(--pst-color-danger-text);--sd-color-danger-highlight:var(--pst-color-danger-highlight);--sd-color-danger-bg:#f9e1e4;--sd-color-danger-bg-text:#14181e;--pst-color-light:#f3f4f5;--pst-color-light-text:#14181e;--pst-color-light-highlight:#c9ced2;--sd-color-light:var(--pst-color-light);--sd-color-light-text:var(--pst-color-light-text);--sd-color-light-highlight:var(--pst-color-light-highlight);--sd-color-light-bg:#f7f7f8;--sd-color-light-bg-text:#14181e;--pst-color-muted:#29313d;--pst-color-muted-text:#fff;--pst-color-muted-highlight:#0a0c0f;--sd-color-muted:var(--pst-color-muted);--sd-color-muted-text:var(--pst-color-muted-text);--sd-color-muted-highlight:var(--pst-color-muted-highlight);--sd-color-muted-bg:#5a6c86;--sd-color-muted-bg-text:#fff;--pst-color-dark:#222832;--pst-color-dark-text:#fff;--pst-color-dark-highlight:#030404;--sd-color-dark:var(--pst-color-dark);--sd-color-dark-text:var(--pst-color-dark-text);--sd-color-dark-highlight:var(--pst-color-dark-highlight);--pst-color-black:#14181e;--pst-color-black-text:#fff;--pst-color-black-highlight:#000;--sd-color-black:var(--pst-color-black);--sd-color-black-text:var(--pst-color-black-text);--sd-color-black-highlight:var(--pst-color-black-highlight);--pst-color-white:#fff;--pst-color-white-text:#14181e;--pst-color-white-highlight:#d9d9d9;--sd-color-white:var(--pst-color-white);--sd-color-white-text:var(--pst-color-white-text);--sd-color-white-highlight:var(--pst-color-white-highlight)}html[data-theme=dark]{--pst-color-primary:#3fb1c5;--pst-color-primary-text:#14181e;--pst-color-primary-highlight:#2b7e8d;--sd-color-primary:var(--pst-color-primary);--sd-color-primary-text:var(--pst-color-primary-text);--sd-color-primary-highlight:var(--pst-color-primary-highlight);--sd-color-primary-bg:#042c33;--sd-color-primary-bg-text:#fff;--pst-color-secondary:#9c5ffd;--pst-color-secondary-text:#14181e;--pst-color-secondary-highlight:#6d13fc;--sd-color-secondary:var(--pst-color-secondary);--sd-color-secondary-text:var(--pst-color-secondary-text);--sd-color-secondary-highlight:var(--pst-color-secondary-highlight);--sd-color-secondary-bg:#341a61;--sd-color-secondary-bg-text:#fff;--pst-color-success:#5fb488;--pst-color-success-text:#14181e;--pst-color-success-highlight:#3f8762;--sd-color-success:var(--pst-color-success);--sd-color-success-text:var(--pst-color-success-text);--sd-color-success-highlight:var(--pst-color-success-highlight);--sd-color-success-bg:#002f17;--sd-color-success-bg-text:#fff;--pst-color-info:#79a3f2;--pst-color-info-text:#14181e;--pst-color-info-highlight:#3373eb;--sd-color-info:var(--pst-color-info);--sd-color-info-text:var(--pst-color-info-text);--sd-color-info-highlight:var(--pst-color-info-highlight);--sd-color-info-bg:#06245d;--sd-color-info-bg-text:#fff;--pst-color-warning:#ff9245;--pst-color-warning-text:#14181e;--pst-color-warning-highlight:#f86600;--sd-color-warning:var(--pst-color-warning);--sd-color-warning-text:var(--pst-color-warning-text);--sd-color-warning-highlight:var(--pst-color-warning-highlight);--sd-color-warning-bg:#652a02;--sd-color-warning-bg-text:#fff;--pst-color-danger:#e78894;--pst-color-danger-text:#14181e;--pst-color-danger-highlight:#da485b;--sd-color-danger:var(--pst-color-danger);--sd-color-danger-text:var(--pst-color-danger-text);--sd-color-danger-highlight:var(--pst-color-danger-highlight);--sd-color-danger-bg:#4e111b;--sd-color-danger-bg-text:#fff;--pst-color-light:#f3f4f5;--pst-color-light-text:#14181e;--pst-color-light-highlight:#c9ced2;--sd-color-light:var(--pst-color-light);--sd-color-light-text:var(--pst-color-light-text);--sd-color-light-highlight:var(--pst-color-light-highlight);--sd-color-light-bg:#a3abb2;--sd-color-light-bg-text:#14181e;--pst-color-muted:#f3f4f5;--pst-color-muted-text:#14181e;--pst-color-muted-highlight:#c9ced2;--sd-color-muted:var(--pst-color-muted);--sd-color-muted-text:var(--pst-color-muted-text);--sd-color-muted-highlight:var(--pst-color-muted-highlight);--sd-color-muted-bg:#1d222b;--sd-color-muted-bg-text:#fff;--pst-color-dark:#222832;--pst-color-dark-text:#fff;--pst-color-dark-highlight:#030404;--sd-color-dark:var(--pst-color-dark);--sd-color-dark-text:var(--pst-color-dark-text);--sd-color-dark-highlight:var(--pst-color-dark-highlight);--pst-color-black:#14181e;--pst-color-black-text:#fff;--pst-color-black-highlight:#000;--sd-color-black:var(--pst-color-black);--sd-color-black-text:var(--pst-color-black-text);--sd-color-black-highlight:var(--pst-color-black-highlight);--pst-color-white:#fff;--pst-color-white-text:#14181e;--pst-color-white-highlight:#d9d9d9;--sd-color-white:var(--pst-color-white);--sd-color-white-text:var(--pst-color-white-text);--sd-color-white-highlight:var(--pst-color-white-highlight)}html[data-theme=dark],html[data-theme=light]{--sd-color-card-border:var(--pst-color-border)}html[data-theme=light] .sd-shadow-lg,html[data-theme=light] .sd-shadow-md,html[data-theme=light] .sd-shadow-sm,html[data-theme=light] .sd-shadow-xs{box-shadow:0 .2rem .5rem var(--pst-color-shadow),0 0 .0625rem var(--pst-color-shadow)!important}.bd-content .sd-card{border:1px solid var(--pst-color-border)}.bd-content .sd-card .sd-card-header{background-color:var(--pst-color-panel-background);border-bottom:1px solid var(--pst-color-border)}.bd-content .sd-card .sd-card-footer{border-top:1px solid var(--pst-color-border)}.bd-content .sd-card .sd-card-body,.bd-content .sd-card .sd-card-footer{background-color:var(--pst-color-panel-background)}.bd-content .sd-tab-set>input:checked+label{border-color:transparent transparent var(--pst-color-primary);color:var(--pst-color-primary)}.bd-content .sd-tab-set>input:not(:checked)+label:hover{border-color:var(--pst-color-secondary);color:var(--pst-color-secondary)}.bd-content .sd-tab-set>label{border-top:.125rem solid transparent;color:var(--pst-color-text-muted);padding-top:.5em}html .bd-content .sd-tab-set>label:hover{border-color:var(--pst-color-secondary);color:var(--pst-color-secondary)}details.sd-dropdown{border:0!important;box-shadow:0 .2rem .5rem var(--pst-color-shadow),0 0 .0625rem var(--pst-color-shadow)!important}details.sd-dropdown summary.sd-card-header{border:0!important}details.sd-dropdown summary.sd-card-header+div.sd-summary-content{border:0}details.sd-dropdown summary.sd-card-header{--pst-sd-dropdown-color:var(--pst-gray-500);--pst-sd-dropdown-bg-color:var(--pst-color-surface);align-items:center;background-color:unset!important;border-left:.2rem solid var(--pst-sd-dropdown-color)!important;display:flex;font-weight:600;padding-bottom:.5rem;padding-top:.5rem;position:relative}details.sd-dropdown summary.sd-card-header+div.sd-summary-content{--pst-sd-dropdown-color:var(--sd-color-card-border)}details.sd-dropdown summary.sd-card-header.sd-bg-primary,details.sd-dropdown summary.sd-card-header.sd-bg-primary+div.sd-summary-content{--pst-sd-dropdown-color:var(--sd-color-primary);--pst-sd-dropdown-bg-color:var(--sd-color-primary-bg)}details.sd-dropdown summary.sd-card-header.sd-bg-text-primary{color:var(--sd-color-primary-bg-text)!important}details.sd-dropdown summary.sd-card-header.sd-bg-secondary,details.sd-dropdown summary.sd-card-header.sd-bg-secondary+div.sd-summary-content{--pst-sd-dropdown-color:var(--sd-color-secondary);--pst-sd-dropdown-bg-color:var(--sd-color-secondary-bg)}details.sd-dropdown summary.sd-card-header.sd-bg-text-secondary{color:var(--sd-color-secondary-bg-text)!important}details.sd-dropdown summary.sd-card-header.sd-bg-success,details.sd-dropdown summary.sd-card-header.sd-bg-success+div.sd-summary-content{--pst-sd-dropdown-color:var(--sd-color-success);--pst-sd-dropdown-bg-color:var(--sd-color-success-bg)}details.sd-dropdown summary.sd-card-header.sd-bg-text-success{color:var(--sd-color-success-bg-text)!important}details.sd-dropdown summary.sd-card-header.sd-bg-info,details.sd-dropdown summary.sd-card-header.sd-bg-info+div.sd-summary-content{--pst-sd-dropdown-color:var(--sd-color-info);--pst-sd-dropdown-bg-color:var(--sd-color-info-bg)}details.sd-dropdown summary.sd-card-header.sd-bg-text-info{color:var(--sd-color-info-bg-text)!important}details.sd-dropdown summary.sd-card-header.sd-bg-warning,details.sd-dropdown summary.sd-card-header.sd-bg-warning+div.sd-summary-content{--pst-sd-dropdown-color:var(--sd-color-warning);--pst-sd-dropdown-bg-color:var(--sd-color-warning-bg)}details.sd-dropdown summary.sd-card-header.sd-bg-text-warning{color:var(--sd-color-warning-bg-text)!important}details.sd-dropdown summary.sd-card-header.sd-bg-danger,details.sd-dropdown summary.sd-card-header.sd-bg-danger+div.sd-summary-content{--pst-sd-dropdown-color:var(--sd-color-danger);--pst-sd-dropdown-bg-color:var(--sd-color-danger-bg)}details.sd-dropdown summary.sd-card-header.sd-bg-text-danger{color:var(--sd-color-danger-bg-text)!important}details.sd-dropdown summary.sd-card-header.sd-bg-light,details.sd-dropdown summary.sd-card-header.sd-bg-light+div.sd-summary-content{--pst-sd-dropdown-color:var(--sd-color-light);--pst-sd-dropdown-bg-color:var(--sd-color-light-bg)}details.sd-dropdown summary.sd-card-header.sd-bg-text-light{color:var(--sd-color-light-bg-text)!important}details.sd-dropdown summary.sd-card-header.sd-bg-muted,details.sd-dropdown summary.sd-card-header.sd-bg-muted+div.sd-summary-content{--pst-sd-dropdown-color:var(--sd-color-muted);--pst-sd-dropdown-bg-color:var(--sd-color-muted-bg)}details.sd-dropdown summary.sd-card-header.sd-bg-text-muted{color:var(--sd-color-muted-bg-text)!important}details.sd-dropdown summary.sd-card-header.sd-bg-dark,details.sd-dropdown summary.sd-card-header.sd-bg-dark+div.sd-summary-content{--pst-sd-dropdown-color:var(--sd-color-dark);--pst-sd-dropdown-bg-color:var(--sd-color-dark-bg)}details.sd-dropdown summary.sd-card-header.sd-bg-text-dark{color:var(--sd-color-dark-bg-text)!important}details.sd-dropdown summary.sd-card-header.sd-bg-black,details.sd-dropdown summary.sd-card-header.sd-bg-black+div.sd-summary-content{--pst-sd-dropdown-color:var(--sd-color-black);--pst-sd-dropdown-bg-color:var(--sd-color-black-bg)}details.sd-dropdown summary.sd-card-header.sd-bg-text-black{color:var(--sd-color-black-bg-text)!important}details.sd-dropdown summary.sd-card-header.sd-bg-white,details.sd-dropdown summary.sd-card-header.sd-bg-white+div.sd-summary-content{--pst-sd-dropdown-color:var(--sd-color-white);--pst-sd-dropdown-bg-color:var(--sd-color-white-bg)}details.sd-dropdown summary.sd-card-header.sd-bg-text-white{color:var(--sd-color-white-bg-text)!important}details.sd-dropdown summary.sd-card-header:before{background-color:var(--pst-sd-dropdown-bg-color);content:"";height:100%;left:0;pointer-events:none;position:absolute;top:0;width:100%;z-index:-1}details.sd-dropdown summary.sd-card-header+div.sd-summary-content{background-color:var(--pst-color-on-background);border-bottom-left-radius:calc(.25rem - 1px);border-left:.2rem solid var(--pst-sd-dropdown-color)!important}details.sd-dropdown summary.sd-card-header span.sd-summary-icon{align-items:center;color:var(--pst-sd-dropdown-color)!important;display:inline-flex}details.sd-dropdown summary.sd-card-header span.sd-summary-icon svg{opacity:1}details.sd-dropdown summary.sd-card-header .sd-summary-down,details.sd-dropdown summary.sd-card-header .sd-summary-up{top:.7rem}.bd-content .admonition button.toggle-button{color:inherit}.bd-content details.toggle-details summary{border-left:3px solid var(--pst-color-primary)}html div.rendered_html html .jp-RenderedHTMLCommon table{table-layout:auto}html[data-theme=dark] .bd-content .nboutput .output_area.rendered_html{background-color:var(--pst-color-text-base);border-radius:.25rem;color:var(--pst-color-on-background);padding:.5rem}html[data-theme=dark] .bd-content .nboutput .output_area.stderr{background:var(--pst-color-danger)}div.nblast.container{margin-bottom:1rem}div.cell_output .output{max-width:100%;overflow-x:auto}html[data-theme=dark] .bd-content div.cell_output .text_html,html[data-theme=dark] .bd-content div.cell_output img{background-color:var(--pst-color-text-base);border-radius:.25rem;color:var(--pst-color-on-background);padding:.5rem}.bd-content div.cell_input{display:flex;flex-direction:column;justify-content:stretch}.bd-content div.cell_input,.bd-content div.output{border-radius:.25rem}.bd-content div.output table{table-layout:auto}html[data-theme=dark] .bd-content img.leaflet-tile.leaflet-tile-loaded{border-radius:0;padding:0}.bd-search-container div#search-results>h2{font-size:var(--pst-font-size-icon);margin-top:0}.bd-search-container div#search-results p.search-summary{color:var(--pst-color-text-muted)}.bd-search-container ul.search{list-style:none;margin:0}.bd-search-container ul.search li{background-image:none;border-top:1px solid var(--pst-color-text-muted);margin:1rem 0;padding:1rem 0}.bd-search-container ul.search li>a{font-size:1.2em}.bd-search-container ul.search li div.context,.bd-search-container ul.search li p.context{color:var(--pst-color-text-base);margin:.5em 0 0}.bd-search-container ul.search li div.context a:before,.bd-search-container ul.search li p.context a:before{color:var(--pst-color-text-muted);content:"#";padding-right:.2em} +html{--pst-header-height:4rem;--pst-header-article-height:calc(var(--pst-header-height)*2/3);--pst-sidebar-secondary:17rem;--pst-font-size-base:1rem;--pst-font-size-h1:2.5rem;--pst-font-size-h2:2rem;--pst-font-size-h3:1.75rem;--pst-font-size-h4:1.5rem;--pst-font-size-h5:1.25rem;--pst-font-size-h6:1.1rem;--pst-font-size-milli:0.9rem;--pst-sidebar-font-size:0.9rem;--pst-sidebar-font-size-mobile:1.1rem;--pst-sidebar-header-font-size:1.2rem;--pst-sidebar-header-font-weight:600;--pst-admonition-font-weight-heading:600;--pst-font-weight-caption:300;--pst-font-weight-heading:400;--pst-font-family-base-system:-apple-system,BlinkMacSystemFont,Segoe UI,"Helvetica Neue",Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;--pst-font-family-monospace-system:"SFMono-Regular",Menlo,Consolas,Monaco,Liberation Mono,Lucida Console,monospace;--pst-font-family-base:var(--pst-font-family-base-system);--pst-font-family-heading:var(--pst-font-family-base-system);--pst-font-family-monospace:var(--pst-font-family-monospace-system);--pst-font-size-icon:1.5rem;--pst-icon-check-circle:"";--pst-icon-info-circle:"";--pst-icon-exclamation-triangle:"";--pst-icon-exclamation-circle:"";--pst-icon-times-circle:"";--pst-icon-lightbulb:"";--pst-icon-download:"";--pst-icon-angle-left:"";--pst-icon-angle-right:"";--pst-icon-external-link:"";--pst-icon-search-minus:"";--pst-icon-github:"";--pst-icon-gitlab:"";--pst-icon-share:"";--pst-icon-bell:"";--pst-icon-pencil:"";--pst-breadcrumb-divider:"";--pst-icon-admonition-default:var(--pst-icon-bell);--pst-icon-admonition-note:var(--pst-icon-info-circle);--pst-icon-admonition-attention:var(--pst-icon-exclamation-circle);--pst-icon-admonition-caution:var(--pst-icon-exclamation-triangle);--pst-icon-admonition-warning:var(--pst-icon-exclamation-triangle);--pst-icon-admonition-danger:var(--pst-icon-exclamation-triangle);--pst-icon-admonition-error:var(--pst-icon-times-circle);--pst-icon-admonition-hint:var(--pst-icon-lightbulb);--pst-icon-admonition-tip:var(--pst-icon-lightbulb);--pst-icon-admonition-important:var(--pst-icon-exclamation-circle);--pst-icon-admonition-seealso:var(--pst-icon-share);--pst-icon-admonition-todo:var(--pst-icon-pencil);--pst-icon-versionmodified-default:var(--pst-icon-exclamation-circle);--pst-icon-versionmodified-added:var(--pst-icon-exclamation-circle);--pst-icon-versionmodified-changed:var(--pst-icon-exclamation-circle);--pst-icon-versionmodified-deprecated:var(--pst-icon-exclamation-circle);font-size:var(--pst-font-size-base);scroll-padding-top:calc(var(--pst-header-height) + 1rem)}body{background-color:var(--pst-color-background);color:var(--pst-color-text-base);display:flex;flex-direction:column;font-family:var(--pst-font-family-base);font-weight:400;line-height:1.65;min-height:100vh}body::-webkit-scrollbar-track{background:var(--pst-color-background)}p{color:var(--pst-color-text-base);font-size:1em;margin-bottom:1.15rem}p.rubric{border-bottom:1px solid var(--pst-color-border)}p.centered{text-align:center}a{word-wrap:break-word;color:var(--pst-color-link);text-decoration:underline;text-decoration-thickness:max(1px,.0625rem);text-underline-offset:.1578em}a:hover{text-decoration-skip:none;color:var(--pst-color-link-hover);text-decoration-skip-ink:none;text-decoration-thickness:max(3px,.1875rem,.12em)}a:active,a:visited{color:var(--pst-color-link)}a:visited:hover{color:var(--pst-color-link-hover)}a:focus-visible{outline:2px solid var(--pst-color-accent)}a.headerlink{color:var(--pst-color-secondary);font-size:.8em;margin-left:.2em;opacity:.7;padding:0 4px;text-decoration:none;transition:all .2s ease-out;user-select:none}a.headerlink:hover{opacity:1}a.github:before,a.gitlab:before{color:var(--pst-color-text-muted);font:var(--fa-font-brands);margin-right:.25rem}a.github:before{content:var(--pst-icon-github)}a.gitlab:before{content:var(--pst-icon-gitlab)}.heading-style,h1,h2,h3,h4,h5,h6{font-family:var(--pst-font-family-heading);font-weight:var(--pst-font-weight-heading);line-height:1.15;margin:2.75rem 0 1.05rem}h1{font-size:var(--pst-font-size-h1);margin-top:0}h1,h2{color:var(--pst-heading-color)}h2{font-size:var(--pst-font-size-h2)}h3{font-size:var(--pst-font-size-h3)}h3,h4{color:var(--pst-heading-color)}h4{font-size:var(--pst-font-size-h4)}h5{font-size:var(--pst-font-size-h5)}h5,h6{color:var(--pst-color-text-base)}h6{font-size:var(--pst-font-size-h6)}.text_small,small{font-size:var(--pst-font-size-milli)}hr{border:0;border-top:1px solid var(--pst-color-border)}code,kbd,pre,samp{font-family:var(--pst-font-family-monospace)}kbd{background-color:var(--pst-color-on-background);color:var(--pst-color-text-muted)}kbd:not(.compound){border:1px solid var(--pst-color-border);box-shadow:1px 1px 1px var(--pst-color-shadow);margin:0 .1rem;padding:.1rem .4rem}code{color:var(--pst-color-inline-code)}pre{background-color:var(--pst-color-surface);border:1px solid var(--pst-color-border);border-radius:.25rem;color:var(--pst-color-text-base);line-height:1.2em;margin:1.5em 0;padding:1rem}pre .linenos{opacity:.8;padding-right:10px}#pst-back-to-top{background-color:var(--pst-color-secondary);border:none;color:var(--pst-color-secondary-text);display:none;left:50vw;position:fixed;top:80vh;transform:translate(-50%);z-index:1080}.skip-link{background-color:var(--pst-color-warning);border-bottom:1px solid var(--pst-color-border);color:var(--pst-color-warning-text)!important;left:0;padding:.5rem;position:fixed;right:0;text-align:center;top:0;transform:translateY(-100%);transition:transform .15s ease-in-out;z-index:1055}.skip-link:focus{outline:3px solid #14181e;transform:translateY(0)}.bd-container{display:flex;flex-grow:1;justify-content:center}.bd-container .bd-container__inner{display:flex}.bd-page-width{width:100%}@media(min-width:960px){.bd-page-width{max-width:88rem}}.bd-header-announcement,.bd-header-version-warning{align-items:center;display:flex;justify-content:center;min-height:3rem;padding:.5rem 12.5%;position:relative;text-align:center;width:100%}@media(max-width:959.98px){.bd-header-announcement,.bd-header-version-warning{padding:.5rem 2%}}.bd-header-announcement p,.bd-header-version-warning p{font-weight:700;margin:0}.bd-header-announcement:after,.bd-header-version-warning:after{content:"";height:100%;left:0;position:absolute;top:0;width:100%;z-index:-1}.bd-header-announcement:empty,.bd-header-version-warning:empty{display:none}.bd-header-announcement a,.bd-header-version-warning a{color:var(--pst-color-inline-code-links)}.bd-header-announcement:after{background-color:var(--pst-color-secondary-bg)}.bd-header-version-warning:after{background-color:var(--pst-color-danger-bg)}.bd-main{display:flex;flex-direction:column;flex-grow:1;min-width:0}.bd-main .bd-content{display:flex;height:100%;justify-content:center}.bd-main .bd-content .bd-article-container{display:flex;flex-direction:column;justify-content:start;max-width:60em;overflow-x:auto;padding:1rem;width:100%}@media(min-width:1200px){.bd-main .bd-content .bd-article-container .bd-article{padding-left:2rem;padding-top:1.5rem}}.bd-footer{border-top:1px solid var(--pst-color-border);width:100%}.bd-footer .bd-footer__inner{display:flex;flex-grow:1;margin:auto;padding:1rem}.bd-footer .footer-items__center,.bd-footer .footer-items__end,.bd-footer .footer-items__start{display:flex;flex-direction:column;flex-grow:1;gap:.5rem;justify-content:center}.bd-footer .footer-items__center{text-align:center}.bd-footer .footer-items__end{text-align:end}.bd-footer .footer-item p{margin-bottom:0}.bd-footer-article{margin-top:auto}.bd-footer-article .footer-article-items{display:flex;flex-direction:column}.bd-footer-content .footer-content-items{display:flex;flex-direction:column;margin-top:auto}.bd-header{background:var(--pst-color-on-background)!important;box-shadow:0 .125rem .25rem 0 var(--pst-color-shadow);justify-content:center;max-width:100vw;padding:0;position:sticky;top:0;width:100%;z-index:1030}.bd-header .bd-header__inner{align-items:center;display:flex;height:fit-content;padding-left:1rem;padding-right:1rem}.bd-header .navbar-item{align-items:center;display:flex;height:var(--pst-header-height);max-height:var(--pst-header-height)}.bd-header .navbar-header-items{flex-shrink:1}@media(min-width:960px){.bd-header .navbar-header-items{display:flex;flex-grow:1;padding:0 0 0 .5rem}}.bd-header .navbar-header-items__center,.bd-header .navbar-header-items__end,.bd-header .navbar-header-items__start{align-items:center;display:flex;flex-flow:wrap;row-gap:0}.bd-header .navbar-header-items__center,.bd-header .navbar-header-items__end{column-gap:1rem}.bd-header .navbar-header-items__start{flex-shrink:0;gap:.5rem;margin-right:auto}.bd-header .navbar-header-items__end{justify-content:end}.bd-header .navbar-nav{display:flex}@media(min-width:960px){.bd-header .navbar-nav{align-items:center}}.bd-header .navbar-nav li a.nav-link{color:var(--pst-color-text-muted);text-decoration:none}.bd-header .navbar-nav li a.nav-link:hover{text-decoration-skip:none;color:var(--pst-color-link-hover);text-decoration:underline;text-decoration-skip-ink:none;text-decoration-thickness:max(1px,.0625rem);text-decoration-thickness:max(3px,.1875rem,.12em);text-underline-offset:.1578em}.bd-header .navbar-nav li a.nav-link:focus-visible{outline:2px solid var(--pst-color-accent)}.bd-header .navbar-nav>.current>.nav-link{border-bottom:max(3px,.1875rem,.12em) solid var(--pst-color-primary);color:var(--pst-color-primary);font-weight:600}.bd-header .navbar-nav .dropdown button{border:none;color:var(--pst-color-text-muted);display:unset}.bd-header .navbar-nav .dropdown button:hover{text-decoration-skip:none;color:var(--pst-color-link-hover);text-decoration:underline;text-decoration-skip-ink:none;text-decoration-thickness:max(1px,.0625rem);text-decoration-thickness:max(3px,.1875rem,.12em);text-underline-offset:.1578em}.bd-header .navbar-nav .dropdown button:focus-visible{outline:2px solid var(--pst-color-accent)}.bd-header .navbar-nav .dropdown .dropdown-menu{background-color:var(--pst-color-on-background);border:1px solid var(--pst-color-border);box-shadow:0 0 .3rem .1rem var(--pst-color-shadow);margin:.5rem 0;min-width:20rem;padding:.5rem 0;z-index:1070}.bd-header .navbar-nav .dropdown .dropdown-menu .dropdown-item{padding:.25rem 1.5rem}.bd-header .navbar-nav .dropdown .dropdown-menu .dropdown-item:focus:not(:hover):not(:active){background-color:inherit}.bd-header .navbar-nav .dropdown .dropdown-menu:not(.show){display:none}@media(min-width:960px){.navbar-center-items .navbar-item{display:inline-block}}.nav-link{transition:none}.nav-link:hover{text-decoration-skip:none;color:var(--pst-color-link-hover);text-decoration:underline;text-decoration-skip-ink:none;text-decoration-thickness:max(1px,.0625rem);text-decoration-thickness:max(3px,.1875rem,.12em);text-underline-offset:.1578em}.nav-link.nav-external:after{content:var(--pst-icon-external-link);font:var(--fa-font-solid);font-size:.75em;margin-left:.3em}.bd-navbar-elements li.nav-item i{font-size:.7rem;padding-left:2px;vertical-align:middle}.bd-header label.sidebar-toggle{align-items:center;color:var(--pst-color-muted);cursor:pointer;display:flex;font-size:var(--pst-font-size-icon);margin-bottom:0;padding-bottom:.25rem}.bd-header label.primary-toggle{margin-right:1rem}@media(min-width:960px){.bd-header label.primary-toggle{display:none}}.bd-header label.secondary-toggle{margin-left:1rem}@media(min-width:1200px){.bd-header label.secondary-toggle{display:none}}.bd-header label:hover{box-shadow:0 max(3px,.1875rem,.12em) 0 var(--pst-color-link-hover);color:var(--pst-color-link-hover)}.bd-header label:focus-visible{outline:2px solid var(--pst-color-accent)}.bd-header .navbar-header-items{display:none}@media(min-width:960px){.bd-header .navbar-header-items{display:inherit}}.navbar-persistent--mobile{margin-left:auto}@media(min-width:960px){.navbar-persistent--mobile{display:none}}.navbar-persistent--container{display:none}@media(min-width:960px){.navbar-persistent--container{display:flex}}.header-article__inner{display:flex;padding:0 .5rem}.header-article__inner .header-article-item{height:var(--pst-header-article-height);min-height:var(--pst-header-article-height)}.header-article__inner .header-article-items__end,.header-article__inner .header-article-items__start{align-items:start;display:flex;gap:.5rem}.header-article__inner .header-article-items__end{margin-left:auto}.bd-sidebar-primary{background-color:var(--pst-color-background);border-right:1px solid var(--pst-color-border);display:flex;flex:0 0 auto;flex-direction:column;font-size:var(--pst-sidebar-font-size-mobile);gap:1rem;max-height:calc(100vh - var(--pst-header-height));overflow-y:auto;padding:2rem 1rem 1rem;position:sticky;top:var(--pst-header-height);width:25%}@media(min-width:960px){.bd-sidebar-primary{font-size:var(--pst-sidebar-font-size)}}.bd-sidebar-primary .nav-link{font-size:var(--pst-sidebar-font-size-mobile)}.bd-sidebar-primary.no-sidebar{border-right:0}@media(min-width:960px){.bd-sidebar-primary.hide-on-wide{display:none}}.bd-sidebar-primary h1,.bd-sidebar-primary h2,.bd-sidebar-primary h3,.bd-sidebar-primary h4{color:var(--pst-color-text-base)}.bd-sidebar-primary .sidebar-primary-items__end .sidebar-primary-item,.bd-sidebar-primary .sidebar-primary-items__start .sidebar-primary-item{padding:.5rem 0}.bd-sidebar-primary .sidebar-header-items{display:flex;flex-direction:column}.bd-sidebar-primary .sidebar-header-items .sidebar-header-items__title{color:var(--pst-color-text-base);font-size:var(--pst-sidebar-header-font-size);font-weight:var(--pst-sidebar-header-font-weight);margin-bottom:.5rem}.bd-sidebar-primary .sidebar-header-items .nav-item.dropdown button{display:none}.bd-sidebar-primary .sidebar-header-items .nav-item.dropdown .dropdown-menu{background-color:inherit;border:none;display:flex;flex-direction:column;font-size:inherit;margin:0;padding:0}.bd-sidebar-primary .sidebar-header-items .sidebar-header-items__center{display:flex;flex-direction:column}.bd-sidebar-primary .sidebar-header-items .sidebar-header-items__end{align-items:center;display:flex;gap:.5rem}@media(min-width:960px){.bd-sidebar-primary .sidebar-header-items{display:none}}.bd-sidebar-primary .sidebar-primary-items__start{border-top:1px solid var(--pst-color-border)}@media(min-width:960px){.bd-sidebar-primary .sidebar-primary-items__start{border-top:none}}.bd-sidebar-primary .sidebar-primary-items__end{margin-bottom:1em;margin-top:auto}.bd-sidebar-primary .list-caption{list-style:none;padding-left:0}.bd-sidebar-primary li{position:relative}.bd-sidebar-primary li.has-children>.reference{padding-right:30px}.bd-sidebar-primary label.toctree-toggle{align-items:center;cursor:pointer;display:flex;height:30px;justify-content:center;position:absolute;right:0;top:0;width:30px}.bd-sidebar-primary label.toctree-toggle:hover{background:var(--pst-color-surface)}.bd-sidebar-primary label.toctree-toggle i{display:inline-block;font-size:.75rem;text-align:center}.bd-sidebar-primary label.toctree-toggle i:hover{color:var(--pst-color-primary)}.bd-sidebar-primary .label-parts{height:100%;width:100%}.bd-sidebar-primary .label-parts:hover{background:none}.bd-sidebar-primary .label-parts i{position:absolute;right:0;top:.3em;width:30px}nav.bd-links{margin-right:-1rem}@media(min-width:960px){nav.bd-links{display:block}}nav.bd-links ul{list-style:none}nav.bd-links ul ul{padding:0 0 0 1rem}nav.bd-links li>a{box-shadow:none;color:var(--pst-color-text-muted);display:block;padding:.25rem .65rem;text-decoration:none}nav.bd-links li>a:hover{text-decoration-skip:none;background-color:transparent;text-decoration:underline;text-decoration-skip-ink:none;text-decoration-thickness:max(3px,.1875rem,.12em)}nav.bd-links li>a:active,nav.bd-links li>a:hover{color:var(--pst-color-link-hover)}nav.bd-links li>a.reference.external:after{content:var(--pst-icon-external-link);font:var(--fa-font-solid);font-size:.75em;margin-left:.3em}nav.bd-links .current>a{background-color:transparent;box-shadow:inset max(3px,.1875rem,.12em) 0 0 var(--pst-color-primary);color:var(--pst-color-primary);font-weight:600}nav.bd-links p.bd-links__title{font-size:var(--pst-sidebar-header-font-size)}nav.bd-links p.bd-links__title,nav.bd-links p.caption{font-weight:var(--pst-sidebar-header-font-weight);margin-bottom:.5rem}nav.bd-links p.caption{color:var(--pst-color-text-base);font-size:var(--pst-sidebar-font-size-mobile);margin-top:1.25rem;position:relative}nav.bd-links p.caption:first-child{margin-top:0}@media(min-width:960px){nav.bd-links p.caption{font-size:var(--pst-sidebar-font-size)}}.bd-sidebar-secondary{background-color:var(--pst-color-background);display:flex;flex-direction:column;flex-shrink:0;font-size:var(--pst-sidebar-font-size-mobile);max-height:calc(100vh - var(--pst-header-height));order:2;overflow-y:auto;padding:2rem 1rem 1rem;position:sticky;top:var(--pst-header-height);width:var(--pst-sidebar-secondary)}@media(min-width:1200px){.bd-sidebar-secondary{font-size:var(--pst-sidebar-font-size)}}.sidebar-secondary-item{padding:.5rem}@media(min-width:1200px){.sidebar-secondary-item{border-left:1px solid var(--pst-color-border);padding-left:1rem}}.sidebar-secondary-item i{padding-right:.5rem}input.sidebar-toggle{display:none}label.overlay{background-color:#000;height:0;left:0;opacity:.5;position:fixed;top:0;transition:opacity .2s ease-out;width:0;z-index:1050}input#__primary:checked+label.overlay.overlay-primary,input#__secondary:checked+label.overlay.overlay-secondary{height:100vh;width:100vw}input#__primary:checked~.bd-container .bd-sidebar-primary{margin-left:0;visibility:visible}input#__secondary:checked~.bd-container .bd-sidebar-secondary{margin-right:0;visibility:visible}@media(min-width:960px){label.sidebar-toggle.primary-toggle{display:none}input#__primary:checked+label.overlay.overlay-primary{height:0;width:0}.bd-sidebar-primary{margin-left:0;visibility:visible}}@media(max-width:959.98px){.bd-sidebar-primary{flex-grow:.75;height:100vh;left:0;margin-left:-75%;max-height:100vh;max-width:350px;position:fixed;top:0;transition:visibility .2s ease-out,margin .2s ease-out;visibility:hidden;width:75%;z-index:1055}}@media(max-width:1199.98px){.bd-sidebar-secondary{flex-grow:.75;height:100vh;margin-right:-75%;max-height:100vh;max-width:350px;position:fixed;right:0;top:0;transition:visibility .2s ease-out,margin .2s ease-out;visibility:hidden;width:75%;z-index:1055}}ul.bd-breadcrumbs{display:flex;flex-wrap:wrap;font-size:.8rem;list-style:none;padding-left:0}ul.bd-breadcrumbs li.breadcrumb-item{align-items:center;display:flex;font-weight:700}ul.bd-breadcrumbs li.breadcrumb-item a{color:var(--pst-color-text-muted);text-decoration:none}ul.bd-breadcrumbs li.breadcrumb-item a:hover{text-decoration-skip:none;color:var(--pst-color-link-hover);text-decoration:underline;text-decoration-skip-ink:none;text-decoration-thickness:max(1px,.0625rem);text-decoration-thickness:max(3px,.1875rem,.12em);text-underline-offset:.1578em}ul.bd-breadcrumbs li.breadcrumb-item a:focus-visible{outline:2px solid var(--pst-color-accent)}ul.bd-breadcrumbs li.breadcrumb-item:not(.breadcrumb-home):before{color:var(--pst-color-text-muted);content:var(--pst-breadcrumb-divider);font:var(--fa-font-solid);font-size:.8rem;padding:0 .5rem}.navbar-icon-links{column-gap:1rem;display:flex;flex-direction:row;flex-wrap:wrap}.navbar-icon-links li.nav-item a.nav-link{padding-left:0;padding-right:0}.navbar-icon-links li.nav-item a.nav-link:hover{box-shadow:0 max(3px,.1875rem,.12em) 0 var(--pst-color-link-hover);color:var(--pst-color-link-hover)}.navbar-icon-links a span{align-items:center;display:flex}.navbar-icon-links i.fa-brands,.navbar-icon-links i.fa-regular,.navbar-icon-links i.fa-solid{font-size:var(--pst-font-size-icon);font-style:normal;vertical-align:middle}.navbar-icon-links i.fa-square-twitter:before{color:#55acee}.navbar-icon-links i.fa-square-gitlab:before{color:#548}.navbar-icon-links i.fa-bitbucket:before{color:#0052cc}.navbar-icon-links img.icon-link-image{border-radius:.2rem;height:1.5em}.navbar-brand{align-items:center;display:flex;flex-shrink:0;gap:.5rem;height:var(--pst-header-height);margin:0;max-height:var(--pst-header-height);padding:.5rem 0;position:relative;width:auto}.navbar-brand p{margin-bottom:0}.navbar-brand img{height:100%;max-width:100%;width:auto}.navbar-brand a{text-decoration:none}.navbar-brand:hover:hover,.navbar-brand:visited:hover:hover{text-decoration-skip:none;color:var(--pst-color-link-hover);text-decoration:underline;text-decoration-skip-ink:none;text-decoration-thickness:max(1px,.0625rem);text-decoration-thickness:max(3px,.1875rem,.12em);text-underline-offset:.1578em}.navbar-nav ul{display:block;list-style:none}.navbar-nav ul ul{padding:0 0 0 1rem}.navbar-nav li{display:flex;flex-direction:column}.navbar-nav li a{align-items:center;color:var(--pst-color-text-muted);display:flex;height:100%;padding-bottom:.25rem;padding-top:.25rem;text-decoration:none}.navbar-nav li a:hover{text-decoration-skip:none;color:var(--pst-color-link-hover);text-decoration:underline;text-decoration-skip-ink:none;text-decoration-thickness:max(1px,.0625rem);text-decoration-thickness:max(3px,.1875rem,.12em);text-underline-offset:.1578em}.navbar-nav li a:focus-visible{outline:2px solid var(--pst-color-accent)}.navbar-nav .toctree-checkbox{display:none;position:absolute}.navbar-nav .toctree-checkbox~ul{display:none}.navbar-nav .toctree-checkbox~label .fa-chevron-down{transform:rotate(0deg)}.navbar-nav .toctree-checkbox:checked~ul{display:block}.navbar-nav .toctree-checkbox:checked~label .fa-chevron-down{transform:rotate(180deg)}.page-toc .section-nav{border-bottom:none;padding-left:0}.page-toc .section-nav ul{padding-left:1rem}.page-toc .nav-link{font-size:var(--pst-sidebar-font-size-mobile)}@media(min-width:1200px){.page-toc .nav-link{font-size:var(--pst-sidebar-font-size)}}.page-toc .onthispage{color:var(--pst-color-text-base);font-weight:var(--pst-sidebar-header-font-weight);margin-bottom:.5rem}.prev-next-area{width:100%}.prev-next-area p{line-height:1.3em;margin:0 .3em}.prev-next-area i{font-size:1.2em}.prev-next-area a{align-items:center;border:none;color:var(--pst-color-text-muted);display:flex;max-width:45%;overflow-x:hidden;padding:10px;text-decoration:none}.prev-next-area a p.prev-next-title{word-wrap:break-word;color:var(--pst-color-link);font-size:1.1em;font-weight:var(--pst-admonition-font-weight-heading);text-decoration:underline;text-decoration-thickness:max(1px,.0625rem);text-underline-offset:.1578em}.prev-next-area a p.prev-next-title:hover{text-decoration-skip:none;color:var(--pst-color-link-hover);text-decoration-skip-ink:none;text-decoration-thickness:max(3px,.1875rem,.12em)}.prev-next-area a p.prev-next-title:active,.prev-next-area a p.prev-next-title:visited{color:var(--pst-color-link)}.prev-next-area a p.prev-next-title:visited:hover{color:var(--pst-color-link-hover)}.prev-next-area a p.prev-next-title:focus-visible{outline:2px solid var(--pst-color-accent)}.prev-next-area a:hover p.prev-next-title:hover{text-decoration-skip:none;color:var(--pst-color-link-hover);text-decoration:underline;text-decoration-skip-ink:none;text-decoration-thickness:max(1px,.0625rem);text-decoration-thickness:max(3px,.1875rem,.12em);text-underline-offset:.1578em}.prev-next-area a:visited p.prev-next-title{color:var(--pst-color-link)}.prev-next-area a:visited p.prev-next-title:hover{color:var(--pst-color-link-hover)}.prev-next-area a .prev-next-info{flex-direction:column;margin:0 .5em}.prev-next-area a .prev-next-info .prev-next-subtitle{text-transform:capitalize}.prev-next-area a.left-prev{float:left}.prev-next-area a.right-next{float:right}.prev-next-area a.right-next div.prev-next-info{text-align:right}.bd-search{border:1px solid var(--pst-color-border);border-radius:.25rem;color:var(--pst-color-text-base);gap:.5rem;padding-left:.5rem;position:relative}.bd-search,.bd-search:active{background-color:var(--pst-color-background)}.bd-search:active{color:var(--pst-color-text-muted)}.bd-search .icon{color:var(--pst-color-border);left:25px;position:absolute}.bd-search .fa-solid.fa-magnifying-glass{color:var(--pst-color-text-muted);left:calc(1.25rem - .35em);position:absolute}.bd-search input::placeholder{color:var(--pst-color-text-muted)}.bd-search input::-webkit-search-cancel-button,.bd-search input::-webkit-search-decoration{-webkit-appearance:none;appearance:none}.bd-search .search-button__kbd-shortcut{color:var(--pst-color-border);display:flex;position:absolute;right:.5rem}.form-control{background-color:var(--pst-color-background);color:var(--pst-color-text-base)}.form-control:focus,.form-control:focus-visible{background-color:var(--pst-color-background);border:none;box-shadow:none;color:var(--pst-color-text-muted);outline:3px solid var(--pst-color-accent)}.search-button{align-content:center;align-items:center;border-radius:0;color:var(--pst-color-text-muted);display:flex;padding:0 0 .25rem}.search-button:hover{box-shadow:0 max(3px,.1875rem,.12em) 0 var(--pst-color-link-hover);color:var(--pst-color-link-hover)}.search-button:focus-visible{outline:2px solid var(--pst-color-accent)}.search-button i{font-size:1.3rem}.search-button__overlay,.search-button__search-container{display:none}.search-button__wrapper.show .search-button__search-container{display:flex;left:50%;margin-top:.5rem;max-width:800px;position:fixed;right:1rem;top:30%;transform:translate(-50%,-50%);width:90%;z-index:1055}.search-button__wrapper.show .search-button__overlay{background-color:#000;display:flex;height:100%;left:0;opacity:.5;position:fixed;top:0;width:100%;z-index:1050}.search-button__wrapper.show form.bd-search{flex-grow:1;padding-bottom:0;padding-top:0}.search-button__wrapper.show input,.search-button__wrapper.show svg{font-size:var(--pst-font-size-icon)}.search-button-field{align-items:center;background-color:var(--pst-color-surface);border:1px solid var(--pst-color-border);border-radius:1.5em;color:var(--pst-color-text-muted);display:inline-flex;padding:.5em}.search-button-field:hover{border:2px solid var(--pst-color-link-hover)}.search-button-field:focus-visible{border:2px solid var(--pst-color-accent)}.search-button-field .search-button__default-text{font-size:var(--bs-nav-link-font-size);font-weight:var(--bs-nav-link-font-weight);margin-left:.5em;margin-right:.5em}.search-button-field .kbd-shortcut__modifier{font-size:.75em}.search-button-field>*{align-items:center}.search-button-field>:not(svg){display:none}@media(min-width:960px){.search-button-field>:not(svg){display:flex}}div#searchbox p.highlight-link{box-shadow:0 .2rem .5rem var(--pst-color-shadow),0 0 .0625rem var(--pst-color-shadow)!important;margin:1rem 0;width:fit-content}@media(min-width:1200px){div#searchbox p.highlight-link{margin-left:2rem}}div#searchbox p.highlight-link a{background-color:var(--pst-color-primary);border-radius:.25rem;color:var(--pst-color-primary-text);font-size:1.25rem;padding:.75rem;text-decoration:none;transition:box-shadow .25s ease-out}div#searchbox p.highlight-link a:hover{box-shadow:inset 0 0 50px 50px rgba(0,0,0,.25)}div#searchbox p.highlight-link a:before{color:unset;content:var(--pst-icon-search-minus);font:var(--fa-font-solid);margin-right:.5rem}.theme-switch-button{border-radius:0;color:var(--pst-color-text-muted);margin:0 -.5rem;padding:0}.theme-switch-button:focus-visible{outline:2px solid var(--pst-color-accent)}.theme-switch-button span{display:none;padding:.5em}.theme-switch-button span:hover{box-shadow:0 max(3px,.1875rem,.12em) 0 var(--pst-color-link-hover);color:var(--pst-color-link-hover)}.theme-switch-button span:active{color:var(--pst-color-link-hover);text-decoration:none}html[data-mode=auto] .theme-switch-button span[data-mode=auto],html[data-mode=dark] .theme-switch-button span[data-mode=dark],html[data-mode=light] .theme-switch-button span[data-mode=light]{display:flex}button.btn.version-switcher__button{border-color:var(--pst-color-border);color:var(--pst-color-text-base);margin-bottom:1em}@media(min-width:960px){button.btn.version-switcher__button{margin-bottom:unset}}button.btn.version-switcher__button:hover{text-decoration-skip:none;color:var(--pst-color-link-hover);text-decoration:underline;text-decoration-skip-ink:none;text-decoration-thickness:max(1px,.0625rem);text-decoration-thickness:max(3px,.1875rem,.12em);text-underline-offset:.1578em}button.btn.version-switcher__button:focus-visible{outline:2px solid var(--pst-color-accent)}button.btn.version-switcher__button:active{border-color:var(--pst-color-border);color:var(--pst-color-text-base)}.version-switcher__menu{border-color:var(--pst-color-border);border-radius:var(--bs-dropdown-border-radius)}.version-switcher__menu a.list-group-item{background-color:var(--pst-color-on-background);color:var(--pst-color-text-base);padding:.75rem 1.25rem}.version-switcher__menu a.list-group-item:not(:last-child){border-bottom:1px solid var(--pst-color-border)}.version-switcher__menu a.list-group-item:hover{text-decoration-skip:none;background-color:var(--pst-color-surface);color:var(--pst-color-link-hover);text-decoration:underline;text-decoration-skip-ink:none;text-decoration-thickness:max(1px,.0625rem);text-decoration-thickness:max(3px,.1875rem,.12em);text-underline-offset:.1578em}.version-switcher__menu a.list-group-item.active{box-shadow:inset max(3px,.1875rem,.12em) 0 0 var(--pst-color-primary);color:var(--pst-color-primary);font-weight:600;position:relative;z-index:1}.version-switcher__menu a.list-group-item.active span:before{content:"";height:100%;left:0;position:absolute;top:0;width:100%;z-index:-1}.version-switcher__menu,button.version-switcher__button{font-size:1.1em;z-index:1055}@media(min-width:960px){.version-switcher__menu,button.version-switcher__button{font-size:unset}}nav.page-toc{margin-bottom:1rem}.bd-toc .nav .nav,.list-caption .nav{display:none}.bd-toc .nav .nav.visible,.bd-toc .nav>.active>ul,.list-caption .nav.visible,.list-caption>.active>ul,.toc-entry{display:block}.toc-entry a.nav-link,.toc-entry a>code{color:var(--pst-color-text-muted)}.toc-entry a.nav-link{display:block;margin-left:-1rem;padding:.125rem 0 .125rem 1rem;text-decoration:none}.toc-entry a.nav-link:hover{text-decoration-skip:none;background-color:transparent;text-decoration:underline;text-decoration-skip-ink:none;text-decoration-thickness:max(3px,.1875rem,.12em)}.toc-entry a.nav-link:active,.toc-entry a.nav-link:hover{color:var(--pst-color-link-hover)}.toc-entry a.nav-link.active{background-color:transparent;box-shadow:inset max(3px,.1875rem,.12em) 0 0 var(--pst-color-primary);color:var(--pst-color-primary);font-weight:600}.toc-entry a.nav-link.active:hover{color:var(--pst-color-link-hover)}div.deprecated,div.versionadded,div.versionchanged{background-color:var(--pst-color-on-background);border-left:.2rem solid;border-color:var(--pst-color-info);border-radius:.25rem;box-shadow:0 .2rem .5rem var(--pst-color-shadow),0 0 .0625rem var(--pst-color-shadow)!important;margin:1.5625em auto;overflow:hidden;padding:0 .6rem;page-break-inside:avoid;position:relative;vertical-align:middle}div.deprecated>p,div.versionadded>p,div.versionchanged>p{margin-bottom:.6rem;margin-top:.6rem}div.versionadded{background-color:var(--pst-color-success-bg);border-color:var(--pst-color-success)}div.versionchanged{background-color:var(--pst-color-warning-bg);border-color:var(--pst-color-warning)}div.deprecated{background-color:var(--pst-color-danger-bg);border-color:var(--pst-color-danger)}span.versionmodified{font-weight:600}span.versionmodified:before{color:var(--pst-color-info);content:var(--pst-icon-versionmodified-default);font:var(--fa-font-solid);margin-right:.6rem}span.versionmodified.added:before{color:var(--pst-color-success);content:var(--pst-icon-versionmodified-added)}span.versionmodified.changed:before{color:var(--pst-color-warning);content:var(--pst-icon-versionmodified-changed)}span.versionmodified.deprecated:before{color:var(--pst-color-danger);content:var(--pst-icon-versionmodified-deprecated)}.sidebar-indices-items{border-top:1px solid var(--pst-color-border);display:flex;flex-direction:column}@media(min-width:960px){.sidebar-indices-items{border-top:none}}.sidebar-indices-items .sidebar-indices-items__title{color:var(--pst-color-text-base);font-size:var(--pst-sidebar-header-font-size);font-weight:var(--pst-sidebar-header-font-weight);margin-bottom:.5rem}.sidebar-indices-items ul.indices-link{list-style:none;margin-right:-1rem;padding:0}.sidebar-indices-items ul.indices-link li>a{color:var(--pst-color-text-muted);display:block;padding:.25rem 0}.sidebar-indices-items ul.indices-link li>a:hover{background-color:transparent;color:var(--pst-color-primary);text-decoration:none}.bd-sidebar-primary div#rtd-footer-container{bottom:-1rem;margin:-1rem;position:sticky}.bd-sidebar-primary div#rtd-footer-container .rst-versions.rst-badge{font-family:var(--pst-font-family-base);font-size:.9em;max-width:unset;position:unset}.bd-sidebar-primary div#rtd-footer-container .rst-versions.rst-badge .rst-current-version{align-items:center;background-color:var(--pst-color-background);border-top:1px solid var(--pst-color-border);color:var(--pst-color-success);display:flex;gap:.2rem;height:2.5rem;transition:background-color .2s ease-out}.bd-sidebar-primary div#rtd-footer-container .rst-versions.rst-badge .fa.fa-book{color:var(--pst-color-text-muted);margin-right:auto}.bd-sidebar-primary div#rtd-footer-container .rst-versions.rst-badge .fa.fa-book:after{color:var(--pst-color-text-base);content:"Read The Docs";font-family:var(--pst-font-family-base);font-weight:var(--pst-admonition-font-weight-heading)}.bd-sidebar-primary div#rtd-footer-container .rst-versions.rst-badge .fa.fa-caret-down{color:var(--pst-color-text-muted)}.bd-sidebar-primary div#rtd-footer-container .rst-versions.rst-badge.shift-up .rst-current-version{border-bottom:1px solid var(--pst-color-border)}.bd-sidebar-primary div#rtd-footer-container .rst-other-versions{background-color:var(--pst-color-surface);color:var(--pst-color-text-base)}.bd-sidebar-primary div#rtd-footer-container .rst-other-versions dl dd a{color:var(--pst-color-text-muted)}.bd-sidebar-primary div#rtd-footer-container .rst-other-versions hr{background-color:var(--pst-color-border)}.bd-sidebar-primary div#rtd-footer-container .rst-other-versions small a{color:var(--pst-color-link)}.bd-sidebar-primary div#rtd-footer-container .rst-other-versions input{background-color:var(--pst-color-surface);border:1px solid var(--pst-color-border);padding-left:.5rem}.admonition,div.admonition{background-color:var(--pst-color-on-background);border-left:.2rem solid;border-color:var(--pst-color-info);border-radius:.25rem;box-shadow:0 .2rem .5rem var(--pst-color-shadow),0 0 .0625rem var(--pst-color-shadow)!important;margin:1.5625em auto;overflow:hidden;padding:0 .6rem .8rem;page-break-inside:avoid}.admonition :last-child,div.admonition :last-child{margin-bottom:0}.admonition p.admonition-title~*,div.admonition p.admonition-title~*{margin-left:1.4rem;margin-right:1.4rem}.admonition>ol,.admonition>ul,div.admonition>ol,div.admonition>ul{margin-left:1em}.admonition>.admonition-title,div.admonition>.admonition-title{background-color:var(--pst-color-info-bg);font-weight:var(--pst-admonition-font-weight-heading);margin:0 -.6rem;padding:.4rem .6rem .4rem 2rem;position:relative;z-index:1}.admonition>.admonition-title:before,div.admonition>.admonition-title:before{content:"";height:100%;left:0;pointer-events:none;position:absolute;top:0;width:100%;z-index:-1}.admonition>.admonition-title:after,div.admonition>.admonition-title:after{color:var(--pst-color-info);content:var(--pst-icon-admonition-default);font:var(--fa-font-solid);height:1rem;left:.5rem;line-height:inherit;opacity:1;position:absolute;width:1rem}.admonition>.admonition-title+*,div.admonition>.admonition-title+*{margin-top:.4em}.admonition.attention,div.admonition.attention{border-color:var(--pst-color-attention)}.admonition.attention>.admonition-title,div.admonition.attention>.admonition-title{background-color:var(--pst-color-attention-bg)}.admonition.attention>.admonition-title:after,div.admonition.attention>.admonition-title:after{color:var(--pst-color-attention);content:var(--pst-icon-admonition-attention)}.admonition.caution,div.admonition.caution{border-color:var(--pst-color-warning)}.admonition.caution>.admonition-title,div.admonition.caution>.admonition-title{background-color:var(--pst-color-warning-bg)}.admonition.caution>.admonition-title:after,div.admonition.caution>.admonition-title:after{color:var(--pst-color-warning);content:var(--pst-icon-admonition-caution)}.admonition.warning,div.admonition.warning{border-color:var(--pst-color-warning)}.admonition.warning>.admonition-title,div.admonition.warning>.admonition-title{background-color:var(--pst-color-warning-bg)}.admonition.warning>.admonition-title:after,div.admonition.warning>.admonition-title:after{color:var(--pst-color-warning);content:var(--pst-icon-admonition-warning)}.admonition.danger,div.admonition.danger{border-color:var(--pst-color-danger)}.admonition.danger>.admonition-title,div.admonition.danger>.admonition-title{background-color:var(--pst-color-danger-bg)}.admonition.danger>.admonition-title:after,div.admonition.danger>.admonition-title:after{color:var(--pst-color-danger);content:var(--pst-icon-admonition-danger)}.admonition.error,div.admonition.error{border-color:var(--pst-color-danger)}.admonition.error>.admonition-title,div.admonition.error>.admonition-title{background-color:var(--pst-color-danger-bg)}.admonition.error>.admonition-title:after,div.admonition.error>.admonition-title:after{color:var(--pst-color-danger);content:var(--pst-icon-admonition-error)}.admonition.hint,div.admonition.hint{border-color:var(--pst-color-success)}.admonition.hint>.admonition-title,div.admonition.hint>.admonition-title{background-color:var(--pst-color-success-bg)}.admonition.hint>.admonition-title:after,div.admonition.hint>.admonition-title:after{color:var(--pst-color-success);content:var(--pst-icon-admonition-hint)}.admonition.tip,div.admonition.tip{border-color:var(--pst-color-success)}.admonition.tip>.admonition-title,div.admonition.tip>.admonition-title{background-color:var(--pst-color-success-bg)}.admonition.tip>.admonition-title:after,div.admonition.tip>.admonition-title:after{color:var(--pst-color-success);content:var(--pst-icon-admonition-tip)}.admonition.important,div.admonition.important{border-color:var(--pst-color-attention)}.admonition.important>.admonition-title,div.admonition.important>.admonition-title{background-color:var(--pst-color-attention-bg)}.admonition.important>.admonition-title:after,div.admonition.important>.admonition-title:after{color:var(--pst-color-attention);content:var(--pst-icon-admonition-important)}.admonition.note,div.admonition.note{border-color:var(--pst-color-info)}.admonition.note>.admonition-title,div.admonition.note>.admonition-title{background-color:var(--pst-color-info-bg)}.admonition.note>.admonition-title:after,div.admonition.note>.admonition-title:after{color:var(--pst-color-info);content:var(--pst-icon-admonition-note)}.admonition.seealso,div.admonition.seealso{border-color:var(--pst-color-success)}.admonition.seealso>.admonition-title,div.admonition.seealso>.admonition-title{background-color:var(--pst-color-success-bg)}.admonition.seealso>.admonition-title:after,div.admonition.seealso>.admonition-title:after{color:var(--pst-color-success);content:var(--pst-icon-admonition-seealso)}.admonition.admonition-todo,div.admonition.admonition-todo{border-color:var(--pst-color-secondary)}.admonition.admonition-todo>.admonition-title,div.admonition.admonition-todo>.admonition-title{background-color:var(--pst-color-secondary-bg)}.admonition.admonition-todo>.admonition-title:after,div.admonition.admonition-todo>.admonition-title:after{color:var(--pst-color-secondary);content:var(--pst-icon-admonition-todo)}.admonition.sidebar,div.admonition.sidebar{border-width:0 0 0 .2rem;clear:both;float:right;margin-left:.5rem;margin-top:0;max-width:40%}.admonition.sidebar.attention,.admonition.sidebar.important,div.admonition.sidebar.attention,div.admonition.sidebar.important{border-color:var(--pst-color-attention)}.admonition.sidebar.caution,.admonition.sidebar.warning,div.admonition.sidebar.caution,div.admonition.sidebar.warning{border-color:var(--pst-color-warning)}.admonition.sidebar.danger,.admonition.sidebar.error,div.admonition.sidebar.danger,div.admonition.sidebar.error{border-color:var(--pst-color-danger)}.admonition.sidebar.hint,.admonition.sidebar.seealso,.admonition.sidebar.tip,div.admonition.sidebar.hint,div.admonition.sidebar.seealso,div.admonition.sidebar.tip{border-color:var(--pst-color-success)}.admonition.sidebar.note,.admonition.sidebar.todo,div.admonition.sidebar.note,div.admonition.sidebar.todo{border-color:var(--pst-color-info)}.admonition.sidebar p.admonition-title~*,div.admonition.sidebar p.admonition-title~*{margin-left:0;margin-right:0}aside.topic,div.topic,div.topic.contents,nav.contents{background-color:var(--pst-color-surface);border-color:var(--pst-color-border);border-radius:.25rem;box-shadow:0 .2rem .5rem var(--pst-color-shadow),0 0 .0625rem var(--pst-color-shadow)!important;display:flex;flex-direction:column;padding:1rem 1.25rem}aside.topic .topic-title,div.topic .topic-title,div.topic.contents .topic-title,nav.contents .topic-title{margin:0 0 .5rem}aside.topic p,div.topic p,div.topic.contents p,nav.contents p{color:var(--pst-color-on-surface)!important}aside.topic ul.simple,div.topic ul.simple,div.topic.contents ul.simple,nav.contents ul.simple{padding-left:1rem}aside.topic ul.simple ul,div.topic ul.simple ul,div.topic.contents ul.simple ul,nav.contents ul.simple ul{padding-left:2em}aside.sidebar{background-color:var(--pst-color-surface);border:1px solid var(--pst-color-border);border-radius:.25rem;margin-left:.5rem;padding:0}aside.sidebar>:last-child{padding-bottom:1rem}aside.sidebar p.sidebar-title{border-bottom:1px solid var(--pst-color-border);font-family:var(--pst-font-family-heading);font-weight:var(--pst-admonition-font-weight-heading);margin-bottom:0;padding-bottom:.5rem;padding-top:.5rem;position:relative}aside.sidebar>:not(.sidebar-title):first-child,aside.sidebar>p.sidebar-title+*{margin-top:1rem}aside.sidebar>*{padding-left:1rem;padding-right:1rem}p.rubric{display:flex;flex-direction:column}.seealso dd{margin-bottom:0;margin-top:0}table.field-list{border-collapse:separate;border-spacing:10px;margin-left:1px}table.field-list th.field-name{background-color:var(--pst-color-surface);padding:1px 8px 1px 5px;white-space:nowrap}table.field-list td.field-body p{font-style:italic}table.field-list td.field-body p>strong{font-style:normal}table.field-list td.field-body blockquote{border-left:none;margin:0 0 .3em;padding-left:30px}.table.autosummary td:first-child{white-space:nowrap}.sig{font-family:var(--pst-font-family-monospace)}.sig-inline.c-texpr,.sig-inline.cpp-texpr{font-family:unset}.sig.c .k,.sig.c .kt,.sig.c .m,.sig.c .s,.sig.c .sc,.sig.cpp .k,.sig.cpp .kt,.sig.cpp .m,.sig.cpp .s,.sig.cpp .sc{color:var(--pst-color-text-base)}.sig-name{color:var(--pst-color-inline-code)}.sig-param .default_value,.sig-param .o{color:var(--pst-color-text-muted);font-weight:400}dt:target,span.highlighted{background-color:var(--pst-color-target)}.viewcode-back{font-family:var(--pst-font-family-base)}.viewcode-block:target{background-color:var(--pst-color-target);border-bottom:1px solid var(--pst-color-border);border-top:1px solid var(--pst-color-border);position:relative}dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple){margin-bottom:3rem}dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) dd{margin-left:2rem}dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) dd>dl.simple>dt{display:flex}dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) dl.field-list{display:grid;grid-template-columns:unset}dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) dt.field-even,dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) dt.field-odd{background-color:var(--pst-color-surface);margin-bottom:.1rem;margin-top:.2rem}div.highlight,div.literal-block-wrapper,div[class*=highlight-]{border-radius:.25rem;display:flex;flex-direction:column;width:unset}div.literal-block-wrapper{border:1px solid var(--pst-color-border);border-radius:.25rem}div.literal-block-wrapper div.code-block-caption{border-bottom:1px solid var(--pst-color-border);font-size:1rem;font-weight:var(--pst-font-weight-caption);margin:0;padding:.5rem}div.literal-block-wrapper div.code-block-caption a.headerlink{font-size:inherit}div.literal-block-wrapper div[class*=highlight-]{border-radius:0;margin:0}div.literal-block-wrapper div[class*=highlight-] pre{border:none;box-shadow:none}code.literal{background-color:var(--pst-color-surface);border:1px solid var(--pst-color-border);border-radius:.25rem;padding:.1rem .25rem}a>code{color:var(--pst-color-inline-code-links)}html[data-theme=light] .highlight .nf{color:#0078a1!important}span.linenos{opacity:.8!important}figure a.headerlink{font-size:inherit;position:absolute}figure:hover a.headerlink{visibility:visible}figure figcaption{color:var(--pst-color-text-muted);font-family:var(--pst-font-family-heading);font-weight:var(--pst-font-weight-caption);margin-left:auto;margin-right:auto}figure figcaption table.table{margin-left:auto;margin-right:auto;width:fit-content}dt.label>span.brackets:not(:only-child):before{content:"["}dt.label>span.brackets:not(:only-child):after{content:"]"}a.footnote-reference{font-size:small;vertical-align:super}aside.footnote{margin-bottom:.5rem}aside.footnote:last-child{margin-bottom:1rem}aside.footnote span.backrefs,aside.footnote span.label{font-weight:700}aside.footnote:target{background-color:var(--pst-color-target)}div.doctest>div.highlight span.gp,span.linenos,table.highlighttable td.linenos{user-select:none;-webkit-user-select:text;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}dd{margin-bottom:10px;margin-left:30px;margin-top:3px}ol,ul{padding-inline-start:2rem}ol li>p:first-child,ul li>p:first-child{margin-bottom:.25rem;margin-top:.25rem}blockquote{background-color:var(--pst-color-surface);border-left:.25em solid var(--pst-color-border);border-radius:.25rem;color:var(--pst-color-text-muted);padding:1em;position:relative}blockquote p{color:var(--pst-color-text-base)}blockquote .line-block{margin:0}blockquote p:last-child{margin-bottom:0}blockquote:before{content:"";height:100%;left:0;pointer-events:none;position:absolute;top:0;width:100%;z-index:-1}span.guilabel{background-color:var(--pst-color-info-bg);border:1px solid var(--pst-color-info);border-radius:4px;color:var(--pst-color-info);font-size:80%;font-weight:700;margin:auto 2px;padding:2.4px 6px;position:relative}span.guilabel:before{content:"";height:100%;left:0;pointer-events:none;position:absolute;top:0;width:100%;z-index:-1}a.reference.download:before{color:var(--pst-color-text-muted);content:var(--pst-icon-download);font:var(--fa-font-solid);font-size:.8em;padding:0 .25em}table{display:table;margin-left:auto;margin-right:auto;overflow:auto}table.table-right{margin-right:0}table.table-left{margin-left:0}table caption{caption-side:top;color:var(--pst-color-text-muted);text-align:center}td.text-align\:left,th.text-align\:left{text-align:left}td.text-align\:right,th.text-align\:right{text-align:right}td.text-align\:center,th.text-align\:center{text-align:center}.table{--bs-table-bg:transparent}.toctree-wrapper p.caption{font-size:1.5em;margin-bottom:0}.toctree-wrapper>ul{padding-left:0}.toctree-wrapper li[class^=toctree-l]{list-style:none;margin-bottom:.2em}.toctree-wrapper li[class^=toctree-l]>a{font-size:1.1em;list-style:none}.toctree-wrapper li[class^=toctree-l]>ul{list-style:none;padding-inline-start:1.5em}.toctree-wrapper .toctree-l1>a{font-size:1.3em}div.topic.contents ul.simple,nav.contents ul.simple{list-style:none;padding-left:0}div.math,span.math{align-items:center;display:flex;max-width:100%;overflow:hidden}span.math{display:inline-flex}div.math{flex-direction:row-reverse;gap:.5em}div.math span.eqno a.headerlink{font-size:1em;position:relative}div.math mjx-container{flex-grow:1;overflow:auto;padding-bottom:.2rem}div.math mjx-container mjx-assistive-mml{height:0}.ablog-sidebar-item h2,.ablog-sidebar-item h3{font-size:var(--pst-sidebar-header-font-size);margin-top:.5rem}.ablog-sidebar-item h2 a,.ablog-sidebar-item h3 a{color:var(--pst-color-text-base)}.ablog-sidebar-item ul{display:flex;flex-direction:column;gap:.5em;list-style:none;margin-bottom:0;overflow-y:hidden;padding-left:0}.ablog-sidebar-item ul.ablog-cloud{flex-direction:row;flex-flow:wrap;gap:.5rem}.ablog-sidebar-item ul.ablog-cloud li{align-items:center;display:flex}.ablog__prev-next{display:flex;font-size:1.2em;padding:1rem 0}.ablog__prev-next>span{display:flex;max-width:45%}.ablog__prev-next>span a{align-items:center;display:flex;gap:1rem;line-height:1.5rem;margin-left:auto}.ablog__prev-next>span a i:before{color:var(--pst-color-text-base)}.ablog__prev-next span.ablog__prev i.fa-arrow-circle-left:before{content:var(--pst-icon-angle-left)}.ablog__prev-next span.ablog__spacer{display:none}.ablog__prev-next span.ablog__next{margin-left:auto;text-align:right}.ablog__prev-next span.ablog__next i.fa-arrow-circle-right:before{content:var(--pst-icon-angle-right)}.ablog__collection,.postlist{padding-left:0}.ablog__collection .ablog-post,.postlist .ablog-post{list-style:none}.ablog__collection .ablog-post .ablog-archive,.postlist .ablog-post .ablog-archive{display:flex;flex-direction:row;flex-wrap:wrap;font-size:.75rem;gap:1rem;list-style:none;padding-left:0}.ablog__collection .ablog-post .ablog-post-title,.postlist .ablog-post .ablog-post-title{font-size:1.25rem;margin-top:0}.ablog__collection .ablog-post .ablog-post-title a,.postlist .ablog-post .ablog-post-title a{font-weight:700}.ablog__collection .ablog-post .ablog-post-expand,.postlist .ablog-post .ablog-post-expand{margin-bottom:.5rem}.docutils.container{margin-left:unset;margin-right:unset;max-width:unset;padding-left:unset;padding-right:unset;width:unset}div.highlight button.copybtn{align-items:center;background-color:unset;background-color:var(--pst-color-surface);border:none;display:flex;justify-content:center}div.highlight button.copybtn:not(.success){color:var(--pst-color-muted)}div.highlight button.copybtn:hover:not(.success){background-color:var(--pst-color-shadow);color:var(--pst-color-text)}div.highlight button.copybtn.o-tooltip--left:after{background-color:var(--pst-color-surface);color:var(--pst-color-text)}#ethical-ad-placement .ethical-footer a,#ethical-ad-placement .ethical-footer a:active,#ethical-ad-placement .ethical-footer a:hover,#ethical-ad-placement .ethical-footer a:visited,#ethical-ad-placement .ethical-sidebar a,#ethical-ad-placement .ethical-sidebar a:active,#ethical-ad-placement .ethical-sidebar a:hover,#ethical-ad-placement .ethical-sidebar a:visited{color:var(--pst-color-text-base)}#ethical-ad-placement .ethical-footer,#ethical-ad-placement .ethical-sidebar{background-color:var(--pst-color-background);border:1px solid var(--pst-color-border);border-radius:5px;color:var(--pst-color-text-base);font-size:14px;line-height:20px}.bd-content div.jupyter_container{background-color:unset;border:none;box-shadow:none}.bd-content div.jupyter_container div.highlight,.bd-content div.jupyter_container div.output{border-radius:.25rem}.bd-content div.jupyter_container div.highlight{background-color:var(--pst-color-surface)}.bd-content div.jupyter_container .cell_input,.bd-content div.jupyter_container .cell_output{border-radius:.25rem}.bd-content div.jupyter_container .cell_input pre,.bd-content div.jupyter_container .cell_output pre{padding:1rem}.xr-wrap[hidden]{display:block!important}:root{--pst-teal-50:#f4fbfc;--pst-teal-100:#e9f6f8;--pst-teal-200:#d0ecf1;--pst-teal-300:#abdde6;--pst-teal-400:#3fb1c5;--pst-teal-500:#0a7d91;--pst-teal-600:#085d6c;--pst-teal-700:#064752;--pst-teal-800:#042c33;--pst-teal-900:#021b1f;--pst-violet-50:#f4eefb;--pst-violet-100:#e0c7ff;--pst-violet-200:#d5b4fd;--pst-violet-300:#b780ff;--pst-violet-400:#9c5ffd;--pst-violet-500:#8045e5;--pst-violet-600:#6432bd;--pst-violet-700:#4b258f;--pst-violet-800:#341a61;--pst-violet-900:#1e0e39;--pst-gray-50:#f9f9fa;--pst-gray-100:#f3f4f5;--pst-gray-200:#e5e7ea;--pst-gray-300:#d1d5da;--pst-gray-400:#9ca4af;--pst-gray-500:#677384;--pst-gray-600:#48566b;--pst-gray-700:#29313d;--pst-gray-800:#222832;--pst-gray-900:#14181e;--pst-pink-50:#fcf8fd;--pst-pink-100:#fcf0fa;--pst-pink-200:#f8dff5;--pst-pink-300:#f3c7ee;--pst-pink-400:#e47fd7;--pst-pink-500:#c132af;--pst-pink-600:#912583;--pst-pink-700:#6e1c64;--pst-pink-800:#46123f;--pst-pink-900:#2b0b27;--pst-foundation-white:#fff;--pst-foundation-black:#14181e}html:not([data-theme]){--pst-color-primary:#0a7d91;--pst-color-primary-bg:#d0ecf1;--pst-color-secondary:#8045e5;--pst-color-secondary-bg:#e0c7ff;--pst-color-accent:#c132af;--pst-color-accent-bg:#f8dff5;--pst-color-info:#276be9;--pst-color-info-bg:#dce7fc;--pst-color-warning:#f66a0a;--pst-color-warning-bg:#f8e3d0;--pst-color-success:#00843f;--pst-color-success-bg:#d6ece1;--pst-color-attention:var(--pst-color-warning);--pst-color-attention-bg:var(--pst-color-warning-bg);--pst-color-danger:#d72d47;--pst-color-danger-bg:#f9e1e4;--pst-color-text-base:#222832;--pst-color-text-muted:#48566b;--pst-color-heading-color:#fff;--pst-color-shadow:rgba(0,0,0,.1);--pst-color-border:#d1d5da;--pst-color-border-muted:rgba(23,23,26,.2);--pst-color-inline-code:#912583;--pst-color-inline-code-links:#085d6c;--pst-color-target:#f3cf95;--pst-color-background:#fff;--pst-color-on-background:#fff;--pst-color-surface:#f3f4f5;--pst-color-on-surface:#222832;--pst-color-link:var(--pst-color-primary);--pst-color-link-hover:var(--pst-color-secondary)}html:not([data-theme]) .only-dark,html:not([data-theme]) .only-dark~figcaption{display:none!important}html[data-theme=light]{--pst-color-primary-bg:#d0ecf1;--pst-color-secondary-bg:#e0c7ff;--pst-color-accent:#c132af;--pst-color-accent-bg:#f8dff5;--pst-color-info-bg:#dce7fc;--pst-color-warning-bg:#f8e3d0;--pst-color-success-bg:#d6ece1;--pst-color-attention:var(--pst-color-warning);--pst-color-attention-bg:var(--pst-color-warning-bg);--pst-color-danger-bg:#f9e1e4;--pst-color-text-base:#222832;--pst-color-text-muted:#48566b;--pst-color-heading-color:#fff;--pst-color-shadow:rgba(0,0,0,.1);--pst-color-border:#d1d5da;--pst-color-border-muted:rgba(23,23,26,.2);--pst-color-inline-code:#912583;--pst-color-inline-code-links:#085d6c;--pst-color-target:#f3cf95;--pst-color-background:#fff;--pst-color-on-background:#fff;--pst-color-surface:#f3f4f5;--pst-color-on-surface:#222832;--pst-color-link:var(--pst-color-primary);--pst-color-link-hover:var(--pst-color-secondary);color-scheme:light}html[data-theme=light] .only-dark,html[data-theme=light] .only-dark~figcaption{display:none!important}html[data-theme=dark]{--pst-color-primary-bg:#042c33;--pst-color-secondary-bg:#341a61;--pst-color-accent:#e47fd7;--pst-color-accent-bg:#46123f;--pst-color-info-bg:#06245d;--pst-color-warning-bg:#652a02;--pst-color-success-bg:#002f17;--pst-color-attention:var(--pst-color-warning);--pst-color-attention-bg:var(--pst-color-warning-bg);--pst-color-danger-bg:#4e111b;--pst-color-text-base:#ced6dd;--pst-color-text-muted:#9ca4af;--pst-color-heading-color:#14181e;--pst-color-shadow:rgba(0,0,0,.2);--pst-color-border:#48566b;--pst-color-border-muted:#29313d;--pst-color-inline-code:#f3c7ee;--pst-color-inline-code-links:#3fb1c5;--pst-color-target:#675c04;--pst-color-background:#14181e;--pst-color-on-background:#222832;--pst-color-surface:#29313d;--pst-color-on-surface:#f3f4f5;--pst-color-link:var(--pst-color-primary);--pst-color-link-hover:var(--pst-color-secondary);color-scheme:dark}html[data-theme=dark] .only-light,html[data-theme=dark] .only-light~figcaption{display:none!important}html[data-theme=dark] img:not(.only-dark):not(.dark-light){filter:brightness(.8) contrast(1.2)}html[data-theme=dark] .bd-content img:not(.only-dark):not(.dark-light){background:#fff;border-radius:.25rem}html[data-theme=dark] .MathJax_SVG *{fill:var(--pst-color-text-base)}.pst-color-primary{color:var(--pst-color-primary)}.pst-color-secondary{color:var(--pst-color-secondary)}.pst-color-accent{color:var(--pst-color-accent)}.pst-color-info{color:var(--pst-color-info)}.pst-color-warning{color:var(--pst-color-warning)}.pst-color-success{color:var(--pst-color-success)}.pst-color-attention{color:var(--pst-color-attention)}.pst-color-danger{color:var(--pst-color-danger)}.pst-color-text-base{color:var(--pst-color-text-base)}.pst-color-text-muted{color:var(--pst-color-text-muted)}.pst-color-heading-color{color:var(--pst-color-heading-color)}.pst-color-shadow{color:var(--pst-color-shadow)}.pst-color-border{color:var(--pst-color-border)}.pst-color-border-muted{color:var(--pst-color-border-muted)}.pst-color-inline-code{color:var(--pst-color-inline-code)}.pst-color-inline-code-links{color:var(--pst-color-inline-code-links)}.pst-color-target{color:var(--pst-color-target)}.pst-color-background{color:var(--pst-color-background)}.pst-color-on-background{color:var(--pst-color-on-background)}.pst-color-surface{color:var(--pst-color-surface)}.pst-color-on-surface{color:var(--pst-color-on-surface)}html[data-theme=light]{--pst-color-primary:#0a7d91;--pst-color-primary-text:#fff;--pst-color-primary-highlight:#053f49;--sd-color-primary:var(--pst-color-primary);--sd-color-primary-text:var(--pst-color-primary-text);--sd-color-primary-highlight:var(--pst-color-primary-highlight);--sd-color-primary-bg:#d0ecf1;--sd-color-primary-bg-text:#14181e;--pst-color-secondary:#8045e5;--pst-color-secondary-text:#fff;--pst-color-secondary-highlight:#591bc2;--sd-color-secondary:var(--pst-color-secondary);--sd-color-secondary-text:var(--pst-color-secondary-text);--sd-color-secondary-highlight:var(--pst-color-secondary-highlight);--sd-color-secondary-bg:#e0c7ff;--sd-color-secondary-bg-text:#14181e;--pst-color-success:#00843f;--pst-color-success-text:#fff;--pst-color-success-highlight:#00381a;--sd-color-success:var(--pst-color-success);--sd-color-success-text:var(--pst-color-success-text);--sd-color-success-highlight:var(--pst-color-success-highlight);--sd-color-success-bg:#d6ece1;--sd-color-success-bg-text:#14181e;--pst-color-info:#276be9;--pst-color-info-text:#fff;--pst-color-info-highlight:#124ab1;--sd-color-info:var(--pst-color-info);--sd-color-info-text:var(--pst-color-info-text);--sd-color-info-highlight:var(--pst-color-info-highlight);--sd-color-info-bg:#dce7fc;--sd-color-info-bg-text:#14181e;--pst-color-warning:#f66a0a;--pst-color-warning-text:#14181e;--pst-color-warning-highlight:#ad4a06;--sd-color-warning:var(--pst-color-warning);--sd-color-warning-text:var(--pst-color-warning-text);--sd-color-warning-highlight:var(--pst-color-warning-highlight);--sd-color-warning-bg:#f8e3d0;--sd-color-warning-bg-text:#14181e;--pst-color-danger:#d72d47;--pst-color-danger-text:#fff;--pst-color-danger-highlight:#9a1d30;--sd-color-danger:var(--pst-color-danger);--sd-color-danger-text:var(--pst-color-danger-text);--sd-color-danger-highlight:var(--pst-color-danger-highlight);--sd-color-danger-bg:#f9e1e4;--sd-color-danger-bg-text:#14181e;--pst-color-light:#f3f4f5;--pst-color-light-text:#14181e;--pst-color-light-highlight:#c9ced2;--sd-color-light:var(--pst-color-light);--sd-color-light-text:var(--pst-color-light-text);--sd-color-light-highlight:var(--pst-color-light-highlight);--sd-color-light-bg:#f7f7f8;--sd-color-light-bg-text:#14181e;--pst-color-muted:#29313d;--pst-color-muted-text:#fff;--pst-color-muted-highlight:#0a0c0f;--sd-color-muted:var(--pst-color-muted);--sd-color-muted-text:var(--pst-color-muted-text);--sd-color-muted-highlight:var(--pst-color-muted-highlight);--sd-color-muted-bg:#5a6c86;--sd-color-muted-bg-text:#fff;--pst-color-dark:#222832;--pst-color-dark-text:#fff;--pst-color-dark-highlight:#030404;--sd-color-dark:var(--pst-color-dark);--sd-color-dark-text:var(--pst-color-dark-text);--sd-color-dark-highlight:var(--pst-color-dark-highlight);--pst-color-black:#14181e;--pst-color-black-text:#fff;--pst-color-black-highlight:#000;--sd-color-black:var(--pst-color-black);--sd-color-black-text:var(--pst-color-black-text);--sd-color-black-highlight:var(--pst-color-black-highlight);--pst-color-white:#fff;--pst-color-white-text:#14181e;--pst-color-white-highlight:#d9d9d9;--sd-color-white:var(--pst-color-white);--sd-color-white-text:var(--pst-color-white-text);--sd-color-white-highlight:var(--pst-color-white-highlight)}html[data-theme=dark]{--pst-color-primary:#3fb1c5;--pst-color-primary-text:#14181e;--pst-color-primary-highlight:#2b7e8d;--sd-color-primary:var(--pst-color-primary);--sd-color-primary-text:var(--pst-color-primary-text);--sd-color-primary-highlight:var(--pst-color-primary-highlight);--sd-color-primary-bg:#042c33;--sd-color-primary-bg-text:#fff;--pst-color-secondary:#9c5ffd;--pst-color-secondary-text:#14181e;--pst-color-secondary-highlight:#6d13fc;--sd-color-secondary:var(--pst-color-secondary);--sd-color-secondary-text:var(--pst-color-secondary-text);--sd-color-secondary-highlight:var(--pst-color-secondary-highlight);--sd-color-secondary-bg:#341a61;--sd-color-secondary-bg-text:#fff;--pst-color-success:#5fb488;--pst-color-success-text:#14181e;--pst-color-success-highlight:#3f8762;--sd-color-success:var(--pst-color-success);--sd-color-success-text:var(--pst-color-success-text);--sd-color-success-highlight:var(--pst-color-success-highlight);--sd-color-success-bg:#002f17;--sd-color-success-bg-text:#fff;--pst-color-info:#79a3f2;--pst-color-info-text:#14181e;--pst-color-info-highlight:#3373eb;--sd-color-info:var(--pst-color-info);--sd-color-info-text:var(--pst-color-info-text);--sd-color-info-highlight:var(--pst-color-info-highlight);--sd-color-info-bg:#06245d;--sd-color-info-bg-text:#fff;--pst-color-warning:#ff9245;--pst-color-warning-text:#14181e;--pst-color-warning-highlight:#f86600;--sd-color-warning:var(--pst-color-warning);--sd-color-warning-text:var(--pst-color-warning-text);--sd-color-warning-highlight:var(--pst-color-warning-highlight);--sd-color-warning-bg:#652a02;--sd-color-warning-bg-text:#fff;--pst-color-danger:#e78894;--pst-color-danger-text:#14181e;--pst-color-danger-highlight:#da485b;--sd-color-danger:var(--pst-color-danger);--sd-color-danger-text:var(--pst-color-danger-text);--sd-color-danger-highlight:var(--pst-color-danger-highlight);--sd-color-danger-bg:#4e111b;--sd-color-danger-bg-text:#fff;--pst-color-light:#f3f4f5;--pst-color-light-text:#14181e;--pst-color-light-highlight:#c9ced2;--sd-color-light:var(--pst-color-light);--sd-color-light-text:var(--pst-color-light-text);--sd-color-light-highlight:var(--pst-color-light-highlight);--sd-color-light-bg:#a3abb2;--sd-color-light-bg-text:#14181e;--pst-color-muted:#f3f4f5;--pst-color-muted-text:#14181e;--pst-color-muted-highlight:#c9ced2;--sd-color-muted:var(--pst-color-muted);--sd-color-muted-text:var(--pst-color-muted-text);--sd-color-muted-highlight:var(--pst-color-muted-highlight);--sd-color-muted-bg:#1d222b;--sd-color-muted-bg-text:#fff;--pst-color-dark:#222832;--pst-color-dark-text:#fff;--pst-color-dark-highlight:#030404;--sd-color-dark:var(--pst-color-dark);--sd-color-dark-text:var(--pst-color-dark-text);--sd-color-dark-highlight:var(--pst-color-dark-highlight);--pst-color-black:#14181e;--pst-color-black-text:#fff;--pst-color-black-highlight:#000;--sd-color-black:var(--pst-color-black);--sd-color-black-text:var(--pst-color-black-text);--sd-color-black-highlight:var(--pst-color-black-highlight);--pst-color-white:#fff;--pst-color-white-text:#14181e;--pst-color-white-highlight:#d9d9d9;--sd-color-white:var(--pst-color-white);--sd-color-white-text:var(--pst-color-white-text);--sd-color-white-highlight:var(--pst-color-white-highlight)}html[data-theme=dark],html[data-theme=light]{--sd-color-card-border:var(--pst-color-border)}html[data-theme=light] .sd-shadow-lg,html[data-theme=light] .sd-shadow-md,html[data-theme=light] .sd-shadow-sm,html[data-theme=light] .sd-shadow-xs{box-shadow:0 .2rem .5rem var(--pst-color-shadow),0 0 .0625rem var(--pst-color-shadow)!important}.bd-content .sd-card{border:1px solid var(--pst-color-border)}.bd-content .sd-card .sd-card-header{background-color:var(--pst-color-panel-background);border-bottom:1px solid var(--pst-color-border)}.bd-content .sd-card .sd-card-footer{border-top:1px solid var(--pst-color-border)}.bd-content .sd-card .sd-card-body,.bd-content .sd-card .sd-card-footer{background-color:var(--pst-color-panel-background)}.bd-content .sd-tab-set>input:checked+label{border-color:transparent transparent var(--pst-color-primary);color:var(--pst-color-primary)}.bd-content .sd-tab-set>input:not(:checked)+label:hover{border-color:var(--pst-color-secondary);color:var(--pst-color-secondary)}.bd-content .sd-tab-set>label{border-top:.125rem solid transparent;color:var(--pst-color-text-muted);padding-top:.5em}html .bd-content .sd-tab-set>label:hover{border-color:var(--pst-color-secondary);color:var(--pst-color-secondary)}details.sd-dropdown{border:0!important;box-shadow:0 .2rem .5rem var(--pst-color-shadow),0 0 .0625rem var(--pst-color-shadow)!important}details.sd-dropdown summary.sd-card-header{border:0!important}details.sd-dropdown summary.sd-card-header+div.sd-summary-content{border:0}details.sd-dropdown summary.sd-card-header{--pst-sd-dropdown-color:var(--pst-gray-500);--pst-sd-dropdown-bg-color:var(--pst-color-surface);align-items:center;background-color:var(--pst-sd-dropdown-bg-color)!important;border-left:.2rem solid var(--pst-sd-dropdown-color)!important;display:flex;font-weight:600;padding-bottom:.5rem;padding-top:.5rem;position:relative}details.sd-dropdown summary.sd-card-header+div.sd-summary-content{--pst-sd-dropdown-color:var(--sd-color-card-border)}details.sd-dropdown summary.sd-card-header.sd-bg-primary,details.sd-dropdown summary.sd-card-header.sd-bg-primary+div.sd-summary-content{--pst-sd-dropdown-color:var(--sd-color-primary);--pst-sd-dropdown-bg-color:var(--sd-color-primary-bg)}details.sd-dropdown summary.sd-card-header.sd-bg-text-primary{color:var(--sd-color-primary-bg-text)!important}details.sd-dropdown summary.sd-card-header.sd-bg-secondary,details.sd-dropdown summary.sd-card-header.sd-bg-secondary+div.sd-summary-content{--pst-sd-dropdown-color:var(--sd-color-secondary);--pst-sd-dropdown-bg-color:var(--sd-color-secondary-bg)}details.sd-dropdown summary.sd-card-header.sd-bg-text-secondary{color:var(--sd-color-secondary-bg-text)!important}details.sd-dropdown summary.sd-card-header.sd-bg-success,details.sd-dropdown summary.sd-card-header.sd-bg-success+div.sd-summary-content{--pst-sd-dropdown-color:var(--sd-color-success);--pst-sd-dropdown-bg-color:var(--sd-color-success-bg)}details.sd-dropdown summary.sd-card-header.sd-bg-text-success{color:var(--sd-color-success-bg-text)!important}details.sd-dropdown summary.sd-card-header.sd-bg-info,details.sd-dropdown summary.sd-card-header.sd-bg-info+div.sd-summary-content{--pst-sd-dropdown-color:var(--sd-color-info);--pst-sd-dropdown-bg-color:var(--sd-color-info-bg)}details.sd-dropdown summary.sd-card-header.sd-bg-text-info{color:var(--sd-color-info-bg-text)!important}details.sd-dropdown summary.sd-card-header.sd-bg-warning,details.sd-dropdown summary.sd-card-header.sd-bg-warning+div.sd-summary-content{--pst-sd-dropdown-color:var(--sd-color-warning);--pst-sd-dropdown-bg-color:var(--sd-color-warning-bg)}details.sd-dropdown summary.sd-card-header.sd-bg-text-warning{color:var(--sd-color-warning-bg-text)!important}details.sd-dropdown summary.sd-card-header.sd-bg-danger,details.sd-dropdown summary.sd-card-header.sd-bg-danger+div.sd-summary-content{--pst-sd-dropdown-color:var(--sd-color-danger);--pst-sd-dropdown-bg-color:var(--sd-color-danger-bg)}details.sd-dropdown summary.sd-card-header.sd-bg-text-danger{color:var(--sd-color-danger-bg-text)!important}details.sd-dropdown summary.sd-card-header.sd-bg-light,details.sd-dropdown summary.sd-card-header.sd-bg-light+div.sd-summary-content{--pst-sd-dropdown-color:var(--sd-color-light);--pst-sd-dropdown-bg-color:var(--sd-color-light-bg)}details.sd-dropdown summary.sd-card-header.sd-bg-text-light{color:var(--sd-color-light-bg-text)!important}details.sd-dropdown summary.sd-card-header.sd-bg-muted,details.sd-dropdown summary.sd-card-header.sd-bg-muted+div.sd-summary-content{--pst-sd-dropdown-color:var(--sd-color-muted);--pst-sd-dropdown-bg-color:var(--sd-color-muted-bg)}details.sd-dropdown summary.sd-card-header.sd-bg-text-muted{color:var(--sd-color-muted-bg-text)!important}details.sd-dropdown summary.sd-card-header.sd-bg-dark,details.sd-dropdown summary.sd-card-header.sd-bg-dark+div.sd-summary-content{--pst-sd-dropdown-color:var(--sd-color-dark);--pst-sd-dropdown-bg-color:var(--sd-color-dark-bg)}details.sd-dropdown summary.sd-card-header.sd-bg-text-dark{color:var(--sd-color-dark-bg-text)!important}details.sd-dropdown summary.sd-card-header.sd-bg-black,details.sd-dropdown summary.sd-card-header.sd-bg-black+div.sd-summary-content{--pst-sd-dropdown-color:var(--sd-color-black);--pst-sd-dropdown-bg-color:var(--sd-color-black-bg)}details.sd-dropdown summary.sd-card-header.sd-bg-text-black{color:var(--sd-color-black-bg-text)!important}details.sd-dropdown summary.sd-card-header.sd-bg-white,details.sd-dropdown summary.sd-card-header.sd-bg-white+div.sd-summary-content{--pst-sd-dropdown-color:var(--sd-color-white);--pst-sd-dropdown-bg-color:var(--sd-color-white-bg)}details.sd-dropdown summary.sd-card-header.sd-bg-text-white{color:var(--sd-color-white-bg-text)!important}details.sd-dropdown summary.sd-card-header:before{content:"";height:100%;left:0;pointer-events:none;position:absolute;top:0;width:100%;z-index:-1}details.sd-dropdown summary.sd-card-header+div.sd-summary-content{background-color:var(--pst-color-on-background);border-bottom-left-radius:calc(.25rem - 1px);border-left:.2rem solid var(--pst-sd-dropdown-color)!important}details.sd-dropdown summary.sd-card-header span.sd-summary-icon{align-items:center;color:var(--pst-sd-dropdown-color)!important;display:inline-flex}details.sd-dropdown summary.sd-card-header span.sd-summary-icon svg{opacity:1}details.sd-dropdown summary.sd-card-header .sd-summary-down,details.sd-dropdown summary.sd-card-header .sd-summary-up{top:.7rem}.bd-content .admonition button.toggle-button{color:inherit}.bd-content details.toggle-details summary{border-left:3px solid var(--pst-color-primary)}html div.rendered_html html .jp-RenderedHTMLCommon table{table-layout:auto}html[data-theme=dark] .bd-content .nboutput .output_area.rendered_html{background-color:var(--pst-color-text-base);border-radius:.25rem;color:var(--pst-color-on-background);padding:.5rem}html[data-theme=dark] .bd-content .nboutput .output_area.stderr{background:var(--pst-color-danger)}div.nblast.container{margin-bottom:1rem}div.cell_output .output{max-width:100%;overflow-x:auto}html[data-theme=dark] .bd-content div.cell_output .text_html,html[data-theme=dark] .bd-content div.cell_output img{background-color:var(--pst-color-text-base);border-radius:.25rem;color:var(--pst-color-on-background);padding:.5rem}.bd-content div.cell_input{display:flex;flex-direction:column;justify-content:stretch}.bd-content div.cell_input,.bd-content div.output{border-radius:.25rem}.bd-content div.output table{table-layout:auto}html[data-theme=dark] .bd-content img.leaflet-tile.leaflet-tile-loaded{border-radius:0;padding:0}.bd-search-container div#search-results>h2{font-size:var(--pst-font-size-icon);margin-top:0}.bd-search-container div#search-results p.search-summary{color:var(--pst-color-text-muted)}.bd-search-container ul.search{list-style:none;margin:0}.bd-search-container ul.search li{background-image:none;border-top:1px solid var(--pst-color-text-muted);margin:1rem 0;padding:1rem 0}.bd-search-container ul.search li>a{font-size:1.2em}.bd-search-container ul.search li div.context,.bd-search-container ul.search li p.context{color:var(--pst-color-text-base);margin:.5em 0 0}.bd-search-container ul.search li div.context a:before,.bd-search-container ul.search li p.context a:before{color:var(--pst-color-text-muted);content:"#";padding-right:.2em} /*# sourceMappingURL=pydata-sphinx-theme.css.map*/ \ No newline at end of file diff --git a/_static/styles/pydata-sphinx-theme.css.map b/_static/styles/pydata-sphinx-theme.css.map index d6e411a..25f5c71 100644 --- a/_static/styles/pydata-sphinx-theme.css.map +++ b/_static/styles/pydata-sphinx-theme.css.map @@ -1 +1 @@ -{"version":3,"file":"styles/pydata-sphinx-theme.css","mappings":"AAAA,KCAA,wBAOE,+DACA,+BCRF,yBAME,0BAGA,wBACA,2BACA,0BACA,2BACA,0BACA,6BAGA,+BAGA,sCACA,sCACA,qCACA,yCAGA,8BAGA,8BACA,2JAIA,mHAGA,0DAGA,6DACA,qECzCF,2BAME,4BAGA,2BACA,oCACA,kCACA,4BACA,yBACA,wBACA,0BACA,2BACA,6BACA,4BACA,sBACA,sBACA,qBACA,oBACA,sBACA,8BCxBF,kDAKE,uDACA,mEACA,mEACA,mEACA,kEACA,yDACA,qDACA,oDACA,mEACA,oDACA,mDCfF,qEAKE,oEACA,sEACA,0ECPF,mCACE,yDLQA,CKPA,KAGF,4CACE,CAGA,gCACA,CACA,YACA,uBANA,uCACA,gBACA,iBACA,CACA,gBAGA,+BAGA,sCACE,GAMF,iCADA,aACA,CAFF,qBAGE,UAGA,+CACE,YAGF,iBACE,GAIJ,oBC8BE,4BAEA,0BAzCA,4CAhByB,8BAIH,SA8BpB,0BA0BF,iCACE,CAlD8B,6BAuB9B,CA2BA,iDA1BA,CAgCA,mBAIF,2BACE,iBACA,iCACE,iBA+FJ,yCACE,cD7IF,gCACE,CACA,cACA,CACA,gBACA,CAJA,UACA,CACA,aACA,CACA,oBACA,4BACA,iBACA,oBAEA,SACE,iCAOF,iCACE,2BACA,oBACA,iBAIJ,8BACE,iBAGF,8BACE,kCAKF,0CACA,2CACA,kBAHF,wBAIE,IAKA,iCACA,CAHF,YAIE,OADA,8BAOA,CANA,GAGF,iCAGE,IAGF,iCAGE,OADA,8BAOA,CANA,GAGF,iCAGE,IAGF,iCAGE,OADA,gCAOA,CANA,GAGF,iCAGE,mBAGF,oCAEE,IAGF,QACE,6CACA,mBAGF,4CAIE,KAGF,+CAEE,kCACA,oBAGA,wCACE,CAEA,+CAFA,cACA,oBAEA,MAIJ,kCACE,KAKA,yCACA,CAEA,wCACA,sBAHA,gCACA,kBACA,CALF,cACE,aL1HyB,cKkIzB,UAEE,mBACA,kBAYF,2CACA,aAFA,qCACA,CALA,YACA,CACA,SACA,CEq8BkC,cFx8BlC,CACA,QACA,CACA,yBACA,CANF,YASE,YGvKA,yCACA,CDq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E,mDACA,wBC9DF,6CAFF,YACE,sBAEA,yBzB4DE,uByB/DJ,eAMI,uDAKA,gCACA,CAFA,6CACA,CAFF,iDACE,CAEA,mBACA,wCAIA,eACA,CAFF,kBACE,CACA,SACA,6CAIE,kCAFF,aACE,iBAEA,mDAIE,6BAFF,8BACE,qBAEA,8CC5BN,YACA,cAFF,eAGE,sEAIE,uCACA,CAFA,cACA,CACA,gBAHF,cAIE,2FAGE,kBACA,CAGA,4CACA,CACA,6CADA,8BACA,CAPF,YACE,CACA,SACA,cACA,yCAIA,kFAGF,iCACE,kBACA,wFAEA,gCACE,wBACA,wCACA,sDACA,wFAGJ,iCACE,oGAKF,+CACE,kEAIJ,yCACE,iCACA,0EAGE,iCACE,qEAIJ,wCACE,0EAGF,2BACE,wEAKA,0CADA,wCACA,CAFF,kBAGE,4BC7DqB,+CAUzB,CAJA,uBACA,mCACA,qBARyB,CAUzB,gGATF,oBAEE,CACA,eACA,CAFA,qBACA,CACA,uBPDA,oDOUA,eACE,sEAIF,kBACE,oBACA,mEAIF,eAEE,gEAMA,qDACA,CAHF,eACE,+BACA,CACA,iBACA,UAGA,8EC1BA,yCACA,CAPF,UACE,CACA,WACA,CACA,MACA,CAGA,oBALA,iBACA,CACA,KACA,CALA,UACA,CAKA,UAKA,4ED0BE,2BACA,CAEA,0CACA,CAHA,yBACA,CAHA,WACA,CAHA,UACA,CAIA,mBACA,CACA,UARF,iBACE,CACA,UAOA,oEAIF,eACE,gDAIJ,uCACE,kGAEE,8CACE,gGAGF,gCACE,6CACA,4CAKN,qCACE,8FAEE,4CACE,4FAGF,8BACE,2CACA,4CAKN,qCACE,8FAEE,4CACE,4FAGF,8BACE,2CACA,0CAKN,oCACE,4FAEE,2CACE,0FAGF,6BACE,0CACA,wCAKN,oCACE,0FAEE,2CACE,wFAGF,6BACE,yCACA,sCAKN,qCACE,wFAEE,4CACE,sFAGF,8BACE,wCACA,oCAKN,qCACE,sFAEE,4CACE,oFAGF,8BACE,uCACA,gDAKN,uCACE,kGAEE,8CACE,gGAGF,gCACE,6CACA,sCAKN,kCACE,wFAEE,yCACE,sFAGF,2BACE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","sources":["webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/styles/pydata-sphinx-theme.scss","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/styles/variables/_layout.scss","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/styles/variables/_fonts.scss","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/styles/variables/_icons.scss","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/styles/variables/_admonitions.scss","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/styles/variables/_versionmodified.scss","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/styles/base/_base.scss","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/styles/abstracts/_links.scss","webpack://pydata_sphinx_theme/./node_modules/bootstrap/scss/_variables.scss","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/styles/sections/_skip-link.scss","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/styles/sections/_container.scss","webpack://pydata_sphinx_theme/./node_modules/bootstrap/scss/mixins/_breakpoints.scss","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/styles/sections/_announcement.scss","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/styles/sections/_article.scss","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/styles/sections/_footer.scss","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/styles/sections/_footer-article.scss","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/styles/sections/_footer-content.scss","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/styles/sections/_header.scss","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/styles/sections/_header-article.scss","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/styles/sections/_sidebar-primary.scss","webpack://pydata_sphinx_theme/./node_modules/bootstrap/scss/mixins/_grid.scss","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/styles/sections/_sidebar-secondary.scss","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/styles/sections/_sidebar-toggle.scss","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/styles/components/_breadcrumbs.scss","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/styles/components/_icon-links.scss","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/styles/components/header/_header-logo.scss","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/styles/components/_navbar-links.scss","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/styles/components/_page-toc.scss","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/styles/components/_prev-next.scss","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/styles/components/_search.scss","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/styles/components/_searchbox.scss","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/styles/abstracts/_mixins.scss","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/styles/components/_switcher-theme.scss","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/styles/components/_switcher-version.scss","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/styles/components/_toc-inpage.scss","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/styles/components/_versionmodified.scss","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/styles/components/_indices.scss","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/styles/components/_readthedocs-switcher.scss","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/styles/content/_admonitions.scss","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/styles/abstracts/_color.scss","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/styles/content/_api.scss","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/styles/content/_code.scss","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/styles/content/_figures.scss","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/styles/content/_footnotes.scss","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/styles/content/_hacks.scss","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/styles/content/_lists.scss","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/styles/content/_quotes.scss","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/styles/content/_spans.scss","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/styles/content/_tables.scss","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/styles/content/_toctree.scss","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/styles/content/_math.scss","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/styles/extensions/_ablog.scss","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/styles/extensions/_bootstrap.scss","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/styles/extensions/_copybutton.scss","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/styles/extensions/_ethical-ads.scss","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/styles/extensions/_execution.scss","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/styles/extensions/_pydata.scss","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/styles/variables/_color.scss","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/styles/extensions/_sphinx_design.scss","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/styles/extensions/_togglebutton.scss","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/styles/extensions/_notebooks.scss","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/styles/extensions/_leaflet.scss","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/styles/pages/_search.scss"],"sourcesContent":["html{--pst-header-height: 4rem;--pst-header-article-height: calc(var(--pst-header-height) * 2 / 3);--pst-sidebar-secondary: 17rem}html{--pst-font-size-base: 1rem;--pst-font-size-h1: 2.5rem;--pst-font-size-h2: 2rem;--pst-font-size-h3: 1.75rem;--pst-font-size-h4: 1.5rem;--pst-font-size-h5: 1.25rem;--pst-font-size-h6: 1.1rem;--pst-font-size-milli: 0.9rem;--pst-sidebar-font-size: 0.9rem;--pst-sidebar-font-size-mobile: 1.1rem;--pst-sidebar-header-font-size: 1.2rem;--pst-sidebar-header-font-weight: 600;--pst-admonition-font-weight-heading: 600;--pst-font-weight-caption: 300;--pst-font-weight-heading: 400;--pst-font-family-base-system: -apple-system, BlinkMacSystemFont, Segoe UI, \"Helvetica Neue\", Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;--pst-font-family-monospace-system: \"SFMono-Regular\", Menlo, Consolas, Monaco, Liberation Mono, Lucida Console, monospace;--pst-font-family-base: var(--pst-font-family-base-system);--pst-font-family-heading: var(--pst-font-family-base-system);--pst-font-family-monospace: var(--pst-font-family-monospace-system)}html{--pst-font-size-icon: 1.5rem;--pst-icon-check-circle: \"\";--pst-icon-info-circle: \"\";--pst-icon-exclamation-triangle: \"\";--pst-icon-exclamation-circle: \"\";--pst-icon-times-circle: \"\";--pst-icon-lightbulb: \"\";--pst-icon-download: \"\";--pst-icon-angle-left: \"\";--pst-icon-angle-right: \"\";--pst-icon-external-link: \"\";--pst-icon-search-minus: \"\";--pst-icon-github: \"\";--pst-icon-gitlab: \"\";--pst-icon-share: \"\";--pst-icon-bell: \"\";--pst-icon-pencil: \"\";--pst-breadcrumb-divider: \"\"}html{--pst-icon-admonition-default: var(--pst-icon-bell);--pst-icon-admonition-note: var(--pst-icon-info-circle);--pst-icon-admonition-attention: var(--pst-icon-exclamation-circle);--pst-icon-admonition-caution: var(--pst-icon-exclamation-triangle);--pst-icon-admonition-warning: var(--pst-icon-exclamation-triangle);--pst-icon-admonition-danger: var(--pst-icon-exclamation-triangle);--pst-icon-admonition-error: var(--pst-icon-times-circle);--pst-icon-admonition-hint: var(--pst-icon-lightbulb);--pst-icon-admonition-tip: var(--pst-icon-lightbulb);--pst-icon-admonition-important: var(--pst-icon-exclamation-circle);--pst-icon-admonition-seealso: var(--pst-icon-share);--pst-icon-admonition-todo: var(--pst-icon-pencil)}html{--pst-icon-versionmodified-default: var(--pst-icon-exclamation-circle);--pst-icon-versionmodified-added: var(--pst-icon-exclamation-circle);--pst-icon-versionmodified-changed: var(--pst-icon-exclamation-circle);--pst-icon-versionmodified-deprecated: var(--pst-icon-exclamation-circle)}:root{--pst-teal-50: #f4fbfc;--pst-teal-100: #e9f6f8;--pst-teal-200: #d0ecf1;--pst-teal-300: #abdde6;--pst-teal-400: #3fb1c5;--pst-teal-500: #0a7d91;--pst-teal-600: #085d6c;--pst-teal-700: #064752;--pst-teal-800: #042c33;--pst-teal-900: #021b1f;--pst-violet-50: #f4eefb;--pst-violet-100: #e0c7ff;--pst-violet-200: #d5b4fd;--pst-violet-300: #b780ff;--pst-violet-400: #9c5ffd;--pst-violet-500: #8045e5;--pst-violet-600: #6432bd;--pst-violet-700: #4b258f;--pst-violet-800: #341a61;--pst-violet-900: #1e0e39;--pst-gray-50: #f9f9fa;--pst-gray-100: #f3f4f5;--pst-gray-200: #e5e7ea;--pst-gray-300: #d1d5da;--pst-gray-400: #9ca4af;--pst-gray-500: #677384;--pst-gray-600: #48566b;--pst-gray-700: #29313d;--pst-gray-800: #222832;--pst-gray-900: #14181e;--pst-pink-50: #fcf8fd;--pst-pink-100: #fcf0fa;--pst-pink-200: #f8dff5;--pst-pink-300: #f3c7ee;--pst-pink-400: #e47fd7;--pst-pink-500: #c132af;--pst-pink-600: #912583;--pst-pink-700: #6e1c64;--pst-pink-800: #46123f;--pst-pink-900: #2b0b27;--pst-foundation-white: #ffffff;--pst-foundation-black: #14181e}html:not([data-theme]){--pst-color-primary: #0a7d91;--pst-color-primary-bg: #d0ecf1;--pst-color-secondary: #8045e5;--pst-color-secondary-bg: #e0c7ff;--pst-color-accent: #c132af;--pst-color-accent-bg: #f8dff5;--pst-color-info: #276be9;--pst-color-info-bg: #dce7fc;--pst-color-warning: #f66a0a;--pst-color-warning-bg: #f8e3d0;--pst-color-success: #00843f;--pst-color-success-bg: #d6ece1;--pst-color-attention: var(--pst-color-warning);--pst-color-attention-bg: var(--pst-color-warning-bg);--pst-color-danger: #d72d47;--pst-color-danger-bg: #f9e1e4;--pst-color-text-base: #222832;--pst-color-text-muted: #48566b;--pst-color-heading-color: #ffffff;--pst-color-shadow: rgba(0, 0, 0, 0.1);--pst-color-border: #d1d5da;--pst-color-border-muted: rgba(23, 23, 26, 0.2);--pst-color-inline-code: #912583;--pst-color-inline-code-links: #085d6c;--pst-color-target: #f3cf95;--pst-color-background: #ffffff;--pst-color-on-background: #ffffff;--pst-color-surface: #f3f4f5;--pst-color-on-surface: #222832}html:not([data-theme]){--pst-color-link: var(--pst-color-primary);--pst-color-link-hover: var(--pst-color-secondary)}html:not([data-theme]) .only-dark,html:not([data-theme]) .only-dark~figcaption{display:none !important}html[data-theme=light]{--pst-color-primary: #0a7d91;--pst-color-primary-bg: #d0ecf1;--pst-color-secondary: #8045e5;--pst-color-secondary-bg: #e0c7ff;--pst-color-accent: #c132af;--pst-color-accent-bg: #f8dff5;--pst-color-info: #276be9;--pst-color-info-bg: #dce7fc;--pst-color-warning: #f66a0a;--pst-color-warning-bg: #f8e3d0;--pst-color-success: #00843f;--pst-color-success-bg: #d6ece1;--pst-color-attention: var(--pst-color-warning);--pst-color-attention-bg: var(--pst-color-warning-bg);--pst-color-danger: #d72d47;--pst-color-danger-bg: #f9e1e4;--pst-color-text-base: #222832;--pst-color-text-muted: #48566b;--pst-color-heading-color: #ffffff;--pst-color-shadow: rgba(0, 0, 0, 0.1);--pst-color-border: #d1d5da;--pst-color-border-muted: rgba(23, 23, 26, 0.2);--pst-color-inline-code: #912583;--pst-color-inline-code-links: #085d6c;--pst-color-target: #f3cf95;--pst-color-background: #ffffff;--pst-color-on-background: #ffffff;--pst-color-surface: #f3f4f5;--pst-color-on-surface: #222832;color-scheme:light}html[data-theme=light]{--pst-color-link: var(--pst-color-primary);--pst-color-link-hover: var(--pst-color-secondary)}html[data-theme=light] .only-dark,html[data-theme=light] .only-dark~figcaption{display:none !important}html[data-theme=dark]{--pst-color-primary: #3fb1c5;--pst-color-primary-bg: #042c33;--pst-color-secondary: #9c5ffd;--pst-color-secondary-bg: #341a61;--pst-color-accent: #e47fd7;--pst-color-accent-bg: #46123f;--pst-color-info: #79a3f2;--pst-color-info-bg: #06245d;--pst-color-warning: #ff9245;--pst-color-warning-bg: #652a02;--pst-color-success: #5fb488;--pst-color-success-bg: #002f17;--pst-color-attention: var(--pst-color-warning);--pst-color-attention-bg: var(--pst-color-warning-bg);--pst-color-danger: #e78894;--pst-color-danger-bg: #4e111b;--pst-color-text-base: #ced6dd;--pst-color-text-muted: #9ca4af;--pst-color-heading-color: #14181e;--pst-color-shadow: rgba(0, 0, 0, 0.2);--pst-color-border: #48566b;--pst-color-border-muted: #29313d;--pst-color-inline-code: #f3c7ee;--pst-color-inline-code-links: #3fb1c5;--pst-color-target: #675c04;--pst-color-background: #14181e;--pst-color-on-background: #222832;--pst-color-surface: #29313d;--pst-color-on-surface: #f3f4f5;color-scheme:dark}html[data-theme=dark]{--pst-color-link: var(--pst-color-primary);--pst-color-link-hover: var(--pst-color-secondary)}html[data-theme=dark] .only-light,html[data-theme=dark] .only-light~figcaption{display:none !important}html[data-theme=dark] img:not(.only-dark):not(.dark-light){filter:brightness(0.8) contrast(1.2)}html[data-theme=dark] .bd-content img:not(.only-dark):not(.dark-light){background:#fff;border-radius:.25rem}html[data-theme=dark] .MathJax_SVG *{fill:var(--pst-color-text-base)}.pst-color-primary{color:var(--pst-color-primary)}.pst-color-secondary{color:var(--pst-color-secondary)}.pst-color-accent{color:var(--pst-color-accent)}.pst-color-info{color:var(--pst-color-info)}.pst-color-warning{color:var(--pst-color-warning)}.pst-color-success{color:var(--pst-color-success)}.pst-color-attention{color:var(--pst-color-attention)}.pst-color-danger{color:var(--pst-color-danger)}.pst-color-text-base{color:var(--pst-color-text-base)}.pst-color-text-muted{color:var(--pst-color-text-muted)}.pst-color-heading-color{color:var(--pst-color-heading-color)}.pst-color-shadow{color:var(--pst-color-shadow)}.pst-color-border{color:var(--pst-color-border)}.pst-color-border-muted{color:var(--pst-color-border-muted)}.pst-color-inline-code{color:var(--pst-color-inline-code)}.pst-color-inline-code-links{color:var(--pst-color-inline-code-links)}.pst-color-target{color:var(--pst-color-target)}.pst-color-background{color:var(--pst-color-background)}.pst-color-on-background{color:var(--pst-color-on-background)}.pst-color-surface{color:var(--pst-color-surface)}.pst-color-on-surface{color:var(--pst-color-on-surface)}html{font-size:var(--pst-font-size-base);scroll-padding-top:calc(var(--pst-header-height) + 1rem)}body{background-color:var(--pst-color-background);font-family:var(--pst-font-family-base);font-weight:400;line-height:1.65;color:var(--pst-color-text-base);min-height:100vh;display:flex;flex-direction:column}body::-webkit-scrollbar-track{background:var(--pst-color-background)}p{margin-bottom:1.15rem;font-size:1em;color:var(--pst-color-text-base)}p.rubric{border-bottom:1px solid var(--pst-color-border)}p.centered{text-align:center}a{word-wrap:break-word;color:var(--pst-color-link);text-decoration:underline;text-decoration-thickness:max(1px, .0625rem);text-underline-offset:.1578em}a:hover{color:var(--pst-color-link-hover);text-decoration-thickness:max(3px, .1875rem, .12em);text-decoration-skip-ink:none;text-decoration-skip:none}a:active{color:var(--pst-color-link)}a:visited{color:var(--pst-color-link)}a:visited:hover{color:var(--pst-color-link-hover)}a:focus-visible{outline:2px solid var(--pst-color-accent)}a.headerlink{color:var(--pst-color-secondary);opacity:.7;font-size:.8em;padding:0 4px 0 4px;margin-left:.2em;text-decoration:none;transition:all .2s ease-out;user-select:none}a.headerlink:hover{opacity:1}a.github::before,a.gitlab::before{color:var(--pst-color-text-muted);font:var(--fa-font-brands);margin-right:.25rem}a.github::before{content:var(--pst-icon-github)}a.gitlab::before{content:var(--pst-icon-gitlab)}.heading-style,h6,h5,h4,h3,h2,h1{margin:2.75rem 0 1.05rem;font-family:var(--pst-font-family-heading);font-weight:var(--pst-font-weight-heading);line-height:1.15}h1{margin-top:0;font-size:var(--pst-font-size-h1);color:var(--pst-heading-color)}h2{font-size:var(--pst-font-size-h2);color:var(--pst-heading-color)}h3{font-size:var(--pst-font-size-h3);color:var(--pst-heading-color)}h4{font-size:var(--pst-font-size-h4);color:var(--pst-heading-color)}h5{font-size:var(--pst-font-size-h5);color:var(--pst-color-text-base)}h6{font-size:var(--pst-font-size-h6);color:var(--pst-color-text-base)}small,.text_small{font-size:var(--pst-font-size-milli)}hr{border:0;border-top:1px solid var(--pst-color-border)}pre,code,kbd,samp{font-family:var(--pst-font-family-monospace)}kbd{background-color:var(--pst-color-on-background);color:var(--pst-color-text-muted)}kbd:not(.compound){border:1px solid var(--pst-color-border);margin:0 .1rem;padding:.1rem .4rem;box-shadow:1px 1px 1px var(--pst-color-shadow)}code{color:var(--pst-color-inline-code)}pre{margin:1.5em 0 1.5em 0;padding:1rem;background-color:var(--pst-color-surface);color:var(--pst-color-text-base);line-height:1.2em;border:1px solid var(--pst-color-border);border-radius:.25rem}pre .linenos{opacity:.8;padding-right:10px}#pst-back-to-top{z-index:1080;position:fixed;display:none;top:80vh;left:50vw;transform:translate(-50%);color:var(--pst-color-secondary-text);background-color:var(--pst-color-secondary);border:none}.skip-link{position:fixed;top:0;left:0;right:0;text-align:center;background-color:var(--pst-color-warning);color:var(--pst-color-warning-text) !important;padding:.5rem;z-index:1055;border-bottom:1px solid var(--pst-color-border);transform:translateY(-100%);transition:transform 150ms ease-in-out}.skip-link:focus{transform:translateY(0%);outline:3px solid #14181e}.bd-container{flex-grow:1;display:flex;justify-content:center}.bd-container .bd-container__inner{display:flex}.bd-page-width{width:100%}@media(min-width: 960px){.bd-page-width{max-width:88rem}}.bd-header-version-warning,.bd-header-announcement{min-height:3rem;width:100%;display:flex;position:relative;align-items:center;justify-content:center;text-align:center;padding:.5rem 12.5%}@media(max-width: 959.98px){.bd-header-version-warning,.bd-header-announcement{padding:.5rem 2%}}.bd-header-version-warning p,.bd-header-announcement p{font-weight:bold;margin:0}.bd-header-version-warning:after,.bd-header-announcement:after{position:absolute;width:100%;height:100%;left:0;top:0;content:\"\";z-index:-1}.bd-header-version-warning:empty,.bd-header-announcement:empty{display:none}.bd-header-version-warning a,.bd-header-announcement a{color:var(--pst-color-inline-code-links)}.bd-header-announcement:after{background-color:var(--pst-color-secondary-bg)}.bd-header-version-warning:after{background-color:var(--pst-color-danger-bg)}.bd-main{flex-grow:1;flex-direction:column;display:flex;min-width:0}.bd-main .bd-content{display:flex;justify-content:center;height:100%}.bd-main .bd-content .bd-article-container{justify-content:start;display:flex;flex-direction:column;width:100%;max-width:60em;overflow-x:auto;padding:1rem}@media(min-width: 1200px){.bd-main .bd-content .bd-article-container .bd-article{padding-top:1.5rem;padding-left:2rem}}.bd-footer{width:100%;border-top:1px solid var(--pst-color-border)}.bd-footer .bd-footer__inner{display:flex;flex-grow:1;padding:1rem;margin:auto}.bd-footer .footer-items__start,.bd-footer .footer-items__center,.bd-footer .footer-items__end{display:flex;flex-direction:column;gap:.5rem;justify-content:center;flex-grow:1}.bd-footer .footer-items__center{text-align:center}.bd-footer .footer-items__end{text-align:end}.bd-footer .footer-item p{margin-bottom:0}.bd-footer-article{margin-top:auto}.bd-footer-article .footer-article-items{display:flex;flex-direction:column}.bd-footer-content .footer-content-items{display:flex;flex-direction:column;margin-top:auto}.bd-header{position:sticky;top:0;z-index:1030;background:var(--pst-color-on-background) !important;box-shadow:0 .125rem .25rem 0 var(--pst-color-shadow);width:100%;padding:0;max-width:100vw;justify-content:center}.bd-header .bd-header__inner{display:flex;align-items:center;height:fit-content;padding-left:1rem;padding-right:1rem}.bd-header .navbar-item{height:var(--pst-header-height);max-height:var(--pst-header-height);display:flex;align-items:center}.bd-header .navbar-header-items{display:none;flex-shrink:1}@media(min-width: 960px){.bd-header .navbar-header-items{display:flex;flex-grow:1;padding:0 0 0 .5rem}}.bd-header .navbar-header-items__end,.bd-header .navbar-header-items__center,.bd-header .navbar-header-items__start{display:flex;align-items:center;flex-flow:wrap;row-gap:0}.bd-header .navbar-header-items__end,.bd-header .navbar-header-items__center{column-gap:1rem}.bd-header .navbar-header-items__start{flex-shrink:0;margin-right:auto;gap:.5rem}.bd-header .navbar-header-items__end{justify-content:end}.bd-header .navbar-nav{display:flex}@media(min-width: 960px){.bd-header .navbar-nav{align-items:center}}.bd-header .navbar-nav li a.nav-link{color:var(--pst-color-text-muted);text-decoration:none}.bd-header .navbar-nav li a.nav-link:hover{color:var(--pst-color-link-hover);text-decoration:underline;text-decoration-thickness:max(1px, .0625rem);text-underline-offset:.1578em;text-decoration-thickness:max(3px, .1875rem, .12em);text-decoration-skip-ink:none;text-decoration-skip:none}.bd-header .navbar-nav li a.nav-link:focus-visible{outline:2px solid var(--pst-color-accent)}.bd-header .navbar-nav>.current>.nav-link{font-weight:600;color:var(--pst-color-primary);border-bottom:max(3px, .1875rem, .12em) solid var(--pst-color-primary)}.bd-header .navbar-nav .dropdown button{display:unset;color:var(--pst-color-text-muted);border:none}.bd-header .navbar-nav .dropdown button:hover{text-decoration:underline;text-decoration-thickness:max(1px, .0625rem);text-underline-offset:.1578em;text-decoration-thickness:max(3px, .1875rem, .12em);text-decoration-skip-ink:none;text-decoration-skip:none;color:var(--pst-color-link-hover)}.bd-header .navbar-nav .dropdown button:focus-visible{outline:2px solid var(--pst-color-accent)}.bd-header .navbar-nav .dropdown .dropdown-menu{z-index:1070;border:1px solid var(--pst-color-border);box-shadow:0 0 .3rem .1rem var(--pst-color-shadow);background-color:var(--pst-color-on-background);padding:.5rem 0;margin:.5rem 0;min-width:20rem}.bd-header .navbar-nav .dropdown .dropdown-menu .dropdown-item{padding:.25rem 1.5rem}.bd-header .navbar-nav .dropdown .dropdown-menu .dropdown-item:focus:not(:hover):not(:active){background-color:inherit}.bd-header .navbar-nav .dropdown .dropdown-menu:not(.show){display:none}@media(min-width: 960px){.navbar-center-items .navbar-item{display:inline-block}}.nav-link{transition:none}.nav-link:hover{text-decoration:underline;text-decoration-thickness:max(1px, .0625rem);text-underline-offset:.1578em;text-decoration-thickness:max(3px, .1875rem, .12em);text-decoration-skip-ink:none;text-decoration-skip:none;color:var(--pst-color-link-hover)}.nav-link.nav-external:after{font:var(--fa-font-solid);content:var(--pst-icon-external-link);font-size:.75em;margin-left:.3em}.bd-navbar-elements li.nav-item i{font-size:.7rem;padding-left:2px;vertical-align:middle}.bd-header label.sidebar-toggle{display:flex;cursor:pointer;font-size:var(--pst-font-size-icon);align-items:center;color:var(--pst-color-muted);margin-bottom:0;padding-bottom:.25rem}.bd-header label.primary-toggle{margin-right:1rem}@media(min-width: 960px){.bd-header label.primary-toggle{display:none}}.bd-header label.secondary-toggle{margin-left:1rem}@media(min-width: 1200px){.bd-header label.secondary-toggle{display:none}}.bd-header label:hover{color:var(--pst-color-link-hover);box-shadow:0px max(3px, .1875rem, .12em) 0px var(--pst-color-link-hover)}.bd-header label:focus-visible{outline:2px solid var(--pst-color-accent)}.bd-header .navbar-header-items{display:none}@media(min-width: 960px){.bd-header .navbar-header-items{display:inherit}}.navbar-persistent--mobile{margin-left:auto}@media(min-width: 960px){.navbar-persistent--mobile{display:none}}.navbar-persistent--container{display:none}@media(min-width: 960px){.navbar-persistent--container{display:flex}}.header-article__inner{display:flex;padding:0 .5rem}.header-article__inner .header-article-item{min-height:var(--pst-header-article-height);height:var(--pst-header-article-height)}.header-article__inner .header-article-items__start,.header-article__inner .header-article-items__end{display:flex;align-items:start;gap:.5rem}.header-article__inner .header-article-items__end{margin-left:auto}.bd-sidebar-primary{display:flex;flex-direction:column;gap:1rem;max-height:calc(100vh - var(--pst-header-height));position:sticky;top:var(--pst-header-height);flex:0 0 auto;width:25%;padding:2rem 1rem 1rem 1rem;border-right:1px solid var(--pst-color-border);background-color:var(--pst-color-background);overflow-y:auto;font-size:var(--pst-sidebar-font-size-mobile)}@media(min-width: 960px){.bd-sidebar-primary{font-size:var(--pst-sidebar-font-size)}}.bd-sidebar-primary .nav-link{font-size:var(--pst-sidebar-font-size-mobile)}.bd-sidebar-primary.no-sidebar{border-right:0}@media(min-width: 960px){.bd-sidebar-primary.hide-on-wide{display:none}}.bd-sidebar-primary h1,.bd-sidebar-primary h2,.bd-sidebar-primary h3,.bd-sidebar-primary h4{color:var(--pst-color-text-base)}.bd-sidebar-primary .sidebar-primary-items__start .sidebar-primary-item,.bd-sidebar-primary .sidebar-primary-items__end .sidebar-primary-item{padding:.5rem 0}.bd-sidebar-primary .sidebar-header-items{display:flex;flex-direction:column}.bd-sidebar-primary .sidebar-header-items .sidebar-header-items__title{font-weight:var(--pst-sidebar-header-font-weight);font-size:var(--pst-sidebar-header-font-size);color:var(--pst-color-text-base);margin-bottom:.5rem}.bd-sidebar-primary .sidebar-header-items .nav-item.dropdown button{display:none}.bd-sidebar-primary .sidebar-header-items .nav-item.dropdown .dropdown-menu{display:flex;flex-direction:column;padding:0;margin:0;border:none;background-color:inherit;font-size:inherit}.bd-sidebar-primary .sidebar-header-items .sidebar-header-items__center{display:flex;flex-direction:column}.bd-sidebar-primary .sidebar-header-items .sidebar-header-items__end{display:flex;align-items:center;gap:.5rem}@media(min-width: 960px){.bd-sidebar-primary .sidebar-header-items{display:none}}.bd-sidebar-primary .sidebar-primary-items__start{border-top:1px solid var(--pst-color-border)}@media(min-width: 960px){.bd-sidebar-primary .sidebar-primary-items__start{border-top:none}}.bd-sidebar-primary .sidebar-primary-items__end{margin-top:auto;margin-bottom:1em}.bd-sidebar-primary .list-caption{list-style:none;padding-left:0px}.bd-sidebar-primary li{position:relative}.bd-sidebar-primary li.has-children>.reference{padding-right:30px}.bd-sidebar-primary label.toctree-toggle{position:absolute;top:0;right:0;height:30px;width:30px;cursor:pointer;display:flex;justify-content:center;align-items:center}.bd-sidebar-primary label.toctree-toggle:hover{background:var(--pst-color-surface)}.bd-sidebar-primary label.toctree-toggle i{display:inline-block;font-size:.75rem;text-align:center}.bd-sidebar-primary label.toctree-toggle i:hover{color:var(--pst-color-primary)}.bd-sidebar-primary .label-parts{width:100%;height:100%}.bd-sidebar-primary .label-parts:hover{background:none}.bd-sidebar-primary .label-parts i{width:30px;position:absolute;top:.3em;right:0em}nav.bd-links{margin-right:-1rem}@media(min-width: 960px){nav.bd-links{display:block}}nav.bd-links ul{list-style:none}nav.bd-links ul ul{padding:0 0 0 1rem}nav.bd-links li>a{display:block;padding:.25rem .65rem;color:var(--pst-color-text-muted);text-decoration:none;box-shadow:none}nav.bd-links li>a:hover{text-decoration:underline;background-color:rgba(0,0,0,0);color:var(--pst-color-link-hover);text-decoration-thickness:max(3px, .1875rem, .12em);text-decoration-skip-ink:none;text-decoration-skip:none}nav.bd-links li>a:active{color:var(--pst-color-link-hover)}nav.bd-links li>a.reference.external:after{font:var(--fa-font-solid);content:var(--pst-icon-external-link);font-size:.75em;margin-left:.3em}nav.bd-links .current>a{font-weight:600;color:var(--pst-color-primary);box-shadow:inset max(3px, .1875rem, .12em) 0px 0px var(--pst-color-primary);background-color:rgba(0,0,0,0)}nav.bd-links p.bd-links__title{font-size:var(--pst-sidebar-header-font-size);font-weight:var(--pst-sidebar-header-font-weight);margin-bottom:.5rem}nav.bd-links p.caption{font-weight:var(--pst-sidebar-header-font-weight);position:relative;margin-top:1.25rem;margin-bottom:.5rem;color:var(--pst-color-text-base);font-size:var(--pst-sidebar-font-size-mobile)}nav.bd-links p.caption:first-child{margin-top:0}@media(min-width: 960px){nav.bd-links p.caption{font-size:var(--pst-sidebar-font-size)}}.bd-sidebar-secondary{display:flex;order:2;flex-shrink:0;flex-direction:column;position:sticky;top:var(--pst-header-height);max-height:calc(100vh - var(--pst-header-height));padding:2rem 1rem 1rem 1rem;width:var(--pst-sidebar-secondary);font-size:var(--pst-sidebar-font-size-mobile);background-color:var(--pst-color-background);overflow-y:auto}@media(min-width: 1200px){.bd-sidebar-secondary{font-size:var(--pst-sidebar-font-size)}}.sidebar-secondary-item{padding:.5rem .5rem}@media(min-width: 1200px){.sidebar-secondary-item{border-left:1px solid var(--pst-color-border);padding-left:1rem}}.sidebar-secondary-item i{padding-right:.5rem}input.sidebar-toggle{display:none}label.overlay{background-color:#000;opacity:.5;height:0;width:0;position:fixed;top:0;left:0;transition:opacity 200ms ease-out;z-index:1050}input#__primary:checked+label.overlay.overlay-primary,input#__secondary:checked+label.overlay.overlay-secondary{height:100vh;width:100vw}input#__primary:checked~.bd-container .bd-sidebar-primary{visibility:visible;margin-left:0}input#__secondary:checked~.bd-container .bd-sidebar-secondary{visibility:visible;margin-right:0}@media(min-width: 960px){label.sidebar-toggle.primary-toggle{display:none}input#__primary:checked+label.overlay.overlay-primary{height:0;width:0}.bd-sidebar-primary{margin-left:0;visibility:visible}}@media(max-width: 959.98px){.bd-sidebar-primary{position:fixed;top:0;z-index:1055;height:100vh;max-height:100vh;width:75%;flex-grow:.75;max-width:350px;transition:visibility 200ms ease-out,margin 200ms ease-out;visibility:hidden;margin-left:-75%;left:0}}@media(max-width: 1199.98px){.bd-sidebar-secondary{position:fixed;top:0;z-index:1055;height:100vh;max-height:100vh;width:75%;flex-grow:.75;max-width:350px;transition:visibility 200ms ease-out,margin 200ms ease-out;visibility:hidden;margin-right:-75%;right:0}}ul.bd-breadcrumbs{list-style:none;padding-left:0;display:flex;flex-wrap:wrap;font-size:.8rem}ul.bd-breadcrumbs li.breadcrumb-item{display:flex;align-items:baseline;font-weight:bold}ul.bd-breadcrumbs li.breadcrumb-item a{color:var(--pst-color-text-muted);text-decoration:none}ul.bd-breadcrumbs li.breadcrumb-item a:hover{color:var(--pst-color-link-hover);text-decoration:underline;text-decoration-thickness:max(1px, .0625rem);text-underline-offset:.1578em;text-decoration-thickness:max(3px, .1875rem, .12em);text-decoration-skip-ink:none;text-decoration-skip:none}ul.bd-breadcrumbs li.breadcrumb-item a:focus-visible{outline:2px solid var(--pst-color-accent)}ul.bd-breadcrumbs li.breadcrumb-item:not(.breadcrumb-home):before{font:var(--fa-font-solid);font-size:.8rem;content:var(--pst-breadcrumb-divider);color:var(--pst-color-text-muted);padding:0 .5rem}.navbar-icon-links{display:flex;flex-direction:row;column-gap:1rem;flex-wrap:wrap}.navbar-icon-links li.nav-item a.nav-link{padding-left:0;padding-right:0}.navbar-icon-links li.nav-item a.nav-link:hover{color:var(--pst-color-link-hover);box-shadow:0px max(3px, .1875rem, .12em) 0px var(--pst-color-link-hover)}.navbar-icon-links a span{display:flex;align-items:center}.navbar-icon-links i.fa-brands,.navbar-icon-links i.fa-regular,.navbar-icon-links i.fa-solid{vertical-align:middle;font-style:normal;font-size:var(--pst-font-size-icon)}.navbar-icon-links i.fa-square-twitter:before{color:#55acee}.navbar-icon-links i.fa-square-gitlab:before{color:#548}.navbar-icon-links i.fa-bitbucket:before{color:#0052cc}.navbar-icon-links img.icon-link-image{height:1.5em;border-radius:.2rem}.navbar-brand{position:relative;height:var(--pst-header-height);max-height:var(--pst-header-height);padding:.5rem 0;width:auto;margin:0;display:flex;flex-shrink:0;align-items:center;gap:.5rem}.navbar-brand p{margin-bottom:0}.navbar-brand img{max-width:100%;height:100%;width:auto}.navbar-brand a{text-decoration:none}.navbar-brand:hover:hover{text-decoration:underline;text-decoration-thickness:max(1px, .0625rem);text-underline-offset:.1578em;text-decoration-thickness:max(3px, .1875rem, .12em);text-decoration-skip-ink:none;text-decoration-skip:none;color:var(--pst-color-link-hover)}.navbar-brand:visited:hover:hover{text-decoration:underline;text-decoration-thickness:max(1px, .0625rem);text-underline-offset:.1578em;text-decoration-thickness:max(3px, .1875rem, .12em);text-decoration-skip-ink:none;text-decoration-skip:none;color:var(--pst-color-link-hover)}.navbar-nav ul{display:block;list-style:none}.navbar-nav ul ul{padding:0 0 0 1rem}.navbar-nav li{display:flex;flex-direction:column}.navbar-nav li a{display:flex;align-items:center;height:100%;padding-top:.25rem;padding-bottom:.25rem;color:var(--pst-color-text-muted);text-decoration:none}.navbar-nav li a:hover{color:var(--pst-color-link-hover);text-decoration:underline;text-decoration-thickness:max(1px, .0625rem);text-underline-offset:.1578em;text-decoration-thickness:max(3px, .1875rem, .12em);text-decoration-skip-ink:none;text-decoration-skip:none}.navbar-nav li a:focus-visible{outline:2px solid var(--pst-color-accent)}.navbar-nav .toctree-checkbox{position:absolute;display:none}.navbar-nav .toctree-checkbox~ul{display:none}.navbar-nav .toctree-checkbox~label i{transform:rotate(0deg)}.navbar-nav .toctree-checkbox:checked~ul{display:block}.navbar-nav .toctree-checkbox:checked~label i{transform:rotate(180deg)}.bd-header .navbar-nav>p.sidebar-header-items__title{display:none}.page-toc .section-nav{padding-left:0;border-bottom:none}.page-toc .section-nav ul{padding-left:1rem}.page-toc .nav-link{font-size:var(--pst-sidebar-font-size-mobile)}@media(min-width: 1200px){.page-toc .nav-link{font-size:var(--pst-sidebar-font-size)}}.page-toc .onthispage{color:var(--pst-color-text-base);font-weight:var(--pst-sidebar-header-font-weight);margin-bottom:.5rem}.prev-next-area{width:100%}.prev-next-area p{margin:0 .3em;line-height:1.3em}.prev-next-area i{font-size:1.2em}.prev-next-area a{display:flex;align-items:center;border:none;padding:10px;max-width:45%;overflow-x:hidden;color:var(--pst-color-text-muted);text-decoration:none}.prev-next-area a p.prev-next-title{word-wrap:break-word;color:var(--pst-color-link);text-decoration:underline;text-decoration-thickness:max(1px, .0625rem);text-underline-offset:.1578em;font-weight:var(--pst-admonition-font-weight-heading);font-size:1.1em}.prev-next-area a p.prev-next-title:hover{color:var(--pst-color-link-hover);text-decoration-thickness:max(3px, .1875rem, .12em);text-decoration-skip-ink:none;text-decoration-skip:none}.prev-next-area a p.prev-next-title:active{color:var(--pst-color-link)}.prev-next-area a p.prev-next-title:visited{color:var(--pst-color-link)}.prev-next-area a p.prev-next-title:visited:hover{color:var(--pst-color-link-hover)}.prev-next-area a p.prev-next-title:focus-visible{outline:2px solid var(--pst-color-accent)}.prev-next-area a:hover p.prev-next-title:hover{text-decoration:underline;text-decoration-thickness:max(1px, .0625rem);text-underline-offset:.1578em;text-decoration-thickness:max(3px, .1875rem, .12em);text-decoration-skip-ink:none;text-decoration-skip:none;color:var(--pst-color-link-hover)}.prev-next-area a:visited p.prev-next-title{color:var(--pst-color-link)}.prev-next-area a:visited p.prev-next-title:hover{color:var(--pst-color-link-hover)}.prev-next-area a .prev-next-info{flex-direction:column;margin:0 .5em}.prev-next-area a .prev-next-info .prev-next-subtitle{text-transform:capitalize}.prev-next-area a.left-prev{float:left}.prev-next-area a.right-next{float:right}.prev-next-area a.right-next div.prev-next-info{text-align:right}.bd-search{position:relative;padding-left:.5rem;gap:.5rem;background-color:var(--pst-color-background);border-radius:.25rem;border:1px solid var(--pst-color-border);color:var(--pst-color-text-base)}.bd-search:active{background-color:var(--pst-color-background);color:var(--pst-color-text-muted)}.bd-search .icon{position:absolute;color:var(--pst-color-border);left:25px}.bd-search .fa-solid.fa-magnifying-glass{position:absolute;left:calc((2.5rem - .7em)/2);color:var(--pst-color-text-muted)}.bd-search input::placeholder{color:var(--pst-color-text-muted)}.bd-search input::-webkit-search-cancel-button,.bd-search input::-webkit-search-decoration{-webkit-appearance:none;appearance:none}.bd-search .search-button__kbd-shortcut{display:flex;position:absolute;right:.5rem;color:var(--pst-color-border)}.form-control{background-color:var(--pst-color-background);color:var(--pst-color-text-base)}.form-control:focus,.form-control:focus-visible{border:none;box-shadow:none;outline:3px solid var(--pst-color-accent);background-color:var(--pst-color-background);color:var(--pst-color-text-muted)}.search-button{display:flex;align-items:center;align-content:center;color:var(--pst-color-text-muted);padding:0 0 .25rem 0;border-radius:0}.search-button:hover{color:var(--pst-color-link-hover);box-shadow:0px max(3px, .1875rem, .12em) 0px var(--pst-color-link-hover)}.search-button:focus-visible{outline:2px solid var(--pst-color-accent)}.search-button i{font-size:1.3rem}.search-button__search-container,.search-button__overlay{display:none}.search-button__wrapper.show .search-button__search-container{display:flex;position:fixed;z-index:1055;top:30%;left:50%;transform:translate(-50%, -50%);right:1rem;margin-top:.5rem;width:90%;max-width:800px}.search-button__wrapper.show .search-button__overlay{display:flex;position:fixed;z-index:1050;background-color:#000;opacity:.5;width:100%;height:100%;top:0px;left:0px}.search-button__wrapper.show form.bd-search{flex-grow:1;padding-top:0;padding-bottom:0}.search-button__wrapper.show svg,.search-button__wrapper.show input{font-size:var(--pst-font-size-icon)}.search-button-field{display:inline-flex;align-items:center;border:var(--pst-color-border) solid 1px;border-radius:1.5em;color:var(--pst-color-text-muted);padding:.5em;background-color:var(--pst-color-surface)}.search-button-field:hover{border:2px solid var(--pst-color-link-hover)}.search-button-field:focus-visible{border:2px solid var(--pst-color-accent)}.search-button-field .search-button__default-text{font-size:var(--bs-nav-link-font-size);font-weight:var(--bs-nav-link-font-weight);margin-right:.5em;margin-left:.5em}.search-button-field .kbd-shortcut__modifier{font-size:.75em}.search-button-field>*{align-items:center}.search-button-field>:not(svg){display:none}@media(min-width: 960px){.search-button-field>:not(svg){display:flex}}div#searchbox p.highlight-link{margin:1rem 0;width:fit-content;box-shadow:0 .2rem .5rem var(--pst-color-shadow),0 0 .0625rem var(--pst-color-shadow) !important}@media(min-width: 1200px){div#searchbox p.highlight-link{margin-left:2rem}}div#searchbox p.highlight-link a{border-radius:.25rem;font-size:1.25rem;padding:.75rem;background-color:var(--pst-color-primary);color:var(--pst-color-primary-text);text-decoration:none;transition:box-shadow .25s ease-out}div#searchbox p.highlight-link a:hover{box-shadow:inset 0px 0px 50px 50px rgba(0,0,0,.25)}div#searchbox p.highlight-link a:before{content:var(--pst-icon-search-minus);color:unset;font:var(--fa-font-solid);margin-right:.5rem}.theme-switch-button{margin:0 -0.5rem;padding:0;color:var(--pst-color-text-muted);border-radius:0}.theme-switch-button:focus-visible{outline:2px solid var(--pst-color-accent)}.theme-switch-button span{display:none;padding:.5em}.theme-switch-button span:hover{color:var(--pst-color-link-hover);box-shadow:0px max(3px, .1875rem, .12em) 0px var(--pst-color-link-hover)}.theme-switch-button span:active{text-decoration:none;color:var(--pst-color-link-hover)}html[data-mode=auto] .theme-switch-button span[data-mode=auto]{display:flex}html[data-mode=light] .theme-switch-button span[data-mode=light]{display:flex}html[data-mode=dark] .theme-switch-button span[data-mode=dark]{display:flex}button.btn.version-switcher__button{border-color:var(--pst-color-border);color:var(--pst-color-text-base);margin-bottom:1em}@media(min-width: 960px){button.btn.version-switcher__button{margin-bottom:unset}}button.btn.version-switcher__button:hover{text-decoration:underline;text-decoration-thickness:max(1px, .0625rem);text-underline-offset:.1578em;text-decoration-thickness:max(3px, .1875rem, .12em);text-decoration-skip-ink:none;text-decoration-skip:none;color:var(--pst-color-link-hover)}button.btn.version-switcher__button:focus-visible{outline:2px solid var(--pst-color-accent)}button.btn.version-switcher__button:active{color:var(--pst-color-text-base);border-color:var(--pst-color-border)}.version-switcher__menu{border-color:var(--pst-color-border);border-radius:var(--bs-dropdown-border-radius)}.version-switcher__menu a.list-group-item{background-color:var(--pst-color-on-background);color:var(--pst-color-text-base);padding:.75rem 1.25rem}.version-switcher__menu a.list-group-item:not(:last-child){border-bottom:1px solid var(--pst-color-border)}.version-switcher__menu a.list-group-item:hover{text-decoration:underline;text-decoration-thickness:max(1px, .0625rem);text-underline-offset:.1578em;text-decoration-thickness:max(3px, .1875rem, .12em);text-decoration-skip-ink:none;text-decoration-skip:none;color:var(--pst-color-link-hover)}.version-switcher__menu a.list-group-item:hover{background-color:var(--pst-color-surface)}.version-switcher__menu a.list-group-item.active{font-weight:600;color:var(--pst-color-primary);box-shadow:inset max(3px, .1875rem, .12em) 0px 0px var(--pst-color-primary);position:relative;z-index:1}.version-switcher__menu a.list-group-item.active span:before{content:\"\";width:100%;height:100%;position:absolute;z-index:-1;left:0;top:0}button.version-switcher__button,.version-switcher__menu{font-size:1.1em;z-index:1055}@media(min-width: 960px){button.version-switcher__button,.version-switcher__menu{font-size:unset}}nav.page-toc{margin-bottom:1rem}.bd-toc .nav .nav,.list-caption .nav{display:none}.bd-toc .nav .nav.visible,.list-caption .nav.visible{display:block}.bd-toc .nav>.active>ul,.list-caption>.active>ul{display:block}.toc-entry{display:block}.toc-entry a>code{color:var(--pst-color-text-muted)}.toc-entry a.nav-link{display:block;padding:.125rem 0;padding-left:1rem;margin-left:-1rem;color:var(--pst-color-text-muted);text-decoration:none}.toc-entry a.nav-link:hover{text-decoration:underline;background-color:rgba(0,0,0,0);color:var(--pst-color-link-hover);text-decoration-thickness:max(3px, .1875rem, .12em);text-decoration-skip-ink:none;text-decoration-skip:none}.toc-entry a.nav-link:active{color:var(--pst-color-link-hover)}.toc-entry a.nav-link.active{font-weight:600;color:var(--pst-color-primary);box-shadow:inset max(3px, .1875rem, .12em) 0px 0px var(--pst-color-primary);background-color:rgba(0,0,0,0)}.toc-entry a.nav-link.active:hover{color:var(--pst-color-link-hover)}div.versionadded,div.versionchanged,div.deprecated{vertical-align:middle;margin:1.5625em auto;padding:0 .6rem 0 .6rem;overflow:hidden;page-break-inside:avoid;border-left:.2rem solid;border-color:var(--pst-color-info);border-radius:.25rem;background-color:var(--pst-color-on-background);box-shadow:0 .2rem .5rem var(--pst-color-shadow),0 0 .0625rem var(--pst-color-shadow) !important;position:relative}div.versionadded>p,div.versionchanged>p,div.deprecated>p{margin-bottom:.6rem;margin-top:.6rem}div.versionadded{border-color:var(--pst-color-success);background-color:var(--pst-color-success-bg)}div.versionchanged{border-color:var(--pst-color-warning);background-color:var(--pst-color-warning-bg)}div.deprecated{border-color:var(--pst-color-danger);background-color:var(--pst-color-danger-bg)}span.versionmodified{font-weight:600}span.versionmodified:before{margin-right:.6rem;color:var(--pst-color-info);font:var(--fa-font-solid);content:var(--pst-icon-versionmodified-default)}span.versionmodified.added:before{color:var(--pst-color-success);content:var(--pst-icon-versionmodified-added)}span.versionmodified.changed:before{color:var(--pst-color-warning);content:var(--pst-icon-versionmodified-changed)}span.versionmodified.deprecated:before{color:var(--pst-color-danger);content:var(--pst-icon-versionmodified-deprecated)}.sidebar-indices-items{display:flex;flex-direction:column;border-top:1px solid var(--pst-color-border)}@media(min-width: 960px){.sidebar-indices-items{border-top:none}}.sidebar-indices-items .sidebar-indices-items__title{font-weight:var(--pst-sidebar-header-font-weight);font-size:var(--pst-sidebar-header-font-size);color:var(--pst-color-text-base);margin-bottom:.5rem}.sidebar-indices-items ul.indices-link{margin-right:-1rem;list-style:none;padding:0}.sidebar-indices-items ul.indices-link li>a{display:block;padding:.25rem 0;color:var(--pst-color-text-muted)}.sidebar-indices-items ul.indices-link li>a:hover{color:var(--pst-color-primary);text-decoration:none;background-color:rgba(0,0,0,0)}.bd-sidebar-primary div#rtd-footer-container{position:sticky;bottom:-1rem;margin:-1rem}.bd-sidebar-primary div#rtd-footer-container .rst-versions.rst-badge{position:unset;font-size:.9em;font-family:var(--pst-font-family-base);max-width:unset}.bd-sidebar-primary div#rtd-footer-container .rst-versions.rst-badge .rst-current-version{display:flex;align-items:center;gap:.2rem;height:2.5rem;transition:background-color .2s ease-out;background-color:var(--pst-color-background);color:var(--pst-color-success);border-top:1px solid var(--pst-color-border)}.bd-sidebar-primary div#rtd-footer-container .rst-versions.rst-badge .fa.fa-book{color:var(--pst-color-text-muted);margin-right:auto}.bd-sidebar-primary div#rtd-footer-container .rst-versions.rst-badge .fa.fa-book::after{color:var(--pst-color-text-base);content:\"Read The Docs\";font-family:var(--pst-font-family-base);font-weight:var(--pst-admonition-font-weight-heading)}.bd-sidebar-primary div#rtd-footer-container .rst-versions.rst-badge .fa.fa-caret-down{color:var(--pst-color-text-muted)}.bd-sidebar-primary div#rtd-footer-container .rst-versions.rst-badge.shift-up .rst-current-version{border-bottom:1px solid var(--pst-color-border)}.bd-sidebar-primary div#rtd-footer-container .rst-other-versions{background-color:var(--pst-color-surface);color:var(--pst-color-text-base)}.bd-sidebar-primary div#rtd-footer-container .rst-other-versions dl dd a{color:var(--pst-color-text-muted)}.bd-sidebar-primary div#rtd-footer-container .rst-other-versions hr{background-color:var(--pst-color-border)}.bd-sidebar-primary div#rtd-footer-container .rst-other-versions small a{color:var(--pst-color-link)}.bd-sidebar-primary div#rtd-footer-container .rst-other-versions input{padding-left:.5rem;border:1px solid var(--pst-color-border);background-color:var(--pst-color-surface)}div.admonition,.admonition{margin:1.5625em auto;padding:0 .6rem .8rem .6rem;overflow:hidden;page-break-inside:avoid;border-left:.2rem solid;border-color:var(--pst-color-info);border-radius:.25rem;background-color:var(--pst-color-on-background);box-shadow:0 .2rem .5rem var(--pst-color-shadow),0 0 .0625rem var(--pst-color-shadow) !important}div.admonition *:last-child,.admonition *:last-child{margin-bottom:0}div.admonition p.admonition-title~*,.admonition p.admonition-title~*{margin-left:1.4rem;margin-right:1.4rem}div.admonition>ol,div.admonition>ul,.admonition>ol,.admonition>ul{margin-left:1em}div.admonition>.admonition-title,.admonition>.admonition-title{margin:0 -0.6rem;padding:.4rem .6rem .4rem 2rem;font-weight:var(--pst-admonition-font-weight-heading);position:relative;z-index:1}div.admonition>.admonition-title:before,.admonition>.admonition-title:before{content:\"\";width:100%;height:100%;position:absolute;left:0;top:0;background-color:var(--pst-color-info-bg);z-index:-1;pointer-events:none}div.admonition>.admonition-title:after,.admonition>.admonition-title:after{position:absolute;left:.5rem;width:1rem;height:1rem;color:var(--pst-color-info);font:var(--fa-font-solid);line-height:inherit;content:var(--pst-icon-admonition-default);opacity:1}div.admonition>.admonition-title+*,.admonition>.admonition-title+*{margin-top:.4em}div.admonition.attention,.admonition.attention{border-color:var(--pst-color-attention)}div.admonition.attention>.admonition-title:before,.admonition.attention>.admonition-title:before{background-color:var(--pst-color-attention-bg)}div.admonition.attention>.admonition-title:after,.admonition.attention>.admonition-title:after{color:var(--pst-color-attention);content:var(--pst-icon-admonition-attention)}div.admonition.caution,.admonition.caution{border-color:var(--pst-color-warning)}div.admonition.caution>.admonition-title:before,.admonition.caution>.admonition-title:before{background-color:var(--pst-color-warning-bg)}div.admonition.caution>.admonition-title:after,.admonition.caution>.admonition-title:after{color:var(--pst-color-warning);content:var(--pst-icon-admonition-caution)}div.admonition.warning,.admonition.warning{border-color:var(--pst-color-warning)}div.admonition.warning>.admonition-title:before,.admonition.warning>.admonition-title:before{background-color:var(--pst-color-warning-bg)}div.admonition.warning>.admonition-title:after,.admonition.warning>.admonition-title:after{color:var(--pst-color-warning);content:var(--pst-icon-admonition-warning)}div.admonition.danger,.admonition.danger{border-color:var(--pst-color-danger)}div.admonition.danger>.admonition-title:before,.admonition.danger>.admonition-title:before{background-color:var(--pst-color-danger-bg)}div.admonition.danger>.admonition-title:after,.admonition.danger>.admonition-title:after{color:var(--pst-color-danger);content:var(--pst-icon-admonition-danger)}div.admonition.error,.admonition.error{border-color:var(--pst-color-danger)}div.admonition.error>.admonition-title:before,.admonition.error>.admonition-title:before{background-color:var(--pst-color-danger-bg)}div.admonition.error>.admonition-title:after,.admonition.error>.admonition-title:after{color:var(--pst-color-danger);content:var(--pst-icon-admonition-error)}div.admonition.hint,.admonition.hint{border-color:var(--pst-color-success)}div.admonition.hint>.admonition-title:before,.admonition.hint>.admonition-title:before{background-color:var(--pst-color-success-bg)}div.admonition.hint>.admonition-title:after,.admonition.hint>.admonition-title:after{color:var(--pst-color-success);content:var(--pst-icon-admonition-hint)}div.admonition.tip,.admonition.tip{border-color:var(--pst-color-success)}div.admonition.tip>.admonition-title:before,.admonition.tip>.admonition-title:before{background-color:var(--pst-color-success-bg)}div.admonition.tip>.admonition-title:after,.admonition.tip>.admonition-title:after{color:var(--pst-color-success);content:var(--pst-icon-admonition-tip)}div.admonition.important,.admonition.important{border-color:var(--pst-color-attention)}div.admonition.important>.admonition-title:before,.admonition.important>.admonition-title:before{background-color:var(--pst-color-attention-bg)}div.admonition.important>.admonition-title:after,.admonition.important>.admonition-title:after{color:var(--pst-color-attention);content:var(--pst-icon-admonition-important)}div.admonition.note,.admonition.note{border-color:var(--pst-color-info)}div.admonition.note>.admonition-title:before,.admonition.note>.admonition-title:before{background-color:var(--pst-color-info-bg)}div.admonition.note>.admonition-title:after,.admonition.note>.admonition-title:after{color:var(--pst-color-info);content:var(--pst-icon-admonition-note)}div.admonition.seealso,.admonition.seealso{border-color:var(--pst-color-success)}div.admonition.seealso>.admonition-title:before,.admonition.seealso>.admonition-title:before{background-color:var(--pst-color-success-bg)}div.admonition.seealso>.admonition-title:after,.admonition.seealso>.admonition-title:after{color:var(--pst-color-success);content:var(--pst-icon-admonition-seealso)}div.admonition.admonition-todo,.admonition.admonition-todo{border-color:var(--pst-color-secondary)}div.admonition.admonition-todo>.admonition-title:before,.admonition.admonition-todo>.admonition-title:before{background-color:var(--pst-color-secondary-bg)}div.admonition.admonition-todo>.admonition-title:after,.admonition.admonition-todo>.admonition-title:after{color:var(--pst-color-secondary);content:var(--pst-icon-admonition-todo)}div.admonition.sidebar,.admonition.sidebar{max-width:40%;float:right;clear:both;margin-left:.5rem;margin-top:0;border-width:0 0 0 .2rem}div.admonition.sidebar.attention,div.admonition.sidebar.important,.admonition.sidebar.attention,.admonition.sidebar.important{border-color:var(--pst-color-attention)}div.admonition.sidebar.caution,div.admonition.sidebar.warning,.admonition.sidebar.caution,.admonition.sidebar.warning{border-color:var(--pst-color-warning)}div.admonition.sidebar.danger,div.admonition.sidebar.error,.admonition.sidebar.danger,.admonition.sidebar.error{border-color:var(--pst-color-danger)}div.admonition.sidebar.hint,div.admonition.sidebar.tip,div.admonition.sidebar.seealso,.admonition.sidebar.hint,.admonition.sidebar.tip,.admonition.sidebar.seealso{border-color:var(--pst-color-success)}div.admonition.sidebar.note,div.admonition.sidebar.todo,.admonition.sidebar.note,.admonition.sidebar.todo{border-color:var(--pst-color-info)}div.admonition.sidebar p.admonition-title~*,.admonition.sidebar p.admonition-title~*{margin-left:0rem;margin-right:0rem}div.topic,div.topic.contents,nav.contents,aside.topic{display:flex;flex-direction:column;background-color:var(--pst-color-surface);border-color:var(--pst-color-border);border-radius:.25rem;padding:1rem 1.25rem;box-shadow:0 .2rem .5rem var(--pst-color-shadow),0 0 .0625rem var(--pst-color-shadow) !important}div.topic .topic-title,div.topic.contents .topic-title,nav.contents .topic-title,aside.topic .topic-title{margin:0 0 .5rem 0}div.topic p,div.topic.contents p,nav.contents p,aside.topic p{color:var(--pst-color-on-surface) !important}div.topic ul.simple,div.topic.contents ul.simple,nav.contents ul.simple,aside.topic ul.simple{padding-left:1rem}div.topic ul.simple ul,div.topic.contents ul.simple ul,nav.contents ul.simple ul,aside.topic ul.simple ul{padding-left:2em}aside.sidebar{border:1px solid var(--pst-color-border);background-color:var(--pst-color-surface);border-radius:.25rem;margin-left:.5rem;padding:0}aside.sidebar>*:last-child{padding-bottom:1rem}aside.sidebar p.sidebar-title{position:relative;margin-bottom:0;padding-top:.5rem;padding-bottom:.5rem;border-bottom:1px solid var(--pst-color-border);font-family:var(--pst-font-family-heading);font-weight:var(--pst-admonition-font-weight-heading)}aside.sidebar>*:not(.sidebar-title):first-child,aside.sidebar>p.sidebar-title+*{margin-top:1rem}aside.sidebar>*{padding-left:1rem;padding-right:1rem}p.rubric{display:flex;flex-direction:column}.seealso dd{margin-top:0;margin-bottom:0}table.field-list{border-collapse:separate;border-spacing:10px;margin-left:1px}table.field-list th.field-name{padding:1px 8px 1px 5px;white-space:nowrap;background-color:var(--pst-color-surface)}table.field-list td.field-body p{font-style:italic}table.field-list td.field-body p>strong{font-style:normal}table.field-list td.field-body blockquote{border-left:none;margin:0em 0em .3em;padding-left:30px}.table.autosummary td:first-child{white-space:nowrap}.sig{font-family:var(--pst-font-family-monospace)}.sig-inline.c-texpr,.sig-inline.cpp-texpr{font-family:unset}.sig.c .k,.sig.c .kt,.sig.cpp .k,.sig.cpp .kt{color:var(--pst-color-text-base)}.sig.c .m,.sig.cpp .m{color:var(--pst-color-text-base)}.sig.c .s,.sig.c .sc,.sig.cpp .s,.sig.cpp .sc{color:var(--pst-color-text-base)}.sig-name{color:var(--pst-color-inline-code)}.sig-param .o,.sig-param .default_value{color:var(--pst-color-text-muted);font-weight:normal}dt:target,span.highlighted{background-color:var(--pst-color-target)}.viewcode-back{font-family:var(--pst-font-family-base)}.viewcode-block:target{border-top:1px solid var(--pst-color-border);border-bottom:1px solid var(--pst-color-border);position:relative;background-color:var(--pst-color-target)}dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) dd{margin-left:2rem}dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) dd>dl.simple>dt{display:flex}dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) dl.field-list{display:grid;grid-template-columns:unset}dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) dt.field-odd,dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) dt.field-even{margin-top:.2rem;margin-bottom:.1rem;background-color:var(--pst-color-surface)}div[class*=highlight-],div.highlight,div.literal-block-wrapper{display:flex;flex-direction:column;width:unset;border-radius:.25rem}div.literal-block-wrapper{border:1px solid var(--pst-color-border);border-radius:.25rem}div.literal-block-wrapper div.code-block-caption{margin:0;border-bottom:1px solid var(--pst-color-border);padding:.5rem;font-size:1rem;font-weight:var(--pst-font-weight-caption)}div.literal-block-wrapper div.code-block-caption a.headerlink{font-size:inherit}div.literal-block-wrapper div[class*=highlight-]{margin:0;border-radius:0}div.literal-block-wrapper div[class*=highlight-] pre{border:none;box-shadow:none}code.literal{padding:.1rem .25rem;background-color:var(--pst-color-surface);border:1px solid var(--pst-color-border);border-radius:.25rem}a>code{color:var(--pst-color-inline-code-links)}html[data-theme=light] .highlight .nf{color:#0078a1 !important}span.linenos{opacity:.8 !important}figure a.headerlink{position:absolute;font-size:inherit}figure:hover a.headerlink{visibility:visible}figure figcaption{font-family:var(--pst-font-family-heading);font-weight:var(--pst-font-weight-caption);color:var(--pst-color-text-muted);margin-left:auto;margin-right:auto}figure figcaption table.table{width:fit-content;margin-left:auto;margin-right:auto}dt.label>span.brackets:not(:only-child):before{content:\"[\"}dt.label>span.brackets:not(:only-child):after{content:\"]\"}a.footnote-reference{vertical-align:super;font-size:small}aside.footnote{margin-bottom:.5rem}aside.footnote:last-child{margin-bottom:1rem}aside.footnote span.label,aside.footnote span.backrefs{font-weight:bold}aside.footnote:target{background-color:var(--pst-color-target)}table.highlighttable td.linenos,span.linenos,div.doctest>div.highlight span.gp{user-select:none;-webkit-user-select:text;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}dd{margin-top:3px;margin-bottom:10px;margin-left:30px}ol,ul{padding-inline-start:2rem}ol li>p:first-child,ul li>p:first-child{margin-bottom:.25rem;margin-top:.25rem}blockquote{padding:1em 1em;color:var(--pst-color-text-muted);border-left:.25em solid var(--pst-color-border);border-radius:.25rem;position:relative}blockquote p{color:var(--pst-color-text-base)}blockquote .line-block{margin:0 0}blockquote p:last-child{margin-bottom:0}blockquote:before{content:\"\";width:100%;height:100%;position:absolute;left:0;top:0;background-color:var(--pst-color-on-background);z-index:-1;pointer-events:none}blockquote:before{z-index:-1}span.guilabel{border:1px solid var(--pst-color-info);color:var(--pst-color-info);font-size:80%;font-weight:700;border-radius:4px;padding:2.4px 6px;margin:auto 2px;position:relative}span.guilabel:before{content:\"\";width:100%;height:100%;position:absolute;left:0;top:0;background-color:var(--pst-color-info-bg);z-index:-1;pointer-events:none}a.reference.download:before{content:var(--pst-icon-download);font:var(--fa-font-solid);font-size:.8em;padding:0 .25em;color:var(--pst-color-text-muted)}table{display:table;overflow:auto;margin-left:auto;margin-right:auto}table.table-right{margin-right:0}table.table-left{margin-left:0}table caption{text-align:center;caption-side:top;color:var(--pst-color-text-muted)}th.text-align\\:left,td.text-align\\:left{text-align:left}th.text-align\\:right,td.text-align\\:right{text-align:right}th.text-align\\:center,td.text-align\\:center{text-align:center}.table{--bs-table-bg: transparent}.toctree-wrapper p.caption{font-size:1.5em;margin-bottom:0em}.toctree-wrapper>ul{padding-left:0}.toctree-wrapper li[class^=toctree-l]{list-style:none;margin-bottom:.2em}.toctree-wrapper li[class^=toctree-l]>a{list-style:none;font-size:1.1em}.toctree-wrapper li[class^=toctree-l]>ul{list-style:none;padding-inline-start:1.5em}.toctree-wrapper .toctree-l1>a{font-size:1.3em}div.topic.contents ul.simple,nav.contents ul.simple{list-style:none;padding-left:0}span.math,div.math{align-items:center;display:flex;max-width:100%;overflow:hidden}span.math{display:inline-flex}div.math{gap:.5em;flex-direction:row-reverse}div.math span.eqno a.headerlink{position:relative;font-size:1em}div.math mjx-container{flex-grow:1;padding-bottom:.2rem;overflow:auto}div.math mjx-container mjx-assistive-mml{height:0}.ablog-sidebar-item h2,.ablog-sidebar-item h3{font-size:var(--pst-sidebar-header-font-size);margin-top:.5rem}.ablog-sidebar-item h2 a,.ablog-sidebar-item h3 a{color:var(--pst-color-text-base)}.ablog-sidebar-item ul{list-style:none;padding-left:0;overflow-y:hidden;display:flex;flex-direction:column;gap:.5em;margin-bottom:0}.ablog-sidebar-item ul.ablog-cloud{flex-direction:row;flex-flow:wrap;gap:.5rem}.ablog-sidebar-item ul.ablog-cloud li{display:flex;align-items:center}.ablog__prev-next{font-size:1.2em;display:flex;padding:1rem 0}.ablog__prev-next>span{display:flex;max-width:45%}.ablog__prev-next>span a{display:flex;align-items:center;margin-left:auto;gap:1rem;line-height:1.5rem}.ablog__prev-next>span a i:before{color:var(--pst-color-text-base)}.ablog__prev-next span.ablog__prev i.fa-arrow-circle-left:before{content:var(--pst-icon-angle-left)}.ablog__prev-next span.ablog__spacer{display:none}.ablog__prev-next span.ablog__next{margin-left:auto;text-align:right}.ablog__prev-next span.ablog__next i.fa-arrow-circle-right:before{content:var(--pst-icon-angle-right)}.ablog__collection,.postlist{padding-left:0}.ablog__collection .ablog-post,.postlist .ablog-post{list-style:none}.ablog__collection .ablog-post .ablog-archive,.postlist .ablog-post .ablog-archive{display:flex;flex-direction:row;flex-wrap:wrap;gap:1rem;list-style:none;font-size:.75rem;padding-left:0}.ablog__collection .ablog-post .ablog-post-title,.postlist .ablog-post .ablog-post-title{margin-top:0;font-size:1.25rem}.ablog__collection .ablog-post .ablog-post-title a,.postlist .ablog-post .ablog-post-title a{font-weight:bold}.ablog__collection .ablog-post .ablog-post-expand,.postlist .ablog-post .ablog-post-expand{margin-bottom:.5rem}.docutils.container{padding-left:unset;padding-right:unset;margin-left:unset;margin-right:unset;max-width:unset;width:unset}div.highlight button.copybtn{display:flex;align-items:center;justify-content:center;background-color:unset;border:none;background-color:var(--pst-color-surface)}div.highlight button.copybtn:not(.success){color:var(--pst-color-muted)}div.highlight button.copybtn:hover:not(.success){color:var(--pst-color-text);background-color:var(--pst-color-shadow)}div.highlight button.copybtn.o-tooltip--left:after{color:var(--pst-color-text);background-color:var(--pst-color-surface)}#ethical-ad-placement .ethical-sidebar a,#ethical-ad-placement .ethical-sidebar a:visited,#ethical-ad-placement .ethical-sidebar a:hover,#ethical-ad-placement .ethical-sidebar a:active,#ethical-ad-placement .ethical-footer a,#ethical-ad-placement .ethical-footer a:visited,#ethical-ad-placement .ethical-footer a:hover,#ethical-ad-placement .ethical-footer a:active{color:var(--pst-color-text-base)}#ethical-ad-placement .ethical-sidebar,#ethical-ad-placement .ethical-footer{background-color:var(--pst-color-background);border:1px solid var(--pst-color-border);border-radius:5px;color:var(--pst-color-text-base);font-size:14px;line-height:20px}.bd-content div.jupyter_container{border:none;background-color:unset;box-shadow:none}.bd-content div.jupyter_container div.output,.bd-content div.jupyter_container div.highlight{border-radius:.25rem}.bd-content div.jupyter_container div.highlight{background-color:var(--pst-color-surface)}.bd-content div.jupyter_container .cell_input,.bd-content div.jupyter_container .cell_output{border-radius:.25rem}.bd-content div.jupyter_container .cell_input pre,.bd-content div.jupyter_container .cell_output pre{padding:1rem}.xr-wrap[hidden]{display:block !important}:root{--pst-teal-50: #f4fbfc;--pst-teal-100: #e9f6f8;--pst-teal-200: #d0ecf1;--pst-teal-300: #abdde6;--pst-teal-400: #3fb1c5;--pst-teal-500: #0a7d91;--pst-teal-600: #085d6c;--pst-teal-700: #064752;--pst-teal-800: #042c33;--pst-teal-900: #021b1f;--pst-violet-50: #f4eefb;--pst-violet-100: #e0c7ff;--pst-violet-200: #d5b4fd;--pst-violet-300: #b780ff;--pst-violet-400: #9c5ffd;--pst-violet-500: #8045e5;--pst-violet-600: #6432bd;--pst-violet-700: #4b258f;--pst-violet-800: #341a61;--pst-violet-900: #1e0e39;--pst-gray-50: #f9f9fa;--pst-gray-100: #f3f4f5;--pst-gray-200: #e5e7ea;--pst-gray-300: #d1d5da;--pst-gray-400: #9ca4af;--pst-gray-500: #677384;--pst-gray-600: #48566b;--pst-gray-700: #29313d;--pst-gray-800: #222832;--pst-gray-900: #14181e;--pst-pink-50: #fcf8fd;--pst-pink-100: #fcf0fa;--pst-pink-200: #f8dff5;--pst-pink-300: #f3c7ee;--pst-pink-400: #e47fd7;--pst-pink-500: #c132af;--pst-pink-600: #912583;--pst-pink-700: #6e1c64;--pst-pink-800: #46123f;--pst-pink-900: #2b0b27;--pst-foundation-white: #ffffff;--pst-foundation-black: #14181e}html:not([data-theme]){--pst-color-primary: #0a7d91;--pst-color-primary-bg: #d0ecf1;--pst-color-secondary: #8045e5;--pst-color-secondary-bg: #e0c7ff;--pst-color-accent: #c132af;--pst-color-accent-bg: #f8dff5;--pst-color-info: #276be9;--pst-color-info-bg: #dce7fc;--pst-color-warning: #f66a0a;--pst-color-warning-bg: #f8e3d0;--pst-color-success: #00843f;--pst-color-success-bg: #d6ece1;--pst-color-attention: var(--pst-color-warning);--pst-color-attention-bg: var(--pst-color-warning-bg);--pst-color-danger: #d72d47;--pst-color-danger-bg: #f9e1e4;--pst-color-text-base: #222832;--pst-color-text-muted: #48566b;--pst-color-heading-color: #ffffff;--pst-color-shadow: rgba(0, 0, 0, 0.1);--pst-color-border: #d1d5da;--pst-color-border-muted: rgba(23, 23, 26, 0.2);--pst-color-inline-code: #912583;--pst-color-inline-code-links: #085d6c;--pst-color-target: #f3cf95;--pst-color-background: #ffffff;--pst-color-on-background: #ffffff;--pst-color-surface: #f3f4f5;--pst-color-on-surface: #222832}html:not([data-theme]){--pst-color-link: var(--pst-color-primary);--pst-color-link-hover: var(--pst-color-secondary)}html:not([data-theme]) .only-dark,html:not([data-theme]) .only-dark~figcaption{display:none !important}html[data-theme=light]{--pst-color-primary: #0a7d91;--pst-color-primary-bg: #d0ecf1;--pst-color-secondary: #8045e5;--pst-color-secondary-bg: #e0c7ff;--pst-color-accent: #c132af;--pst-color-accent-bg: #f8dff5;--pst-color-info: #276be9;--pst-color-info-bg: #dce7fc;--pst-color-warning: #f66a0a;--pst-color-warning-bg: #f8e3d0;--pst-color-success: #00843f;--pst-color-success-bg: #d6ece1;--pst-color-attention: var(--pst-color-warning);--pst-color-attention-bg: var(--pst-color-warning-bg);--pst-color-danger: #d72d47;--pst-color-danger-bg: #f9e1e4;--pst-color-text-base: #222832;--pst-color-text-muted: #48566b;--pst-color-heading-color: #ffffff;--pst-color-shadow: rgba(0, 0, 0, 0.1);--pst-color-border: #d1d5da;--pst-color-border-muted: rgba(23, 23, 26, 0.2);--pst-color-inline-code: #912583;--pst-color-inline-code-links: #085d6c;--pst-color-target: #f3cf95;--pst-color-background: #ffffff;--pst-color-on-background: #ffffff;--pst-color-surface: #f3f4f5;--pst-color-on-surface: #222832;color-scheme:light}html[data-theme=light]{--pst-color-link: var(--pst-color-primary);--pst-color-link-hover: var(--pst-color-secondary)}html[data-theme=light] .only-dark,html[data-theme=light] .only-dark~figcaption{display:none !important}html[data-theme=dark]{--pst-color-primary: #3fb1c5;--pst-color-primary-bg: #042c33;--pst-color-secondary: #9c5ffd;--pst-color-secondary-bg: #341a61;--pst-color-accent: #e47fd7;--pst-color-accent-bg: #46123f;--pst-color-info: #79a3f2;--pst-color-info-bg: #06245d;--pst-color-warning: #ff9245;--pst-color-warning-bg: #652a02;--pst-color-success: #5fb488;--pst-color-success-bg: #002f17;--pst-color-attention: var(--pst-color-warning);--pst-color-attention-bg: var(--pst-color-warning-bg);--pst-color-danger: #e78894;--pst-color-danger-bg: #4e111b;--pst-color-text-base: #ced6dd;--pst-color-text-muted: #9ca4af;--pst-color-heading-color: #14181e;--pst-color-shadow: rgba(0, 0, 0, 0.2);--pst-color-border: #48566b;--pst-color-border-muted: #29313d;--pst-color-inline-code: #f3c7ee;--pst-color-inline-code-links: #3fb1c5;--pst-color-target: #675c04;--pst-color-background: #14181e;--pst-color-on-background: #222832;--pst-color-surface: #29313d;--pst-color-on-surface: #f3f4f5;color-scheme:dark}html[data-theme=dark]{--pst-color-link: var(--pst-color-primary);--pst-color-link-hover: var(--pst-color-secondary)}html[data-theme=dark] .only-light,html[data-theme=dark] .only-light~figcaption{display:none !important}html[data-theme=dark] img:not(.only-dark):not(.dark-light){filter:brightness(0.8) contrast(1.2)}html[data-theme=dark] .bd-content img:not(.only-dark):not(.dark-light){background:#fff;border-radius:.25rem}html[data-theme=dark] .MathJax_SVG *{fill:var(--pst-color-text-base)}.pst-color-primary{color:var(--pst-color-primary)}.pst-color-secondary{color:var(--pst-color-secondary)}.pst-color-accent{color:var(--pst-color-accent)}.pst-color-info{color:var(--pst-color-info)}.pst-color-warning{color:var(--pst-color-warning)}.pst-color-success{color:var(--pst-color-success)}.pst-color-attention{color:var(--pst-color-attention)}.pst-color-danger{color:var(--pst-color-danger)}.pst-color-text-base{color:var(--pst-color-text-base)}.pst-color-text-muted{color:var(--pst-color-text-muted)}.pst-color-heading-color{color:var(--pst-color-heading-color)}.pst-color-shadow{color:var(--pst-color-shadow)}.pst-color-border{color:var(--pst-color-border)}.pst-color-border-muted{color:var(--pst-color-border-muted)}.pst-color-inline-code{color:var(--pst-color-inline-code)}.pst-color-inline-code-links{color:var(--pst-color-inline-code-links)}.pst-color-target{color:var(--pst-color-target)}.pst-color-background{color:var(--pst-color-background)}.pst-color-on-background{color:var(--pst-color-on-background)}.pst-color-surface{color:var(--pst-color-surface)}.pst-color-on-surface{color:var(--pst-color-on-surface)}html[data-theme=light]{--pst-color-primary: rgb(10, 125, 145);--pst-color-primary-text: #ffffff;--pst-color-primary-highlight: #053f49;--sd-color-primary: var(--pst-color-primary);--sd-color-primary-text: var(--pst-color-primary-text);--sd-color-primary-highlight: var(--pst-color-primary-highlight);--sd-color-primary-bg: #d0ecf1;--sd-color-primary-bg-text: #14181e;--pst-color-secondary: rgb(128, 69, 229);--pst-color-secondary-text: #ffffff;--pst-color-secondary-highlight: #591bc2;--sd-color-secondary: var(--pst-color-secondary);--sd-color-secondary-text: var(--pst-color-secondary-text);--sd-color-secondary-highlight: var(--pst-color-secondary-highlight);--sd-color-secondary-bg: #e0c7ff;--sd-color-secondary-bg-text: #14181e;--pst-color-success: #00843f;--pst-color-success-text: #ffffff;--pst-color-success-highlight: #00381a;--sd-color-success: var(--pst-color-success);--sd-color-success-text: var(--pst-color-success-text);--sd-color-success-highlight: var(--pst-color-success-highlight);--sd-color-success-bg: #d6ece1;--sd-color-success-bg-text: #14181e;--pst-color-info: #276be9;--pst-color-info-text: #ffffff;--pst-color-info-highlight: #124ab1;--sd-color-info: var(--pst-color-info);--sd-color-info-text: var(--pst-color-info-text);--sd-color-info-highlight: var(--pst-color-info-highlight);--sd-color-info-bg: #dce7fc;--sd-color-info-bg-text: #14181e;--pst-color-warning: #f66a0a;--pst-color-warning-text: #14181e;--pst-color-warning-highlight: #ad4a06;--sd-color-warning: var(--pst-color-warning);--sd-color-warning-text: var(--pst-color-warning-text);--sd-color-warning-highlight: var(--pst-color-warning-highlight);--sd-color-warning-bg: #f8e3d0;--sd-color-warning-bg-text: #14181e;--pst-color-danger: #d72d47;--pst-color-danger-text: #ffffff;--pst-color-danger-highlight: #9a1d30;--sd-color-danger: var(--pst-color-danger);--sd-color-danger-text: var(--pst-color-danger-text);--sd-color-danger-highlight: var(--pst-color-danger-highlight);--sd-color-danger-bg: #f9e1e4;--sd-color-danger-bg-text: #14181e;--pst-color-light: #f3f4f5;--pst-color-light-text: #14181e;--pst-color-light-highlight: #c9ced2;--sd-color-light: var(--pst-color-light);--sd-color-light-text: var(--pst-color-light-text);--sd-color-light-highlight: var(--pst-color-light-highlight);--sd-color-light-bg: #f7f7f8;--sd-color-light-bg-text: #14181e;--pst-color-muted: #29313d;--pst-color-muted-text: #ffffff;--pst-color-muted-highlight: #0a0c0f;--sd-color-muted: var(--pst-color-muted);--sd-color-muted-text: var(--pst-color-muted-text);--sd-color-muted-highlight: var(--pst-color-muted-highlight);--sd-color-muted-bg: #5a6c86;--sd-color-muted-bg-text: #ffffff;--pst-color-dark: #222832;--pst-color-dark-text: #ffffff;--pst-color-dark-highlight: #030404;--sd-color-dark: var(--pst-color-dark);--sd-color-dark-text: var(--pst-color-dark-text);--sd-color-dark-highlight: var(--pst-color-dark-highlight);--pst-color-black: #14181e;--pst-color-black-text: #ffffff;--pst-color-black-highlight: black;--sd-color-black: var(--pst-color-black);--sd-color-black-text: var(--pst-color-black-text);--sd-color-black-highlight: var(--pst-color-black-highlight);--pst-color-white: #ffffff;--pst-color-white-text: #14181e;--pst-color-white-highlight: #d9d9d9;--sd-color-white: var(--pst-color-white);--sd-color-white-text: var(--pst-color-white-text);--sd-color-white-highlight: var(--pst-color-white-highlight)}html[data-theme=dark]{--pst-color-primary: rgb(63, 177, 197);--pst-color-primary-text: #14181e;--pst-color-primary-highlight: #2b7e8d;--sd-color-primary: var(--pst-color-primary);--sd-color-primary-text: var(--pst-color-primary-text);--sd-color-primary-highlight: var(--pst-color-primary-highlight);--sd-color-primary-bg: #042c33;--sd-color-primary-bg-text: #ffffff;--pst-color-secondary: rgb(156, 95, 253);--pst-color-secondary-text: #14181e;--pst-color-secondary-highlight: #6d13fc;--sd-color-secondary: var(--pst-color-secondary);--sd-color-secondary-text: var(--pst-color-secondary-text);--sd-color-secondary-highlight: var(--pst-color-secondary-highlight);--sd-color-secondary-bg: #341a61;--sd-color-secondary-bg-text: #ffffff;--pst-color-success: #5fb488;--pst-color-success-text: #14181e;--pst-color-success-highlight: #3f8762;--sd-color-success: var(--pst-color-success);--sd-color-success-text: var(--pst-color-success-text);--sd-color-success-highlight: var(--pst-color-success-highlight);--sd-color-success-bg: #002f17;--sd-color-success-bg-text: #ffffff;--pst-color-info: #79a3f2;--pst-color-info-text: #14181e;--pst-color-info-highlight: #3373eb;--sd-color-info: var(--pst-color-info);--sd-color-info-text: var(--pst-color-info-text);--sd-color-info-highlight: var(--pst-color-info-highlight);--sd-color-info-bg: #06245d;--sd-color-info-bg-text: #ffffff;--pst-color-warning: #ff9245;--pst-color-warning-text: #14181e;--pst-color-warning-highlight: #f86600;--sd-color-warning: var(--pst-color-warning);--sd-color-warning-text: var(--pst-color-warning-text);--sd-color-warning-highlight: var(--pst-color-warning-highlight);--sd-color-warning-bg: #652a02;--sd-color-warning-bg-text: #ffffff;--pst-color-danger: #e78894;--pst-color-danger-text: #14181e;--pst-color-danger-highlight: #da485b;--sd-color-danger: var(--pst-color-danger);--sd-color-danger-text: var(--pst-color-danger-text);--sd-color-danger-highlight: var(--pst-color-danger-highlight);--sd-color-danger-bg: #4e111b;--sd-color-danger-bg-text: #ffffff;--pst-color-light: #f3f4f5;--pst-color-light-text: #14181e;--pst-color-light-highlight: #c9ced2;--sd-color-light: var(--pst-color-light);--sd-color-light-text: var(--pst-color-light-text);--sd-color-light-highlight: var(--pst-color-light-highlight);--sd-color-light-bg: #a3abb2;--sd-color-light-bg-text: #14181e;--pst-color-muted: #f3f4f5;--pst-color-muted-text: #14181e;--pst-color-muted-highlight: #c9ced2;--sd-color-muted: var(--pst-color-muted);--sd-color-muted-text: var(--pst-color-muted-text);--sd-color-muted-highlight: var(--pst-color-muted-highlight);--sd-color-muted-bg: #1d222b;--sd-color-muted-bg-text: #ffffff;--pst-color-dark: #222832;--pst-color-dark-text: #ffffff;--pst-color-dark-highlight: #030404;--sd-color-dark: var(--pst-color-dark);--sd-color-dark-text: var(--pst-color-dark-text);--sd-color-dark-highlight: var(--pst-color-dark-highlight);--pst-color-black: #14181e;--pst-color-black-text: #ffffff;--pst-color-black-highlight: black;--sd-color-black: var(--pst-color-black);--sd-color-black-text: var(--pst-color-black-text);--sd-color-black-highlight: var(--pst-color-black-highlight);--pst-color-white: #ffffff;--pst-color-white-text: #14181e;--pst-color-white-highlight: #d9d9d9;--sd-color-white: var(--pst-color-white);--sd-color-white-text: var(--pst-color-white-text);--sd-color-white-highlight: var(--pst-color-white-highlight)}html[data-theme=light]{--sd-color-card-border: var(--pst-color-border)}html[data-theme=dark]{--sd-color-card-border: var(--pst-color-border)}html[data-theme=light] .sd-shadow-xs,html[data-theme=light] .sd-shadow-sm,html[data-theme=light] .sd-shadow-md,html[data-theme=light] .sd-shadow-lg{box-shadow:0 .2rem .5rem var(--pst-color-shadow),0 0 .0625rem var(--pst-color-shadow) !important}.bd-content .sd-card{border:1px solid var(--pst-color-border)}.bd-content .sd-card .sd-card-header{background-color:var(--pst-color-panel-background);border-bottom:1px solid var(--pst-color-border)}.bd-content .sd-card .sd-card-footer{background-color:var(--pst-color-panel-background);border-top:1px solid var(--pst-color-border)}.bd-content .sd-card .sd-card-body{background-color:var(--pst-color-panel-background)}.bd-content .sd-tab-set>input:checked+label{border-color:rgba(0,0,0,0) rgba(0,0,0,0) var(--pst-color-primary);color:var(--pst-color-primary)}.bd-content .sd-tab-set>input:not(:checked)+label:hover{border-color:var(--pst-color-secondary);color:var(--pst-color-secondary)}.bd-content .sd-tab-set>label{color:var(--pst-color-text-muted);border-top:.125rem solid rgba(0,0,0,0);padding-top:.5em}html .bd-content .sd-tab-set>label:hover{color:var(--pst-color-secondary);border-color:var(--pst-color-secondary)}details.sd-dropdown{border:0px !important;box-shadow:0 .2rem .5rem var(--pst-color-shadow),0 0 .0625rem var(--pst-color-shadow) !important}details.sd-dropdown summary.sd-card-header{border:0 !important}details.sd-dropdown summary.sd-card-header+div.sd-summary-content{border:0}details.sd-dropdown summary.sd-card-header{display:flex;align-items:center;position:relative;font-weight:600;padding-top:.5rem;padding-bottom:.5rem;--pst-sd-dropdown-color: var(--pst-gray-500);--pst-sd-dropdown-bg-color: var(--pst-color-surface);background-color:unset !important;border-left:.2rem solid var(--pst-sd-dropdown-color) !important}details.sd-dropdown summary.sd-card-header+div.sd-summary-content{--pst-sd-dropdown-color: var(--sd-color-card-border)}details.sd-dropdown summary.sd-card-header.sd-bg-primary{--pst-sd-dropdown-color: var(--sd-color-primary);--pst-sd-dropdown-bg-color: var(--sd-color-primary-bg)}details.sd-dropdown summary.sd-card-header.sd-bg-primary+div.sd-summary-content{--pst-sd-dropdown-color: var(--sd-color-primary);--pst-sd-dropdown-bg-color: var(--sd-color-primary-bg)}details.sd-dropdown summary.sd-card-header.sd-bg-text-primary{color:var(--sd-color-primary-bg-text) !important}details.sd-dropdown summary.sd-card-header.sd-bg-secondary{--pst-sd-dropdown-color: var(--sd-color-secondary);--pst-sd-dropdown-bg-color: var(--sd-color-secondary-bg)}details.sd-dropdown summary.sd-card-header.sd-bg-secondary+div.sd-summary-content{--pst-sd-dropdown-color: var(--sd-color-secondary);--pst-sd-dropdown-bg-color: var(--sd-color-secondary-bg)}details.sd-dropdown summary.sd-card-header.sd-bg-text-secondary{color:var(--sd-color-secondary-bg-text) !important}details.sd-dropdown summary.sd-card-header.sd-bg-success{--pst-sd-dropdown-color: var(--sd-color-success);--pst-sd-dropdown-bg-color: var(--sd-color-success-bg)}details.sd-dropdown summary.sd-card-header.sd-bg-success+div.sd-summary-content{--pst-sd-dropdown-color: var(--sd-color-success);--pst-sd-dropdown-bg-color: var(--sd-color-success-bg)}details.sd-dropdown summary.sd-card-header.sd-bg-text-success{color:var(--sd-color-success-bg-text) !important}details.sd-dropdown summary.sd-card-header.sd-bg-info{--pst-sd-dropdown-color: var(--sd-color-info);--pst-sd-dropdown-bg-color: var(--sd-color-info-bg)}details.sd-dropdown summary.sd-card-header.sd-bg-info+div.sd-summary-content{--pst-sd-dropdown-color: var(--sd-color-info);--pst-sd-dropdown-bg-color: var(--sd-color-info-bg)}details.sd-dropdown summary.sd-card-header.sd-bg-text-info{color:var(--sd-color-info-bg-text) !important}details.sd-dropdown summary.sd-card-header.sd-bg-warning{--pst-sd-dropdown-color: var(--sd-color-warning);--pst-sd-dropdown-bg-color: var(--sd-color-warning-bg)}details.sd-dropdown summary.sd-card-header.sd-bg-warning+div.sd-summary-content{--pst-sd-dropdown-color: var(--sd-color-warning);--pst-sd-dropdown-bg-color: var(--sd-color-warning-bg)}details.sd-dropdown summary.sd-card-header.sd-bg-text-warning{color:var(--sd-color-warning-bg-text) !important}details.sd-dropdown summary.sd-card-header.sd-bg-danger{--pst-sd-dropdown-color: var(--sd-color-danger);--pst-sd-dropdown-bg-color: var(--sd-color-danger-bg)}details.sd-dropdown summary.sd-card-header.sd-bg-danger+div.sd-summary-content{--pst-sd-dropdown-color: var(--sd-color-danger);--pst-sd-dropdown-bg-color: var(--sd-color-danger-bg)}details.sd-dropdown summary.sd-card-header.sd-bg-text-danger{color:var(--sd-color-danger-bg-text) !important}details.sd-dropdown summary.sd-card-header.sd-bg-light{--pst-sd-dropdown-color: var(--sd-color-light);--pst-sd-dropdown-bg-color: var(--sd-color-light-bg)}details.sd-dropdown summary.sd-card-header.sd-bg-light+div.sd-summary-content{--pst-sd-dropdown-color: var(--sd-color-light);--pst-sd-dropdown-bg-color: var(--sd-color-light-bg)}details.sd-dropdown summary.sd-card-header.sd-bg-text-light{color:var(--sd-color-light-bg-text) !important}details.sd-dropdown summary.sd-card-header.sd-bg-muted{--pst-sd-dropdown-color: var(--sd-color-muted);--pst-sd-dropdown-bg-color: var(--sd-color-muted-bg)}details.sd-dropdown summary.sd-card-header.sd-bg-muted+div.sd-summary-content{--pst-sd-dropdown-color: var(--sd-color-muted);--pst-sd-dropdown-bg-color: var(--sd-color-muted-bg)}details.sd-dropdown summary.sd-card-header.sd-bg-text-muted{color:var(--sd-color-muted-bg-text) !important}details.sd-dropdown summary.sd-card-header.sd-bg-dark{--pst-sd-dropdown-color: var(--sd-color-dark);--pst-sd-dropdown-bg-color: var(--sd-color-dark-bg)}details.sd-dropdown summary.sd-card-header.sd-bg-dark+div.sd-summary-content{--pst-sd-dropdown-color: var(--sd-color-dark);--pst-sd-dropdown-bg-color: var(--sd-color-dark-bg)}details.sd-dropdown summary.sd-card-header.sd-bg-text-dark{color:var(--sd-color-dark-bg-text) !important}details.sd-dropdown summary.sd-card-header.sd-bg-black{--pst-sd-dropdown-color: var(--sd-color-black);--pst-sd-dropdown-bg-color: var(--sd-color-black-bg)}details.sd-dropdown summary.sd-card-header.sd-bg-black+div.sd-summary-content{--pst-sd-dropdown-color: var(--sd-color-black);--pst-sd-dropdown-bg-color: var(--sd-color-black-bg)}details.sd-dropdown summary.sd-card-header.sd-bg-text-black{color:var(--sd-color-black-bg-text) !important}details.sd-dropdown summary.sd-card-header.sd-bg-white{--pst-sd-dropdown-color: var(--sd-color-white);--pst-sd-dropdown-bg-color: var(--sd-color-white-bg)}details.sd-dropdown summary.sd-card-header.sd-bg-white+div.sd-summary-content{--pst-sd-dropdown-color: var(--sd-color-white);--pst-sd-dropdown-bg-color: var(--sd-color-white-bg)}details.sd-dropdown summary.sd-card-header.sd-bg-text-white{color:var(--sd-color-white-bg-text) !important}details.sd-dropdown summary.sd-card-header:before{content:\"\";width:100%;height:100%;position:absolute;left:0;top:0;background-color:var(--pst-sd-dropdown-bg-color);z-index:-1;pointer-events:none}details.sd-dropdown summary.sd-card-header+div.sd-summary-content{border-left:.2rem solid var(--pst-sd-dropdown-color) !important;border-bottom-left-radius:calc(.25rem - 1px);background-color:var(--pst-color-on-background)}details.sd-dropdown summary.sd-card-header span.sd-summary-icon{display:inline-flex;align-items:center;color:var(--pst-sd-dropdown-color) !important}details.sd-dropdown summary.sd-card-header span.sd-summary-icon svg{opacity:1}details.sd-dropdown summary.sd-card-header .sd-summary-up,details.sd-dropdown summary.sd-card-header .sd-summary-down{top:.7rem}.bd-content .admonition button.toggle-button{color:inherit}.bd-content details.toggle-details summary{border-left:3px solid var(--pst-color-primary)}html div.rendered_html html .jp-RenderedHTMLCommon table{table-layout:auto}html[data-theme=dark] .bd-content .nboutput .output_area.rendered_html{color:var(--pst-color-on-background);background-color:var(--pst-color-text-base);border-radius:.25rem;padding:.5rem}html[data-theme=dark] .bd-content .nboutput .output_area.stderr{background:var(--pst-color-danger)}div.nblast.container{margin-bottom:1rem}div.cell_output .output{max-width:100%;overflow-x:auto}html[data-theme=dark] .bd-content div.cell_output img,html[data-theme=dark] .bd-content div.cell_output .text_html{color:var(--pst-color-on-background);background-color:var(--pst-color-text-base);border-radius:.25rem;padding:.5rem}.bd-content div.cell_input{display:flex;flex-direction:column;justify-content:stretch}.bd-content div.cell_input,.bd-content div.output{border-radius:.25rem}.bd-content div.output table{table-layout:auto}html[data-theme=dark] .bd-content img.leaflet-tile.leaflet-tile-loaded{border-radius:0;padding:0}.bd-search-container div#search-results>h2{font-size:var(--pst-font-size-icon);margin-top:0}.bd-search-container div#search-results p.search-summary{color:var(--pst-color-text-muted)}.bd-search-container ul.search{margin:0;list-style:none}.bd-search-container ul.search li{background-image:none;padding:1rem 0;margin:1rem 0;border-top:1px solid var(--pst-color-text-muted)}.bd-search-container ul.search li>a{font-size:1.2em}.bd-search-container ul.search li div.context,.bd-search-container ul.search li p.context{color:var(--pst-color-text-base);margin:.5em 0 0 0}.bd-search-container ul.search li div.context a:before,.bd-search-container ul.search li p.context a:before{content:\"#\";padding-right:.2em;color:var(--pst-color-text-muted)}","html {\n /*****************************************************************************\n * Overall Layout Variables\n */\n\n // Header height will impact the top offset for many sections\n // Article header is 66% of Header\n --pst-header-height: 4rem;\n --pst-header-article-height: calc(var(--pst-header-height) * 2 / 3);\n --pst-sidebar-secondary: 17rem;\n}\n\n/*******************************************************************************\n* Breakpoints that trigger UI changes\n*\n* Note that media-breakpoint-down begins at the next highest level!\n* So we should choose a media-breakpoint-down one *lower* than when we want to start\n* example: media-breakpoint-up(md) and media-breakpoint-down(sm) trigger at the same time\n* ref: https://github.com/twbs/bootstrap/issues/31214\n*/\n$breakpoint-sidebar-primary: lg; // When we collapse the primary sidebar\n$breakpoint-sidebar-secondary: xl; // When we collapse the secondary sidebar\n$breakpoint-page-width: 88rem; // taken from sphinx-basic-ng, which we are ultimately going to inherit\n\n/*******************************************************************************\n* Define the animation behaviour\n*/\n$animation-time: 200ms;\n\n/*******************************************************************************\n* UI shaping and padding\n*/\n$admonition-border-radius: 0.25rem;\n","html {\n /*****************************************************************************\n * Font features used in this theme\n */\n\n // base font size - applied at body/html level\n --pst-font-size-base: 1rem;\n\n // heading font sizes based on bootstrap sizing\n --pst-font-size-h1: 2.5rem;\n --pst-font-size-h2: 2rem;\n --pst-font-size-h3: 1.75rem;\n --pst-font-size-h4: 1.5rem;\n --pst-font-size-h5: 1.25rem;\n --pst-font-size-h6: 1.1rem;\n\n // smaller than heading font sizes\n --pst-font-size-milli: 0.9rem;\n\n // Sidebar styles\n --pst-sidebar-font-size: 0.9rem;\n --pst-sidebar-font-size-mobile: 1.1rem;\n --pst-sidebar-header-font-size: 1.2rem;\n --pst-sidebar-header-font-weight: 600;\n\n // Admonition styles\n --pst-admonition-font-weight-heading: 600;\n\n // Font weights\n --pst-font-weight-caption: 300;\n --pst-font-weight-heading: 400;\n\n // Font family\n // These are adapted from https://systemfontstack.com/ */\n --pst-font-family-base-system: -apple-system, BlinkMacSystemFont, Segoe UI,\n \"Helvetica Neue\", Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji,\n Segoe UI Symbol;\n --pst-font-family-monospace-system: \"SFMono-Regular\", Menlo, Consolas, Monaco,\n Liberation Mono, Lucida Console, monospace;\n\n --pst-font-family-base: var(--pst-font-family-base-system);\n --pst-font-family-heading: var(--pst-font-family-base-system);\n --pst-font-family-monospace: var(--pst-font-family-monospace-system);\n}\n","html {\n /*****************************************************************************\n * Icon\n */\n\n // Font size across all icons\n --pst-font-size-icon: 1.5rem;\n\n // Font Awesome default icons\n --pst-icon-check-circle: \"\\f058\"; // fa-solid fa-circle-check\n --pst-icon-info-circle: \"\\f05a\"; // fa-solid fa-circle-info\n --pst-icon-exclamation-triangle: \"\\f071\"; // fa-solid fa-triangle-exclamation\n --pst-icon-exclamation-circle: \"\\f06a\"; // fa-solid fa-circle-exclamation\n --pst-icon-times-circle: \"\\f057\"; // fa-solid fa-circle-xmark\n --pst-icon-lightbulb: \"\\f0eb\"; // fa-solid fa-lightbulb\n --pst-icon-download: \"\\f019\"; // fa-solid fa-download\n --pst-icon-angle-left: \"\\f104\"; // fa-solid fa-angle-left\n --pst-icon-angle-right: \"\\f105\"; // fa-solid fa-angle-right\n --pst-icon-external-link: \"\\f35d\"; // fa-solid fa-up-right-from-square\n --pst-icon-search-minus: \"\\f010\"; // fa-solid fa-magnifying-glass-minus\n --pst-icon-github: \"\\f09b\"; // fa-brands fa-github\n --pst-icon-gitlab: \"\\f296\"; // fa-brands fa-gitlab\n --pst-icon-share: \"\\f064\"; // fa-solid fa-share\n --pst-icon-bell: \"\\f0f3\"; // fa-solid fa-bell\n --pst-icon-pencil: \"\\f303\"; // fa-solid fa-pencil\n\n // Bootstrap icons\n --pst-breadcrumb-divider: \"\\f105\";\n}\n","html {\n /*****************************************************************************\n * Admonitions\n **/\n\n --pst-icon-admonition-default: var(--pst-icon-bell);\n --pst-icon-admonition-note: var(--pst-icon-info-circle);\n --pst-icon-admonition-attention: var(--pst-icon-exclamation-circle);\n --pst-icon-admonition-caution: var(--pst-icon-exclamation-triangle);\n --pst-icon-admonition-warning: var(--pst-icon-exclamation-triangle);\n --pst-icon-admonition-danger: var(--pst-icon-exclamation-triangle);\n --pst-icon-admonition-error: var(--pst-icon-times-circle);\n --pst-icon-admonition-hint: var(--pst-icon-lightbulb);\n --pst-icon-admonition-tip: var(--pst-icon-lightbulb);\n --pst-icon-admonition-important: var(--pst-icon-exclamation-circle);\n --pst-icon-admonition-seealso: var(--pst-icon-share);\n --pst-icon-admonition-todo: var(--pst-icon-pencil);\n}\n","html {\n /*****************************************************************************\n * versionmodified\n **/\n\n --pst-icon-versionmodified-default: var(--pst-icon-exclamation-circle);\n --pst-icon-versionmodified-added: var(--pst-icon-exclamation-circle);\n --pst-icon-versionmodified-changed: var(--pst-icon-exclamation-circle);\n --pst-icon-versionmodified-deprecated: var(--pst-icon-exclamation-circle);\n}\n","html {\n font-size: var(--pst-font-size-base);\n scroll-padding-top: calc(var(--pst-header-height) + 1rem);\n}\n\nbody {\n background-color: var(--pst-color-background);\n font-family: var(--pst-font-family-base);\n font-weight: 400;\n line-height: 1.65;\n color: var(--pst-color-text-base);\n min-height: 100vh;\n display: flex;\n flex-direction: column;\n\n // hack to avoid the black background on some browser including Safari\n &::-webkit-scrollbar-track {\n background: var(--pst-color-background);\n }\n}\n\np {\n margin-bottom: 1.15rem;\n font-size: 1em;\n color: var(--pst-color-text-base);\n\n /* section header in docstring pages */\n &.rubric {\n border-bottom: 1px solid var(--pst-color-border);\n }\n\n &.centered {\n text-align: center;\n }\n}\n\na {\n @include link-style-default;\n\n // The # anchor that appears on hover over headings\n &.headerlink {\n color: var(--pst-color-secondary);\n opacity: 0.7;\n font-size: 0.8em;\n padding: 0 4px 0 4px;\n margin-left: 0.2em;\n text-decoration: none;\n transition: all 0.2s ease-out;\n user-select: none;\n\n &:hover {\n opacity: 1;\n }\n }\n\n // set up a icon next to the shorten links from github and gitlab\n &.github,\n &.gitlab {\n &::before {\n color: var(--pst-color-text-muted);\n font: var(--fa-font-brands);\n margin-right: 0.25rem;\n }\n }\n\n &.github::before {\n content: var(--pst-icon-github);\n }\n\n &.gitlab::before {\n content: var(--pst-icon-gitlab);\n }\n}\n\n.heading-style {\n margin: 2.75rem 0 1.05rem;\n font-family: var(--pst-font-family-heading);\n font-weight: var(--pst-font-weight-heading);\n line-height: 1.15;\n}\n\nh1 {\n @extend .heading-style;\n margin-top: 0;\n font-size: var(--pst-font-size-h1);\n color: var(--pst-heading-color);\n}\n\nh2 {\n @extend .heading-style;\n font-size: var(--pst-font-size-h2);\n color: var(--pst-heading-color);\n}\n\nh3 {\n @extend .heading-style;\n font-size: var(--pst-font-size-h3);\n color: var(--pst-heading-color);\n}\n\nh4 {\n @extend .heading-style;\n font-size: var(--pst-font-size-h4);\n color: var(--pst-heading-color);\n}\n\nh5 {\n @extend .heading-style;\n font-size: var(--pst-font-size-h5);\n color: var(--pst-color-text-base);\n}\n\nh6 {\n @extend .heading-style;\n font-size: var(--pst-font-size-h6);\n color: var(--pst-color-text-base);\n}\n\nsmall,\n.text_small {\n font-size: var(--pst-font-size-milli);\n}\n\nhr {\n border: 0;\n border-top: 1px solid var(--pst-color-border);\n}\n\npre,\ncode,\nkbd,\nsamp {\n font-family: var(--pst-font-family-monospace);\n}\n\nkbd {\n // use theme negative\n background-color: var(--pst-color-on-background);\n color: var(--pst-color-text-muted);\n\n // Compound keyboard elements will have nested kbd in them, so this prevents double lines\n &:not(.compound) {\n border: 1px solid var(--pst-color-border);\n margin: 0 0.1rem;\n padding: 0.1rem 0.4rem;\n box-shadow: 1px 1px 1px var(--pst-color-shadow);\n }\n}\n\ncode {\n color: var(--pst-color-inline-code);\n}\n\npre {\n margin: 1.5em 0 1.5em 0;\n padding: 1rem;\n background-color: var(--pst-color-surface);\n color: var(--pst-color-text-base);\n line-height: 1.2em;\n border: 1px solid var(--pst-color-border);\n border-radius: $admonition-border-radius;\n\n .linenos {\n // minimum opacity to make the line numbers WCAG AA conformant\n opacity: 0.8;\n padding-right: 10px;\n }\n}\n\n// the back to top btn\n#pst-back-to-top {\n z-index: $zindex-tooltip;\n position: fixed;\n display: none;\n top: 80vh;\n left: 50vw;\n transform: translate(-50%);\n color: var(--pst-color-secondary-text);\n background-color: var(--pst-color-secondary);\n border: none;\n}\n","/**\n * Consistent styling for links\n **/\n\n// Define some useful variables for links styling consistency\n//\n// Thickness of the underline for links\n// the default will be either:\n// - 1px\n// - 0.0625rem if it's thicker than 1px because the user has changed the text\n// size in their browser\n$link-underline-thickness: unquote(\"max(1px, .0625rem)\") !default;\n// Offset of link underlines from text baseline\n// The default is 3px expressed as ems, as calculated against the default body\n// font size (on desktop).\n$link-underline-offset: 0.1578em !default;\n// Thickness of link underlines in hover state\n// The default for each link will be the thickest of the following:\n// - 3px\n// - 0.1875rem, if it's thicker than 3px because the user has changed the text\n// size in their browser\n// - 0.12em (relative to the link's text size)\n$link-hover-decoration-thickness: unquote(\"max(3px, .1875rem, .12em)\") !default;\n\n// Ensures links have an underline decoration by default - needed to meet\n// WCAG SC 1.4.1\n@mixin link-decoration {\n text-decoration: underline;\n\n @if $link-underline-thickness {\n text-decoration-thickness: $link-underline-thickness;\n }\n\n @if $link-underline-offset {\n text-underline-offset: $link-underline-offset;\n }\n}\n\n// Ensures links have an underline decoration on hover - distinct from the\n// default behaviour\n@mixin link-decoration-hover {\n @if $link-hover-decoration-thickness {\n text-decoration-thickness: $link-hover-decoration-thickness;\n // Disable ink skipping on underlines on hover. Browsers haven't\n // standardised on this part of the spec yet, so set both properties\n text-decoration-skip-ink: none; // Chromium, Firefox\n text-decoration-skip: none; // Safari\n }\n}\n\n// Simple hover style - can be used alone or in conjunction with other mixins\n// Add the text underline and change in thickness on hover\n@mixin link-style-hover {\n &:hover {\n @include link-decoration;\n @include link-decoration-hover;\n color: var(--pst-color-link-hover);\n }\n}\n\n// Default link styles\n//\n// Defines: default unvisited, visited, hover, and active.\n// TODO: @trallard to improve focus styles in subsequent PR\n@mixin link-style-default {\n // So that really long links don't spill out of their container\n word-wrap: break-word;\n\n color: var(--pst-color-link);\n @include link-decoration;\n\n &:hover {\n color: var(--pst-color-link-hover);\n @include link-decoration-hover;\n }\n\n // TODO: @trallard to add active styles in subsequent PR\n &:active {\n color: var(--pst-color-link);\n }\n\n // Visited should still be hoverable\n &:visited {\n color: var(--pst-color-link);\n &:hover {\n color: var(--pst-color-link-hover);\n }\n }\n @include focus-indicator;\n}\n\n// Text link styles\n//\n// Makes links use the muted text colour and removes the underline.\n// Use this mixin for navigation bar links.\n@mixin link-style-text {\n color: var(--pst-color-text-muted);\n text-decoration: none;\n\n &:hover {\n color: var(--pst-color-link-hover);\n @include link-decoration;\n @include link-decoration-hover;\n }\n @include focus-indicator;\n}\n\n// Sidebar and TOC links\n//\n// Makes links use the muted text colour and removes the underline.\n// Use this mixin for navigation the primary sidebar and table of contents.\n// Active and hover should work together rather than one overriding the other.\n@mixin link-sidebar {\n color: var(--pst-color-text-muted);\n text-decoration: none;\n\n &:hover {\n text-decoration: underline;\n background-color: transparent;\n color: var(--pst-color-link-hover);\n @include link-decoration-hover;\n }\n\n // TODO: @trallard to update active styles in subsequent PR\n &:active {\n color: var(--pst-color-link-hover);\n }\n}\n\n// Sidebar current page link styles\n//\n// Adds a vertical line on the left hand side of the link to indicate that\n// it's the current page. Note this is distinct from an active state.\n// Used on the primary sidebar and the TOC.\n// We want the side box shadow to have the same thickness as the hover underline\n@mixin link-sidebar-current {\n font-weight: 600;\n color: var(--pst-color-primary);\n @if $link-hover-decoration-thickness {\n box-shadow: inset\n $link-hover-decoration-thickness\n 0px\n 0px\n var(--pst-color-primary);\n }\n}\n\n// Navigation bar current page link styles\n//\n// Adds a bottom underline, this leaves enough space for the hover state without\n// cluttering the navbar.\n// We want the side box shadow to have the same thickness as the hover underline\n@mixin link-navbar-current {\n font-weight: 600;\n color: var(--pst-color-primary);\n @if $link-hover-decoration-thickness {\n border-bottom: $link-hover-decoration-thickness\n solid\n var(--pst-color-primary);\n }\n}\n\n// Navigation bar icon links hover styles\n//\n// Adds a bottom box-shadow - since there is no text we cannot use text-decoration\n// We want the side box shadow to have the same thickness as the hover underline\n@mixin icon-navbar-hover {\n &:hover {\n color: var(--pst-color-link-hover);\n @if $link-hover-decoration-thickness {\n box-shadow: 0px\n $link-hover-decoration-thickness\n 0px\n var(--pst-color-link-hover);\n }\n }\n}\n\n// Focus indicator\n@mixin focus-indicator {\n &:focus-visible {\n outline: 2px solid var(--pst-color-accent);\n }\n}\n","// Variables\n//\n// Variables should follow the `$component-state-property-size` formula for\n// consistent naming. Ex: $nav-link-disabled-color and $modal-content-box-shadow-xs.\n\n// Color system\n\n// scss-docs-start gray-color-variables\n$white: #fff !default;\n$gray-100: #f8f9fa !default;\n$gray-200: #e9ecef !default;\n$gray-300: #dee2e6 !default;\n$gray-400: #ced4da !default;\n$gray-500: #adb5bd !default;\n$gray-600: #6c757d !default;\n$gray-700: #495057 !default;\n$gray-800: #343a40 !default;\n$gray-900: #212529 !default;\n$black: #000 !default;\n// scss-docs-end gray-color-variables\n\n// fusv-disable\n// scss-docs-start gray-colors-map\n$grays: (\n \"100\": $gray-100,\n \"200\": $gray-200,\n \"300\": $gray-300,\n \"400\": $gray-400,\n \"500\": $gray-500,\n \"600\": $gray-600,\n \"700\": $gray-700,\n \"800\": $gray-800,\n \"900\": $gray-900\n) !default;\n// scss-docs-end gray-colors-map\n// fusv-enable\n\n// scss-docs-start color-variables\n$blue: #0d6efd !default;\n$indigo: #6610f2 !default;\n$purple: #6f42c1 !default;\n$pink: #d63384 !default;\n$red: #dc3545 !default;\n$orange: #fd7e14 !default;\n$yellow: #ffc107 !default;\n$green: #198754 !default;\n$teal: #20c997 !default;\n$cyan: #0dcaf0 !default;\n// scss-docs-end color-variables\n\n// scss-docs-start colors-map\n$colors: (\n \"blue\": $blue,\n \"indigo\": $indigo,\n \"purple\": $purple,\n \"pink\": $pink,\n \"red\": $red,\n \"orange\": $orange,\n \"yellow\": $yellow,\n \"green\": $green,\n \"teal\": $teal,\n \"cyan\": $cyan,\n \"black\": $black,\n \"white\": $white,\n \"gray\": $gray-600,\n \"gray-dark\": $gray-800\n) !default;\n// scss-docs-end colors-map\n\n// The contrast ratio to reach against white, to determine if color changes from \"light\" to \"dark\". Acceptable values for WCAG 2.0 are 3, 4.5 and 7.\n// See https://www.w3.org/TR/WCAG20/#visual-audio-contrast-contrast\n$min-contrast-ratio: 4.5 !default;\n\n// Customize the light and dark text colors for use in our color contrast function.\n$color-contrast-dark: $black !default;\n$color-contrast-light: $white !default;\n\n// fusv-disable\n$blue-100: tint-color($blue, 80%) !default;\n$blue-200: tint-color($blue, 60%) !default;\n$blue-300: tint-color($blue, 40%) !default;\n$blue-400: tint-color($blue, 20%) !default;\n$blue-500: $blue !default;\n$blue-600: shade-color($blue, 20%) !default;\n$blue-700: shade-color($blue, 40%) !default;\n$blue-800: shade-color($blue, 60%) !default;\n$blue-900: shade-color($blue, 80%) !default;\n\n$indigo-100: tint-color($indigo, 80%) !default;\n$indigo-200: tint-color($indigo, 60%) !default;\n$indigo-300: tint-color($indigo, 40%) !default;\n$indigo-400: tint-color($indigo, 20%) !default;\n$indigo-500: $indigo !default;\n$indigo-600: shade-color($indigo, 20%) !default;\n$indigo-700: shade-color($indigo, 40%) !default;\n$indigo-800: shade-color($indigo, 60%) !default;\n$indigo-900: shade-color($indigo, 80%) !default;\n\n$purple-100: tint-color($purple, 80%) !default;\n$purple-200: tint-color($purple, 60%) !default;\n$purple-300: tint-color($purple, 40%) !default;\n$purple-400: tint-color($purple, 20%) !default;\n$purple-500: $purple !default;\n$purple-600: shade-color($purple, 20%) !default;\n$purple-700: shade-color($purple, 40%) !default;\n$purple-800: shade-color($purple, 60%) !default;\n$purple-900: shade-color($purple, 80%) !default;\n\n$pink-100: tint-color($pink, 80%) !default;\n$pink-200: tint-color($pink, 60%) !default;\n$pink-300: tint-color($pink, 40%) !default;\n$pink-400: tint-color($pink, 20%) !default;\n$pink-500: $pink !default;\n$pink-600: shade-color($pink, 20%) !default;\n$pink-700: shade-color($pink, 40%) !default;\n$pink-800: shade-color($pink, 60%) !default;\n$pink-900: shade-color($pink, 80%) !default;\n\n$red-100: tint-color($red, 80%) !default;\n$red-200: tint-color($red, 60%) !default;\n$red-300: tint-color($red, 40%) !default;\n$red-400: tint-color($red, 20%) !default;\n$red-500: $red !default;\n$red-600: shade-color($red, 20%) !default;\n$red-700: shade-color($red, 40%) !default;\n$red-800: shade-color($red, 60%) !default;\n$red-900: shade-color($red, 80%) !default;\n\n$orange-100: tint-color($orange, 80%) !default;\n$orange-200: tint-color($orange, 60%) !default;\n$orange-300: tint-color($orange, 40%) !default;\n$orange-400: tint-color($orange, 20%) !default;\n$orange-500: $orange !default;\n$orange-600: shade-color($orange, 20%) !default;\n$orange-700: shade-color($orange, 40%) !default;\n$orange-800: shade-color($orange, 60%) !default;\n$orange-900: shade-color($orange, 80%) !default;\n\n$yellow-100: tint-color($yellow, 80%) !default;\n$yellow-200: tint-color($yellow, 60%) !default;\n$yellow-300: tint-color($yellow, 40%) !default;\n$yellow-400: tint-color($yellow, 20%) !default;\n$yellow-500: $yellow !default;\n$yellow-600: shade-color($yellow, 20%) !default;\n$yellow-700: shade-color($yellow, 40%) !default;\n$yellow-800: shade-color($yellow, 60%) !default;\n$yellow-900: shade-color($yellow, 80%) !default;\n\n$green-100: tint-color($green, 80%) !default;\n$green-200: tint-color($green, 60%) !default;\n$green-300: tint-color($green, 40%) !default;\n$green-400: tint-color($green, 20%) !default;\n$green-500: $green !default;\n$green-600: shade-color($green, 20%) !default;\n$green-700: shade-color($green, 40%) !default;\n$green-800: shade-color($green, 60%) !default;\n$green-900: shade-color($green, 80%) !default;\n\n$teal-100: tint-color($teal, 80%) !default;\n$teal-200: tint-color($teal, 60%) !default;\n$teal-300: tint-color($teal, 40%) !default;\n$teal-400: tint-color($teal, 20%) !default;\n$teal-500: $teal !default;\n$teal-600: shade-color($teal, 20%) !default;\n$teal-700: shade-color($teal, 40%) !default;\n$teal-800: shade-color($teal, 60%) !default;\n$teal-900: shade-color($teal, 80%) !default;\n\n$cyan-100: tint-color($cyan, 80%) !default;\n$cyan-200: tint-color($cyan, 60%) !default;\n$cyan-300: tint-color($cyan, 40%) !default;\n$cyan-400: tint-color($cyan, 20%) !default;\n$cyan-500: $cyan !default;\n$cyan-600: shade-color($cyan, 20%) !default;\n$cyan-700: shade-color($cyan, 40%) !default;\n$cyan-800: shade-color($cyan, 60%) !default;\n$cyan-900: shade-color($cyan, 80%) !default;\n\n$blues: (\n \"blue-100\": $blue-100,\n \"blue-200\": $blue-200,\n \"blue-300\": $blue-300,\n \"blue-400\": $blue-400,\n \"blue-500\": $blue-500,\n \"blue-600\": $blue-600,\n \"blue-700\": $blue-700,\n \"blue-800\": $blue-800,\n \"blue-900\": $blue-900\n) !default;\n\n$indigos: (\n \"indigo-100\": $indigo-100,\n \"indigo-200\": $indigo-200,\n \"indigo-300\": $indigo-300,\n \"indigo-400\": $indigo-400,\n \"indigo-500\": $indigo-500,\n \"indigo-600\": $indigo-600,\n \"indigo-700\": $indigo-700,\n \"indigo-800\": $indigo-800,\n \"indigo-900\": $indigo-900\n) !default;\n\n$purples: (\n \"purple-100\": $purple-100,\n \"purple-200\": $purple-200,\n \"purple-300\": $purple-300,\n \"purple-400\": $purple-400,\n \"purple-500\": $purple-500,\n \"purple-600\": $purple-600,\n \"purple-700\": $purple-700,\n \"purple-800\": $purple-800,\n \"purple-900\": $purple-900\n) !default;\n\n$pinks: (\n \"pink-100\": $pink-100,\n \"pink-200\": $pink-200,\n \"pink-300\": $pink-300,\n \"pink-400\": $pink-400,\n \"pink-500\": $pink-500,\n \"pink-600\": $pink-600,\n \"pink-700\": $pink-700,\n \"pink-800\": $pink-800,\n \"pink-900\": $pink-900\n) !default;\n\n$reds: (\n \"red-100\": $red-100,\n \"red-200\": $red-200,\n \"red-300\": $red-300,\n \"red-400\": $red-400,\n \"red-500\": $red-500,\n \"red-600\": $red-600,\n \"red-700\": $red-700,\n \"red-800\": $red-800,\n \"red-900\": $red-900\n) !default;\n\n$oranges: (\n \"orange-100\": $orange-100,\n \"orange-200\": $orange-200,\n \"orange-300\": $orange-300,\n \"orange-400\": $orange-400,\n \"orange-500\": $orange-500,\n \"orange-600\": $orange-600,\n \"orange-700\": $orange-700,\n \"orange-800\": $orange-800,\n \"orange-900\": $orange-900\n) !default;\n\n$yellows: (\n \"yellow-100\": $yellow-100,\n \"yellow-200\": $yellow-200,\n \"yellow-300\": $yellow-300,\n \"yellow-400\": $yellow-400,\n \"yellow-500\": $yellow-500,\n \"yellow-600\": $yellow-600,\n \"yellow-700\": $yellow-700,\n \"yellow-800\": $yellow-800,\n \"yellow-900\": $yellow-900\n) !default;\n\n$greens: (\n \"green-100\": $green-100,\n \"green-200\": $green-200,\n \"green-300\": $green-300,\n \"green-400\": $green-400,\n \"green-500\": $green-500,\n \"green-600\": $green-600,\n \"green-700\": $green-700,\n \"green-800\": $green-800,\n \"green-900\": $green-900\n) !default;\n\n$teals: (\n \"teal-100\": $teal-100,\n \"teal-200\": $teal-200,\n \"teal-300\": $teal-300,\n \"teal-400\": $teal-400,\n \"teal-500\": $teal-500,\n \"teal-600\": $teal-600,\n \"teal-700\": $teal-700,\n \"teal-800\": $teal-800,\n \"teal-900\": $teal-900\n) !default;\n\n$cyans: (\n \"cyan-100\": $cyan-100,\n \"cyan-200\": $cyan-200,\n \"cyan-300\": $cyan-300,\n \"cyan-400\": $cyan-400,\n \"cyan-500\": $cyan-500,\n \"cyan-600\": $cyan-600,\n \"cyan-700\": $cyan-700,\n \"cyan-800\": $cyan-800,\n \"cyan-900\": $cyan-900\n) !default;\n// fusv-enable\n\n// scss-docs-start theme-color-variables\n$primary: $blue !default;\n$secondary: $gray-600 !default;\n$success: $green !default;\n$info: $cyan !default;\n$warning: $yellow !default;\n$danger: $red !default;\n$light: $gray-100 !default;\n$dark: $gray-900 !default;\n// scss-docs-end theme-color-variables\n\n// scss-docs-start theme-colors-map\n$theme-colors: (\n \"primary\": $primary,\n \"secondary\": $secondary,\n \"success\": $success,\n \"info\": $info,\n \"warning\": $warning,\n \"danger\": $danger,\n \"light\": $light,\n \"dark\": $dark\n) !default;\n// scss-docs-end theme-colors-map\n\n// scss-docs-start theme-text-variables\n$primary-text-emphasis: shade-color($primary, 60%) !default;\n$secondary-text-emphasis: shade-color($secondary, 60%) !default;\n$success-text-emphasis: shade-color($success, 60%) !default;\n$info-text-emphasis: shade-color($info, 60%) !default;\n$warning-text-emphasis: shade-color($warning, 60%) !default;\n$danger-text-emphasis: shade-color($danger, 60%) !default;\n$light-text-emphasis: $gray-700 !default;\n$dark-text-emphasis: $gray-700 !default;\n// scss-docs-end theme-text-variables\n\n// scss-docs-start theme-bg-subtle-variables\n$primary-bg-subtle: tint-color($primary, 80%) !default;\n$secondary-bg-subtle: tint-color($secondary, 80%) !default;\n$success-bg-subtle: tint-color($success, 80%) !default;\n$info-bg-subtle: tint-color($info, 80%) !default;\n$warning-bg-subtle: tint-color($warning, 80%) !default;\n$danger-bg-subtle: tint-color($danger, 80%) !default;\n$light-bg-subtle: mix($gray-100, $white) !default;\n$dark-bg-subtle: $gray-400 !default;\n// scss-docs-end theme-bg-subtle-variables\n\n// scss-docs-start theme-border-subtle-variables\n$primary-border-subtle: tint-color($primary, 60%) !default;\n$secondary-border-subtle: tint-color($secondary, 60%) !default;\n$success-border-subtle: tint-color($success, 60%) !default;\n$info-border-subtle: tint-color($info, 60%) !default;\n$warning-border-subtle: tint-color($warning, 60%) !default;\n$danger-border-subtle: tint-color($danger, 60%) !default;\n$light-border-subtle: $gray-200 !default;\n$dark-border-subtle: $gray-500 !default;\n// scss-docs-end theme-border-subtle-variables\n\n// Characters which are escaped by the escape-svg function\n$escaped-characters: (\n (\"<\", \"%3c\"),\n (\">\", \"%3e\"),\n (\"#\", \"%23\"),\n (\"(\", \"%28\"),\n (\")\", \"%29\"),\n) !default;\n\n// Options\n//\n// Quickly modify global styling by enabling or disabling optional features.\n\n$enable-caret: true !default;\n$enable-rounded: true !default;\n$enable-shadows: false !default;\n$enable-gradients: false !default;\n$enable-transitions: true !default;\n$enable-reduced-motion: true !default;\n$enable-smooth-scroll: true !default;\n$enable-grid-classes: true !default;\n$enable-container-classes: true !default;\n$enable-cssgrid: false !default;\n$enable-button-pointers: true !default;\n$enable-rfs: true !default;\n$enable-validation-icons: true !default;\n$enable-negative-margins: false !default;\n$enable-deprecation-messages: true !default;\n$enable-important-utilities: true !default;\n\n$enable-dark-mode: true !default;\n$color-mode-type: data !default; // `data` or `media-query`\n\n// Prefix for :root CSS variables\n\n$variable-prefix: bs- !default; // Deprecated in v5.2.0 for the shorter `$prefix`\n$prefix: $variable-prefix !default;\n\n// Gradient\n//\n// The gradient which is added to components if `$enable-gradients` is `true`\n// This gradient is also added to elements with `.bg-gradient`\n// scss-docs-start variable-gradient\n$gradient: linear-gradient(180deg, rgba($white, .15), rgba($white, 0)) !default;\n// scss-docs-end variable-gradient\n\n// Spacing\n//\n// Control the default styling of most Bootstrap elements by modifying these\n// variables. Mostly focused on spacing.\n// You can add more entries to the $spacers map, should you need more variation.\n\n// scss-docs-start spacer-variables-maps\n$spacer: 1rem !default;\n$spacers: (\n 0: 0,\n 1: $spacer * .25,\n 2: $spacer * .5,\n 3: $spacer,\n 4: $spacer * 1.5,\n 5: $spacer * 3,\n) !default;\n// scss-docs-end spacer-variables-maps\n\n// Position\n//\n// Define the edge positioning anchors of the position utilities.\n\n// scss-docs-start position-map\n$position-values: (\n 0: 0,\n 50: 50%,\n 100: 100%\n) !default;\n// scss-docs-end position-map\n\n// Body\n//\n// Settings for the `` element.\n\n$body-text-align: null !default;\n$body-color: $gray-900 !default;\n$body-bg: $white !default;\n\n$body-secondary-color: rgba($body-color, .75) !default;\n$body-secondary-bg: $gray-200 !default;\n\n$body-tertiary-color: rgba($body-color, .5) !default;\n$body-tertiary-bg: $gray-100 !default;\n\n$body-emphasis-color: $black !default;\n\n// Links\n//\n// Style anchor elements.\n\n$link-color: $primary !default;\n$link-decoration: underline !default;\n$link-shade-percentage: 20% !default;\n$link-hover-color: shift-color($link-color, $link-shade-percentage) !default;\n$link-hover-decoration: null !default;\n\n$stretched-link-pseudo-element: after !default;\n$stretched-link-z-index: 1 !default;\n\n// Icon links\n// scss-docs-start icon-link-variables\n$icon-link-gap: .375rem !default;\n$icon-link-underline-offset: .25em !default;\n$icon-link-icon-size: 1em !default;\n$icon-link-icon-transition: .2s ease-in-out transform !default;\n$icon-link-icon-transform: translate3d(.25em, 0, 0) !default;\n// scss-docs-end icon-link-variables\n\n// Paragraphs\n//\n// Style p element.\n\n$paragraph-margin-bottom: 1rem !default;\n\n\n// Grid breakpoints\n//\n// Define the minimum dimensions at which your layout will change,\n// adapting to different screen sizes, for use in media queries.\n\n// scss-docs-start grid-breakpoints\n$grid-breakpoints: (\n xs: 0,\n sm: 576px,\n md: 768px,\n lg: 992px,\n xl: 1200px,\n xxl: 1400px\n) !default;\n// scss-docs-end grid-breakpoints\n\n@include _assert-ascending($grid-breakpoints, \"$grid-breakpoints\");\n@include _assert-starts-at-zero($grid-breakpoints, \"$grid-breakpoints\");\n\n\n// Grid containers\n//\n// Define the maximum width of `.container` for different screen sizes.\n\n// scss-docs-start container-max-widths\n$container-max-widths: (\n sm: 540px,\n md: 720px,\n lg: 960px,\n xl: 1140px,\n xxl: 1320px\n) !default;\n// scss-docs-end container-max-widths\n\n@include _assert-ascending($container-max-widths, \"$container-max-widths\");\n\n\n// Grid columns\n//\n// Set the number of columns and specify the width of the gutters.\n\n$grid-columns: 12 !default;\n$grid-gutter-width: 1.5rem !default;\n$grid-row-columns: 6 !default;\n\n// Container padding\n\n$container-padding-x: $grid-gutter-width !default;\n\n\n// Components\n//\n// Define common padding and border radius sizes and more.\n\n// scss-docs-start border-variables\n$border-width: 1px !default;\n$border-widths: (\n 1: 1px,\n 2: 2px,\n 3: 3px,\n 4: 4px,\n 5: 5px\n) !default;\n$border-style: solid !default;\n$border-color: $gray-300 !default;\n$border-color-translucent: rgba($black, .175) !default;\n// scss-docs-end border-variables\n\n// scss-docs-start border-radius-variables\n$border-radius: .375rem !default;\n$border-radius-sm: .25rem !default;\n$border-radius-lg: .5rem !default;\n$border-radius-xl: 1rem !default;\n$border-radius-xxl: 2rem !default;\n$border-radius-pill: 50rem !default;\n// scss-docs-end border-radius-variables\n// fusv-disable\n$border-radius-2xl: $border-radius-xxl !default; // Deprecated in v5.3.0\n// fusv-enable\n\n// scss-docs-start box-shadow-variables\n$box-shadow: 0 .5rem 1rem rgba($black, .15) !default;\n$box-shadow-sm: 0 .125rem .25rem rgba($black, .075) !default;\n$box-shadow-lg: 0 1rem 3rem rgba($black, .175) !default;\n$box-shadow-inset: inset 0 1px 2px rgba($black, .075) !default;\n// scss-docs-end box-shadow-variables\n\n$component-active-color: $white !default;\n$component-active-bg: $primary !default;\n\n// scss-docs-start focus-ring-variables\n$focus-ring-width: .25rem !default;\n$focus-ring-opacity: .25 !default;\n$focus-ring-color: rgba($primary, $focus-ring-opacity) !default;\n$focus-ring-blur: 0 !default;\n$focus-ring-box-shadow: 0 0 $focus-ring-blur $focus-ring-width $focus-ring-color !default;\n// scss-docs-end focus-ring-variables\n\n// scss-docs-start caret-variables\n$caret-width: .3em !default;\n$caret-vertical-align: $caret-width * .85 !default;\n$caret-spacing: $caret-width * .85 !default;\n// scss-docs-end caret-variables\n\n$transition-base: all .2s ease-in-out !default;\n$transition-fade: opacity .15s linear !default;\n// scss-docs-start collapse-transition\n$transition-collapse: height .35s ease !default;\n$transition-collapse-width: width .35s ease !default;\n// scss-docs-end collapse-transition\n\n// stylelint-disable function-disallowed-list\n// scss-docs-start aspect-ratios\n$aspect-ratios: (\n \"1x1\": 100%,\n \"4x3\": calc(3 / 4 * 100%),\n \"16x9\": calc(9 / 16 * 100%),\n \"21x9\": calc(9 / 21 * 100%)\n) !default;\n// scss-docs-end aspect-ratios\n// stylelint-enable function-disallowed-list\n\n// Typography\n//\n// Font, line-height, and color for body text, headings, and more.\n\n// scss-docs-start font-variables\n// stylelint-disable value-keyword-case\n$font-family-sans-serif: system-ui, -apple-system, \"Segoe UI\", Roboto, \"Helvetica Neue\", \"Noto Sans\", \"Liberation Sans\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\" !default;\n$font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace !default;\n// stylelint-enable value-keyword-case\n$font-family-base: var(--#{$prefix}font-sans-serif) !default;\n$font-family-code: var(--#{$prefix}font-monospace) !default;\n\n// $font-size-root affects the value of `rem`, which is used for as well font sizes, paddings, and margins\n// $font-size-base affects the font size of the body text\n$font-size-root: null !default;\n$font-size-base: 1rem !default; // Assumes the browser default, typically `16px`\n$font-size-sm: $font-size-base * .875 !default;\n$font-size-lg: $font-size-base * 1.25 !default;\n\n$font-weight-lighter: lighter !default;\n$font-weight-light: 300 !default;\n$font-weight-normal: 400 !default;\n$font-weight-medium: 500 !default;\n$font-weight-semibold: 600 !default;\n$font-weight-bold: 700 !default;\n$font-weight-bolder: bolder !default;\n\n$font-weight-base: $font-weight-normal !default;\n\n$line-height-base: 1.5 !default;\n$line-height-sm: 1.25 !default;\n$line-height-lg: 2 !default;\n\n$h1-font-size: $font-size-base * 2.5 !default;\n$h2-font-size: $font-size-base * 2 !default;\n$h3-font-size: $font-size-base * 1.75 !default;\n$h4-font-size: $font-size-base * 1.5 !default;\n$h5-font-size: $font-size-base * 1.25 !default;\n$h6-font-size: $font-size-base !default;\n// scss-docs-end font-variables\n\n// scss-docs-start font-sizes\n$font-sizes: (\n 1: $h1-font-size,\n 2: $h2-font-size,\n 3: $h3-font-size,\n 4: $h4-font-size,\n 5: $h5-font-size,\n 6: $h6-font-size\n) !default;\n// scss-docs-end font-sizes\n\n// scss-docs-start headings-variables\n$headings-margin-bottom: $spacer * .5 !default;\n$headings-font-family: null !default;\n$headings-font-style: null !default;\n$headings-font-weight: 500 !default;\n$headings-line-height: 1.2 !default;\n$headings-color: inherit !default;\n// scss-docs-end headings-variables\n\n// scss-docs-start display-headings\n$display-font-sizes: (\n 1: 5rem,\n 2: 4.5rem,\n 3: 4rem,\n 4: 3.5rem,\n 5: 3rem,\n 6: 2.5rem\n) !default;\n\n$display-font-family: null !default;\n$display-font-style: null !default;\n$display-font-weight: 300 !default;\n$display-line-height: $headings-line-height !default;\n// scss-docs-end display-headings\n\n// scss-docs-start type-variables\n$lead-font-size: $font-size-base * 1.25 !default;\n$lead-font-weight: 300 !default;\n\n$small-font-size: .875em !default;\n\n$sub-sup-font-size: .75em !default;\n\n// fusv-disable\n$text-muted: var(--#{$prefix}secondary-color) !default; // Deprecated in 5.3.0\n// fusv-enable\n\n$initialism-font-size: $small-font-size !default;\n\n$blockquote-margin-y: $spacer !default;\n$blockquote-font-size: $font-size-base * 1.25 !default;\n$blockquote-footer-color: $gray-600 !default;\n$blockquote-footer-font-size: $small-font-size !default;\n\n$hr-margin-y: $spacer !default;\n$hr-color: inherit !default;\n\n// fusv-disable\n$hr-bg-color: null !default; // Deprecated in v5.2.0\n$hr-height: null !default; // Deprecated in v5.2.0\n// fusv-enable\n\n$hr-border-color: null !default; // Allows for inherited colors\n$hr-border-width: var(--#{$prefix}border-width) !default;\n$hr-opacity: .25 !default;\n\n// scss-docs-start vr-variables\n$vr-border-width: var(--#{$prefix}border-width) !default;\n// scss-docs-end vr-variables\n\n$legend-margin-bottom: .5rem !default;\n$legend-font-size: 1.5rem !default;\n$legend-font-weight: null !default;\n\n$dt-font-weight: $font-weight-bold !default;\n\n$list-inline-padding: .5rem !default;\n\n$mark-padding: .1875em !default;\n$mark-color: $body-color !default;\n$mark-bg: $yellow-100 !default;\n// scss-docs-end type-variables\n\n\n// Tables\n//\n// Customizes the `.table` component with basic values, each used across all table variations.\n\n// scss-docs-start table-variables\n$table-cell-padding-y: .5rem !default;\n$table-cell-padding-x: .5rem !default;\n$table-cell-padding-y-sm: .25rem !default;\n$table-cell-padding-x-sm: .25rem !default;\n\n$table-cell-vertical-align: top !default;\n\n$table-color: var(--#{$prefix}emphasis-color) !default;\n$table-bg: var(--#{$prefix}body-bg) !default;\n$table-accent-bg: transparent !default;\n\n$table-th-font-weight: null !default;\n\n$table-striped-color: $table-color !default;\n$table-striped-bg-factor: .05 !default;\n$table-striped-bg: rgba(var(--#{$prefix}emphasis-color-rgb), $table-striped-bg-factor) !default;\n\n$table-active-color: $table-color !default;\n$table-active-bg-factor: .1 !default;\n$table-active-bg: rgba(var(--#{$prefix}emphasis-color-rgb), $table-active-bg-factor) !default;\n\n$table-hover-color: $table-color !default;\n$table-hover-bg-factor: .075 !default;\n$table-hover-bg: rgba(var(--#{$prefix}emphasis-color-rgb), $table-hover-bg-factor) !default;\n\n$table-border-factor: .2 !default;\n$table-border-width: var(--#{$prefix}border-width) !default;\n$table-border-color: var(--#{$prefix}border-color) !default;\n\n$table-striped-order: odd !default;\n$table-striped-columns-order: even !default;\n\n$table-group-separator-color: currentcolor !default;\n\n$table-caption-color: var(--#{$prefix}secondary-color) !default;\n\n$table-bg-scale: -80% !default;\n// scss-docs-end table-variables\n\n// scss-docs-start table-loop\n$table-variants: (\n \"primary\": shift-color($primary, $table-bg-scale),\n \"secondary\": shift-color($secondary, $table-bg-scale),\n \"success\": shift-color($success, $table-bg-scale),\n \"info\": shift-color($info, $table-bg-scale),\n \"warning\": shift-color($warning, $table-bg-scale),\n \"danger\": shift-color($danger, $table-bg-scale),\n \"light\": $light,\n \"dark\": $dark,\n) !default;\n// scss-docs-end table-loop\n\n\n// Buttons + Forms\n//\n// Shared variables that are reassigned to `$input-` and `$btn-` specific variables.\n\n// scss-docs-start input-btn-variables\n$input-btn-padding-y: .375rem !default;\n$input-btn-padding-x: .75rem !default;\n$input-btn-font-family: null !default;\n$input-btn-font-size: $font-size-base !default;\n$input-btn-line-height: $line-height-base !default;\n\n$input-btn-focus-width: $focus-ring-width !default;\n$input-btn-focus-color-opacity: $focus-ring-opacity !default;\n$input-btn-focus-color: $focus-ring-color !default;\n$input-btn-focus-blur: $focus-ring-blur !default;\n$input-btn-focus-box-shadow: $focus-ring-box-shadow !default;\n\n$input-btn-padding-y-sm: .25rem !default;\n$input-btn-padding-x-sm: .5rem !default;\n$input-btn-font-size-sm: $font-size-sm !default;\n\n$input-btn-padding-y-lg: .5rem !default;\n$input-btn-padding-x-lg: 1rem !default;\n$input-btn-font-size-lg: $font-size-lg !default;\n\n$input-btn-border-width: var(--#{$prefix}border-width) !default;\n// scss-docs-end input-btn-variables\n\n\n// Buttons\n//\n// For each of Bootstrap's buttons, define text, background, and border color.\n\n// scss-docs-start btn-variables\n$btn-color: var(--#{$prefix}body-color) !default;\n$btn-padding-y: $input-btn-padding-y !default;\n$btn-padding-x: $input-btn-padding-x !default;\n$btn-font-family: $input-btn-font-family !default;\n$btn-font-size: $input-btn-font-size !default;\n$btn-line-height: $input-btn-line-height !default;\n$btn-white-space: null !default; // Set to `nowrap` to prevent text wrapping\n\n$btn-padding-y-sm: $input-btn-padding-y-sm !default;\n$btn-padding-x-sm: $input-btn-padding-x-sm !default;\n$btn-font-size-sm: $input-btn-font-size-sm !default;\n\n$btn-padding-y-lg: $input-btn-padding-y-lg !default;\n$btn-padding-x-lg: $input-btn-padding-x-lg !default;\n$btn-font-size-lg: $input-btn-font-size-lg !default;\n\n$btn-border-width: $input-btn-border-width !default;\n\n$btn-font-weight: $font-weight-normal !default;\n$btn-box-shadow: inset 0 1px 0 rgba($white, .15), 0 1px 1px rgba($black, .075) !default;\n$btn-focus-width: $input-btn-focus-width !default;\n$btn-focus-box-shadow: $input-btn-focus-box-shadow !default;\n$btn-disabled-opacity: .65 !default;\n$btn-active-box-shadow: inset 0 3px 5px rgba($black, .125) !default;\n\n$btn-link-color: var(--#{$prefix}link-color) !default;\n$btn-link-hover-color: var(--#{$prefix}link-hover-color) !default;\n$btn-link-disabled-color: $gray-600 !default;\n$btn-link-focus-shadow-rgb: to-rgb(mix(color-contrast($link-color), $link-color, 15%)) !default;\n\n// Allows for customizing button radius independently from global border radius\n$btn-border-radius: var(--#{$prefix}border-radius) !default;\n$btn-border-radius-sm: var(--#{$prefix}border-radius-sm) !default;\n$btn-border-radius-lg: var(--#{$prefix}border-radius-lg) !default;\n\n$btn-transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n\n$btn-hover-bg-shade-amount: 15% !default;\n$btn-hover-bg-tint-amount: 15% !default;\n$btn-hover-border-shade-amount: 20% !default;\n$btn-hover-border-tint-amount: 10% !default;\n$btn-active-bg-shade-amount: 20% !default;\n$btn-active-bg-tint-amount: 20% !default;\n$btn-active-border-shade-amount: 25% !default;\n$btn-active-border-tint-amount: 10% !default;\n// scss-docs-end btn-variables\n\n\n// Forms\n\n// scss-docs-start form-text-variables\n$form-text-margin-top: .25rem !default;\n$form-text-font-size: $small-font-size !default;\n$form-text-font-style: null !default;\n$form-text-font-weight: null !default;\n$form-text-color: var(--#{$prefix}secondary-color) !default;\n// scss-docs-end form-text-variables\n\n// scss-docs-start form-label-variables\n$form-label-margin-bottom: .5rem !default;\n$form-label-font-size: null !default;\n$form-label-font-style: null !default;\n$form-label-font-weight: null !default;\n$form-label-color: null !default;\n// scss-docs-end form-label-variables\n\n// scss-docs-start form-input-variables\n$input-padding-y: $input-btn-padding-y !default;\n$input-padding-x: $input-btn-padding-x !default;\n$input-font-family: $input-btn-font-family !default;\n$input-font-size: $input-btn-font-size !default;\n$input-font-weight: $font-weight-base !default;\n$input-line-height: $input-btn-line-height !default;\n\n$input-padding-y-sm: $input-btn-padding-y-sm !default;\n$input-padding-x-sm: $input-btn-padding-x-sm !default;\n$input-font-size-sm: $input-btn-font-size-sm !default;\n\n$input-padding-y-lg: $input-btn-padding-y-lg !default;\n$input-padding-x-lg: $input-btn-padding-x-lg !default;\n$input-font-size-lg: $input-btn-font-size-lg !default;\n\n$input-bg: var(--#{$prefix}body-bg) !default;\n$input-disabled-color: null !default;\n$input-disabled-bg: var(--#{$prefix}secondary-bg) !default;\n$input-disabled-border-color: null !default;\n\n$input-color: var(--#{$prefix}body-color) !default;\n$input-border-color: var(--#{$prefix}border-color) !default;\n$input-border-width: $input-btn-border-width !default;\n$input-box-shadow: var(--#{$prefix}box-shadow-inset) !default;\n\n$input-border-radius: var(--#{$prefix}border-radius) !default;\n$input-border-radius-sm: var(--#{$prefix}border-radius-sm) !default;\n$input-border-radius-lg: var(--#{$prefix}border-radius-lg) !default;\n\n$input-focus-bg: $input-bg !default;\n$input-focus-border-color: tint-color($component-active-bg, 50%) !default;\n$input-focus-color: $input-color !default;\n$input-focus-width: $input-btn-focus-width !default;\n$input-focus-box-shadow: $input-btn-focus-box-shadow !default;\n\n$input-placeholder-color: var(--#{$prefix}secondary-color) !default;\n$input-plaintext-color: var(--#{$prefix}body-color) !default;\n\n$input-height-border: calc(#{$input-border-width} * 2) !default; // stylelint-disable-line function-disallowed-list\n\n$input-height-inner: add($input-line-height * 1em, $input-padding-y * 2) !default;\n$input-height-inner-half: add($input-line-height * .5em, $input-padding-y) !default;\n$input-height-inner-quarter: add($input-line-height * .25em, $input-padding-y * .5) !default;\n\n$input-height: add($input-line-height * 1em, add($input-padding-y * 2, $input-height-border, false)) !default;\n$input-height-sm: add($input-line-height * 1em, add($input-padding-y-sm * 2, $input-height-border, false)) !default;\n$input-height-lg: add($input-line-height * 1em, add($input-padding-y-lg * 2, $input-height-border, false)) !default;\n\n$input-transition: border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n\n$form-color-width: 3rem !default;\n// scss-docs-end form-input-variables\n\n// scss-docs-start form-check-variables\n$form-check-input-width: 1em !default;\n$form-check-min-height: $font-size-base * $line-height-base !default;\n$form-check-padding-start: $form-check-input-width + .5em !default;\n$form-check-margin-bottom: .125rem !default;\n$form-check-label-color: null !default;\n$form-check-label-cursor: null !default;\n$form-check-transition: null !default;\n\n$form-check-input-active-filter: brightness(90%) !default;\n\n$form-check-input-bg: $input-bg !default;\n$form-check-input-border: var(--#{$prefix}border-width) solid var(--#{$prefix}border-color) !default;\n$form-check-input-border-radius: .25em !default;\n$form-check-radio-border-radius: 50% !default;\n$form-check-input-focus-border: $input-focus-border-color !default;\n$form-check-input-focus-box-shadow: $focus-ring-box-shadow !default;\n\n$form-check-input-checked-color: $component-active-color !default;\n$form-check-input-checked-bg-color: $component-active-bg !default;\n$form-check-input-checked-border-color: $form-check-input-checked-bg-color !default;\n$form-check-input-checked-bg-image: url(\"data:image/svg+xml,\") !default;\n$form-check-radio-checked-bg-image: url(\"data:image/svg+xml,\") !default;\n\n$form-check-input-indeterminate-color: $component-active-color !default;\n$form-check-input-indeterminate-bg-color: $component-active-bg !default;\n$form-check-input-indeterminate-border-color: $form-check-input-indeterminate-bg-color !default;\n$form-check-input-indeterminate-bg-image: url(\"data:image/svg+xml,\") !default;\n\n$form-check-input-disabled-opacity: .5 !default;\n$form-check-label-disabled-opacity: $form-check-input-disabled-opacity !default;\n$form-check-btn-check-disabled-opacity: $btn-disabled-opacity !default;\n\n$form-check-inline-margin-end: 1rem !default;\n// scss-docs-end form-check-variables\n\n// scss-docs-start form-switch-variables\n$form-switch-color: rgba($black, .25) !default;\n$form-switch-width: 2em !default;\n$form-switch-padding-start: $form-switch-width + .5em !default;\n$form-switch-bg-image: url(\"data:image/svg+xml,\") !default;\n$form-switch-border-radius: $form-switch-width !default;\n$form-switch-transition: background-position .15s ease-in-out !default;\n\n$form-switch-focus-color: $input-focus-border-color !default;\n$form-switch-focus-bg-image: url(\"data:image/svg+xml,\") !default;\n\n$form-switch-checked-color: $component-active-color !default;\n$form-switch-checked-bg-image: url(\"data:image/svg+xml,\") !default;\n$form-switch-checked-bg-position: right center !default;\n// scss-docs-end form-switch-variables\n\n// scss-docs-start input-group-variables\n$input-group-addon-padding-y: $input-padding-y !default;\n$input-group-addon-padding-x: $input-padding-x !default;\n$input-group-addon-font-weight: $input-font-weight !default;\n$input-group-addon-color: $input-color !default;\n$input-group-addon-bg: var(--#{$prefix}tertiary-bg) !default;\n$input-group-addon-border-color: $input-border-color !default;\n// scss-docs-end input-group-variables\n\n// scss-docs-start form-select-variables\n$form-select-padding-y: $input-padding-y !default;\n$form-select-padding-x: $input-padding-x !default;\n$form-select-font-family: $input-font-family !default;\n$form-select-font-size: $input-font-size !default;\n$form-select-indicator-padding: $form-select-padding-x * 3 !default; // Extra padding for background-image\n$form-select-font-weight: $input-font-weight !default;\n$form-select-line-height: $input-line-height !default;\n$form-select-color: $input-color !default;\n$form-select-bg: $input-bg !default;\n$form-select-disabled-color: null !default;\n$form-select-disabled-bg: $input-disabled-bg !default;\n$form-select-disabled-border-color: $input-disabled-border-color !default;\n$form-select-bg-position: right $form-select-padding-x center !default;\n$form-select-bg-size: 16px 12px !default; // In pixels because image dimensions\n$form-select-indicator-color: $gray-800 !default;\n$form-select-indicator: url(\"data:image/svg+xml,\") !default;\n\n$form-select-feedback-icon-padding-end: $form-select-padding-x * 2.5 + $form-select-indicator-padding !default;\n$form-select-feedback-icon-position: center right $form-select-indicator-padding !default;\n$form-select-feedback-icon-size: $input-height-inner-half $input-height-inner-half !default;\n\n$form-select-border-width: $input-border-width !default;\n$form-select-border-color: $input-border-color !default;\n$form-select-border-radius: $input-border-radius !default;\n$form-select-box-shadow: var(--#{$prefix}box-shadow-inset) !default;\n\n$form-select-focus-border-color: $input-focus-border-color !default;\n$form-select-focus-width: $input-focus-width !default;\n$form-select-focus-box-shadow: 0 0 0 $form-select-focus-width $input-btn-focus-color !default;\n\n$form-select-padding-y-sm: $input-padding-y-sm !default;\n$form-select-padding-x-sm: $input-padding-x-sm !default;\n$form-select-font-size-sm: $input-font-size-sm !default;\n$form-select-border-radius-sm: $input-border-radius-sm !default;\n\n$form-select-padding-y-lg: $input-padding-y-lg !default;\n$form-select-padding-x-lg: $input-padding-x-lg !default;\n$form-select-font-size-lg: $input-font-size-lg !default;\n$form-select-border-radius-lg: $input-border-radius-lg !default;\n\n$form-select-transition: $input-transition !default;\n// scss-docs-end form-select-variables\n\n// scss-docs-start form-range-variables\n$form-range-track-width: 100% !default;\n$form-range-track-height: .5rem !default;\n$form-range-track-cursor: pointer !default;\n$form-range-track-bg: var(--#{$prefix}secondary-bg) !default;\n$form-range-track-border-radius: 1rem !default;\n$form-range-track-box-shadow: var(--#{$prefix}box-shadow-inset) !default;\n\n$form-range-thumb-width: 1rem !default;\n$form-range-thumb-height: $form-range-thumb-width !default;\n$form-range-thumb-bg: $component-active-bg !default;\n$form-range-thumb-border: 0 !default;\n$form-range-thumb-border-radius: 1rem !default;\n$form-range-thumb-box-shadow: 0 .1rem .25rem rgba($black, .1) !default;\n$form-range-thumb-focus-box-shadow: 0 0 0 1px $body-bg, $input-focus-box-shadow !default;\n$form-range-thumb-focus-box-shadow-width: $input-focus-width !default; // For focus box shadow issue in Edge\n$form-range-thumb-active-bg: tint-color($component-active-bg, 70%) !default;\n$form-range-thumb-disabled-bg: var(--#{$prefix}secondary-color) !default;\n$form-range-thumb-transition: background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n// scss-docs-end form-range-variables\n\n// scss-docs-start form-file-variables\n$form-file-button-color: $input-color !default;\n$form-file-button-bg: var(--#{$prefix}tertiary-bg) !default;\n$form-file-button-hover-bg: var(--#{$prefix}secondary-bg) !default;\n// scss-docs-end form-file-variables\n\n// scss-docs-start form-floating-variables\n$form-floating-height: add(3.5rem, $input-height-border) !default;\n$form-floating-line-height: 1.25 !default;\n$form-floating-padding-x: $input-padding-x !default;\n$form-floating-padding-y: 1rem !default;\n$form-floating-input-padding-t: 1.625rem !default;\n$form-floating-input-padding-b: .625rem !default;\n$form-floating-label-height: 1.5em !default;\n$form-floating-label-opacity: .65 !default;\n$form-floating-label-transform: scale(.85) translateY(-.5rem) translateX(.15rem) !default;\n$form-floating-label-disabled-color: $gray-600 !default;\n$form-floating-transition: opacity .1s ease-in-out, transform .1s ease-in-out !default;\n// scss-docs-end form-floating-variables\n\n// Form validation\n\n// scss-docs-start form-feedback-variables\n$form-feedback-margin-top: $form-text-margin-top !default;\n$form-feedback-font-size: $form-text-font-size !default;\n$form-feedback-font-style: $form-text-font-style !default;\n$form-feedback-valid-color: $success !default;\n$form-feedback-invalid-color: $danger !default;\n\n$form-feedback-icon-valid-color: $form-feedback-valid-color !default;\n$form-feedback-icon-valid: url(\"data:image/svg+xml,\") !default;\n$form-feedback-icon-invalid-color: $form-feedback-invalid-color !default;\n$form-feedback-icon-invalid: url(\"data:image/svg+xml,\") !default;\n// scss-docs-end form-feedback-variables\n\n// scss-docs-start form-validation-colors\n$form-valid-color: $form-feedback-valid-color !default;\n$form-valid-border-color: $form-feedback-valid-color !default;\n$form-invalid-color: $form-feedback-invalid-color !default;\n$form-invalid-border-color: $form-feedback-invalid-color !default;\n// scss-docs-end form-validation-colors\n\n// scss-docs-start form-validation-states\n$form-validation-states: (\n \"valid\": (\n \"color\": var(--#{$prefix}form-valid-color),\n \"icon\": $form-feedback-icon-valid,\n \"tooltip-color\": #fff,\n \"tooltip-bg-color\": var(--#{$prefix}success),\n \"focus-box-shadow\": 0 0 $input-btn-focus-blur $input-focus-width rgba(var(--#{$prefix}success-rgb), $input-btn-focus-color-opacity),\n \"border-color\": var(--#{$prefix}form-valid-border-color),\n ),\n \"invalid\": (\n \"color\": var(--#{$prefix}form-invalid-color),\n \"icon\": $form-feedback-icon-invalid,\n \"tooltip-color\": #fff,\n \"tooltip-bg-color\": var(--#{$prefix}danger),\n \"focus-box-shadow\": 0 0 $input-btn-focus-blur $input-focus-width rgba(var(--#{$prefix}danger-rgb), $input-btn-focus-color-opacity),\n \"border-color\": var(--#{$prefix}form-invalid-border-color),\n )\n) !default;\n// scss-docs-end form-validation-states\n\n// Z-index master list\n//\n// Warning: Avoid customizing these values. They're used for a bird's eye view\n// of components dependent on the z-axis and are designed to all work together.\n\n// scss-docs-start zindex-stack\n$zindex-dropdown: 1000 !default;\n$zindex-sticky: 1020 !default;\n$zindex-fixed: 1030 !default;\n$zindex-offcanvas-backdrop: 1040 !default;\n$zindex-offcanvas: 1045 !default;\n$zindex-modal-backdrop: 1050 !default;\n$zindex-modal: 1055 !default;\n$zindex-popover: 1070 !default;\n$zindex-tooltip: 1080 !default;\n$zindex-toast: 1090 !default;\n// scss-docs-end zindex-stack\n\n// scss-docs-start zindex-levels-map\n$zindex-levels: (\n n1: -1,\n 0: 0,\n 1: 1,\n 2: 2,\n 3: 3\n) !default;\n// scss-docs-end zindex-levels-map\n\n\n// Navs\n\n// scss-docs-start nav-variables\n$nav-link-padding-y: .5rem !default;\n$nav-link-padding-x: 1rem !default;\n$nav-link-font-size: null !default;\n$nav-link-font-weight: null !default;\n$nav-link-color: var(--#{$prefix}link-color) !default;\n$nav-link-hover-color: var(--#{$prefix}link-hover-color) !default;\n$nav-link-transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out !default;\n$nav-link-disabled-color: var(--#{$prefix}secondary-color) !default;\n$nav-link-focus-box-shadow: $focus-ring-box-shadow !default;\n\n$nav-tabs-border-color: var(--#{$prefix}border-color) !default;\n$nav-tabs-border-width: var(--#{$prefix}border-width) !default;\n$nav-tabs-border-radius: var(--#{$prefix}border-radius) !default;\n$nav-tabs-link-hover-border-color: var(--#{$prefix}secondary-bg) var(--#{$prefix}secondary-bg) $nav-tabs-border-color !default;\n$nav-tabs-link-active-color: var(--#{$prefix}emphasis-color) !default;\n$nav-tabs-link-active-bg: var(--#{$prefix}body-bg) !default;\n$nav-tabs-link-active-border-color: var(--#{$prefix}border-color) var(--#{$prefix}border-color) $nav-tabs-link-active-bg !default;\n\n$nav-pills-border-radius: var(--#{$prefix}border-radius) !default;\n$nav-pills-link-active-color: $component-active-color !default;\n$nav-pills-link-active-bg: $component-active-bg !default;\n\n$nav-underline-gap: 1rem !default;\n$nav-underline-border-width: .125rem !default;\n$nav-underline-link-active-color: var(--#{$prefix}emphasis-color) !default;\n// scss-docs-end nav-variables\n\n\n// Navbar\n\n// scss-docs-start navbar-variables\n$navbar-padding-y: $spacer * .5 !default;\n$navbar-padding-x: null !default;\n\n$navbar-nav-link-padding-x: .5rem !default;\n\n$navbar-brand-font-size: $font-size-lg !default;\n// Compute the navbar-brand padding-y so the navbar-brand will have the same height as navbar-text and nav-link\n$nav-link-height: $font-size-base * $line-height-base + $nav-link-padding-y * 2 !default;\n$navbar-brand-height: $navbar-brand-font-size * $line-height-base !default;\n$navbar-brand-padding-y: ($nav-link-height - $navbar-brand-height) * .5 !default;\n$navbar-brand-margin-end: 1rem !default;\n\n$navbar-toggler-padding-y: .25rem !default;\n$navbar-toggler-padding-x: .75rem !default;\n$navbar-toggler-font-size: $font-size-lg !default;\n$navbar-toggler-border-radius: $btn-border-radius !default;\n$navbar-toggler-focus-width: $btn-focus-width !default;\n$navbar-toggler-transition: box-shadow .15s ease-in-out !default;\n\n$navbar-light-color: rgba(var(--#{$prefix}emphasis-color-rgb), .65) !default;\n$navbar-light-hover-color: rgba(var(--#{$prefix}emphasis-color-rgb), .8) !default;\n$navbar-light-active-color: rgba(var(--#{$prefix}emphasis-color-rgb), 1) !default;\n$navbar-light-disabled-color: rgba(var(--#{$prefix}emphasis-color-rgb), .3) !default;\n$navbar-light-icon-color: rgba($body-color, .75) !default;\n$navbar-light-toggler-icon-bg: url(\"data:image/svg+xml,\") !default;\n$navbar-light-toggler-border-color: rgba(var(--#{$prefix}emphasis-color-rgb), .15) !default;\n$navbar-light-brand-color: $navbar-light-active-color !default;\n$navbar-light-brand-hover-color: $navbar-light-active-color !default;\n// scss-docs-end navbar-variables\n\n// scss-docs-start navbar-dark-variables\n$navbar-dark-color: rgba($white, .55) !default;\n$navbar-dark-hover-color: rgba($white, .75) !default;\n$navbar-dark-active-color: $white !default;\n$navbar-dark-disabled-color: rgba($white, .25) !default;\n$navbar-dark-icon-color: $navbar-dark-color !default;\n$navbar-dark-toggler-icon-bg: url(\"data:image/svg+xml,\") !default;\n$navbar-dark-toggler-border-color: rgba($white, .1) !default;\n$navbar-dark-brand-color: $navbar-dark-active-color !default;\n$navbar-dark-brand-hover-color: $navbar-dark-active-color !default;\n// scss-docs-end navbar-dark-variables\n\n\n// Dropdowns\n//\n// Dropdown menu container and contents.\n\n// scss-docs-start dropdown-variables\n$dropdown-min-width: 10rem !default;\n$dropdown-padding-x: 0 !default;\n$dropdown-padding-y: .5rem !default;\n$dropdown-spacer: .125rem !default;\n$dropdown-font-size: $font-size-base !default;\n$dropdown-color: var(--#{$prefix}body-color) !default;\n$dropdown-bg: var(--#{$prefix}body-bg) !default;\n$dropdown-border-color: var(--#{$prefix}border-color-translucent) !default;\n$dropdown-border-radius: var(--#{$prefix}border-radius) !default;\n$dropdown-border-width: var(--#{$prefix}border-width) !default;\n$dropdown-inner-border-radius: calc(#{$dropdown-border-radius} - #{$dropdown-border-width}) !default; // stylelint-disable-line function-disallowed-list\n$dropdown-divider-bg: $dropdown-border-color !default;\n$dropdown-divider-margin-y: $spacer * .5 !default;\n$dropdown-box-shadow: var(--#{$prefix}box-shadow) !default;\n\n$dropdown-link-color: var(--#{$prefix}body-color) !default;\n$dropdown-link-hover-color: $dropdown-link-color !default;\n$dropdown-link-hover-bg: var(--#{$prefix}tertiary-bg) !default;\n\n$dropdown-link-active-color: $component-active-color !default;\n$dropdown-link-active-bg: $component-active-bg !default;\n\n$dropdown-link-disabled-color: var(--#{$prefix}tertiary-color) !default;\n\n$dropdown-item-padding-y: $spacer * .25 !default;\n$dropdown-item-padding-x: $spacer !default;\n\n$dropdown-header-color: $gray-600 !default;\n$dropdown-header-padding-x: $dropdown-item-padding-x !default;\n$dropdown-header-padding-y: $dropdown-padding-y !default;\n// fusv-disable\n$dropdown-header-padding: $dropdown-header-padding-y $dropdown-header-padding-x !default; // Deprecated in v5.2.0\n// fusv-enable\n// scss-docs-end dropdown-variables\n\n// scss-docs-start dropdown-dark-variables\n$dropdown-dark-color: $gray-300 !default;\n$dropdown-dark-bg: $gray-800 !default;\n$dropdown-dark-border-color: $dropdown-border-color !default;\n$dropdown-dark-divider-bg: $dropdown-divider-bg !default;\n$dropdown-dark-box-shadow: null !default;\n$dropdown-dark-link-color: $dropdown-dark-color !default;\n$dropdown-dark-link-hover-color: $white !default;\n$dropdown-dark-link-hover-bg: rgba($white, .15) !default;\n$dropdown-dark-link-active-color: $dropdown-link-active-color !default;\n$dropdown-dark-link-active-bg: $dropdown-link-active-bg !default;\n$dropdown-dark-link-disabled-color: $gray-500 !default;\n$dropdown-dark-header-color: $gray-500 !default;\n// scss-docs-end dropdown-dark-variables\n\n\n// Pagination\n\n// scss-docs-start pagination-variables\n$pagination-padding-y: .375rem !default;\n$pagination-padding-x: .75rem !default;\n$pagination-padding-y-sm: .25rem !default;\n$pagination-padding-x-sm: .5rem !default;\n$pagination-padding-y-lg: .75rem !default;\n$pagination-padding-x-lg: 1.5rem !default;\n\n$pagination-font-size: $font-size-base !default;\n\n$pagination-color: var(--#{$prefix}link-color) !default;\n$pagination-bg: var(--#{$prefix}body-bg) !default;\n$pagination-border-radius: var(--#{$prefix}border-radius) !default;\n$pagination-border-width: var(--#{$prefix}border-width) !default;\n$pagination-margin-start: calc(#{$pagination-border-width} * -1) !default; // stylelint-disable-line function-disallowed-list\n$pagination-border-color: var(--#{$prefix}border-color) !default;\n\n$pagination-focus-color: var(--#{$prefix}link-hover-color) !default;\n$pagination-focus-bg: var(--#{$prefix}secondary-bg) !default;\n$pagination-focus-box-shadow: $focus-ring-box-shadow !default;\n$pagination-focus-outline: 0 !default;\n\n$pagination-hover-color: var(--#{$prefix}link-hover-color) !default;\n$pagination-hover-bg: var(--#{$prefix}tertiary-bg) !default;\n$pagination-hover-border-color: var(--#{$prefix}border-color) !default; // Todo in v6: remove this?\n\n$pagination-active-color: $component-active-color !default;\n$pagination-active-bg: $component-active-bg !default;\n$pagination-active-border-color: $component-active-bg !default;\n\n$pagination-disabled-color: var(--#{$prefix}secondary-color) !default;\n$pagination-disabled-bg: var(--#{$prefix}secondary-bg) !default;\n$pagination-disabled-border-color: var(--#{$prefix}border-color) !default;\n\n$pagination-transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n\n$pagination-border-radius-sm: var(--#{$prefix}border-radius-sm) !default;\n$pagination-border-radius-lg: var(--#{$prefix}border-radius-lg) !default;\n// scss-docs-end pagination-variables\n\n\n// Placeholders\n\n// scss-docs-start placeholders\n$placeholder-opacity-max: .5 !default;\n$placeholder-opacity-min: .2 !default;\n// scss-docs-end placeholders\n\n// Cards\n\n// scss-docs-start card-variables\n$card-spacer-y: $spacer !default;\n$card-spacer-x: $spacer !default;\n$card-title-spacer-y: $spacer * .5 !default;\n$card-title-color: null !default;\n$card-subtitle-color: null !default;\n$card-border-width: var(--#{$prefix}border-width) !default;\n$card-border-color: var(--#{$prefix}border-color-translucent) !default;\n$card-border-radius: var(--#{$prefix}border-radius) !default;\n$card-box-shadow: null !default;\n$card-inner-border-radius: subtract($card-border-radius, $card-border-width) !default;\n$card-cap-padding-y: $card-spacer-y * .5 !default;\n$card-cap-padding-x: $card-spacer-x !default;\n$card-cap-bg: rgba(var(--#{$prefix}body-color-rgb), .03) !default;\n$card-cap-color: null !default;\n$card-height: null !default;\n$card-color: null !default;\n$card-bg: var(--#{$prefix}body-bg) !default;\n$card-img-overlay-padding: $spacer !default;\n$card-group-margin: $grid-gutter-width * .5 !default;\n// scss-docs-end card-variables\n\n// Accordion\n\n// scss-docs-start accordion-variables\n$accordion-padding-y: 1rem !default;\n$accordion-padding-x: 1.25rem !default;\n$accordion-color: var(--#{$prefix}body-color) !default;\n$accordion-bg: var(--#{$prefix}body-bg) !default;\n$accordion-border-width: var(--#{$prefix}border-width) !default;\n$accordion-border-color: var(--#{$prefix}border-color) !default;\n$accordion-border-radius: var(--#{$prefix}border-radius) !default;\n$accordion-inner-border-radius: subtract($accordion-border-radius, $accordion-border-width) !default;\n\n$accordion-body-padding-y: $accordion-padding-y !default;\n$accordion-body-padding-x: $accordion-padding-x !default;\n\n$accordion-button-padding-y: $accordion-padding-y !default;\n$accordion-button-padding-x: $accordion-padding-x !default;\n$accordion-button-color: var(--#{$prefix}body-color) !default;\n$accordion-button-bg: var(--#{$prefix}accordion-bg) !default;\n$accordion-transition: $btn-transition, border-radius .15s ease !default;\n$accordion-button-active-bg: var(--#{$prefix}primary-bg-subtle) !default;\n$accordion-button-active-color: var(--#{$prefix}primary-text-emphasis) !default;\n\n$accordion-button-focus-border-color: $input-focus-border-color !default;\n$accordion-button-focus-box-shadow: $btn-focus-box-shadow !default;\n\n$accordion-icon-width: 1.25rem !default;\n$accordion-icon-color: $body-color !default;\n$accordion-icon-active-color: $primary-text-emphasis !default;\n$accordion-icon-transition: transform .2s ease-in-out !default;\n$accordion-icon-transform: rotate(-180deg) !default;\n\n$accordion-button-icon: url(\"data:image/svg+xml,\") !default;\n$accordion-button-active-icon: url(\"data:image/svg+xml,\") !default;\n// scss-docs-end accordion-variables\n\n// Tooltips\n\n// scss-docs-start tooltip-variables\n$tooltip-font-size: $font-size-sm !default;\n$tooltip-max-width: 200px !default;\n$tooltip-color: var(--#{$prefix}body-bg) !default;\n$tooltip-bg: var(--#{$prefix}emphasis-color) !default;\n$tooltip-border-radius: var(--#{$prefix}border-radius) !default;\n$tooltip-opacity: .9 !default;\n$tooltip-padding-y: $spacer * .25 !default;\n$tooltip-padding-x: $spacer * .5 !default;\n$tooltip-margin: null !default; // TODO: remove this in v6\n\n$tooltip-arrow-width: .8rem !default;\n$tooltip-arrow-height: .4rem !default;\n// fusv-disable\n$tooltip-arrow-color: null !default; // Deprecated in Bootstrap 5.2.0 for CSS variables\n// fusv-enable\n// scss-docs-end tooltip-variables\n\n// Form tooltips must come after regular tooltips\n// scss-docs-start tooltip-feedback-variables\n$form-feedback-tooltip-padding-y: $tooltip-padding-y !default;\n$form-feedback-tooltip-padding-x: $tooltip-padding-x !default;\n$form-feedback-tooltip-font-size: $tooltip-font-size !default;\n$form-feedback-tooltip-line-height: null !default;\n$form-feedback-tooltip-opacity: $tooltip-opacity !default;\n$form-feedback-tooltip-border-radius: $tooltip-border-radius !default;\n// scss-docs-end tooltip-feedback-variables\n\n\n// Popovers\n\n// scss-docs-start popover-variables\n$popover-font-size: $font-size-sm !default;\n$popover-bg: var(--#{$prefix}body-bg) !default;\n$popover-max-width: 276px !default;\n$popover-border-width: var(--#{$prefix}border-width) !default;\n$popover-border-color: var(--#{$prefix}border-color-translucent) !default;\n$popover-border-radius: var(--#{$prefix}border-radius-lg) !default;\n$popover-inner-border-radius: calc(#{$popover-border-radius} - #{$popover-border-width}) !default; // stylelint-disable-line function-disallowed-list\n$popover-box-shadow: var(--#{$prefix}box-shadow) !default;\n\n$popover-header-font-size: $font-size-base !default;\n$popover-header-bg: var(--#{$prefix}secondary-bg) !default;\n$popover-header-color: $headings-color !default;\n$popover-header-padding-y: .5rem !default;\n$popover-header-padding-x: $spacer !default;\n\n$popover-body-color: var(--#{$prefix}body-color) !default;\n$popover-body-padding-y: $spacer !default;\n$popover-body-padding-x: $spacer !default;\n\n$popover-arrow-width: 1rem !default;\n$popover-arrow-height: .5rem !default;\n// scss-docs-end popover-variables\n\n// fusv-disable\n// Deprecated in Bootstrap 5.2.0 for CSS variables\n$popover-arrow-color: $popover-bg !default;\n$popover-arrow-outer-color: var(--#{$prefix}border-color-translucent) !default;\n// fusv-enable\n\n\n// Toasts\n\n// scss-docs-start toast-variables\n$toast-max-width: 350px !default;\n$toast-padding-x: .75rem !default;\n$toast-padding-y: .5rem !default;\n$toast-font-size: .875rem !default;\n$toast-color: null !default;\n$toast-background-color: rgba(var(--#{$prefix}body-bg-rgb), .85) !default;\n$toast-border-width: var(--#{$prefix}border-width) !default;\n$toast-border-color: var(--#{$prefix}border-color-translucent) !default;\n$toast-border-radius: var(--#{$prefix}border-radius) !default;\n$toast-box-shadow: var(--#{$prefix}box-shadow) !default;\n$toast-spacing: $container-padding-x !default;\n\n$toast-header-color: var(--#{$prefix}secondary-color) !default;\n$toast-header-background-color: rgba(var(--#{$prefix}body-bg-rgb), .85) !default;\n$toast-header-border-color: $toast-border-color !default;\n// scss-docs-end toast-variables\n\n\n// Badges\n\n// scss-docs-start badge-variables\n$badge-font-size: .75em !default;\n$badge-font-weight: $font-weight-bold !default;\n$badge-color: $white !default;\n$badge-padding-y: .35em !default;\n$badge-padding-x: .65em !default;\n$badge-border-radius: var(--#{$prefix}border-radius) !default;\n// scss-docs-end badge-variables\n\n\n// Modals\n\n// scss-docs-start modal-variables\n$modal-inner-padding: $spacer !default;\n\n$modal-footer-margin-between: .5rem !default;\n\n$modal-dialog-margin: .5rem !default;\n$modal-dialog-margin-y-sm-up: 1.75rem !default;\n\n$modal-title-line-height: $line-height-base !default;\n\n$modal-content-color: null !default;\n$modal-content-bg: var(--#{$prefix}body-bg) !default;\n$modal-content-border-color: var(--#{$prefix}border-color-translucent) !default;\n$modal-content-border-width: var(--#{$prefix}border-width) !default;\n$modal-content-border-radius: var(--#{$prefix}border-radius-lg) !default;\n$modal-content-inner-border-radius: subtract($modal-content-border-radius, $modal-content-border-width) !default;\n$modal-content-box-shadow-xs: var(--#{$prefix}box-shadow-sm) !default;\n$modal-content-box-shadow-sm-up: var(--#{$prefix}box-shadow) !default;\n\n$modal-backdrop-bg: $black !default;\n$modal-backdrop-opacity: .5 !default;\n\n$modal-header-border-color: var(--#{$prefix}border-color) !default;\n$modal-header-border-width: $modal-content-border-width !default;\n$modal-header-padding-y: $modal-inner-padding !default;\n$modal-header-padding-x: $modal-inner-padding !default;\n$modal-header-padding: $modal-header-padding-y $modal-header-padding-x !default; // Keep this for backwards compatibility\n\n$modal-footer-bg: null !default;\n$modal-footer-border-color: $modal-header-border-color !default;\n$modal-footer-border-width: $modal-header-border-width !default;\n\n$modal-sm: 300px !default;\n$modal-md: 500px !default;\n$modal-lg: 800px !default;\n$modal-xl: 1140px !default;\n\n$modal-fade-transform: translate(0, -50px) !default;\n$modal-show-transform: none !default;\n$modal-transition: transform .3s ease-out !default;\n$modal-scale-transform: scale(1.02) !default;\n// scss-docs-end modal-variables\n\n\n// Alerts\n//\n// Define alert colors, border radius, and padding.\n\n// scss-docs-start alert-variables\n$alert-padding-y: $spacer !default;\n$alert-padding-x: $spacer !default;\n$alert-margin-bottom: 1rem !default;\n$alert-border-radius: var(--#{$prefix}border-radius) !default;\n$alert-link-font-weight: $font-weight-bold !default;\n$alert-border-width: var(--#{$prefix}border-width) !default;\n$alert-dismissible-padding-r: $alert-padding-x * 3 !default; // 3x covers width of x plus default padding on either side\n// scss-docs-end alert-variables\n\n// fusv-disable\n$alert-bg-scale: -80% !default; // Deprecated in v5.2.0, to be removed in v6\n$alert-border-scale: -70% !default; // Deprecated in v5.2.0, to be removed in v6\n$alert-color-scale: 40% !default; // Deprecated in v5.2.0, to be removed in v6\n// fusv-enable\n\n// Progress bars\n\n// scss-docs-start progress-variables\n$progress-height: 1rem !default;\n$progress-font-size: $font-size-base * .75 !default;\n$progress-bg: var(--#{$prefix}secondary-bg) !default;\n$progress-border-radius: var(--#{$prefix}border-radius) !default;\n$progress-box-shadow: var(--#{$prefix}box-shadow-inset) !default;\n$progress-bar-color: $white !default;\n$progress-bar-bg: $primary !default;\n$progress-bar-animation-timing: 1s linear infinite !default;\n$progress-bar-transition: width .6s ease !default;\n// scss-docs-end progress-variables\n\n\n// List group\n\n// scss-docs-start list-group-variables\n$list-group-color: var(--#{$prefix}body-color) !default;\n$list-group-bg: var(--#{$prefix}body-bg) !default;\n$list-group-border-color: var(--#{$prefix}border-color) !default;\n$list-group-border-width: var(--#{$prefix}border-width) !default;\n$list-group-border-radius: var(--#{$prefix}border-radius) !default;\n\n$list-group-item-padding-y: $spacer * .5 !default;\n$list-group-item-padding-x: $spacer !default;\n// fusv-disable\n$list-group-item-bg-scale: -80% !default; // Deprecated in v5.3.0\n$list-group-item-color-scale: 40% !default; // Deprecated in v5.3.0\n// fusv-enable\n\n$list-group-hover-bg: var(--#{$prefix}tertiary-bg) !default;\n$list-group-active-color: $component-active-color !default;\n$list-group-active-bg: $component-active-bg !default;\n$list-group-active-border-color: $list-group-active-bg !default;\n\n$list-group-disabled-color: var(--#{$prefix}secondary-color) !default;\n$list-group-disabled-bg: $list-group-bg !default;\n\n$list-group-action-color: var(--#{$prefix}secondary-color) !default;\n$list-group-action-hover-color: var(--#{$prefix}emphasis-color) !default;\n\n$list-group-action-active-color: var(--#{$prefix}body-color) !default;\n$list-group-action-active-bg: var(--#{$prefix}secondary-bg) !default;\n// scss-docs-end list-group-variables\n\n\n// Image thumbnails\n\n// scss-docs-start thumbnail-variables\n$thumbnail-padding: .25rem !default;\n$thumbnail-bg: var(--#{$prefix}body-bg) !default;\n$thumbnail-border-width: var(--#{$prefix}border-width) !default;\n$thumbnail-border-color: var(--#{$prefix}border-color) !default;\n$thumbnail-border-radius: var(--#{$prefix}border-radius) !default;\n$thumbnail-box-shadow: var(--#{$prefix}box-shadow-sm) !default;\n// scss-docs-end thumbnail-variables\n\n\n// Figures\n\n// scss-docs-start figure-variables\n$figure-caption-font-size: $small-font-size !default;\n$figure-caption-color: var(--#{$prefix}secondary-color) !default;\n// scss-docs-end figure-variables\n\n\n// Breadcrumbs\n\n// scss-docs-start breadcrumb-variables\n$breadcrumb-font-size: null !default;\n$breadcrumb-padding-y: 0 !default;\n$breadcrumb-padding-x: 0 !default;\n$breadcrumb-item-padding-x: .5rem !default;\n$breadcrumb-margin-bottom: 1rem !default;\n$breadcrumb-bg: null !default;\n$breadcrumb-divider-color: var(--#{$prefix}secondary-color) !default;\n$breadcrumb-active-color: var(--#{$prefix}secondary-color) !default;\n$breadcrumb-divider: quote(\"/\") !default;\n$breadcrumb-divider-flipped: $breadcrumb-divider !default;\n$breadcrumb-border-radius: null !default;\n// scss-docs-end breadcrumb-variables\n\n// Carousel\n\n// scss-docs-start carousel-variables\n$carousel-control-color: $white !default;\n$carousel-control-width: 15% !default;\n$carousel-control-opacity: .5 !default;\n$carousel-control-hover-opacity: .9 !default;\n$carousel-control-transition: opacity .15s ease !default;\n\n$carousel-indicator-width: 30px !default;\n$carousel-indicator-height: 3px !default;\n$carousel-indicator-hit-area-height: 10px !default;\n$carousel-indicator-spacer: 3px !default;\n$carousel-indicator-opacity: .5 !default;\n$carousel-indicator-active-bg: $white !default;\n$carousel-indicator-active-opacity: 1 !default;\n$carousel-indicator-transition: opacity .6s ease !default;\n\n$carousel-caption-width: 70% !default;\n$carousel-caption-color: $white !default;\n$carousel-caption-padding-y: 1.25rem !default;\n$carousel-caption-spacer: 1.25rem !default;\n\n$carousel-control-icon-width: 2rem !default;\n\n$carousel-control-prev-icon-bg: url(\"data:image/svg+xml,\") !default;\n$carousel-control-next-icon-bg: url(\"data:image/svg+xml,\") !default;\n\n$carousel-transition-duration: .6s !default;\n$carousel-transition: transform $carousel-transition-duration ease-in-out !default; // Define transform transition first if using multiple transitions (e.g., `transform 2s ease, opacity .5s ease-out`)\n// scss-docs-end carousel-variables\n\n// scss-docs-start carousel-dark-variables\n$carousel-dark-indicator-active-bg: $black !default;\n$carousel-dark-caption-color: $black !default;\n$carousel-dark-control-icon-filter: invert(1) grayscale(100) !default;\n// scss-docs-end carousel-dark-variables\n\n\n// Spinners\n\n// scss-docs-start spinner-variables\n$spinner-width: 2rem !default;\n$spinner-height: $spinner-width !default;\n$spinner-vertical-align: -.125em !default;\n$spinner-border-width: .25em !default;\n$spinner-animation-speed: .75s !default;\n\n$spinner-width-sm: 1rem !default;\n$spinner-height-sm: $spinner-width-sm !default;\n$spinner-border-width-sm: .2em !default;\n// scss-docs-end spinner-variables\n\n\n// Close\n\n// scss-docs-start close-variables\n$btn-close-width: 1em !default;\n$btn-close-height: $btn-close-width !default;\n$btn-close-padding-x: .25em !default;\n$btn-close-padding-y: $btn-close-padding-x !default;\n$btn-close-color: $black !default;\n$btn-close-bg: url(\"data:image/svg+xml,\") !default;\n$btn-close-focus-shadow: $focus-ring-box-shadow !default;\n$btn-close-opacity: .5 !default;\n$btn-close-hover-opacity: .75 !default;\n$btn-close-focus-opacity: 1 !default;\n$btn-close-disabled-opacity: .25 !default;\n$btn-close-white-filter: invert(1) grayscale(100%) brightness(200%) !default;\n// scss-docs-end close-variables\n\n\n// Offcanvas\n\n// scss-docs-start offcanvas-variables\n$offcanvas-padding-y: $modal-inner-padding !default;\n$offcanvas-padding-x: $modal-inner-padding !default;\n$offcanvas-horizontal-width: 400px !default;\n$offcanvas-vertical-height: 30vh !default;\n$offcanvas-transition-duration: .3s !default;\n$offcanvas-border-color: $modal-content-border-color !default;\n$offcanvas-border-width: $modal-content-border-width !default;\n$offcanvas-title-line-height: $modal-title-line-height !default;\n$offcanvas-bg-color: var(--#{$prefix}body-bg) !default;\n$offcanvas-color: var(--#{$prefix}body-color) !default;\n$offcanvas-box-shadow: $modal-content-box-shadow-xs !default;\n$offcanvas-backdrop-bg: $modal-backdrop-bg !default;\n$offcanvas-backdrop-opacity: $modal-backdrop-opacity !default;\n// scss-docs-end offcanvas-variables\n\n// Code\n\n$code-font-size: $small-font-size !default;\n$code-color: $pink !default;\n\n$kbd-padding-y: .1875rem !default;\n$kbd-padding-x: .375rem !default;\n$kbd-font-size: $code-font-size !default;\n$kbd-color: var(--#{$prefix}body-bg) !default;\n$kbd-bg: var(--#{$prefix}body-color) !default;\n$nested-kbd-font-weight: null !default; // Deprecated in v5.2.0, removing in v6\n\n$pre-color: null !default;\n","/***\n * Rules for the UX/UI of skip navigation link btn. \n *It's only visible to people\n * navigating with keyboard for accessibility purposes\n * ref: https://www.youtube.com/watch?v=VUR0I5mqq7I\n ***/\n\n.skip-link {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n text-align: center;\n background-color: var(--pst-color-warning);\n // Ensure we are using a WCAG conformant colour\n color: var(--pst-color-warning-text) !important;\n padding: 0.5rem;\n z-index: $zindex-modal;\n border-bottom: 1px solid var(--pst-color-border);\n\n // This shows / hides the button\n transform: translateY(-100%);\n transition: transform 150ms ease-in-out;\n &:focus {\n transform: translateY(0%);\n // ensure this is visible\n outline: 3px solid $foundation-black;\n }\n}\n",".bd-container {\n flex-grow: 1;\n display: flex;\n justify-content: center;\n\n .bd-container__inner {\n display: flex;\n }\n}\n\n.bd-page-width {\n width: 100%;\n @include media-breakpoint-up(lg) {\n max-width: $breakpoint-page-width;\n }\n}\n","// Breakpoint viewport sizes and media queries.\n//\n// Breakpoints are defined as a map of (name: minimum width), order from small to large:\n//\n// (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px)\n//\n// The map defined in the `$grid-breakpoints` global variable is used as the `$breakpoints` argument by default.\n\n// Name of the next breakpoint, or null for the last breakpoint.\n//\n// >> breakpoint-next(sm)\n// md\n// >> breakpoint-next(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// md\n// >> breakpoint-next(sm, $breakpoint-names: (xs sm md lg xl xxl))\n// md\n@function breakpoint-next($name, $breakpoints: $grid-breakpoints, $breakpoint-names: map-keys($breakpoints)) {\n $n: index($breakpoint-names, $name);\n @if not $n {\n @error \"breakpoint `#{$name}` not found in `#{$breakpoints}`\";\n }\n @return if($n < length($breakpoint-names), nth($breakpoint-names, $n + 1), null);\n}\n\n// Minimum breakpoint width. Null for the smallest (first) breakpoint.\n//\n// >> breakpoint-min(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// 576px\n@function breakpoint-min($name, $breakpoints: $grid-breakpoints) {\n $min: map-get($breakpoints, $name);\n @return if($min != 0, $min, null);\n}\n\n// Maximum breakpoint width.\n// The maximum value is reduced by 0.02px to work around the limitations of\n// `min-` and `max-` prefixes and viewports with fractional widths.\n// See https://www.w3.org/TR/mediaqueries-4/#mq-min-max\n// Uses 0.02px rather than 0.01px to work around a current rounding bug in Safari.\n// See https://bugs.webkit.org/show_bug.cgi?id=178261\n//\n// >> breakpoint-max(md, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// 767.98px\n@function breakpoint-max($name, $breakpoints: $grid-breakpoints) {\n $max: map-get($breakpoints, $name);\n @return if($max and $max > 0, $max - .02, null);\n}\n\n// Returns a blank string if smallest breakpoint, otherwise returns the name with a dash in front.\n// Useful for making responsive utilities.\n//\n// >> breakpoint-infix(xs, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// \"\" (Returns a blank string)\n// >> breakpoint-infix(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// \"-sm\"\n@function breakpoint-infix($name, $breakpoints: $grid-breakpoints) {\n @return if(breakpoint-min($name, $breakpoints) == null, \"\", \"-#{$name}\");\n}\n\n// Media of at least the minimum breakpoint width. No query for the smallest breakpoint.\n// Makes the @content apply to the given breakpoint and wider.\n@mixin media-breakpoint-up($name, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n @if $min {\n @media (min-width: $min) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media of at most the maximum breakpoint width. No query for the largest breakpoint.\n// Makes the @content apply to the given breakpoint and narrower.\n@mixin media-breakpoint-down($name, $breakpoints: $grid-breakpoints) {\n $max: breakpoint-max($name, $breakpoints);\n @if $max {\n @media (max-width: $max) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media that spans multiple breakpoint widths.\n// Makes the @content apply between the min and max breakpoints\n@mixin media-breakpoint-between($lower, $upper, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($lower, $breakpoints);\n $max: breakpoint-max($upper, $breakpoints);\n\n @if $min != null and $max != null {\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else if $max == null {\n @include media-breakpoint-up($lower, $breakpoints) {\n @content;\n }\n } @else if $min == null {\n @include media-breakpoint-down($upper, $breakpoints) {\n @content;\n }\n }\n}\n\n// Media between the breakpoint's minimum and maximum widths.\n// No minimum for the smallest breakpoint, and no maximum for the largest one.\n// Makes the @content apply only to the given breakpoint, not viewports any wider or narrower.\n@mixin media-breakpoint-only($name, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n $next: breakpoint-next($name, $breakpoints);\n $max: breakpoint-max($next, $breakpoints);\n\n @if $min != null and $max != null {\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else if $max == null {\n @include media-breakpoint-up($name, $breakpoints) {\n @content;\n }\n } @else if $min == null {\n @include media-breakpoint-down($next, $breakpoints) {\n @content;\n }\n }\n}\n",".bd-header-version-warning,\n.bd-header-announcement {\n min-height: 3rem;\n width: 100%;\n display: flex;\n position: relative;\n align-items: center;\n justify-content: center;\n text-align: center;\n padding: 0.5rem 12.5%; // Horizontal padding so the width is 75%\n // One breakpoint less than $breakpoint-sidebar-primary. See variables/_layout.scss for more info.\n @include media-breakpoint-down(lg) {\n // Announcements can take a bit more width on mobile\n padding: 0.5rem 2%;\n }\n\n p {\n font-weight: bold;\n margin: 0;\n }\n\n &:after {\n position: absolute;\n width: 100%;\n height: 100%;\n left: 0;\n top: 0;\n content: \"\";\n z-index: -1; // So it doesn't hover over the content\n }\n\n &:empty {\n display: none;\n }\n\n // Ensure there is enough contrast against the background\n a {\n color: var(--pst-color-inline-code-links);\n }\n}\n\n// Bg color is now defined in the theme color palette - using our secondary color\n.bd-header-announcement {\n &:after {\n background-color: var(--pst-color-secondary-bg);\n }\n}\n\n.bd-header-version-warning {\n &:after {\n background-color: var(--pst-color-danger-bg);\n }\n}\n","/**\n * Main content area\n */\n.bd-main {\n flex-grow: 1;\n flex-direction: column;\n display: flex;\n min-width: 0;\n\n .bd-content {\n display: flex;\n justify-content: center;\n height: 100%;\n .bd-article-container {\n justify-content: start;\n display: flex;\n flex-direction: column;\n // Max-width is slightly more than the W3 since our docs often have images.\n // We shoot for about 100 characters per line instead of 80.\n // ref: https://www.w3.org/WAI/tutorials/page-structure/styling/#line-length\n width: 100%;\n max-width: 60em;\n overflow-x: auto; // Prevent wide content from pushing off the secondary sidebar\n padding: 1rem;\n .bd-article {\n // Give a bit more verticle spacing on wide screens\n @include media-breakpoint-up($breakpoint-sidebar-secondary) {\n padding-top: 1.5rem;\n padding-left: 2rem;\n }\n }\n }\n }\n}\n",".bd-footer {\n width: 100%;\n border-top: 1px solid var(--pst-color-border);\n\n .bd-footer__inner {\n display: flex;\n flex-grow: 1;\n padding: 1rem;\n margin: auto;\n }\n\n .footer-items__start,\n .footer-items__center,\n .footer-items__end {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n justify-content: center;\n flex-grow: 1;\n }\n\n .footer-items__center {\n text-align: center;\n }\n\n .footer-items__end {\n text-align: end;\n }\n\n // So that paragraphs don't take up extra room\n .footer-item p {\n margin-bottom: 0;\n }\n}\n",".bd-footer-article {\n margin-top: auto;\n\n .footer-article-items {\n display: flex;\n flex-direction: column;\n }\n}\n",".bd-footer-content {\n .footer-content-items {\n display: flex;\n flex-direction: column;\n margin-top: auto;\n }\n}\n","/**\n * Header at the top of the page\n * It includes the announcement bar and the navigation bar.\n */\n\n// Styling for the Icon links can be found in components/_icon-links.scss\n\n// If we want the shadow to only point downward in the future, set\n// box-shadow to: 0 0.125rem 0.25rem -0.125rem rgba(0, 0, 0, 0.11);\n.bd-header {\n position: sticky;\n top: 0;\n z-index: $zindex-fixed;\n\n // Overrides bootstrap\n background: var(--pst-color-on-background) !important;\n box-shadow: 0 0.125rem 0.25rem 0 var(--pst-color-shadow);\n\n width: 100%;\n padding: 0;\n max-width: 100vw;\n justify-content: center;\n .bd-header__inner {\n display: flex;\n align-items: center;\n height: fit-content;\n padding-left: 1rem;\n padding-right: 1rem;\n }\n\n // These items will define the height of the header\n .navbar-item {\n height: var(--pst-header-height);\n max-height: var(--pst-header-height);\n display: flex;\n align-items: center;\n }\n\n // Hide the header items on mobile\n .navbar-header-items {\n display: none;\n flex-shrink: 1;\n @include media-breakpoint-up($breakpoint-sidebar-primary) {\n display: flex;\n flex-grow: 1;\n padding: 0 0 0 0.5rem;\n }\n }\n\n .navbar-header-items__end,\n .navbar-header-items__center,\n .navbar-header-items__start {\n display: flex;\n align-items: center;\n flex-flow: wrap;\n // In case we wrap our items to multiple rows on small screens\n row-gap: 0;\n }\n\n .navbar-header-items__end,\n .navbar-header-items__center {\n column-gap: 1rem;\n }\n\n // A little smaller because this is displayed by default on mobile\n .navbar-header-items__start {\n flex-shrink: 0;\n margin-right: auto;\n gap: 0.5rem;\n }\n\n .navbar-header-items__end {\n // End navbar items should snap to the right\n justify-content: end;\n }\n\n // Contains the navigation links within the navbar\n .navbar-nav {\n display: flex;\n\n @include media-breakpoint-up($breakpoint-sidebar-primary) {\n // Center align on wide screens so the dropdown button is centered properly\n align-items: center;\n }\n\n li a.nav-link {\n @include link-style-text;\n }\n\n // Current page is always underlined in the navbar\n > .current > .nav-link {\n @include link-navbar-current;\n }\n\n // Dropdowns for the extra links\n .dropdown {\n button {\n display: unset;\n color: var(--pst-color-text-muted);\n border: none;\n @include link-style-hover;\n @include focus-indicator;\n }\n\n .dropdown-menu {\n z-index: $zindex-popover;\n border: 1px solid var(--pst-color-border);\n box-shadow: 0 0 0.3rem 0.1rem var(--pst-color-shadow);\n background-color: var(--pst-color-on-background);\n padding: 0.5rem 0;\n margin: 0.5rem 0;\n min-width: 20rem;\n\n .dropdown-item {\n // Give the items in the dropdown some breathing room but let the hit\n // and hover area of the items extend to the edges of the menu\n padding: 0.25rem 1.5rem;\n\n // Override Bootstrap\n &:focus:not(:hover):not(:active) {\n background-color: inherit;\n }\n }\n\n // Hide the menu unless show has been clicked\n &:not(.show) {\n display: none;\n }\n }\n }\n }\n}\n\n// inline the element in the navbar as long as they fit and use display block when collapsing\n@include media-breakpoint-up($breakpoint-sidebar-primary) {\n .navbar-center-items .navbar-item {\n display: inline-block;\n }\n}\n\n.nav-link {\n @include link-style-hover;\n\n // Override Bootstrap\n transition: none;\n\n &.nav-external:after {\n font: var(--fa-font-solid);\n content: var(--pst-icon-external-link);\n font-size: 0.75em;\n margin-left: 0.3em;\n }\n}\n\n.bd-navbar-elements li.nav-item i {\n font-size: 0.7rem;\n padding-left: 2px;\n vertical-align: middle;\n}\n\n/**\n * Showing and hiding the sidebar toggle buttons and header items\n */\n\n// Hide the header items on mobile\n.bd-header {\n // Toggle labels\n label {\n &.sidebar-toggle {\n display: flex;\n cursor: pointer;\n font-size: var(--pst-font-size-icon);\n align-items: center;\n color: var(--pst-color-muted);\n margin-bottom: 0;\n padding-bottom: 0.25rem;\n }\n\n &.primary-toggle {\n margin-right: 1rem;\n @include media-breakpoint-up($breakpoint-sidebar-primary) {\n display: none;\n }\n }\n\n &.secondary-toggle {\n margin-left: 1rem;\n @include media-breakpoint-up($breakpoint-sidebar-secondary) {\n display: none;\n }\n }\n @include icon-navbar-hover;\n @include focus-indicator;\n }\n\n // Hide the navbar header items on mobile because they're in the sidebar\n .navbar-header-items {\n display: none;\n @include media-breakpoint-up($breakpoint-sidebar-primary) {\n display: inherit;\n }\n }\n}\n\n// THe elements next to the hamburger menu only show on narrow screens\n.navbar-persistent--mobile {\n margin-left: auto;\n @include media-breakpoint-up($breakpoint-sidebar-primary) {\n display: none;\n }\n}\n\n// The navbar-persistent content should only show on wide screens\n.navbar-persistent--container {\n display: none;\n @include media-breakpoint-up($breakpoint-sidebar-primary) {\n display: flex;\n }\n}\n",".header-article__inner {\n display: flex;\n padding: 0 0.5rem;\n\n // The items define the height so that it disappears if there are no items\n .header-article-item {\n min-height: var(--pst-header-article-height);\n height: var(--pst-header-article-height);\n }\n\n .header-article-items__start,\n .header-article-items__end {\n display: flex;\n align-items: start;\n gap: 0.5rem;\n }\n\n .header-article-items__end {\n margin-left: auto;\n }\n}\n","/**\n * The primary sidebar on the left.\n * e.g., between-pages navigation.\n */\n\n.bd-sidebar-primary {\n display: flex;\n flex-direction: column;\n gap: 1rem;\n max-height: calc(100vh - var(--pst-header-height));\n position: sticky;\n top: var(--pst-header-height);\n @include make-col(3);\n\n // Borders padding and whitespace\n padding: 2rem 1rem 1rem 1rem;\n border-right: 1px solid var(--pst-color-border);\n background-color: var(--pst-color-background);\n overflow-y: auto;\n\n font-size: var(--pst-sidebar-font-size-mobile);\n @include media-breakpoint-up($breakpoint-sidebar-primary) {\n font-size: var(--pst-sidebar-font-size);\n }\n\n // override bootstrap when navlink are displayed in the sidebar\n .nav-link {\n font-size: var(--pst-sidebar-font-size-mobile);\n }\n\n &.no-sidebar {\n border-right: 0;\n }\n\n &.hide-on-wide {\n @include media-breakpoint-up($breakpoint-sidebar-primary) {\n display: none;\n }\n }\n\n // Headers shouldn't be colored in the sidebars and some extensions add headers\n h1,\n h2,\n h3,\n h4 {\n color: var(--pst-color-text-base);\n }\n\n .sidebar-primary-items__start,\n .sidebar-primary-items__end {\n .sidebar-primary-item {\n padding: 0.5rem 0;\n }\n }\n\n // Hide the sidebar header items on widescreen since they are visible in the header\n .sidebar-header-items {\n display: flex;\n flex-direction: column;\n\n .sidebar-header-items__title {\n font-weight: var(--pst-sidebar-header-font-weight);\n font-size: var(--pst-sidebar-header-font-size);\n color: var(--pst-color-text-base);\n margin-bottom: 0.5rem;\n }\n\n // The dropdown toggle for extra links just shows them all instead.\n .nav-item.dropdown {\n // On mobile, the dropdown behaves like any other link, no hiding\n button {\n display: none;\n }\n\n .dropdown-menu {\n display: flex;\n flex-direction: column;\n padding: 0;\n margin: 0;\n border: none;\n background-color: inherit;\n font-size: inherit;\n }\n }\n\n // Center header items get displayed vertically, end items are displayed horizontally\n .sidebar-header-items__center {\n display: flex;\n flex-direction: column;\n }\n\n // Positioning end items\n .sidebar-header-items__end {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n }\n\n @include media-breakpoint-up($breakpoint-sidebar-primary) {\n display: none;\n }\n }\n\n .sidebar-primary-items__start {\n // Add a border on mobile to separate it from the header sidebar area\n border-top: 1px solid var(--pst-color-border);\n @include media-breakpoint-up($breakpoint-sidebar-primary) {\n border-top: none;\n }\n }\n\n .sidebar-primary-items__end {\n margin-top: auto;\n margin-bottom: 1em;\n }\n .list-caption {\n list-style: none;\n padding-left: 0px;\n }\n li {\n position: relative;\n // If it has children, add a bit more padding to wrap the content to avoid\n // overlapping with the +
@@ -121,13 +121,21 @@ Ctrl+K + +
- + +
+
+ + + +
@@ -141,6 +149,7 @@ + +
- + +
+
+ + + +
@@ -141,6 +149,7 @@ + +
- + +
+
+ + + +
@@ -141,6 +149,7 @@ + +
- + +
+
+ + + +
@@ -140,6 +148,7 @@ + +
- + +
+
+ + + +
@@ -136,6 +144,7 @@ + +
- + +
+
+ + + +
@@ -138,6 +146,7 @@ + +
- + +
+
+ + + +
@@ -137,6 +145,7 @@ + +
- + +
+
+ + + +
@@ -138,6 +146,7 @@