diff --git a/previews/PR98/404.html b/previews/PR98/404.html new file mode 100644 index 0000000..93878e7 --- /dev/null +++ b/previews/PR98/404.html @@ -0,0 +1,29 @@ + + + + + + 404 | Boltz.jl Docs + + + + + + + + + + + + + + + + + + +
+ + + + \ No newline at end of file diff --git a/previews/PR98/api/basis.html b/previews/PR98/api/basis.html new file mode 100644 index 0000000..8d782b4 --- /dev/null +++ b/previews/PR98/api/basis.html @@ -0,0 +1,32 @@ + + + + + + Boltz.Basis API Reference | Boltz.jl Docs + + + + + + + + + + + + + + + + + + + + + +
Skip to content

Boltz.Basis API Reference

Warning

The function calls for these basis functions should be considered experimental and are subject to change without deprecation. However, the functions themselves are stable and can be freely used in combination with the other Layers and Models.

Boltz.Basis.Chebyshev Method
julia
Chebyshev(n; dim::Int=1)

Constructs a Chebyshev basis of the form [T0(x),T1(x),,Tn1(x)] where Tj(.) is the jth Chebyshev polynomial of the first kind.

Arguments

  • n: number of terms in the polynomial expansion.

Keyword Arguments

  • dim::Int=1: The dimension along which the basis functions are applied.

source

Boltz.Basis.Cos Method
julia
Cos(n; dim::Int=1)

Constructs a cosine basis of the form [cos(x),cos(2x),,cos(nx)].

Arguments

  • n: number of terms in the cosine expansion.

Keyword Arguments

  • dim::Int=1: The dimension along which the basis functions are applied.

source

Boltz.Basis.Fourier Method
julia
Fourier(n; dim=1)

Constructs a Fourier basis of the form

Fj(x)={cos(j2x)if j is evensin(j2x)if j is odd

Arguments

  • n: number of terms in the Fourier expansion.

Keyword Arguments

  • dim::Int=1: The dimension along which the basis functions are applied.

source

Boltz.Basis.Legendre Method
julia
Legendre(n; dim::Int=1)

Constructs a Legendre basis of the form [P0(x),P1(x),,Pn1(x)] where Pj(.) is the jth Legendre polynomial.

Arguments

  • n: number of terms in the polynomial expansion.

Keyword Arguments

  • dim::Int=1: The dimension along which the basis functions are applied.

source

Boltz.Basis.Polynomial Method
julia
Polynomial(n; dim::Int=1)

Constructs a Polynomial basis of the form [1,x,,x(n1)].

Arguments

  • n: number of terms in the polynomial expansion.

Keyword Arguments

  • dim::Int=1: The dimension along which the basis functions are applied.

source

Boltz.Basis.Sin Method
julia
Sin(n; dim::Int=1)

Constructs a sine basis of the form [sin(x),sin(2x),,sin(nx)].

Arguments

  • n: number of terms in the sine expansion.

Keyword Arguments

  • dim::Int=1: The dimension along which the basis functions are applied.

source

+ + + + \ No newline at end of file diff --git a/previews/PR98/api/index.html b/previews/PR98/api/index.html new file mode 100644 index 0000000..521f3c4 --- /dev/null +++ b/previews/PR98/api/index.html @@ -0,0 +1,32 @@ + + + + + + API Reference | Boltz.jl Docs + + + + + + + + + + + + + + + + + + + + + +
Skip to content
+ + + + \ No newline at end of file diff --git a/previews/PR98/api/layers.html b/previews/PR98/api/layers.html new file mode 100644 index 0000000..2e59e88 --- /dev/null +++ b/previews/PR98/api/layers.html @@ -0,0 +1,87 @@ + + + + + + Boltz.Layers API Reference | Boltz.jl Docs + + + + + + + + + + + + + + + + + + + + + +
Skip to content

Boltz.Layers API Reference


Boltz.Layers.ClassTokens Type
julia
ClassTokens(dim; init=zeros32)

Appends class tokens to an input with embedding dimension dim for use in many vision transformer models.

source

Boltz.Layers.ConvNormActivation Type
julia
ConvNormActivation(kernel_size::Dims, in_chs::Integer, hidden_chs::Dims{N},
+    activation; norm_layer=nothing, conv_kwargs=(;), norm_kwargs=(;),
+    last_layer_activation::Bool=false) where {N}

Construct a Chain of convolutional layers with normalization and activation functions.

Arguments

  • kernel_size: size of the convolutional kernel

  • in_chs: number of input channels

  • hidden_chs: dimensions of the hidden layers

  • activation: activation function

Keyword Arguments

  • norm_layer: Function with signature f(i::Integer, dims::Integer, act::F; kwargs...). i is the location of the layer in the model, dims is the channel dimension of the input, and act is the activation function. kwargs are forwarded from the norm_kwargs input, The function should return a normalization layer. Defaults to nothing, which means no normalization layer is used

  • conv_kwargs: keyword arguments for the convolutional layers

  • norm_kwargs: keyword arguments for the normalization layers

  • last_layer_activation: set to true to apply the activation function to the last layer

source

Boltz.Layers.DynamicExpressionsLayer Type
julia
DynamicExpressionsLayer(operator_enum::OperatorEnum, expressions::Node...;
+    eval_options::EvalOptions=EvalOptions())
+DynamicExpressionsLayer(operator_enum::OperatorEnum,
+    expressions::AbstractVector{<:Node}; kwargs...)

Wraps a DynamicExpressions.jl Node into a Lux layer and allows the constant nodes to be updated using any of the AD Backends.

For details about these expressions, refer to the DynamicExpressions.jl documentation.

Arguments

  • operator_enum: OperatorEnum from DynamicExpressions.jl

  • expressions: Node from DynamicExpressions.jl or AbstractVector{<:Node}

Keyword Arguments

  • turbo: Use LoopVectorization.jl for faster evaluation (Deprecated)

  • bumper: Use Bumper.jl for faster evaluation (Deprecated)

  • eval_options: EvalOptions from DynamicExpressions.jl

These options are simply forwarded to DynamicExpressions.jl's eval_tree_array and eval_grad_tree_array function.

Extended Help

Example

julia
julia> operators = OperatorEnum(; binary_operators=[+, -, *], unary_operators=[cos]);
+
+julia> x1 = Node(; feature=1);
+
+julia> x2 = Node(; feature=2);
+
+julia> expr_1 = x1 * cos(x2 - 3.2)
+x1 * cos(x2 - 3.2)
+
+julia> expr_2 = x2 - x1 * x2 + 2.5 - 1.0 * x1
+((x2 - (x1 * x2)) + 2.5) - (1.0 * x1)
+
+julia> layer = Layers.DynamicExpressionsLayer(operators, expr_1, expr_2);
+
+julia> ps, st = Lux.setup(Random.default_rng(), layer)
+((layer_1 = (layer_1 = (params = Float32[3.2],), layer_2 = (params = Float32[2.5, 1.0],)), layer_2 = NamedTuple()), (layer_1 = (layer_1 = NamedTuple(), layer_2 = NamedTuple()), layer_2 = NamedTuple()))
+
+julia> x = [1.0f0 2.0f0 3.0f0
+            4.0f0 5.0f0 6.0f0]
+2×3 Matrix{Float32}:
+ 1.0  2.0  3.0
+ 4.0  5.0  6.0
+
+julia> layer(x, ps, st)[1]  Float32[0.6967068 -0.4544041 -2.8266668; 1.5 -4.5 -12.5]
+true
+
+julia> ∂x, ∂ps, _ = Zygote.gradient(Base.Fix1(sum, abs2)  first  layer, x, ps, st);
+
+julia> ∂x  Float32[-14.0292 54.206482 180.32669; -0.9995737 10.7700815 55.6814]
+true
+
+julia> ∂ps.layer_1.layer_1.params  Float32[-6.451908]
+true
+
+julia> ∂ps.layer_1.layer_2.params  Float32[-31.0, 90.0]
+true

source

Boltz.Layers.HamiltonianNN Type
julia
HamiltonianNN{FST}(model; autodiff=nothing) where {FST}

Constructs a Hamiltonian Neural Network (Greydanus et al., 2019). This neural network is useful for learning symmetries and conservation laws by supervision on the gradients of the trajectories. It takes as input a concatenated vector of length 2n containing the position (of size n) and momentum (of size n) of the particles. It then returns the time derivatives for position and momentum.

Arguments

  • FST: If true, then the type of the state returned by the model must be same as the type of the input state. See the documentation on StatefulLuxLayer for more information.

  • model: A Lux.AbstractLuxLayer neural network that returns the Hamiltonian of the system. The model must return a "batched scalar", i.e. all the dimensions of the output except the last one must be equal to 1. The last dimension must be equal to the batchsize of the input.

Keyword Arguments

  • autodiff: The autodiff framework to be used for the internal Hamiltonian computation. The default is nothing, which selects the best possible backend available. The available options are AutoForwardDiff and AutoZygote.

Autodiff Backends

autodiffPackage NeededNotes
AutoZygoteZygote.jlPreferred Backend. Chosen if Zygote is loaded and autodiff is nothing.
AutoForwardDiffChosen if Zygote is not loaded and autodiff is nothing.

Note

This layer uses nested autodiff. Please refer to the manual entry on Nested Autodiff for more information and known limitations.

source

Boltz.Layers.MLP Type
julia
MLP(in_dims::Integer, hidden_dims::Dims{N}, activation=NNlib.relu; norm_layer=nothing,
+    dropout_rate::Real=0.0f0, dense_kwargs=(;), norm_kwargs=(;),
+    last_layer_activation=false) where {N}

Construct a multi-layer perceptron (MLP) with dense layers, optional normalization layers, and dropout.

Arguments

  • in_dims: number of input dimensions

  • hidden_dims: dimensions of the hidden layers

  • activation: activation function (stacked after the normalization layer, if present else after the dense layer)

Keyword Arguments

  • norm_layer: Function with signature f(i::Integer, dims::Integer, act::F; kwargs...). i is the location of the layer in the model, dims is the channel dimension of the input, and act is the activation function. kwargs are forwarded from the norm_kwargs input, The function should return a normalization layer. Defaults to nothing, which means no normalization layer is used

  • dropout_rate: dropout rate (default: 0.0f0)

  • dense_kwargs: keyword arguments for the dense layers

  • norm_kwargs: keyword arguments for the normalization layers

  • last_layer_activation: set to true to apply the activation function to the last layer

source

Boltz.Layers.MultiHeadSelfAttention Type
julia
MultiHeadSelfAttention(in_planes::Int, number_heads::Int; use_qkv_bias::Bool=false,
+    attention_dropout_rate::T=0.0f0, projection_dropout_rate::T=0.0f0)

Multi-head self-attention layer

Arguments

  • planes: number of input channels

  • nheads: number of heads

  • use_qkv_bias: whether to use bias in the layer to get the query, key and value

  • attn_dropout_prob: dropout probability after the self-attention layer

  • proj_dropout_prob: dropout probability after the projection layer

source

Boltz.Layers.PatchEmbedding Type
julia
PatchEmbedding(image_size, patch_size, in_channels, embed_planes;
+    norm_layer=Returns(Lux.NoOpLayer()), flatten=true)

Constructs a patch embedding layer with the given image size, patch size, input channels, and embedding planes. The patch size must be a divisor of the image size.

Arguments

  • image_size: image size as a tuple

  • patch_size: patch size as a tuple

  • in_channels: number of input channels

  • embed_planes: number of embedding planes

Keyword Arguments

  • norm_layer: Takes the embedding planes as input and returns a layer that normalizes the embedding planes. Defaults to no normalization.

  • flatten: set to true to flatten the output of the convolutional layer

source

Boltz.Layers.PeriodicEmbedding Type
julia
PeriodicEmbedding(idxs, periods)

Create an embedding periodic in some inputs with specified periods. Input indices not in idxs are passed through unchanged, but inputs in idxs are moved to the end of the output and replaced with their sines, followed by their cosines (scaled appropriately to have the specified periods). This smooth embedding preserves phase information and enforces periodicity.

For example, layer = PeriodicEmbedding([2, 3], [3.0, 1.0]) will create a layer periodic in the second input with period 3.0 and periodic in the third input with period 1.0. In this case, layer([a, b, c, d], st) == ([a, d, sinpi(2 / 3.0 * b), sinpi(2 / 1.0 * c), cospi(2 / 3.0 * b), cospi(2 / 1.0 * c)], st).

Arguments

  • idxs: Indices of the periodic inputs

  • periods: Periods of the periodic inputs, in the same order as in idxs

Inputs

  • x must be an AbstractArray with issubset(idxs, axes(x, 1))

  • st must be a NamedTuple where st.k = 2 ./ periods, but on the same device as x

Returns

  • AbstractArray of size (size(x, 1) + length(idxs), ...) where ... are the other dimensions of x.

  • st, unchanged

Example

julia
julia> layer = Layers.PeriodicEmbedding([2], [4.0])
+PeriodicEmbedding([2], [4.0])
+
+julia> ps, st = Lux.setup(Random.default_rng(), layer);
+
+julia> all(layer([1.1, 2.2, 3.3], ps, st)[1] .==
+           [1.1, 3.3, sinpi(2 / 4.0 * 2.2), cospi(2 / 4.0 * 2.2)])
+true

source

Boltz.Layers.SplineLayer Type
julia
SplineLayer(in_dims, grid_min, grid_max, grid_step, basis::Type{Basis};
+    train_grid::Union{Val, Bool}=Val(false), init_saved_points=nothing)

Constructs a spline layer with the given basis function.

Arguments

  • in_dims: input dimensions of the layer. This must be a tuple of integers, to construct a flat vector of saved_points pass in ().

  • grid_min: minimum value of the grid.

  • grid_max: maximum value of the grid.

  • grid_step: step size of the grid.

  • basis: basis function to use for the interpolation. Currently only the basis functions from DataInterpolations.jl are supported:

    1. ConstantInterpolation

    2. LinearInterpolation

    3. QuadraticInterpolation

    4. QuadraticSpline

    5. CubicSpline

Keyword Arguments

  • train_grid: whether to train the grid or not.

  • init_saved_points: values of the function at multiples of the time step. Initialized by default to a random vector sampled from the unit normal. Alternatively, can take a function with the signature init_saved_points(rng, in_dims, grid_min, grid_max, grid_step).

Warning

Currently this layer is limited since it relies on DataInterpolations.jl which doesn't work with GPU arrays. This will be fixed in the future by extending support to different basis functions.

source

Boltz.Layers.TensorProductLayer Type
julia
TensorProductLayer(basis_fns, out_dim::Int; init_weight = randn32)

Constructs the Tensor Product Layer, which takes as input an array of n tensor product basis, [B1,B2,,Bn] a data point x, computes

zi=Wi,:[B1(x1)B2(x2)Bn(xn)]

where W is the layer's weight, and returns [z1,,zout].

Arguments

  • basis_fns: Array of TensorProductBasis [B1(n1),,Bk(nk)], where k corresponds to the dimension of the input.

  • out_dim: Dimension of the output.

Keyword Arguments

  • init_weight: Initializer for the weight matrix. Defaults to randn32.

Limited Backend Support

Support for backends apart from CPU and CUDA is limited and slow due to limited support for kron in the backend.

source

Boltz.Layers.ViPosEmbedding Type
julia
ViPosEmbedding(embedding_size, number_patches; init = randn32)

Positional embedding layer used by many vision transformer-like models.

source

Boltz.Layers.VisionTransformerEncoder Type
julia
VisionTransformerEncoder(in_planes, depth, number_heads; mlp_ratio = 4.0f0,
+    dropout = 0.0f0)

Transformer as used in the base ViT architecture (Dosovitskiy et al., 2020).

Arguments

  • in_planes: number of input channels

  • depth: number of attention blocks

  • number_heads: number of attention heads

Keyword Arguments

  • mlp_ratio: ratio of MLP layers to the number of input channels

  • dropout_rate: dropout rate

source

Boltz.Layers.ConvBatchNormActivation Method
julia
ConvBatchNormActivation(kernel_size::Dims, (in_filters, out_filters)::Pair{Int, Int},
+    depth::Int, act::F; use_norm::Bool=true, conv_kwargs=(;),
+    last_layer_activation::Bool=true, norm_kwargs=(;)) where {F}

This function is a convenience wrapper around ConvNormActivation that constructs a chain with norm_layer set to Lux.BatchNorm if use_norm is true and nothing otherwise. In most cases, users should use ConvNormActivation directly for a more flexible interface.

source


Bibliography

  • Dosovitskiy, A.; Beyer, L.; Kolesnikov, A.; Weissenborn, D.; Zhai, X.; Unterthiner, T.; Dehghani, M.; Minderer, M.; Heigold, G.; Gelly, S. and others (2020). An image is worth 16x16 words: Transformers for image recognition at scale, arXiv preprint arXiv:2010.11929.

  • Greydanus, S.; Dzamba, M. and Yosinski, J. (2019). Hamiltonian neural networks. Advances in neural information processing systems 32.

+ + + + \ No newline at end of file diff --git a/previews/PR98/api/private.html b/previews/PR98/api/private.html new file mode 100644 index 0000000..35620e4 --- /dev/null +++ b/previews/PR98/api/private.html @@ -0,0 +1,32 @@ + + + + + + Private API | Boltz.jl Docs + + + + + + + + + + + + + + + + + + + + + +
Skip to content

Private API

This is the private API reference for Boltz.jl. You know what this means. Don't use these functions!

Boltz.Utils.fast_chunk Method
julia
fast_chunk(x::AbstractArray, ::Val{n}, ::Val{dim})

Type-stable and faster version of MLUtils.chunk.

source

Boltz.Utils.flatten_spatial Method
julia
flatten_spatial(x::AbstractArray{T, 4})

Flattens the first 2 dimensions of x, and permutes the remaining dimensions to (2, 1, 3).

source

Boltz.Utils.second_dim_mean Method
julia
second_dim_mean(x)

Computes the mean of x along dimension 2.

source

Boltz.Utils.should_type_assert Method
julia
should_type_assert(x)

In certain cases, to ensure type-stability we want to add type-asserts. But this won't work for exotic types like ForwardDiff.Dual. We use this function to check if we should add a type-assert for x.

source

+ + + + \ No newline at end of file diff --git a/previews/PR98/api/vision.html b/previews/PR98/api/vision.html new file mode 100644 index 0000000..7ee112b --- /dev/null +++ b/previews/PR98/api/vision.html @@ -0,0 +1,32 @@ + + + + + + Computer Vision Models (Vision API) | Boltz.jl Docs + + + + + + + + + + + + + + + + + + + + + +
Skip to content

Computer Vision Models (Vision API)

Native Lux Models

Boltz.Vision.AlexNet Type
julia
AlexNet(; kwargs...)

Create an AlexNet model (Krizhevsky et al., 2012).

Keyword Arguments

  • pretrained::Bool=false: If true, loads pretrained weights when LuxCore.setup is called.

source

Boltz.Vision.VGG Type
julia
VGG(imsize; config, inchannels, batchnorm = false, nclasses, fcsize, dropout)

Create a VGG model (Simonyan, 2014).

Arguments

  • imsize: input image width and height as a tuple

  • config: the configuration for the convolution layers

  • inchannels: number of input channels

  • batchnorm: set to true to use batch normalization after each convolution

  • nclasses: number of output classes

  • fcsize: intermediate fully connected layer size

  • dropout: dropout level between fully connected layers

source

julia
VGG(depth::Int; batchnorm::Bool=false, pretrained::Bool=false)

Create a VGG model (Simonyan, 2014) with ImageNet Configuration.

Arguments

  • depth::Int: the depth of the VGG model. Choices: {11, 13, 16, 19}.

Keyword Arguments

  • batchnorm = false: set to true to use batch normalization after each convolution.

  • pretrained::Bool=false: If true, loads pretrained weights when LuxCore.setup is called.

source

Boltz.Vision.VisionTransformer Type
julia
VisionTransformer(name::Symbol; pretrained=false)

Creates a Vision Transformer model with the specified configuration.

Arguments

  • name::Symbol: name of the Vision Transformer model to create. The following models are available – :tiny, :small, :base, :large, :huge, :giant, :gigantic.

Keyword Arguments

  • pretrained::Bool=false: If true, loads pretrained weights when LuxCore.setup is called.

source

Imported from Metalhead.jl

Load Metalhead

You need to load Metalhead before using these models.

Boltz.Vision.ConvMixer Function
julia
ConvMixer(name::Symbol; pretrained::Bool=false)

Create a ConvMixer model (Trockman and Kolter, 2022).

Arguments

  • name::Symbol: The name of the ConvMixer model. Must be one of :base, :small, or :large.

Keyword Arguments

  • pretrained::Bool=false: If true, loads pretrained weights when LuxCore.setup is called.

source

Boltz.Vision.DenseNet Function
julia
DenseNet(depth::Int; pretrained::Bool=false)

Create a DenseNet model (Huang et al., 2017).

Arguments

  • depth::Int: The depth of the DenseNet model. Must be one of 121, 161, 169, or 201.

Keyword Arguments

  • pretrained::Bool=false: If true, loads pretrained weights when LuxCore.setup is called.

source

Boltz.Vision.GoogLeNet Function
julia
GoogLeNet(; pretrained::Bool=false)

Create a GoogLeNet model (Szegedy et al., 2015).

Keyword Arguments

  • pretrained::Bool=false: If true, loads pretrained weights when LuxCore.setup is called.

source

Boltz.Vision.MobileNet Function
julia
MobileNet(name::Symbol; pretrained::Bool=false)

Create a MobileNet model (Howard, 2017; Sandler et al., 2018; Howard et al., 2019).

Arguments

  • name::Symbol: The name of the MobileNet model. Must be one of :v1, :v2, :v3_small, or :v3_large.

Keyword Arguments

  • pretrained::Bool=false: If true, loads pretrained weights when LuxCore.setup is called.

source

Boltz.Vision.ResNet Function
julia
ResNet(depth::Int; pretrained::Bool=false)

Create a ResNet model (He et al., 2016).

Arguments

  • depth::Int: The depth of the ResNet model. Must be one of 18, 34, 50, 101, or 152.

Keyword Arguments

  • pretrained::Bool=false: If true, loads pretrained weights when LuxCore.setup is called.

source

Boltz.Vision.ResNeXt Function
julia
ResNeXt(depth::Int; cardinality=32, base_width=nothing, pretrained::Bool=false)

Create a ResNeXt model (Xie et al., 2017).

Arguments

  • depth::Int: The depth of the ResNeXt model. Must be one of 50, 101, or 152.

Keyword Arguments

  • pretrained::Bool=false: If true, loads pretrained weights when LuxCore.setup is called.

  • cardinality: The cardinality of the ResNeXt model. Defaults to 32.

  • base_width: The base width of the ResNeXt model. Defaults to 8 for depth 101 and 4 otherwise.

source

Boltz.Vision.SqueezeNet Function
julia
SqueezeNet(; pretrained::Bool=false)

Create a SqueezeNet model (Iandola et al., 2016).

Keyword Arguments

  • pretrained::Bool=false: If true, loads pretrained weights when LuxCore.setup is called.

source

Boltz.Vision.WideResNet Function
julia
WideResNet(depth::Int; pretrained::Bool=false)

Create a WideResNet model (Zagoruyko and Komodakis, 2017).

Arguments

  • depth::Int: The depth of the WideResNet model. Must be one of 18, 34, 50, 101, or 152.

Keyword Arguments

  • pretrained::Bool=false: If true, loads pretrained weights when LuxCore.setup is called.

source

Pretrained Models

Load JLD2

You need to load JLD2 before being able to load pretrained weights.

Load Pretrained Weights

Pass pretrained=true to the model constructor to load the pretrained weights.

MODELTOP 1 ACCURACY (%)TOP 5 ACCURACY (%)
AlexNet()54.4877.72
VGG(11)67.3587.91
VGG(13)68.4088.48
VGG(16)70.2489.80
VGG(19)71.0990.27
VGG(11; batchnorm=true)69.0988.94
VGG(13; batchnorm=true)69.6689.49
VGG(16; batchnorm=true)72.1191.02
VGG(19; batchnorm=true)72.9591.32
ResNet(18)--
ResNet(34)--
ResNet(50)--
ResNet(101)--
ResNet(152)--
ResNeXt(50; cardinality=32, base_width=4)--
ResNeXt(101; cardinality=32, base_width=8)--
ResNeXt(101; cardinality=64, base_width=4)--
SqueezeNet()--
WideResNet(50)--
WideResNet(101)--

Pretrained Models from Metalhead

For Models imported from Metalhead, the pretrained weights can be loaded if they are available in Metalhead. Refer to the Metalhead.jl docs for a list of available pretrained models.

Preprocessing

All the pretrained models require that the images be normalized with the parameters mean = [0.485f0, 0.456f0, 0.406f0] and std = [0.229f0, 0.224f0, 0.225f0].


Bibliography

  • He, K.; Zhang, X.; Ren, S. and Sun, J. (2016). Deep residual learning for image recognition. In: Proceedings of the IEEE conference on computer vision and pattern recognition; pp. 770–778.

  • Howard, A.; Sandler, M.; Chu, G.; Chen, L.-C.; Chen, B.; Tan, M.; Wang, W.; Zhu, Y.; Pang, R.; Vasudevan, V. and others (2019). Searching for mobilenetv3. In: Proceedings of the IEEE/CVF international conference on computer vision; pp. 1314–1324.

  • Howard, A. G. (2017). MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications, arXiv preprint arXiv:1704.04861.

  • Huang, G.; Liu, Z.; Van Der Maaten, L. and Weinberger, K. Q. (2017). Densely connected convolutional networks. In: Proceedings of the IEEE conference on computer vision and pattern recognition; pp. 4700–4708.

  • Iandola, F. N.; Han, S.; Moskewicz, M. W.; Ashraf, K.; Dally, W. J. and Keutzer, K. (2016). SqueezeNet: AlexNet-level accuracy with 50x fewer parameters and <0.5MB model size, arXiv:1602.07360 [cs.CV].

  • Krizhevsky, A.; Sutskever, I. and Hinton, G. E. (2012). Imagenet classification with deep convolutional neural networks. Advances in neural information processing systems 25.

  • Sandler, M.; Howard, A.; Zhu, M.; Zhmoginov, A. and Chen, L.-C. (2018). Mobilenetv2: Inverted residuals and linear bottlenecks. In: Proceedings of the IEEE conference on computer vision and pattern recognition; pp. 4510–4520.

  • Simonyan, K. (2014). Very deep convolutional networks for large-scale image recognition, arXiv preprint arXiv:1409.1556.

  • Szegedy, C.; Liu, W.; Jia, Y.; Sermanet, P.; Reed, S.; Anguelov, D.; Erhan, D.; Vanhoucke, V. and Rabinovich, A. (2015). Going deeper with convolutions. In: Proceedings of the IEEE conference on computer vision and pattern recognition; pp. 1–9.

  • Trockman, A. and Kolter, J. Z. (2022). Patches are all you need? arXiv preprint arXiv:2201.09792.

  • Xie, S.; Girshick, R.; Dollár, P.; Tu, Z. and He, K. (2017). Aggregated residual transformations for deep neural networks. In: Proceedings of the IEEE conference on computer vision and pattern recognition; pp. 1492–1500.

  • Zagoruyko, S. and Komodakis, N. (2017). Wide Residual Networks, arXiv:1605.07146 [cs.CV].

+ + + + \ No newline at end of file diff --git a/previews/PR98/assets/api_basis.md.D9oO8cm0.js b/previews/PR98/assets/api_basis.md.D9oO8cm0.js new file mode 100644 index 0000000..1f9bb8c --- /dev/null +++ b/previews/PR98/assets/api_basis.md.D9oO8cm0.js @@ -0,0 +1 @@ +import{_ as o,c as s,j as t,a as Q,G as n,a2 as a,B as d,o as e}from"./chunks/framework.BI0fNMXE.js";const O=JSON.parse('{"title":"Boltz.Basis API Reference","description":"","frontmatter":{},"headers":[],"relativePath":"api/basis.md","filePath":"api/basis.md","lastUpdated":null}'),r={name:"api/basis.md"},m={class:"jldocstring custom-block",open:""},i={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},h={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"25.599ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 11314.7 1000","aria-hidden":"true"},p={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},g={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.666ex"},xmlns:"http://www.w3.org/2000/svg",width:"4.934ex",height:"2.363ex",role:"img",focusable:"false",viewBox:"0 -750 2181 1044.2","aria-hidden":"true"},H={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},u={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.462ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.619ex",height:"2.393ex",role:"img",focusable:"false",viewBox:"0 -853.7 1157.6 1057.7","aria-hidden":"true"},k={class:"jldocstring custom-block",open:""},w={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},y={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"28.038ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 12392.7 1000","aria-hidden":"true"},f={class:"jldocstring custom-block",open:""},c={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},x={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-3.731ex"},xmlns:"http://www.w3.org/2000/svg",width:"31.946ex",height:"8.593ex",role:"img",focusable:"false",viewBox:"0 -2149 14120.1 3798","aria-hidden":"true"},V={class:"jldocstring custom-block",open:""},L={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},M={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"25.993ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 11488.7 1000","aria-hidden":"true"},b={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},Z={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.666ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.066ex",height:"2.363ex",role:"img",focusable:"false",viewBox:"0 -750 2239 1044.2","aria-hidden":"true"},v={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},C={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.462ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.619ex",height:"2.393ex",role:"img",focusable:"false",viewBox:"0 -853.7 1157.6 1057.7","aria-hidden":"true"},j={class:"jldocstring custom-block",open:""},A={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},D={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"15.461ex",height:"2.587ex",role:"img",focusable:"false",viewBox:"0 -893.3 6833.7 1143.3","aria-hidden":"true"},B={class:"jldocstring custom-block",open:""},_={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},E={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"27.291ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 12062.7 1000","aria-hidden":"true"};function S(F,T,P,I,R,N){const l=d("Badge");return e(),s("div",null,[T[82]||(T[82]=t("h1",{id:"Boltz.Basis-API-Reference",tabindex:"-1"},[t("code",null,"Boltz.Basis"),Q(" API Reference "),t("a",{class:"header-anchor",href:"#Boltz.Basis-API-Reference","aria-label":'Permalink to "`Boltz.Basis` API Reference {#Boltz.Basis-API-Reference}"'},"​")],-1)),T[83]||(T[83]=t("div",{class:"warning custom-block"},[t("p",{class:"custom-block-title"},"Warning"),t("p",null,"The function calls for these basis functions should be considered experimental and are subject to change without deprecation. However, the functions themselves are stable and can be freely used in combination with the other Layers and Models.")],-1)),t("details",m,[t("summary",null,[T[0]||(T[0]=t("a",{id:"Boltz.Basis.Chebyshev-Tuple{Any}",href:"#Boltz.Basis.Chebyshev-Tuple{Any}"},[t("span",{class:"jlbinding"},"Boltz.Basis.Chebyshev")],-1)),T[1]||(T[1]=Q()),n(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),T[12]||(T[12]=a('
julia
Chebyshev(n; dim::Int=1)
',1)),t("p",null,[T[8]||(T[8]=Q("Constructs a Chebyshev basis of the form ")),t("mjx-container",i,[(e(),s("svg",h,T[2]||(T[2]=[a('',1)]))),T[3]||(T[3]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mo",{stretchy:"false"},"["),t("msub",null,[t("mi",null,"T"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mn",null,"0")])]),t("mo",{stretchy:"false"},"("),t("mi",null,"x"),t("mo",{stretchy:"false"},")"),t("mo",null,","),t("msub",null,[t("mi",null,"T"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mn",null,"1")])]),t("mo",{stretchy:"false"},"("),t("mi",null,"x"),t("mo",{stretchy:"false"},")"),t("mo",null,","),t("mo",null,"…"),t("mo",null,","),t("msub",null,[t("mi",null,"T"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"n"),t("mo",null,"−"),t("mn",null,"1")])]),t("mo",{stretchy:"false"},"("),t("mi",null,"x"),t("mo",{stretchy:"false"},")"),t("mo",{stretchy:"false"},"]")])],-1))]),T[9]||(T[9]=Q(" where ")),t("mjx-container",p,[(e(),s("svg",g,T[4]||(T[4]=[a('',1)]))),T[5]||(T[5]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"T"),t("mi",null,"j")]),t("mo",{stretchy:"false"},"("),t("mo",null,"."),t("mo",{stretchy:"false"},")")])],-1))]),T[10]||(T[10]=Q(" is the ")),t("mjx-container",H,[(e(),s("svg",u,T[6]||(T[6]=[a('',1)]))),T[7]||(T[7]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msup",null,[t("mi",null,"j"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"t"),t("mi",null,"h")])])])],-1))]),T[11]||(T[11]=Q(" Chebyshev polynomial of the first kind."))]),T[13]||(T[13]=t("p",null,[t("strong",null,"Arguments")],-1)),T[14]||(T[14]=t("ul",null,[t("li",null,[t("code",null,"n"),Q(": number of terms in the polynomial expansion.")])],-1)),T[15]||(T[15]=t("p",null,[t("strong",null,"Keyword Arguments")],-1)),T[16]||(T[16]=t("ul",null,[t("li",null,[t("code",null,"dim::Int=1"),Q(": The dimension along which the basis functions are applied.")])],-1)),T[17]||(T[17]=t("p",null,[t("a",{href:"https://github.com/LuxDL/Boltz.jl/blob/6562f7afdce5b360ef02bce0937da69b6a04d2b3/src/basis.jl#L49",target:"_blank",rel:"noreferrer"},"source")],-1))]),t("details",k,[t("summary",null,[T[18]||(T[18]=t("a",{id:"Boltz.Basis.Cos-Tuple{Any}",href:"#Boltz.Basis.Cos-Tuple{Any}"},[t("span",{class:"jlbinding"},"Boltz.Basis.Cos")],-1)),T[19]||(T[19]=Q()),n(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),T[24]||(T[24]=a('
julia
Cos(n; dim::Int=1)
',1)),t("p",null,[T[22]||(T[22]=Q("Constructs a cosine basis of the form ")),t("mjx-container",w,[(e(),s("svg",y,T[20]||(T[20]=[a('',1)]))),T[21]||(T[21]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mo",{stretchy:"false"},"["),t("mi",null,"cos"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mo",{stretchy:"false"},"("),t("mi",null,"x"),t("mo",{stretchy:"false"},")"),t("mo",null,","),t("mi",null,"cos"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mo",{stretchy:"false"},"("),t("mn",null,"2"),t("mi",null,"x"),t("mo",{stretchy:"false"},")"),t("mo",null,","),t("mo",null,"…"),t("mo",null,","),t("mi",null,"cos"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mo",{stretchy:"false"},"("),t("mi",null,"n"),t("mi",null,"x"),t("mo",{stretchy:"false"},")"),t("mo",{stretchy:"false"},"]")])],-1))]),T[23]||(T[23]=Q("."))]),T[25]||(T[25]=t("p",null,[t("strong",null,"Arguments")],-1)),T[26]||(T[26]=t("ul",null,[t("li",null,[t("code",null,"n"),Q(": number of terms in the cosine expansion.")])],-1)),T[27]||(T[27]=t("p",null,[t("strong",null,"Keyword Arguments")],-1)),T[28]||(T[28]=t("ul",null,[t("li",null,[t("code",null,"dim::Int=1"),Q(": The dimension along which the basis functions are applied.")])],-1)),T[29]||(T[29]=t("p",null,[t("a",{href:"https://github.com/LuxDL/Boltz.jl/blob/6562f7afdce5b360ef02bce0937da69b6a04d2b3/src/basis.jl#L84",target:"_blank",rel:"noreferrer"},"source")],-1))]),t("details",f,[t("summary",null,[T[30]||(T[30]=t("a",{id:"Boltz.Basis.Fourier-Tuple{Any}",href:"#Boltz.Basis.Fourier-Tuple{Any}"},[t("span",{class:"jlbinding"},"Boltz.Basis.Fourier")],-1)),T[31]||(T[31]=Q()),n(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),T[34]||(T[34]=a('
julia
Fourier(n; dim=1)

Constructs a Fourier basis of the form

',2)),t("mjx-container",c,[(e(),s("svg",x,T[32]||(T[32]=[a('',1)]))),T[33]||(T[33]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("msub",null,[t("mi",null,"F"),t("mi",null,"j")]),t("mo",{stretchy:"false"},"("),t("mi",null,"x"),t("mo",{stretchy:"false"},")"),t("mo",null,"="),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"{"),t("mtable",{columnalign:"left left",columnspacing:"1em",rowspacing:".2em"},[t("mtr",null,[t("mtd",null,[t("mi",null,"c"),t("mi",null,"o"),t("mi",null,"s"),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"("),t("mfrac",null,[t("mi",null,"j"),t("mn",null,"2")]),t("mi",null,"x"),t("mo",{"data-mjx-texclass":"CLOSE"},")")])]),t("mtd",null,[t("mtext",null,"if "),t("mi",null,"j"),t("mtext",null," is even")])]),t("mtr",null,[t("mtd",null,[t("mi",null,"s"),t("mi",null,"i"),t("mi",null,"n"),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"("),t("mfrac",null,[t("mi",null,"j"),t("mn",null,"2")]),t("mi",null,"x"),t("mo",{"data-mjx-texclass":"CLOSE"},")")])]),t("mtd",null,[t("mtext",null,"if "),t("mi",null,"j"),t("mtext",null," is odd")])])]),t("mo",{"data-mjx-texclass":"CLOSE",fence:"true",stretchy:"true",symmetric:"true"})])])],-1))]),T[35]||(T[35]=t("p",null,[t("strong",null,"Arguments")],-1)),T[36]||(T[36]=t("ul",null,[t("li",null,[t("code",null,"n"),Q(": number of terms in the Fourier expansion.")])],-1)),T[37]||(T[37]=t("p",null,[t("strong",null,"Keyword Arguments")],-1)),T[38]||(T[38]=t("ul",null,[t("li",null,[t("code",null,"dim::Int=1"),Q(": The dimension along which the basis functions are applied.")])],-1)),T[39]||(T[39]=t("p",null,[t("a",{href:"https://github.com/LuxDL/Boltz.jl/blob/6562f7afdce5b360ef02bce0937da69b6a04d2b3/src/basis.jl#L101",target:"_blank",rel:"noreferrer"},"source")],-1))]),t("details",V,[t("summary",null,[T[40]||(T[40]=t("a",{id:"Boltz.Basis.Legendre-Tuple{Any}",href:"#Boltz.Basis.Legendre-Tuple{Any}"},[t("span",{class:"jlbinding"},"Boltz.Basis.Legendre")],-1)),T[41]||(T[41]=Q()),n(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),T[52]||(T[52]=a('
julia
Legendre(n; dim::Int=1)
',1)),t("p",null,[T[48]||(T[48]=Q("Constructs a Legendre basis of the form ")),t("mjx-container",L,[(e(),s("svg",M,T[42]||(T[42]=[a('',1)]))),T[43]||(T[43]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mo",{stretchy:"false"},"["),t("msub",null,[t("mi",null,"P"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mn",null,"0")])]),t("mo",{stretchy:"false"},"("),t("mi",null,"x"),t("mo",{stretchy:"false"},")"),t("mo",null,","),t("msub",null,[t("mi",null,"P"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mn",null,"1")])]),t("mo",{stretchy:"false"},"("),t("mi",null,"x"),t("mo",{stretchy:"false"},")"),t("mo",null,","),t("mo",null,"…"),t("mo",null,","),t("msub",null,[t("mi",null,"P"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"n"),t("mo",null,"−"),t("mn",null,"1")])]),t("mo",{stretchy:"false"},"("),t("mi",null,"x"),t("mo",{stretchy:"false"},")"),t("mo",{stretchy:"false"},"]")])],-1))]),T[49]||(T[49]=Q(" where ")),t("mjx-container",b,[(e(),s("svg",Z,T[44]||(T[44]=[a('',1)]))),T[45]||(T[45]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"P"),t("mi",null,"j")]),t("mo",{stretchy:"false"},"("),t("mo",null,"."),t("mo",{stretchy:"false"},")")])],-1))]),T[50]||(T[50]=Q(" is the ")),t("mjx-container",v,[(e(),s("svg",C,T[46]||(T[46]=[a('',1)]))),T[47]||(T[47]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msup",null,[t("mi",null,"j"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"t"),t("mi",null,"h")])])])],-1))]),T[51]||(T[51]=Q(" Legendre polynomial."))]),T[53]||(T[53]=t("p",null,[t("strong",null,"Arguments")],-1)),T[54]||(T[54]=t("ul",null,[t("li",null,[t("code",null,"n"),Q(": number of terms in the polynomial expansion.")])],-1)),T[55]||(T[55]=t("p",null,[t("strong",null,"Keyword Arguments")],-1)),T[56]||(T[56]=t("ul",null,[t("li",null,[t("code",null,"dim::Int=1"),Q(": The dimension along which the basis functions are applied.")])],-1)),T[57]||(T[57]=t("p",null,[t("a",{href:"https://github.com/LuxDL/Boltz.jl/blob/6562f7afdce5b360ef02bce0937da69b6a04d2b3/src/basis.jl#L140",target:"_blank",rel:"noreferrer"},"source")],-1))]),t("details",j,[t("summary",null,[T[58]||(T[58]=t("a",{id:"Boltz.Basis.Polynomial-Tuple{Any}",href:"#Boltz.Basis.Polynomial-Tuple{Any}"},[t("span",{class:"jlbinding"},"Boltz.Basis.Polynomial")],-1)),T[59]||(T[59]=Q()),n(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),T[64]||(T[64]=a('
julia
Polynomial(n; dim::Int=1)
',1)),t("p",null,[T[62]||(T[62]=Q("Constructs a Polynomial basis of the form ")),t("mjx-container",A,[(e(),s("svg",D,T[60]||(T[60]=[a('',1)]))),T[61]||(T[61]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mo",{stretchy:"false"},"["),t("mn",null,"1"),t("mo",null,","),t("mi",null,"x"),t("mo",null,","),t("mo",null,"…"),t("mo",null,","),t("msup",null,[t("mi",null,"x"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mo",{stretchy:"false"},"("),t("mi",null,"n"),t("mo",null,"−"),t("mn",null,"1"),t("mo",{stretchy:"false"},")")])]),t("mo",{stretchy:"false"},"]")])],-1))]),T[63]||(T[63]=Q("."))]),T[65]||(T[65]=t("p",null,[t("strong",null,"Arguments")],-1)),T[66]||(T[66]=t("ul",null,[t("li",null,[t("code",null,"n"),Q(": number of terms in the polynomial expansion.")])],-1)),T[67]||(T[67]=t("p",null,[t("strong",null,"Keyword Arguments")],-1)),T[68]||(T[68]=t("ul",null,[t("li",null,[t("code",null,"dim::Int=1"),Q(": The dimension along which the basis functions are applied.")])],-1)),T[69]||(T[69]=t("p",null,[t("a",{href:"https://github.com/LuxDL/Boltz.jl/blob/6562f7afdce5b360ef02bce0937da69b6a04d2b3/src/basis.jl#L172",target:"_blank",rel:"noreferrer"},"source")],-1))]),t("details",B,[t("summary",null,[T[70]||(T[70]=t("a",{id:"Boltz.Basis.Sin-Tuple{Any}",href:"#Boltz.Basis.Sin-Tuple{Any}"},[t("span",{class:"jlbinding"},"Boltz.Basis.Sin")],-1)),T[71]||(T[71]=Q()),n(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),T[76]||(T[76]=a('
julia
Sin(n; dim::Int=1)
',1)),t("p",null,[T[74]||(T[74]=Q("Constructs a sine basis of the form ")),t("mjx-container",_,[(e(),s("svg",E,T[72]||(T[72]=[a('',1)]))),T[73]||(T[73]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mo",{stretchy:"false"},"["),t("mi",null,"sin"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mo",{stretchy:"false"},"("),t("mi",null,"x"),t("mo",{stretchy:"false"},")"),t("mo",null,","),t("mi",null,"sin"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mo",{stretchy:"false"},"("),t("mn",null,"2"),t("mi",null,"x"),t("mo",{stretchy:"false"},")"),t("mo",null,","),t("mo",null,"…"),t("mo",null,","),t("mi",null,"sin"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mo",{stretchy:"false"},"("),t("mi",null,"n"),t("mi",null,"x"),t("mo",{stretchy:"false"},")"),t("mo",{stretchy:"false"},"]")])],-1))]),T[75]||(T[75]=Q("."))]),T[77]||(T[77]=t("p",null,[t("strong",null,"Arguments")],-1)),T[78]||(T[78]=t("ul",null,[t("li",null,[t("code",null,"n"),Q(": number of terms in the sine expansion.")])],-1)),T[79]||(T[79]=t("p",null,[t("strong",null,"Keyword Arguments")],-1)),T[80]||(T[80]=t("ul",null,[t("li",null,[t("code",null,"dim::Int=1"),Q(": The dimension along which the basis functions are applied.")])],-1)),T[81]||(T[81]=t("p",null,[t("a",{href:"https://github.com/LuxDL/Boltz.jl/blob/6562f7afdce5b360ef02bce0937da69b6a04d2b3/src/basis.jl#L67",target:"_blank",rel:"noreferrer"},"source")],-1))])])}const G=o(r,[["render",S]]);export{O as __pageData,G as default}; diff --git a/previews/PR98/assets/api_basis.md.D9oO8cm0.lean.js b/previews/PR98/assets/api_basis.md.D9oO8cm0.lean.js new file mode 100644 index 0000000..6c500a3 --- /dev/null +++ b/previews/PR98/assets/api_basis.md.D9oO8cm0.lean.js @@ -0,0 +1 @@ +import{_ as o,c as s,j as t,a as Q,G as n,a2 as a,B as d,o as e}from"./chunks/framework.BI0fNMXE.js";const O=JSON.parse('{"title":"Boltz.Basis API Reference","description":"","frontmatter":{},"headers":[],"relativePath":"api/basis.md","filePath":"api/basis.md","lastUpdated":null}'),r={name:"api/basis.md"},m={class:"jldocstring custom-block",open:""},i={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},h={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"25.599ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 11314.7 1000","aria-hidden":"true"},p={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},g={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.666ex"},xmlns:"http://www.w3.org/2000/svg",width:"4.934ex",height:"2.363ex",role:"img",focusable:"false",viewBox:"0 -750 2181 1044.2","aria-hidden":"true"},H={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},u={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.462ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.619ex",height:"2.393ex",role:"img",focusable:"false",viewBox:"0 -853.7 1157.6 1057.7","aria-hidden":"true"},k={class:"jldocstring custom-block",open:""},w={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},y={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"28.038ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 12392.7 1000","aria-hidden":"true"},f={class:"jldocstring custom-block",open:""},c={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},x={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-3.731ex"},xmlns:"http://www.w3.org/2000/svg",width:"31.946ex",height:"8.593ex",role:"img",focusable:"false",viewBox:"0 -2149 14120.1 3798","aria-hidden":"true"},V={class:"jldocstring custom-block",open:""},L={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},M={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"25.993ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 11488.7 1000","aria-hidden":"true"},b={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},Z={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.666ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.066ex",height:"2.363ex",role:"img",focusable:"false",viewBox:"0 -750 2239 1044.2","aria-hidden":"true"},v={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},C={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.462ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.619ex",height:"2.393ex",role:"img",focusable:"false",viewBox:"0 -853.7 1157.6 1057.7","aria-hidden":"true"},j={class:"jldocstring custom-block",open:""},A={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},D={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"15.461ex",height:"2.587ex",role:"img",focusable:"false",viewBox:"0 -893.3 6833.7 1143.3","aria-hidden":"true"},B={class:"jldocstring custom-block",open:""},_={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},E={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"27.291ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 12062.7 1000","aria-hidden":"true"};function S(F,T,P,I,R,N){const l=d("Badge");return e(),s("div",null,[T[82]||(T[82]=t("h1",{id:"Boltz.Basis-API-Reference",tabindex:"-1"},[t("code",null,"Boltz.Basis"),Q(" API Reference "),t("a",{class:"header-anchor",href:"#Boltz.Basis-API-Reference","aria-label":'Permalink to "`Boltz.Basis` API Reference {#Boltz.Basis-API-Reference}"'},"​")],-1)),T[83]||(T[83]=t("div",{class:"warning custom-block"},[t("p",{class:"custom-block-title"},"Warning"),t("p",null,"The function calls for these basis functions should be considered experimental and are subject to change without deprecation. However, the functions themselves are stable and can be freely used in combination with the other Layers and Models.")],-1)),t("details",m,[t("summary",null,[T[0]||(T[0]=t("a",{id:"Boltz.Basis.Chebyshev-Tuple{Any}",href:"#Boltz.Basis.Chebyshev-Tuple{Any}"},[t("span",{class:"jlbinding"},"Boltz.Basis.Chebyshev")],-1)),T[1]||(T[1]=Q()),n(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),T[12]||(T[12]=a("",1)),t("p",null,[T[8]||(T[8]=Q("Constructs a Chebyshev basis of the form ")),t("mjx-container",i,[(e(),s("svg",h,T[2]||(T[2]=[a("",1)]))),T[3]||(T[3]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mo",{stretchy:"false"},"["),t("msub",null,[t("mi",null,"T"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mn",null,"0")])]),t("mo",{stretchy:"false"},"("),t("mi",null,"x"),t("mo",{stretchy:"false"},")"),t("mo",null,","),t("msub",null,[t("mi",null,"T"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mn",null,"1")])]),t("mo",{stretchy:"false"},"("),t("mi",null,"x"),t("mo",{stretchy:"false"},")"),t("mo",null,","),t("mo",null,"…"),t("mo",null,","),t("msub",null,[t("mi",null,"T"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"n"),t("mo",null,"−"),t("mn",null,"1")])]),t("mo",{stretchy:"false"},"("),t("mi",null,"x"),t("mo",{stretchy:"false"},")"),t("mo",{stretchy:"false"},"]")])],-1))]),T[9]||(T[9]=Q(" where ")),t("mjx-container",p,[(e(),s("svg",g,T[4]||(T[4]=[a("",1)]))),T[5]||(T[5]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"T"),t("mi",null,"j")]),t("mo",{stretchy:"false"},"("),t("mo",null,"."),t("mo",{stretchy:"false"},")")])],-1))]),T[10]||(T[10]=Q(" is the ")),t("mjx-container",H,[(e(),s("svg",u,T[6]||(T[6]=[a("",1)]))),T[7]||(T[7]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msup",null,[t("mi",null,"j"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"t"),t("mi",null,"h")])])])],-1))]),T[11]||(T[11]=Q(" Chebyshev polynomial of the first kind."))]),T[13]||(T[13]=t("p",null,[t("strong",null,"Arguments")],-1)),T[14]||(T[14]=t("ul",null,[t("li",null,[t("code",null,"n"),Q(": number of terms in the polynomial expansion.")])],-1)),T[15]||(T[15]=t("p",null,[t("strong",null,"Keyword Arguments")],-1)),T[16]||(T[16]=t("ul",null,[t("li",null,[t("code",null,"dim::Int=1"),Q(": The dimension along which the basis functions are applied.")])],-1)),T[17]||(T[17]=t("p",null,[t("a",{href:"https://github.com/LuxDL/Boltz.jl/blob/6562f7afdce5b360ef02bce0937da69b6a04d2b3/src/basis.jl#L49",target:"_blank",rel:"noreferrer"},"source")],-1))]),t("details",k,[t("summary",null,[T[18]||(T[18]=t("a",{id:"Boltz.Basis.Cos-Tuple{Any}",href:"#Boltz.Basis.Cos-Tuple{Any}"},[t("span",{class:"jlbinding"},"Boltz.Basis.Cos")],-1)),T[19]||(T[19]=Q()),n(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),T[24]||(T[24]=a("",1)),t("p",null,[T[22]||(T[22]=Q("Constructs a cosine basis of the form ")),t("mjx-container",w,[(e(),s("svg",y,T[20]||(T[20]=[a("",1)]))),T[21]||(T[21]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mo",{stretchy:"false"},"["),t("mi",null,"cos"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mo",{stretchy:"false"},"("),t("mi",null,"x"),t("mo",{stretchy:"false"},")"),t("mo",null,","),t("mi",null,"cos"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mo",{stretchy:"false"},"("),t("mn",null,"2"),t("mi",null,"x"),t("mo",{stretchy:"false"},")"),t("mo",null,","),t("mo",null,"…"),t("mo",null,","),t("mi",null,"cos"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mo",{stretchy:"false"},"("),t("mi",null,"n"),t("mi",null,"x"),t("mo",{stretchy:"false"},")"),t("mo",{stretchy:"false"},"]")])],-1))]),T[23]||(T[23]=Q("."))]),T[25]||(T[25]=t("p",null,[t("strong",null,"Arguments")],-1)),T[26]||(T[26]=t("ul",null,[t("li",null,[t("code",null,"n"),Q(": number of terms in the cosine expansion.")])],-1)),T[27]||(T[27]=t("p",null,[t("strong",null,"Keyword Arguments")],-1)),T[28]||(T[28]=t("ul",null,[t("li",null,[t("code",null,"dim::Int=1"),Q(": The dimension along which the basis functions are applied.")])],-1)),T[29]||(T[29]=t("p",null,[t("a",{href:"https://github.com/LuxDL/Boltz.jl/blob/6562f7afdce5b360ef02bce0937da69b6a04d2b3/src/basis.jl#L84",target:"_blank",rel:"noreferrer"},"source")],-1))]),t("details",f,[t("summary",null,[T[30]||(T[30]=t("a",{id:"Boltz.Basis.Fourier-Tuple{Any}",href:"#Boltz.Basis.Fourier-Tuple{Any}"},[t("span",{class:"jlbinding"},"Boltz.Basis.Fourier")],-1)),T[31]||(T[31]=Q()),n(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),T[34]||(T[34]=a("",2)),t("mjx-container",c,[(e(),s("svg",x,T[32]||(T[32]=[a("",1)]))),T[33]||(T[33]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("msub",null,[t("mi",null,"F"),t("mi",null,"j")]),t("mo",{stretchy:"false"},"("),t("mi",null,"x"),t("mo",{stretchy:"false"},")"),t("mo",null,"="),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"{"),t("mtable",{columnalign:"left left",columnspacing:"1em",rowspacing:".2em"},[t("mtr",null,[t("mtd",null,[t("mi",null,"c"),t("mi",null,"o"),t("mi",null,"s"),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"("),t("mfrac",null,[t("mi",null,"j"),t("mn",null,"2")]),t("mi",null,"x"),t("mo",{"data-mjx-texclass":"CLOSE"},")")])]),t("mtd",null,[t("mtext",null,"if "),t("mi",null,"j"),t("mtext",null," is even")])]),t("mtr",null,[t("mtd",null,[t("mi",null,"s"),t("mi",null,"i"),t("mi",null,"n"),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"("),t("mfrac",null,[t("mi",null,"j"),t("mn",null,"2")]),t("mi",null,"x"),t("mo",{"data-mjx-texclass":"CLOSE"},")")])]),t("mtd",null,[t("mtext",null,"if "),t("mi",null,"j"),t("mtext",null," is odd")])])]),t("mo",{"data-mjx-texclass":"CLOSE",fence:"true",stretchy:"true",symmetric:"true"})])])],-1))]),T[35]||(T[35]=t("p",null,[t("strong",null,"Arguments")],-1)),T[36]||(T[36]=t("ul",null,[t("li",null,[t("code",null,"n"),Q(": number of terms in the Fourier expansion.")])],-1)),T[37]||(T[37]=t("p",null,[t("strong",null,"Keyword Arguments")],-1)),T[38]||(T[38]=t("ul",null,[t("li",null,[t("code",null,"dim::Int=1"),Q(": The dimension along which the basis functions are applied.")])],-1)),T[39]||(T[39]=t("p",null,[t("a",{href:"https://github.com/LuxDL/Boltz.jl/blob/6562f7afdce5b360ef02bce0937da69b6a04d2b3/src/basis.jl#L101",target:"_blank",rel:"noreferrer"},"source")],-1))]),t("details",V,[t("summary",null,[T[40]||(T[40]=t("a",{id:"Boltz.Basis.Legendre-Tuple{Any}",href:"#Boltz.Basis.Legendre-Tuple{Any}"},[t("span",{class:"jlbinding"},"Boltz.Basis.Legendre")],-1)),T[41]||(T[41]=Q()),n(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),T[52]||(T[52]=a("",1)),t("p",null,[T[48]||(T[48]=Q("Constructs a Legendre basis of the form ")),t("mjx-container",L,[(e(),s("svg",M,T[42]||(T[42]=[a("",1)]))),T[43]||(T[43]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mo",{stretchy:"false"},"["),t("msub",null,[t("mi",null,"P"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mn",null,"0")])]),t("mo",{stretchy:"false"},"("),t("mi",null,"x"),t("mo",{stretchy:"false"},")"),t("mo",null,","),t("msub",null,[t("mi",null,"P"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mn",null,"1")])]),t("mo",{stretchy:"false"},"("),t("mi",null,"x"),t("mo",{stretchy:"false"},")"),t("mo",null,","),t("mo",null,"…"),t("mo",null,","),t("msub",null,[t("mi",null,"P"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"n"),t("mo",null,"−"),t("mn",null,"1")])]),t("mo",{stretchy:"false"},"("),t("mi",null,"x"),t("mo",{stretchy:"false"},")"),t("mo",{stretchy:"false"},"]")])],-1))]),T[49]||(T[49]=Q(" where ")),t("mjx-container",b,[(e(),s("svg",Z,T[44]||(T[44]=[a("",1)]))),T[45]||(T[45]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"P"),t("mi",null,"j")]),t("mo",{stretchy:"false"},"("),t("mo",null,"."),t("mo",{stretchy:"false"},")")])],-1))]),T[50]||(T[50]=Q(" is the ")),t("mjx-container",v,[(e(),s("svg",C,T[46]||(T[46]=[a("",1)]))),T[47]||(T[47]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msup",null,[t("mi",null,"j"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"t"),t("mi",null,"h")])])])],-1))]),T[51]||(T[51]=Q(" Legendre polynomial."))]),T[53]||(T[53]=t("p",null,[t("strong",null,"Arguments")],-1)),T[54]||(T[54]=t("ul",null,[t("li",null,[t("code",null,"n"),Q(": number of terms in the polynomial expansion.")])],-1)),T[55]||(T[55]=t("p",null,[t("strong",null,"Keyword Arguments")],-1)),T[56]||(T[56]=t("ul",null,[t("li",null,[t("code",null,"dim::Int=1"),Q(": The dimension along which the basis functions are applied.")])],-1)),T[57]||(T[57]=t("p",null,[t("a",{href:"https://github.com/LuxDL/Boltz.jl/blob/6562f7afdce5b360ef02bce0937da69b6a04d2b3/src/basis.jl#L140",target:"_blank",rel:"noreferrer"},"source")],-1))]),t("details",j,[t("summary",null,[T[58]||(T[58]=t("a",{id:"Boltz.Basis.Polynomial-Tuple{Any}",href:"#Boltz.Basis.Polynomial-Tuple{Any}"},[t("span",{class:"jlbinding"},"Boltz.Basis.Polynomial")],-1)),T[59]||(T[59]=Q()),n(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),T[64]||(T[64]=a("",1)),t("p",null,[T[62]||(T[62]=Q("Constructs a Polynomial basis of the form ")),t("mjx-container",A,[(e(),s("svg",D,T[60]||(T[60]=[a("",1)]))),T[61]||(T[61]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mo",{stretchy:"false"},"["),t("mn",null,"1"),t("mo",null,","),t("mi",null,"x"),t("mo",null,","),t("mo",null,"…"),t("mo",null,","),t("msup",null,[t("mi",null,"x"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mo",{stretchy:"false"},"("),t("mi",null,"n"),t("mo",null,"−"),t("mn",null,"1"),t("mo",{stretchy:"false"},")")])]),t("mo",{stretchy:"false"},"]")])],-1))]),T[63]||(T[63]=Q("."))]),T[65]||(T[65]=t("p",null,[t("strong",null,"Arguments")],-1)),T[66]||(T[66]=t("ul",null,[t("li",null,[t("code",null,"n"),Q(": number of terms in the polynomial expansion.")])],-1)),T[67]||(T[67]=t("p",null,[t("strong",null,"Keyword Arguments")],-1)),T[68]||(T[68]=t("ul",null,[t("li",null,[t("code",null,"dim::Int=1"),Q(": The dimension along which the basis functions are applied.")])],-1)),T[69]||(T[69]=t("p",null,[t("a",{href:"https://github.com/LuxDL/Boltz.jl/blob/6562f7afdce5b360ef02bce0937da69b6a04d2b3/src/basis.jl#L172",target:"_blank",rel:"noreferrer"},"source")],-1))]),t("details",B,[t("summary",null,[T[70]||(T[70]=t("a",{id:"Boltz.Basis.Sin-Tuple{Any}",href:"#Boltz.Basis.Sin-Tuple{Any}"},[t("span",{class:"jlbinding"},"Boltz.Basis.Sin")],-1)),T[71]||(T[71]=Q()),n(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),T[76]||(T[76]=a("",1)),t("p",null,[T[74]||(T[74]=Q("Constructs a sine basis of the form ")),t("mjx-container",_,[(e(),s("svg",E,T[72]||(T[72]=[a("",1)]))),T[73]||(T[73]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mo",{stretchy:"false"},"["),t("mi",null,"sin"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mo",{stretchy:"false"},"("),t("mi",null,"x"),t("mo",{stretchy:"false"},")"),t("mo",null,","),t("mi",null,"sin"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mo",{stretchy:"false"},"("),t("mn",null,"2"),t("mi",null,"x"),t("mo",{stretchy:"false"},")"),t("mo",null,","),t("mo",null,"…"),t("mo",null,","),t("mi",null,"sin"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mo",{stretchy:"false"},"("),t("mi",null,"n"),t("mi",null,"x"),t("mo",{stretchy:"false"},")"),t("mo",{stretchy:"false"},"]")])],-1))]),T[75]||(T[75]=Q("."))]),T[77]||(T[77]=t("p",null,[t("strong",null,"Arguments")],-1)),T[78]||(T[78]=t("ul",null,[t("li",null,[t("code",null,"n"),Q(": number of terms in the sine expansion.")])],-1)),T[79]||(T[79]=t("p",null,[t("strong",null,"Keyword Arguments")],-1)),T[80]||(T[80]=t("ul",null,[t("li",null,[t("code",null,"dim::Int=1"),Q(": The dimension along which the basis functions are applied.")])],-1)),T[81]||(T[81]=t("p",null,[t("a",{href:"https://github.com/LuxDL/Boltz.jl/blob/6562f7afdce5b360ef02bce0937da69b6a04d2b3/src/basis.jl#L67",target:"_blank",rel:"noreferrer"},"source")],-1))])])}const G=o(r,[["render",S]]);export{O as __pageData,G as default}; diff --git a/previews/PR98/assets/api_index.md.Huv0Y-72.js b/previews/PR98/assets/api_index.md.Huv0Y-72.js new file mode 100644 index 0000000..b076895 --- /dev/null +++ b/previews/PR98/assets/api_index.md.Huv0Y-72.js @@ -0,0 +1 @@ +import{_ as o,c as i,a2 as a,o as l}from"./chunks/framework.BI0fNMXE.js";const h=JSON.parse('{"title":"API Reference","description":"","frontmatter":{},"headers":[],"relativePath":"api/index.md","filePath":"api/index.md","lastUpdated":null}'),t={name:"api/index.md"};function r(s,e,n,d,c,B){return l(),i("div",null,e[0]||(e[0]=[a('

API Reference

Accelerate ⚡ your ML research using pre-built Deep Learning Models with Lux.

Index

',4)]))}const f=o(t,[["render",r]]);export{h as __pageData,f as default}; diff --git a/previews/PR98/assets/api_index.md.Huv0Y-72.lean.js b/previews/PR98/assets/api_index.md.Huv0Y-72.lean.js new file mode 100644 index 0000000..c3557db --- /dev/null +++ b/previews/PR98/assets/api_index.md.Huv0Y-72.lean.js @@ -0,0 +1 @@ +import{_ as o,c as i,a2 as a,o as l}from"./chunks/framework.BI0fNMXE.js";const h=JSON.parse('{"title":"API Reference","description":"","frontmatter":{},"headers":[],"relativePath":"api/index.md","filePath":"api/index.md","lastUpdated":null}'),t={name:"api/index.md"};function r(s,e,n,d,c,B){return l(),i("div",null,e[0]||(e[0]=[a("",4)]))}const f=o(t,[["render",r]]);export{h as __pageData,f as default}; diff --git a/previews/PR98/assets/api_layers.md.DmVxh5An.js b/previews/PR98/assets/api_layers.md.DmVxh5An.js new file mode 100644 index 0000000..1510b97 --- /dev/null +++ b/previews/PR98/assets/api_layers.md.DmVxh5An.js @@ -0,0 +1,56 @@ +import{_ as p,c as l,j as s,a,G as n,a2 as t,B as r,o as h}from"./chunks/framework.BI0fNMXE.js";const R=JSON.parse('{"title":"Boltz.Layers API Reference","description":"","frontmatter":{},"headers":[],"relativePath":"api/layers.md","filePath":"api/layers.md","lastUpdated":null}'),o={name:"api/layers.md"},d={class:"jldocstring custom-block",open:""},k={class:"jldocstring custom-block",open:""},T={class:"jldocstring custom-block",open:""},Q={class:"jldocstring custom-block",open:""},g={class:"jldocstring custom-block",open:""},y={class:"jldocstring custom-block",open:""},m={class:"jldocstring custom-block",open:""},c={class:"jldocstring custom-block",open:""},E={class:"jldocstring custom-block",open:""},u={class:"jldocstring custom-block",open:""},F={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},f={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"15.579ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 6886 1000","aria-hidden":"true"},b={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},C={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.65ex"},xmlns:"http://www.w3.org/2000/svg",width:"44.107ex",height:"2.347ex",role:"img",focusable:"false",viewBox:"0 -750 19495.1 1037.2","aria-hidden":"true"},_={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},L={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.05ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.371ex",height:"1.595ex",role:"img",focusable:"false",viewBox:"0 -683 1048 705","aria-hidden":"true"},x={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},A={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"11.847ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 5236.2 1000","aria-hidden":"true"},w={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},D={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"19.986ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 8833.9 1000","aria-hidden":"true"},B={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},v={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.179ex",height:"1.595ex",role:"img",focusable:"false",viewBox:"0 -694 521 705","aria-hidden":"true"},H={class:"jldocstring custom-block",open:""},j={class:"jldocstring custom-block",open:""},M={class:"jldocstring custom-block",open:""};function V(Z,i,z,P,S,I){const e=r("Badge");return h(),l("div",null,[i[63]||(i[63]=s("h1",{id:"Boltz.Layers-API-Reference",tabindex:"-1"},[s("code",null,"Boltz.Layers"),a(" API Reference "),s("a",{class:"header-anchor",href:"#Boltz.Layers-API-Reference","aria-label":'Permalink to "`Boltz.Layers` API Reference {#Boltz.Layers-API-Reference}"'},"​")],-1)),i[64]||(i[64]=s("hr",null,null,-1)),s("details",d,[s("summary",null,[i[0]||(i[0]=s("a",{id:"Boltz.Layers.ClassTokens",href:"#Boltz.Layers.ClassTokens"},[s("span",{class:"jlbinding"},"Boltz.Layers.ClassTokens")],-1)),i[1]||(i[1]=a()),n(e,{type:"info",class:"jlObjectType jlType",text:"Type"})]),i[2]||(i[2]=t('
julia
ClassTokens(dim; init=zeros32)

Appends class tokens to an input with embedding dimension dim for use in many vision transformer models.

source

',3))]),s("details",k,[s("summary",null,[i[3]||(i[3]=s("a",{id:"Boltz.Layers.ConvNormActivation",href:"#Boltz.Layers.ConvNormActivation"},[s("span",{class:"jlbinding"},"Boltz.Layers.ConvNormActivation")],-1)),i[4]||(i[4]=a()),n(e,{type:"info",class:"jlObjectType jlType",text:"Type"})]),i[5]||(i[5]=t(`
julia
ConvNormActivation(kernel_size::Dims, in_chs::Integer, hidden_chs::Dims{N},
+    activation; norm_layer=nothing, conv_kwargs=(;), norm_kwargs=(;),
+    last_layer_activation::Bool=false) where {N}

Construct a Chain of convolutional layers with normalization and activation functions.

Arguments

Keyword Arguments

source

`,7))]),s("details",T,[s("summary",null,[i[6]||(i[6]=s("a",{id:"Boltz.Layers.DynamicExpressionsLayer",href:"#Boltz.Layers.DynamicExpressionsLayer"},[s("span",{class:"jlbinding"},"Boltz.Layers.DynamicExpressionsLayer")],-1)),i[7]||(i[7]=a()),n(e,{type:"info",class:"jlObjectType jlType",text:"Type"})]),i[8]||(i[8]=t(`
julia
DynamicExpressionsLayer(operator_enum::OperatorEnum, expressions::Node...;
+    eval_options::EvalOptions=EvalOptions())
+DynamicExpressionsLayer(operator_enum::OperatorEnum,
+    expressions::AbstractVector{<:Node}; kwargs...)

Wraps a DynamicExpressions.jl Node into a Lux layer and allows the constant nodes to be updated using any of the AD Backends.

For details about these expressions, refer to the DynamicExpressions.jl documentation.

Arguments

Keyword Arguments

These options are simply forwarded to DynamicExpressions.jl's eval_tree_array and eval_grad_tree_array function.

Extended Help

Example

julia
julia> operators = OperatorEnum(; binary_operators=[+, -, *], unary_operators=[cos]);
+
+julia> x1 = Node(; feature=1);
+
+julia> x2 = Node(; feature=2);
+
+julia> expr_1 = x1 * cos(x2 - 3.2)
+x1 * cos(x2 - 3.2)
+
+julia> expr_2 = x2 - x1 * x2 + 2.5 - 1.0 * x1
+((x2 - (x1 * x2)) + 2.5) - (1.0 * x1)
+
+julia> layer = Layers.DynamicExpressionsLayer(operators, expr_1, expr_2);
+
+julia> ps, st = Lux.setup(Random.default_rng(), layer)
+((layer_1 = (layer_1 = (params = Float32[3.2],), layer_2 = (params = Float32[2.5, 1.0],)), layer_2 = NamedTuple()), (layer_1 = (layer_1 = NamedTuple(), layer_2 = NamedTuple()), layer_2 = NamedTuple()))
+
+julia> x = [1.0f0 2.0f0 3.0f0
+            4.0f0 5.0f0 6.0f0]
+2×3 Matrix{Float32}:
+ 1.0  2.0  3.0
+ 4.0  5.0  6.0
+
+julia> layer(x, ps, st)[1]  Float32[0.6967068 -0.4544041 -2.8266668; 1.5 -4.5 -12.5]
+true
+
+julia> ∂x, ∂ps, _ = Zygote.gradient(Base.Fix1(sum, abs2)  first  layer, x, ps, st);
+
+julia> ∂x  Float32[-14.0292 54.206482 180.32669; -0.9995737 10.7700815 55.6814]
+true
+
+julia> ∂ps.layer_1.layer_1.params  Float32[-6.451908]
+true
+
+julia> ∂ps.layer_1.layer_2.params  Float32[-31.0, 90.0]
+true

source

`,12))]),s("details",Q,[s("summary",null,[i[9]||(i[9]=s("a",{id:"Boltz.Layers.HamiltonianNN",href:"#Boltz.Layers.HamiltonianNN"},[s("span",{class:"jlbinding"},"Boltz.Layers.HamiltonianNN")],-1)),i[10]||(i[10]=a()),n(e,{type:"info",class:"jlObjectType jlType",text:"Type"})]),i[11]||(i[11]=t('
julia
HamiltonianNN{FST}(model; autodiff=nothing) where {FST}

Constructs a Hamiltonian Neural Network (Greydanus et al., 2019). This neural network is useful for learning symmetries and conservation laws by supervision on the gradients of the trajectories. It takes as input a concatenated vector of length 2n containing the position (of size n) and momentum (of size n) of the particles. It then returns the time derivatives for position and momentum.

Arguments

Keyword Arguments

Autodiff Backends

autodiffPackage NeededNotes
AutoZygoteZygote.jlPreferred Backend. Chosen if Zygote is loaded and autodiff is nothing.
AutoForwardDiffChosen if Zygote is not loaded and autodiff is nothing.

Note

This layer uses nested autodiff. Please refer to the manual entry on Nested Autodiff for more information and known limitations.

source

',10))]),s("details",g,[s("summary",null,[i[12]||(i[12]=s("a",{id:"Boltz.Layers.MLP",href:"#Boltz.Layers.MLP"},[s("span",{class:"jlbinding"},"Boltz.Layers.MLP")],-1)),i[13]||(i[13]=a()),n(e,{type:"info",class:"jlObjectType jlType",text:"Type"})]),i[14]||(i[14]=t(`
julia
MLP(in_dims::Integer, hidden_dims::Dims{N}, activation=NNlib.relu; norm_layer=nothing,
+    dropout_rate::Real=0.0f0, dense_kwargs=(;), norm_kwargs=(;),
+    last_layer_activation=false) where {N}

Construct a multi-layer perceptron (MLP) with dense layers, optional normalization layers, and dropout.

Arguments

Keyword Arguments

source

`,7))]),s("details",y,[s("summary",null,[i[15]||(i[15]=s("a",{id:"Boltz.Layers.MultiHeadSelfAttention",href:"#Boltz.Layers.MultiHeadSelfAttention"},[s("span",{class:"jlbinding"},"Boltz.Layers.MultiHeadSelfAttention")],-1)),i[16]||(i[16]=a()),n(e,{type:"info",class:"jlObjectType jlType",text:"Type"})]),i[17]||(i[17]=t(`
julia
MultiHeadSelfAttention(in_planes::Int, number_heads::Int; use_qkv_bias::Bool=false,
+    attention_dropout_rate::T=0.0f0, projection_dropout_rate::T=0.0f0)

Multi-head self-attention layer

Arguments

source

`,5))]),s("details",m,[s("summary",null,[i[18]||(i[18]=s("a",{id:"Boltz.Layers.PatchEmbedding",href:"#Boltz.Layers.PatchEmbedding"},[s("span",{class:"jlbinding"},"Boltz.Layers.PatchEmbedding")],-1)),i[19]||(i[19]=a()),n(e,{type:"info",class:"jlObjectType jlType",text:"Type"})]),i[20]||(i[20]=t(`
julia
PatchEmbedding(image_size, patch_size, in_channels, embed_planes;
+    norm_layer=Returns(Lux.NoOpLayer()), flatten=true)

Constructs a patch embedding layer with the given image size, patch size, input channels, and embedding planes. The patch size must be a divisor of the image size.

Arguments

Keyword Arguments

source

`,7))]),s("details",c,[s("summary",null,[i[21]||(i[21]=s("a",{id:"Boltz.Layers.PeriodicEmbedding",href:"#Boltz.Layers.PeriodicEmbedding"},[s("span",{class:"jlbinding"},"Boltz.Layers.PeriodicEmbedding")],-1)),i[22]||(i[22]=a()),n(e,{type:"info",class:"jlObjectType jlType",text:"Type"})]),i[23]||(i[23]=t(`
julia
PeriodicEmbedding(idxs, periods)

Create an embedding periodic in some inputs with specified periods. Input indices not in idxs are passed through unchanged, but inputs in idxs are moved to the end of the output and replaced with their sines, followed by their cosines (scaled appropriately to have the specified periods). This smooth embedding preserves phase information and enforces periodicity.

For example, layer = PeriodicEmbedding([2, 3], [3.0, 1.0]) will create a layer periodic in the second input with period 3.0 and periodic in the third input with period 1.0. In this case, layer([a, b, c, d], st) == ([a, d, sinpi(2 / 3.0 * b), sinpi(2 / 1.0 * c), cospi(2 / 3.0 * b), cospi(2 / 1.0 * c)], st).

Arguments

Inputs

Returns

Example

julia
julia> layer = Layers.PeriodicEmbedding([2], [4.0])
+PeriodicEmbedding([2], [4.0])
+
+julia> ps, st = Lux.setup(Random.default_rng(), layer);
+
+julia> all(layer([1.1, 2.2, 3.3], ps, st)[1] .==
+           [1.1, 3.3, sinpi(2 / 4.0 * 2.2), cospi(2 / 4.0 * 2.2)])
+true

source

`,12))]),s("details",E,[s("summary",null,[i[24]||(i[24]=s("a",{id:"Boltz.Layers.SplineLayer",href:"#Boltz.Layers.SplineLayer"},[s("span",{class:"jlbinding"},"Boltz.Layers.SplineLayer")],-1)),i[25]||(i[25]=a()),n(e,{type:"info",class:"jlObjectType jlType",text:"Type"})]),i[26]||(i[26]=t(`
julia
SplineLayer(in_dims, grid_min, grid_max, grid_step, basis::Type{Basis};
+    train_grid::Union{Val, Bool}=Val(false), init_saved_points=nothing)

Constructs a spline layer with the given basis function.

Arguments

Keyword Arguments

Warning

Currently this layer is limited since it relies on DataInterpolations.jl which doesn't work with GPU arrays. This will be fixed in the future by extending support to different basis functions.

source

`,8))]),s("details",u,[s("summary",null,[i[27]||(i[27]=s("a",{id:"Boltz.Layers.TensorProductLayer",href:"#Boltz.Layers.TensorProductLayer"},[s("span",{class:"jlbinding"},"Boltz.Layers.TensorProductLayer")],-1)),i[28]||(i[28]=a()),n(e,{type:"info",class:"jlObjectType jlType",text:"Type"})]),i[51]||(i[51]=t('
julia
TensorProductLayer(basis_fns, out_dim::Int; init_weight = randn32)
',1)),s("p",null,[i[31]||(i[31]=a("Constructs the Tensor Product Layer, which takes as input an array of n tensor product basis, ")),s("mjx-container",F,[(h(),l("svg",f,i[29]||(i[29]=[t('',1)]))),i[30]||(i[30]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mo",{stretchy:"false"},"["),s("msub",null,[s("mi",null,"B"),s("mn",null,"1")]),s("mo",null,","),s("msub",null,[s("mi",null,"B"),s("mn",null,"2")]),s("mo",null,","),s("mo",null,"…"),s("mo",null,","),s("msub",null,[s("mi",null,"B"),s("mi",null,"n")]),s("mo",{stretchy:"false"},"]")])],-1))]),i[32]||(i[32]=a(" a data point x, computes"))]),s("mjx-container",b,[(h(),l("svg",C,i[33]||(i[33]=[t('',1)]))),i[34]||(i[34]=s("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[s("msub",null,[s("mi",null,"z"),s("mi",null,"i")]),s("mo",null,"="),s("msub",null,[s("mi",null,"W"),s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",null,"i"),s("mo",null,","),s("mo",null,":")])]),s("mo",null,"⊙"),s("mo",{stretchy:"false"},"["),s("msub",null,[s("mi",null,"B"),s("mn",null,"1")]),s("mo",{stretchy:"false"},"("),s("msub",null,[s("mi",null,"x"),s("mn",null,"1")]),s("mo",{stretchy:"false"},")"),s("mo",null,"⊗"),s("msub",null,[s("mi",null,"B"),s("mn",null,"2")]),s("mo",{stretchy:"false"},"("),s("msub",null,[s("mi",null,"x"),s("mn",null,"2")]),s("mo",{stretchy:"false"},")"),s("mo",null,"⊗"),s("mo",null,"⋯"),s("mo",null,"⊗"),s("msub",null,[s("mi",null,"B"),s("mi",null,"n")]),s("mo",{stretchy:"false"},"("),s("msub",null,[s("mi",null,"x"),s("mi",null,"n")]),s("mo",{stretchy:"false"},")"),s("mo",{stretchy:"false"},"]")])],-1))]),s("p",null,[i[39]||(i[39]=a("where ")),s("mjx-container",_,[(h(),l("svg",L,i[35]||(i[35]=[s("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[s("g",{"data-mml-node":"math"},[s("g",{"data-mml-node":"mi"},[s("path",{"data-c":"1D44A",d:"M436 683Q450 683 486 682T553 680Q604 680 638 681T677 682Q695 682 695 674Q695 670 692 659Q687 641 683 639T661 637Q636 636 621 632T600 624T597 615Q597 603 613 377T629 138L631 141Q633 144 637 151T649 170T666 200T690 241T720 295T759 362Q863 546 877 572T892 604Q892 619 873 628T831 637Q817 637 817 647Q817 650 819 660Q823 676 825 679T839 682Q842 682 856 682T895 682T949 681Q1015 681 1034 683Q1048 683 1048 672Q1048 666 1045 655T1038 640T1028 637Q1006 637 988 631T958 617T939 600T927 584L923 578L754 282Q586 -14 585 -15Q579 -22 561 -22Q546 -22 542 -17Q539 -14 523 229T506 480L494 462Q472 425 366 239Q222 -13 220 -15T215 -19Q210 -22 197 -22Q178 -22 176 -15Q176 -12 154 304T131 622Q129 631 121 633T82 637H58Q51 644 51 648Q52 671 64 683H76Q118 680 176 680Q301 680 313 683H323Q329 677 329 674T327 656Q322 641 318 637H297Q236 634 232 620Q262 160 266 136L501 550L499 587Q496 629 489 632Q483 636 447 637Q428 637 422 639T416 648Q416 650 418 660Q419 664 420 669T421 676T424 680T428 682T436 683Z",style:{"stroke-width":"3"}})])])],-1)]))),i[36]||(i[36]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mi",null,"W")])],-1))]),i[40]||(i[40]=a(" is the layer's weight, and returns ")),s("mjx-container",x,[(h(),l("svg",A,i[37]||(i[37]=[t('',1)]))),i[38]||(i[38]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mo",{stretchy:"false"},"["),s("msub",null,[s("mi",null,"z"),s("mn",null,"1")]),s("mo",null,","),s("mo",null,"…"),s("mo",null,","),s("msub",null,[s("mi",null,"z"),s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",null,"o"),s("mi",null,"u"),s("mi",null,"t")])]),s("mo",{stretchy:"false"},"]")])],-1))]),i[41]||(i[41]=a("."))]),i[52]||(i[52]=s("p",null,[s("strong",null,"Arguments")],-1)),s("ul",null,[s("li",null,[s("p",null,[i[46]||(i[46]=s("code",null,"basis_fns",-1)),i[47]||(i[47]=a(": Array of TensorProductBasis ")),s("mjx-container",w,[(h(),l("svg",D,i[42]||(i[42]=[t('',1)]))),i[43]||(i[43]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mo",{stretchy:"false"},"["),s("msub",null,[s("mi",null,"B"),s("mn",null,"1")]),s("mo",{stretchy:"false"},"("),s("msub",null,[s("mi",null,"n"),s("mn",null,"1")]),s("mo",{stretchy:"false"},")"),s("mo",null,","),s("mo",null,"…"),s("mo",null,","),s("msub",null,[s("mi",null,"B"),s("mi",null,"k")]),s("mo",{stretchy:"false"},"("),s("msub",null,[s("mi",null,"n"),s("mi",null,"k")]),s("mo",{stretchy:"false"},")"),s("mo",{stretchy:"false"},"]")])],-1))]),i[48]||(i[48]=a(", where ")),s("mjx-container",B,[(h(),l("svg",v,i[44]||(i[44]=[s("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[s("g",{"data-mml-node":"math"},[s("g",{"data-mml-node":"mi"},[s("path",{"data-c":"1D458",d:"M121 647Q121 657 125 670T137 683Q138 683 209 688T282 694Q294 694 294 686Q294 679 244 477Q194 279 194 272Q213 282 223 291Q247 309 292 354T362 415Q402 442 438 442Q468 442 485 423T503 369Q503 344 496 327T477 302T456 291T438 288Q418 288 406 299T394 328Q394 353 410 369T442 390L458 393Q446 405 434 405H430Q398 402 367 380T294 316T228 255Q230 254 243 252T267 246T293 238T320 224T342 206T359 180T365 147Q365 130 360 106T354 66Q354 26 381 26Q429 26 459 145Q461 153 479 153H483Q499 153 499 144Q499 139 496 130Q455 -11 378 -11Q333 -11 305 15T277 90Q277 108 280 121T283 145Q283 167 269 183T234 206T200 217T182 220H180Q168 178 159 139T145 81T136 44T129 20T122 7T111 -2Q98 -11 83 -11Q66 -11 57 -1T48 16Q48 26 85 176T158 471L195 616Q196 629 188 632T149 637H144Q134 637 131 637T124 640T121 647Z",style:{"stroke-width":"3"}})])])],-1)]))),i[45]||(i[45]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mi",null,"k")])],-1))]),i[49]||(i[49]=a(" corresponds to the dimension of the input."))])]),i[50]||(i[50]=s("li",null,[s("p",null,[s("code",null,"out_dim"),a(": Dimension of the output.")])],-1))]),i[53]||(i[53]=t('

Keyword Arguments

Limited Backend Support

Support for backends apart from CPU and CUDA is limited and slow due to limited support for kron in the backend.

source

',4))]),s("details",H,[s("summary",null,[i[54]||(i[54]=s("a",{id:"Boltz.Layers.ViPosEmbedding",href:"#Boltz.Layers.ViPosEmbedding"},[s("span",{class:"jlbinding"},"Boltz.Layers.ViPosEmbedding")],-1)),i[55]||(i[55]=a()),n(e,{type:"info",class:"jlObjectType jlType",text:"Type"})]),i[56]||(i[56]=t('
julia
ViPosEmbedding(embedding_size, number_patches; init = randn32)

Positional embedding layer used by many vision transformer-like models.

source

',3))]),s("details",j,[s("summary",null,[i[57]||(i[57]=s("a",{id:"Boltz.Layers.VisionTransformerEncoder",href:"#Boltz.Layers.VisionTransformerEncoder"},[s("span",{class:"jlbinding"},"Boltz.Layers.VisionTransformerEncoder")],-1)),i[58]||(i[58]=a()),n(e,{type:"info",class:"jlObjectType jlType",text:"Type"})]),i[59]||(i[59]=t(`
julia
VisionTransformerEncoder(in_planes, depth, number_heads; mlp_ratio = 4.0f0,
+    dropout = 0.0f0)

Transformer as used in the base ViT architecture (Dosovitskiy et al., 2020).

Arguments

Keyword Arguments

source

`,7))]),s("details",M,[s("summary",null,[i[60]||(i[60]=s("a",{id:"Boltz.Layers.ConvBatchNormActivation-Union{Tuple{F}, Tuple{NTuple{N, Int64} where N, Pair{Int64, Int64}, Int64, F}} where F",href:"#Boltz.Layers.ConvBatchNormActivation-Union{Tuple{F}, Tuple{NTuple{N, Int64} where N, Pair{Int64, Int64}, Int64, F}} where F"},[s("span",{class:"jlbinding"},"Boltz.Layers.ConvBatchNormActivation")],-1)),i[61]||(i[61]=a()),n(e,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),i[62]||(i[62]=t(`
julia
ConvBatchNormActivation(kernel_size::Dims, (in_filters, out_filters)::Pair{Int, Int},
+    depth::Int, act::F; use_norm::Bool=true, conv_kwargs=(;),
+    last_layer_activation::Bool=true, norm_kwargs=(;)) where {F}

This function is a convenience wrapper around ConvNormActivation that constructs a chain with norm_layer set to Lux.BatchNorm if use_norm is true and nothing otherwise. In most cases, users should use ConvNormActivation directly for a more flexible interface.

source

`,3))]),i[65]||(i[65]=t('

Bibliography

',3))])}const O=p(o,[["render",V]]);export{R as __pageData,O as default}; diff --git a/previews/PR98/assets/api_layers.md.DmVxh5An.lean.js b/previews/PR98/assets/api_layers.md.DmVxh5An.lean.js new file mode 100644 index 0000000..9eb3cf2 --- /dev/null +++ b/previews/PR98/assets/api_layers.md.DmVxh5An.lean.js @@ -0,0 +1 @@ +import{_ as p,c as l,j as s,a,G as n,a2 as t,B as r,o as h}from"./chunks/framework.BI0fNMXE.js";const R=JSON.parse('{"title":"Boltz.Layers API Reference","description":"","frontmatter":{},"headers":[],"relativePath":"api/layers.md","filePath":"api/layers.md","lastUpdated":null}'),o={name:"api/layers.md"},d={class:"jldocstring custom-block",open:""},k={class:"jldocstring custom-block",open:""},T={class:"jldocstring custom-block",open:""},Q={class:"jldocstring custom-block",open:""},g={class:"jldocstring custom-block",open:""},y={class:"jldocstring custom-block",open:""},m={class:"jldocstring custom-block",open:""},c={class:"jldocstring custom-block",open:""},E={class:"jldocstring custom-block",open:""},u={class:"jldocstring custom-block",open:""},F={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},f={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"15.579ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 6886 1000","aria-hidden":"true"},b={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},C={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.65ex"},xmlns:"http://www.w3.org/2000/svg",width:"44.107ex",height:"2.347ex",role:"img",focusable:"false",viewBox:"0 -750 19495.1 1037.2","aria-hidden":"true"},_={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},L={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.05ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.371ex",height:"1.595ex",role:"img",focusable:"false",viewBox:"0 -683 1048 705","aria-hidden":"true"},x={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},A={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"11.847ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 5236.2 1000","aria-hidden":"true"},w={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},D={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"19.986ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 8833.9 1000","aria-hidden":"true"},B={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},v={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.179ex",height:"1.595ex",role:"img",focusable:"false",viewBox:"0 -694 521 705","aria-hidden":"true"},H={class:"jldocstring custom-block",open:""},j={class:"jldocstring custom-block",open:""},M={class:"jldocstring custom-block",open:""};function V(Z,i,z,P,S,I){const e=r("Badge");return h(),l("div",null,[i[63]||(i[63]=s("h1",{id:"Boltz.Layers-API-Reference",tabindex:"-1"},[s("code",null,"Boltz.Layers"),a(" API Reference "),s("a",{class:"header-anchor",href:"#Boltz.Layers-API-Reference","aria-label":'Permalink to "`Boltz.Layers` API Reference {#Boltz.Layers-API-Reference}"'},"​")],-1)),i[64]||(i[64]=s("hr",null,null,-1)),s("details",d,[s("summary",null,[i[0]||(i[0]=s("a",{id:"Boltz.Layers.ClassTokens",href:"#Boltz.Layers.ClassTokens"},[s("span",{class:"jlbinding"},"Boltz.Layers.ClassTokens")],-1)),i[1]||(i[1]=a()),n(e,{type:"info",class:"jlObjectType jlType",text:"Type"})]),i[2]||(i[2]=t("",3))]),s("details",k,[s("summary",null,[i[3]||(i[3]=s("a",{id:"Boltz.Layers.ConvNormActivation",href:"#Boltz.Layers.ConvNormActivation"},[s("span",{class:"jlbinding"},"Boltz.Layers.ConvNormActivation")],-1)),i[4]||(i[4]=a()),n(e,{type:"info",class:"jlObjectType jlType",text:"Type"})]),i[5]||(i[5]=t("",7))]),s("details",T,[s("summary",null,[i[6]||(i[6]=s("a",{id:"Boltz.Layers.DynamicExpressionsLayer",href:"#Boltz.Layers.DynamicExpressionsLayer"},[s("span",{class:"jlbinding"},"Boltz.Layers.DynamicExpressionsLayer")],-1)),i[7]||(i[7]=a()),n(e,{type:"info",class:"jlObjectType jlType",text:"Type"})]),i[8]||(i[8]=t("",12))]),s("details",Q,[s("summary",null,[i[9]||(i[9]=s("a",{id:"Boltz.Layers.HamiltonianNN",href:"#Boltz.Layers.HamiltonianNN"},[s("span",{class:"jlbinding"},"Boltz.Layers.HamiltonianNN")],-1)),i[10]||(i[10]=a()),n(e,{type:"info",class:"jlObjectType jlType",text:"Type"})]),i[11]||(i[11]=t("",10))]),s("details",g,[s("summary",null,[i[12]||(i[12]=s("a",{id:"Boltz.Layers.MLP",href:"#Boltz.Layers.MLP"},[s("span",{class:"jlbinding"},"Boltz.Layers.MLP")],-1)),i[13]||(i[13]=a()),n(e,{type:"info",class:"jlObjectType jlType",text:"Type"})]),i[14]||(i[14]=t("",7))]),s("details",y,[s("summary",null,[i[15]||(i[15]=s("a",{id:"Boltz.Layers.MultiHeadSelfAttention",href:"#Boltz.Layers.MultiHeadSelfAttention"},[s("span",{class:"jlbinding"},"Boltz.Layers.MultiHeadSelfAttention")],-1)),i[16]||(i[16]=a()),n(e,{type:"info",class:"jlObjectType jlType",text:"Type"})]),i[17]||(i[17]=t("",5))]),s("details",m,[s("summary",null,[i[18]||(i[18]=s("a",{id:"Boltz.Layers.PatchEmbedding",href:"#Boltz.Layers.PatchEmbedding"},[s("span",{class:"jlbinding"},"Boltz.Layers.PatchEmbedding")],-1)),i[19]||(i[19]=a()),n(e,{type:"info",class:"jlObjectType jlType",text:"Type"})]),i[20]||(i[20]=t("",7))]),s("details",c,[s("summary",null,[i[21]||(i[21]=s("a",{id:"Boltz.Layers.PeriodicEmbedding",href:"#Boltz.Layers.PeriodicEmbedding"},[s("span",{class:"jlbinding"},"Boltz.Layers.PeriodicEmbedding")],-1)),i[22]||(i[22]=a()),n(e,{type:"info",class:"jlObjectType jlType",text:"Type"})]),i[23]||(i[23]=t("",12))]),s("details",E,[s("summary",null,[i[24]||(i[24]=s("a",{id:"Boltz.Layers.SplineLayer",href:"#Boltz.Layers.SplineLayer"},[s("span",{class:"jlbinding"},"Boltz.Layers.SplineLayer")],-1)),i[25]||(i[25]=a()),n(e,{type:"info",class:"jlObjectType jlType",text:"Type"})]),i[26]||(i[26]=t("",8))]),s("details",u,[s("summary",null,[i[27]||(i[27]=s("a",{id:"Boltz.Layers.TensorProductLayer",href:"#Boltz.Layers.TensorProductLayer"},[s("span",{class:"jlbinding"},"Boltz.Layers.TensorProductLayer")],-1)),i[28]||(i[28]=a()),n(e,{type:"info",class:"jlObjectType jlType",text:"Type"})]),i[51]||(i[51]=t("",1)),s("p",null,[i[31]||(i[31]=a("Constructs the Tensor Product Layer, which takes as input an array of n tensor product basis, ")),s("mjx-container",F,[(h(),l("svg",f,i[29]||(i[29]=[t("",1)]))),i[30]||(i[30]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mo",{stretchy:"false"},"["),s("msub",null,[s("mi",null,"B"),s("mn",null,"1")]),s("mo",null,","),s("msub",null,[s("mi",null,"B"),s("mn",null,"2")]),s("mo",null,","),s("mo",null,"…"),s("mo",null,","),s("msub",null,[s("mi",null,"B"),s("mi",null,"n")]),s("mo",{stretchy:"false"},"]")])],-1))]),i[32]||(i[32]=a(" a data point x, computes"))]),s("mjx-container",b,[(h(),l("svg",C,i[33]||(i[33]=[t("",1)]))),i[34]||(i[34]=s("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[s("msub",null,[s("mi",null,"z"),s("mi",null,"i")]),s("mo",null,"="),s("msub",null,[s("mi",null,"W"),s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",null,"i"),s("mo",null,","),s("mo",null,":")])]),s("mo",null,"⊙"),s("mo",{stretchy:"false"},"["),s("msub",null,[s("mi",null,"B"),s("mn",null,"1")]),s("mo",{stretchy:"false"},"("),s("msub",null,[s("mi",null,"x"),s("mn",null,"1")]),s("mo",{stretchy:"false"},")"),s("mo",null,"⊗"),s("msub",null,[s("mi",null,"B"),s("mn",null,"2")]),s("mo",{stretchy:"false"},"("),s("msub",null,[s("mi",null,"x"),s("mn",null,"2")]),s("mo",{stretchy:"false"},")"),s("mo",null,"⊗"),s("mo",null,"⋯"),s("mo",null,"⊗"),s("msub",null,[s("mi",null,"B"),s("mi",null,"n")]),s("mo",{stretchy:"false"},"("),s("msub",null,[s("mi",null,"x"),s("mi",null,"n")]),s("mo",{stretchy:"false"},")"),s("mo",{stretchy:"false"},"]")])],-1))]),s("p",null,[i[39]||(i[39]=a("where ")),s("mjx-container",_,[(h(),l("svg",L,i[35]||(i[35]=[s("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[s("g",{"data-mml-node":"math"},[s("g",{"data-mml-node":"mi"},[s("path",{"data-c":"1D44A",d:"M436 683Q450 683 486 682T553 680Q604 680 638 681T677 682Q695 682 695 674Q695 670 692 659Q687 641 683 639T661 637Q636 636 621 632T600 624T597 615Q597 603 613 377T629 138L631 141Q633 144 637 151T649 170T666 200T690 241T720 295T759 362Q863 546 877 572T892 604Q892 619 873 628T831 637Q817 637 817 647Q817 650 819 660Q823 676 825 679T839 682Q842 682 856 682T895 682T949 681Q1015 681 1034 683Q1048 683 1048 672Q1048 666 1045 655T1038 640T1028 637Q1006 637 988 631T958 617T939 600T927 584L923 578L754 282Q586 -14 585 -15Q579 -22 561 -22Q546 -22 542 -17Q539 -14 523 229T506 480L494 462Q472 425 366 239Q222 -13 220 -15T215 -19Q210 -22 197 -22Q178 -22 176 -15Q176 -12 154 304T131 622Q129 631 121 633T82 637H58Q51 644 51 648Q52 671 64 683H76Q118 680 176 680Q301 680 313 683H323Q329 677 329 674T327 656Q322 641 318 637H297Q236 634 232 620Q262 160 266 136L501 550L499 587Q496 629 489 632Q483 636 447 637Q428 637 422 639T416 648Q416 650 418 660Q419 664 420 669T421 676T424 680T428 682T436 683Z",style:{"stroke-width":"3"}})])])],-1)]))),i[36]||(i[36]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mi",null,"W")])],-1))]),i[40]||(i[40]=a(" is the layer's weight, and returns ")),s("mjx-container",x,[(h(),l("svg",A,i[37]||(i[37]=[t("",1)]))),i[38]||(i[38]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mo",{stretchy:"false"},"["),s("msub",null,[s("mi",null,"z"),s("mn",null,"1")]),s("mo",null,","),s("mo",null,"…"),s("mo",null,","),s("msub",null,[s("mi",null,"z"),s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",null,"o"),s("mi",null,"u"),s("mi",null,"t")])]),s("mo",{stretchy:"false"},"]")])],-1))]),i[41]||(i[41]=a("."))]),i[52]||(i[52]=s("p",null,[s("strong",null,"Arguments")],-1)),s("ul",null,[s("li",null,[s("p",null,[i[46]||(i[46]=s("code",null,"basis_fns",-1)),i[47]||(i[47]=a(": Array of TensorProductBasis ")),s("mjx-container",w,[(h(),l("svg",D,i[42]||(i[42]=[t("",1)]))),i[43]||(i[43]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mo",{stretchy:"false"},"["),s("msub",null,[s("mi",null,"B"),s("mn",null,"1")]),s("mo",{stretchy:"false"},"("),s("msub",null,[s("mi",null,"n"),s("mn",null,"1")]),s("mo",{stretchy:"false"},")"),s("mo",null,","),s("mo",null,"…"),s("mo",null,","),s("msub",null,[s("mi",null,"B"),s("mi",null,"k")]),s("mo",{stretchy:"false"},"("),s("msub",null,[s("mi",null,"n"),s("mi",null,"k")]),s("mo",{stretchy:"false"},")"),s("mo",{stretchy:"false"},"]")])],-1))]),i[48]||(i[48]=a(", where ")),s("mjx-container",B,[(h(),l("svg",v,i[44]||(i[44]=[s("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[s("g",{"data-mml-node":"math"},[s("g",{"data-mml-node":"mi"},[s("path",{"data-c":"1D458",d:"M121 647Q121 657 125 670T137 683Q138 683 209 688T282 694Q294 694 294 686Q294 679 244 477Q194 279 194 272Q213 282 223 291Q247 309 292 354T362 415Q402 442 438 442Q468 442 485 423T503 369Q503 344 496 327T477 302T456 291T438 288Q418 288 406 299T394 328Q394 353 410 369T442 390L458 393Q446 405 434 405H430Q398 402 367 380T294 316T228 255Q230 254 243 252T267 246T293 238T320 224T342 206T359 180T365 147Q365 130 360 106T354 66Q354 26 381 26Q429 26 459 145Q461 153 479 153H483Q499 153 499 144Q499 139 496 130Q455 -11 378 -11Q333 -11 305 15T277 90Q277 108 280 121T283 145Q283 167 269 183T234 206T200 217T182 220H180Q168 178 159 139T145 81T136 44T129 20T122 7T111 -2Q98 -11 83 -11Q66 -11 57 -1T48 16Q48 26 85 176T158 471L195 616Q196 629 188 632T149 637H144Q134 637 131 637T124 640T121 647Z",style:{"stroke-width":"3"}})])])],-1)]))),i[45]||(i[45]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mi",null,"k")])],-1))]),i[49]||(i[49]=a(" corresponds to the dimension of the input."))])]),i[50]||(i[50]=s("li",null,[s("p",null,[s("code",null,"out_dim"),a(": Dimension of the output.")])],-1))]),i[53]||(i[53]=t("",4))]),s("details",H,[s("summary",null,[i[54]||(i[54]=s("a",{id:"Boltz.Layers.ViPosEmbedding",href:"#Boltz.Layers.ViPosEmbedding"},[s("span",{class:"jlbinding"},"Boltz.Layers.ViPosEmbedding")],-1)),i[55]||(i[55]=a()),n(e,{type:"info",class:"jlObjectType jlType",text:"Type"})]),i[56]||(i[56]=t("",3))]),s("details",j,[s("summary",null,[i[57]||(i[57]=s("a",{id:"Boltz.Layers.VisionTransformerEncoder",href:"#Boltz.Layers.VisionTransformerEncoder"},[s("span",{class:"jlbinding"},"Boltz.Layers.VisionTransformerEncoder")],-1)),i[58]||(i[58]=a()),n(e,{type:"info",class:"jlObjectType jlType",text:"Type"})]),i[59]||(i[59]=t("",7))]),s("details",M,[s("summary",null,[i[60]||(i[60]=s("a",{id:"Boltz.Layers.ConvBatchNormActivation-Union{Tuple{F}, Tuple{NTuple{N, Int64} where N, Pair{Int64, Int64}, Int64, F}} where F",href:"#Boltz.Layers.ConvBatchNormActivation-Union{Tuple{F}, Tuple{NTuple{N, Int64} where N, Pair{Int64, Int64}, Int64, F}} where F"},[s("span",{class:"jlbinding"},"Boltz.Layers.ConvBatchNormActivation")],-1)),i[61]||(i[61]=a()),n(e,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),i[62]||(i[62]=t("",3))]),i[65]||(i[65]=t("",3))])}const O=p(o,[["render",V]]);export{R as __pageData,O as default}; diff --git a/previews/PR98/assets/api_private.md.BJWD8BVj.js b/previews/PR98/assets/api_private.md.BJWD8BVj.js new file mode 100644 index 0000000..947b91a --- /dev/null +++ b/previews/PR98/assets/api_private.md.BJWD8BVj.js @@ -0,0 +1 @@ +import{_ as n,c as o,j as t,a as e,G as i,a2 as l,B as p,o as r}from"./chunks/framework.BI0fNMXE.js";const j=JSON.parse('{"title":"Private API","description":"","frontmatter":{},"headers":[],"relativePath":"api/private.md","filePath":"api/private.md","lastUpdated":null}'),d={name:"api/private.md"},h={class:"jldocstring custom-block",open:""},u={class:"jldocstring custom-block",open:""},k={class:"jldocstring custom-block",open:""},c={class:"jldocstring custom-block",open:""};function b(_,s,g,f,y,T){const a=p("Badge");return r(),o("div",null,[s[12]||(s[12]=t("h1",{id:"Private-API",tabindex:"-1"},[e("Private API "),t("a",{class:"header-anchor",href:"#Private-API","aria-label":'Permalink to "Private API {#Private-API}"'},"​")],-1)),s[13]||(s[13]=t("p",null,"This is the private API reference for Boltz.jl. You know what this means. Don't use these functions!",-1)),t("details",h,[t("summary",null,[s[0]||(s[0]=t("a",{id:"Boltz.Utils.fast_chunk-Tuple{Int64, Int64}",href:"#Boltz.Utils.fast_chunk-Tuple{Int64, Int64}"},[t("span",{class:"jlbinding"},"Boltz.Utils.fast_chunk")],-1)),s[1]||(s[1]=e()),i(a,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[2]||(s[2]=l('
julia
fast_chunk(x::AbstractArray, ::Val{n}, ::Val{dim})

Type-stable and faster version of MLUtils.chunk.

source

',3))]),t("details",u,[t("summary",null,[s[3]||(s[3]=t("a",{id:"Boltz.Utils.flatten_spatial-Union{Tuple{AbstractArray{T, 4}}, Tuple{T}} where T",href:"#Boltz.Utils.flatten_spatial-Union{Tuple{AbstractArray{T, 4}}, Tuple{T}} where T"},[t("span",{class:"jlbinding"},"Boltz.Utils.flatten_spatial")],-1)),s[4]||(s[4]=e()),i(a,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[5]||(s[5]=l('
julia
flatten_spatial(x::AbstractArray{T, 4})

Flattens the first 2 dimensions of x, and permutes the remaining dimensions to (2, 1, 3).

source

',3))]),t("details",k,[t("summary",null,[s[6]||(s[6]=t("a",{id:"Boltz.Utils.second_dim_mean-Tuple{Any}",href:"#Boltz.Utils.second_dim_mean-Tuple{Any}"},[t("span",{class:"jlbinding"},"Boltz.Utils.second_dim_mean")],-1)),s[7]||(s[7]=e()),i(a,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[8]||(s[8]=l('
julia
second_dim_mean(x)

Computes the mean of x along dimension 2.

source

',3))]),t("details",c,[t("summary",null,[s[9]||(s[9]=t("a",{id:"Boltz.Utils.should_type_assert-Union{Tuple{AbstractArray{T}}, Tuple{T}} where T",href:"#Boltz.Utils.should_type_assert-Union{Tuple{AbstractArray{T}}, Tuple{T}} where T"},[t("span",{class:"jlbinding"},"Boltz.Utils.should_type_assert")],-1)),s[10]||(s[10]=e()),i(a,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[11]||(s[11]=l('
julia
should_type_assert(x)

In certain cases, to ensure type-stability we want to add type-asserts. But this won't work for exotic types like ForwardDiff.Dual. We use this function to check if we should add a type-assert for x.

source

',3))])])}const A=n(d,[["render",b]]);export{j as __pageData,A as default}; diff --git a/previews/PR98/assets/api_private.md.BJWD8BVj.lean.js b/previews/PR98/assets/api_private.md.BJWD8BVj.lean.js new file mode 100644 index 0000000..76c0fd4 --- /dev/null +++ b/previews/PR98/assets/api_private.md.BJWD8BVj.lean.js @@ -0,0 +1 @@ +import{_ as n,c as o,j as t,a as e,G as i,a2 as l,B as p,o as r}from"./chunks/framework.BI0fNMXE.js";const j=JSON.parse('{"title":"Private API","description":"","frontmatter":{},"headers":[],"relativePath":"api/private.md","filePath":"api/private.md","lastUpdated":null}'),d={name:"api/private.md"},h={class:"jldocstring custom-block",open:""},u={class:"jldocstring custom-block",open:""},k={class:"jldocstring custom-block",open:""},c={class:"jldocstring custom-block",open:""};function b(_,s,g,f,y,T){const a=p("Badge");return r(),o("div",null,[s[12]||(s[12]=t("h1",{id:"Private-API",tabindex:"-1"},[e("Private API "),t("a",{class:"header-anchor",href:"#Private-API","aria-label":'Permalink to "Private API {#Private-API}"'},"​")],-1)),s[13]||(s[13]=t("p",null,"This is the private API reference for Boltz.jl. You know what this means. Don't use these functions!",-1)),t("details",h,[t("summary",null,[s[0]||(s[0]=t("a",{id:"Boltz.Utils.fast_chunk-Tuple{Int64, Int64}",href:"#Boltz.Utils.fast_chunk-Tuple{Int64, Int64}"},[t("span",{class:"jlbinding"},"Boltz.Utils.fast_chunk")],-1)),s[1]||(s[1]=e()),i(a,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[2]||(s[2]=l("",3))]),t("details",u,[t("summary",null,[s[3]||(s[3]=t("a",{id:"Boltz.Utils.flatten_spatial-Union{Tuple{AbstractArray{T, 4}}, Tuple{T}} where T",href:"#Boltz.Utils.flatten_spatial-Union{Tuple{AbstractArray{T, 4}}, Tuple{T}} where T"},[t("span",{class:"jlbinding"},"Boltz.Utils.flatten_spatial")],-1)),s[4]||(s[4]=e()),i(a,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[5]||(s[5]=l("",3))]),t("details",k,[t("summary",null,[s[6]||(s[6]=t("a",{id:"Boltz.Utils.second_dim_mean-Tuple{Any}",href:"#Boltz.Utils.second_dim_mean-Tuple{Any}"},[t("span",{class:"jlbinding"},"Boltz.Utils.second_dim_mean")],-1)),s[7]||(s[7]=e()),i(a,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[8]||(s[8]=l("",3))]),t("details",c,[t("summary",null,[s[9]||(s[9]=t("a",{id:"Boltz.Utils.should_type_assert-Union{Tuple{AbstractArray{T}}, Tuple{T}} where T",href:"#Boltz.Utils.should_type_assert-Union{Tuple{AbstractArray{T}}, Tuple{T}} where T"},[t("span",{class:"jlbinding"},"Boltz.Utils.should_type_assert")],-1)),s[10]||(s[10]=e()),i(a,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[11]||(s[11]=l("",3))])])}const A=n(d,[["render",b]]);export{j as __pageData,A as default}; diff --git a/previews/PR98/assets/api_vision.md.B5rI8T8X.js b/previews/PR98/assets/api_vision.md.B5rI8T8X.js new file mode 100644 index 0000000..56aa70b --- /dev/null +++ b/previews/PR98/assets/api_vision.md.B5rI8T8X.js @@ -0,0 +1 @@ +import{_ as n,c as o,j as t,a as i,G as l,a2 as s,B as d,o as r}from"./chunks/framework.BI0fNMXE.js";const T=JSON.parse('{"title":"Computer Vision Models (Vision API)","description":"","frontmatter":{},"headers":[],"relativePath":"api/vision.md","filePath":"api/vision.md","lastUpdated":null}'),p={name:"api/vision.md"},h={class:"jldocstring custom-block",open:""},c={class:"jldocstring custom-block",open:""},g={class:"jldocstring custom-block",open:""},k={class:"jldocstring custom-block",open:""},u={class:"jldocstring custom-block",open:""},y={class:"jldocstring custom-block",open:""},m={class:"jldocstring custom-block",open:""},b={class:"jldocstring custom-block",open:""},f={class:"jldocstring custom-block",open:""},C={class:"jldocstring custom-block",open:""},v={class:"jldocstring custom-block",open:""};function E(x,e,F,B,_,j){const a=d("Badge");return r(),o("div",null,[e[33]||(e[33]=t("h1",{id:"Computer-Vision-Models-(Vision-API)",tabindex:"-1"},[i("Computer Vision Models ("),t("code",null,"Vision"),i(" API) "),t("a",{class:"header-anchor",href:"#Computer-Vision-Models-(Vision-API)","aria-label":'Permalink to "Computer Vision Models (`Vision` API) {#Computer-Vision-Models-(Vision-API)}"'},"​")],-1)),e[34]||(e[34]=t("h2",{id:"Native-Lux-Models",tabindex:"-1"},[i("Native Lux Models "),t("a",{class:"header-anchor",href:"#Native-Lux-Models","aria-label":'Permalink to "Native Lux Models {#Native-Lux-Models}"'},"​")],-1)),t("details",h,[t("summary",null,[e[0]||(e[0]=t("a",{id:"Boltz.Vision.AlexNet",href:"#Boltz.Vision.AlexNet"},[t("span",{class:"jlbinding"},"Boltz.Vision.AlexNet")],-1)),e[1]||(e[1]=i()),l(a,{type:"info",class:"jlObjectType jlType",text:"Type"})]),e[2]||(e[2]=s('
julia
AlexNet(; kwargs...)

Create an AlexNet model (Krizhevsky et al., 2012).

Keyword Arguments

source

',5))]),t("details",c,[t("summary",null,[e[3]||(e[3]=t("a",{id:"Boltz.Vision.VGG",href:"#Boltz.Vision.VGG"},[t("span",{class:"jlbinding"},"Boltz.Vision.VGG")],-1)),e[4]||(e[4]=i()),l(a,{type:"info",class:"jlObjectType jlType",text:"Type"})]),e[5]||(e[5]=s('
julia
VGG(imsize; config, inchannels, batchnorm = false, nclasses, fcsize, dropout)

Create a VGG model (Simonyan, 2014).

Arguments

source

julia
VGG(depth::Int; batchnorm::Bool=false, pretrained::Bool=false)

Create a VGG model (Simonyan, 2014) with ImageNet Configuration.

Arguments

Keyword Arguments

source

',12))]),t("details",g,[t("summary",null,[e[6]||(e[6]=t("a",{id:"Boltz.Vision.VisionTransformer",href:"#Boltz.Vision.VisionTransformer"},[t("span",{class:"jlbinding"},"Boltz.Vision.VisionTransformer")],-1)),e[7]||(e[7]=i()),l(a,{type:"info",class:"jlObjectType jlType",text:"Type"})]),e[8]||(e[8]=s('
julia
VisionTransformer(name::Symbol; pretrained=false)

Creates a Vision Transformer model with the specified configuration.

Arguments

Keyword Arguments

source

',7))]),e[35]||(e[35]=t("h2",{id:"Imported-from-Metalhead.jl",tabindex:"-1"},[i("Imported from Metalhead.jl "),t("a",{class:"header-anchor",href:"#Imported-from-Metalhead.jl","aria-label":'Permalink to "Imported from Metalhead.jl {#Imported-from-Metalhead.jl}"'},"​")],-1)),e[36]||(e[36]=t("div",{class:"tip custom-block"},[t("p",{class:"custom-block-title"},"Load Metalhead"),t("p",null,[i("You need to load "),t("code",null,"Metalhead"),i(" before using these models.")])],-1)),t("details",k,[t("summary",null,[e[9]||(e[9]=t("a",{id:"Boltz.Vision.ConvMixer",href:"#Boltz.Vision.ConvMixer"},[t("span",{class:"jlbinding"},"Boltz.Vision.ConvMixer")],-1)),e[10]||(e[10]=i()),l(a,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),e[11]||(e[11]=s('
julia
ConvMixer(name::Symbol; pretrained::Bool=false)

Create a ConvMixer model (Trockman and Kolter, 2022).

Arguments

Keyword Arguments

source

',7))]),t("details",u,[t("summary",null,[e[12]||(e[12]=t("a",{id:"Boltz.Vision.DenseNet",href:"#Boltz.Vision.DenseNet"},[t("span",{class:"jlbinding"},"Boltz.Vision.DenseNet")],-1)),e[13]||(e[13]=i()),l(a,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),e[14]||(e[14]=s('
julia
DenseNet(depth::Int; pretrained::Bool=false)

Create a DenseNet model (Huang et al., 2017).

Arguments

Keyword Arguments

source

',7))]),t("details",y,[t("summary",null,[e[15]||(e[15]=t("a",{id:"Boltz.Vision.GoogLeNet",href:"#Boltz.Vision.GoogLeNet"},[t("span",{class:"jlbinding"},"Boltz.Vision.GoogLeNet")],-1)),e[16]||(e[16]=i()),l(a,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),e[17]||(e[17]=s('
julia
GoogLeNet(; pretrained::Bool=false)

Create a GoogLeNet model (Szegedy et al., 2015).

Keyword Arguments

source

',5))]),t("details",m,[t("summary",null,[e[18]||(e[18]=t("a",{id:"Boltz.Vision.MobileNet",href:"#Boltz.Vision.MobileNet"},[t("span",{class:"jlbinding"},"Boltz.Vision.MobileNet")],-1)),e[19]||(e[19]=i()),l(a,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),e[20]||(e[20]=s('
julia
MobileNet(name::Symbol; pretrained::Bool=false)

Create a MobileNet model (Howard, 2017; Sandler et al., 2018; Howard et al., 2019).

Arguments

Keyword Arguments

source

',7))]),t("details",b,[t("summary",null,[e[21]||(e[21]=t("a",{id:"Boltz.Vision.ResNet",href:"#Boltz.Vision.ResNet"},[t("span",{class:"jlbinding"},"Boltz.Vision.ResNet")],-1)),e[22]||(e[22]=i()),l(a,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),e[23]||(e[23]=s('
julia
ResNet(depth::Int; pretrained::Bool=false)

Create a ResNet model (He et al., 2016).

Arguments

Keyword Arguments

source

',7))]),t("details",f,[t("summary",null,[e[24]||(e[24]=t("a",{id:"Boltz.Vision.ResNeXt",href:"#Boltz.Vision.ResNeXt"},[t("span",{class:"jlbinding"},"Boltz.Vision.ResNeXt")],-1)),e[25]||(e[25]=i()),l(a,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),e[26]||(e[26]=s('
julia
ResNeXt(depth::Int; cardinality=32, base_width=nothing, pretrained::Bool=false)

Create a ResNeXt model (Xie et al., 2017).

Arguments

Keyword Arguments

source

',7))]),t("details",C,[t("summary",null,[e[27]||(e[27]=t("a",{id:"Boltz.Vision.SqueezeNet",href:"#Boltz.Vision.SqueezeNet"},[t("span",{class:"jlbinding"},"Boltz.Vision.SqueezeNet")],-1)),e[28]||(e[28]=i()),l(a,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),e[29]||(e[29]=s('
julia
SqueezeNet(; pretrained::Bool=false)

Create a SqueezeNet model (Iandola et al., 2016).

Keyword Arguments

source

',5))]),t("details",v,[t("summary",null,[e[30]||(e[30]=t("a",{id:"Boltz.Vision.WideResNet",href:"#Boltz.Vision.WideResNet"},[t("span",{class:"jlbinding"},"Boltz.Vision.WideResNet")],-1)),e[31]||(e[31]=i()),l(a,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),e[32]||(e[32]=s('
julia
WideResNet(depth::Int; pretrained::Bool=false)

Create a WideResNet model (Zagoruyko and Komodakis, 2017).

Arguments

Keyword Arguments

source

',7))]),e[37]||(e[37]=s('

Pretrained Models

Load JLD2

You need to load JLD2 before being able to load pretrained weights.

Load Pretrained Weights

Pass pretrained=true to the model constructor to load the pretrained weights.

MODELTOP 1 ACCURACY (%)TOP 5 ACCURACY (%)
AlexNet()54.4877.72
VGG(11)67.3587.91
VGG(13)68.4088.48
VGG(16)70.2489.80
VGG(19)71.0990.27
VGG(11; batchnorm=true)69.0988.94
VGG(13; batchnorm=true)69.6689.49
VGG(16; batchnorm=true)72.1191.02
VGG(19; batchnorm=true)72.9591.32
ResNet(18)--
ResNet(34)--
ResNet(50)--
ResNet(101)--
ResNet(152)--
ResNeXt(50; cardinality=32, base_width=4)--
ResNeXt(101; cardinality=32, base_width=8)--
ResNeXt(101; cardinality=64, base_width=4)--
SqueezeNet()--
WideResNet(50)--
WideResNet(101)--

Pretrained Models from Metalhead

For Models imported from Metalhead, the pretrained weights can be loaded if they are available in Metalhead. Refer to the Metalhead.jl docs for a list of available pretrained models.

Preprocessing

All the pretrained models require that the images be normalized with the parameters mean = [0.485f0, 0.456f0, 0.406f0] and std = [0.229f0, 0.224f0, 0.225f0].


Bibliography

',10))])}const V=n(p,[["render",E]]);export{T as __pageData,V as default}; diff --git a/previews/PR98/assets/api_vision.md.B5rI8T8X.lean.js b/previews/PR98/assets/api_vision.md.B5rI8T8X.lean.js new file mode 100644 index 0000000..63b7383 --- /dev/null +++ b/previews/PR98/assets/api_vision.md.B5rI8T8X.lean.js @@ -0,0 +1 @@ +import{_ as n,c as o,j as t,a as i,G as l,a2 as s,B as d,o as r}from"./chunks/framework.BI0fNMXE.js";const T=JSON.parse('{"title":"Computer Vision Models (Vision API)","description":"","frontmatter":{},"headers":[],"relativePath":"api/vision.md","filePath":"api/vision.md","lastUpdated":null}'),p={name:"api/vision.md"},h={class:"jldocstring custom-block",open:""},c={class:"jldocstring custom-block",open:""},g={class:"jldocstring custom-block",open:""},k={class:"jldocstring custom-block",open:""},u={class:"jldocstring custom-block",open:""},y={class:"jldocstring custom-block",open:""},m={class:"jldocstring custom-block",open:""},b={class:"jldocstring custom-block",open:""},f={class:"jldocstring custom-block",open:""},C={class:"jldocstring custom-block",open:""},v={class:"jldocstring custom-block",open:""};function E(x,e,F,B,_,j){const a=d("Badge");return r(),o("div",null,[e[33]||(e[33]=t("h1",{id:"Computer-Vision-Models-(Vision-API)",tabindex:"-1"},[i("Computer Vision Models ("),t("code",null,"Vision"),i(" API) "),t("a",{class:"header-anchor",href:"#Computer-Vision-Models-(Vision-API)","aria-label":'Permalink to "Computer Vision Models (`Vision` API) {#Computer-Vision-Models-(Vision-API)}"'},"​")],-1)),e[34]||(e[34]=t("h2",{id:"Native-Lux-Models",tabindex:"-1"},[i("Native Lux Models "),t("a",{class:"header-anchor",href:"#Native-Lux-Models","aria-label":'Permalink to "Native Lux Models {#Native-Lux-Models}"'},"​")],-1)),t("details",h,[t("summary",null,[e[0]||(e[0]=t("a",{id:"Boltz.Vision.AlexNet",href:"#Boltz.Vision.AlexNet"},[t("span",{class:"jlbinding"},"Boltz.Vision.AlexNet")],-1)),e[1]||(e[1]=i()),l(a,{type:"info",class:"jlObjectType jlType",text:"Type"})]),e[2]||(e[2]=s("",5))]),t("details",c,[t("summary",null,[e[3]||(e[3]=t("a",{id:"Boltz.Vision.VGG",href:"#Boltz.Vision.VGG"},[t("span",{class:"jlbinding"},"Boltz.Vision.VGG")],-1)),e[4]||(e[4]=i()),l(a,{type:"info",class:"jlObjectType jlType",text:"Type"})]),e[5]||(e[5]=s("",12))]),t("details",g,[t("summary",null,[e[6]||(e[6]=t("a",{id:"Boltz.Vision.VisionTransformer",href:"#Boltz.Vision.VisionTransformer"},[t("span",{class:"jlbinding"},"Boltz.Vision.VisionTransformer")],-1)),e[7]||(e[7]=i()),l(a,{type:"info",class:"jlObjectType jlType",text:"Type"})]),e[8]||(e[8]=s("",7))]),e[35]||(e[35]=t("h2",{id:"Imported-from-Metalhead.jl",tabindex:"-1"},[i("Imported from Metalhead.jl "),t("a",{class:"header-anchor",href:"#Imported-from-Metalhead.jl","aria-label":'Permalink to "Imported from Metalhead.jl {#Imported-from-Metalhead.jl}"'},"​")],-1)),e[36]||(e[36]=t("div",{class:"tip custom-block"},[t("p",{class:"custom-block-title"},"Load Metalhead"),t("p",null,[i("You need to load "),t("code",null,"Metalhead"),i(" before using these models.")])],-1)),t("details",k,[t("summary",null,[e[9]||(e[9]=t("a",{id:"Boltz.Vision.ConvMixer",href:"#Boltz.Vision.ConvMixer"},[t("span",{class:"jlbinding"},"Boltz.Vision.ConvMixer")],-1)),e[10]||(e[10]=i()),l(a,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),e[11]||(e[11]=s("",7))]),t("details",u,[t("summary",null,[e[12]||(e[12]=t("a",{id:"Boltz.Vision.DenseNet",href:"#Boltz.Vision.DenseNet"},[t("span",{class:"jlbinding"},"Boltz.Vision.DenseNet")],-1)),e[13]||(e[13]=i()),l(a,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),e[14]||(e[14]=s("",7))]),t("details",y,[t("summary",null,[e[15]||(e[15]=t("a",{id:"Boltz.Vision.GoogLeNet",href:"#Boltz.Vision.GoogLeNet"},[t("span",{class:"jlbinding"},"Boltz.Vision.GoogLeNet")],-1)),e[16]||(e[16]=i()),l(a,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),e[17]||(e[17]=s("",5))]),t("details",m,[t("summary",null,[e[18]||(e[18]=t("a",{id:"Boltz.Vision.MobileNet",href:"#Boltz.Vision.MobileNet"},[t("span",{class:"jlbinding"},"Boltz.Vision.MobileNet")],-1)),e[19]||(e[19]=i()),l(a,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),e[20]||(e[20]=s("",7))]),t("details",b,[t("summary",null,[e[21]||(e[21]=t("a",{id:"Boltz.Vision.ResNet",href:"#Boltz.Vision.ResNet"},[t("span",{class:"jlbinding"},"Boltz.Vision.ResNet")],-1)),e[22]||(e[22]=i()),l(a,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),e[23]||(e[23]=s("",7))]),t("details",f,[t("summary",null,[e[24]||(e[24]=t("a",{id:"Boltz.Vision.ResNeXt",href:"#Boltz.Vision.ResNeXt"},[t("span",{class:"jlbinding"},"Boltz.Vision.ResNeXt")],-1)),e[25]||(e[25]=i()),l(a,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),e[26]||(e[26]=s("",7))]),t("details",C,[t("summary",null,[e[27]||(e[27]=t("a",{id:"Boltz.Vision.SqueezeNet",href:"#Boltz.Vision.SqueezeNet"},[t("span",{class:"jlbinding"},"Boltz.Vision.SqueezeNet")],-1)),e[28]||(e[28]=i()),l(a,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),e[29]||(e[29]=s("",5))]),t("details",v,[t("summary",null,[e[30]||(e[30]=t("a",{id:"Boltz.Vision.WideResNet",href:"#Boltz.Vision.WideResNet"},[t("span",{class:"jlbinding"},"Boltz.Vision.WideResNet")],-1)),e[31]||(e[31]=i()),l(a,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),e[32]||(e[32]=s("",7))]),e[37]||(e[37]=s("",10))])}const V=n(p,[["render",E]]);export{T as __pageData,V as default}; diff --git a/previews/PR98/assets/app.4LgnUqY2.js b/previews/PR98/assets/app.4LgnUqY2.js new file mode 100644 index 0000000..38dcd08 --- /dev/null +++ b/previews/PR98/assets/app.4LgnUqY2.js @@ -0,0 +1 @@ +import{R as p}from"./chunks/theme.CxjT12tT.js";import{R as s,a6 as i,a7 as u,a8 as c,a9 as l,aa as f,ab as d,ac as m,ad as h,ae as g,af as A,d as v,u as R,v as w,s as y,ag as C,ah as P,ai as b,a5 as E}from"./chunks/framework.BI0fNMXE.js";function r(e){if(e.extends){const a=r(e.extends);return{...a,...e,async enhanceApp(t){a.enhanceApp&&await a.enhanceApp(t),e.enhanceApp&&await e.enhanceApp(t)}}}return e}const n=r(p),S=v({name:"VitePressApp",setup(){const{site:e,lang:a,dir:t}=R();return w(()=>{y(()=>{document.documentElement.lang=a.value,document.documentElement.dir=t.value})}),e.value.router.prefetchLinks&&C(),P(),b(),n.setup&&n.setup(),()=>E(n.Layout)}});async function T(){globalThis.__VITEPRESS__=!0;const e=_(),a=D();a.provide(u,e);const t=c(e.route);return a.provide(l,t),a.component("Content",f),a.component("ClientOnly",d),Object.defineProperties(a.config.globalProperties,{$frontmatter:{get(){return t.frontmatter.value}},$params:{get(){return t.page.value.params}}}),n.enhanceApp&&await n.enhanceApp({app:a,router:e,siteData:m}),{app:a,router:e,data:t}}function D(){return h(S)}function _(){let e=s;return g(a=>{let t=A(a),o=null;return t&&(e&&(t=t.replace(/\.js$/,".lean.js")),o=import(t)),s&&(e=!1),o},n.NotFound)}s&&T().then(({app:e,router:a,data:t})=>{a.go().then(()=>{i(a.route,t.site),e.mount("#app")})});export{T as createApp}; diff --git a/previews/PR98/assets/chunks/@localSearchIndexroot.78-WC-8u.js b/previews/PR98/assets/chunks/@localSearchIndexroot.78-WC-8u.js new file mode 100644 index 0000000..c21d627 --- /dev/null +++ b/previews/PR98/assets/chunks/@localSearchIndexroot.78-WC-8u.js @@ -0,0 +1 @@ +const e='{"documentCount":28,"nextId":28,"documentIds":{"0":"/Boltz.jl/previews/PR98/api/basis#Boltz.Basis-API-Reference","1":"/Boltz.jl/previews/PR98/api/#API-Reference","2":"/Boltz.jl/previews/PR98/api/#index","3":"/Boltz.jl/previews/PR98/api/layers#Boltz.Layers-API-Reference","4":"/Boltz.jl/previews/PR98/api/layers#bibliography","5":"/Boltz.jl/previews/PR98/api/private#Private-API","6":"/Boltz.jl/previews/PR98/api/vision#Computer-Vision-Models-(Vision-API)","7":"/Boltz.jl/previews/PR98/api/vision#Native-Lux-Models","8":"/Boltz.jl/previews/PR98/api/vision#Imported-from-Metalhead.jl","9":"/Boltz.jl/previews/PR98/api/vision#Pretrained-Models","10":"/Boltz.jl/previews/PR98/api/vision#preprocessing","11":"/Boltz.jl/previews/PR98/api/vision#bibliography","12":"/Boltz.jl/previews/PR98/#How-to-Install-Boltz.jl?","13":"/Boltz.jl/previews/PR98/#Want-GPU-Support?","14":"/Boltz.jl/previews/PR98/tutorials/1_GettingStarted#Getting-Started","15":"/Boltz.jl/previews/PR98/tutorials/1_GettingStarted#Multi-Layer-Perceptron","16":"/Boltz.jl/previews/PR98/tutorials/1_GettingStarted#How-about-VGG?","17":"/Boltz.jl/previews/PR98/tutorials/1_GettingStarted#Loading-Models-from-Metalhead-(Flux.jl)","18":"/Boltz.jl/previews/PR98/tutorials/1_GettingStarted#appendix","19":"/Boltz.jl/previews/PR98/tutorials/2_SymbolicOptimalControl#Solving-Optimal-Control-Problems-with-Symbolic-Universal-Differential-Equations","20":"/Boltz.jl/previews/PR98/tutorials/2_SymbolicOptimalControl#Package-Imports","21":"/Boltz.jl/previews/PR98/tutorials/2_SymbolicOptimalControl#Helper-Functions","22":"/Boltz.jl/previews/PR98/tutorials/2_SymbolicOptimalControl#Training-a-Neural-Network-based-UDE","23":"/Boltz.jl/previews/PR98/tutorials/2_SymbolicOptimalControl#Symbolic-Regression","24":"/Boltz.jl/previews/PR98/tutorials/2_SymbolicOptimalControl#Data-Generation-for-Symbolic-Regression","25":"/Boltz.jl/previews/PR98/tutorials/2_SymbolicOptimalControl#Fitting-the-Symbolic-Expression","26":"/Boltz.jl/previews/PR98/tutorials/2_SymbolicOptimalControl#Combining-the-Neural-Network-with-the-Symbolic-Expression","27":"/Boltz.jl/previews/PR98/tutorials/2_SymbolicOptimalControl#appendix"},"fieldIds":{"title":0,"titles":1,"text":2},"fieldLength":{"0":[4,1,96],"1":[2,1,14],"2":[1,2,35],"3":[4,1,547],"4":[1,1,51],"5":[2,1,84],"6":[5,1,1],"7":[3,5,103],"8":[4,5,102],"9":[2,5,92],"10":[1,5,23],"11":[1,1,181],"12":[6,1,47],"13":[4,1,24],"14":[2,1,42],"15":[3,2,66],"16":[4,2,109],"17":[7,2,90],"18":[1,2,86],"19":[9,1,103],"20":[2,9,921],"21":[2,9,33],"22":[6,9,258],"23":[2,9,31],"24":[5,10,469],"25":[4,10,171],"26":[7,9,171],"27":[1,9,86]},"averageFieldLength":[3.392857142857143,4.107142857142857,144.14285714285714],"storedFields":{"0":{"title":"Boltz.Basis API Reference","titles":[]},"1":{"title":"API Reference","titles":[]},"2":{"title":"Index","titles":["API Reference"]},"3":{"title":"Boltz.Layers API Reference","titles":[]},"4":{"title":"Bibliography","titles":[]},"5":{"title":"Private API","titles":[]},"6":{"title":"Computer Vision Models (Vision API)","titles":[]},"7":{"title":"Native Lux Models","titles":["Computer Vision Models (Vision API)"]},"8":{"title":"Imported from Metalhead.jl","titles":["Computer Vision Models (Vision API)"]},"9":{"title":"Pretrained Models","titles":["Computer Vision Models (Vision API)"]},"10":{"title":"Preprocessing","titles":["Computer Vision Models (Vision API)","Pretrained Models"]},"11":{"title":"Bibliography","titles":[]},"12":{"title":"How to Install Boltz.jl?","titles":[]},"13":{"title":"Want GPU Support?","titles":[]},"14":{"title":"Getting Started","titles":[]},"15":{"title":"Multi-Layer Perceptron","titles":["Getting Started"]},"16":{"title":"How about VGG?","titles":["Getting Started"]},"17":{"title":"Loading Models from Metalhead (Flux.jl)","titles":["Getting Started"]},"18":{"title":"Appendix","titles":["Getting Started"]},"19":{"title":"Solving Optimal Control Problems with Symbolic Universal Differential Equations","titles":[]},"20":{"title":"Package Imports","titles":["Solving Optimal Control Problems with Symbolic Universal Differential Equations"]},"21":{"title":"Helper Functions","titles":["Solving Optimal Control Problems with Symbolic Universal Differential Equations"]},"22":{"title":"Training a Neural Network based UDE","titles":["Solving Optimal Control Problems with Symbolic Universal Differential Equations"]},"23":{"title":"Symbolic Regression","titles":["Solving Optimal Control Problems with Symbolic Universal Differential Equations"]},"24":{"title":"Data Generation for Symbolic Regression","titles":["Solving Optimal Control Problems with Symbolic Universal Differential Equations","Symbolic Regression"]},"25":{"title":"Fitting the Symbolic Expression","titles":["Solving Optimal Control Problems with Symbolic Universal Differential Equations","Symbolic Regression"]},"26":{"title":"Combining the Neural Network with the Symbolic Expression","titles":["Solving Optimal Control Problems with Symbolic Universal Differential Equations"]},"27":{"title":"Appendix","titles":["Solving Optimal Control Problems with Symbolic Universal Differential Equations"]}},"dirtCount":0,"index":[["−x3",{"2":{"25":1}}],["⋅15",{"2":{"25":1}}],["⋅x2−x1",{"2":{"25":1}}],["⋅x2+",{"2":{"25":1}}],["⋅x2+1",{"2":{"25":1}}],["⋅",{"2":{"25":3}}],["~",{"2":{"22":2}}],["`lux",{"2":{"22":2}}],["`m`",{"2":{"22":2}}],[">",{"2":{"22":2}}],["^3",{"2":{"22":1}}],["└",{"2":{"20":1,"22":2}}],["\\u001b",{"2":{"20":1}}],["│",{"2":{"20":1,"22":8}}],["┌",{"2":{"20":1,"22":2}}],["→",{"2":{"20":140}}],["✓",{"2":{"20":412}}],["∥2",{"2":{"19":2}}],["∥2+2∥v",{"2":{"19":1}}],["∥2+2∥x",{"2":{"19":1}}],["∥2+∥u",{"2":{"19":2}}],["∥4−x",{"2":{"19":2}}],["θ",{"2":{"19":2,"22":4}}],["×",{"2":{"18":1,"27":1}}],["ylims",{"2":{"21":1}}],["y",{"2":{"11":2,"25":1}}],["you",{"2":{"5":1,"8":1,"9":1,"11":1,"12":3,"14":1,"16":1,"25":1,"26":2}}],["your",{"2":{"1":1}}],["yosinski",{"2":{"4":1}}],["75889e",{"2":{"24":1}}],["75761e",{"2":{"24":1}}],["755",{"2":{"20":1}}],["7967e",{"2":{"24":1}}],["793",{"2":{"20":1}}],["7939",{"2":{"20":1}}],["799",{"2":{"20":1}}],["791",{"2":{"20":1}}],["7923",{"2":{"20":1}}],["792",{"2":{"16":2}}],["748",{"2":{"20":1}}],["74",{"2":{"20":1}}],["742",{"2":{"20":1}}],["747",{"2":{"20":1}}],["762",{"2":{"20":1}}],["760",{"2":{"20":2}}],["766",{"2":{"20":1}}],["7650",{"2":{"20":1}}],["76872e",{"2":{"24":1}}],["768",{"2":{"17":1}}],["764",{"2":{"16":2}}],["78221e",{"2":{"24":1}}],["78357e",{"2":{"24":1}}],["788",{"2":{"20":1}}],["78182e",{"2":{"24":1}}],["781",{"2":{"16":2,"20":2}}],["784",{"2":{"15":4,"20":1}}],["7",{"2":{"16":2,"17":2,"20":42,"24":17,"26":1}}],["73601e",{"2":{"24":1}}],["739",{"2":{"20":1}}],["734",{"2":{"20":1}}],["732",{"2":{"20":1}}],["731",{"2":{"20":2}}],["73",{"2":{"16":2,"17":1,"20":2}}],["71169e",{"2":{"24":1}}],["7198e",{"2":{"24":1}}],["71\\tloss",{"2":{"22":1}}],["71",{"2":{"9":1,"20":1}}],["70971e",{"2":{"24":1}}],["708",{"2":{"20":1}}],["703",{"2":{"20":1}}],["7006",{"2":{"20":1}}],["700",{"2":{"20":1}}],["70",{"2":{"9":1,"20":1}}],["723",{"2":{"20":1}}],["725",{"2":{"20":1}}],["7276",{"2":{"20":1}}],["728",{"2":{"17":1}}],["72",{"2":{"9":3}}],["77655e",{"2":{"24":1}}],["7763",{"2":{"18":1,"27":1}}],["77414e",{"2":{"24":1}}],["772",{"2":{"20":1}}],["778",{"2":{"11":1}}],["77079e",{"2":{"24":1}}],["770",{"2":{"11":1}}],["7700815",{"2":{"3":1}}],["77",{"2":{"9":1,"20":1}}],["81272e",{"2":{"24":1}}],["81\\tloss",{"2":{"22":1}}],["811",{"2":{"20":1}}],["8mvob",{"2":{"22":2}}],["83165e",{"2":{"24":1}}],["8385",{"2":{"20":1}}],["83",{"2":{"20":2}}],["86745",{"2":{"20":1}}],["867",{"2":{"20":1}}],["8620",{"2":{"20":1}}],["86",{"2":{"20":1}}],["864",{"2":{"17":4}}],["852",{"2":{"20":2}}],["8507",{"2":{"20":1}}],["850",{"2":{"20":1}}],["856",{"2":{"16":2}}],["843",{"2":{"20":1}}],["840",{"2":{"20":1}}],["848",{"2":{"16":2}}],["82961e",{"2":{"24":1}}],["824",{"2":{"17":3,"20":1}}],["8266668",{"2":{"3":1}}],["8058",{"2":{"25":1}}],["8057907515075073",{"2":{"25":1,"26":1}}],["8092e",{"2":{"24":1}}],["8091",{"2":{"20":1}}],["803",{"2":{"20":1}}],["802",{"2":{"20":1}}],["804",{"2":{"20":1}}],["808",{"2":{"16":6}}],["80",{"2":{"9":1}}],["89761e",{"2":{"24":1}}],["89225e",{"2":{"24":1}}],["89833e",{"2":{"24":1}}],["890",{"2":{"20":1}}],["8949",{"2":{"20":1}}],["89",{"2":{"9":2}}],["884722",{"2":{"24":1}}],["88186",{"2":{"20":1}}],["8812",{"2":{"20":1}}],["888",{"2":{"20":1}}],["886",{"2":{"20":1}}],["88",{"2":{"9":2}}],["87018e",{"2":{"24":1}}],["87773e",{"2":{"24":1}}],["87257e",{"2":{"24":1}}],["87251e",{"2":{"24":1}}],["87631e",{"2":{"24":1}}],["8759",{"2":{"20":1}}],["8739",{"2":{"20":1}}],["87825e",{"2":{"24":1}}],["878",{"2":{"20":1}}],["87",{"2":{"9":1}}],["8",{"2":{"8":1,"16":2,"17":1,"19":1,"20":43,"22":7,"24":14,"26":3}}],["⊗⋯⊗bn",{"2":{"3":1}}],["⊗b2",{"2":{"3":1}}],["⊙",{"2":{"3":1}}],["zstd",{"2":{"20":1}}],["znver3",{"2":{"18":1,"27":1}}],["z",{"2":{"11":3}}],["zhmoginov",{"2":{"11":1}}],["zhu",{"2":{"11":2}}],["zhang",{"2":{"11":1}}],["zhai",{"2":{"4":1}}],["zagoruyko",{"2":{"8":1,"11":1}}],["zout",{"2":{"3":1}}],["z1",{"2":{"3":1}}],["zi=wi",{"2":{"3":1}}],["zygotecolorsext",{"2":{"20":2}}],["zygotetrackerext",{"2":{"20":1}}],["zygote",{"2":{"3":4,"20":2}}],["qoi",{"2":{"20":1}}],["q",{"2":{"11":1}}],["quadgkenzymeext",{"2":{"20":1}}],["quadgk",{"2":{"20":2}}],["quadraticspline",{"2":{"3":1}}],["quadraticinterpolation",{"2":{"3":1}}],["query",{"2":{"3":1}}],["quot",{"2":{"3":2,"14":2}}],["qkv",{"2":{"3":2}}],["929",{"2":{"20":1}}],["928",{"2":{"16":2}}],["98637e",{"2":{"24":1}}],["98088e",{"2":{"24":1}}],["98976e",{"2":{"24":1}}],["985",{"2":{"20":1}}],["982",{"2":{"20":1}}],["98384e",{"2":{"24":1}}],["983",{"2":{"20":1}}],["98",{"2":{"20":1}}],["99068e",{"2":{"24":1}}],["9972",{"2":{"20":1}}],["9961",{"2":{"20":1}}],["9995737",{"2":{"3":1}}],["9396e",{"2":{"24":1}}],["93359e",{"2":{"24":1}}],["931",{"2":{"20":1}}],["9366",{"2":{"20":1}}],["9374",{"2":{"20":1}}],["932",{"2":{"20":1}}],["97538e",{"2":{"24":1}}],["977e",{"2":{"24":1}}],["971",{"2":{"20":1}}],["97604e",{"2":{"24":1}}],["976",{"2":{"20":2}}],["97371e",{"2":{"24":1}}],["973",{"2":{"20":1}}],["970",{"2":{"20":1}}],["97",{"2":{"20":3}}],["974",{"2":{"20":2}}],["9640",{"2":{"20":1}}],["968",{"2":{"20":1}}],["96",{"2":{"20":1}}],["963",{"2":{"20":1}}],["96024e",{"2":{"24":1}}],["960",{"2":{"15":2,"20":1}}],["9",{"2":{"11":1,"16":2,"17":2,"20":42,"24":22}}],["95524e",{"2":{"24":1}}],["951",{"2":{"20":1}}],["958",{"2":{"20":1}}],["950",{"2":{"20":1}}],["956",{"2":{"20":1}}],["95",{"2":{"9":1}}],["943",{"2":{"20":1}}],["9471e",{"2":{"24":1}}],["94783e",{"2":{"24":1}}],["947",{"2":{"20":1}}],["94",{"2":{"9":1}}],["91325e",{"2":{"24":1}}],["91\\tloss",{"2":{"22":1}}],["919",{"2":{"20":1}}],["9110",{"2":{"20":1}}],["912",{"2":{"17":1}}],["91",{"2":{"9":3}}],["90078e",{"2":{"24":1}}],["906",{"2":{"20":1}}],["90",{"2":{"3":1,"9":1,"20":1}}],["∘",{"2":{"3":2}}],["∂ps",{"2":{"3":3}}],["∂x",{"2":{"3":2}}],["≈",{"2":{"3":4}}],["62392e",{"2":{"24":1}}],["62879e",{"2":{"24":1}}],["620",{"2":{"17":1}}],["61753e",{"2":{"24":1}}],["61\\tloss",{"2":{"22":1}}],["6164",{"2":{"20":1}}],["60071e",{"2":{"24":1}}],["60432e",{"2":{"24":1}}],["60445e",{"2":{"24":1}}],["6048",{"2":{"20":1}}],["605",{"2":{"20":1}}],["65756e",{"2":{"24":1}}],["657",{"2":{"20":1}}],["650",{"2":{"20":1}}],["651",{"2":{"20":1}}],["6346+−0",{"2":{"25":1}}],["634586090196312",{"2":{"25":1,"26":1}}],["633",{"2":{"20":1}}],["636",{"2":{"20":1}}],["6313",{"2":{"20":1}}],["638",{"2":{"20":2}}],["64438e",{"2":{"24":1}}],["644",{"2":{"20":1}}],["64344",{"2":{"25":1}}],["6434378096334555",{"2":{"25":1,"26":1}}],["643",{"2":{"20":1}}],["646",{"2":{"20":1}}],["648",{"2":{"17":1}}],["64",{"2":{"16":8,"17":16,"18":3,"27":3}}],["66797e",{"2":{"24":1}}],["6671",{"2":{"20":1}}],["660",{"2":{"20":1}}],["6683",{"2":{"20":1}}],["66",{"2":{"9":1}}],["6983",{"2":{"22":1}}],["6970",{"2":{"20":1}}],["6971",{"2":{"20":1}}],["69",{"2":{"9":2,"20":1}}],["6967068",{"2":{"3":1}}],["68423e",{"2":{"24":1}}],["680",{"2":{"20":1}}],["687",{"2":{"20":1}}],["68194",{"2":{"20":1}}],["6814",{"2":{"3":1}}],["682",{"2":{"20":1}}],["689",{"2":{"17":1}}],["68",{"2":{"9":1}}],["67624e",{"2":{"24":1}}],["67571e",{"2":{"24":1}}],["677",{"2":{"20":1}}],["6729",{"2":{"20":1}}],["67",{"2":{"9":1,"20":1}}],["6",{"2":{"3":3,"16":4,"18":1,"20":28,"21":2,"24":17,"25":1,"26":2,"27":1}}],["4×81",{"2":{"24":2}}],["4137e",{"2":{"24":1}}],["41222e",{"2":{"24":1}}],["41\\tloss",{"2":{"22":1}}],["4164",{"2":{"22":1}}],["4147",{"2":{"22":1}}],["41556",{"2":{"20":1}}],["418",{"2":{"20":1}}],["44157",{"2":{"24":1}}],["44858",{"2":{"24":1}}],["44879e",{"2":{"24":1}}],["4425",{"2":{"20":1}}],["4475",{"2":{"20":1}}],["4437",{"2":{"20":1}}],["439",{"2":{"25":1}}],["4390086486201723",{"2":{"25":1,"26":1}}],["4391",{"2":{"20":1}}],["43001e",{"2":{"24":1}}],["43",{"2":{"20":1}}],["4386",{"2":{"20":1}}],["435",{"2":{"20":1}}],["4616",{"2":{"24":1}}],["46184e",{"2":{"24":1}}],["46098e",{"2":{"24":1}}],["46883e",{"2":{"24":1}}],["46263e",{"2":{"24":1}}],["46203",{"2":{"20":1}}],["46734e",{"2":{"24":1}}],["4666",{"2":{"20":1}}],["4660",{"2":{"20":1}}],["46",{"2":{"20":1}}],["47422",{"2":{"25":1}}],["47562e",{"2":{"24":1}}],["47914e",{"2":{"24":1}}],["4799",{"2":{"20":1}}],["471",{"2":{"22":1}}],["473",{"2":{"20":1}}],["4760",{"2":{"20":1}}],["4774",{"2":{"20":1}}],["478",{"2":{"20":1}}],["47",{"2":{"20":1}}],["47018e",{"2":{"24":1}}],["4708",{"2":{"11":1}}],["4700",{"2":{"11":1}}],["42147",{"2":{"24":1}}],["4219",{"2":{"20":1}}],["4272",{"2":{"20":1}}],["42820",{"2":{"20":1}}],["42",{"2":{"18":1,"20":1,"27":1}}],["49754",{"2":{"24":1}}],["496",{"2":{"20":1}}],["499",{"2":{"20":2}}],["49",{"2":{"9":1,"20":2}}],["40205",{"2":{"24":1}}],["40224e",{"2":{"24":1}}],["40918e",{"2":{"24":1}}],["4096",{"2":{"16":8}}],["40098e",{"2":{"24":1}}],["40435e",{"2":{"24":1}}],["4045",{"2":{"20":1}}],["40111",{"2":{"24":1}}],["401",{"2":{"22":1}}],["401\\tloss",{"2":{"22":1}}],["4012",{"2":{"20":1}}],["4032",{"2":{"20":1}}],["408",{"2":{"17":1}}],["406f0",{"2":{"10":1}}],["40",{"2":{"9":1,"22":1}}],["48062",{"2":{"24":1}}],["4827",{"2":{"24":1}}],["48515e",{"2":{"24":1}}],["48579e",{"2":{"24":1}}],["485f0",{"2":{"10":1}}],["4881",{"2":{"20":1}}],["4862",{"2":{"20":1}}],["48",{"2":{"9":2,"20":2}}],["4537−",{"2":{"25":1}}],["4536618215595043",{"2":{"25":1,"26":1}}],["45911e",{"2":{"24":1}}],["4545",{"2":{"20":1}}],["4544041",{"2":{"3":1}}],["458",{"2":{"20":1}}],["45",{"2":{"20":1}}],["456",{"2":{"17":3}}],["456f0",{"2":{"10":1}}],["4520",{"2":{"11":1}}],["451\\tloss",{"2":{"22":1}}],["4510",{"2":{"11":1}}],["451908",{"2":{"3":1}}],["4",{"2":{"3":8,"5":1,"8":1,"16":8,"17":9,"18":2,"20":50,"22":10,"23":2,"24":12,"25":3,"26":8,"27":2}}],["rb",{"2":{"21":1}}],["roundingemulator",{"2":{"20":1}}],["rocm",{"2":{"13":1}}],["rmath",{"2":{"20":2}}],["runtimegeneratedfunctions",{"2":{"20":1}}],["run",{"2":{"12":2}}],["r",{"2":{"11":2,"25":9}}],["rangearrays",{"2":{"20":1}}],["randn32",{"2":{"3":3}}],["random123",{"2":{"20":1}}],["randomnumbers",{"2":{"20":1}}],["random",{"2":{"3":3,"14":1,"20":1}}],["rabinovich",{"2":{"11":1}}],["ratiosfixedpointnumbersext",{"2":{"20":1}}],["ratios",{"2":{"20":2}}],["ratio",{"2":{"3":3}}],["rate",{"2":{"3":7}}],["rng",{"2":{"3":3,"22":3,"26":2}}],["reuse",{"2":{"26":1}}],["report",{"2":{"25":1}}],["replace",{"2":{"23":1}}],["replaced",{"2":{"3":1}}],["repl",{"2":{"12":1}}],["ret",{"2":{"22":2}}],["returned",{"2":{"3":1}}],["returns",{"2":{"3":5}}],["return",{"2":{"3":3,"21":1,"22":11}}],["regression",{"0":{"23":1,"24":1},"1":{"24":1,"25":1},"2":{"22":1,"24":1}}],["registry",{"2":{"12":1}}],["registered",{"2":{"12":1}}],["reversediff",{"2":{"20":1,"22":4}}],["recursivefactorization",{"2":{"20":1}}],["recursivearraytoolsreversediffext",{"2":{"20":1}}],["recursivearraytoolstrackerext",{"2":{"20":1}}],["recursivearraytoolszygoteext",{"2":{"20":1}}],["recursivearraytoolsstructarraysext",{"2":{"20":1}}],["recursivearraytoolssparsearraysext",{"2":{"20":1}}],["recursivearraytoolsfastbroadcastext",{"2":{"20":1}}],["recursivearraytoolsforwarddiffext",{"2":{"20":1}}],["recursivearraytools",{"2":{"20":8}}],["recipesbase",{"2":{"20":1}}],["recognition",{"2":{"4":1,"11":7}}],["reduce",{"2":{"19":1}}],["rewrite",{"2":{"19":1}}],["remember",{"2":{"17":1}}],["remaining",{"2":{"5":1}}],["reed",{"2":{"11":1}}],["ren",{"2":{"11":1}}],["require",{"2":{"10":1}}],["reltol=1e",{"2":{"22":2,"26":1}}],["relocatablefolders",{"2":{"20":1}}],["release",{"2":{"18":1,"27":1}}],["released",{"2":{"12":1}}],["relies",{"2":{"3":1}}],["relu",{"2":{"3":1,"15":4,"16":24,"17":17}}],["real=0",{"2":{"3":1}}],["refer",{"2":{"3":2,"9":1}}],["reference",{"0":{"0":1,"1":1,"3":1},"1":{"2":1},"2":{"5":1}}],["res2",{"2":{"22":4}}],["res1",{"2":{"22":2}}],["reshape",{"2":{"22":1,"24":1}}],["resettablestacks",{"2":{"20":1}}],["research",{"2":{"1":1}}],["respect",{"2":{"19":1}}],["residuals",{"2":{"11":1}}],["residual",{"2":{"11":3}}],["resnet",{"2":{"2":1,"8":3,"9":5,"17":1}}],["resnext",{"2":{"2":1,"8":5,"9":3}}],["06193−0",{"2":{"25":1}}],["061929614395115545",{"2":{"25":1,"26":1}}],["0685907",{"2":{"24":1}}],["0660352",{"2":{"24":1}}],["0516886",{"2":{"24":1}}],["0595685",{"2":{"24":1}}],["05921e",{"2":{"24":1}}],["05906e",{"2":{"24":1}}],["0573086",{"2":{"24":1}}],["057209",{"2":{"24":1}}],["057906",{"2":{"24":1}}],["0859417",{"2":{"24":1}}],["0819568",{"2":{"24":1}}],["0818489",{"2":{"24":1}}],["081764",{"2":{"24":1}}],["0884998",{"2":{"24":1}}],["0822512",{"2":{"24":1}}],["0833352",{"2":{"24":1}}],["080",{"2":{"16":2}}],["0353637",{"2":{"24":1}}],["0359023",{"2":{"24":1}}],["0300455",{"2":{"24":1}}],["0305495",{"2":{"24":1}}],["03078e",{"2":{"24":1}}],["0312451",{"2":{"24":1}}],["0310197",{"2":{"24":1}}],["0317798",{"2":{"24":1}}],["0317854",{"2":{"24":1}}],["0332579",{"2":{"24":1}}],["0373554",{"2":{"24":1}}],["0377292",{"2":{"24":1}}],["0397511",{"2":{"24":1}}],["0074974",{"2":{"25":1}}],["007497421660196726",{"2":{"25":1,"26":1}}],["00708815",{"2":{"24":1}}],["00706458",{"2":{"24":1}}],["0048105",{"2":{"25":1}}],["004810464255583077",{"2":{"25":1,"26":1}}],["00435673",{"2":{"24":1}}],["00868411",{"2":{"24":34}}],["00868412",{"2":{"24":1}}],["00868414",{"2":{"24":1}}],["00868418",{"2":{"24":1}}],["00868426",{"2":{"24":1}}],["00868441",{"2":{"24":1}}],["00868471",{"2":{"24":1}}],["00868524",{"2":{"24":1}}],["00868621",{"2":{"24":1}}],["0086879",{"2":{"24":1}}],["00869079",{"2":{"24":1}}],["0086956",{"2":{"24":1}}],["00870343",{"2":{"24":1}}],["00871587",{"2":{"24":1}}],["00873521",{"2":{"24":1}}],["0087646",{"2":{"24":1}}],["00880831",{"2":{"24":1}}],["00887198",{"2":{"24":1}}],["0089628",{"2":{"24":1}}],["00830924",{"2":{"24":1}}],["00908979",{"2":{"24":1}}],["00926388",{"2":{"24":1}}],["00949794",{"2":{"24":1}}],["00980671",{"2":{"24":1}}],["00974017",{"2":{"24":1}}],["0059069",{"2":{"24":1}}],["00565e",{"2":{"24":1}}],["00503462",{"2":{"24":1}}],["00238742",{"2":{"24":1}}],["00242131",{"2":{"24":1}}],["00213748",{"2":{"24":1}}],["00355998",{"2":{"24":1}}],["00352389",{"2":{"24":1}}],["00307771",{"2":{"24":1}}],["00606573",{"2":{"24":1}}],["00166277",{"2":{"24":1}}],["00163244",{"2":{"24":1}}],["00107935",{"2":{"24":1}}],["00145881",{"2":{"24":1}}],["001",{"2":{"22":1}}],["000856747",{"2":{"24":1}}],["00010528",{"2":{"24":1}}],["000167939",{"2":{"24":1}}],["000163581",{"2":{"24":1}}],["000719452",{"2":{"24":1}}],["000270747",{"2":{"24":1}}],["000276081",{"2":{"24":1}}],["000287171",{"2":{"24":1}}],["000263381",{"2":{"24":1}}],["000444123",{"2":{"24":1}}],["00041574",{"2":{"24":1}}],["000699517",{"2":{"24":1}}],["00064367",{"2":{"24":1}}],["000977957",{"2":{"24":1}}],["000",{"2":{"16":2,"17":1}}],["0102065",{"2":{"24":1}}],["0107144",{"2":{"24":1}}],["0107",{"2":{"22":1}}],["011348",{"2":{"24":1}}],["0112035",{"2":{"24":1}}],["0121237",{"2":{"24":1}}],["0141528",{"2":{"24":1}}],["014873",{"2":{"24":1}}],["0154194",{"2":{"24":1}}],["0168498",{"2":{"24":1}}],["01676e",{"2":{"24":1}}],["0184276",{"2":{"24":1}}],["0130554",{"2":{"24":1}}],["0130715",{"2":{"24":1}}],["0131703",{"2":{"24":1}}],["0132002",{"2":{"24":1}}],["01347e",{"2":{"24":1}}],["0175905",{"2":{"24":1}}],["017267",{"2":{"24":1}}],["019561x2",{"2":{"25":1}}],["01956117602530656",{"2":{"25":1,"26":1}}],["01952e",{"2":{"24":1}}],["0194458",{"2":{"24":1}}],["01",{"2":{"18":1,"19":1,"22":6,"26":2,"27":1}}],["040896",{"2":{"24":1}}],["0400219",{"2":{"24":1}}],["0481281",{"2":{"24":1}}],["04861",{"2":{"11":1}}],["045542",{"2":{"24":1}}],["0468178",{"2":{"24":1}}],["0419072",{"2":{"24":1}}],["0471162",{"2":{"24":1}}],["047",{"2":{"16":2}}],["0786804",{"2":{"24":1}}],["0778875",{"2":{"24":1}}],["0767414",{"2":{"24":1}}],["076181",{"2":{"24":1}}],["07663e",{"2":{"24":1}}],["0763561",{"2":{"24":1}}],["0763",{"2":{"22":1}}],["0700333",{"2":{"24":1}}],["072",{"2":{"17":1}}],["07146",{"2":{"11":1}}],["07360",{"2":{"11":1}}],["0219603",{"2":{"24":32}}],["0219604",{"2":{"24":1}}],["0219605",{"2":{"24":1}}],["0219609",{"2":{"24":1}}],["0219615",{"2":{"24":1}}],["0219629",{"2":{"24":1}}],["0219655",{"2":{"24":1}}],["0219708",{"2":{"24":1}}],["0219807",{"2":{"24":1}}],["0219989",{"2":{"24":1}}],["0218909",{"2":{"24":1}}],["0220317",{"2":{"24":1}}],["022089",{"2":{"24":1}}],["0221869",{"2":{"24":1}}],["0223499",{"2":{"24":1}}],["0226149",{"2":{"24":1}}],["0229031",{"2":{"24":1}}],["0282564",{"2":{"24":1}}],["0282779",{"2":{"24":1}}],["0201231",{"2":{"24":1}}],["0236881",{"2":{"24":1}}],["0236698",{"2":{"24":1}}],["0230357",{"2":{"24":1}}],["0230565",{"2":{"24":1}}],["02301e",{"2":{"24":1}}],["02614",{"2":{"24":1}}],["0269476",{"2":{"24":1}}],["026027",{"2":{"24":1}}],["0293137",{"2":{"24":1}}],["0297327",{"2":{"24":1}}],["0292",{"2":{"3":1}}],["0253838",{"2":{"24":1}}],["0254e",{"2":{"24":1}}],["0250462",{"2":{"24":1}}],["025",{"2":{"17":5}}],["0246766",{"2":{"24":1}}],["024",{"2":{"17":5}}],["02",{"2":{"9":1}}],["099+1",{"2":{"25":1}}],["09890185117278",{"2":{"25":1,"26":1}}],["0986722",{"2":{"24":1}}],["0957383",{"2":{"24":1}}],["0906647",{"2":{"24":1}}],["09117e",{"2":{"24":1}}],["0971338",{"2":{"24":1}}],["0975332",{"2":{"24":1}}],["097",{"2":{"16":2}}],["09792",{"2":{"11":1}}],["09",{"2":{"9":2}}],["0f0",{"2":{"3":12}}],["0",{"2":{"3":28,"10":6,"11":1,"15":2,"16":4,"18":3,"19":2,"20":53,"22":42,"24":536,"25":10,"26":22,"27":3}}],["5618",{"2":{"22":1}}],["5622",{"2":{"20":1}}],["5d",{"2":{"22":2}}],["52903e",{"2":{"24":1}}],["52286",{"2":{"24":1}}],["5228",{"2":{"20":1}}],["521",{"2":{"20":1}}],["5219",{"2":{"20":1}}],["527",{"2":{"20":1}}],["524",{"2":{"20":1}}],["5953134353667464",{"2":{"25":1,"26":1}}],["5986",{"2":{"22":1}}],["5965",{"2":{"22":1}}],["5961",{"2":{"20":1}}],["59",{"2":{"20":1}}],["5931",{"2":{"20":1}}],["5997",{"2":{"20":1}}],["594",{"2":{"20":1}}],["590",{"2":{"16":2}}],["57134e",{"2":{"24":1}}],["579",{"2":{"20":1}}],["57",{"2":{"20":1}}],["574",{"2":{"20":1}}],["577",{"2":{"20":2}}],["570",{"2":{"15":2}}],["538",{"2":{"20":1}}],["531",{"2":{"20":1}}],["535",{"2":{"20":1}}],["530",{"2":{"15":2}}],["583",{"2":{"20":1}}],["580",{"2":{"20":1}}],["589",{"2":{"17":3}}],["584",{"2":{"16":2}}],["51998",{"2":{"24":1}}],["51843",{"2":{"24":1}}],["51099e",{"2":{"24":1}}],["51\\tloss",{"2":{"22":3}}],["5111",{"2":{"24":1}}],["511",{"2":{"20":1}}],["51577e",{"2":{"24":1}}],["515",{"2":{"20":1}}],["516",{"2":{"20":1}}],["513",{"2":{"17":6,"20":1}}],["512",{"2":{"16":14,"17":20}}],["5mb",{"2":{"11":1}}],["50547",{"2":{"24":1}}],["50233−",{"2":{"25":1}}],["502328657412731",{"2":{"25":1,"26":1}}],["502",{"2":{"20":1}}],["503",{"2":{"20":1}}],["5075",{"2":{"20":1}}],["501",{"2":{"20":1}}],["50x",{"2":{"11":1}}],["50",{"2":{"8":3,"9":3,"20":1,"22":1}}],["552+3",{"2":{"25":1}}],["559",{"2":{"22":1}}],["551691733525809",{"2":{"25":1,"26":1}}],["551",{"2":{"20":1}}],["5583",{"2":{"20":1}}],["558",{"2":{"20":1}}],["556",{"2":{"20":1}}],["55",{"2":{"3":1}}],["54007e",{"2":{"24":1}}],["54008e",{"2":{"24":1}}],["5482e",{"2":{"24":1}}],["54967e",{"2":{"24":1}}],["545",{"2":{"20":1}}],["5426",{"2":{"20":1}}],["5467",{"2":{"20":1}}],["544",{"2":{"16":2}}],["54",{"2":{"3":1,"9":1,"20":1}}],["5",{"2":{"3":8,"9":1,"16":8,"17":9,"20":59,"24":23,"26":1}}],["2=lux",{"2":{"26":1}}],["23267e",{"2":{"24":1}}],["2325",{"2":{"20":1}}],["23",{"2":{"22":2,"24":4}}],["23777",{"2":{"20":1}}],["2334",{"2":{"20":1}}],["264828",{"2":{"24":1}}],["2640",{"2":{"20":1}}],["26603e",{"2":{"24":1}}],["26861e",{"2":{"24":1}}],["2670",{"2":{"20":1}}],["2699",{"2":{"20":1}}],["2636",{"2":{"20":1}}],["2622",{"2":{"20":1}}],["26",{"2":{"20":1,"22":1,"24":3}}],["2880839661497687",{"2":{"25":1,"26":1}}],["28808",{"2":{"24":39}}],["28809",{"2":{"24":2}}],["2881−",{"2":{"25":1}}],["28811",{"2":{"24":1}}],["28813",{"2":{"24":1}}],["28816",{"2":{"24":1}}],["28822",{"2":{"24":1}}],["28831",{"2":{"24":1}}],["28846",{"2":{"24":1}}],["28869",{"2":{"24":1}}],["28904",{"2":{"24":1}}],["28956",{"2":{"24":1}}],["28239e",{"2":{"24":1}}],["2818",{"2":{"20":1}}],["2830",{"2":{"20":1}}],["28679",{"2":{"20":1}}],["2870",{"2":{"20":1}}],["28",{"2":{"20":1,"22":1,"24":3}}],["21623e",{"2":{"24":1}}],["21401e",{"2":{"24":1}}],["2142",{"2":{"20":1}}],["21\\tloss",{"2":{"22":1}}],["217",{"2":{"22":1}}],["2193",{"2":{"20":1}}],["21064",{"2":{"20":1}}],["2116",{"2":{"20":1}}],["212740",{"2":{"20":1}}],["2136",{"2":{"20":2}}],["21",{"2":{"18":1,"20":1,"24":5,"27":1}}],["29031",{"2":{"24":1}}],["2929",{"2":{"24":1}}],["2921",{"2":{"20":1}}],["29774",{"2":{"24":1}}],["29957e",{"2":{"24":1}}],["2998",{"2":{"20":1}}],["29139",{"2":{"24":1}}],["2914",{"2":{"22":1}}],["29113",{"2":{"20":1}}],["29",{"2":{"20":2,"22":1,"24":2}}],["296",{"2":{"17":3}}],["29496",{"2":{"24":1}}],["29484e",{"2":{"24":1}}],["294",{"2":{"17":1}}],["295",{"2":{"16":2}}],["2553627279851565",{"2":{"25":1,"26":1}}],["25565",{"2":{"24":1}}],["2559",{"2":{"22":1}}],["251\\tloss",{"2":{"22":1}}],["2539",{"2":{"20":1}}],["2588",{"2":{"20":1}}],["2578",{"2":{"20":1}}],["257",{"2":{"17":5}}],["25088",{"2":{"16":2}}],["25649",{"2":{"20":1}}],["256",{"2":{"15":7,"16":8,"17":20}}],["25",{"2":{"11":1,"22":1,"24":5}}],["2282e",{"2":{"24":1}}],["2216e",{"2":{"24":1}}],["2212",{"2":{"20":1}}],["22297e",{"2":{"24":1}}],["2231",{"2":{"20":1}}],["2248",{"2":{"20":1}}],["224f0",{"2":{"10":1}}],["22744",{"2":{"20":1}}],["22m\\u001b",{"2":{"20":1}}],["22037+",{"2":{"25":1}}],["22037385096229364",{"2":{"25":1,"26":1}}],["2207e",{"2":{"24":1}}],["22077",{"2":{"20":1}}],["2201",{"2":{"11":1}}],["2292",{"2":{"20":1}}],["2298",{"2":{"20":1}}],["229f0",{"2":{"10":1}}],["22",{"2":{"20":1,"22":2,"24":3}}],["225f0",{"2":{"10":1}}],["2761e",{"2":{"24":1}}],["2764",{"2":{"20":1}}],["273e",{"2":{"24":1}}],["2737",{"2":{"20":1}}],["27184",{"2":{"20":1}}],["27",{"2":{"9":1,"20":1,"22":1,"24":3}}],["24381e",{"2":{"24":1}}],["24389e",{"2":{"24":1}}],["245",{"2":{"22":1}}],["2452",{"2":{"20":1}}],["2423",{"2":{"20":1}}],["2407",{"2":{"20":1}}],["2401",{"2":{"20":1}}],["24683",{"2":{"20":1}}],["24",{"2":{"9":1,"22":1,"24":3,"25":1,"26":1}}],["2n",{"2":{"3":1}}],["20",{"2":{"24":3}}],["2059",{"2":{"20":1}}],["2097",{"2":{"20":1}}],["2073",{"2":{"20":1}}],["208",{"2":{"20":1}}],["20614e",{"2":{"24":1}}],["2063",{"2":{"20":1}}],["206482",{"2":{"3":1}}],["20332e",{"2":{"24":1}}],["203",{"2":{"15":2}}],["200",{"2":{"15":2}}],["2025",{"2":{"18":1,"27":1}}],["2022",{"2":{"8":1,"11":1}}],["2020",{"2":{"3":1,"4":1}}],["201\\tloss",{"2":{"22":1}}],["2016",{"2":{"8":2,"11":2}}],["2018",{"2":{"8":1,"11":1}}],["2015",{"2":{"8":1,"11":1,"20":1}}],["201",{"2":{"8":1}}],["2017",{"2":{"8":4,"11":4}}],["2014",{"2":{"7":2,"11":1}}],["2012",{"2":{"7":1,"11":1}}],["2010",{"2":{"4":1}}],["2019",{"2":{"3":1,"4":1,"8":1,"11":1}}],["2×3",{"2":{"3":1}}],["2",{"2":{"3":32,"5":3,"15":3,"16":30,"17":30,"20":65,"21":2,"22":9,"24":24,"25":3,"26":5}}],["2x",{"2":{"0":2}}],["3=trained",{"2":{"26":1}}],["3783",{"2":{"22":1}}],["3759",{"2":{"20":1}}],["38386",{"2":{"24":1}}],["38764e",{"2":{"24":1}}],["38157e",{"2":{"24":1}}],["3899",{"2":{"20":1}}],["3885",{"2":{"20":1}}],["33967",{"2":{"24":1}}],["33772",{"2":{"24":1}}],["33",{"2":{"24":2}}],["3382",{"2":{"20":1}}],["3325",{"2":{"20":1}}],["33454",{"2":{"20":1}}],["30613",{"2":{"24":1}}],["3062",{"2":{"20":1}}],["30953e",{"2":{"24":1}}],["30",{"2":{"24":2}}],["30827e",{"2":{"24":1}}],["3014",{"2":{"24":1}}],["301\\tloss",{"2":{"22":1}}],["3019",{"2":{"20":1}}],["303",{"2":{"20":1}}],["3071",{"2":{"20":1}}],["3076",{"2":{"20":1}}],["3654−",{"2":{"25":1}}],["3654078758771315",{"2":{"25":1,"26":1}}],["3635",{"2":{"22":1}}],["3627",{"2":{"20":1}}],["36727",{"2":{"24":1}}],["3672",{"2":{"20":1}}],["366",{"2":{"20":2}}],["36",{"2":{"16":2,"17":4}}],["35251",{"2":{"24":1}}],["3528",{"2":{"20":1}}],["35657e",{"2":{"24":1}}],["3562",{"2":{"22":1}}],["35387e",{"2":{"24":1}}],["3519",{"2":{"22":1}}],["351\\tloss",{"2":{"22":1}}],["3549",{"2":{"20":1}}],["3503",{"2":{"20":1}}],["3592",{"2":{"20":1}}],["359",{"2":{"16":6,"17":3}}],["35",{"2":{"9":1}}],["34862−0",{"2":{"25":1}}],["3486243198551685",{"2":{"25":1,"26":1}}],["3484",{"2":{"20":1}}],["34384e",{"2":{"24":1}}],["3471",{"2":{"22":1}}],["3445",{"2":{"20":1}}],["3440",{"2":{"20":1}}],["3401",{"2":{"20":1}}],["34253",{"2":{"20":1}}],["34662",{"2":{"20":1}}],["34",{"2":{"8":2,"9":1,"24":1,"26":1}}],["32874",{"2":{"24":1}}],["32607e",{"2":{"24":1}}],["32669",{"2":{"3":1}}],["3256",{"2":{"20":1}}],["32m\\u001b",{"2":{"20":1}}],["32116e",{"2":{"24":1}}],["3210",{"2":{"20":1}}],["321",{"2":{"20":1}}],["3208",{"2":{"20":1}}],["32",{"2":{"4":1,"8":1,"9":1,"17":1,"24":2}}],["31961",{"2":{"24":1}}],["3195",{"2":{"20":1}}],["31074e",{"2":{"24":1}}],["31\\tloss",{"2":{"22":1}}],["3115",{"2":{"20":1}}],["3180",{"2":{"20":1}}],["31213",{"2":{"24":1}}],["312",{"2":{"16":2}}],["31",{"2":{"3":1,"20":2,"24":2}}],["3",{"2":{"3":14,"5":1,"16":46,"17":46,"18":1,"20":43,"24":22,"25":5,"26":5,"27":1}}],["39675e",{"2":{"24":1}}],["39039e",{"2":{"24":1}}],["3959",{"2":{"20":1}}],["3935",{"2":{"20":1}}],["39m",{"2":{"20":1}}],["394",{"2":{"20":1}}],["39",{"2":{"3":3,"5":2,"14":1,"16":1,"22":2,"23":1,"25":1,"26":1}}],["+",{"2":{"3":4,"22":4,"25":9,"26":16}}],["gt",{"2":{"23":1}}],["glib",{"2":{"20":1}}],["gc",{"2":{"18":1,"27":1}}],["gnu",{"2":{"18":1,"27":1}}],["going",{"2":{"11":1,"22":1}}],["googlenet",{"2":{"2":1,"8":2}}],["giflib",{"2":{"20":1}}],["github",{"2":{"12":2}}],["girshick",{"2":{"11":1}}],["gigantic",{"2":{"7":1}}],["giant",{"2":{"7":1}}],["given",{"2":{"3":2,"15":1}}],["gelu",{"2":{"22":2,"23":1,"26":2}}],["gelly",{"2":{"4":1}}],["generic",{"2":{"21":1}}],["generate",{"2":{"24":2}}],["generated",{"2":{"18":1,"27":1}}],["generation",{"0":{"24":1}}],["general",{"2":{"12":1}}],["geometrybasics",{"2":{"20":1}}],["geointerface",{"2":{"20":1}}],["geoformattypes",{"2":{"20":1}}],["gettext",{"2":{"20":1}}],["getting",{"0":{"14":1},"1":{"15":1,"16":1,"17":1,"18":1}}],["get",{"2":{"3":1}}],["g",{"2":{"4":1,"11":4}}],["gpucompiler",{"2":{"20":1}}],["gpus",{"2":{"13":1}}],["gpusintel",{"2":{"13":1}}],["gpusmetal",{"2":{"13":1}}],["gpusamd",{"2":{"13":1}}],["gpu",{"0":{"13":1},"2":{"3":1}}],["graphics",{"2":{"20":1}}],["graphite2",{"2":{"20":1}}],["gradients",{"2":{"3":1}}],["gradient",{"2":{"3":1}}],["grad",{"2":{"3":1}}],["grisu",{"2":{"20":1}}],["gridlayoutbase",{"2":{"20":1}}],["grid",{"2":{"3":15}}],["greydanus",{"2":{"3":1,"4":1}}],["up",{"2":{"22":1}}],["updated",{"2":{"3":1,"25":1}}],["u₂",{"2":{"22":2}}],["u₁",{"2":{"22":1}}],["ude",{"0":{"22":1},"2":{"22":25,"24":4,"26":6}}],["u",{"2":{"19":2,"21":3,"22":5}}],["utc",{"2":{"18":1,"27":1}}],["utils",{"2":{"5":4}}],["url=",{"2":{"12":1}}],["unpack",{"2":{"20":1}}],["unreleased",{"2":{"12":1}}],["unterthiner",{"2":{"4":1}}],["unicodefun",{"2":{"20":1}}],["universal",{"0":{"19":1},"1":{"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1},"2":{"19":1}}],["unitfulext",{"2":{"20":2}}],["unitful",{"2":{"20":3}}],["unityper",{"2":{"20":1}}],["unit",{"2":{"3":1}}],["union",{"2":{"3":1}}],["unchanged",{"2":{"3":2}}],["unary",{"2":{"3":1}}],["us",{"2":{"21":2,"22":11,"26":2}}],["users",{"2":{"3":1}}],["uses",{"2":{"3":1}}],["useful",{"2":{"3":1}}],["use",{"2":{"3":10,"5":2,"7":2,"12":1,"17":20}}],["used",{"2":{"0":1,"3":5}}],["using",{"2":{"1":1,"3":1,"8":1,"12":2,"16":1,"18":1,"19":1,"20":2,"22":2,"25":1,"26":1,"27":1}}],["v",{"2":{"11":2}}],["variable",{"2":{"25":1}}],["vanhoucke",{"2":{"11":1}}],["van",{"2":{"11":1}}],["vasudevan",{"2":{"11":1}}],["val",{"2":{"3":1,"5":2,"22":5,"26":9}}],["values",{"2":{"3":1}}],["value",{"2":{"3":3}}],["v3",{"2":{"8":2}}],["v2",{"2":{"8":1}}],["v1",{"2":{"8":1}}],["vec",{"2":{"21":1}}],["vectorizationbase",{"2":{"20":1}}],["vector",{"2":{"3":3,"25":2}}],["verbosity=0",{"2":{"25":1}}],["vern9",{"2":{"22":2,"26":1}}],["very",{"2":{"11":1,"26":1}}],["versioninfo",{"2":{"18":3,"27":3}}],["version",{"2":{"5":1,"12":3,"18":1,"27":1}}],["vggclassifier",{"2":{"16":2}}],["vggfeatureextractor",{"2":{"16":2}}],["vgg",{"0":{"16":1},"2":{"2":1,"7":4,"9":8,"16":5}}],["virtual",{"2":{"18":1,"27":1}}],["vit",{"2":{"3":1}}],["visiontransformer",{"2":{"2":1,"7":1}}],["visiontransformerencoder",{"2":{"2":1,"3":1}}],["vision",{"0":{"6":2},"1":{"7":2,"8":2,"9":2,"10":2},"2":{"2":11,"3":2,"7":5,"8":8,"11":7,"16":2,"17":1}}],["viposembedding",{"2":{"2":1,"3":1}}],["hybrid",{"2":{"26":4}}],["hypergeometricfunctions",{"2":{"20":1}}],["httpext",{"2":{"20":2}}],["http",{"2":{"20":1}}],["https",{"2":{"12":1,"18":1,"27":1}}],["hostcpufeatures",{"2":{"20":1}}],["how",{"0":{"12":1,"16":1},"2":{"25":2,"26":1}}],["howard",{"2":{"8":2,"11":3}}],["however",{"2":{"0":1}}],["hinton",{"2":{"11":1}}],["hidden",{"2":{"3":6}}],["huang",{"2":{"8":1,"11":1}}],["huge",{"2":{"7":1}}],["harfbuzz",{"2":{"20":1}}],["hardcoded",{"2":{"25":1}}],["hard",{"2":{"18":1,"27":1}}],["had",{"2":{"20":1}}],["han",{"2":{"11":1}}],["have",{"2":{"3":1,"22":2,"23":1,"26":2}}],["hamiltonian",{"2":{"3":3,"4":1}}],["hamiltoniannn",{"2":{"2":1,"3":1}}],["here",{"2":{"14":1,"19":2,"22":1,"25":1}}],["he",{"2":{"8":1,"11":2}}],["height",{"2":{"7":1}}],["heigold",{"2":{"4":1}}],["head",{"2":{"3":1}}],["heads",{"2":{"3":5}}],["helper",{"0":{"21":1}}],["help",{"2":{"3":1}}],["might",{"2":{"22":2}}],["minimized",{"2":{"19":1}}],["minimum",{"2":{"3":1,"19":1}}],["minderer",{"2":{"4":1}}],["min",{"2":{"3":3}}],["mbedtls",{"2":{"20":1}}],["mkl",{"2":{"20":2}}],["ms",{"2":{"20":412}}],["method",{"2":{"21":1}}],["metal",{"2":{"13":1}}],["metalheadwrapperlayer",{"2":{"17":1}}],["metalhead",{"0":{"8":1,"17":1},"2":{"8":2,"9":4,"17":3}}],["measured",{"2":{"19":1}}],["mean",{"2":{"5":3,"10":1,"22":6}}],["means",{"2":{"3":2,"5":1}}],["memory",{"2":{"18":1,"27":1}}],["m",{"2":{"4":3,"11":5,"13":1,"22":4}}],["mutablearithmetics",{"2":{"20":1}}],["muladdmacro",{"2":{"20":1}}],["multitargetsrregressor",{"2":{"25":1}}],["multivariatepolynomials",{"2":{"20":1}}],["multiples",{"2":{"3":1}}],["multi",{"0":{"15":1},"2":{"3":2,"15":1}}],["multiheadselfattention",{"2":{"2":1,"3":1}}],["must",{"2":{"3":8,"8":6}}],["mach",{"2":{"25":2}}],["machine",{"2":{"25":1}}],["makie",{"2":{"20":1}}],["makiecore",{"2":{"20":1}}],["mathtexengine",{"2":{"20":1}}],["matrix",{"2":{"3":2,"24":2}}],["mappedarrays",{"2":{"20":1}}],["maaten",{"2":{"11":1}}],["maxiters=100",{"2":{"22":2}}],["maxiters=500",{"2":{"22":1}}],["maximum",{"2":{"3":1}}],["maxpool",{"2":{"16":10,"17":1}}],["max",{"2":{"3":3}}],["manual",{"2":{"3":1}}],["many",{"2":{"3":2}}],["mode`",{"2":{"22":2}}],["model",{"2":{"3":6,"7":6,"8":16,"9":2,"11":1,"14":1,"16":15,"22":5,"26":2}}],["models",{"0":{"6":1,"7":1,"9":1,"17":1},"1":{"7":1,"8":1,"9":1,"10":2},"2":{"0":1,"1":1,"3":2,"7":1,"8":1,"9":3,"10":1,"17":1}}],["module",{"2":{"16":1}}],["mosaicviews",{"2":{"20":1}}],["moskewicz",{"2":{"11":1}}],["most",{"2":{"3":1,"12":1}}],["mobile",{"2":{"11":1}}],["mobilenetv2",{"2":{"11":1}}],["mobilenetv3",{"2":{"11":1}}],["mobilenets",{"2":{"11":1}}],["mobilenet",{"2":{"2":1,"8":3}}],["moved",{"2":{"3":1}}],["more",{"2":{"3":3,"14":1}}],["momentum",{"2":{"3":2}}],["mlflowclient",{"2":{"20":1}}],["mljflow",{"2":{"20":1}}],["mljiteration",{"2":{"20":1}}],["mljbalancing",{"2":{"20":1}}],["mljbase",{"2":{"20":2}}],["mljtuning",{"2":{"20":1}}],["mljmodels",{"2":{"20":1}}],["mljmodelinterface",{"2":{"20":1}}],["mljensembles",{"2":{"20":1}}],["mlj",{"2":{"20":3,"25":1}}],["mldatadevicesreversediffext",{"2":{"20":2}}],["mldatadevicesrecursivearraytoolsext",{"2":{"20":2}}],["mldatadevicestrackerext",{"2":{"20":2}}],["mldatadevicescomponentarraysext",{"2":{"20":2}}],["mldatadevices",{"2":{"18":3,"20":4,"27":3}}],["mlutils",{"2":{"5":1}}],["mlp=",{"2":{"26":1}}],["mlp",{"2":{"2":1,"3":5,"14":1,"15":3,"22":9,"24":6,"26":5}}],["ml",{"2":{"1":1}}],["⚡",{"2":{"1":1}}],["1=trained",{"2":{"26":1}}],["1\\tloss",{"2":{"22":3}}],["1m",{"2":{"20":1}}],["1739",{"2":{"25":1}}],["173903690663501",{"2":{"25":1,"26":1}}],["17305e",{"2":{"24":1}}],["1730",{"2":{"20":1}}],["170034",{"2":{"24":1}}],["1704",{"2":{"11":1}}],["171e",{"2":{"24":1}}],["17228e",{"2":{"24":1}}],["17",{"2":{"24":5}}],["1745",{"2":{"20":1}}],["1743",{"2":{"20":1}}],["1787",{"2":{"20":1}}],["1765",{"2":{"20":1}}],["179",{"2":{"17":1}}],["153362",{"2":{"24":1}}],["1539",{"2":{"20":1}}],["15",{"2":{"20":2,"24":4,"25":1,"26":1}}],["1574",{"2":{"20":1}}],["1572",{"2":{"20":1}}],["1540",{"2":{"20":1}}],["15576",{"2":{"20":1}}],["1556",{"2":{"11":1}}],["15184e",{"2":{"24":1}}],["151\\tloss",{"2":{"22":1}}],["151",{"2":{"20":1}}],["15169",{"2":{"20":1}}],["159607",{"2":{"24":1}}],["1590",{"2":{"20":1}}],["1592",{"2":{"20":1}}],["1595",{"2":{"20":1}}],["15062",{"2":{"24":1}}],["1505",{"2":{"20":1}}],["1503",{"2":{"20":1}}],["1500",{"2":{"11":1}}],["1569",{"2":{"20":1}}],["158333",{"2":{"24":1}}],["1583",{"2":{"20":1}}],["15297",{"2":{"24":1}}],["152923",{"2":{"24":1}}],["152",{"2":{"8":3,"9":1}}],["1835",{"2":{"20":1}}],["1839",{"2":{"20":1}}],["18735e",{"2":{"24":1}}],["1873",{"2":{"20":1}}],["18207",{"2":{"20":1}}],["1869",{"2":{"20":1}}],["1862",{"2":{"20":1}}],["1899",{"2":{"20":1}}],["1893",{"2":{"20":1}}],["1898",{"2":{"20":1}}],["1890",{"2":{"20":1}}],["1895",{"2":{"20":1}}],["1882",{"2":{"20":1}}],["18",{"2":{"8":2,"9":1,"17":1,"20":2,"24":4}}],["18053",{"2":{"20":1}}],["1809",{"2":{"20":1}}],["180",{"2":{"3":1,"16":2}}],["19525e",{"2":{"24":1}}],["1953",{"2":{"20":1}}],["1931",{"2":{"20":1}}],["1967",{"2":{"20":1}}],["1910",{"2":{"20":1}}],["19093",{"2":{"20":1}}],["1908",{"2":{"20":1}}],["1904",{"2":{"20":1}}],["1902",{"2":{"20":1}}],["1970",{"2":{"20":1}}],["19207e",{"2":{"24":1}}],["1929",{"2":{"20":1}}],["192",{"2":{"17":1}}],["19",{"2":{"7":1,"9":2,"18":1,"24":4,"27":1}}],["167429",{"2":{"24":1}}],["1673",{"2":{"20":1}}],["162055",{"2":{"24":1}}],["162587",{"2":{"24":1}}],["165213",{"2":{"24":1}}],["165131",{"2":{"24":1}}],["16566e",{"2":{"24":1}}],["1657",{"2":{"22":1}}],["1631",{"2":{"22":1}}],["16311",{"2":{"20":1}}],["1637",{"2":{"20":1}}],["166869",{"2":{"24":1}}],["166848",{"2":{"24":1}}],["16617e",{"2":{"24":1}}],["1667",{"2":{"20":1}}],["1669",{"2":{"20":1}}],["1641",{"2":{"20":1}}],["1640",{"2":{"20":2}}],["168603",{"2":{"24":1}}],["1684",{"2":{"20":1}}],["168",{"2":{"16":2}}],["1601",{"2":{"20":1}}],["160",{"2":{"16":2,"20":1}}],["1605",{"2":{"11":1,"20":1}}],["1602",{"2":{"11":1}}],["169837",{"2":{"24":1}}],["169",{"2":{"8":1}}],["1619",{"2":{"20":1}}],["16133",{"2":{"20":1}}],["161",{"2":{"8":1}}],["16",{"2":{"7":1,"9":2,"16":2,"18":1,"20":1,"24":6,"27":1}}],["16x16",{"2":{"4":1}}],["13521−x4⋅x4⋅",{"2":{"25":1}}],["13520854135894056",{"2":{"25":1,"26":1}}],["135198",{"2":{"24":34}}],["135197",{"2":{"24":5}}],["135196",{"2":{"24":1}}],["135194",{"2":{"24":1}}],["135191",{"2":{"24":1}}],["135187",{"2":{"24":1}}],["135178",{"2":{"24":1}}],["135164",{"2":{"24":1}}],["135142",{"2":{"24":1}}],["135105",{"2":{"24":1}}],["135049",{"2":{"24":1}}],["13504",{"2":{"20":1}}],["134731",{"2":{"24":1}}],["134964",{"2":{"24":1}}],["134837",{"2":{"24":1}}],["134652",{"2":{"24":1}}],["13465e",{"2":{"24":1}}],["134388",{"2":{"24":1}}],["134017",{"2":{"24":1}}],["134",{"2":{"20":1}}],["13410",{"2":{"20":1}}],["137885",{"2":{"20":1}}],["132823",{"2":{"24":1}}],["1327",{"2":{"20":1}}],["1324",{"2":{"11":1,"20":1}}],["138",{"2":{"20":1}}],["13854",{"2":{"20":1}}],["1380",{"2":{"20":1}}],["136",{"2":{"20":1}}],["1360",{"2":{"20":1}}],["1367",{"2":{"20":1}}],["1369",{"2":{"20":2}}],["1362",{"2":{"20":1}}],["1363",{"2":{"20":2}}],["130106",{"2":{"24":1}}],["130735",{"2":{"24":1}}],["130688",{"2":{"24":1}}],["1300",{"2":{"20":1}}],["1309",{"2":{"20":1}}],["130",{"2":{"20":2}}],["1398",{"2":{"20":2}}],["131915",{"2":{"24":1}}],["13111e",{"2":{"24":1}}],["1311",{"2":{"20":1}}],["131",{"2":{"17":1,"20":1}}],["1314",{"2":{"11":1}}],["133509",{"2":{"24":1}}],["13349",{"2":{"24":1}}],["1339",{"2":{"20":2}}],["1337",{"2":{"20":2}}],["133",{"2":{"16":2}}],["13",{"2":{"7":1,"9":2,"16":2,"24":6}}],["115033",{"2":{"24":1}}],["1152",{"2":{"20":1}}],["11\\tloss",{"2":{"22":1}}],["118875",{"2":{"24":1}}],["1184",{"2":{"20":1}}],["1182",{"2":{"20":1}}],["112766",{"2":{"24":1}}],["112217",{"2":{"24":1}}],["1121",{"2":{"20":1}}],["1126",{"2":{"20":1}}],["1176",{"2":{"20":1}}],["1163",{"2":{"20":1}}],["11637",{"2":{"20":1}}],["116",{"2":{"20":1}}],["114",{"2":{"20":1}}],["113513",{"2":{"24":1}}],["1133",{"2":{"20":1}}],["113",{"2":{"20":1}}],["1131",{"2":{"20":1}}],["1197",{"2":{"20":1}}],["11929",{"2":{"4":1}}],["110702",{"2":{"24":1}}],["110793",{"2":{"24":1}}],["1103",{"2":{"20":1}}],["1108",{"2":{"20":1}}],["110",{"2":{"20":2}}],["1102",{"2":{"20":1}}],["1116",{"2":{"20":1}}],["1118",{"2":{"20":1}}],["1119",{"2":{"20":1}}],["111445",{"2":{"24":1}}],["111436",{"2":{"24":1}}],["1114",{"2":{"20":1}}],["1113",{"2":{"20":2}}],["111",{"2":{"20":1}}],["11",{"2":{"7":1,"9":3,"17":1,"18":1,"20":1,"24":8,"27":1}}],["103638",{"2":{"24":1}}],["10366e",{"2":{"24":1}}],["1038",{"2":{"20":1}}],["10380",{"2":{"20":1}}],["10g",{"2":{"22":2}}],["10493",{"2":{"24":1}}],["104617",{"2":{"24":1}}],["1042",{"2":{"20":1}}],["1040",{"2":{"20":1}}],["10885",{"2":{"24":1}}],["1084",{"2":{"20":1}}],["1085",{"2":{"20":1}}],["1087",{"2":{"20":1}}],["1086",{"2":{"20":2}}],["106",{"2":{"20":1}}],["1060",{"2":{"20":1}}],["105953",{"2":{"24":1}}],["105",{"2":{"20":2}}],["10563",{"2":{"20":1}}],["1056",{"2":{"20":1}}],["109",{"2":{"20":1}}],["10943",{"2":{"20":1}}],["1096",{"2":{"20":1}}],["10995",{"2":{"20":1}}],["1090",{"2":{"20":1}}],["10x",{"2":{"19":1}}],["10088",{"2":{"20":1}}],["100907",{"2":{"24":1}}],["1009",{"2":{"20":2}}],["1004",{"2":{"20":1}}],["1005",{"2":{"20":2}}],["100",{"2":{"18":1,"20":2,"27":1}}],["1000",{"2":{"16":2,"17":1,"20":1}}],["10295e",{"2":{"24":1}}],["10286",{"2":{"20":1}}],["102",{"2":{"16":2}}],["101\\tloss",{"2":{"22":1}}],["1012",{"2":{"20":1}}],["1013",{"2":{"20":1}}],["101",{"2":{"8":4,"9":4}}],["10",{"2":{"3":1,"15":4,"16":2,"20":1,"22":7,"24":6,"26":2}}],["145568",{"2":{"24":1}}],["148027",{"2":{"24":1}}],["14889e",{"2":{"24":1}}],["1488",{"2":{"20":1}}],["142734",{"2":{"24":1}}],["14207e",{"2":{"24":1}}],["1424",{"2":{"20":1}}],["1423",{"2":{"20":1}}],["1414",{"2":{"20":1}}],["1415",{"2":{"20":1}}],["1444",{"2":{"20":1}}],["144",{"2":{"20":1}}],["14476",{"2":{"20":1}}],["1465",{"2":{"20":1}}],["146",{"2":{"20":1}}],["1494",{"2":{"25":1}}],["149357629081865",{"2":{"25":1,"26":1}}],["149",{"2":{"20":1}}],["1490",{"2":{"20":1}}],["1492",{"2":{"11":1}}],["14002e",{"2":{"24":1}}],["14010",{"2":{"20":1}}],["1401",{"2":{"20":1}}],["140682",{"2":{"24":1}}],["1406",{"2":{"20":1}}],["1409",{"2":{"11":1,"20":1}}],["1430",{"2":{"20":1}}],["14788e",{"2":{"24":1}}],["14792",{"2":{"20":1}}],["147",{"2":{"16":2,"17":3}}],["14",{"2":{"3":1,"24":4}}],["127337",{"2":{"24":1}}],["1277",{"2":{"20":2}}],["123",{"2":{"20":1}}],["1237",{"2":{"20":1}}],["1205",{"2":{"20":1}}],["126833",{"2":{"24":1}}],["1260",{"2":{"20":1}}],["1263",{"2":{"20":1}}],["1265",{"2":{"20":1}}],["1267",{"2":{"20":1}}],["12204e",{"2":{"24":1}}],["1220",{"2":{"20":1}}],["122199",{"2":{"24":1}}],["1221",{"2":{"20":1}}],["1229",{"2":{"20":2}}],["1242",{"2":{"20":1}}],["12451e",{"2":{"24":1}}],["1245",{"2":{"20":1}}],["1240",{"2":{"20":1}}],["125009",{"2":{"24":1}}],["1255",{"2":{"20":1}}],["1252",{"2":{"20":1}}],["125",{"2":{"20":2}}],["129228",{"2":{"24":1}}],["1298",{"2":{"20":1}}],["1291",{"2":{"20":1}}],["129",{"2":{"17":5,"20":1}}],["1288",{"2":{"20":1}}],["128",{"2":{"16":8,"17":20,"20":2}}],["121894",{"2":{"24":1}}],["121854",{"2":{"24":1}}],["1215",{"2":{"20":1}}],["121",{"2":{"8":1}}],["12",{"2":{"3":1,"20":3,"22":11,"24":6}}],["1",{"2":{"0":1,"3":28,"5":1,"9":1,"11":1,"15":1,"16":8,"17":46,"18":4,"20":116,"21":5,"22":16,"24":131,"25":9,"26":14,"27":4}}],["pngfiles",{"2":{"20":1}}],["pn−1",{"2":{"0":1}}],["pixman",{"2":{"20":1}}],["pdmats",{"2":{"20":1}}],["pysr",{"2":{"19":1}}],["pkgversion",{"2":{"20":1}}],["pkg",{"2":{"12":4,"13":9,"18":1,"27":1}}],["p",{"2":{"11":2,"22":4}}],["pp",{"2":{"11":6}}],["phase",{"2":{"3":1}}],["printf",{"2":{"20":1,"22":2}}],["println",{"2":{"18":2,"27":2}}],["private",{"0":{"5":1},"2":{"5":1}}],["progressmeter",{"2":{"20":1}}],["processor",{"2":{"18":1,"27":1}}],["processing",{"2":{"4":1,"11":1}}],["proceedings",{"2":{"11":6}}],["product",{"2":{"3":2}}],["proj",{"2":{"3":1}}],["projection",{"2":{"3":2}}],["problem",{"2":{"19":1,"22":3,"23":1,"26":1}}],["problems",{"0":{"19":1},"1":{"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1}}],["probability",{"2":{"3":2}}],["prob",{"2":{"3":2,"22":2}}],["prettytables",{"2":{"20":1}}],["prettyprinting",{"2":{"20":1}}],["pretrained=true",{"2":{"9":1,"16":1}}],["pretrained=false",{"2":{"7":1}}],["pretrained",{"0":{"9":1},"1":{"10":1},"2":{"7":7,"8":24,"9":6,"10":1,"16":2}}],["preallocationtoolsreversediffext",{"2":{"20":1}}],["preallocationtools",{"2":{"20":2}}],["precompilation",{"2":{"20":1}}],["precompiling",{"2":{"20":70}}],["precompiled",{"2":{"20":140}}],["precompile",{"2":{"18":1,"27":1}}],["prerequisites",{"2":{"14":1}}],["preprocessing",{"0":{"10":1}}],["preprint",{"2":{"4":1,"11":3}}],["preserves",{"2":{"3":1}}],["present",{"2":{"3":1}}],["preferred",{"2":{"3":1}}],["pre",{"2":{"1":1}}],["plot",{"2":{"21":2,"22":2,"26":1}}],["plotutils",{"2":{"20":1}}],["plain",{"2":{"22":1}}],["platform",{"2":{"18":1,"27":1}}],["planes",{"2":{"3":10}}],["plus",{"2":{"15":2,"16":2,"17":21,"26":1}}],["please",{"2":{"3":1,"14":1}}],["performs",{"2":{"26":1}}],["perform",{"2":{"26":2}}],["performance",{"2":{"22":2}}],["permutes",{"2":{"5":1}}],["period",{"2":{"3":2}}],["periodicity",{"2":{"3":1}}],["periodic",{"2":{"3":5}}],["periodicembedding",{"2":{"2":1,"3":4}}],["periods",{"2":{"3":6}}],["perceptron",{"0":{"15":1},"2":{"3":1,"15":1}}],["polygonops",{"2":{"20":1}}],["polynomial",{"2":{"0":7,"2":1}}],["poissonrandom",{"2":{"20":1}}],["point",{"2":{"3":1}}],["points",{"2":{"3":3}}],["points=nothing",{"2":{"3":1}}],["positivefactorizations",{"2":{"20":1}}],["position=",{"2":{"21":1}}],["positional",{"2":{"3":1}}],["position",{"2":{"3":2}}],["possible",{"2":{"3":1}}],["packing",{"2":{"20":1}}],["packages",{"2":{"22":2}}],["package",{"0":{"20":1},"2":{"3":1,"13":1}}],["paddedviews",{"2":{"20":1}}],["pad=3",{"2":{"17":1}}],["pad=1",{"2":{"16":20,"17":17}}],["page",{"2":{"18":1,"27":1}}],["pango",{"2":{"20":1}}],["pang",{"2":{"11":1}}],["pattern",{"2":{"11":5}}],["patches",{"2":{"3":1,"11":1}}],["patchembedding",{"2":{"2":1,"3":1}}],["patch",{"2":{"3":6}}],["pair",{"2":{"3":1}}],["pass",{"2":{"3":1,"9":1}}],["passed",{"2":{"3":1}}],["part",{"2":{"22":2,"26":1}}],["particles",{"2":{"3":1}}],["parallel",{"2":{"17":8,"26":1}}],["parameter",{"2":{"22":1}}],["parameters",{"2":{"10":1,"11":1,"15":6,"16":28,"17":42,"20":1,"26":8}}],["params",{"2":{"3":4}}],["ps",{"2":{"3":5,"22":14,"24":2,"26":6}}],["pj",{"2":{"0":1}}],["p1",{"2":{"0":1}}],["p0",{"2":{"0":1}}],["lbfgs",{"2":{"22":2}}],["lbfgsb",{"2":{"20":1}}],["lzo",{"2":{"20":1}}],["llvmopenmp",{"2":{"20":1}}],["llvm",{"2":{"18":1,"27":1}}],["l",{"2":{"4":1,"11":3,"19":2,"20":1,"22":4}}],["live",{"2":{"25":1}}],["libass",{"2":{"20":1}}],["libaom",{"2":{"20":1}}],["libwebp",{"2":{"20":1}}],["libglvnd",{"2":{"20":1}}],["libgcrypt",{"2":{"20":1}}],["libgpg",{"2":{"20":1}}],["libtiff",{"2":{"20":1}}],["libsixel",{"2":{"20":1}}],["libvorbis",{"2":{"20":1}}],["libpthread",{"2":{"20":1}}],["libpng",{"2":{"20":1}}],["libfdk",{"2":{"20":1}}],["libffi",{"2":{"20":1}}],["libmount",{"2":{"20":1}}],["libxext",{"2":{"20":1}}],["libxrender",{"2":{"20":1}}],["libx11",{"2":{"20":1}}],["libxcb",{"2":{"20":1}}],["libxdmcp",{"2":{"20":1}}],["libxau",{"2":{"20":1}}],["libuuid",{"2":{"20":1}}],["libllvm",{"2":{"18":1,"27":1}}],["literate",{"2":{"18":2,"27":2}}],["linewidth=3",{"2":{"21":3}}],["lines",{"2":{"21":3}}],["linesearches",{"2":{"20":1}}],["linearsolvekernelabstractionsext",{"2":{"20":1}}],["linearsolveenzymeext",{"2":{"20":1}}],["linearsolverecursivearraytoolsext",{"2":{"20":1}}],["linearsolve",{"2":{"20":4}}],["linear",{"2":{"11":1}}],["linearinterpolation",{"2":{"3":1}}],["linux",{"2":{"18":2,"27":2}}],["liu",{"2":{"11":2}}],["list",{"2":{"9":1}}],["like",{"2":{"3":1,"5":1,"14":1,"19":1}}],["limit",{"2":{"18":1,"27":1}}],["limited",{"2":{"3":4}}],["limitations",{"2":{"3":1}}],["loggingextras",{"2":{"20":1}}],["local",{"2":{"19":1}}],["location",{"2":{"3":2}}],["lossfunctionsext",{"2":{"20":2}}],["lossfunctionscategoricalarraysext",{"2":{"20":2}}],["lossfunctions",{"2":{"20":2}}],["loss",{"2":{"19":2,"22":5}}],["looks",{"2":{"19":1}}],["look",{"2":{"14":1,"16":1}}],["loopvectorization",{"2":{"3":1,"20":3}}],["loading",{"0":{"17":1}}],["load",{"2":{"8":2,"9":5,"16":4,"17":2}}],["loads",{"2":{"7":3,"8":8}}],["loaded",{"2":{"3":2,"9":1}}],["lt",{"2":{"3":1,"11":1}}],["label=l",{"2":{"21":3}}],["lame",{"2":{"20":1}}],["lazymodules",{"2":{"20":1}}],["lazyarraysstaticarraysext",{"2":{"20":1}}],["lazyarrays",{"2":{"20":2}}],["latinhypercubesampling",{"2":{"20":1}}],["latexstrings",{"2":{"20":1}}],["latexify",{"2":{"20":4,"25":1}}],["latest",{"2":{"12":1}}],["large",{"2":{"7":1,"8":2,"11":1}}],["laws",{"2":{"3":1}}],["last",{"2":{"3":9,"19":1}}],["layer=returns",{"2":{"3":1}}],["layer=nothing",{"2":{"3":2}}],["layer",{"0":{"15":1},"2":{"3":57,"7":1,"15":3,"16":34,"17":84,"22":2,"24":4,"26":14}}],["layers",{"0":{"3":1},"2":{"0":1,"2":13,"3":25,"7":2,"15":2,"26":1}}],["luxlossfunctionsext",{"2":{"20":2}}],["luxlibreversediffext",{"2":{"20":2}}],["luxlibtrackerext",{"2":{"20":2}}],["luxlibenzymeext",{"2":{"20":2}}],["luxlibloopvectorizationext",{"2":{"20":2}}],["luxlib",{"2":{"20":5}}],["luxlibsleefpiratesext",{"2":{"20":2}}],["luxreversediffext",{"2":{"20":1}}],["luxtrackerext",{"2":{"20":2}}],["luxenzymeext",{"2":{"20":2}}],["luxcomponentarraysext",{"2":{"20":2}}],["luxcorearrayinterfacereversediffext",{"2":{"20":1,"22":4}}],["luxcorearrayinterfacetrackerext",{"2":{"20":1}}],["luxcore",{"2":{"7":3,"8":8,"20":2,"22":2}}],["luxcuda",{"2":{"13":1}}],["luxdl",{"2":{"12":1}}],["lux",{"0":{"7":1},"2":{"1":1,"3":6,"14":4,"15":2,"16":2,"17":5,"20":6,"22":5,"25":1,"26":1}}],["lerc",{"2":{"20":1}}],["learnapi",{"2":{"20":1}}],["learning",{"2":{"1":1,"3":1,"11":1}}],["leftchildrightsiblingtrees",{"2":{"20":1}}],["let",{"2":{"14":1,"16":1,"19":1,"22":1,"23":1,"25":1,"26":1}}],["level",{"2":{"7":1,"11":1}}],["length",{"2":{"3":2}}],["legendre",{"2":{"0":3,"2":1}}],["element",{"2":{"25":1}}],["else",{"2":{"3":1}}],["eq",{"2":{"25":1,"26":1}}],["equation",{"2":{"19":2}}],["equations",{"0":{"19":1},"1":{"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1},"2":{"25":4}}],["equal",{"2":{"3":2}}],["error",{"2":{"20":1}}],["erhan",{"2":{"11":1}}],["epyc",{"2":{"18":1,"27":1}}],["easily",{"2":{"26":1}}],["easy",{"2":{"12":1,"26":1}}],["earcut",{"2":{"20":1}}],["earlystopping",{"2":{"20":1}}],["each",{"2":{"7":2}}],["efficient",{"2":{"11":1}}],["embed",{"2":{"3":2}}],["embedding",{"2":{"3":10}}],["enzymechainrulescoreext",{"2":{"20":1}}],["enzymestaticarraysext",{"2":{"20":1}}],["enzymespecialfunctionsext",{"2":{"20":1}}],["enzymelogexpfunctionsext",{"2":{"20":1}}],["enzymegpuarrayscoreext",{"2":{"20":1}}],["enzyme",{"2":{"20":7}}],["engine",{"2":{"19":1}}],["environment",{"2":{"18":1,"27":1}}],["ensure",{"2":{"5":1}}],["enforces",{"2":{"3":1}}],["end",{"2":{"3":1,"18":3,"21":1,"22":9,"27":3}}],["entry",{"2":{"3":1}}],["enumx",{"2":{"20":1}}],["enum",{"2":{"3":3}}],["e",{"2":{"3":1,"11":1}}],["et",{"2":{"3":2,"7":1,"8":7}}],["exactpredicates",{"2":{"20":1}}],["example",{"2":{"3":3,"25":1}}],["ext",{"2":{"22":2}}],["extrema",{"2":{"22":1}}],["extractor",{"2":{"16":2}}],["extents",{"2":{"20":1}}],["extending",{"2":{"3":1}}],["extended",{"2":{"3":1}}],["exotic",{"2":{"5":1}}],["exceptionunwrapping",{"2":{"20":1}}],["except",{"2":{"3":1}}],["expects",{"2":{"25":2}}],["experimental",{"2":{"0":1,"22":2}}],["expronicon",{"2":{"20":1}}],["exprtools",{"2":{"20":1}}],["expressionmodule",{"2":{"25":1}}],["expression",{"0":{"25":1,"26":1},"2":{"19":1,"23":1,"25":2,"26":2}}],["expressions",{"2":{"3":4,"25":2}}],["expr",{"2":{"3":4}}],["expansion",{"2":{"0":6}}],["evaloptions",{"2":{"3":1}}],["evaloptions=evaloptions",{"2":{"3":1}}],["evaluation",{"2":{"3":2}}],["eval",{"2":{"3":4,"26":4}}],["evensin",{"2":{"0":1}}],["=vv",{"2":{"19":1}}],["=val",{"2":{"3":1}}],["=∑i",{"2":{"19":2}}],["=u3",{"2":{"19":2}}],["=>",{"2":{"15":4,"16":26,"17":21,"22":3,"26":4}}],["===",{"2":{"22":1}}],["==",{"2":{"3":2,"22":2}}],["=",{"2":{"0":1,"3":27,"7":2,"10":2,"15":11,"16":92,"17":92,"18":4,"21":2,"22":33,"23":1,"24":3,"25":4,"26":24,"27":4}}],["klu",{"2":{"20":1}}],["komodakis",{"2":{"8":1,"11":1}}],["kolter",{"2":{"8":1,"11":1}}],["kolesnikov",{"2":{"4":1}}],["krylov",{"2":{"20":1}}],["krizhevsky",{"2":{"7":1,"11":1}}],["kron",{"2":{"3":1}}],["know",{"2":{"5":1}}],["known",{"2":{"3":1}}],["k",{"2":{"3":2,"11":6}}],["kwargs",{"2":{"3":11,"7":1,"22":3}}],["kwargs=",{"2":{"3":6}}],["keutzer",{"2":{"11":1}}],["key",{"2":{"3":1}}],["keyword",{"2":{"0":6,"3":12,"7":3,"8":8}}],["kerneldensity",{"2":{"20":1}}],["kernel",{"2":{"3":4}}],["kind",{"2":{"0":1}}],["jpegturbo",{"2":{"20":2}}],["just",{"2":{"14":1,"15":1,"17":1}}],["juliahybrid",{"2":{"26":2}}],["juliahamiltoniannn",{"2":{"3":1}}],["juliay",{"2":{"24":1}}],["juliats",{"2":{"24":1}}],["juliatensorproductlayer",{"2":{"3":1}}],["juliaude",{"2":{"22":1}}],["juliausing",{"2":{"13":4,"14":1,"16":1,"17":1,"18":1,"20":1,"27":1}}],["juliarng",{"2":{"22":1}}],["juliaresnext",{"2":{"8":1}}],["juliaresnet",{"2":{"8":1}}],["julialang",{"2":{"18":1,"27":1}}],["julialegendre",{"2":{"0":1}}],["julia",{"2":{"12":2,"18":5,"22":2,"27":5}}],["juliawideresnet",{"2":{"8":1}}],["juliagooglenet",{"2":{"8":1}}],["juliadensenet",{"2":{"8":1}}],["juliadynamicexpressionslayer",{"2":{"3":1}}],["juliavgg",{"2":{"7":2}}],["juliavision",{"2":{"16":1}}],["juliavisiontransformer",{"2":{"7":1}}],["juliavisiontransformerencoder",{"2":{"3":1}}],["juliaviposembedding",{"2":{"3":1}}],["juliaalexnet",{"2":{"7":1}}],["juliafunction",{"2":{"21":1,"22":1}}],["juliaflatten",{"2":{"5":1}}],["juliafast",{"2":{"5":1}}],["juliafourier",{"2":{"0":1}}],["juliast",{"2":{"26":1}}],["juliasrmodel",{"2":{"25":1}}],["juliasol",{"2":{"22":2}}],["juliasqueezenet",{"2":{"8":1}}],["juliashould",{"2":{"5":1}}],["juliasecond",{"2":{"5":1}}],["juliasplinelayer",{"2":{"3":1}}],["juliasin",{"2":{"0":1}}],["juliaperiodicembedding",{"2":{"3":1}}],["juliapatchembedding",{"2":{"3":1}}],["juliapolynomial",{"2":{"0":1}}],["juliamach",{"2":{"25":1}}],["juliamodel",{"2":{"15":2}}],["juliamobilenet",{"2":{"8":1}}],["juliamultiheadselfattention",{"2":{"3":1}}],["juliamlp",{"2":{"3":1}}],["julia>",{"2":{"3":14,"12":2}}],["juliajulia>",{"2":{"3":2,"12":2}}],["juliaconvmixer",{"2":{"8":1}}],["juliaconvbatchnormactivation",{"2":{"3":1}}],["juliaconvnormactivation",{"2":{"3":1}}],["juliacos",{"2":{"0":1}}],["juliaclasstokens",{"2":{"3":1}}],["juliachebyshev",{"2":{"0":1}}],["jia",{"2":{"11":1}}],["jll",{"2":{"20":61}}],["jld2",{"2":{"9":2,"16":3}}],["jl",{"0":{"8":1,"12":1,"17":1},"2":{"3":11,"5":1,"9":1,"12":4,"14":4,"15":2,"17":1,"18":1,"19":3,"22":2,"25":5,"27":1}}],["j",{"2":{"0":2,"4":1,"11":3}}],["j2x",{"2":{"0":2}}],["jth",{"2":{"0":2}}],["idx",{"2":{"25":4}}],["idxs",{"2":{"3":7}}],["ieee",{"2":{"11":6}}],["iandola",{"2":{"8":1,"11":1}}],["implications",{"2":{"22":2}}],["important",{"2":{"25":1}}],["imports",{"0":{"20":1}}],["imported",{"0":{"8":1},"2":{"9":1}}],["imath",{"2":{"20":1}}],["imageio",{"2":{"20":1}}],["imagemetadata",{"2":{"20":1}}],["imageaxes",{"2":{"20":1}}],["imagebase",{"2":{"20":1}}],["imagecore",{"2":{"20":1}}],["images",{"2":{"10":1}}],["imagenet",{"2":{"7":1,"11":1,"16":1}}],["image",{"2":{"3":5,"4":2,"7":1,"11":2}}],["imsize",{"2":{"7":2}}],["iteration",{"2":{"22":24}}],["iterationcontrol",{"2":{"20":1}}],["iter",{"2":{"22":4}}],["itertools",{"2":{"20":1}}],["its",{"2":{"12":1}}],["it",{"2":{"3":3,"25":1,"26":6}}],["i",{"2":{"3":5,"11":1,"19":1}}],["if",{"2":{"0":2,"3":5,"5":1,"7":3,"8":8,"9":1,"12":1,"14":1,"15":1,"18":3,"22":2,"27":3}}],["isoband",{"2":{"20":2}}],["isdefined",{"2":{"18":3,"27":3}}],["issubset",{"2":{"3":1}}],["is",{"2":{"0":4,"3":19,"4":1,"5":1,"7":3,"8":8,"12":1,"14":1,"15":1,"19":4,"22":2,"24":1,"25":4,"26":1}}],["inversefunctionsunitfulext",{"2":{"20":1}}],["invertedindices",{"2":{"20":1}}],["inverted",{"2":{"11":1}}],["inflate",{"2":{"20":1}}],["info",{"2":{"18":2,"27":2}}],["information",{"2":{"3":3,"4":1,"11":1}}],["instead",{"2":{"19":1}}],["install",{"0":{"12":1},"2":{"12":1,"13":1}}],["included",{"2":{"14":1}}],["inchannels",{"2":{"7":2}}],["initialparameters",{"2":{"26":1}}],["initialstates",{"2":{"26":1}}],["initializer",{"2":{"3":1}}],["initialized",{"2":{"3":1}}],["init",{"2":{"3":6}}],["init=zeros32",{"2":{"3":1}}],["indirectarrays",{"2":{"20":1}}],["indices",{"2":{"3":2}}],["index",{"0":{"2":1}}],["int",{"2":{"3":6,"7":2,"8":8}}],["integration",{"2":{"25":1}}],["integers",{"2":{"3":1}}],["integer",{"2":{"3":6}}],["intelopenmp",{"2":{"20":2}}],["intervalarithmeticrecipesbaseext",{"2":{"20":2}}],["intervalarithmeticdiffrulesext",{"2":{"20":1}}],["intervalarithmeticforwarddiffext",{"2":{"20":2}}],["intervalarithmeticintervalsetsext",{"2":{"20":1}}],["intervalarithmetic",{"2":{"20":5}}],["intervalsetsrecipesbaseext",{"2":{"20":2}}],["intervalsetsrandomext",{"2":{"20":1}}],["intervalsetsext",{"2":{"20":2}}],["intervalsetsstatisticsext",{"2":{"20":1}}],["intervalsets",{"2":{"20":4}}],["intervals",{"2":{"19":1}}],["interactive",{"2":{"18":1,"27":1}}],["interactiveutils",{"2":{"18":2,"27":2}}],["international",{"2":{"11":1}}],["internaldynamicexpressionwrapper",{"2":{"26":4}}],["internal",{"2":{"3":1}}],["intermediate",{"2":{"7":1}}],["interface",{"2":{"3":1}}],["interpolationsunitfulext",{"2":{"20":1}}],["interpolations",{"2":{"20":2}}],["interpolation",{"2":{"3":1}}],["into",{"2":{"3":1}}],["int=1",{"2":{"0":11}}],["inputs",{"2":{"3":5}}],["input",{"2":{"3":22,"7":2,"22":2,"24":1}}],["in",{"2":{"0":7,"3":30,"4":1,"5":1,"9":1,"11":7,"12":3,"15":2,"19":2,"20":70,"22":3,"25":2}}],["x4",{"2":{"25":3,"26":3}}],["x3⋅−6",{"2":{"25":1}}],["x3⋅−0",{"2":{"25":1}}],["x3−x1",{"2":{"25":1}}],["x3−0",{"2":{"25":1}}],["x3",{"2":{"25":5,"26":5}}],["x3c",{"2":{"3":1,"22":2}}],["xoshiro",{"2":{"22":1}}],["xorg",{"2":{"20":8}}],["xlabel=l",{"2":{"21":1}}],["xslt",{"2":{"20":1}}],["xz",{"2":{"20":1}}],["xtrans",{"2":{"20":1}}],["xml2",{"2":{"20":1}}],["x86",{"2":{"18":1,"27":1}}],["xie",{"2":{"8":1,"11":1}}],["xn",{"2":{"3":1}}],["x2−0",{"2":{"25":1}}],["x2−x4⋅2",{"2":{"25":1}}],["x2⋅−24",{"2":{"25":1}}],["x2⋅−0",{"2":{"25":1}}],["x2⋅0",{"2":{"25":1}}],["x264",{"2":{"20":1}}],["x265",{"2":{"20":1}}],["x26",{"2":{"18":4,"22":6,"27":4}}],["x2",{"2":{"3":8,"25":9,"26":9}}],["x1⋅",{"2":{"25":1}}],["x1−0",{"2":{"25":2}}],["x1",{"2":{"3":8,"25":5,"26":5}}],["x",{"2":{"0":11,"3":9,"4":1,"5":7,"11":1,"19":2,"22":18,"24":2,"25":1}}],["over",{"2":{"26":1}}],["overload",{"2":{"22":2}}],["ok",{"2":{"23":1}}],["ogg",{"2":{"20":1}}],["observables",{"2":{"20":1}}],["objectfile",{"2":{"20":1}}],["odeproblem",{"2":{"22":1}}],["ode",{"2":{"19":1,"22":1}}],["oddarguments",{"2":{"0":1}}],["our",{"2":{"19":2}}],["out",{"2":{"3":3,"19":1}}],["output",{"2":{"3":4,"7":1,"20":1,"25":1}}],["os",{"2":{"18":1,"27":1}}],["only",{"2":{"3":1}}],["onetbb",{"2":{"20":1}}],["oneapi",{"2":{"13":1}}],["one",{"2":{"3":1,"8":6,"25":1}}],["on",{"2":{"3":5,"11":6,"12":1,"18":1,"19":3,"22":2,"26":1,"27":1}}],["original",{"2":{"22":1}}],["ordinarydiffeqcoreenzymecoreext",{"2":{"20":1}}],["ordinarydiffeqcore",{"2":{"20":2}}],["ordinarydiffeqverner",{"2":{"20":3}}],["order",{"2":{"3":1,"19":3}}],["orcjit",{"2":{"18":1,"27":1}}],["org",{"2":{"18":1,"27":1}}],["or",{"2":{"3":2,"8":6,"13":1,"25":1}}],["optprob",{"2":{"22":6}}],["optf",{"2":{"22":5}}],["optimisers",{"2":{"22":1}}],["optimizationproblem",{"2":{"22":3}}],["optimizationmlutilsext",{"2":{"20":2}}],["optimizationmldatadevicesext",{"2":{"20":2}}],["optimizationzygoteext",{"2":{"20":2}}],["optimizationreversediffext",{"2":{"20":2}}],["optimizationenzymeext",{"2":{"20":2}}],["optimizationfunction",{"2":{"22":2}}],["optimizationfinitediffext",{"2":{"20":1}}],["optimizationforwarddiffext",{"2":{"20":2}}],["optimizationbase",{"2":{"20":8}}],["optimizationoptimisers",{"2":{"20":3}}],["optimizationoptimjl",{"2":{"20":3}}],["optimization",{"2":{"20":3,"22":1}}],["optimize",{"2":{"19":2}}],["optim",{"2":{"20":1}}],["optimal",{"0":{"19":1},"1":{"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1},"2":{"19":1,"22":1,"23":1,"26":1}}],["optional",{"2":{"3":1}}],["options=",{"2":{"26":4}}],["options",{"2":{"3":4}}],["opus",{"2":{"20":1}}],["openexr",{"2":{"20":2}}],["openml",{"2":{"20":1}}],["openssl",{"2":{"20":1}}],["operators=",{"2":{"3":2,"25":1,"26":1}}],["operators",{"2":{"3":2,"25":1}}],["operatorenummodule",{"2":{"25":1,"26":4}}],["operatorenum",{"2":{"3":4,"25":1,"26":5}}],["operator",{"2":{"3":3}}],["offsetarraysadaptext",{"2":{"20":1}}],["offsetarrays",{"2":{"20":2}}],["official",{"2":{"18":1,"27":1}}],["of",{"2":{"0":13,"3":49,"5":3,"7":4,"8":14,"9":1,"11":6,"12":1,"15":1,"19":2,"22":1,"25":2}}],["others",{"2":{"4":1,"11":1}}],["otherwise",{"2":{"3":1,"8":1}}],["other",{"2":{"0":1,"3":1}}],["dynamics",{"2":{"21":2,"22":2,"26":1}}],["dynamicpolynomials",{"2":{"20":1}}],["dynamicquantitiesunitfulext",{"2":{"20":2}}],["dynamicquantitiesscientifictypesext",{"2":{"20":2}}],["dynamicquantitieslinearalgebraext",{"2":{"20":1}}],["dynamicquantities",{"2":{"20":4}}],["dynamicdiff",{"2":{"20":1}}],["dynamicexpressionssymbolicutilsext",{"2":{"20":2}}],["dynamicexpressionszygoteext",{"2":{"20":2}}],["dynamicexpressionsloopvectorizationext",{"2":{"20":2}}],["dynamicexpressionslayer",{"2":{"2":1,"3":3,"26":2}}],["dynamicexpressionsoptimext",{"2":{"20":2}}],["dynamicexpressions",{"2":{"3":6,"19":1,"20":5,"25":4,"26":4}}],["d63adeda50d",{"2":{"18":1,"27":1}}],["dally",{"2":{"11":1}}],["data",{"0":{"24":1},"2":{"3":1,"24":2,"25":3}}],["datainterpolations",{"2":{"3":2}}],["du",{"2":{"22":3}}],["dudt",{"2":{"22":2}}],["during",{"2":{"20":1}}],["dual",{"2":{"5":1}}],["due",{"2":{"3":1}}],["dzamba",{"2":{"4":1}}],["does",{"2":{"26":1}}],["doesn",{"2":{"3":1}}],["downloading\\u001b",{"2":{"20":1}}],["do",{"2":{"15":2,"19":1,"22":2,"26":2}}],["dollár",{"2":{"11":1}}],["docs",{"2":{"9":1,"25":1}}],["documentation",{"2":{"3":2}}],["don",{"2":{"5":1}}],["dosovitskiy",{"2":{"3":1,"4":1}}],["d",{"2":{"3":2,"4":1,"11":2}}],["dispatch",{"2":{"22":2}}],["distancessparsearraysext",{"2":{"20":1}}],["distanceschainrulescoreext",{"2":{"20":1}}],["distances",{"2":{"20":3}}],["distributionstestext",{"2":{"20":1}}],["distributionschainrulescoreext",{"2":{"20":1}}],["distributions",{"2":{"20":3}}],["diffeqnoiseprocessreversediffext",{"2":{"20":1}}],["diffeqnoiseprocess",{"2":{"20":2}}],["diffeqcallbacks",{"2":{"20":1}}],["diffeqbaseunitfulext",{"2":{"20":2}}],["diffeqbaseenzymeext",{"2":{"20":1}}],["diffeqbasedistributionsext",{"2":{"20":1}}],["diffeqbasereversediffext",{"2":{"20":1}}],["diffeqbasetrackerext",{"2":{"20":1}}],["diffeqbasesparsearraysext",{"2":{"20":2}}],["diffeqbasechainrulescoreext",{"2":{"20":2}}],["diffeqbase",{"2":{"20":8}}],["differentiationinterfaceenzymeext",{"2":{"20":1}}],["differentiationinterfacereversediffext",{"2":{"20":1}}],["differentiationinterfacetrackerext",{"2":{"20":1}}],["differentiationinterfacezygoteext",{"2":{"20":1}}],["differentiationinterfacefinitediffext",{"2":{"20":1}}],["differentiationinterfaceforwarddiffext",{"2":{"20":2}}],["differentiationinterfacestaticarraysext",{"2":{"20":2}}],["differentiationinterfacesparsematrixcoloringsext",{"2":{"20":1}}],["differentiationinterfacesparsearraysext",{"2":{"20":1}}],["differentiationinterfacechainrulescoreext",{"2":{"20":2}}],["differentiationinterface",{"2":{"20":11}}],["differential",{"0":{"19":1},"1":{"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1},"2":{"19":1}}],["different",{"2":{"3":1,"22":1}}],["directly",{"2":{"3":1}}],["divisor",{"2":{"3":1}}],["dims",{"2":{"3":15}}],["dim=1",{"2":{"0":1}}],["dimensions",{"2":{"3":6,"5":2}}],["dimension",{"2":{"0":6,"3":6,"5":1}}],["dim",{"2":{"0":11,"3":4,"5":3}}],["dropout",{"2":{"3":13,"7":3,"16":4}}],["desired",{"2":{"22":2}}],["delaunaytriangulation",{"2":{"20":1}}],["debug",{"2":{"18":1,"22":2,"27":1}}],["defining",{"2":{"14":1}}],["defaultmeasuresext",{"2":{"20":1}}],["default",{"2":{"3":5,"18":1,"27":1}}],["defaults",{"2":{"3":4,"8":2}}],["der",{"2":{"11":1}}],["derivatives",{"2":{"3":1}}],["dehghani",{"2":{"4":1}}],["dependencies",{"2":{"20":17}}],["dependency",{"2":{"20":54}}],["depth",{"2":{"3":3,"7":3,"8":13}}],["deprecated",{"2":{"3":2}}],["deprecation",{"2":{"0":1}}],["device",{"2":{"3":1}}],["densenormactdropoutblock",{"2":{"15":2}}],["densenet",{"2":{"2":1,"8":3}}],["densely",{"2":{"11":1}}],["dense",{"2":{"3":5,"15":8,"16":6,"17":1,"22":3,"23":1,"26":4}}],["details",{"2":{"3":1}}],["deeper",{"2":{"11":1}}],["deep",{"2":{"1":1,"11":4}}],["niterations=100",{"2":{"25":1}}],["nlsolversbase",{"2":{"20":1}}],["nn",{"2":{"19":2}}],["nnlibfftwext",{"2":{"20":2}}],["nnlib",{"2":{"17":8,"20":1}}],["num",{"2":{"18":1,"27":1}}],["number",{"2":{"0":6,"3":14,"7":2,"15":1}}],["nvidia",{"2":{"13":1}}],["nclasses",{"2":{"7":2}}],["names",{"2":{"25":1}}],["name",{"2":{"7":3,"8":6}}],["namedtuple",{"2":{"3":5,"25":1}}],["native",{"0":{"7":1}}],["nk",{"2":{"3":1}}],["n1",{"2":{"3":1}}],["nheads",{"2":{"3":1}}],["new",{"2":{"26":1}}],["netpbm",{"2":{"20":1}}],["networks",{"2":{"4":1,"11":6}}],["network",{"0":{"22":1,"26":1},"2":{"3":3,"19":2,"22":2,"23":1,"26":3}}],["need",{"2":{"8":1,"9":1,"11":1,"16":1,"24":1,"26":1}}],["needed",{"2":{"3":1}}],["nested",{"2":{"3":2}}],["neural",{"0":{"22":1,"26":1},"2":{"3":3,"4":2,"11":4,"19":1,"22":2,"23":1,"26":3}}],["now",{"2":{"22":1,"23":1,"24":1,"26":2}}],["nooplayer",{"2":{"3":1,"17":5}}],["note",{"2":{"3":1,"19":1,"25":1}}],["notes",{"2":{"3":1}}],["not",{"2":{"3":3,"14":1,"22":2,"25":1}}],["nothing",{"2":{"3":6,"16":4,"22":1}}],["nodemodule",{"2":{"25":1}}],["nodes",{"2":{"3":1}}],["node",{"2":{"3":7,"25":1}}],["no",{"2":{"3":3}}],["normal",{"2":{"3":1}}],["normalized",{"2":{"10":1}}],["normalizes",{"2":{"3":1}}],["normalization",{"2":{"3":10,"7":2}}],["norm",{"2":{"3":16}}],["n−1",{"2":{"0":1}}],["nx",{"2":{"0":2}}],["n",{"2":{"0":12,"3":7,"5":1,"11":2,"22":2}}],["write",{"2":{"15":1}}],["wrappedfunction",{"2":{"17":9,"26":1}}],["wrapper",{"2":{"3":1,"15":1}}],["wraps",{"2":{"3":1}}],["woodburymatrices",{"2":{"20":1}}],["would",{"2":{"15":1}}],["wondering",{"2":{"25":1}}],["won",{"2":{"5":1,"22":1}}],["word",{"2":{"18":1,"27":1}}],["words",{"2":{"4":1}}],["worth",{"2":{"4":1}}],["work",{"2":{"3":1,"5":1}}],["was",{"2":{"18":1,"22":6,"27":1}}],["wang",{"2":{"11":1}}],["want",{"0":{"13":1},"2":{"5":1,"12":1,"19":1,"26":1}}],["warning",{"2":{"0":1,"3":1,"22":2}}],["well",{"2":{"26":1}}],["webp",{"2":{"20":1}}],["weakvaluedicts",{"2":{"20":1}}],["were",{"2":{"15":1,"25":1}}],["we",{"2":{"5":3,"14":1,"15":3,"16":2,"17":1,"19":6,"22":5,"23":2,"24":2,"25":1,"26":7}}],["weinberger",{"2":{"11":1}}],["weissenborn",{"2":{"4":1}}],["weights",{"2":{"7":3,"8":8,"9":4,"16":2}}],["weight",{"2":{"3":4}}],["w",{"2":{"3":1,"11":4}}],["wide",{"2":{"11":1}}],["wideresnet",{"2":{"2":1,"8":3,"9":2}}],["width=8",{"2":{"9":1}}],["width=4",{"2":{"9":2}}],["width=nothing",{"2":{"8":1}}],["width",{"2":{"7":1,"8":2}}],["will",{"2":{"3":2,"12":1,"19":3,"22":1,"25":1,"26":2}}],["with",{"0":{"19":1,"26":1},"1":{"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1},"2":{"0":1,"1":1,"3":15,"7":2,"10":1,"11":3,"14":2,"15":1,"16":1,"19":3,"21":1,"22":1,"23":1,"25":1,"26":2}}],["without",{"2":{"0":1}}],["what",{"2":{"5":1}}],["when",{"2":{"7":3,"8":8}}],["whether",{"2":{"3":2}}],["where",{"2":{"0":2,"3":8,"19":2}}],["which",{"2":{"0":6,"3":5,"22":2}}],["tloss",{"2":{"22":2}}],["tspan",{"2":{"22":1}}],["ts",{"2":{"21":4,"22":11,"24":1}}],["targets",{"2":{"24":1}}],["tan",{"2":{"11":1}}],["take",{"2":{"3":1,"14":1,"16":1,"26":1}}],["takes",{"2":{"3":3}}],["tiffimages",{"2":{"20":1}}],["ti",{"2":{"19":6}}],["tiny",{"2":{"7":1}}],["timeroutputs",{"2":{"20":1}}],["time",{"2":{"3":2}}],["t",{"2":{"3":1,"4":1,"5":3,"19":3,"21":4,"22":3}}],["tuse",{"2":{"22":1}}],["tutorial",{"2":{"19":2}}],["tutoials",{"2":{"14":1}}],["tu",{"2":{"11":1}}],["tuple",{"2":{"3":3,"7":1,"25":2,"26":8}}],["turbo",{"2":{"3":1,"26":4}}],["t=0",{"2":{"3":2}}],["typeof",{"2":{"25":4,"26":16}}],["types",{"2":{"5":1}}],["type",{"2":{"3":3,"5":6}}],["thus",{"2":{"19":2}}],["threads",{"2":{"18":2,"27":2}}],["through",{"2":{"3":1}}],["third",{"2":{"3":1}}],["this",{"2":{"3":8,"5":4,"15":2,"18":1,"19":4,"22":7,"24":1,"25":1,"26":1,"27":1}}],["that",{"2":{"3":3,"10":1,"14":1,"15":1,"19":2,"22":2,"23":1,"25":2,"26":4}}],["there",{"2":{"26":1}}],["them",{"2":{"22":1,"26":1}}],["themselves",{"2":{"0":1}}],["they",{"2":{"9":1}}],["their",{"2":{"3":2}}],["then",{"2":{"3":2}}],["these",{"2":{"0":1,"3":2,"5":1,"8":1,"25":1}}],["the",{"0":{"25":1,"26":2},"2":{"0":30,"3":101,"5":4,"7":7,"8":16,"9":4,"10":3,"11":6,"12":7,"13":1,"14":1,"15":3,"16":2,"19":8,"22":11,"23":1,"24":3,"25":9,"26":7}}],["try",{"2":{"23":1}}],["triplotbase",{"2":{"20":1}}],["tricks",{"2":{"20":1}}],["triangularsolve",{"2":{"20":1}}],["truncatedstacktraces",{"2":{"20":1}}],["true",{"2":{"3":10,"7":5,"8":8,"22":8,"26":1}}],["trockman",{"2":{"8":1,"11":1}}],["transpose",{"2":{"25":1}}],["transducers",{"2":{"20":1}}],["transducerslazyarraysext",{"2":{"20":2}}],["transformations",{"2":{"11":1}}],["transformers",{"2":{"4":1}}],["transformer",{"2":{"3":3,"7":2}}],["trackedarray",{"2":{"22":2}}],["trackedreal",{"2":{"22":2}}],["trackerpdmatsext",{"2":{"20":1}}],["tracker",{"2":{"20":2}}],["track",{"2":{"17":20}}],["trained",{"2":{"22":7,"23":1,"24":4,"26":1}}],["training",{"0":{"22":1},"2":{"24":1,"26":1}}],["train",{"2":{"3":3,"22":5,"24":3,"25":2}}],["trajectories",{"2":{"3":1}}],["tree",{"2":{"3":2}}],["test",{"2":{"22":3}}],["testing",{"2":{"22":1}}],["terminterface",{"2":{"20":1}}],["terminalloggers",{"2":{"20":1}}],["term",{"2":{"19":1}}],["terms",{"2":{"0":6}}],["tensorcore",{"2":{"20":1}}],["tensorproductbasis",{"2":{"3":1}}],["tensorproductlayer",{"2":{"2":1,"3":1}}],["tensor",{"2":{"3":2}}],["tj",{"2":{"0":1}}],["tn−1",{"2":{"0":1}}],["t1",{"2":{"0":1}}],["t0",{"2":{"0":1}}],["total",{"2":{"15":2,"16":2,"17":1,"26":1}}],["top",{"2":{"9":2}}],["tokens",{"2":{"3":1}}],["to",{"0":{"12":1},"2":{"0":1,"3":33,"5":4,"7":5,"8":3,"9":5,"12":2,"15":1,"16":2,"17":1,"19":4,"22":7,"24":1,"25":5,"26":5}}],["skip",{"2":{"26":1}}],["srmodel",{"2":{"25":1}}],["shaderabstractions",{"2":{"20":1}}],["show",{"2":{"22":1}}],["showoff",{"2":{"20":1}}],["should",{"2":{"0":1,"3":3,"5":2}}],["sleefpirates",{"2":{"20":1}}],["slow",{"2":{"3":1}}],["scientifictypesext",{"2":{"20":1}}],["scientifictypes",{"2":{"20":1}}],["scientifictypesbase",{"2":{"20":1}}],["scimljacobianoperators",{"2":{"20":1}}],["scimlbasemakieext",{"2":{"20":2}}],["scimlbasezygoteext",{"2":{"20":1}}],["scimlbasechainrulescoreext",{"2":{"20":1}}],["scimlbase",{"2":{"20":4}}],["scimloperatorssparsearraysext",{"2":{"20":1}}],["scimloperatorsstaticarrayscoreext",{"2":{"20":1}}],["scimloperators",{"2":{"20":3}}],["scimlstructures",{"2":{"20":1}}],["scimlsensitivity",{"2":{"19":1,"20":3}}],["scratch",{"2":{"20":1}}],["scale",{"2":{"4":1,"11":1}}],["scaled",{"2":{"3":1}}],["scalar",{"2":{"3":1}}],["szegedy",{"2":{"8":1,"11":1}}],["small",{"2":{"7":1,"8":2}}],["smooth",{"2":{"3":1}}],["save",{"2":{"25":1}}],["saveat=ts",{"2":{"22":1}}],["saved",{"2":{"3":4}}],["sandler",{"2":{"8":1,"11":2}}],["sampled",{"2":{"3":1}}],["same",{"2":{"3":3,"12":1,"22":1,"26":1}}],["specialfunctionsext",{"2":{"20":2}}],["specified",{"2":{"3":2,"7":1}}],["space",{"2":{"22":1}}],["sparspak",{"2":{"20":1}}],["sparsearraysext",{"2":{"20":2}}],["sparseconnectivitytracernanmathext",{"2":{"20":2}}],["sparseconnectivitytracernnlibext",{"2":{"20":2}}],["sparseconnectivitytracerlogexpfunctionsext",{"2":{"20":1}}],["sparseconnectivitytracerspecialfunctionsext",{"2":{"20":2}}],["sparseconnectivitytracer",{"2":{"20":5}}],["sparsematrixcoloringscolorsext",{"2":{"20":2}}],["sparsematrixcolorings",{"2":{"20":2}}],["spatial",{"2":{"5":2}}],["spline",{"2":{"3":1}}],["splinelayer",{"2":{"2":1,"3":1}}],["so",{"2":{"23":1,"26":1}}],["sol",{"2":{"21":3,"22":7,"26":2}}],["solves",{"2":{"23":1}}],["solver",{"2":{"22":3}}],["solve",{"2":{"19":1,"22":6,"26":1}}],["solving",{"0":{"19":1},"1":{"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1}}],["some",{"2":{"3":1,"26":1}}],["source",{"2":{"0":6,"3":13,"5":4,"7":4,"8":8}}],["symbolicindexinginterface",{"2":{"20":1}}],["symbolicutilsreversediffext",{"2":{"20":2}}],["symbolicutils",{"2":{"20":4,"25":1}}],["symbolicregressionsymbolicutilsext",{"2":{"20":2}}],["symbolicregressionenzymeext",{"2":{"20":2}}],["symbolicregression",{"2":{"19":1,"20":5,"25":3}}],["symbolic",{"0":{"19":1,"23":1,"24":1,"25":1,"26":1},"1":{"20":1,"21":1,"22":1,"23":1,"24":2,"25":2,"26":1,"27":1},"2":{"19":2,"22":1,"23":1,"24":1,"25":1,"26":2}}],["symbol",{"2":{"7":2,"8":4}}],["symmetries",{"2":{"3":1}}],["systems",{"2":{"4":1,"11":1}}],["system",{"2":{"3":1,"19":1,"22":1}}],["sensealg=quadratureadjoint",{"2":{"22":1}}],["series",{"2":{"13":1}}],["sermanet",{"2":{"11":1}}],["searching",{"2":{"11":1}}],["seconds",{"2":{"20":70}}],["second",{"2":{"3":1,"5":1}}],["self",{"2":{"3":2}}],["selects",{"2":{"3":1}}],["see",{"2":{"3":1,"25":1,"26":1}}],["setup",{"2":{"3":2,"7":3,"8":8,"22":3}}],["set",{"2":{"3":4,"7":2}}],["successfully",{"2":{"20":70}}],["such",{"2":{"19":1}}],["sutskever",{"2":{"11":1}}],["sun",{"2":{"11":1}}],["support",{"0":{"13":1},"2":{"3":4}}],["supported",{"2":{"3":1}}],["supervision",{"2":{"3":1}}],["sum",{"2":{"3":1}}],["subject",{"2":{"0":1}}],["stubs",{"2":{"20":1}}],["structured",{"2":{"25":1}}],["structio",{"2":{"20":1}}],["string",{"2":{"25":1}}],["stringmanipulation",{"2":{"20":1}}],["stride=2",{"2":{"17":8}}],["std",{"2":{"10":1}}],["step",{"2":{"3":5}}],["stack1",{"2":{"26":1}}],["stackviews",{"2":{"20":1}}],["stacked",{"2":{"3":1}}],["statsfunschainrulescoreext",{"2":{"20":1}}],["statsfunsinversefunctionsext",{"2":{"20":1}}],["statsfuns",{"2":{"20":3}}],["stats=true",{"2":{"17":20}}],["statisticalmeasures",{"2":{"20":3}}],["statisticalmeasuresbase",{"2":{"20":1}}],["statisticaltraits",{"2":{"20":1}}],["statistics",{"2":{"20":1}}],["staticarrayinterfaceoffsetarraysext",{"2":{"20":1}}],["staticarrayinterface",{"2":{"20":1}}],["stateful",{"2":{"22":7}}],["statefulluxlayer",{"2":{"3":1,"22":4}}],["states",{"2":{"15":2,"16":2,"17":1,"26":1}}],["state",{"2":{"3":2,"22":6}}],["start",{"2":{"14":1}}],["started",{"0":{"14":1},"1":{"15":1,"16":1,"17":1,"18":1}}],["stability",{"2":{"5":1}}],["stablerngs",{"2":{"20":1}}],["stable",{"2":{"0":1,"5":1}}],["st",{"2":{"3":10,"22":10,"24":2,"26":1}}],["s",{"2":{"3":2,"4":2,"11":5,"13":1,"14":1,"16":1,"22":1,"23":1,"25":1,"26":1}}],["sixel",{"2":{"20":1}}],["signeddistancefields",{"2":{"20":1}}],["signature",{"2":{"3":3}}],["simd",{"2":{"20":1}}],["simple",{"2":{"22":1}}],["simplebufferstream",{"2":{"20":1}}],["simpleunpack",{"2":{"20":1}}],["simply",{"2":{"3":1,"12":1}}],["simonyan",{"2":{"7":2,"11":1}}],["size",{"2":{"3":20,"7":1,"11":1,"18":1,"27":1}}],["since",{"2":{"3":1,"12":1}}],["sinpi",{"2":{"3":3}}],["sin⁡",{"2":{"0":3}}],["sines",{"2":{"3":1}}],["sine",{"2":{"0":2}}],["sin",{"2":{"0":1,"2":1}}],["squeezenet",{"2":{"2":1,"8":2,"9":1,"11":1}}],["axislegend",{"2":{"21":1}}],["axis",{"2":{"21":1}}],["axisarrays",{"2":{"20":1}}],["axisalgorithms",{"2":{"20":1}}],["ax",{"2":{"21":6}}],["axes",{"2":{"3":1}}],["aac",{"2":{"20":1}}],["amd",{"2":{"18":1,"27":1}}],["amdgpudevice",{"2":{"18":1,"27":1}}],["amdgpu",{"2":{"13":1,"18":2,"27":2}}],["affine=true",{"2":{"17":20}}],["after",{"2":{"3":4,"7":2}}],["aggregated",{"2":{"11":1}}],["at",{"2":{"3":1,"4":1,"14":1,"16":1,"19":1}}],["attn",{"2":{"3":1}}],["attention",{"2":{"3":5}}],["autojacvec=reversediffvjp",{"2":{"22":1}}],["automa",{"2":{"20":1}}],["auto",{"2":{"18":1,"27":1}}],["autozygote",{"2":{"3":2,"22":2}}],["autoforwarddiff",{"2":{"3":2}}],["autodiff",{"2":{"3":8}}],["autodiff=nothing",{"2":{"3":1}}],["available",{"2":{"3":2,"7":1,"9":2}}],["assume",{"2":{"14":1}}],["asserts",{"2":{"5":1}}],["assert",{"2":{"5":3}}],["ashraf",{"2":{"11":1}}],["as",{"2":{"3":9,"7":1,"12":1,"26":1}}],["above",{"2":{"25":1,"26":1}}],["about",{"0":{"16":1},"2":{"3":1}}],["able",{"2":{"9":1,"16":1}}],["abstol=1e",{"2":{"22":2,"26":1}}],["abstractarray",{"2":{"3":2,"5":2,"22":2}}],["abstractluxlayer",{"2":{"3":1,"22":4}}],["abstractvector",{"2":{"3":2}}],["abs2",{"2":{"3":1,"22":6}}],["adam",{"2":{"22":1}}],["adaptivepredicates",{"2":{"20":1}}],["adaptivemeanpool",{"2":{"17":1}}],["adjoint",{"2":{"22":4}}],["addact",{"2":{"17":8}}],["add",{"2":{"5":2,"12":2,"13":5}}],["advances",{"2":{"4":1,"11":1}}],["ad",{"2":{"3":1}}],["accessors",{"2":{"20":2}}],["accelerate",{"2":{"1":1}}],["accuracy",{"2":{"9":2,"11":1}}],["act",{"2":{"3":5}}],["activation=false",{"2":{"3":1}}],["activation=nnlib",{"2":{"3":1}}],["activation",{"2":{"3":14,"15":1}}],["animations",{"2":{"20":1}}],["anguelov",{"2":{"11":1}}],["any",{"2":{"3":1,"22":1}}],["an",{"2":{"3":4,"4":1,"7":1,"14":1}}],["and",{"2":{"0":3,"3":23,"4":2,"5":2,"7":1,"8":3,"10":1,"11":17,"15":1,"19":3,"22":1,"25":1,"26":1}}],["already",{"2":{"20":70}}],["also",{"2":{"16":1}}],["alternatively",{"2":{"3":1}}],["all",{"2":{"3":2,"10":1,"11":1}}],["allows",{"2":{"3":1}}],["al",{"2":{"3":2,"7":1,"8":7}}],["alexnet",{"2":{"2":1,"7":2,"9":1,"11":1}}],["along",{"2":{"0":6,"5":1}}],["apart",{"2":{"3":1}}],["appendix",{"0":{"18":1,"27":1}}],["appends",{"2":{"3":1}}],["appropriately",{"2":{"3":1}}],["applications",{"2":{"11":1}}],["applied",{"2":{"0":6}}],["apply",{"2":{"3":2,"22":4}}],["api",{"0":{"0":1,"1":1,"3":1,"5":1,"6":1},"1":{"2":1,"7":1,"8":1,"9":1,"10":1},"2":{"5":1}}],["arfffiles",{"2":{"20":1}}],["artifact",{"2":{"20":1}}],["arxiv",{"2":{"4":2,"11":8}}],["around",{"2":{"3":1,"15":1}}],["architecture",{"2":{"3":1,"19":1}}],["arrayinterfacereversediffext",{"2":{"20":1}}],["arrayinterfacetrackerext",{"2":{"20":1}}],["arrayinterface",{"2":{"20":2}}],["arraylayoutssparsearraysext",{"2":{"20":1}}],["arraylayouts",{"2":{"20":2}}],["arrays",{"2":{"3":1}}],["array",{"2":{"3":4,"22":1}}],["arguments",{"2":{"0":11,"3":22,"7":6,"8":14}}],["are",{"2":{"0":8,"3":8,"7":1,"9":1,"11":1,"14":1,"22":1,"25":1}}],["a",{"0":{"22":1},"2":{"0":6,"3":28,"4":2,"5":1,"7":4,"8":8,"9":1,"11":7,"14":1,"15":2,"16":2,"19":6,"22":2,"23":2,"26":1}}],["ci",{"2":{"26":1}}],["crlibm",{"2":{"20":1}}],["crayons",{"2":{"20":1}}],["creates",{"2":{"7":1}}],["create",{"2":{"3":2,"7":4,"8":8}}],["cv",{"2":{"11":2}}],["cvf",{"2":{"11":1}}],["cs",{"2":{"11":2}}],["certain",{"2":{"5":1}}],["cpu",{"2":{"3":1,"18":1,"27":1}}],["cudnn",{"2":{"13":1}}],["cudadevice",{"2":{"18":1,"27":1}}],["cuda",{"2":{"3":1,"13":1,"18":3,"27":3}}],["cubicspline",{"2":{"3":1}}],["currently",{"2":{"3":2}}],["c",{"2":{"3":3,"11":3}}],["classic",{"2":{"19":1}}],["classical",{"2":{"19":1}}],["classifier",{"2":{"16":2}}],["classification",{"2":{"11":1}}],["classes",{"2":{"7":1}}],["class",{"2":{"3":1}}],["classtokens",{"2":{"2":1,"3":1}}],["chu",{"2":{"11":1}}],["chunk",{"2":{"5":3}}],["choose",{"2":{"19":1}}],["choices",{"2":{"7":1}}],["chosen",{"2":{"3":2}}],["chen",{"2":{"11":3}}],["check",{"2":{"5":1,"22":2}}],["chebyshev",{"2":{"0":3,"2":1}}],["channel",{"2":{"3":2}}],["channels",{"2":{"3":8,"7":1}}],["change",{"2":{"0":1}}],["chain",{"2":{"3":2,"15":7,"16":16,"17":19,"22":1,"26":4}}],["chs",{"2":{"3":4}}],["could",{"2":{"26":1}}],["copy",{"2":{"26":1}}],["collect",{"2":{"22":2,"24":1}}],["colorbrewer",{"2":{"20":1}}],["colorvectorspace",{"2":{"20":2}}],["colorschemes",{"2":{"20":1}}],["colors",{"2":{"20":1}}],["colortypes",{"2":{"20":1}}],["corrected",{"2":{"22":2}}],["corresponds",{"2":{"3":1}}],["cores",{"2":{"18":1,"27":1}}],["core",{"2":{"18":1,"27":1}}],["code",{"2":{"16":1,"25":1,"26":1}}],["componentarray",{"2":{"22":1,"26":1}}],["componentarraysgpuarraysext",{"2":{"20":1}}],["componentarrayszygoteext",{"2":{"20":2}}],["componentarraysreversediffext",{"2":{"20":2}}],["componentarraysrecursivearraytoolsext",{"2":{"20":2}}],["componentarraystrackerext",{"2":{"20":2}}],["componentarraysscimlbaseext",{"2":{"20":2}}],["componentarrayskernelabstractionsext",{"2":{"20":1}}],["componentarraysoptimisersext",{"2":{"20":1}}],["componentarrays",{"2":{"20":11}}],["compact",{"2":{"22":1}}],["computer",{"0":{"6":1},"1":{"7":1,"8":1,"9":1,"10":1},"2":{"11":6}}],["computes",{"2":{"3":1,"5":1}}],["computationalresources",{"2":{"20":1}}],["computation",{"2":{"3":1}}],["combining",{"0":{"26":1}}],["combinatorics",{"2":{"20":1}}],["combination",{"2":{"0":1}}],["combine",{"2":{"19":1,"26":2}}],["commonsolve",{"2":{"20":1}}],["commit",{"2":{"18":1,"27":1}}],["command",{"2":{"12":2}}],["comes",{"2":{"14":1}}],["com",{"2":{"12":1}}],["concurrentutilities",{"2":{"20":1}}],["concatenated",{"2":{"3":1}}],["contrast",{"2":{"25":1}}],["controller",{"2":{"19":1}}],["control",{"0":{"19":1},"1":{"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1},"2":{"19":2,"22":1,"23":1,"26":1}}],["contour",{"2":{"20":1}}],["containing",{"2":{"3":1}}],["connection",{"2":{"17":8}}],["connected",{"2":{"7":2,"11":1}}],["conference",{"2":{"11":6}}],["configurations",{"2":{"22":1}}],["configuration",{"2":{"7":3,"22":1}}],["config",{"2":{"7":2}}],["convolutions",{"2":{"11":1}}],["convolution",{"2":{"7":3}}],["convolutional",{"2":{"3":4,"11":4}}],["convenience",{"2":{"3":1,"15":1}}],["conv",{"2":{"3":3,"16":20,"17":20}}],["convmixer",{"2":{"2":1,"8":3}}],["convbatchnormactivation",{"2":{"2":1,"3":1}}],["convnormactivationblock",{"2":{"16":20}}],["convnormactivation",{"2":{"2":1,"3":3,"16":10}}],["consoleprogressmonitor",{"2":{"20":1}}],["conservation",{"2":{"3":1}}],["constantinterpolation",{"2":{"3":1}}],["constant",{"2":{"3":1}}],["constructionbaseunitfulext",{"2":{"20":1}}],["constructionbaseintervalsetsext",{"2":{"20":1}}],["constructionbase",{"2":{"20":1}}],["constructor",{"2":{"9":1}}],["construct",{"2":{"3":3,"16":1,"22":3,"26":1}}],["constructs",{"2":{"0":6,"3":5,"15":1}}],["considered",{"2":{"0":1}}],["cost",{"2":{"19":1}}],["cospi",{"2":{"3":3}}],["cos⁡",{"2":{"0":3}}],["cosines",{"2":{"3":1}}],["cosine",{"2":{"0":2}}],["cos",{"2":{"0":2,"2":1,"3":3}}],["causing",{"2":{"22":2}}],["cairo",{"2":{"20":2}}],["cairomakie",{"2":{"20":3,"21":1}}],["categoricaldistributions",{"2":{"20":1}}],["categoricalarraysrecipesbaseext",{"2":{"20":1}}],["categoricalarraysjsonext",{"2":{"20":1}}],["categoricalarrays",{"2":{"20":3}}],["cassette",{"2":{"20":1}}],["cases",{"2":{"3":1,"5":1,"12":1}}],["case",{"2":{"3":1,"25":1}}],["cardinality=64",{"2":{"9":1}}],["cardinality=32",{"2":{"8":1,"9":2}}],["cardinality",{"2":{"8":2}}],["callback",{"2":{"22":5}}],["called",{"2":{"7":3,"8":8}}],["calls",{"2":{"0":1}}],["can",{"2":{"0":1,"3":1,"9":1,"12":2,"15":1,"16":2,"17":1,"22":1,"23":1,"26":2}}],["ffmpeg",{"2":{"20":1}}],["fftw",{"2":{"20":2}}],["featureselection",{"2":{"20":1}}],["feature",{"2":{"16":2}}],["feature=2",{"2":{"3":1}}],["feature=1",{"2":{"3":1}}],["fewer",{"2":{"11":1}}],["fcsize",{"2":{"7":2}}],["fns",{"2":{"3":2}}],["fully",{"2":{"7":2}}],["future",{"2":{"3":1}}],["functionproperties",{"2":{"20":1}}],["functionwrapperswrappers",{"2":{"20":1}}],["functionwrappers",{"2":{"20":1}}],["functional",{"2":{"18":2,"27":2}}],["functions",{"0":{"21":1},"2":{"0":8,"3":3,"5":1}}],["function",{"2":{"0":1,"3":16,"5":1,"15":2,"19":1,"21":1,"22":8}}],["familiar",{"2":{"14":1}}],["fastlapackinterface",{"2":{"20":1}}],["fastbroadcast",{"2":{"20":1}}],["fastpowerenzymeext",{"2":{"20":1}}],["fastpowerreversediffext",{"2":{"20":1}}],["fastpowertrackerext",{"2":{"20":1}}],["fastpowerforwarddiffext",{"2":{"20":1}}],["fastpower",{"2":{"20":5}}],["fast",{"2":{"5":1}}],["faster",{"2":{"3":2,"5":1}}],["false",{"2":{"3":1,"7":2,"22":4,"26":8}}],["float64",{"2":{"22":1,"24":2,"25":2}}],["float32",{"2":{"3":7}}],["flux",{"0":{"17":1},"2":{"17":1}}],["flexible",{"2":{"3":1}}],["flat",{"2":{"3":1}}],["flattenlayer",{"2":{"16":2}}],["flattens",{"2":{"5":1}}],["flatten",{"2":{"3":2,"5":1,"17":1}}],["flatten=true",{"2":{"3":1}}],["fst",{"2":{"3":3}}],["finetune",{"2":{"26":1}}],["finetuning",{"2":{"26":1}}],["fintetuning",{"2":{"26":1}}],["finish",{"2":{"22":1}}],["finitediffstaticarraysext",{"2":{"20":2}}],["finitediffsparsearraysext",{"2":{"20":1}}],["finitediff",{"2":{"20":3}}],["fitted",{"2":{"26":1}}],["fitting",{"0":{"25":1}}],["fit",{"2":{"25":2}}],["figure",{"2":{"21":1}}],["fig",{"2":{"21":3}}],["file=false",{"2":{"25":1}}],["fileio",{"2":{"20":1}}],["filepaths",{"2":{"20":1}}],["filepathsbasetestext",{"2":{"20":1}}],["filepathsbasemmapext",{"2":{"20":1}}],["filepathsbase",{"2":{"20":3}}],["fillarrayspdmatsext",{"2":{"20":1}}],["fillarrays",{"2":{"20":1}}],["filters",{"2":{"3":2}}],["fixedpointnumbers",{"2":{"20":1}}],["fixed",{"2":{"3":1}}],["fix1",{"2":{"3":1}}],["first",{"2":{"0":1,"3":1,"5":1,"19":3,"22":1,"24":1}}],["freetypeabstraction",{"2":{"20":1}}],["freetype",{"2":{"20":1}}],["freetype2",{"2":{"20":1}}],["freely",{"2":{"0":1}}],["fribidi",{"2":{"20":1}}],["framework",{"2":{"3":1}}],["from",{"0":{"8":1,"17":1},"2":{"3":8,"9":2,"17":1,"19":1,"25":2}}],["f",{"2":{"3":6,"11":1}}],["fj",{"2":{"0":1}}],["found",{"2":{"25":1}}],["fourier",{"2":{"0":3,"2":1}}],["fontconfig",{"2":{"20":1}}],["follow",{"2":{"25":1}}],["following",{"2":{"7":1,"12":2,"13":1,"15":1,"16":1,"19":1}}],["followed",{"2":{"3":1}}],["forwarddiffext",{"2":{"20":1}}],["forwarddiff",{"2":{"5":1}}],["forwarded",{"2":{"3":3}}],["format",{"2":{"20":1}}],["form",{"2":{"0":6,"19":2}}],["for",{"0":{"24":1},"2":{"0":1,"3":19,"4":1,"5":3,"7":1,"8":1,"9":2,"11":5,"19":1,"22":2,"24":1}}],["bzip2",{"2":{"20":1}}],["bfgs",{"2":{"20":1}}],["block2",{"2":{"15":1,"16":10}}],["block",{"2":{"15":2,"16":20}}],["block1",{"2":{"15":1,"16":10}}],["blocks",{"2":{"3":1}}],["bk",{"2":{"3":1}}],["bn",{"2":{"3":1}}],["b2",{"2":{"3":1}}],["b1",{"2":{"3":3}}],["b",{"2":{"3":3,"11":1,"20":1}}],["bijections",{"2":{"20":1}}],["bitflags",{"2":{"20":1}}],["bibliography",{"0":{"4":1,"11":1}}],["bias=false",{"2":{"17":20}}],["bias",{"2":{"3":3}}],["binary",{"2":{"3":1,"25":1,"26":1}}],["by",{"2":{"3":6,"14":1,"19":1,"26":1}}],["bump",{"2":{"19":1}}],["bumper",{"2":{"3":2,"26":4}}],["build",{"2":{"18":1,"27":1}}],["built",{"2":{"1":1}}],["but",{"2":{"3":2,"5":1,"14":1,"15":1,"22":1,"23":1,"26":3}}],["batteries",{"2":{"14":1}}],["batch",{"2":{"7":2}}],["batchnorm=true",{"2":{"9":4}}],["batchnorm",{"2":{"3":1,"7":4,"17":20}}],["batchsize",{"2":{"3":1}}],["batched",{"2":{"3":1}}],["backend",{"2":{"3":4}}],["backends",{"2":{"3":3}}],["based",{"0":{"22":1},"2":{"19":1}}],["base",{"2":{"3":2,"7":1,"8":4,"9":3}}],["basis",{"0":{"0":1},"2":{"0":19,"2":6,"3":10}}],["bottlenecks",{"2":{"11":1}}],["bool=true",{"2":{"3":2}}],["bool=false",{"2":{"3":2,"7":5,"8":16}}],["bool",{"2":{"3":1}}],["boltzreversediffext",{"2":{"20":2}}],["boltztrackerext",{"2":{"20":2}}],["boltz",{"0":{"0":1,"3":1,"12":1},"2":{"0":6,"2":30,"3":13,"5":5,"7":3,"8":8,"12":5,"14":2,"15":1,"20":3}}],["because",{"2":{"25":1}}],["better",{"2":{"22":1}}],["between",{"2":{"7":1}}],["behaved",{"2":{"22":1}}],["behavior",{"2":{"22":2}}],["behind",{"2":{"19":1}}],["being",{"2":{"9":1,"16":1}}],["before",{"2":{"8":1,"9":1,"16":1,"17":1,"26":1}}],["beyer",{"2":{"4":1}}],["best",{"2":{"3":1,"25":5,"26":1}}],["be",{"2":{"0":2,"3":10,"8":6,"9":1,"10":1,"12":1,"25":1}}]],"serializationVersion":2}';export{e as default}; diff --git a/previews/PR98/assets/chunks/VPLocalSearchBox.CHTMbhP1.js b/previews/PR98/assets/chunks/VPLocalSearchBox.CHTMbhP1.js new file mode 100644 index 0000000..af103a4 --- /dev/null +++ b/previews/PR98/assets/chunks/VPLocalSearchBox.CHTMbhP1.js @@ -0,0 +1,8 @@ +var Ot=Object.defineProperty;var Ft=(a,e,t)=>e in a?Ot(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t;var Ae=(a,e,t)=>Ft(a,typeof e!="symbol"?e+"":e,t);import{V as Ct,p as ie,h as ge,aj as tt,ak as Rt,al as At,am as Mt,q as $e,an as Lt,d as Dt,D as xe,ao as nt,ap as zt,aq as Pt,s as jt,ar as Vt,v as Me,P as fe,O as _e,as as $t,at as Bt,W as Wt,R as Kt,$ as Jt,o as H,b as qt,j as _,a0 as Ut,k as L,au as Gt,av as Ht,aw as Qt,c as Z,n as st,e as Se,C as it,F as rt,a as he,t as pe,ax as Yt,ay as at,az as Zt,a9 as Xt,af as en,aA as tn,_ as nn}from"./framework.BI0fNMXE.js";import{u as sn,c as rn}from"./theme.CxjT12tT.js";const an={root:()=>Ct(()=>import("./@localSearchIndexroot.78-WC-8u.js"),[])};/*! +* tabbable 6.2.0 +* @license MIT, https://github.com/focus-trap/tabbable/blob/master/LICENSE +*/var gt=["input:not([inert])","select:not([inert])","textarea:not([inert])","a[href]:not([inert])","button:not([inert])","[tabindex]:not(slot):not([inert])","audio[controls]:not([inert])","video[controls]:not([inert])",'[contenteditable]:not([contenteditable="false"]):not([inert])',"details>summary:first-of-type:not([inert])","details:not([inert])"],Ne=gt.join(","),vt=typeof Element>"u",ae=vt?function(){}:Element.prototype.matches||Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector,Oe=!vt&&Element.prototype.getRootNode?function(a){var e;return a==null||(e=a.getRootNode)===null||e===void 0?void 0:e.call(a)}:function(a){return a==null?void 0:a.ownerDocument},Fe=function a(e,t){var n;t===void 0&&(t=!0);var s=e==null||(n=e.getAttribute)===null||n===void 0?void 0:n.call(e,"inert"),r=s===""||s==="true",i=r||t&&e&&a(e.parentNode);return i},on=function(e){var t,n=e==null||(t=e.getAttribute)===null||t===void 0?void 0:t.call(e,"contenteditable");return n===""||n==="true"},bt=function(e,t,n){if(Fe(e))return[];var s=Array.prototype.slice.apply(e.querySelectorAll(Ne));return t&&ae.call(e,Ne)&&s.unshift(e),s=s.filter(n),s},yt=function a(e,t,n){for(var s=[],r=Array.from(e);r.length;){var i=r.shift();if(!Fe(i,!1))if(i.tagName==="SLOT"){var o=i.assignedElements(),l=o.length?o:i.children,c=a(l,!0,n);n.flatten?s.push.apply(s,c):s.push({scopeParent:i,candidates:c})}else{var f=ae.call(i,Ne);f&&n.filter(i)&&(t||!e.includes(i))&&s.push(i);var g=i.shadowRoot||typeof n.getShadowRoot=="function"&&n.getShadowRoot(i),h=!Fe(g,!1)&&(!n.shadowRootFilter||n.shadowRootFilter(i));if(g&&h){var b=a(g===!0?i.children:g.children,!0,n);n.flatten?s.push.apply(s,b):s.push({scopeParent:i,candidates:b})}else r.unshift.apply(r,i.children)}}return s},wt=function(e){return!isNaN(parseInt(e.getAttribute("tabindex"),10))},re=function(e){if(!e)throw new Error("No node provided");return e.tabIndex<0&&(/^(AUDIO|VIDEO|DETAILS)$/.test(e.tagName)||on(e))&&!wt(e)?0:e.tabIndex},ln=function(e,t){var n=re(e);return n<0&&t&&!wt(e)?0:n},cn=function(e,t){return e.tabIndex===t.tabIndex?e.documentOrder-t.documentOrder:e.tabIndex-t.tabIndex},xt=function(e){return e.tagName==="INPUT"},un=function(e){return xt(e)&&e.type==="hidden"},dn=function(e){var t=e.tagName==="DETAILS"&&Array.prototype.slice.apply(e.children).some(function(n){return n.tagName==="SUMMARY"});return t},fn=function(e,t){for(var n=0;nsummary:first-of-type"),i=r?e.parentElement:e;if(ae.call(i,"details:not([open]) *"))return!0;if(!n||n==="full"||n==="legacy-full"){if(typeof s=="function"){for(var o=e;e;){var l=e.parentElement,c=Oe(e);if(l&&!l.shadowRoot&&s(l)===!0)return ot(e);e.assignedSlot?e=e.assignedSlot:!l&&c!==e.ownerDocument?e=c.host:e=l}e=o}if(gn(e))return!e.getClientRects().length;if(n!=="legacy-full")return!0}else if(n==="non-zero-area")return ot(e);return!1},bn=function(e){if(/^(INPUT|BUTTON|SELECT|TEXTAREA)$/.test(e.tagName))for(var t=e.parentElement;t;){if(t.tagName==="FIELDSET"&&t.disabled){for(var n=0;n=0)},wn=function a(e){var t=[],n=[];return e.forEach(function(s,r){var i=!!s.scopeParent,o=i?s.scopeParent:s,l=ln(o,i),c=i?a(s.candidates):o;l===0?i?t.push.apply(t,c):t.push(o):n.push({documentOrder:r,tabIndex:l,item:s,isScope:i,content:c})}),n.sort(cn).reduce(function(s,r){return r.isScope?s.push.apply(s,r.content):s.push(r.content),s},[]).concat(t)},xn=function(e,t){t=t||{};var n;return t.getShadowRoot?n=yt([e],t.includeContainer,{filter:Be.bind(null,t),flatten:!1,getShadowRoot:t.getShadowRoot,shadowRootFilter:yn}):n=bt(e,t.includeContainer,Be.bind(null,t)),wn(n)},_n=function(e,t){t=t||{};var n;return t.getShadowRoot?n=yt([e],t.includeContainer,{filter:Ce.bind(null,t),flatten:!0,getShadowRoot:t.getShadowRoot}):n=bt(e,t.includeContainer,Ce.bind(null,t)),n},oe=function(e,t){if(t=t||{},!e)throw new Error("No node provided");return ae.call(e,Ne)===!1?!1:Be(t,e)},Sn=gt.concat("iframe").join(","),Le=function(e,t){if(t=t||{},!e)throw new Error("No node provided");return ae.call(e,Sn)===!1?!1:Ce(t,e)};/*! +* focus-trap 7.6.4 +* @license MIT, https://github.com/focus-trap/focus-trap/blob/master/LICENSE +*/function We(a,e){(e==null||e>a.length)&&(e=a.length);for(var t=0,n=Array(e);t0){var n=e[e.length-1];n!==t&&n._setPausedState(!0)}var s=e.indexOf(t);s===-1||e.splice(s,1),e.push(t)},deactivateTrap:function(e,t){var n=e.indexOf(t);n!==-1&&e.splice(n,1),e.length>0&&!e[e.length-1]._isManuallyPaused()&&e[e.length-1]._setPausedState(!1)}},Rn=function(e){return e.tagName&&e.tagName.toLowerCase()==="input"&&typeof e.select=="function"},An=function(e){return(e==null?void 0:e.key)==="Escape"||(e==null?void 0:e.key)==="Esc"||(e==null?void 0:e.keyCode)===27},ve=function(e){return(e==null?void 0:e.key)==="Tab"||(e==null?void 0:e.keyCode)===9},Mn=function(e){return ve(e)&&!e.shiftKey},Ln=function(e){return ve(e)&&e.shiftKey},dt=function(e){return setTimeout(e,0)},me=function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),s=1;s1&&arguments[1]!==void 0?arguments[1]:{},v=d.hasFallback,E=v===void 0?!1:v,T=d.params,O=T===void 0?[]:T,S=r[u];if(typeof S=="function"&&(S=S.apply(void 0,Nn(O))),S===!0&&(S=void 0),!S){if(S===void 0||S===!1)return S;throw new Error("`".concat(u,"` was specified but was not a node, or did not return a node"))}var C=S;if(typeof S=="string"){try{C=n.querySelector(S)}catch(m){throw new Error("`".concat(u,'` appears to be an invalid selector; error="').concat(m.message,'"'))}if(!C&&!E)throw new Error("`".concat(u,"` as selector refers to no known node"))}return C},g=function(){var u=f("initialFocus",{hasFallback:!0});if(u===!1)return!1;if(u===void 0||u&&!Le(u,r.tabbableOptions))if(c(n.activeElement)>=0)u=n.activeElement;else{var d=i.tabbableGroups[0],v=d&&d.firstTabbableNode;u=v||f("fallbackFocus")}else u===null&&(u=f("fallbackFocus"));if(!u)throw new Error("Your focus-trap needs to have at least one focusable element");return u},h=function(){if(i.containerGroups=i.containers.map(function(u){var d=xn(u,r.tabbableOptions),v=_n(u,r.tabbableOptions),E=d.length>0?d[0]:void 0,T=d.length>0?d[d.length-1]:void 0,O=v.find(function(m){return oe(m)}),S=v.slice().reverse().find(function(m){return oe(m)}),C=!!d.find(function(m){return re(m)>0});return{container:u,tabbableNodes:d,focusableNodes:v,posTabIndexesFound:C,firstTabbableNode:E,lastTabbableNode:T,firstDomTabbableNode:O,lastDomTabbableNode:S,nextTabbableNode:function(p){var I=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,F=d.indexOf(p);return F<0?I?v.slice(v.indexOf(p)+1).find(function(z){return oe(z)}):v.slice(0,v.indexOf(p)).reverse().find(function(z){return oe(z)}):d[F+(I?1:-1)]}}}),i.tabbableGroups=i.containerGroups.filter(function(u){return u.tabbableNodes.length>0}),i.tabbableGroups.length<=0&&!f("fallbackFocus"))throw new Error("Your focus-trap must have at least one container with at least one tabbable node in it at all times");if(i.containerGroups.find(function(u){return u.posTabIndexesFound})&&i.containerGroups.length>1)throw new Error("At least one node with a positive tabindex was found in one of your focus-trap's multiple containers. Positive tabindexes are only supported in single-container focus-traps.")},b=function(u){var d=u.activeElement;if(d)return d.shadowRoot&&d.shadowRoot.activeElement!==null?b(d.shadowRoot):d},y=function(u){if(u!==!1&&u!==b(document)){if(!u||!u.focus){y(g());return}u.focus({preventScroll:!!r.preventScroll}),i.mostRecentlyFocusedNode=u,Rn(u)&&u.select()}},x=function(u){var d=f("setReturnFocus",{params:[u]});return d||(d===!1?!1:u)},w=function(u){var d=u.target,v=u.event,E=u.isBackward,T=E===void 0?!1:E;d=d||Ee(v),h();var O=null;if(i.tabbableGroups.length>0){var S=c(d,v),C=S>=0?i.containerGroups[S]:void 0;if(S<0)T?O=i.tabbableGroups[i.tabbableGroups.length-1].lastTabbableNode:O=i.tabbableGroups[0].firstTabbableNode;else if(T){var m=i.tabbableGroups.findIndex(function(j){var k=j.firstTabbableNode;return d===k});if(m<0&&(C.container===d||Le(d,r.tabbableOptions)&&!oe(d,r.tabbableOptions)&&!C.nextTabbableNode(d,!1))&&(m=S),m>=0){var p=m===0?i.tabbableGroups.length-1:m-1,I=i.tabbableGroups[p];O=re(d)>=0?I.lastTabbableNode:I.lastDomTabbableNode}else ve(v)||(O=C.nextTabbableNode(d,!1))}else{var F=i.tabbableGroups.findIndex(function(j){var k=j.lastTabbableNode;return d===k});if(F<0&&(C.container===d||Le(d,r.tabbableOptions)&&!oe(d,r.tabbableOptions)&&!C.nextTabbableNode(d))&&(F=S),F>=0){var z=F===i.tabbableGroups.length-1?0:F+1,P=i.tabbableGroups[z];O=re(d)>=0?P.firstTabbableNode:P.firstDomTabbableNode}else ve(v)||(O=C.nextTabbableNode(d))}}else O=f("fallbackFocus");return O},R=function(u){var d=Ee(u);if(!(c(d,u)>=0)){if(me(r.clickOutsideDeactivates,u)){o.deactivate({returnFocus:r.returnFocusOnDeactivate});return}me(r.allowOutsideClick,u)||u.preventDefault()}},A=function(u){var d=Ee(u),v=c(d,u)>=0;if(v||d instanceof Document)v&&(i.mostRecentlyFocusedNode=d);else{u.stopImmediatePropagation();var E,T=!0;if(i.mostRecentlyFocusedNode)if(re(i.mostRecentlyFocusedNode)>0){var O=c(i.mostRecentlyFocusedNode),S=i.containerGroups[O].tabbableNodes;if(S.length>0){var C=S.findIndex(function(m){return m===i.mostRecentlyFocusedNode});C>=0&&(r.isKeyForward(i.recentNavEvent)?C+1=0&&(E=S[C-1],T=!1))}}else i.containerGroups.some(function(m){return m.tabbableNodes.some(function(p){return re(p)>0})})||(T=!1);else T=!1;T&&(E=w({target:i.mostRecentlyFocusedNode,isBackward:r.isKeyBackward(i.recentNavEvent)})),y(E||i.mostRecentlyFocusedNode||g())}i.recentNavEvent=void 0},J=function(u){var d=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;i.recentNavEvent=u;var v=w({event:u,isBackward:d});v&&(ve(u)&&u.preventDefault(),y(v))},Q=function(u){(r.isKeyForward(u)||r.isKeyBackward(u))&&J(u,r.isKeyBackward(u))},W=function(u){An(u)&&me(r.escapeDeactivates,u)!==!1&&(u.preventDefault(),o.deactivate())},V=function(u){var d=Ee(u);c(d,u)>=0||me(r.clickOutsideDeactivates,u)||me(r.allowOutsideClick,u)||(u.preventDefault(),u.stopImmediatePropagation())},$=function(){if(i.active)return ut.activateTrap(s,o),i.delayInitialFocusTimer=r.delayInitialFocus?dt(function(){y(g())}):y(g()),n.addEventListener("focusin",A,!0),n.addEventListener("mousedown",R,{capture:!0,passive:!1}),n.addEventListener("touchstart",R,{capture:!0,passive:!1}),n.addEventListener("click",V,{capture:!0,passive:!1}),n.addEventListener("keydown",Q,{capture:!0,passive:!1}),n.addEventListener("keydown",W),o},be=function(){if(i.active)return n.removeEventListener("focusin",A,!0),n.removeEventListener("mousedown",R,!0),n.removeEventListener("touchstart",R,!0),n.removeEventListener("click",V,!0),n.removeEventListener("keydown",Q,!0),n.removeEventListener("keydown",W),o},M=function(u){var d=u.some(function(v){var E=Array.from(v.removedNodes);return E.some(function(T){return T===i.mostRecentlyFocusedNode})});d&&y(g())},q=typeof window<"u"&&"MutationObserver"in window?new MutationObserver(M):void 0,U=function(){q&&(q.disconnect(),i.active&&!i.paused&&i.containers.map(function(u){q.observe(u,{subtree:!0,childList:!0})}))};return o={get active(){return i.active},get paused(){return i.paused},activate:function(u){if(i.active)return this;var d=l(u,"onActivate"),v=l(u,"onPostActivate"),E=l(u,"checkCanFocusTrap");E||h(),i.active=!0,i.paused=!1,i.nodeFocusedBeforeActivation=n.activeElement,d==null||d();var T=function(){E&&h(),$(),U(),v==null||v()};return E?(E(i.containers.concat()).then(T,T),this):(T(),this)},deactivate:function(u){if(!i.active)return this;var d=ct({onDeactivate:r.onDeactivate,onPostDeactivate:r.onPostDeactivate,checkCanReturnFocus:r.checkCanReturnFocus},u);clearTimeout(i.delayInitialFocusTimer),i.delayInitialFocusTimer=void 0,be(),i.active=!1,i.paused=!1,U(),ut.deactivateTrap(s,o);var v=l(d,"onDeactivate"),E=l(d,"onPostDeactivate"),T=l(d,"checkCanReturnFocus"),O=l(d,"returnFocus","returnFocusOnDeactivate");v==null||v();var S=function(){dt(function(){O&&y(x(i.nodeFocusedBeforeActivation)),E==null||E()})};return O&&T?(T(x(i.nodeFocusedBeforeActivation)).then(S,S),this):(S(),this)},pause:function(u){return i.active?(i.manuallyPaused=!0,this._setPausedState(!0,u)):this},unpause:function(u){return i.active?(i.manuallyPaused=!1,s[s.length-1]!==this?this:this._setPausedState(!1,u)):this},updateContainerElements:function(u){var d=[].concat(u).filter(Boolean);return i.containers=d.map(function(v){return typeof v=="string"?n.querySelector(v):v}),i.active&&h(),U(),this}},Object.defineProperties(o,{_isManuallyPaused:{value:function(){return i.manuallyPaused}},_setPausedState:{value:function(u,d){if(i.paused===u)return this;if(i.paused=u,u){var v=l(d,"onPause"),E=l(d,"onPostPause");v==null||v(),be(),U(),E==null||E()}else{var T=l(d,"onUnpause"),O=l(d,"onPostUnpause");T==null||T(),h(),$(),U(),O==null||O()}return this}}}),o.updateContainerElements(e),o};function Pn(a,e={}){let t;const{immediate:n,...s}=e,r=ie(!1),i=ie(!1),o=h=>t&&t.activate(h),l=h=>t&&t.deactivate(h),c=()=>{t&&(t.pause(),i.value=!0)},f=()=>{t&&(t.unpause(),i.value=!1)},g=ge(()=>{const h=tt(a);return Rt(h).map(b=>{const y=tt(b);return typeof y=="string"?y:At(y)}).filter(Mt)});return $e(g,h=>{h.length&&(t=zn(h,{...s,onActivate(){r.value=!0,e.onActivate&&e.onActivate()},onDeactivate(){r.value=!1,e.onDeactivate&&e.onDeactivate()}}),n&&o())},{flush:"post"}),Lt(()=>l()),{hasFocus:r,isPaused:i,activate:o,deactivate:l,pause:c,unpause:f}}class ce{constructor(e,t=!0,n=[],s=5e3){this.ctx=e,this.iframes=t,this.exclude=n,this.iframesTimeout=s}static matches(e,t){const n=typeof t=="string"?[t]:t,s=e.matches||e.matchesSelector||e.msMatchesSelector||e.mozMatchesSelector||e.oMatchesSelector||e.webkitMatchesSelector;if(s){let r=!1;return n.every(i=>s.call(e,i)?(r=!0,!1):!0),r}else return!1}getContexts(){let e,t=[];return typeof this.ctx>"u"||!this.ctx?e=[]:NodeList.prototype.isPrototypeOf(this.ctx)?e=Array.prototype.slice.call(this.ctx):Array.isArray(this.ctx)?e=this.ctx:typeof this.ctx=="string"?e=Array.prototype.slice.call(document.querySelectorAll(this.ctx)):e=[this.ctx],e.forEach(n=>{const s=t.filter(r=>r.contains(n)).length>0;t.indexOf(n)===-1&&!s&&t.push(n)}),t}getIframeContents(e,t,n=()=>{}){let s;try{const r=e.contentWindow;if(s=r.document,!r||!s)throw new Error("iframe inaccessible")}catch{n()}s&&t(s)}isIframeBlank(e){const t="about:blank",n=e.getAttribute("src").trim();return e.contentWindow.location.href===t&&n!==t&&n}observeIframeLoad(e,t,n){let s=!1,r=null;const i=()=>{if(!s){s=!0,clearTimeout(r);try{this.isIframeBlank(e)||(e.removeEventListener("load",i),this.getIframeContents(e,t,n))}catch{n()}}};e.addEventListener("load",i),r=setTimeout(i,this.iframesTimeout)}onIframeReady(e,t,n){try{e.contentWindow.document.readyState==="complete"?this.isIframeBlank(e)?this.observeIframeLoad(e,t,n):this.getIframeContents(e,t,n):this.observeIframeLoad(e,t,n)}catch{n()}}waitForIframes(e,t){let n=0;this.forEachIframe(e,()=>!0,s=>{n++,this.waitForIframes(s.querySelector("html"),()=>{--n||t()})},s=>{s||t()})}forEachIframe(e,t,n,s=()=>{}){let r=e.querySelectorAll("iframe"),i=r.length,o=0;r=Array.prototype.slice.call(r);const l=()=>{--i<=0&&s(o)};i||l(),r.forEach(c=>{ce.matches(c,this.exclude)?l():this.onIframeReady(c,f=>{t(c)&&(o++,n(f)),l()},l)})}createIterator(e,t,n){return document.createNodeIterator(e,t,n,!1)}createInstanceOnIframe(e){return new ce(e.querySelector("html"),this.iframes)}compareNodeIframe(e,t,n){const s=e.compareDocumentPosition(n),r=Node.DOCUMENT_POSITION_PRECEDING;if(s&r)if(t!==null){const i=t.compareDocumentPosition(n),o=Node.DOCUMENT_POSITION_FOLLOWING;if(i&o)return!0}else return!0;return!1}getIteratorNode(e){const t=e.previousNode();let n;return t===null?n=e.nextNode():n=e.nextNode()&&e.nextNode(),{prevNode:t,node:n}}checkIframeFilter(e,t,n,s){let r=!1,i=!1;return s.forEach((o,l)=>{o.val===n&&(r=l,i=o.handled)}),this.compareNodeIframe(e,t,n)?(r===!1&&!i?s.push({val:n,handled:!0}):r!==!1&&!i&&(s[r].handled=!0),!0):(r===!1&&s.push({val:n,handled:!1}),!1)}handleOpenIframes(e,t,n,s){e.forEach(r=>{r.handled||this.getIframeContents(r.val,i=>{this.createInstanceOnIframe(i).forEachNode(t,n,s)})})}iterateThroughNodes(e,t,n,s,r){const i=this.createIterator(t,e,s);let o=[],l=[],c,f,g=()=>({prevNode:f,node:c}=this.getIteratorNode(i),c);for(;g();)this.iframes&&this.forEachIframe(t,h=>this.checkIframeFilter(c,f,h,o),h=>{this.createInstanceOnIframe(h).forEachNode(e,b=>l.push(b),s)}),l.push(c);l.forEach(h=>{n(h)}),this.iframes&&this.handleOpenIframes(o,e,n,s),r()}forEachNode(e,t,n,s=()=>{}){const r=this.getContexts();let i=r.length;i||s(),r.forEach(o=>{const l=()=>{this.iterateThroughNodes(e,o,t,n,()=>{--i<=0&&s()})};this.iframes?this.waitForIframes(o,l):l()})}}let jn=class{constructor(e){this.ctx=e,this.ie=!1;const t=window.navigator.userAgent;(t.indexOf("MSIE")>-1||t.indexOf("Trident")>-1)&&(this.ie=!0)}set opt(e){this._opt=Object.assign({},{element:"",className:"",exclude:[],iframes:!1,iframesTimeout:5e3,separateWordSearch:!0,diacritics:!0,synonyms:{},accuracy:"partially",acrossElements:!1,caseSensitive:!1,ignoreJoiners:!1,ignoreGroups:0,ignorePunctuation:[],wildcards:"disabled",each:()=>{},noMatch:()=>{},filter:()=>!0,done:()=>{},debug:!1,log:window.console},e)}get opt(){return this._opt}get iterator(){return new ce(this.ctx,this.opt.iframes,this.opt.exclude,this.opt.iframesTimeout)}log(e,t="debug"){const n=this.opt.log;this.opt.debug&&typeof n=="object"&&typeof n[t]=="function"&&n[t](`mark.js: ${e}`)}escapeStr(e){return e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}createRegExp(e){return this.opt.wildcards!=="disabled"&&(e=this.setupWildcardsRegExp(e)),e=this.escapeStr(e),Object.keys(this.opt.synonyms).length&&(e=this.createSynonymsRegExp(e)),(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.setupIgnoreJoinersRegExp(e)),this.opt.diacritics&&(e=this.createDiacriticsRegExp(e)),e=this.createMergedBlanksRegExp(e),(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.createJoinersRegExp(e)),this.opt.wildcards!=="disabled"&&(e=this.createWildcardsRegExp(e)),e=this.createAccuracyRegExp(e),e}createSynonymsRegExp(e){const t=this.opt.synonyms,n=this.opt.caseSensitive?"":"i",s=this.opt.ignoreJoiners||this.opt.ignorePunctuation.length?"\0":"";for(let r in t)if(t.hasOwnProperty(r)){const i=t[r],o=this.opt.wildcards!=="disabled"?this.setupWildcardsRegExp(r):this.escapeStr(r),l=this.opt.wildcards!=="disabled"?this.setupWildcardsRegExp(i):this.escapeStr(i);o!==""&&l!==""&&(e=e.replace(new RegExp(`(${this.escapeStr(o)}|${this.escapeStr(l)})`,`gm${n}`),s+`(${this.processSynomyms(o)}|${this.processSynomyms(l)})`+s))}return e}processSynomyms(e){return(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.setupIgnoreJoinersRegExp(e)),e}setupWildcardsRegExp(e){return e=e.replace(/(?:\\)*\?/g,t=>t.charAt(0)==="\\"?"?":""),e.replace(/(?:\\)*\*/g,t=>t.charAt(0)==="\\"?"*":"")}createWildcardsRegExp(e){let t=this.opt.wildcards==="withSpaces";return e.replace(/\u0001/g,t?"[\\S\\s]?":"\\S?").replace(/\u0002/g,t?"[\\S\\s]*?":"\\S*")}setupIgnoreJoinersRegExp(e){return e.replace(/[^(|)\\]/g,(t,n,s)=>{let r=s.charAt(n+1);return/[(|)\\]/.test(r)||r===""?t:t+"\0"})}createJoinersRegExp(e){let t=[];const n=this.opt.ignorePunctuation;return Array.isArray(n)&&n.length&&t.push(this.escapeStr(n.join(""))),this.opt.ignoreJoiners&&t.push("\\u00ad\\u200b\\u200c\\u200d"),t.length?e.split(/\u0000+/).join(`[${t.join("")}]*`):e}createDiacriticsRegExp(e){const t=this.opt.caseSensitive?"":"i",n=this.opt.caseSensitive?["aàáảãạăằắẳẵặâầấẩẫậäåāą","AÀÁẢÃẠĂẰẮẲẴẶÂẦẤẨẪẬÄÅĀĄ","cçćč","CÇĆČ","dđď","DĐĎ","eèéẻẽẹêềếểễệëěēę","EÈÉẺẼẸÊỀẾỂỄỆËĚĒĘ","iìíỉĩịîïī","IÌÍỈĨỊÎÏĪ","lł","LŁ","nñňń","NÑŇŃ","oòóỏõọôồốổỗộơởỡớờợöøō","OÒÓỎÕỌÔỒỐỔỖỘƠỞỠỚỜỢÖØŌ","rř","RŘ","sšśșş","SŠŚȘŞ","tťțţ","TŤȚŢ","uùúủũụưừứửữựûüůū","UÙÚỦŨỤƯỪỨỬỮỰÛÜŮŪ","yýỳỷỹỵÿ","YÝỲỶỸỴŸ","zžżź","ZŽŻŹ"]:["aàáảãạăằắẳẵặâầấẩẫậäåāąAÀÁẢÃẠĂẰẮẲẴẶÂẦẤẨẪẬÄÅĀĄ","cçćčCÇĆČ","dđďDĐĎ","eèéẻẽẹêềếểễệëěēęEÈÉẺẼẸÊỀẾỂỄỆËĚĒĘ","iìíỉĩịîïīIÌÍỈĨỊÎÏĪ","lłLŁ","nñňńNÑŇŃ","oòóỏõọôồốổỗộơởỡớờợöøōOÒÓỎÕỌÔỒỐỔỖỘƠỞỠỚỜỢÖØŌ","rřRŘ","sšśșşSŠŚȘŞ","tťțţTŤȚŢ","uùúủũụưừứửữựûüůūUÙÚỦŨỤƯỪỨỬỮỰÛÜŮŪ","yýỳỷỹỵÿYÝỲỶỸỴŸ","zžżźZŽŻŹ"];let s=[];return e.split("").forEach(r=>{n.every(i=>{if(i.indexOf(r)!==-1){if(s.indexOf(i)>-1)return!1;e=e.replace(new RegExp(`[${i}]`,`gm${t}`),`[${i}]`),s.push(i)}return!0})}),e}createMergedBlanksRegExp(e){return e.replace(/[\s]+/gmi,"[\\s]+")}createAccuracyRegExp(e){const t="!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~¡¿";let n=this.opt.accuracy,s=typeof n=="string"?n:n.value,r=typeof n=="string"?[]:n.limiters,i="";switch(r.forEach(o=>{i+=`|${this.escapeStr(o)}`}),s){case"partially":default:return`()(${e})`;case"complementary":return i="\\s"+(i||this.escapeStr(t)),`()([^${i}]*${e}[^${i}]*)`;case"exactly":return`(^|\\s${i})(${e})(?=$|\\s${i})`}}getSeparatedKeywords(e){let t=[];return e.forEach(n=>{this.opt.separateWordSearch?n.split(" ").forEach(s=>{s.trim()&&t.indexOf(s)===-1&&t.push(s)}):n.trim()&&t.indexOf(n)===-1&&t.push(n)}),{keywords:t.sort((n,s)=>s.length-n.length),length:t.length}}isNumeric(e){return Number(parseFloat(e))==e}checkRanges(e){if(!Array.isArray(e)||Object.prototype.toString.call(e[0])!=="[object Object]")return this.log("markRanges() will only accept an array of objects"),this.opt.noMatch(e),[];const t=[];let n=0;return e.sort((s,r)=>s.start-r.start).forEach(s=>{let{start:r,end:i,valid:o}=this.callNoMatchOnInvalidRanges(s,n);o&&(s.start=r,s.length=i-r,t.push(s),n=i)}),t}callNoMatchOnInvalidRanges(e,t){let n,s,r=!1;return e&&typeof e.start<"u"?(n=parseInt(e.start,10),s=n+parseInt(e.length,10),this.isNumeric(e.start)&&this.isNumeric(e.length)&&s-t>0&&s-n>0?r=!0:(this.log(`Ignoring invalid or overlapping range: ${JSON.stringify(e)}`),this.opt.noMatch(e))):(this.log(`Ignoring invalid range: ${JSON.stringify(e)}`),this.opt.noMatch(e)),{start:n,end:s,valid:r}}checkWhitespaceRanges(e,t,n){let s,r=!0,i=n.length,o=t-i,l=parseInt(e.start,10)-o;return l=l>i?i:l,s=l+parseInt(e.length,10),s>i&&(s=i,this.log(`End range automatically set to the max value of ${i}`)),l<0||s-l<0||l>i||s>i?(r=!1,this.log(`Invalid range: ${JSON.stringify(e)}`),this.opt.noMatch(e)):n.substring(l,s).replace(/\s+/g,"")===""&&(r=!1,this.log("Skipping whitespace only range: "+JSON.stringify(e)),this.opt.noMatch(e)),{start:l,end:s,valid:r}}getTextNodes(e){let t="",n=[];this.iterator.forEachNode(NodeFilter.SHOW_TEXT,s=>{n.push({start:t.length,end:(t+=s.textContent).length,node:s})},s=>this.matchesExclude(s.parentNode)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT,()=>{e({value:t,nodes:n})})}matchesExclude(e){return ce.matches(e,this.opt.exclude.concat(["script","style","title","head","html"]))}wrapRangeInTextNode(e,t,n){const s=this.opt.element?this.opt.element:"mark",r=e.splitText(t),i=r.splitText(n-t);let o=document.createElement(s);return o.setAttribute("data-markjs","true"),this.opt.className&&o.setAttribute("class",this.opt.className),o.textContent=r.textContent,r.parentNode.replaceChild(o,r),i}wrapRangeInMappedTextNode(e,t,n,s,r){e.nodes.every((i,o)=>{const l=e.nodes[o+1];if(typeof l>"u"||l.start>t){if(!s(i.node))return!1;const c=t-i.start,f=(n>i.end?i.end:n)-i.start,g=e.value.substr(0,i.start),h=e.value.substr(f+i.start);if(i.node=this.wrapRangeInTextNode(i.node,c,f),e.value=g+h,e.nodes.forEach((b,y)=>{y>=o&&(e.nodes[y].start>0&&y!==o&&(e.nodes[y].start-=f),e.nodes[y].end-=f)}),n-=f,r(i.node.previousSibling,i.start),n>i.end)t=i.end;else return!1}return!0})}wrapMatches(e,t,n,s,r){const i=t===0?0:t+1;this.getTextNodes(o=>{o.nodes.forEach(l=>{l=l.node;let c;for(;(c=e.exec(l.textContent))!==null&&c[i]!=="";){if(!n(c[i],l))continue;let f=c.index;if(i!==0)for(let g=1;g{let l;for(;(l=e.exec(o.value))!==null&&l[i]!=="";){let c=l.index;if(i!==0)for(let g=1;gn(l[i],g),(g,h)=>{e.lastIndex=h,s(g)})}r()})}wrapRangeFromIndex(e,t,n,s){this.getTextNodes(r=>{const i=r.value.length;e.forEach((o,l)=>{let{start:c,end:f,valid:g}=this.checkWhitespaceRanges(o,i,r.value);g&&this.wrapRangeInMappedTextNode(r,c,f,h=>t(h,o,r.value.substring(c,f),l),h=>{n(h,o)})}),s()})}unwrapMatches(e){const t=e.parentNode;let n=document.createDocumentFragment();for(;e.firstChild;)n.appendChild(e.removeChild(e.firstChild));t.replaceChild(n,e),this.ie?this.normalizeTextNode(t):t.normalize()}normalizeTextNode(e){if(e){if(e.nodeType===3)for(;e.nextSibling&&e.nextSibling.nodeType===3;)e.nodeValue+=e.nextSibling.nodeValue,e.parentNode.removeChild(e.nextSibling);else this.normalizeTextNode(e.firstChild);this.normalizeTextNode(e.nextSibling)}}markRegExp(e,t){this.opt=t,this.log(`Searching with expression "${e}"`);let n=0,s="wrapMatches";const r=i=>{n++,this.opt.each(i)};this.opt.acrossElements&&(s="wrapMatchesAcrossElements"),this[s](e,this.opt.ignoreGroups,(i,o)=>this.opt.filter(o,i,n),r,()=>{n===0&&this.opt.noMatch(e),this.opt.done(n)})}mark(e,t){this.opt=t;let n=0,s="wrapMatches";const{keywords:r,length:i}=this.getSeparatedKeywords(typeof e=="string"?[e]:e),o=this.opt.caseSensitive?"":"i",l=c=>{let f=new RegExp(this.createRegExp(c),`gm${o}`),g=0;this.log(`Searching with expression "${f}"`),this[s](f,1,(h,b)=>this.opt.filter(b,c,n,g),h=>{g++,n++,this.opt.each(h)},()=>{g===0&&this.opt.noMatch(c),r[i-1]===c?this.opt.done(n):l(r[r.indexOf(c)+1])})};this.opt.acrossElements&&(s="wrapMatchesAcrossElements"),i===0?this.opt.done(n):l(r[0])}markRanges(e,t){this.opt=t;let n=0,s=this.checkRanges(e);s&&s.length?(this.log("Starting to mark with the following ranges: "+JSON.stringify(s)),this.wrapRangeFromIndex(s,(r,i,o,l)=>this.opt.filter(r,i,o,l),(r,i)=>{n++,this.opt.each(r,i)},()=>{this.opt.done(n)})):this.opt.done(n)}unmark(e){this.opt=e;let t=this.opt.element?this.opt.element:"*";t+="[data-markjs]",this.opt.className&&(t+=`.${this.opt.className}`),this.log(`Removal selector "${t}"`),this.iterator.forEachNode(NodeFilter.SHOW_ELEMENT,n=>{this.unwrapMatches(n)},n=>{const s=ce.matches(n,t),r=this.matchesExclude(n);return!s||r?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT},this.opt.done)}};function Vn(a){const e=new jn(a);return this.mark=(t,n)=>(e.mark(t,n),this),this.markRegExp=(t,n)=>(e.markRegExp(t,n),this),this.markRanges=(t,n)=>(e.markRanges(t,n),this),this.unmark=t=>(e.unmark(t),this),this}function ke(a,e,t,n){function s(r){return r instanceof t?r:new t(function(i){i(r)})}return new(t||(t=Promise))(function(r,i){function o(f){try{c(n.next(f))}catch(g){i(g)}}function l(f){try{c(n.throw(f))}catch(g){i(g)}}function c(f){f.done?r(f.value):s(f.value).then(o,l)}c((n=n.apply(a,[])).next())})}const $n="ENTRIES",_t="KEYS",St="VALUES",D="";class De{constructor(e,t){const n=e._tree,s=Array.from(n.keys());this.set=e,this._type=t,this._path=s.length>0?[{node:n,keys:s}]:[]}next(){const e=this.dive();return this.backtrack(),e}dive(){if(this._path.length===0)return{done:!0,value:void 0};const{node:e,keys:t}=le(this._path);if(le(t)===D)return{done:!1,value:this.result()};const n=e.get(le(t));return this._path.push({node:n,keys:Array.from(n.keys())}),this.dive()}backtrack(){if(this._path.length===0)return;const e=le(this._path).keys;e.pop(),!(e.length>0)&&(this._path.pop(),this.backtrack())}key(){return this.set._prefix+this._path.map(({keys:e})=>le(e)).filter(e=>e!==D).join("")}value(){return le(this._path).node.get(D)}result(){switch(this._type){case St:return this.value();case _t:return this.key();default:return[this.key(),this.value()]}}[Symbol.iterator](){return this}}const le=a=>a[a.length-1],Bn=(a,e,t)=>{const n=new Map;if(e===void 0)return n;const s=e.length+1,r=s+t,i=new Uint8Array(r*s).fill(t+1);for(let o=0;o{const l=r*i;e:for(const c of a.keys())if(c===D){const f=s[l-1];f<=t&&n.set(o,[a.get(c),f])}else{let f=r;for(let g=0;gt)continue e}Et(a.get(c),e,t,n,s,f,i,o+c)}};class X{constructor(e=new Map,t=""){this._size=void 0,this._tree=e,this._prefix=t}atPrefix(e){if(!e.startsWith(this._prefix))throw new Error("Mismatched prefix");const[t,n]=Re(this._tree,e.slice(this._prefix.length));if(t===void 0){const[s,r]=Ue(n);for(const i of s.keys())if(i!==D&&i.startsWith(r)){const o=new Map;return o.set(i.slice(r.length),s.get(i)),new X(o,e)}}return new X(t,e)}clear(){this._size=void 0,this._tree.clear()}delete(e){return this._size=void 0,Wn(this._tree,e)}entries(){return new De(this,$n)}forEach(e){for(const[t,n]of this)e(t,n,this)}fuzzyGet(e,t){return Bn(this._tree,e,t)}get(e){const t=Ke(this._tree,e);return t!==void 0?t.get(D):void 0}has(e){const t=Ke(this._tree,e);return t!==void 0&&t.has(D)}keys(){return new De(this,_t)}set(e,t){if(typeof e!="string")throw new Error("key must be a string");return this._size=void 0,ze(this._tree,e).set(D,t),this}get size(){if(this._size)return this._size;this._size=0;const e=this.entries();for(;!e.next().done;)this._size+=1;return this._size}update(e,t){if(typeof e!="string")throw new Error("key must be a string");this._size=void 0;const n=ze(this._tree,e);return n.set(D,t(n.get(D))),this}fetch(e,t){if(typeof e!="string")throw new Error("key must be a string");this._size=void 0;const n=ze(this._tree,e);let s=n.get(D);return s===void 0&&n.set(D,s=t()),s}values(){return new De(this,St)}[Symbol.iterator](){return this.entries()}static from(e){const t=new X;for(const[n,s]of e)t.set(n,s);return t}static fromObject(e){return X.from(Object.entries(e))}}const Re=(a,e,t=[])=>{if(e.length===0||a==null)return[a,t];for(const n of a.keys())if(n!==D&&e.startsWith(n))return t.push([a,n]),Re(a.get(n),e.slice(n.length),t);return t.push([a,e]),Re(void 0,"",t)},Ke=(a,e)=>{if(e.length===0||a==null)return a;for(const t of a.keys())if(t!==D&&e.startsWith(t))return Ke(a.get(t),e.slice(t.length))},ze=(a,e)=>{const t=e.length;e:for(let n=0;a&&n{const[t,n]=Re(a,e);if(t!==void 0){if(t.delete(D),t.size===0)Tt(n);else if(t.size===1){const[s,r]=t.entries().next().value;It(n,s,r)}}},Tt=a=>{if(a.length===0)return;const[e,t]=Ue(a);if(e.delete(t),e.size===0)Tt(a.slice(0,-1));else if(e.size===1){const[n,s]=e.entries().next().value;n!==D&&It(a.slice(0,-1),n,s)}},It=(a,e,t)=>{if(a.length===0)return;const[n,s]=Ue(a);n.set(s+e,t),n.delete(s)},Ue=a=>a[a.length-1],Ge="or",kt="and",Kn="and_not";class ue{constructor(e){if((e==null?void 0:e.fields)==null)throw new Error('MiniSearch: option "fields" must be provided');const t=e.autoVacuum==null||e.autoVacuum===!0?Ve:e.autoVacuum;this._options=Object.assign(Object.assign(Object.assign({},je),e),{autoVacuum:t,searchOptions:Object.assign(Object.assign({},ft),e.searchOptions||{}),autoSuggestOptions:Object.assign(Object.assign({},Hn),e.autoSuggestOptions||{})}),this._index=new X,this._documentCount=0,this._documentIds=new Map,this._idToShortId=new Map,this._fieldIds={},this._fieldLength=new Map,this._avgFieldLength=[],this._nextId=0,this._storedFields=new Map,this._dirtCount=0,this._currentVacuum=null,this._enqueuedVacuum=null,this._enqueuedVacuumConditions=qe,this.addFields(this._options.fields)}add(e){const{extractField:t,tokenize:n,processTerm:s,fields:r,idField:i}=this._options,o=t(e,i);if(o==null)throw new Error(`MiniSearch: document does not have ID field "${i}"`);if(this._idToShortId.has(o))throw new Error(`MiniSearch: duplicate ID ${o}`);const l=this.addDocumentId(o);this.saveStoredFields(l,e);for(const c of r){const f=t(e,c);if(f==null)continue;const g=n(f.toString(),c),h=this._fieldIds[c],b=new Set(g).size;this.addFieldLength(l,h,this._documentCount-1,b);for(const y of g){const x=s(y,c);if(Array.isArray(x))for(const w of x)this.addTerm(h,l,w);else x&&this.addTerm(h,l,x)}}}addAll(e){for(const t of e)this.add(t)}addAllAsync(e,t={}){const{chunkSize:n=10}=t,s={chunk:[],promise:Promise.resolve()},{chunk:r,promise:i}=e.reduce(({chunk:o,promise:l},c,f)=>(o.push(c),(f+1)%n===0?{chunk:[],promise:l.then(()=>new Promise(g=>setTimeout(g,0))).then(()=>this.addAll(o))}:{chunk:o,promise:l}),s);return i.then(()=>this.addAll(r))}remove(e){const{tokenize:t,processTerm:n,extractField:s,fields:r,idField:i}=this._options,o=s(e,i);if(o==null)throw new Error(`MiniSearch: document does not have ID field "${i}"`);const l=this._idToShortId.get(o);if(l==null)throw new Error(`MiniSearch: cannot remove document with ID ${o}: it is not in the index`);for(const c of r){const f=s(e,c);if(f==null)continue;const g=t(f.toString(),c),h=this._fieldIds[c],b=new Set(g).size;this.removeFieldLength(l,h,this._documentCount,b);for(const y of g){const x=n(y,c);if(Array.isArray(x))for(const w of x)this.removeTerm(h,l,w);else x&&this.removeTerm(h,l,x)}}this._storedFields.delete(l),this._documentIds.delete(l),this._idToShortId.delete(o),this._fieldLength.delete(l),this._documentCount-=1}removeAll(e){if(e)for(const t of e)this.remove(t);else{if(arguments.length>0)throw new Error("Expected documents to be present. Omit the argument to remove all documents.");this._index=new X,this._documentCount=0,this._documentIds=new Map,this._idToShortId=new Map,this._fieldLength=new Map,this._avgFieldLength=[],this._storedFields=new Map,this._nextId=0}}discard(e){const t=this._idToShortId.get(e);if(t==null)throw new Error(`MiniSearch: cannot discard document with ID ${e}: it is not in the index`);this._idToShortId.delete(e),this._documentIds.delete(t),this._storedFields.delete(t),(this._fieldLength.get(t)||[]).forEach((n,s)=>{this.removeFieldLength(t,s,this._documentCount,n)}),this._fieldLength.delete(t),this._documentCount-=1,this._dirtCount+=1,this.maybeAutoVacuum()}maybeAutoVacuum(){if(this._options.autoVacuum===!1)return;const{minDirtFactor:e,minDirtCount:t,batchSize:n,batchWait:s}=this._options.autoVacuum;this.conditionalVacuum({batchSize:n,batchWait:s},{minDirtCount:t,minDirtFactor:e})}discardAll(e){const t=this._options.autoVacuum;try{this._options.autoVacuum=!1;for(const n of e)this.discard(n)}finally{this._options.autoVacuum=t}this.maybeAutoVacuum()}replace(e){const{idField:t,extractField:n}=this._options,s=n(e,t);this.discard(s),this.add(e)}vacuum(e={}){return this.conditionalVacuum(e)}conditionalVacuum(e,t){return this._currentVacuum?(this._enqueuedVacuumConditions=this._enqueuedVacuumConditions&&t,this._enqueuedVacuum!=null?this._enqueuedVacuum:(this._enqueuedVacuum=this._currentVacuum.then(()=>{const n=this._enqueuedVacuumConditions;return this._enqueuedVacuumConditions=qe,this.performVacuuming(e,n)}),this._enqueuedVacuum)):this.vacuumConditionsMet(t)===!1?Promise.resolve():(this._currentVacuum=this.performVacuuming(e),this._currentVacuum)}performVacuuming(e,t){return ke(this,void 0,void 0,function*(){const n=this._dirtCount;if(this.vacuumConditionsMet(t)){const s=e.batchSize||Je.batchSize,r=e.batchWait||Je.batchWait;let i=1;for(const[o,l]of this._index){for(const[c,f]of l)for(const[g]of f)this._documentIds.has(g)||(f.size<=1?l.delete(c):f.delete(g));this._index.get(o).size===0&&this._index.delete(o),i%s===0&&(yield new Promise(c=>setTimeout(c,r))),i+=1}this._dirtCount-=n}yield null,this._currentVacuum=this._enqueuedVacuum,this._enqueuedVacuum=null})}vacuumConditionsMet(e){if(e==null)return!0;let{minDirtCount:t,minDirtFactor:n}=e;return t=t||Ve.minDirtCount,n=n||Ve.minDirtFactor,this.dirtCount>=t&&this.dirtFactor>=n}get isVacuuming(){return this._currentVacuum!=null}get dirtCount(){return this._dirtCount}get dirtFactor(){return this._dirtCount/(1+this._documentCount+this._dirtCount)}has(e){return this._idToShortId.has(e)}getStoredFields(e){const t=this._idToShortId.get(e);if(t!=null)return this._storedFields.get(t)}search(e,t={}){const{searchOptions:n}=this._options,s=Object.assign(Object.assign({},n),t),r=this.executeQuery(e,t),i=[];for(const[o,{score:l,terms:c,match:f}]of r){const g=c.length||1,h={id:this._documentIds.get(o),score:l*g,terms:Object.keys(f),queryTerms:c,match:f};Object.assign(h,this._storedFields.get(o)),(s.filter==null||s.filter(h))&&i.push(h)}return e===ue.wildcard&&s.boostDocument==null||i.sort(pt),i}autoSuggest(e,t={}){t=Object.assign(Object.assign({},this._options.autoSuggestOptions),t);const n=new Map;for(const{score:r,terms:i}of this.search(e,t)){const o=i.join(" "),l=n.get(o);l!=null?(l.score+=r,l.count+=1):n.set(o,{score:r,terms:i,count:1})}const s=[];for(const[r,{score:i,terms:o,count:l}]of n)s.push({suggestion:r,terms:o,score:i/l});return s.sort(pt),s}get documentCount(){return this._documentCount}get termCount(){return this._index.size}static loadJSON(e,t){if(t==null)throw new Error("MiniSearch: loadJSON should be given the same options used when serializing the index");return this.loadJS(JSON.parse(e),t)}static loadJSONAsync(e,t){return ke(this,void 0,void 0,function*(){if(t==null)throw new Error("MiniSearch: loadJSON should be given the same options used when serializing the index");return this.loadJSAsync(JSON.parse(e),t)})}static getDefault(e){if(je.hasOwnProperty(e))return Pe(je,e);throw new Error(`MiniSearch: unknown option "${e}"`)}static loadJS(e,t){const{index:n,documentIds:s,fieldLength:r,storedFields:i,serializationVersion:o}=e,l=this.instantiateMiniSearch(e,t);l._documentIds=Te(s),l._fieldLength=Te(r),l._storedFields=Te(i);for(const[c,f]of l._documentIds)l._idToShortId.set(f,c);for(const[c,f]of n){const g=new Map;for(const h of Object.keys(f)){let b=f[h];o===1&&(b=b.ds),g.set(parseInt(h,10),Te(b))}l._index.set(c,g)}return l}static loadJSAsync(e,t){return ke(this,void 0,void 0,function*(){const{index:n,documentIds:s,fieldLength:r,storedFields:i,serializationVersion:o}=e,l=this.instantiateMiniSearch(e,t);l._documentIds=yield Ie(s),l._fieldLength=yield Ie(r),l._storedFields=yield Ie(i);for(const[f,g]of l._documentIds)l._idToShortId.set(g,f);let c=0;for(const[f,g]of n){const h=new Map;for(const b of Object.keys(g)){let y=g[b];o===1&&(y=y.ds),h.set(parseInt(b,10),yield Ie(y))}++c%1e3===0&&(yield Nt(0)),l._index.set(f,h)}return l})}static instantiateMiniSearch(e,t){const{documentCount:n,nextId:s,fieldIds:r,averageFieldLength:i,dirtCount:o,serializationVersion:l}=e;if(l!==1&&l!==2)throw new Error("MiniSearch: cannot deserialize an index created with an incompatible version");const c=new ue(t);return c._documentCount=n,c._nextId=s,c._idToShortId=new Map,c._fieldIds=r,c._avgFieldLength=i,c._dirtCount=o||0,c._index=new X,c}executeQuery(e,t={}){if(e===ue.wildcard)return this.executeWildcardQuery(t);if(typeof e!="string"){const h=Object.assign(Object.assign(Object.assign({},t),e),{queries:void 0}),b=e.queries.map(y=>this.executeQuery(y,h));return this.combineResults(b,h.combineWith)}const{tokenize:n,processTerm:s,searchOptions:r}=this._options,i=Object.assign(Object.assign({tokenize:n,processTerm:s},r),t),{tokenize:o,processTerm:l}=i,g=o(e).flatMap(h=>l(h)).filter(h=>!!h).map(Gn(i)).map(h=>this.executeQuerySpec(h,i));return this.combineResults(g,i.combineWith)}executeQuerySpec(e,t){const n=Object.assign(Object.assign({},this._options.searchOptions),t),s=(n.fields||this._options.fields).reduce((x,w)=>Object.assign(Object.assign({},x),{[w]:Pe(n.boost,w)||1}),{}),{boostDocument:r,weights:i,maxFuzzy:o,bm25:l}=n,{fuzzy:c,prefix:f}=Object.assign(Object.assign({},ft.weights),i),g=this._index.get(e.term),h=this.termResults(e.term,e.term,1,e.termBoost,g,s,r,l);let b,y;if(e.prefix&&(b=this._index.atPrefix(e.term)),e.fuzzy){const x=e.fuzzy===!0?.2:e.fuzzy,w=x<1?Math.min(o,Math.round(e.term.length*x)):x;w&&(y=this._index.fuzzyGet(e.term,w))}if(b)for(const[x,w]of b){const R=x.length-e.term.length;if(!R)continue;y==null||y.delete(x);const A=f*x.length/(x.length+.3*R);this.termResults(e.term,x,A,e.termBoost,w,s,r,l,h)}if(y)for(const x of y.keys()){const[w,R]=y.get(x);if(!R)continue;const A=c*x.length/(x.length+R);this.termResults(e.term,x,A,e.termBoost,w,s,r,l,h)}return h}executeWildcardQuery(e){const t=new Map,n=Object.assign(Object.assign({},this._options.searchOptions),e);for(const[s,r]of this._documentIds){const i=n.boostDocument?n.boostDocument(r,"",this._storedFields.get(s)):1;t.set(s,{score:i,terms:[],match:{}})}return t}combineResults(e,t=Ge){if(e.length===0)return new Map;const n=t.toLowerCase(),s=Jn[n];if(!s)throw new Error(`Invalid combination operator: ${t}`);return e.reduce(s)||new Map}toJSON(){const e=[];for(const[t,n]of this._index){const s={};for(const[r,i]of n)s[r]=Object.fromEntries(i);e.push([t,s])}return{documentCount:this._documentCount,nextId:this._nextId,documentIds:Object.fromEntries(this._documentIds),fieldIds:this._fieldIds,fieldLength:Object.fromEntries(this._fieldLength),averageFieldLength:this._avgFieldLength,storedFields:Object.fromEntries(this._storedFields),dirtCount:this._dirtCount,index:e,serializationVersion:2}}termResults(e,t,n,s,r,i,o,l,c=new Map){if(r==null)return c;for(const f of Object.keys(i)){const g=i[f],h=this._fieldIds[f],b=r.get(h);if(b==null)continue;let y=b.size;const x=this._avgFieldLength[h];for(const w of b.keys()){if(!this._documentIds.has(w)){this.removeTerm(h,w,t),y-=1;continue}const R=o?o(this._documentIds.get(w),t,this._storedFields.get(w)):1;if(!R)continue;const A=b.get(w),J=this._fieldLength.get(w)[h],Q=Un(A,y,this._documentCount,J,x,l),W=n*s*g*R*Q,V=c.get(w);if(V){V.score+=W,Qn(V.terms,e);const $=Pe(V.match,t);$?$.push(f):V.match[t]=[f]}else c.set(w,{score:W,terms:[e],match:{[t]:[f]}})}}return c}addTerm(e,t,n){const s=this._index.fetch(n,mt);let r=s.get(e);if(r==null)r=new Map,r.set(t,1),s.set(e,r);else{const i=r.get(t);r.set(t,(i||0)+1)}}removeTerm(e,t,n){if(!this._index.has(n)){this.warnDocumentChanged(t,e,n);return}const s=this._index.fetch(n,mt),r=s.get(e);r==null||r.get(t)==null?this.warnDocumentChanged(t,e,n):r.get(t)<=1?r.size<=1?s.delete(e):r.delete(t):r.set(t,r.get(t)-1),this._index.get(n).size===0&&this._index.delete(n)}warnDocumentChanged(e,t,n){for(const s of Object.keys(this._fieldIds))if(this._fieldIds[s]===t){this._options.logger("warn",`MiniSearch: document with ID ${this._documentIds.get(e)} has changed before removal: term "${n}" was not present in field "${s}". Removing a document after it has changed can corrupt the index!`,"version_conflict");return}}addDocumentId(e){const t=this._nextId;return this._idToShortId.set(e,t),this._documentIds.set(t,e),this._documentCount+=1,this._nextId+=1,t}addFields(e){for(let t=0;tObject.prototype.hasOwnProperty.call(a,e)?a[e]:void 0,Jn={[Ge]:(a,e)=>{for(const t of e.keys()){const n=a.get(t);if(n==null)a.set(t,e.get(t));else{const{score:s,terms:r,match:i}=e.get(t);n.score=n.score+s,n.match=Object.assign(n.match,i),ht(n.terms,r)}}return a},[kt]:(a,e)=>{const t=new Map;for(const n of e.keys()){const s=a.get(n);if(s==null)continue;const{score:r,terms:i,match:o}=e.get(n);ht(s.terms,i),t.set(n,{score:s.score+r,terms:s.terms,match:Object.assign(s.match,o)})}return t},[Kn]:(a,e)=>{for(const t of e.keys())a.delete(t);return a}},qn={k:1.2,b:.7,d:.5},Un=(a,e,t,n,s,r)=>{const{k:i,b:o,d:l}=r;return Math.log(1+(t-e+.5)/(e+.5))*(l+a*(i+1)/(a+i*(1-o+o*n/s)))},Gn=a=>(e,t,n)=>{const s=typeof a.fuzzy=="function"?a.fuzzy(e,t,n):a.fuzzy||!1,r=typeof a.prefix=="function"?a.prefix(e,t,n):a.prefix===!0,i=typeof a.boostTerm=="function"?a.boostTerm(e,t,n):1;return{term:e,fuzzy:s,prefix:r,termBoost:i}},je={idField:"id",extractField:(a,e)=>a[e],tokenize:a=>a.split(Yn),processTerm:a=>a.toLowerCase(),fields:void 0,searchOptions:void 0,storeFields:[],logger:(a,e)=>{typeof(console==null?void 0:console[a])=="function"&&console[a](e)},autoVacuum:!0},ft={combineWith:Ge,prefix:!1,fuzzy:!1,maxFuzzy:6,boost:{},weights:{fuzzy:.45,prefix:.375},bm25:qn},Hn={combineWith:kt,prefix:(a,e,t)=>e===t.length-1},Je={batchSize:1e3,batchWait:10},qe={minDirtFactor:.1,minDirtCount:20},Ve=Object.assign(Object.assign({},Je),qe),Qn=(a,e)=>{a.includes(e)||a.push(e)},ht=(a,e)=>{for(const t of e)a.includes(t)||a.push(t)},pt=({score:a},{score:e})=>e-a,mt=()=>new Map,Te=a=>{const e=new Map;for(const t of Object.keys(a))e.set(parseInt(t,10),a[t]);return e},Ie=a=>ke(void 0,void 0,void 0,function*(){const e=new Map;let t=0;for(const n of Object.keys(a))e.set(parseInt(n,10),a[n]),++t%1e3===0&&(yield Nt(0));return e}),Nt=a=>new Promise(e=>setTimeout(e,a)),Yn=/[\n\r\p{Z}\p{P}]+/u;class Zn{constructor(e=10){Ae(this,"max");Ae(this,"cache");this.max=e,this.cache=new Map}get(e){let t=this.cache.get(e);return t!==void 0&&(this.cache.delete(e),this.cache.set(e,t)),t}set(e,t){this.cache.has(e)?this.cache.delete(e):this.cache.size===this.max&&this.cache.delete(this.first()),this.cache.set(e,t)}first(){return this.cache.keys().next().value}clear(){this.cache.clear()}}const Xn=["aria-owns"],es={class:"shell"},ts=["title"],ns={class:"search-actions before"},ss=["title"],is=["aria-activedescendant","aria-controls","placeholder"],rs={class:"search-actions"},as=["title"],os=["disabled","title"],ls=["id","role","aria-labelledby"],cs=["id","aria-selected"],us=["href","aria-label","onMouseenter","onFocusin","data-index"],ds={class:"titles"},fs=["innerHTML"],hs={class:"title main"},ps=["innerHTML"],ms={key:0,class:"excerpt-wrapper"},gs={key:0,class:"excerpt",inert:""},vs=["innerHTML"],bs={key:0,class:"no-results"},ys={class:"search-keyboard-shortcuts"},ws=["aria-label"],xs=["aria-label"],_s=["aria-label"],Ss=["aria-label"],Es=Dt({__name:"VPLocalSearchBox",emits:["close"],setup(a,{emit:e}){var S,C;const t=e,n=xe(),s=xe(),r=xe(an),i=sn(),{activate:o}=Pn(n,{immediate:!0,allowOutsideClick:!0,clickOutsideDeactivates:!0,escapeDeactivates:!0}),{localeIndex:l,theme:c}=i,f=nt(async()=>{var m,p,I,F,z,P,j,k,K;return at(ue.loadJSON((I=await((p=(m=r.value)[l.value])==null?void 0:p.call(m)))==null?void 0:I.default,{fields:["title","titles","text"],storeFields:["title","titles"],searchOptions:{fuzzy:.2,prefix:!0,boost:{title:4,text:2,titles:1},...((F=c.value.search)==null?void 0:F.provider)==="local"&&((P=(z=c.value.search.options)==null?void 0:z.miniSearch)==null?void 0:P.searchOptions)},...((j=c.value.search)==null?void 0:j.provider)==="local"&&((K=(k=c.value.search.options)==null?void 0:k.miniSearch)==null?void 0:K.options)}))}),h=ge(()=>{var m,p;return((m=c.value.search)==null?void 0:m.provider)==="local"&&((p=c.value.search.options)==null?void 0:p.disableQueryPersistence)===!0}).value?ie(""):zt("vitepress:local-search-filter",""),b=Pt("vitepress:local-search-detailed-list",((S=c.value.search)==null?void 0:S.provider)==="local"&&((C=c.value.search.options)==null?void 0:C.detailedView)===!0),y=ge(()=>{var m,p,I;return((m=c.value.search)==null?void 0:m.provider)==="local"&&(((p=c.value.search.options)==null?void 0:p.disableDetailedView)===!0||((I=c.value.search.options)==null?void 0:I.detailedView)===!1)}),x=ge(()=>{var p,I,F,z,P,j,k;const m=((p=c.value.search)==null?void 0:p.options)??c.value.algolia;return((P=(z=(F=(I=m==null?void 0:m.locales)==null?void 0:I[l.value])==null?void 0:F.translations)==null?void 0:z.button)==null?void 0:P.buttonText)||((k=(j=m==null?void 0:m.translations)==null?void 0:j.button)==null?void 0:k.buttonText)||"Search"});jt(()=>{y.value&&(b.value=!1)});const w=xe([]),R=ie(!1);$e(h,()=>{R.value=!1});const A=nt(async()=>{if(s.value)return at(new Vn(s.value))},null),J=new Zn(16);Vt(()=>[f.value,h.value,b.value],async([m,p,I],F,z)=>{var ee,ye,He,Qe;(F==null?void 0:F[0])!==m&&J.clear();let P=!1;if(z(()=>{P=!0}),!m)return;w.value=m.search(p).slice(0,16),R.value=!0;const j=I?await Promise.all(w.value.map(B=>Q(B.id))):[];if(P)return;for(const{id:B,mod:te}of j){const ne=B.slice(0,B.indexOf("#"));let Y=J.get(ne);if(Y)continue;Y=new Map,J.set(ne,Y);const G=te.default??te;if(G!=null&&G.render||G!=null&&G.setup){const se=Zt(G);se.config.warnHandler=()=>{},se.provide(Xt,i),Object.defineProperties(se.config.globalProperties,{$frontmatter:{get(){return i.frontmatter.value}},$params:{get(){return i.page.value.params}}});const Ye=document.createElement("div");se.mount(Ye),Ye.querySelectorAll("h1, h2, h3, h4, h5, h6").forEach(de=>{var et;const we=(et=de.querySelector("a"))==null?void 0:et.getAttribute("href"),Ze=(we==null?void 0:we.startsWith("#"))&&we.slice(1);if(!Ze)return;let Xe="";for(;(de=de.nextElementSibling)&&!/^h[1-6]$/i.test(de.tagName);)Xe+=de.outerHTML;Y.set(Ze,Xe)}),se.unmount()}if(P)return}const k=new Set;if(w.value=w.value.map(B=>{const[te,ne]=B.id.split("#"),Y=J.get(te),G=(Y==null?void 0:Y.get(ne))??"";for(const se in B.match)k.add(se);return{...B,text:G}}),await fe(),P)return;await new Promise(B=>{var te;(te=A.value)==null||te.unmark({done:()=>{var ne;(ne=A.value)==null||ne.markRegExp(T(k),{done:B})}})});const K=((ee=n.value)==null?void 0:ee.querySelectorAll(".result .excerpt"))??[];for(const B of K)(ye=B.querySelector('mark[data-markjs="true"]'))==null||ye.scrollIntoView({block:"center"});(Qe=(He=s.value)==null?void 0:He.firstElementChild)==null||Qe.scrollIntoView({block:"start"})},{debounce:200,immediate:!0});async function Q(m){const p=en(m.slice(0,m.indexOf("#")));try{if(!p)throw new Error(`Cannot find file for id: ${m}`);return{id:m,mod:await import(p)}}catch(I){return console.error(I),{id:m,mod:{}}}}const W=ie(),V=ge(()=>{var m;return((m=h.value)==null?void 0:m.length)<=0});function $(m=!0){var p,I;(p=W.value)==null||p.focus(),m&&((I=W.value)==null||I.select())}Me(()=>{$()});function be(m){m.pointerType==="mouse"&&$()}const M=ie(-1),q=ie(!0);$e(w,m=>{M.value=m.length?0:-1,U()});function U(){fe(()=>{const m=document.querySelector(".result.selected");m==null||m.scrollIntoView({block:"nearest"})})}_e("ArrowUp",m=>{m.preventDefault(),M.value--,M.value<0&&(M.value=w.value.length-1),q.value=!0,U()}),_e("ArrowDown",m=>{m.preventDefault(),M.value++,M.value>=w.value.length&&(M.value=0),q.value=!0,U()});const N=$t();_e("Enter",m=>{if(m.isComposing||m.target instanceof HTMLButtonElement&&m.target.type!=="submit")return;const p=w.value[M.value];if(m.target instanceof HTMLInputElement&&!p){m.preventDefault();return}p&&(N.go(p.id),t("close"))}),_e("Escape",()=>{t("close")});const d=rn({modal:{displayDetails:"Display detailed list",resetButtonTitle:"Reset search",backButtonTitle:"Close search",noResultsText:"No results for",footer:{selectText:"to select",selectKeyAriaLabel:"enter",navigateText:"to navigate",navigateUpKeyAriaLabel:"up arrow",navigateDownKeyAriaLabel:"down arrow",closeText:"to close",closeKeyAriaLabel:"escape"}}});Me(()=>{window.history.pushState(null,"",null)}),Bt("popstate",m=>{m.preventDefault(),t("close")});const v=Wt(Kt?document.body:null);Me(()=>{fe(()=>{v.value=!0,fe().then(()=>o())})}),Jt(()=>{v.value=!1});function E(){h.value="",fe().then(()=>$(!1))}function T(m){return new RegExp([...m].sort((p,I)=>I.length-p.length).map(p=>`(${tn(p)})`).join("|"),"gi")}function O(m){var F;if(!q.value)return;const p=(F=m.target)==null?void 0:F.closest(".result"),I=Number.parseInt(p==null?void 0:p.dataset.index);I>=0&&I!==M.value&&(M.value=I),q.value=!1}return(m,p)=>{var I,F,z,P,j;return H(),qt(Yt,{to:"body"},[_("div",{ref_key:"el",ref:n,role:"button","aria-owns":(I=w.value)!=null&&I.length?"localsearch-list":void 0,"aria-expanded":"true","aria-haspopup":"listbox","aria-labelledby":"localsearch-label",class:"VPLocalSearchBox"},[_("div",{class:"backdrop",onClick:p[0]||(p[0]=k=>m.$emit("close"))}),_("div",es,[_("form",{class:"search-bar",onPointerup:p[4]||(p[4]=k=>be(k)),onSubmit:p[5]||(p[5]=Ut(()=>{},["prevent"]))},[_("label",{title:x.value,id:"localsearch-label",for:"localsearch-input"},p[7]||(p[7]=[_("span",{"aria-hidden":"true",class:"vpi-search search-icon local-search-icon"},null,-1)]),8,ts),_("div",ns,[_("button",{class:"back-button",title:L(d)("modal.backButtonTitle"),onClick:p[1]||(p[1]=k=>m.$emit("close"))},p[8]||(p[8]=[_("span",{class:"vpi-arrow-left local-search-icon"},null,-1)]),8,ss)]),Gt(_("input",{ref_key:"searchInput",ref:W,"onUpdate:modelValue":p[2]||(p[2]=k=>Qt(h)?h.value=k:null),"aria-activedescendant":M.value>-1?"localsearch-item-"+M.value:void 0,"aria-autocomplete":"both","aria-controls":(F=w.value)!=null&&F.length?"localsearch-list":void 0,"aria-labelledby":"localsearch-label",autocapitalize:"off",autocomplete:"off",autocorrect:"off",class:"search-input",id:"localsearch-input",enterkeyhint:"go",maxlength:"64",placeholder:x.value,spellcheck:"false",type:"search"},null,8,is),[[Ht,L(h)]]),_("div",rs,[y.value?Se("",!0):(H(),Z("button",{key:0,class:st(["toggle-layout-button",{"detailed-list":L(b)}]),type:"button",title:L(d)("modal.displayDetails"),onClick:p[3]||(p[3]=k=>M.value>-1&&(b.value=!L(b)))},p[9]||(p[9]=[_("span",{class:"vpi-layout-list local-search-icon"},null,-1)]),10,as)),_("button",{class:"clear-button",type:"reset",disabled:V.value,title:L(d)("modal.resetButtonTitle"),onClick:E},p[10]||(p[10]=[_("span",{class:"vpi-delete local-search-icon"},null,-1)]),8,os)])],32),_("ul",{ref_key:"resultsEl",ref:s,id:(z=w.value)!=null&&z.length?"localsearch-list":void 0,role:(P=w.value)!=null&&P.length?"listbox":void 0,"aria-labelledby":(j=w.value)!=null&&j.length?"localsearch-label":void 0,class:"results",onMousemove:O},[(H(!0),Z(rt,null,it(w.value,(k,K)=>(H(),Z("li",{key:k.id,id:"localsearch-item-"+K,"aria-selected":M.value===K?"true":"false",role:"option"},[_("a",{href:k.id,class:st(["result",{selected:M.value===K}]),"aria-label":[...k.titles,k.title].join(" > "),onMouseenter:ee=>!q.value&&(M.value=K),onFocusin:ee=>M.value=K,onClick:p[6]||(p[6]=ee=>m.$emit("close")),"data-index":K},[_("div",null,[_("div",ds,[p[12]||(p[12]=_("span",{class:"title-icon"},"#",-1)),(H(!0),Z(rt,null,it(k.titles,(ee,ye)=>(H(),Z("span",{key:ye,class:"title"},[_("span",{class:"text",innerHTML:ee},null,8,fs),p[11]||(p[11]=_("span",{class:"vpi-chevron-right local-search-icon"},null,-1))]))),128)),_("span",hs,[_("span",{class:"text",innerHTML:k.title},null,8,ps)])]),L(b)?(H(),Z("div",ms,[k.text?(H(),Z("div",gs,[_("div",{class:"vp-doc",innerHTML:k.text},null,8,vs)])):Se("",!0),p[13]||(p[13]=_("div",{class:"excerpt-gradient-bottom"},null,-1)),p[14]||(p[14]=_("div",{class:"excerpt-gradient-top"},null,-1))])):Se("",!0)])],42,us)],8,cs))),128)),L(h)&&!w.value.length&&R.value?(H(),Z("li",bs,[he(pe(L(d)("modal.noResultsText"))+' "',1),_("strong",null,pe(L(h)),1),p[15]||(p[15]=he('" '))])):Se("",!0)],40,ls),_("div",ys,[_("span",null,[_("kbd",{"aria-label":L(d)("modal.footer.navigateUpKeyAriaLabel")},p[16]||(p[16]=[_("span",{class:"vpi-arrow-up navigate-icon"},null,-1)]),8,ws),_("kbd",{"aria-label":L(d)("modal.footer.navigateDownKeyAriaLabel")},p[17]||(p[17]=[_("span",{class:"vpi-arrow-down navigate-icon"},null,-1)]),8,xs),he(" "+pe(L(d)("modal.footer.navigateText")),1)]),_("span",null,[_("kbd",{"aria-label":L(d)("modal.footer.selectKeyAriaLabel")},p[18]||(p[18]=[_("span",{class:"vpi-corner-down-left navigate-icon"},null,-1)]),8,_s),he(" "+pe(L(d)("modal.footer.selectText")),1)]),_("span",null,[_("kbd",{"aria-label":L(d)("modal.footer.closeKeyAriaLabel")},"esc",8,Ss),he(" "+pe(L(d)("modal.footer.closeText")),1)])])])],8,Xn)])}}}),Fs=nn(Es,[["__scopeId","data-v-42e65fb9"]]);export{Fs as default}; diff --git a/previews/PR98/assets/chunks/framework.BI0fNMXE.js b/previews/PR98/assets/chunks/framework.BI0fNMXE.js new file mode 100644 index 0000000..3411d8c --- /dev/null +++ b/previews/PR98/assets/chunks/framework.BI0fNMXE.js @@ -0,0 +1,18 @@ +/** +* @vue/shared v3.5.13 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**//*! #__NO_SIDE_EFFECTS__ */function $s(e){const t=Object.create(null);for(const n of e.split(","))t[n]=1;return n=>n in t}const ee={},Rt=[],Be=()=>{},Jo=()=>!1,tn=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),js=e=>e.startsWith("onUpdate:"),pe=Object.assign,Vs=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},Qo=Object.prototype.hasOwnProperty,Q=(e,t)=>Qo.call(e,t),K=Array.isArray,Mt=e=>Fn(e)==="[object Map]",ci=e=>Fn(e)==="[object Set]",q=e=>typeof e=="function",oe=e=>typeof e=="string",ze=e=>typeof e=="symbol",se=e=>e!==null&&typeof e=="object",ai=e=>(se(e)||q(e))&&q(e.then)&&q(e.catch),fi=Object.prototype.toString,Fn=e=>fi.call(e),Zo=e=>Fn(e).slice(8,-1),ui=e=>Fn(e)==="[object Object]",ks=e=>oe(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,Ot=$s(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Hn=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},el=/-(\w)/g,Ne=Hn(e=>e.replace(el,(t,n)=>n?n.toUpperCase():"")),tl=/\B([A-Z])/g,it=Hn(e=>e.replace(tl,"-$1").toLowerCase()),Dn=Hn(e=>e.charAt(0).toUpperCase()+e.slice(1)),wn=Hn(e=>e?`on${Dn(e)}`:""),nt=(e,t)=>!Object.is(e,t),Sn=(e,...t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:s,value:n})},Ss=e=>{const t=parseFloat(e);return isNaN(t)?e:t},nl=e=>{const t=oe(e)?Number(e):NaN;return isNaN(t)?e:t};let ur;const $n=()=>ur||(ur=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function Us(e){if(K(e)){const t={};for(let n=0;n{if(n){const s=n.split(rl);s.length>1&&(t[s[0].trim()]=s[1].trim())}}),t}function Bs(e){let t="";if(oe(e))t=e;else if(K(e))for(let n=0;n!!(e&&e.__v_isRef===!0),al=e=>oe(e)?e:e==null?"":K(e)||se(e)&&(e.toString===fi||!q(e.toString))?pi(e)?al(e.value):JSON.stringify(e,gi,2):String(e),gi=(e,t)=>pi(t)?gi(e,t.value):Mt(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[s,r],i)=>(n[Zn(s,i)+" =>"]=r,n),{})}:ci(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>Zn(n))}:ze(t)?Zn(t):se(t)&&!K(t)&&!ui(t)?String(t):t,Zn=(e,t="")=>{var n;return ze(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};/** +* @vue/reactivity v3.5.13 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/let Se;class fl{constructor(t=!1){this.detached=t,this._active=!0,this.effects=[],this.cleanups=[],this._isPaused=!1,this.parent=Se,!t&&Se&&(this.index=(Se.scopes||(Se.scopes=[])).push(this)-1)}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,n;if(this.scopes)for(t=0,n=this.scopes.length;t0)return;if(kt){let t=kt;for(kt=void 0;t;){const n=t.next;t.next=void 0,t.flags&=-9,t=n}}let e;for(;Vt;){let t=Vt;for(Vt=void 0;t;){const n=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(s){e||(e=s)}t=n}}if(e)throw e}function vi(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function wi(e){let t,n=e.depsTail,s=n;for(;s;){const r=s.prevDep;s.version===-1?(s===n&&(n=r),qs(s),dl(s)):t=s,s.dep.activeLink=s.prevActiveLink,s.prevActiveLink=void 0,s=r}e.deps=t,e.depsTail=n}function Ts(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(Si(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function Si(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===Gt))return;e.globalVersion=Gt;const t=e.dep;if(e.flags|=2,t.version>0&&!e.isSSR&&e.deps&&!Ts(e)){e.flags&=-3;return}const n=ne,s=He;ne=e,He=!0;try{vi(e);const r=e.fn(e._value);(t.version===0||nt(r,e._value))&&(e._value=r,t.version++)}catch(r){throw t.version++,r}finally{ne=n,He=s,wi(e),e.flags&=-3}}function qs(e,t=!1){const{dep:n,prevSub:s,nextSub:r}=e;if(s&&(s.nextSub=r,e.prevSub=void 0),r&&(r.prevSub=s,e.nextSub=void 0),n.subs===e&&(n.subs=s,!s&&n.computed)){n.computed.flags&=-5;for(let i=n.computed.deps;i;i=i.nextDep)qs(i,!0)}!t&&!--n.sc&&n.map&&n.map.delete(n.key)}function dl(e){const{prevDep:t,nextDep:n}=e;t&&(t.nextDep=n,e.prevDep=void 0),n&&(n.prevDep=t,e.nextDep=void 0)}let He=!0;const Ti=[];function ot(){Ti.push(He),He=!1}function lt(){const e=Ti.pop();He=e===void 0?!0:e}function dr(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const n=ne;ne=void 0;try{t()}finally{ne=n}}}let Gt=0;class hl{constructor(t,n){this.sub=t,this.dep=n,this.version=n.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class jn{constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0}track(t){if(!ne||!He||ne===this.computed)return;let n=this.activeLink;if(n===void 0||n.sub!==ne)n=this.activeLink=new hl(ne,this),ne.deps?(n.prevDep=ne.depsTail,ne.depsTail.nextDep=n,ne.depsTail=n):ne.deps=ne.depsTail=n,Ei(n);else if(n.version===-1&&(n.version=this.version,n.nextDep)){const s=n.nextDep;s.prevDep=n.prevDep,n.prevDep&&(n.prevDep.nextDep=s),n.prevDep=ne.depsTail,n.nextDep=void 0,ne.depsTail.nextDep=n,ne.depsTail=n,ne.deps===n&&(ne.deps=s)}return n}trigger(t){this.version++,Gt++,this.notify(t)}notify(t){Ws();try{for(let n=this.subs;n;n=n.prevSub)n.sub.notify()&&n.sub.dep.notify()}finally{Ks()}}}function Ei(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let s=t.deps;s;s=s.nextDep)Ei(s)}const n=e.dep.subs;n!==e&&(e.prevSub=n,n&&(n.nextSub=e)),e.dep.subs=e}}const Rn=new WeakMap,pt=Symbol(""),Es=Symbol(""),Xt=Symbol("");function ye(e,t,n){if(He&&ne){let s=Rn.get(e);s||Rn.set(e,s=new Map);let r=s.get(n);r||(s.set(n,r=new jn),r.map=s,r.key=n),r.track()}}function Ge(e,t,n,s,r,i){const o=Rn.get(e);if(!o){Gt++;return}const l=c=>{c&&c.trigger()};if(Ws(),t==="clear")o.forEach(l);else{const c=K(e),f=c&&ks(n);if(c&&n==="length"){const a=Number(s);o.forEach((d,m)=>{(m==="length"||m===Xt||!ze(m)&&m>=a)&&l(d)})}else switch((n!==void 0||o.has(void 0))&&l(o.get(n)),f&&l(o.get(Xt)),t){case"add":c?f&&l(o.get("length")):(l(o.get(pt)),Mt(e)&&l(o.get(Es)));break;case"delete":c||(l(o.get(pt)),Mt(e)&&l(o.get(Es)));break;case"set":Mt(e)&&l(o.get(pt));break}}Ks()}function pl(e,t){const n=Rn.get(e);return n&&n.get(t)}function Tt(e){const t=J(e);return t===e?t:(ye(t,"iterate",Xt),Le(e)?t:t.map(be))}function Vn(e){return ye(e=J(e),"iterate",Xt),e}const gl={__proto__:null,[Symbol.iterator](){return ts(this,Symbol.iterator,be)},concat(...e){return Tt(this).concat(...e.map(t=>K(t)?Tt(t):t))},entries(){return ts(this,"entries",e=>(e[1]=be(e[1]),e))},every(e,t){return We(this,"every",e,t,void 0,arguments)},filter(e,t){return We(this,"filter",e,t,n=>n.map(be),arguments)},find(e,t){return We(this,"find",e,t,be,arguments)},findIndex(e,t){return We(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return We(this,"findLast",e,t,be,arguments)},findLastIndex(e,t){return We(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return We(this,"forEach",e,t,void 0,arguments)},includes(...e){return ns(this,"includes",e)},indexOf(...e){return ns(this,"indexOf",e)},join(e){return Tt(this).join(e)},lastIndexOf(...e){return ns(this,"lastIndexOf",e)},map(e,t){return We(this,"map",e,t,void 0,arguments)},pop(){return Dt(this,"pop")},push(...e){return Dt(this,"push",e)},reduce(e,...t){return hr(this,"reduce",e,t)},reduceRight(e,...t){return hr(this,"reduceRight",e,t)},shift(){return Dt(this,"shift")},some(e,t){return We(this,"some",e,t,void 0,arguments)},splice(...e){return Dt(this,"splice",e)},toReversed(){return Tt(this).toReversed()},toSorted(e){return Tt(this).toSorted(e)},toSpliced(...e){return Tt(this).toSpliced(...e)},unshift(...e){return Dt(this,"unshift",e)},values(){return ts(this,"values",be)}};function ts(e,t,n){const s=Vn(e),r=s[t]();return s!==e&&!Le(e)&&(r._next=r.next,r.next=()=>{const i=r._next();return i.value&&(i.value=n(i.value)),i}),r}const ml=Array.prototype;function We(e,t,n,s,r,i){const o=Vn(e),l=o!==e&&!Le(e),c=o[t];if(c!==ml[t]){const d=c.apply(e,i);return l?be(d):d}let f=n;o!==e&&(l?f=function(d,m){return n.call(this,be(d),m,e)}:n.length>2&&(f=function(d,m){return n.call(this,d,m,e)}));const a=c.call(o,f,s);return l&&r?r(a):a}function hr(e,t,n,s){const r=Vn(e);let i=n;return r!==e&&(Le(e)?n.length>3&&(i=function(o,l,c){return n.call(this,o,l,c,e)}):i=function(o,l,c){return n.call(this,o,be(l),c,e)}),r[t](i,...s)}function ns(e,t,n){const s=J(e);ye(s,"iterate",Xt);const r=s[t](...n);return(r===-1||r===!1)&&Ys(n[0])?(n[0]=J(n[0]),s[t](...n)):r}function Dt(e,t,n=[]){ot(),Ws();const s=J(e)[t].apply(e,n);return Ks(),lt(),s}const yl=$s("__proto__,__v_isRef,__isVue"),xi=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(ze));function bl(e){ze(e)||(e=String(e));const t=J(this);return ye(t,"has",e),t.hasOwnProperty(e)}class Ci{constructor(t=!1,n=!1){this._isReadonly=t,this._isShallow=n}get(t,n,s){if(n==="__v_skip")return t.__v_skip;const r=this._isReadonly,i=this._isShallow;if(n==="__v_isReactive")return!r;if(n==="__v_isReadonly")return r;if(n==="__v_isShallow")return i;if(n==="__v_raw")return s===(r?i?Rl:Oi:i?Mi:Ri).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(s)?t:void 0;const o=K(t);if(!r){let c;if(o&&(c=gl[n]))return c;if(n==="hasOwnProperty")return bl}const l=Reflect.get(t,n,ue(t)?t:s);return(ze(n)?xi.has(n):yl(n))||(r||ye(t,"get",n),i)?l:ue(l)?o&&ks(n)?l:l.value:se(l)?r?kn(l):Lt(l):l}}class Ai extends Ci{constructor(t=!1){super(!1,t)}set(t,n,s,r){let i=t[n];if(!this._isShallow){const c=wt(i);if(!Le(s)&&!wt(s)&&(i=J(i),s=J(s)),!K(t)&&ue(i)&&!ue(s))return c?!1:(i.value=s,!0)}const o=K(t)&&ks(n)?Number(n)e,fn=e=>Reflect.getPrototypeOf(e);function Tl(e,t,n){return function(...s){const r=this.__v_raw,i=J(r),o=Mt(i),l=e==="entries"||e===Symbol.iterator&&o,c=e==="keys"&&o,f=r[e](...s),a=n?xs:t?Cs:be;return!t&&ye(i,"iterate",c?Es:pt),{next(){const{value:d,done:m}=f.next();return m?{value:d,done:m}:{value:l?[a(d[0]),a(d[1])]:a(d),done:m}},[Symbol.iterator](){return this}}}}function un(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function El(e,t){const n={get(r){const i=this.__v_raw,o=J(i),l=J(r);e||(nt(r,l)&&ye(o,"get",r),ye(o,"get",l));const{has:c}=fn(o),f=t?xs:e?Cs:be;if(c.call(o,r))return f(i.get(r));if(c.call(o,l))return f(i.get(l));i!==o&&i.get(r)},get size(){const r=this.__v_raw;return!e&&ye(J(r),"iterate",pt),Reflect.get(r,"size",r)},has(r){const i=this.__v_raw,o=J(i),l=J(r);return e||(nt(r,l)&&ye(o,"has",r),ye(o,"has",l)),r===l?i.has(r):i.has(r)||i.has(l)},forEach(r,i){const o=this,l=o.__v_raw,c=J(l),f=t?xs:e?Cs:be;return!e&&ye(c,"iterate",pt),l.forEach((a,d)=>r.call(i,f(a),f(d),o))}};return pe(n,e?{add:un("add"),set:un("set"),delete:un("delete"),clear:un("clear")}:{add(r){!t&&!Le(r)&&!wt(r)&&(r=J(r));const i=J(this);return fn(i).has.call(i,r)||(i.add(r),Ge(i,"add",r,r)),this},set(r,i){!t&&!Le(i)&&!wt(i)&&(i=J(i));const o=J(this),{has:l,get:c}=fn(o);let f=l.call(o,r);f||(r=J(r),f=l.call(o,r));const a=c.call(o,r);return o.set(r,i),f?nt(i,a)&&Ge(o,"set",r,i):Ge(o,"add",r,i),this},delete(r){const i=J(this),{has:o,get:l}=fn(i);let c=o.call(i,r);c||(r=J(r),c=o.call(i,r)),l&&l.call(i,r);const f=i.delete(r);return c&&Ge(i,"delete",r,void 0),f},clear(){const r=J(this),i=r.size!==0,o=r.clear();return i&&Ge(r,"clear",void 0,void 0),o}}),["keys","values","entries",Symbol.iterator].forEach(r=>{n[r]=Tl(r,e,t)}),n}function Gs(e,t){const n=El(e,t);return(s,r,i)=>r==="__v_isReactive"?!e:r==="__v_isReadonly"?e:r==="__v_raw"?s:Reflect.get(Q(n,r)&&r in s?n:s,r,i)}const xl={get:Gs(!1,!1)},Cl={get:Gs(!1,!0)},Al={get:Gs(!0,!1)};const Ri=new WeakMap,Mi=new WeakMap,Oi=new WeakMap,Rl=new WeakMap;function Ml(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function Ol(e){return e.__v_skip||!Object.isExtensible(e)?0:Ml(Zo(e))}function Lt(e){return wt(e)?e:Xs(e,!1,vl,xl,Ri)}function Pl(e){return Xs(e,!1,Sl,Cl,Mi)}function kn(e){return Xs(e,!0,wl,Al,Oi)}function Xs(e,t,n,s,r){if(!se(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const i=r.get(e);if(i)return i;const o=Ol(e);if(o===0)return e;const l=new Proxy(e,o===2?s:n);return r.set(e,l),l}function gt(e){return wt(e)?gt(e.__v_raw):!!(e&&e.__v_isReactive)}function wt(e){return!!(e&&e.__v_isReadonly)}function Le(e){return!!(e&&e.__v_isShallow)}function Ys(e){return e?!!e.__v_raw:!1}function J(e){const t=e&&e.__v_raw;return t?J(t):e}function Tn(e){return!Q(e,"__v_skip")&&Object.isExtensible(e)&&di(e,"__v_skip",!0),e}const be=e=>se(e)?Lt(e):e,Cs=e=>se(e)?kn(e):e;function ue(e){return e?e.__v_isRef===!0:!1}function le(e){return Pi(e,!1)}function Un(e){return Pi(e,!0)}function Pi(e,t){return ue(e)?e:new Ll(e,t)}class Ll{constructor(t,n){this.dep=new jn,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=n?t:J(t),this._value=n?t:be(t),this.__v_isShallow=n}get value(){return this.dep.track(),this._value}set value(t){const n=this._rawValue,s=this.__v_isShallow||Le(t)||wt(t);t=s?t:J(t),nt(t,n)&&(this._rawValue=t,this._value=s?t:be(t),this.dep.trigger())}}function zs(e){return ue(e)?e.value:e}function ce(e){return q(e)?e():zs(e)}const Il={get:(e,t,n)=>t==="__v_raw"?e:zs(Reflect.get(e,t,n)),set:(e,t,n,s)=>{const r=e[t];return ue(r)&&!ue(n)?(r.value=n,!0):Reflect.set(e,t,n,s)}};function Li(e){return gt(e)?e:new Proxy(e,Il)}class Nl{constructor(t){this.__v_isRef=!0,this._value=void 0;const n=this.dep=new jn,{get:s,set:r}=t(n.track.bind(n),n.trigger.bind(n));this._get=s,this._set=r}get value(){return this._value=this._get()}set value(t){this._set(t)}}function Fl(e){return new Nl(e)}class Hl{constructor(t,n,s){this._object=t,this._key=n,this._defaultValue=s,this.__v_isRef=!0,this._value=void 0}get value(){const t=this._object[this._key];return this._value=t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}get dep(){return pl(J(this._object),this._key)}}class Dl{constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0,this._value=void 0}get value(){return this._value=this._getter()}}function $l(e,t,n){return ue(e)?e:q(e)?new Dl(e):se(e)&&arguments.length>1?jl(e,t,n):le(e)}function jl(e,t,n){const s=e[t];return ue(s)?s:new Hl(e,t,n)}class Vl{constructor(t,n,s){this.fn=t,this.setter=n,this._value=void 0,this.dep=new jn(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=Gt-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!n,this.isSSR=s}notify(){if(this.flags|=16,!(this.flags&8)&&ne!==this)return _i(this,!0),!0}get value(){const t=this.dep.track();return Si(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function kl(e,t,n=!1){let s,r;return q(e)?s=e:(s=e.get,r=e.set),new Vl(s,r,n)}const dn={},Mn=new WeakMap;let dt;function Ul(e,t=!1,n=dt){if(n){let s=Mn.get(n);s||Mn.set(n,s=[]),s.push(e)}}function Bl(e,t,n=ee){const{immediate:s,deep:r,once:i,scheduler:o,augmentJob:l,call:c}=n,f=g=>r?g:Le(g)||r===!1||r===0?Xe(g,1):Xe(g);let a,d,m,y,v=!1,_=!1;if(ue(e)?(d=()=>e.value,v=Le(e)):gt(e)?(d=()=>f(e),v=!0):K(e)?(_=!0,v=e.some(g=>gt(g)||Le(g)),d=()=>e.map(g=>{if(ue(g))return g.value;if(gt(g))return f(g);if(q(g))return c?c(g,2):g()})):q(e)?t?d=c?()=>c(e,2):e:d=()=>{if(m){ot();try{m()}finally{lt()}}const g=dt;dt=a;try{return c?c(e,3,[y]):e(y)}finally{dt=g}}:d=Be,t&&r){const g=d,O=r===!0?1/0:r;d=()=>Xe(g(),O)}const k=mi(),P=()=>{a.stop(),k&&k.active&&Vs(k.effects,a)};if(i&&t){const g=t;t=(...O)=>{g(...O),P()}}let D=_?new Array(e.length).fill(dn):dn;const p=g=>{if(!(!(a.flags&1)||!a.dirty&&!g))if(t){const O=a.run();if(r||v||(_?O.some(($,R)=>nt($,D[R])):nt(O,D))){m&&m();const $=dt;dt=a;try{const R=[O,D===dn?void 0:_&&D[0]===dn?[]:D,y];c?c(t,3,R):t(...R),D=O}finally{dt=$}}}else a.run()};return l&&l(p),a=new yi(d),a.scheduler=o?()=>o(p,!1):p,y=g=>Ul(g,!1,a),m=a.onStop=()=>{const g=Mn.get(a);if(g){if(c)c(g,4);else for(const O of g)O();Mn.delete(a)}},t?s?p(!0):D=a.run():o?o(p.bind(null,!0),!0):a.run(),P.pause=a.pause.bind(a),P.resume=a.resume.bind(a),P.stop=P,P}function Xe(e,t=1/0,n){if(t<=0||!se(e)||e.__v_skip||(n=n||new Set,n.has(e)))return e;if(n.add(e),t--,ue(e))Xe(e.value,t,n);else if(K(e))for(let s=0;s{Xe(s,t,n)});else if(ui(e)){for(const s in e)Xe(e[s],t,n);for(const s of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,s)&&Xe(e[s],t,n)}return e}/** +* @vue/runtime-core v3.5.13 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/function nn(e,t,n,s){try{return s?e(...s):e()}catch(r){sn(r,t,n)}}function De(e,t,n,s){if(q(e)){const r=nn(e,t,n,s);return r&&ai(r)&&r.catch(i=>{sn(i,t,n)}),r}if(K(e)){const r=[];for(let i=0;i>>1,r=Te[s],i=Yt(r);i=Yt(n)?Te.push(e):Te.splice(Kl(t),0,e),e.flags|=1,Ni()}}function Ni(){On||(On=Ii.then(Fi))}function ql(e){K(e)?Pt.push(...e):Ze&&e.id===-1?Ze.splice(xt+1,0,e):e.flags&1||(Pt.push(e),e.flags|=1),Ni()}function pr(e,t,n=ke+1){for(;nYt(n)-Yt(s));if(Pt.length=0,Ze){Ze.push(...t);return}for(Ze=t,xt=0;xte.id==null?e.flags&2?-1:1/0:e.id;function Fi(e){try{for(ke=0;ke{s._d&&Mr(-1);const i=Ln(t);let o;try{o=e(...r)}finally{Ln(i),s._d&&Mr(1)}return o};return s._n=!0,s._c=!0,s._d=!0,s}function Pf(e,t){if(he===null)return e;const n=Xn(he),s=e.dirs||(e.dirs=[]);for(let r=0;re.__isTeleport,Ut=e=>e&&(e.disabled||e.disabled===""),gr=e=>e&&(e.defer||e.defer===""),mr=e=>typeof SVGElement<"u"&&e instanceof SVGElement,yr=e=>typeof MathMLElement=="function"&&e instanceof MathMLElement,As=(e,t)=>{const n=e&&e.to;return oe(n)?t?t(n):null:n},ji={name:"Teleport",__isTeleport:!0,process(e,t,n,s,r,i,o,l,c,f){const{mc:a,pc:d,pbc:m,o:{insert:y,querySelector:v,createText:_,createComment:k}}=f,P=Ut(t.props);let{shapeFlag:D,children:p,dynamicChildren:g}=t;if(e==null){const O=t.el=_(""),$=t.anchor=_("");y(O,n,s),y($,n,s);const R=(T,M)=>{D&16&&(r&&r.isCE&&(r.ce._teleportTarget=T),a(p,T,M,r,i,o,l,c))},j=()=>{const T=t.target=As(t.props,v),M=Vi(T,t,_,y);T&&(o!=="svg"&&mr(T)?o="svg":o!=="mathml"&&yr(T)&&(o="mathml"),P||(R(T,M),En(t,!1)))};P&&(R(n,$),En(t,!0)),gr(t.props)?we(()=>{j(),t.el.__isMounted=!0},i):j()}else{if(gr(t.props)&&!e.el.__isMounted){we(()=>{ji.process(e,t,n,s,r,i,o,l,c,f),delete e.el.__isMounted},i);return}t.el=e.el,t.targetStart=e.targetStart;const O=t.anchor=e.anchor,$=t.target=e.target,R=t.targetAnchor=e.targetAnchor,j=Ut(e.props),T=j?n:$,M=j?O:R;if(o==="svg"||mr($)?o="svg":(o==="mathml"||yr($))&&(o="mathml"),g?(m(e.dynamicChildren,g,T,r,i,o,l),tr(e,t,!0)):c||d(e,t,T,M,r,i,o,l,!1),P)j?t.props&&e.props&&t.props.to!==e.props.to&&(t.props.to=e.props.to):hn(t,n,O,f,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){const A=t.target=As(t.props,v);A&&hn(t,A,null,f,0)}else j&&hn(t,$,R,f,1);En(t,P)}},remove(e,t,n,{um:s,o:{remove:r}},i){const{shapeFlag:o,children:l,anchor:c,targetStart:f,targetAnchor:a,target:d,props:m}=e;if(d&&(r(f),r(a)),i&&r(c),o&16){const y=i||!Ut(m);for(let v=0;v{e.isMounted=!0}),Gi(()=>{e.isUnmounting=!0}),e}const Me=[Function,Array],ki={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:Me,onEnter:Me,onAfterEnter:Me,onEnterCancelled:Me,onBeforeLeave:Me,onLeave:Me,onAfterLeave:Me,onLeaveCancelled:Me,onBeforeAppear:Me,onAppear:Me,onAfterAppear:Me,onAppearCancelled:Me},Ui=e=>{const t=e.subTree;return t.component?Ui(t.component):t},zl={name:"BaseTransition",props:ki,setup(e,{slots:t}){const n=on(),s=Yl();return()=>{const r=t.default&&Ki(t.default(),!0);if(!r||!r.length)return;const i=Bi(r),o=J(e),{mode:l}=o;if(s.isLeaving)return ss(i);const c=br(i);if(!c)return ss(i);let f=Rs(c,o,s,n,d=>f=d);c.type!==_e&&zt(c,f);let a=n.subTree&&br(n.subTree);if(a&&a.type!==_e&&!ht(c,a)&&Ui(n).type!==_e){let d=Rs(a,o,s,n);if(zt(a,d),l==="out-in"&&c.type!==_e)return s.isLeaving=!0,d.afterLeave=()=>{s.isLeaving=!1,n.job.flags&8||n.update(),delete d.afterLeave,a=void 0},ss(i);l==="in-out"&&c.type!==_e?d.delayLeave=(m,y,v)=>{const _=Wi(s,a);_[String(a.key)]=a,m[et]=()=>{y(),m[et]=void 0,delete f.delayedLeave,a=void 0},f.delayedLeave=()=>{v(),delete f.delayedLeave,a=void 0}}:a=void 0}else a&&(a=void 0);return i}}};function Bi(e){let t=e[0];if(e.length>1){for(const n of e)if(n.type!==_e){t=n;break}}return t}const Jl=zl;function Wi(e,t){const{leavingVNodes:n}=e;let s=n.get(t.type);return s||(s=Object.create(null),n.set(t.type,s)),s}function Rs(e,t,n,s,r){const{appear:i,mode:o,persisted:l=!1,onBeforeEnter:c,onEnter:f,onAfterEnter:a,onEnterCancelled:d,onBeforeLeave:m,onLeave:y,onAfterLeave:v,onLeaveCancelled:_,onBeforeAppear:k,onAppear:P,onAfterAppear:D,onAppearCancelled:p}=t,g=String(e.key),O=Wi(n,e),$=(T,M)=>{T&&De(T,s,9,M)},R=(T,M)=>{const A=M[1];$(T,M),K(T)?T.every(w=>w.length<=1)&&A():T.length<=1&&A()},j={mode:o,persisted:l,beforeEnter(T){let M=c;if(!n.isMounted)if(i)M=k||c;else return;T[et]&&T[et](!0);const A=O[g];A&&ht(e,A)&&A.el[et]&&A.el[et](),$(M,[T])},enter(T){let M=f,A=a,w=d;if(!n.isMounted)if(i)M=P||f,A=D||a,w=p||d;else return;let F=!1;const Y=T[pn]=ie=>{F||(F=!0,ie?$(w,[T]):$(A,[T]),j.delayedLeave&&j.delayedLeave(),T[pn]=void 0)};M?R(M,[T,Y]):Y()},leave(T,M){const A=String(e.key);if(T[pn]&&T[pn](!0),n.isUnmounting)return M();$(m,[T]);let w=!1;const F=T[et]=Y=>{w||(w=!0,M(),Y?$(_,[T]):$(v,[T]),T[et]=void 0,O[A]===e&&delete O[A])};O[A]=e,y?R(y,[T,F]):F()},clone(T){const M=Rs(T,t,n,s,r);return r&&r(M),M}};return j}function ss(e){if(rn(e))return e=st(e),e.children=null,e}function br(e){if(!rn(e))return $i(e.type)&&e.children?Bi(e.children):e;const{shapeFlag:t,children:n}=e;if(n){if(t&16)return n[0];if(t&32&&q(n.default))return n.default()}}function zt(e,t){e.shapeFlag&6&&e.component?(e.transition=t,zt(e.component.subTree,t)):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function Ki(e,t=!1,n){let s=[],r=0;for(let i=0;i1)for(let i=0;iJt(v,t&&(K(t)?t[_]:t),n,s,r));return}if(mt(s)&&!r){s.shapeFlag&512&&s.type.__asyncResolved&&s.component.subTree.component&&Jt(e,t,n,s.component.subTree);return}const i=s.shapeFlag&4?Xn(s.component):s.el,o=r?null:i,{i:l,r:c}=e,f=t&&t.r,a=l.refs===ee?l.refs={}:l.refs,d=l.setupState,m=J(d),y=d===ee?()=>!1:v=>Q(m,v);if(f!=null&&f!==c&&(oe(f)?(a[f]=null,y(f)&&(d[f]=null)):ue(f)&&(f.value=null)),q(c))nn(c,l,12,[o,a]);else{const v=oe(c),_=ue(c);if(v||_){const k=()=>{if(e.f){const P=v?y(c)?d[c]:a[c]:c.value;r?K(P)&&Vs(P,i):K(P)?P.includes(i)||P.push(i):v?(a[c]=[i],y(c)&&(d[c]=a[c])):(c.value=[i],e.k&&(a[e.k]=c.value))}else v?(a[c]=o,y(c)&&(d[c]=o)):_&&(c.value=o,e.k&&(a[e.k]=o))};o?(k.id=-1,we(k,n)):k()}}}let _r=!1;const Et=()=>{_r||(console.error("Hydration completed but contains mismatches."),_r=!0)},Ql=e=>e.namespaceURI.includes("svg")&&e.tagName!=="foreignObject",Zl=e=>e.namespaceURI.includes("MathML"),gn=e=>{if(e.nodeType===1){if(Ql(e))return"svg";if(Zl(e))return"mathml"}},At=e=>e.nodeType===8;function ec(e){const{mt:t,p:n,o:{patchProp:s,createText:r,nextSibling:i,parentNode:o,remove:l,insert:c,createComment:f}}=e,a=(p,g)=>{if(!g.hasChildNodes()){n(null,p,g),Pn(),g._vnode=p;return}d(g.firstChild,p,null,null,null),Pn(),g._vnode=p},d=(p,g,O,$,R,j=!1)=>{j=j||!!g.dynamicChildren;const T=At(p)&&p.data==="[",M=()=>_(p,g,O,$,R,T),{type:A,ref:w,shapeFlag:F,patchFlag:Y}=g;let ie=p.nodeType;g.el=p,Y===-2&&(j=!1,g.dynamicChildren=null);let U=null;switch(A){case _t:ie!==3?g.children===""?(c(g.el=r(""),o(p),p),U=p):U=M():(p.data!==g.children&&(Et(),p.data=g.children),U=i(p));break;case _e:D(p)?(U=i(p),P(g.el=p.content.firstChild,p,O)):ie!==8||T?U=M():U=i(p);break;case Wt:if(T&&(p=i(p),ie=p.nodeType),ie===1||ie===3){U=p;const X=!g.children.length;for(let V=0;V{j=j||!!g.dynamicChildren;const{type:T,props:M,patchFlag:A,shapeFlag:w,dirs:F,transition:Y}=g,ie=T==="input"||T==="option";if(ie||A!==-1){F&&Ue(g,null,O,"created");let U=!1;if(D(p)){U=ho(null,Y)&&O&&O.vnode.props&&O.vnode.props.appear;const V=p.content.firstChild;U&&Y.beforeEnter(V),P(V,p,O),g.el=p=V}if(w&16&&!(M&&(M.innerHTML||M.textContent))){let V=y(p.firstChild,g,p,O,$,R,j);for(;V;){mn(p,1)||Et();const fe=V;V=V.nextSibling,l(fe)}}else if(w&8){let V=g.children;V[0]===` +`&&(p.tagName==="PRE"||p.tagName==="TEXTAREA")&&(V=V.slice(1)),p.textContent!==V&&(mn(p,0)||Et(),p.textContent=g.children)}if(M){if(ie||!j||A&48){const V=p.tagName.includes("-");for(const fe in M)(ie&&(fe.endsWith("value")||fe==="indeterminate")||tn(fe)&&!Ot(fe)||fe[0]==="."||V)&&s(p,fe,null,M[fe],void 0,O)}else if(M.onClick)s(p,"onClick",null,M.onClick,void 0,O);else if(A&4&>(M.style))for(const V in M.style)M.style[V]}let X;(X=M&&M.onVnodeBeforeMount)&&Oe(X,O,g),F&&Ue(g,null,O,"beforeMount"),((X=M&&M.onVnodeMounted)||F||U)&&_o(()=>{X&&Oe(X,O,g),U&&Y.enter(p),F&&Ue(g,null,O,"mounted")},$)}return p.nextSibling},y=(p,g,O,$,R,j,T)=>{T=T||!!g.dynamicChildren;const M=g.children,A=M.length;for(let w=0;w{const{slotScopeIds:T}=g;T&&(R=R?R.concat(T):T);const M=o(p),A=y(i(p),g,M,O,$,R,j);return A&&At(A)&&A.data==="]"?i(g.anchor=A):(Et(),c(g.anchor=f("]"),M,A),A)},_=(p,g,O,$,R,j)=>{if(mn(p.parentElement,1)||Et(),g.el=null,j){const A=k(p);for(;;){const w=i(p);if(w&&w!==A)l(w);else break}}const T=i(p),M=o(p);return l(p),n(null,g,M,T,O,$,gn(M),R),O&&(O.vnode.el=g.el,yo(O,g.el)),T},k=(p,g="[",O="]")=>{let $=0;for(;p;)if(p=i(p),p&&At(p)&&(p.data===g&&$++,p.data===O)){if($===0)return i(p);$--}return p},P=(p,g,O)=>{const $=g.parentNode;$&&$.replaceChild(p,g);let R=O;for(;R;)R.vnode.el===g&&(R.vnode.el=R.subTree.el=p),R=R.parent},D=p=>p.nodeType===1&&p.tagName==="TEMPLATE";return[a,d]}const vr="data-allow-mismatch",tc={0:"text",1:"children",2:"class",3:"style",4:"attribute"};function mn(e,t){if(t===0||t===1)for(;e&&!e.hasAttribute(vr);)e=e.parentElement;const n=e&&e.getAttribute(vr);if(n==null)return!1;if(n==="")return!0;{const s=n.split(",");return t===0&&s.includes("children")?!0:n.split(",").includes(tc[t])}}$n().requestIdleCallback;$n().cancelIdleCallback;function nc(e,t){if(At(e)&&e.data==="["){let n=1,s=e.nextSibling;for(;s;){if(s.nodeType===1){if(t(s)===!1)break}else if(At(s))if(s.data==="]"){if(--n===0)break}else s.data==="["&&n++;s=s.nextSibling}}else t(e)}const mt=e=>!!e.type.__asyncLoader;/*! #__NO_SIDE_EFFECTS__ */function If(e){q(e)&&(e={loader:e});const{loader:t,loadingComponent:n,errorComponent:s,delay:r=200,hydrate:i,timeout:o,suspensible:l=!0,onError:c}=e;let f=null,a,d=0;const m=()=>(d++,f=null,y()),y=()=>{let v;return f||(v=f=t().catch(_=>{if(_=_ instanceof Error?_:new Error(String(_)),c)return new Promise((k,P)=>{c(_,()=>k(m()),()=>P(_),d+1)});throw _}).then(_=>v!==f&&f?f:(_&&(_.__esModule||_[Symbol.toStringTag]==="Module")&&(_=_.default),a=_,_)))};return Qs({name:"AsyncComponentWrapper",__asyncLoader:y,__asyncHydrate(v,_,k){const P=i?()=>{const D=i(k,p=>nc(v,p));D&&(_.bum||(_.bum=[])).push(D)}:k;a?P():y().then(()=>!_.isUnmounted&&P())},get __asyncResolved(){return a},setup(){const v=de;if(Zs(v),a)return()=>rs(a,v);const _=p=>{f=null,sn(p,v,13,!s)};if(l&&v.suspense||It)return y().then(p=>()=>rs(p,v)).catch(p=>(_(p),()=>s?ae(s,{error:p}):null));const k=le(!1),P=le(),D=le(!!r);return r&&setTimeout(()=>{D.value=!1},r),o!=null&&setTimeout(()=>{if(!k.value&&!P.value){const p=new Error(`Async component timed out after ${o}ms.`);_(p),P.value=p}},o),y().then(()=>{k.value=!0,v.parent&&rn(v.parent.vnode)&&v.parent.update()}).catch(p=>{_(p),P.value=p}),()=>{if(k.value&&a)return rs(a,v);if(P.value&&s)return ae(s,{error:P.value});if(n&&!D.value)return ae(n)}}})}function rs(e,t){const{ref:n,props:s,children:r,ce:i}=t.vnode,o=ae(e,s,r);return o.ref=n,o.ce=i,delete t.vnode.ce,o}const rn=e=>e.type.__isKeepAlive;function sc(e,t){qi(e,"a",t)}function rc(e,t){qi(e,"da",t)}function qi(e,t,n=de){const s=e.__wdc||(e.__wdc=()=>{let r=n;for(;r;){if(r.isDeactivated)return;r=r.parent}return e()});if(Wn(t,s,n),n){let r=n.parent;for(;r&&r.parent;)rn(r.parent.vnode)&&ic(s,t,n,r),r=r.parent}}function ic(e,t,n,s){const r=Wn(t,e,s,!0);Kn(()=>{Vs(s[t],r)},n)}function Wn(e,t,n=de,s=!1){if(n){const r=n[e]||(n[e]=[]),i=t.__weh||(t.__weh=(...o)=>{ot();const l=ln(n),c=De(t,n,e,o);return l(),lt(),c});return s?r.unshift(i):r.push(i),i}}const Je=e=>(t,n=de)=>{(!It||e==="sp")&&Wn(e,(...s)=>t(...s),n)},oc=Je("bm"),Nt=Je("m"),lc=Je("bu"),cc=Je("u"),Gi=Je("bum"),Kn=Je("um"),ac=Je("sp"),fc=Je("rtg"),uc=Je("rtc");function dc(e,t=de){Wn("ec",e,t)}const Xi="components";function Nf(e,t){return zi(Xi,e,!0,t)||e}const Yi=Symbol.for("v-ndc");function Ff(e){return oe(e)?zi(Xi,e,!1)||e:e||Yi}function zi(e,t,n=!0,s=!1){const r=he||de;if(r){const i=r.type;{const l=zc(i,!1);if(l&&(l===t||l===Ne(t)||l===Dn(Ne(t))))return i}const o=wr(r[e]||i[e],t)||wr(r.appContext[e],t);return!o&&s?i:o}}function wr(e,t){return e&&(e[t]||e[Ne(t)]||e[Dn(Ne(t))])}function Hf(e,t,n,s){let r;const i=n,o=K(e);if(o||oe(e)){const l=o&>(e);let c=!1;l&&(c=!Le(e),e=Vn(e)),r=new Array(e.length);for(let f=0,a=e.length;ft(l,c,void 0,i));else{const l=Object.keys(e);r=new Array(l.length);for(let c=0,f=l.length;cZt(t)?!(t.type===_e||t.type===Ee&&!Ji(t.children)):!0)?e:null}function $f(e,t){const n={};for(const s in e)n[/[A-Z]/.test(s)?`on:${s}`:wn(s)]=e[s];return n}const Ms=e=>e?Eo(e)?Xn(e):Ms(e.parent):null,Bt=pe(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>Ms(e.parent),$root:e=>Ms(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>Zi(e),$forceUpdate:e=>e.f||(e.f=()=>{Js(e.update)}),$nextTick:e=>e.n||(e.n=Bn.bind(e.proxy)),$watch:e=>Nc.bind(e)}),is=(e,t)=>e!==ee&&!e.__isScriptSetup&&Q(e,t),hc={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:n,setupState:s,data:r,props:i,accessCache:o,type:l,appContext:c}=e;let f;if(t[0]!=="$"){const y=o[t];if(y!==void 0)switch(y){case 1:return s[t];case 2:return r[t];case 4:return n[t];case 3:return i[t]}else{if(is(s,t))return o[t]=1,s[t];if(r!==ee&&Q(r,t))return o[t]=2,r[t];if((f=e.propsOptions[0])&&Q(f,t))return o[t]=3,i[t];if(n!==ee&&Q(n,t))return o[t]=4,n[t];Os&&(o[t]=0)}}const a=Bt[t];let d,m;if(a)return t==="$attrs"&&ye(e.attrs,"get",""),a(e);if((d=l.__cssModules)&&(d=d[t]))return d;if(n!==ee&&Q(n,t))return o[t]=4,n[t];if(m=c.config.globalProperties,Q(m,t))return m[t]},set({_:e},t,n){const{data:s,setupState:r,ctx:i}=e;return is(r,t)?(r[t]=n,!0):s!==ee&&Q(s,t)?(s[t]=n,!0):Q(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(i[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:s,appContext:r,propsOptions:i}},o){let l;return!!n[o]||e!==ee&&Q(e,o)||is(t,o)||(l=i[0])&&Q(l,o)||Q(s,o)||Q(Bt,o)||Q(r.config.globalProperties,o)},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:Q(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function jf(){return pc().slots}function pc(){const e=on();return e.setupContext||(e.setupContext=Co(e))}function Sr(e){return K(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let Os=!0;function gc(e){const t=Zi(e),n=e.proxy,s=e.ctx;Os=!1,t.beforeCreate&&Tr(t.beforeCreate,e,"bc");const{data:r,computed:i,methods:o,watch:l,provide:c,inject:f,created:a,beforeMount:d,mounted:m,beforeUpdate:y,updated:v,activated:_,deactivated:k,beforeDestroy:P,beforeUnmount:D,destroyed:p,unmounted:g,render:O,renderTracked:$,renderTriggered:R,errorCaptured:j,serverPrefetch:T,expose:M,inheritAttrs:A,components:w,directives:F,filters:Y}=t;if(f&&mc(f,s,null),o)for(const X in o){const V=o[X];q(V)&&(s[X]=V.bind(n))}if(r){const X=r.call(n,n);se(X)&&(e.data=Lt(X))}if(Os=!0,i)for(const X in i){const V=i[X],fe=q(V)?V.bind(n,n):q(V.get)?V.get.bind(n,n):Be,cn=!q(V)&&q(V.set)?V.set.bind(n):Be,ct=re({get:fe,set:cn});Object.defineProperty(s,X,{enumerable:!0,configurable:!0,get:()=>ct.value,set:je=>ct.value=je})}if(l)for(const X in l)Qi(l[X],s,n,X);if(c){const X=q(c)?c.call(n):c;Reflect.ownKeys(X).forEach(V=>{Sc(V,X[V])})}a&&Tr(a,e,"c");function U(X,V){K(V)?V.forEach(fe=>X(fe.bind(n))):V&&X(V.bind(n))}if(U(oc,d),U(Nt,m),U(lc,y),U(cc,v),U(sc,_),U(rc,k),U(dc,j),U(uc,$),U(fc,R),U(Gi,D),U(Kn,g),U(ac,T),K(M))if(M.length){const X=e.exposed||(e.exposed={});M.forEach(V=>{Object.defineProperty(X,V,{get:()=>n[V],set:fe=>n[V]=fe})})}else e.exposed||(e.exposed={});O&&e.render===Be&&(e.render=O),A!=null&&(e.inheritAttrs=A),w&&(e.components=w),F&&(e.directives=F),T&&Zs(e)}function mc(e,t,n=Be){K(e)&&(e=Ps(e));for(const s in e){const r=e[s];let i;se(r)?"default"in r?i=bt(r.from||s,r.default,!0):i=bt(r.from||s):i=bt(r),ue(i)?Object.defineProperty(t,s,{enumerable:!0,configurable:!0,get:()=>i.value,set:o=>i.value=o}):t[s]=i}}function Tr(e,t,n){De(K(e)?e.map(s=>s.bind(t.proxy)):e.bind(t.proxy),t,n)}function Qi(e,t,n,s){let r=s.includes(".")?go(n,s):()=>n[s];if(oe(e)){const i=t[e];q(i)&&Ie(r,i)}else if(q(e))Ie(r,e.bind(n));else if(se(e))if(K(e))e.forEach(i=>Qi(i,t,n,s));else{const i=q(e.handler)?e.handler.bind(n):t[e.handler];q(i)&&Ie(r,i,e)}}function Zi(e){const t=e.type,{mixins:n,extends:s}=t,{mixins:r,optionsCache:i,config:{optionMergeStrategies:o}}=e.appContext,l=i.get(t);let c;return l?c=l:!r.length&&!n&&!s?c=t:(c={},r.length&&r.forEach(f=>In(c,f,o,!0)),In(c,t,o)),se(t)&&i.set(t,c),c}function In(e,t,n,s=!1){const{mixins:r,extends:i}=t;i&&In(e,i,n,!0),r&&r.forEach(o=>In(e,o,n,!0));for(const o in t)if(!(s&&o==="expose")){const l=yc[o]||n&&n[o];e[o]=l?l(e[o],t[o]):t[o]}return e}const yc={data:Er,props:xr,emits:xr,methods:jt,computed:jt,beforeCreate:ve,created:ve,beforeMount:ve,mounted:ve,beforeUpdate:ve,updated:ve,beforeDestroy:ve,beforeUnmount:ve,destroyed:ve,unmounted:ve,activated:ve,deactivated:ve,errorCaptured:ve,serverPrefetch:ve,components:jt,directives:jt,watch:_c,provide:Er,inject:bc};function Er(e,t){return t?e?function(){return pe(q(e)?e.call(this,this):e,q(t)?t.call(this,this):t)}:t:e}function bc(e,t){return jt(Ps(e),Ps(t))}function Ps(e){if(K(e)){const t={};for(let n=0;n1)return n&&q(t)?t.call(s&&s.proxy):t}}function to(){return!!(de||he||yt)}const no={},so=()=>Object.create(no),ro=e=>Object.getPrototypeOf(e)===no;function Tc(e,t,n,s=!1){const r={},i=so();e.propsDefaults=Object.create(null),io(e,t,r,i);for(const o in e.propsOptions[0])o in r||(r[o]=void 0);n?e.props=s?r:Pl(r):e.type.props?e.props=r:e.props=i,e.attrs=i}function Ec(e,t,n,s){const{props:r,attrs:i,vnode:{patchFlag:o}}=e,l=J(r),[c]=e.propsOptions;let f=!1;if((s||o>0)&&!(o&16)){if(o&8){const a=e.vnode.dynamicProps;for(let d=0;d{c=!0;const[m,y]=oo(d,t,!0);pe(o,m),y&&l.push(...y)};!n&&t.mixins.length&&t.mixins.forEach(a),e.extends&&a(e.extends),e.mixins&&e.mixins.forEach(a)}if(!i&&!c)return se(e)&&s.set(e,Rt),Rt;if(K(i))for(let a=0;ae[0]==="_"||e==="$stable",er=e=>K(e)?e.map(Pe):[Pe(e)],Cc=(e,t,n)=>{if(t._n)return t;const s=Gl((...r)=>er(t(...r)),n);return s._c=!1,s},co=(e,t,n)=>{const s=e._ctx;for(const r in e){if(lo(r))continue;const i=e[r];if(q(i))t[r]=Cc(r,i,s);else if(i!=null){const o=er(i);t[r]=()=>o}}},ao=(e,t)=>{const n=er(t);e.slots.default=()=>n},fo=(e,t,n)=>{for(const s in t)(n||s!=="_")&&(e[s]=t[s])},Ac=(e,t,n)=>{const s=e.slots=so();if(e.vnode.shapeFlag&32){const r=t._;r?(fo(s,t,n),n&&di(s,"_",r,!0)):co(t,s)}else t&&ao(e,t)},Rc=(e,t,n)=>{const{vnode:s,slots:r}=e;let i=!0,o=ee;if(s.shapeFlag&32){const l=t._;l?n&&l===1?i=!1:fo(r,t,n):(i=!t.$stable,co(t,r)),o=t}else t&&(ao(e,t),o={default:1});if(i)for(const l in r)!lo(l)&&o[l]==null&&delete r[l]},we=_o;function Mc(e){return uo(e)}function Oc(e){return uo(e,ec)}function uo(e,t){const n=$n();n.__VUE__=!0;const{insert:s,remove:r,patchProp:i,createElement:o,createText:l,createComment:c,setText:f,setElementText:a,parentNode:d,nextSibling:m,setScopeId:y=Be,insertStaticContent:v}=e,_=(u,h,b,x=null,S=null,E=null,N=void 0,I=null,L=!!h.dynamicChildren)=>{if(u===h)return;u&&!ht(u,h)&&(x=an(u),je(u,S,E,!0),u=null),h.patchFlag===-2&&(L=!1,h.dynamicChildren=null);const{type:C,ref:W,shapeFlag:H}=h;switch(C){case _t:k(u,h,b,x);break;case _e:P(u,h,b,x);break;case Wt:u==null&&D(h,b,x,N);break;case Ee:w(u,h,b,x,S,E,N,I,L);break;default:H&1?O(u,h,b,x,S,E,N,I,L):H&6?F(u,h,b,x,S,E,N,I,L):(H&64||H&128)&&C.process(u,h,b,x,S,E,N,I,L,St)}W!=null&&S&&Jt(W,u&&u.ref,E,h||u,!h)},k=(u,h,b,x)=>{if(u==null)s(h.el=l(h.children),b,x);else{const S=h.el=u.el;h.children!==u.children&&f(S,h.children)}},P=(u,h,b,x)=>{u==null?s(h.el=c(h.children||""),b,x):h.el=u.el},D=(u,h,b,x)=>{[u.el,u.anchor]=v(u.children,h,b,x,u.el,u.anchor)},p=({el:u,anchor:h},b,x)=>{let S;for(;u&&u!==h;)S=m(u),s(u,b,x),u=S;s(h,b,x)},g=({el:u,anchor:h})=>{let b;for(;u&&u!==h;)b=m(u),r(u),u=b;r(h)},O=(u,h,b,x,S,E,N,I,L)=>{h.type==="svg"?N="svg":h.type==="math"&&(N="mathml"),u==null?$(h,b,x,S,E,N,I,L):T(u,h,S,E,N,I,L)},$=(u,h,b,x,S,E,N,I)=>{let L,C;const{props:W,shapeFlag:H,transition:B,dirs:G}=u;if(L=u.el=o(u.type,E,W&&W.is,W),H&8?a(L,u.children):H&16&&j(u.children,L,null,x,S,os(u,E),N,I),G&&Ue(u,null,x,"created"),R(L,u,u.scopeId,N,x),W){for(const te in W)te!=="value"&&!Ot(te)&&i(L,te,null,W[te],E,x);"value"in W&&i(L,"value",null,W.value,E),(C=W.onVnodeBeforeMount)&&Oe(C,x,u)}G&&Ue(u,null,x,"beforeMount");const z=ho(S,B);z&&B.beforeEnter(L),s(L,h,b),((C=W&&W.onVnodeMounted)||z||G)&&we(()=>{C&&Oe(C,x,u),z&&B.enter(L),G&&Ue(u,null,x,"mounted")},S)},R=(u,h,b,x,S)=>{if(b&&y(u,b),x)for(let E=0;E{for(let C=L;C{const I=h.el=u.el;let{patchFlag:L,dynamicChildren:C,dirs:W}=h;L|=u.patchFlag&16;const H=u.props||ee,B=h.props||ee;let G;if(b&&at(b,!1),(G=B.onVnodeBeforeUpdate)&&Oe(G,b,h,u),W&&Ue(h,u,b,"beforeUpdate"),b&&at(b,!0),(H.innerHTML&&B.innerHTML==null||H.textContent&&B.textContent==null)&&a(I,""),C?M(u.dynamicChildren,C,I,b,x,os(h,S),E):N||V(u,h,I,null,b,x,os(h,S),E,!1),L>0){if(L&16)A(I,H,B,b,S);else if(L&2&&H.class!==B.class&&i(I,"class",null,B.class,S),L&4&&i(I,"style",H.style,B.style,S),L&8){const z=h.dynamicProps;for(let te=0;te{G&&Oe(G,b,h,u),W&&Ue(h,u,b,"updated")},x)},M=(u,h,b,x,S,E,N)=>{for(let I=0;I{if(h!==b){if(h!==ee)for(const E in h)!Ot(E)&&!(E in b)&&i(u,E,h[E],null,S,x);for(const E in b){if(Ot(E))continue;const N=b[E],I=h[E];N!==I&&E!=="value"&&i(u,E,I,N,S,x)}"value"in b&&i(u,"value",h.value,b.value,S)}},w=(u,h,b,x,S,E,N,I,L)=>{const C=h.el=u?u.el:l(""),W=h.anchor=u?u.anchor:l("");let{patchFlag:H,dynamicChildren:B,slotScopeIds:G}=h;G&&(I=I?I.concat(G):G),u==null?(s(C,b,x),s(W,b,x),j(h.children||[],b,W,S,E,N,I,L)):H>0&&H&64&&B&&u.dynamicChildren?(M(u.dynamicChildren,B,b,S,E,N,I),(h.key!=null||S&&h===S.subTree)&&tr(u,h,!0)):V(u,h,b,W,S,E,N,I,L)},F=(u,h,b,x,S,E,N,I,L)=>{h.slotScopeIds=I,u==null?h.shapeFlag&512?S.ctx.activate(h,b,x,N,L):Y(h,b,x,S,E,N,L):ie(u,h,L)},Y=(u,h,b,x,S,E,N)=>{const I=u.component=qc(u,x,S);if(rn(u)&&(I.ctx.renderer=St),Gc(I,!1,N),I.asyncDep){if(S&&S.registerDep(I,U,N),!u.el){const L=I.subTree=ae(_e);P(null,L,h,b)}}else U(I,u,h,b,S,E,N)},ie=(u,h,b)=>{const x=h.component=u.component;if(jc(u,h,b))if(x.asyncDep&&!x.asyncResolved){X(x,h,b);return}else x.next=h,x.update();else h.el=u.el,x.vnode=h},U=(u,h,b,x,S,E,N)=>{const I=()=>{if(u.isMounted){let{next:H,bu:B,u:G,parent:z,vnode:te}=u;{const Ce=po(u);if(Ce){H&&(H.el=te.el,X(u,H,N)),Ce.asyncDep.then(()=>{u.isUnmounted||I()});return}}let Z=H,xe;at(u,!1),H?(H.el=te.el,X(u,H,N)):H=te,B&&Sn(B),(xe=H.props&&H.props.onVnodeBeforeUpdate)&&Oe(xe,z,H,te),at(u,!0);const ge=ls(u),Fe=u.subTree;u.subTree=ge,_(Fe,ge,d(Fe.el),an(Fe),u,S,E),H.el=ge.el,Z===null&&yo(u,ge.el),G&&we(G,S),(xe=H.props&&H.props.onVnodeUpdated)&&we(()=>Oe(xe,z,H,te),S)}else{let H;const{el:B,props:G}=h,{bm:z,m:te,parent:Z,root:xe,type:ge}=u,Fe=mt(h);if(at(u,!1),z&&Sn(z),!Fe&&(H=G&&G.onVnodeBeforeMount)&&Oe(H,Z,h),at(u,!0),B&&Qn){const Ce=()=>{u.subTree=ls(u),Qn(B,u.subTree,u,S,null)};Fe&&ge.__asyncHydrate?ge.__asyncHydrate(B,u,Ce):Ce()}else{xe.ce&&xe.ce._injectChildStyle(ge);const Ce=u.subTree=ls(u);_(null,Ce,b,x,u,S,E),h.el=Ce.el}if(te&&we(te,S),!Fe&&(H=G&&G.onVnodeMounted)){const Ce=h;we(()=>Oe(H,Z,Ce),S)}(h.shapeFlag&256||Z&&mt(Z.vnode)&&Z.vnode.shapeFlag&256)&&u.a&&we(u.a,S),u.isMounted=!0,h=b=x=null}};u.scope.on();const L=u.effect=new yi(I);u.scope.off();const C=u.update=L.run.bind(L),W=u.job=L.runIfDirty.bind(L);W.i=u,W.id=u.uid,L.scheduler=()=>Js(W),at(u,!0),C()},X=(u,h,b)=>{h.component=u;const x=u.vnode.props;u.vnode=h,u.next=null,Ec(u,h.props,x,b),Rc(u,h.children,b),ot(),pr(u),lt()},V=(u,h,b,x,S,E,N,I,L=!1)=>{const C=u&&u.children,W=u?u.shapeFlag:0,H=h.children,{patchFlag:B,shapeFlag:G}=h;if(B>0){if(B&128){cn(C,H,b,x,S,E,N,I,L);return}else if(B&256){fe(C,H,b,x,S,E,N,I,L);return}}G&8?(W&16&&Ft(C,S,E),H!==C&&a(b,H)):W&16?G&16?cn(C,H,b,x,S,E,N,I,L):Ft(C,S,E,!0):(W&8&&a(b,""),G&16&&j(H,b,x,S,E,N,I,L))},fe=(u,h,b,x,S,E,N,I,L)=>{u=u||Rt,h=h||Rt;const C=u.length,W=h.length,H=Math.min(C,W);let B;for(B=0;BW?Ft(u,S,E,!0,!1,H):j(h,b,x,S,E,N,I,L,H)},cn=(u,h,b,x,S,E,N,I,L)=>{let C=0;const W=h.length;let H=u.length-1,B=W-1;for(;C<=H&&C<=B;){const G=u[C],z=h[C]=L?tt(h[C]):Pe(h[C]);if(ht(G,z))_(G,z,b,null,S,E,N,I,L);else break;C++}for(;C<=H&&C<=B;){const G=u[H],z=h[B]=L?tt(h[B]):Pe(h[B]);if(ht(G,z))_(G,z,b,null,S,E,N,I,L);else break;H--,B--}if(C>H){if(C<=B){const G=B+1,z=GB)for(;C<=H;)je(u[C],S,E,!0),C++;else{const G=C,z=C,te=new Map;for(C=z;C<=B;C++){const Ae=h[C]=L?tt(h[C]):Pe(h[C]);Ae.key!=null&&te.set(Ae.key,C)}let Z,xe=0;const ge=B-z+1;let Fe=!1,Ce=0;const Ht=new Array(ge);for(C=0;C=ge){je(Ae,S,E,!0);continue}let Ve;if(Ae.key!=null)Ve=te.get(Ae.key);else for(Z=z;Z<=B;Z++)if(Ht[Z-z]===0&&ht(Ae,h[Z])){Ve=Z;break}Ve===void 0?je(Ae,S,E,!0):(Ht[Ve-z]=C+1,Ve>=Ce?Ce=Ve:Fe=!0,_(Ae,h[Ve],b,null,S,E,N,I,L),xe++)}const ar=Fe?Pc(Ht):Rt;for(Z=ar.length-1,C=ge-1;C>=0;C--){const Ae=z+C,Ve=h[Ae],fr=Ae+1{const{el:E,type:N,transition:I,children:L,shapeFlag:C}=u;if(C&6){ct(u.component.subTree,h,b,x);return}if(C&128){u.suspense.move(h,b,x);return}if(C&64){N.move(u,h,b,St);return}if(N===Ee){s(E,h,b);for(let H=0;HI.enter(E),S);else{const{leave:H,delayLeave:B,afterLeave:G}=I,z=()=>s(E,h,b),te=()=>{H(E,()=>{z(),G&&G()})};B?B(E,z,te):te()}else s(E,h,b)},je=(u,h,b,x=!1,S=!1)=>{const{type:E,props:N,ref:I,children:L,dynamicChildren:C,shapeFlag:W,patchFlag:H,dirs:B,cacheIndex:G}=u;if(H===-2&&(S=!1),I!=null&&Jt(I,null,b,u,!0),G!=null&&(h.renderCache[G]=void 0),W&256){h.ctx.deactivate(u);return}const z=W&1&&B,te=!mt(u);let Z;if(te&&(Z=N&&N.onVnodeBeforeUnmount)&&Oe(Z,h,u),W&6)zo(u.component,b,x);else{if(W&128){u.suspense.unmount(b,x);return}z&&Ue(u,null,h,"beforeUnmount"),W&64?u.type.remove(u,h,b,St,x):C&&!C.hasOnce&&(E!==Ee||H>0&&H&64)?Ft(C,h,b,!1,!0):(E===Ee&&H&384||!S&&W&16)&&Ft(L,h,b),x&&lr(u)}(te&&(Z=N&&N.onVnodeUnmounted)||z)&&we(()=>{Z&&Oe(Z,h,u),z&&Ue(u,null,h,"unmounted")},b)},lr=u=>{const{type:h,el:b,anchor:x,transition:S}=u;if(h===Ee){Yo(b,x);return}if(h===Wt){g(u);return}const E=()=>{r(b),S&&!S.persisted&&S.afterLeave&&S.afterLeave()};if(u.shapeFlag&1&&S&&!S.persisted){const{leave:N,delayLeave:I}=S,L=()=>N(b,E);I?I(u.el,E,L):L()}else E()},Yo=(u,h)=>{let b;for(;u!==h;)b=m(u),r(u),u=b;r(h)},zo=(u,h,b)=>{const{bum:x,scope:S,job:E,subTree:N,um:I,m:L,a:C}=u;Ar(L),Ar(C),x&&Sn(x),S.stop(),E&&(E.flags|=8,je(N,u,h,b)),I&&we(I,h),we(()=>{u.isUnmounted=!0},h),h&&h.pendingBranch&&!h.isUnmounted&&u.asyncDep&&!u.asyncResolved&&u.suspenseId===h.pendingId&&(h.deps--,h.deps===0&&h.resolve())},Ft=(u,h,b,x=!1,S=!1,E=0)=>{for(let N=E;N{if(u.shapeFlag&6)return an(u.component.subTree);if(u.shapeFlag&128)return u.suspense.next();const h=m(u.anchor||u.el),b=h&&h[Di];return b?m(b):h};let zn=!1;const cr=(u,h,b)=>{u==null?h._vnode&&je(h._vnode,null,null,!0):_(h._vnode||null,u,h,null,null,null,b),h._vnode=u,zn||(zn=!0,pr(),Pn(),zn=!1)},St={p:_,um:je,m:ct,r:lr,mt:Y,mc:j,pc:V,pbc:M,n:an,o:e};let Jn,Qn;return t&&([Jn,Qn]=t(St)),{render:cr,hydrate:Jn,createApp:wc(cr,Jn)}}function os({type:e,props:t},n){return n==="svg"&&e==="foreignObject"||n==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:n}function at({effect:e,job:t},n){n?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function ho(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function tr(e,t,n=!1){const s=e.children,r=t.children;if(K(s)&&K(r))for(let i=0;i>1,e[n[l]]0&&(t[s]=n[i-1]),n[i]=s)}}for(i=n.length,o=n[i-1];i-- >0;)n[i]=o,o=t[o];return n}function po(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:po(t)}function Ar(e){if(e)for(let t=0;tbt(Lc);function nr(e,t){return qn(e,null,t)}function Vf(e,t){return qn(e,null,{flush:"post"})}function Ie(e,t,n){return qn(e,t,n)}function qn(e,t,n=ee){const{immediate:s,deep:r,flush:i,once:o}=n,l=pe({},n),c=t&&s||!t&&i!=="post";let f;if(It){if(i==="sync"){const y=Ic();f=y.__watcherHandles||(y.__watcherHandles=[])}else if(!c){const y=()=>{};return y.stop=Be,y.resume=Be,y.pause=Be,y}}const a=de;l.call=(y,v,_)=>De(y,a,v,_);let d=!1;i==="post"?l.scheduler=y=>{we(y,a&&a.suspense)}:i!=="sync"&&(d=!0,l.scheduler=(y,v)=>{v?y():Js(y)}),l.augmentJob=y=>{t&&(y.flags|=4),d&&(y.flags|=2,a&&(y.id=a.uid,y.i=a))};const m=Bl(e,t,l);return It&&(f?f.push(m):c&&m()),m}function Nc(e,t,n){const s=this.proxy,r=oe(e)?e.includes(".")?go(s,e):()=>s[e]:e.bind(s,s);let i;q(t)?i=t:(i=t.handler,n=t);const o=ln(this),l=qn(r,i.bind(s),n);return o(),l}function go(e,t){const n=t.split(".");return()=>{let s=e;for(let r=0;rt==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${Ne(t)}Modifiers`]||e[`${it(t)}Modifiers`];function Hc(e,t,...n){if(e.isUnmounted)return;const s=e.vnode.props||ee;let r=n;const i=t.startsWith("update:"),o=i&&Fc(s,t.slice(7));o&&(o.trim&&(r=n.map(a=>oe(a)?a.trim():a)),o.number&&(r=n.map(Ss)));let l,c=s[l=wn(t)]||s[l=wn(Ne(t))];!c&&i&&(c=s[l=wn(it(t))]),c&&De(c,e,6,r);const f=s[l+"Once"];if(f){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,De(f,e,6,r)}}function mo(e,t,n=!1){const s=t.emitsCache,r=s.get(e);if(r!==void 0)return r;const i=e.emits;let o={},l=!1;if(!q(e)){const c=f=>{const a=mo(f,t,!0);a&&(l=!0,pe(o,a))};!n&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}return!i&&!l?(se(e)&&s.set(e,null),null):(K(i)?i.forEach(c=>o[c]=null):pe(o,i),se(e)&&s.set(e,o),o)}function Gn(e,t){return!e||!tn(t)?!1:(t=t.slice(2).replace(/Once$/,""),Q(e,t[0].toLowerCase()+t.slice(1))||Q(e,it(t))||Q(e,t))}function ls(e){const{type:t,vnode:n,proxy:s,withProxy:r,propsOptions:[i],slots:o,attrs:l,emit:c,render:f,renderCache:a,props:d,data:m,setupState:y,ctx:v,inheritAttrs:_}=e,k=Ln(e);let P,D;try{if(n.shapeFlag&4){const g=r||s,O=g;P=Pe(f.call(O,g,a,d,y,m,v)),D=l}else{const g=t;P=Pe(g.length>1?g(d,{attrs:l,slots:o,emit:c}):g(d,null)),D=t.props?l:Dc(l)}}catch(g){Kt.length=0,sn(g,e,1),P=ae(_e)}let p=P;if(D&&_!==!1){const g=Object.keys(D),{shapeFlag:O}=p;g.length&&O&7&&(i&&g.some(js)&&(D=$c(D,i)),p=st(p,D,!1,!0))}return n.dirs&&(p=st(p,null,!1,!0),p.dirs=p.dirs?p.dirs.concat(n.dirs):n.dirs),n.transition&&zt(p,n.transition),P=p,Ln(k),P}const Dc=e=>{let t;for(const n in e)(n==="class"||n==="style"||tn(n))&&((t||(t={}))[n]=e[n]);return t},$c=(e,t)=>{const n={};for(const s in e)(!js(s)||!(s.slice(9)in t))&&(n[s]=e[s]);return n};function jc(e,t,n){const{props:s,children:r,component:i}=e,{props:o,children:l,patchFlag:c}=t,f=i.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&c>=0){if(c&1024)return!0;if(c&16)return s?Rr(s,o,f):!!o;if(c&8){const a=t.dynamicProps;for(let d=0;de.__isSuspense;function _o(e,t){t&&t.pendingBranch?K(e)?t.effects.push(...e):t.effects.push(e):ql(e)}const Ee=Symbol.for("v-fgt"),_t=Symbol.for("v-txt"),_e=Symbol.for("v-cmt"),Wt=Symbol.for("v-stc"),Kt=[];let Re=null;function Is(e=!1){Kt.push(Re=e?null:[])}function Vc(){Kt.pop(),Re=Kt[Kt.length-1]||null}let Qt=1;function Mr(e,t=!1){Qt+=e,e<0&&Re&&t&&(Re.hasOnce=!0)}function vo(e){return e.dynamicChildren=Qt>0?Re||Rt:null,Vc(),Qt>0&&Re&&Re.push(e),e}function kf(e,t,n,s,r,i){return vo(So(e,t,n,s,r,i,!0))}function Ns(e,t,n,s,r){return vo(ae(e,t,n,s,r,!0))}function Zt(e){return e?e.__v_isVNode===!0:!1}function ht(e,t){return e.type===t.type&&e.key===t.key}const wo=({key:e})=>e??null,xn=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?oe(e)||ue(e)||q(e)?{i:he,r:e,k:t,f:!!n}:e:null);function So(e,t=null,n=null,s=0,r=null,i=e===Ee?0:1,o=!1,l=!1){const c={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&wo(t),ref:t&&xn(t),scopeId:Hi,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:i,patchFlag:s,dynamicProps:r,dynamicChildren:null,appContext:null,ctx:he};return l?(sr(c,n),i&128&&e.normalize(c)):n&&(c.shapeFlag|=oe(n)?8:16),Qt>0&&!o&&Re&&(c.patchFlag>0||i&6)&&c.patchFlag!==32&&Re.push(c),c}const ae=kc;function kc(e,t=null,n=null,s=0,r=null,i=!1){if((!e||e===Yi)&&(e=_e),Zt(e)){const l=st(e,t,!0);return n&&sr(l,n),Qt>0&&!i&&Re&&(l.shapeFlag&6?Re[Re.indexOf(e)]=l:Re.push(l)),l.patchFlag=-2,l}if(Jc(e)&&(e=e.__vccOpts),t){t=Uc(t);let{class:l,style:c}=t;l&&!oe(l)&&(t.class=Bs(l)),se(c)&&(Ys(c)&&!K(c)&&(c=pe({},c)),t.style=Us(c))}const o=oe(e)?1:bo(e)?128:$i(e)?64:se(e)?4:q(e)?2:0;return So(e,t,n,s,r,o,i,!0)}function Uc(e){return e?Ys(e)||ro(e)?pe({},e):e:null}function st(e,t,n=!1,s=!1){const{props:r,ref:i,patchFlag:o,children:l,transition:c}=e,f=t?Bc(r||{},t):r,a={__v_isVNode:!0,__v_skip:!0,type:e.type,props:f,key:f&&wo(f),ref:t&&t.ref?n&&i?K(i)?i.concat(xn(t)):[i,xn(t)]:xn(t):i,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:l,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==Ee?o===-1?16:o|16:o,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:c,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&st(e.ssContent),ssFallback:e.ssFallback&&st(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return c&&s&&zt(a,c.clone(a)),a}function To(e=" ",t=0){return ae(_t,null,e,t)}function Uf(e,t){const n=ae(Wt,null,e);return n.staticCount=t,n}function Bf(e="",t=!1){return t?(Is(),Ns(_e,null,e)):ae(_e,null,e)}function Pe(e){return e==null||typeof e=="boolean"?ae(_e):K(e)?ae(Ee,null,e.slice()):Zt(e)?tt(e):ae(_t,null,String(e))}function tt(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:st(e)}function sr(e,t){let n=0;const{shapeFlag:s}=e;if(t==null)t=null;else if(K(t))n=16;else if(typeof t=="object")if(s&65){const r=t.default;r&&(r._c&&(r._d=!1),sr(e,r()),r._c&&(r._d=!0));return}else{n=32;const r=t._;!r&&!ro(t)?t._ctx=he:r===3&&he&&(he.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else q(t)?(t={default:t,_ctx:he},n=32):(t=String(t),s&64?(n=16,t=[To(t)]):n=8);e.children=t,e.shapeFlag|=n}function Bc(...e){const t={};for(let n=0;nde||he;let Nn,Fs;{const e=$n(),t=(n,s)=>{let r;return(r=e[n])||(r=e[n]=[]),r.push(s),i=>{r.length>1?r.forEach(o=>o(i)):r[0](i)}};Nn=t("__VUE_INSTANCE_SETTERS__",n=>de=n),Fs=t("__VUE_SSR_SETTERS__",n=>It=n)}const ln=e=>{const t=de;return Nn(e),e.scope.on(),()=>{e.scope.off(),Nn(t)}},Or=()=>{de&&de.scope.off(),Nn(null)};function Eo(e){return e.vnode.shapeFlag&4}let It=!1;function Gc(e,t=!1,n=!1){t&&Fs(t);const{props:s,children:r}=e.vnode,i=Eo(e);Tc(e,s,i,t),Ac(e,r,n);const o=i?Xc(e,t):void 0;return t&&Fs(!1),o}function Xc(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,hc);const{setup:s}=n;if(s){ot();const r=e.setupContext=s.length>1?Co(e):null,i=ln(e),o=nn(s,e,0,[e.props,r]),l=ai(o);if(lt(),i(),(l||e.sp)&&!mt(e)&&Zs(e),l){if(o.then(Or,Or),t)return o.then(c=>{Pr(e,c)}).catch(c=>{sn(c,e,0)});e.asyncDep=o}else Pr(e,o)}else xo(e)}function Pr(e,t,n){q(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:se(t)&&(e.setupState=Li(t)),xo(e)}function xo(e,t,n){const s=e.type;e.render||(e.render=s.render||Be);{const r=ln(e);ot();try{gc(e)}finally{lt(),r()}}}const Yc={get(e,t){return ye(e,"get",""),e[t]}};function Co(e){const t=n=>{e.exposed=n||{}};return{attrs:new Proxy(e.attrs,Yc),slots:e.slots,emit:e.emit,expose:t}}function Xn(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(Li(Tn(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in Bt)return Bt[n](e)},has(t,n){return n in t||n in Bt}})):e.proxy}function zc(e,t=!0){return q(e)?e.displayName||e.name:e.name||t&&e.__name}function Jc(e){return q(e)&&"__vccOpts"in e}const re=(e,t)=>kl(e,t,It);function Hs(e,t,n){const s=arguments.length;return s===2?se(t)&&!K(t)?Zt(t)?ae(e,null,[t]):ae(e,t):ae(e,null,t):(s>3?n=Array.prototype.slice.call(arguments,2):s===3&&Zt(n)&&(n=[n]),ae(e,t,n))}const Qc="3.5.13";/** +* @vue/runtime-dom v3.5.13 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/let Ds;const Lr=typeof window<"u"&&window.trustedTypes;if(Lr)try{Ds=Lr.createPolicy("vue",{createHTML:e=>e})}catch{}const Ao=Ds?e=>Ds.createHTML(e):e=>e,Zc="http://www.w3.org/2000/svg",ea="http://www.w3.org/1998/Math/MathML",qe=typeof document<"u"?document:null,Ir=qe&&qe.createElement("template"),ta={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,s)=>{const r=t==="svg"?qe.createElementNS(Zc,e):t==="mathml"?qe.createElementNS(ea,e):n?qe.createElement(e,{is:n}):qe.createElement(e);return e==="select"&&s&&s.multiple!=null&&r.setAttribute("multiple",s.multiple),r},createText:e=>qe.createTextNode(e),createComment:e=>qe.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>qe.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,s,r,i){const o=n?n.previousSibling:t.lastChild;if(r&&(r===i||r.nextSibling))for(;t.insertBefore(r.cloneNode(!0),n),!(r===i||!(r=r.nextSibling)););else{Ir.innerHTML=Ao(s==="svg"?`${e}`:s==="mathml"?`${e}`:e);const l=Ir.content;if(s==="svg"||s==="mathml"){const c=l.firstChild;for(;c.firstChild;)l.appendChild(c.firstChild);l.removeChild(c)}t.insertBefore(l,n)}return[o?o.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},Qe="transition",$t="animation",en=Symbol("_vtc"),Ro={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},na=pe({},ki,Ro),sa=e=>(e.displayName="Transition",e.props=na,e),Wf=sa((e,{slots:t})=>Hs(Jl,ra(e),t)),ft=(e,t=[])=>{K(e)?e.forEach(n=>n(...t)):e&&e(...t)},Nr=e=>e?K(e)?e.some(t=>t.length>1):e.length>1:!1;function ra(e){const t={};for(const w in e)w in Ro||(t[w]=e[w]);if(e.css===!1)return t;const{name:n="v",type:s,duration:r,enterFromClass:i=`${n}-enter-from`,enterActiveClass:o=`${n}-enter-active`,enterToClass:l=`${n}-enter-to`,appearFromClass:c=i,appearActiveClass:f=o,appearToClass:a=l,leaveFromClass:d=`${n}-leave-from`,leaveActiveClass:m=`${n}-leave-active`,leaveToClass:y=`${n}-leave-to`}=e,v=ia(r),_=v&&v[0],k=v&&v[1],{onBeforeEnter:P,onEnter:D,onEnterCancelled:p,onLeave:g,onLeaveCancelled:O,onBeforeAppear:$=P,onAppear:R=D,onAppearCancelled:j=p}=t,T=(w,F,Y,ie)=>{w._enterCancelled=ie,ut(w,F?a:l),ut(w,F?f:o),Y&&Y()},M=(w,F)=>{w._isLeaving=!1,ut(w,d),ut(w,y),ut(w,m),F&&F()},A=w=>(F,Y)=>{const ie=w?R:D,U=()=>T(F,w,Y);ft(ie,[F,U]),Fr(()=>{ut(F,w?c:i),Ke(F,w?a:l),Nr(ie)||Hr(F,s,_,U)})};return pe(t,{onBeforeEnter(w){ft(P,[w]),Ke(w,i),Ke(w,o)},onBeforeAppear(w){ft($,[w]),Ke(w,c),Ke(w,f)},onEnter:A(!1),onAppear:A(!0),onLeave(w,F){w._isLeaving=!0;const Y=()=>M(w,F);Ke(w,d),w._enterCancelled?(Ke(w,m),jr()):(jr(),Ke(w,m)),Fr(()=>{w._isLeaving&&(ut(w,d),Ke(w,y),Nr(g)||Hr(w,s,k,Y))}),ft(g,[w,Y])},onEnterCancelled(w){T(w,!1,void 0,!0),ft(p,[w])},onAppearCancelled(w){T(w,!0,void 0,!0),ft(j,[w])},onLeaveCancelled(w){M(w),ft(O,[w])}})}function ia(e){if(e==null)return null;if(se(e))return[cs(e.enter),cs(e.leave)];{const t=cs(e);return[t,t]}}function cs(e){return nl(e)}function Ke(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e[en]||(e[en]=new Set)).add(t)}function ut(e,t){t.split(/\s+/).forEach(s=>s&&e.classList.remove(s));const n=e[en];n&&(n.delete(t),n.size||(e[en]=void 0))}function Fr(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let oa=0;function Hr(e,t,n,s){const r=e._endId=++oa,i=()=>{r===e._endId&&s()};if(n!=null)return setTimeout(i,n);const{type:o,timeout:l,propCount:c}=la(e,t);if(!o)return s();const f=o+"end";let a=0;const d=()=>{e.removeEventListener(f,m),i()},m=y=>{y.target===e&&++a>=c&&d()};setTimeout(()=>{a(n[v]||"").split(", "),r=s(`${Qe}Delay`),i=s(`${Qe}Duration`),o=Dr(r,i),l=s(`${$t}Delay`),c=s(`${$t}Duration`),f=Dr(l,c);let a=null,d=0,m=0;t===Qe?o>0&&(a=Qe,d=o,m=i.length):t===$t?f>0&&(a=$t,d=f,m=c.length):(d=Math.max(o,f),a=d>0?o>f?Qe:$t:null,m=a?a===Qe?i.length:c.length:0);const y=a===Qe&&/\b(transform|all)(,|$)/.test(s(`${Qe}Property`).toString());return{type:a,timeout:d,propCount:m,hasTransform:y}}function Dr(e,t){for(;e.length$r(n)+$r(e[s])))}function $r(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function jr(){return document.body.offsetHeight}function ca(e,t,n){const s=e[en];s&&(t=(t?[t,...s]:[...s]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const Vr=Symbol("_vod"),aa=Symbol("_vsh"),fa=Symbol(""),ua=/(^|;)\s*display\s*:/;function da(e,t,n){const s=e.style,r=oe(n);let i=!1;if(n&&!r){if(t)if(oe(t))for(const o of t.split(";")){const l=o.slice(0,o.indexOf(":")).trim();n[l]==null&&Cn(s,l,"")}else for(const o in t)n[o]==null&&Cn(s,o,"");for(const o in n)o==="display"&&(i=!0),Cn(s,o,n[o])}else if(r){if(t!==n){const o=s[fa];o&&(n+=";"+o),s.cssText=n,i=ua.test(n)}}else t&&e.removeAttribute("style");Vr in e&&(e[Vr]=i?s.display:"",e[aa]&&(s.display="none"))}const kr=/\s*!important$/;function Cn(e,t,n){if(K(n))n.forEach(s=>Cn(e,t,s));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const s=ha(e,t);kr.test(n)?e.setProperty(it(s),n.replace(kr,""),"important"):e[s]=n}}const Ur=["Webkit","Moz","ms"],as={};function ha(e,t){const n=as[t];if(n)return n;let s=Ne(t);if(s!=="filter"&&s in e)return as[t]=s;s=Dn(s);for(let r=0;rfs||(ya.then(()=>fs=0),fs=Date.now());function _a(e,t){const n=s=>{if(!s._vts)s._vts=Date.now();else if(s._vts<=n.attached)return;De(va(s,n.value),t,5,[s])};return n.value=e,n.attached=ba(),n}function va(e,t){if(K(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(s=>r=>!r._stopped&&s&&s(r))}else return t}const Xr=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,wa=(e,t,n,s,r,i)=>{const o=r==="svg";t==="class"?ca(e,s,o):t==="style"?da(e,n,s):tn(t)?js(t)||ga(e,t,n,s,i):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):Sa(e,t,s,o))?(Kr(e,t,s),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&Wr(e,t,s,o,i,t!=="value")):e._isVueCE&&(/[A-Z]/.test(t)||!oe(s))?Kr(e,Ne(t),s,i,t):(t==="true-value"?e._trueValue=s:t==="false-value"&&(e._falseValue=s),Wr(e,t,s,o))};function Sa(e,t,n,s){if(s)return!!(t==="innerHTML"||t==="textContent"||t in e&&Xr(t)&&q(n));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const r=e.tagName;if(r==="IMG"||r==="VIDEO"||r==="CANVAS"||r==="SOURCE")return!1}return Xr(t)&&oe(n)?!1:t in e}const Yr=e=>{const t=e.props["onUpdate:modelValue"]||!1;return K(t)?n=>Sn(t,n):t};function Ta(e){e.target.composing=!0}function zr(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const us=Symbol("_assign"),Kf={created(e,{modifiers:{lazy:t,trim:n,number:s}},r){e[us]=Yr(r);const i=s||r.props&&r.props.type==="number";Ct(e,t?"change":"input",o=>{if(o.target.composing)return;let l=e.value;n&&(l=l.trim()),i&&(l=Ss(l)),e[us](l)}),n&&Ct(e,"change",()=>{e.value=e.value.trim()}),t||(Ct(e,"compositionstart",Ta),Ct(e,"compositionend",zr),Ct(e,"change",zr))},mounted(e,{value:t}){e.value=t??""},beforeUpdate(e,{value:t,oldValue:n,modifiers:{lazy:s,trim:r,number:i}},o){if(e[us]=Yr(o),e.composing)return;const l=(i||e.type==="number")&&!/^0\d/.test(e.value)?Ss(e.value):e.value,c=t??"";l!==c&&(document.activeElement===e&&e.type!=="range"&&(s&&t===n||r&&e.value.trim()===c)||(e.value=c))}},Ea=["ctrl","shift","alt","meta"],xa={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>Ea.some(n=>e[`${n}Key`]&&!t.includes(n))},qf=(e,t)=>{const n=e._withMods||(e._withMods={}),s=t.join(".");return n[s]||(n[s]=(r,...i)=>{for(let o=0;o{const n=e._withKeys||(e._withKeys={}),s=t.join(".");return n[s]||(n[s]=r=>{if(!("key"in r))return;const i=it(r.key);if(t.some(o=>o===i||Ca[o]===i))return e(r)})},Mo=pe({patchProp:wa},ta);let qt,Jr=!1;function Aa(){return qt||(qt=Mc(Mo))}function Ra(){return qt=Jr?qt:Oc(Mo),Jr=!0,qt}const Xf=(...e)=>{const t=Aa().createApp(...e),{mount:n}=t;return t.mount=s=>{const r=Po(s);if(!r)return;const i=t._component;!q(i)&&!i.render&&!i.template&&(i.template=r.innerHTML),r.nodeType===1&&(r.textContent="");const o=n(r,!1,Oo(r));return r instanceof Element&&(r.removeAttribute("v-cloak"),r.setAttribute("data-v-app","")),o},t},Yf=(...e)=>{const t=Ra().createApp(...e),{mount:n}=t;return t.mount=s=>{const r=Po(s);if(r)return n(r,!0,Oo(r))},t};function Oo(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function Po(e){return oe(e)?document.querySelector(e):e}const Ma=window.__VP_SITE_DATA__;function Lo(e){return mi()?(ul(e),!0):!1}const ds=new WeakMap,Oa=(...e)=>{var t;const n=e[0],s=(t=on())==null?void 0:t.proxy;if(s==null&&!to())throw new Error("injectLocal must be called in setup");return s&&ds.has(s)&&n in ds.get(s)?ds.get(s)[n]:bt(...e)},Io=typeof window<"u"&&typeof document<"u";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;const zf=e=>e!=null,Pa=Object.prototype.toString,La=e=>Pa.call(e)==="[object Object]",rt=()=>{},Qr=Ia();function Ia(){var e,t;return Io&&((e=window==null?void 0:window.navigator)==null?void 0:e.userAgent)&&(/iP(?:ad|hone|od)/.test(window.navigator.userAgent)||((t=window==null?void 0:window.navigator)==null?void 0:t.maxTouchPoints)>2&&/iPad|Macintosh/.test(window==null?void 0:window.navigator.userAgent))}function rr(e,t){function n(...s){return new Promise((r,i)=>{Promise.resolve(e(()=>t.apply(this,s),{fn:t,thisArg:this,args:s})).then(r).catch(i)})}return n}const No=e=>e();function Fo(e,t={}){let n,s,r=rt;const i=c=>{clearTimeout(c),r(),r=rt};let o;return c=>{const f=ce(e),a=ce(t.maxWait);return n&&i(n),f<=0||a!==void 0&&a<=0?(s&&(i(s),s=null),Promise.resolve(c())):new Promise((d,m)=>{r=t.rejectOnCancel?m:d,o=c,a&&!s&&(s=setTimeout(()=>{n&&i(n),s=null,d(o())},a)),n=setTimeout(()=>{s&&i(s),s=null,d(c())},f)})}}function Na(...e){let t=0,n,s=!0,r=rt,i,o,l,c,f;!ue(e[0])&&typeof e[0]=="object"?{delay:o,trailing:l=!0,leading:c=!0,rejectOnCancel:f=!1}=e[0]:[o,l=!0,c=!0,f=!1]=e;const a=()=>{n&&(clearTimeout(n),n=void 0,r(),r=rt)};return m=>{const y=ce(o),v=Date.now()-t,_=()=>i=m();return a(),y<=0?(t=Date.now(),_()):(v>y&&(c||!s)?(t=Date.now(),_()):l&&(i=new Promise((k,P)=>{r=f?P:k,n=setTimeout(()=>{t=Date.now(),s=!0,k(_()),a()},Math.max(0,y-v))})),!c&&!n&&(n=setTimeout(()=>s=!0,y)),s=!1,i)}}function Fa(e=No){const t=le(!0);function n(){t.value=!1}function s(){t.value=!0}const r=(...i)=>{t.value&&e(...i)};return{isActive:kn(t),pause:n,resume:s,eventFilter:r}}function Zr(e){return e.endsWith("rem")?Number.parseFloat(e)*16:Number.parseFloat(e)}function Ha(e){return on()}function hs(e){return Array.isArray(e)?e:[e]}function Ho(...e){if(e.length!==1)return $l(...e);const t=e[0];return typeof t=="function"?kn(Fl(()=>({get:t,set:rt}))):le(t)}function Da(e,t=200,n={}){return rr(Fo(t,n),e)}function $a(e,t=200,n=!1,s=!0,r=!1){return rr(Na(t,n,s,r),e)}function Do(e,t,n={}){const{eventFilter:s=No,...r}=n;return Ie(e,rr(s,t),r)}function ja(e,t,n={}){const{eventFilter:s,...r}=n,{eventFilter:i,pause:o,resume:l,isActive:c}=Fa(s);return{stop:Do(e,t,{...r,eventFilter:i}),pause:o,resume:l,isActive:c}}function Yn(e,t=!0,n){Ha()?Nt(e,n):t?e():Bn(e)}function Jf(e,t,n={}){const{debounce:s=0,maxWait:r=void 0,...i}=n;return Do(e,t,{...i,eventFilter:Fo(s,{maxWait:r})})}function Va(e,t,n){return Ie(e,t,{...n,immediate:!0})}function Qf(e,t,n){let s;ue(n)?s={evaluating:n}:s={};const{lazy:r=!1,evaluating:i=void 0,shallow:o=!0,onError:l=rt}=s,c=le(!r),f=o?Un(t):le(t);let a=0;return nr(async d=>{if(!c.value)return;a++;const m=a;let y=!1;i&&Promise.resolve().then(()=>{i.value=!0});try{const v=await e(_=>{d(()=>{i&&(i.value=!1),y||_()})});m===a&&(f.value=v)}catch(v){l(v)}finally{i&&m===a&&(i.value=!1),y=!0}}),r?re(()=>(c.value=!0,f.value)):f}const $e=Io?window:void 0;function ir(e){var t;const n=ce(e);return(t=n==null?void 0:n.$el)!=null?t:n}function Ye(...e){const t=[],n=()=>{t.forEach(l=>l()),t.length=0},s=(l,c,f,a)=>(l.addEventListener(c,f,a),()=>l.removeEventListener(c,f,a)),r=re(()=>{const l=hs(ce(e[0])).filter(c=>c!=null);return l.every(c=>typeof c!="string")?l:void 0}),i=Va(()=>{var l,c;return[(c=(l=r.value)==null?void 0:l.map(f=>ir(f)))!=null?c:[$e].filter(f=>f!=null),hs(ce(r.value?e[1]:e[0])),hs(zs(r.value?e[2]:e[1])),ce(r.value?e[3]:e[2])]},([l,c,f,a])=>{if(n(),!(l!=null&&l.length)||!(c!=null&&c.length)||!(f!=null&&f.length))return;const d=La(a)?{...a}:a;t.push(...l.flatMap(m=>c.flatMap(y=>f.map(v=>s(m,y,v,d)))))},{flush:"post"}),o=()=>{i(),n()};return Lo(n),o}function ka(){const e=le(!1),t=on();return t&&Nt(()=>{e.value=!0},t),e}function Ua(e){const t=ka();return re(()=>(t.value,!!e()))}function Ba(e){return typeof e=="function"?e:typeof e=="string"?t=>t.key===e:Array.isArray(e)?t=>e.includes(t.key):()=>!0}function Zf(...e){let t,n,s={};e.length===3?(t=e[0],n=e[1],s=e[2]):e.length===2?typeof e[1]=="object"?(t=!0,n=e[0],s=e[1]):(t=e[0],n=e[1]):(t=!0,n=e[0]);const{target:r=$e,eventName:i="keydown",passive:o=!1,dedupe:l=!1}=s,c=Ba(t);return Ye(r,i,a=>{a.repeat&&ce(l)||c(a)&&n(a)},o)}const Wa=Symbol("vueuse-ssr-width");function Ka(){const e=to()?Oa(Wa,null):null;return typeof e=="number"?e:void 0}function $o(e,t={}){const{window:n=$e,ssrWidth:s=Ka()}=t,r=Ua(()=>n&&"matchMedia"in n&&typeof n.matchMedia=="function"),i=le(typeof s=="number"),o=Un(),l=le(!1),c=f=>{l.value=f.matches};return nr(()=>{if(i.value){i.value=!r.value;const f=ce(e).split(",");l.value=f.some(a=>{const d=a.includes("not all"),m=a.match(/\(\s*min-width:\s*(-?\d+(?:\.\d*)?[a-z]+\s*)\)/),y=a.match(/\(\s*max-width:\s*(-?\d+(?:\.\d*)?[a-z]+\s*)\)/);let v=!!(m||y);return m&&v&&(v=s>=Zr(m[1])),y&&v&&(v=s<=Zr(y[1])),d?!v:v});return}r.value&&(o.value=n.matchMedia(ce(e)),l.value=o.value.matches)}),Ye(o,"change",c,{passive:!0}),re(()=>l.value)}const yn=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},bn="__vueuse_ssr_handlers__",qa=Ga();function Ga(){return bn in yn||(yn[bn]=yn[bn]||{}),yn[bn]}function jo(e,t){return qa[e]||t}function Vo(e){return $o("(prefers-color-scheme: dark)",e)}function Xa(e){return e==null?"any":e instanceof Set?"set":e instanceof Map?"map":e instanceof Date?"date":typeof e=="boolean"?"boolean":typeof e=="string"?"string":typeof e=="object"?"object":Number.isNaN(e)?"any":"number"}const Ya={boolean:{read:e=>e==="true",write:e=>String(e)},object:{read:e=>JSON.parse(e),write:e=>JSON.stringify(e)},number:{read:e=>Number.parseFloat(e),write:e=>String(e)},any:{read:e=>e,write:e=>String(e)},string:{read:e=>e,write:e=>String(e)},map:{read:e=>new Map(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e.entries()))},set:{read:e=>new Set(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e))},date:{read:e=>new Date(e),write:e=>e.toISOString()}},ei="vueuse-storage";function or(e,t,n,s={}){var r;const{flush:i="pre",deep:o=!0,listenToStorageChanges:l=!0,writeDefaults:c=!0,mergeDefaults:f=!1,shallow:a,window:d=$e,eventFilter:m,onError:y=A=>{console.error(A)},initOnMounted:v}=s,_=(a?Un:le)(typeof t=="function"?t():t),k=re(()=>ce(e));if(!n)try{n=jo("getDefaultStorage",()=>{var A;return(A=$e)==null?void 0:A.localStorage})()}catch(A){y(A)}if(!n)return _;const P=ce(t),D=Xa(P),p=(r=s.serializer)!=null?r:Ya[D],{pause:g,resume:O}=ja(_,()=>R(_.value),{flush:i,deep:o,eventFilter:m});Ie(k,()=>T(),{flush:i}),d&&l&&Yn(()=>{n instanceof Storage?Ye(d,"storage",T,{passive:!0}):Ye(d,ei,M),v&&T()}),v||T();function $(A,w){if(d){const F={key:k.value,oldValue:A,newValue:w,storageArea:n};d.dispatchEvent(n instanceof Storage?new StorageEvent("storage",F):new CustomEvent(ei,{detail:F}))}}function R(A){try{const w=n.getItem(k.value);if(A==null)$(w,null),n.removeItem(k.value);else{const F=p.write(A);w!==F&&(n.setItem(k.value,F),$(w,F))}}catch(w){y(w)}}function j(A){const w=A?A.newValue:n.getItem(k.value);if(w==null)return c&&P!=null&&n.setItem(k.value,p.write(P)),P;if(!A&&f){const F=p.read(w);return typeof f=="function"?f(F,P):D==="object"&&!Array.isArray(F)?{...P,...F}:F}else return typeof w!="string"?w:p.read(w)}function T(A){if(!(A&&A.storageArea!==n)){if(A&&A.key==null){_.value=P;return}if(!(A&&A.key!==k.value)){g();try{(A==null?void 0:A.newValue)!==p.write(_.value)&&(_.value=j(A))}catch(w){y(w)}finally{A?Bn(O):O()}}}}function M(A){T(A.detail)}return _}const za="*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}";function Ja(e={}){const{selector:t="html",attribute:n="class",initialValue:s="auto",window:r=$e,storage:i,storageKey:o="vueuse-color-scheme",listenToStorageChanges:l=!0,storageRef:c,emitAuto:f,disableTransition:a=!0}=e,d={auto:"",light:"light",dark:"dark",...e.modes||{}},m=Vo({window:r}),y=re(()=>m.value?"dark":"light"),v=c||(o==null?Ho(s):or(o,s,i,{window:r,listenToStorageChanges:l})),_=re(()=>v.value==="auto"?y.value:v.value),k=jo("updateHTMLAttrs",(g,O,$)=>{const R=typeof g=="string"?r==null?void 0:r.document.querySelector(g):ir(g);if(!R)return;const j=new Set,T=new Set;let M=null;if(O==="class"){const w=$.split(/\s/g);Object.values(d).flatMap(F=>(F||"").split(/\s/g)).filter(Boolean).forEach(F=>{w.includes(F)?j.add(F):T.add(F)})}else M={key:O,value:$};if(j.size===0&&T.size===0&&M===null)return;let A;a&&(A=r.document.createElement("style"),A.appendChild(document.createTextNode(za)),r.document.head.appendChild(A));for(const w of j)R.classList.add(w);for(const w of T)R.classList.remove(w);M&&R.setAttribute(M.key,M.value),a&&(r.getComputedStyle(A).opacity,document.head.removeChild(A))});function P(g){var O;k(t,n,(O=d[g])!=null?O:g)}function D(g){e.onChanged?e.onChanged(g,P):P(g)}Ie(_,D,{flush:"post",immediate:!0}),Yn(()=>D(_.value));const p=re({get(){return f?v.value:_.value},set(g){v.value=g}});return Object.assign(p,{store:v,system:y,state:_})}function Qa(e={}){const{valueDark:t="dark",valueLight:n=""}=e,s=Ja({...e,onChanged:(o,l)=>{var c;e.onChanged?(c=e.onChanged)==null||c.call(e,o==="dark",l,o):l(o)},modes:{dark:t,light:n}}),r=re(()=>s.system.value);return re({get(){return s.value==="dark"},set(o){const l=o?"dark":"light";r.value===l?s.value="auto":s.value=l}})}function ps(e){return typeof Window<"u"&&e instanceof Window?e.document.documentElement:typeof Document<"u"&&e instanceof Document?e.documentElement:e}const ti=1;function Za(e,t={}){const{throttle:n=0,idle:s=200,onStop:r=rt,onScroll:i=rt,offset:o={left:0,right:0,top:0,bottom:0},eventListenerOptions:l={capture:!1,passive:!0},behavior:c="auto",window:f=$e,onError:a=R=>{console.error(R)}}=t,d=le(0),m=le(0),y=re({get(){return d.value},set(R){_(R,void 0)}}),v=re({get(){return m.value},set(R){_(void 0,R)}});function _(R,j){var T,M,A,w;if(!f)return;const F=ce(e);if(!F)return;(A=F instanceof Document?f.document.body:F)==null||A.scrollTo({top:(T=ce(j))!=null?T:v.value,left:(M=ce(R))!=null?M:y.value,behavior:ce(c)});const Y=((w=F==null?void 0:F.document)==null?void 0:w.documentElement)||(F==null?void 0:F.documentElement)||F;y!=null&&(d.value=Y.scrollLeft),v!=null&&(m.value=Y.scrollTop)}const k=le(!1),P=Lt({left:!0,right:!1,top:!0,bottom:!1}),D=Lt({left:!1,right:!1,top:!1,bottom:!1}),p=R=>{k.value&&(k.value=!1,D.left=!1,D.right=!1,D.top=!1,D.bottom=!1,r(R))},g=Da(p,n+s),O=R=>{var j;if(!f)return;const T=((j=R==null?void 0:R.document)==null?void 0:j.documentElement)||(R==null?void 0:R.documentElement)||ir(R),{display:M,flexDirection:A,direction:w}=getComputedStyle(T),F=w==="rtl"?-1:1,Y=T.scrollLeft;D.left=Yd.value;const ie=Y*F<=(o.left||0),U=Y*F+T.clientWidth>=T.scrollWidth-(o.right||0)-ti;M==="flex"&&A==="row-reverse"?(P.left=U,P.right=ie):(P.left=ie,P.right=U),d.value=Y;let X=T.scrollTop;R===f.document&&!X&&(X=f.document.body.scrollTop),D.top=Xm.value;const V=X<=(o.top||0),fe=X+T.clientHeight>=T.scrollHeight-(o.bottom||0)-ti;M==="flex"&&A==="column-reverse"?(P.top=fe,P.bottom=V):(P.top=V,P.bottom=fe),m.value=X},$=R=>{var j;if(!f)return;const T=(j=R.target.documentElement)!=null?j:R.target;O(T),k.value=!0,g(R),i(R)};return Ye(e,"scroll",n?$a($,n,!0,!1):$,l),Yn(()=>{try{const R=ce(e);if(!R)return;O(R)}catch(R){a(R)}}),Ye(e,"scrollend",p,l),{x:y,y:v,isScrolling:k,arrivedState:P,directions:D,measure(){const R=ce(e);f&&R&&O(R)}}}function eu(e,t,n={}){const{window:s=$e}=n;return or(e,t,s==null?void 0:s.localStorage,n)}function ko(e){const t=window.getComputedStyle(e);if(t.overflowX==="scroll"||t.overflowY==="scroll"||t.overflowX==="auto"&&e.clientWidth1?!0:(t.preventDefault&&t.preventDefault(),!1)}const gs=new WeakMap;function tu(e,t=!1){const n=le(t);let s=null,r="";Ie(Ho(e),l=>{const c=ps(ce(l));if(c){const f=c;if(gs.get(f)||gs.set(f,f.style.overflow),f.style.overflow!=="hidden"&&(r=f.style.overflow),f.style.overflow==="hidden")return n.value=!0;if(n.value)return f.style.overflow="hidden"}},{immediate:!0});const i=()=>{const l=ps(ce(e));!l||n.value||(Qr&&(s=Ye(l,"touchmove",c=>{ef(c)},{passive:!1})),l.style.overflow="hidden",n.value=!0)},o=()=>{const l=ps(ce(e));!l||!n.value||(Qr&&(s==null||s()),l.style.overflow=r,gs.delete(l),n.value=!1)};return Lo(o),re({get(){return n.value},set(l){l?i():o()}})}function nu(e,t,n={}){const{window:s=$e}=n;return or(e,t,s==null?void 0:s.sessionStorage,n)}function su(e={}){const{window:t=$e,...n}=e;return Za(t,n)}function ru(e={}){const{window:t=$e,initialWidth:n=Number.POSITIVE_INFINITY,initialHeight:s=Number.POSITIVE_INFINITY,listenOrientation:r=!0,includeScrollbar:i=!0,type:o="inner"}=e,l=le(n),c=le(s),f=()=>{if(t)if(o==="outer")l.value=t.outerWidth,c.value=t.outerHeight;else if(o==="visual"&&t.visualViewport){const{width:d,height:m,scale:y}=t.visualViewport;l.value=Math.round(d*y),c.value=Math.round(m*y)}else i?(l.value=t.innerWidth,c.value=t.innerHeight):(l.value=t.document.documentElement.clientWidth,c.value=t.document.documentElement.clientHeight)};f(),Yn(f);const a={passive:!0};if(Ye("resize",f,a),t&&o==="visual"&&t.visualViewport&&Ye(t.visualViewport,"resize",f,a),r){const d=$o("(orientation: portrait)");Ie(d,()=>f())}return{width:l,height:c}}const ms={BASE_URL:"/Boltz.jl/previews/PR98/",DEV:!1,MODE:"production",PROD:!0,SSR:!1};var ys={};const Uo=/^(?:[a-z]+:|\/\/)/i,tf="vitepress-theme-appearance",nf=/#.*$/,sf=/[?#].*$/,rf=/(?:(^|\/)index)?\.(?:md|html)$/,me=typeof document<"u",Bo={relativePath:"404.md",filePath:"",title:"404",description:"Not Found",headers:[],frontmatter:{sidebar:!1,layout:"page"},lastUpdated:0,isNotFound:!0};function of(e,t,n=!1){if(t===void 0)return!1;if(e=ni(`/${e}`),n)return new RegExp(t).test(e);if(ni(t)!==e)return!1;const s=t.match(nf);return s?(me?location.hash:"")===s[0]:!0}function ni(e){return decodeURI(e).replace(sf,"").replace(rf,"$1")}function lf(e){return Uo.test(e)}function cf(e,t){return Object.keys((e==null?void 0:e.locales)||{}).find(n=>n!=="root"&&!lf(n)&&of(t,`/${n}/`,!0))||"root"}function af(e,t){var s,r,i,o,l,c,f;const n=cf(e,t);return Object.assign({},e,{localeIndex:n,lang:((s=e.locales[n])==null?void 0:s.lang)??e.lang,dir:((r=e.locales[n])==null?void 0:r.dir)??e.dir,title:((i=e.locales[n])==null?void 0:i.title)??e.title,titleTemplate:((o=e.locales[n])==null?void 0:o.titleTemplate)??e.titleTemplate,description:((l=e.locales[n])==null?void 0:l.description)??e.description,head:Ko(e.head,((c=e.locales[n])==null?void 0:c.head)??[]),themeConfig:{...e.themeConfig,...(f=e.locales[n])==null?void 0:f.themeConfig}})}function Wo(e,t){const n=t.title||e.title,s=t.titleTemplate??e.titleTemplate;if(typeof s=="string"&&s.includes(":title"))return s.replace(/:title/g,n);const r=ff(e.title,s);return n===r.slice(3)?n:`${n}${r}`}function ff(e,t){return t===!1?"":t===!0||t===void 0?` | ${e}`:e===t?"":` | ${t}`}function uf(e,t){const[n,s]=t;if(n!=="meta")return!1;const r=Object.entries(s)[0];return r==null?!1:e.some(([i,o])=>i===n&&o[r[0]]===r[1])}function Ko(e,t){return[...e.filter(n=>!uf(t,n)),...t]}const df=/[\u0000-\u001F"#$&*+,:;<=>?[\]^`{|}\u007F]/g,hf=/^[a-z]:/i;function si(e){const t=hf.exec(e),n=t?t[0]:"";return n+e.slice(n.length).replace(df,"_").replace(/(^|\/)_+(?=[^/]*$)/,"$1")}const bs=new Set;function pf(e){if(bs.size===0){const n=typeof process=="object"&&(ys==null?void 0:ys.VITE_EXTRA_EXTENSIONS)||(ms==null?void 0:ms.VITE_EXTRA_EXTENSIONS)||"";("3g2,3gp,aac,ai,apng,au,avif,bin,bmp,cer,class,conf,crl,css,csv,dll,doc,eps,epub,exe,gif,gz,ics,ief,jar,jpe,jpeg,jpg,js,json,jsonld,m4a,man,mid,midi,mjs,mov,mp2,mp3,mp4,mpe,mpeg,mpg,mpp,oga,ogg,ogv,ogx,opus,otf,p10,p7c,p7m,p7s,pdf,png,ps,qt,roff,rtf,rtx,ser,svg,t,tif,tiff,tr,ts,tsv,ttf,txt,vtt,wav,weba,webm,webp,woff,woff2,xhtml,xml,yaml,yml,zip"+(n&&typeof n=="string"?","+n:"")).split(",").forEach(s=>bs.add(s))}const t=e.split(".").pop();return t==null||!bs.has(t.toLowerCase())}function iu(e){return e.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&").replace(/-/g,"\\x2d")}const gf=Symbol(),vt=Un(Ma);function ou(e){const t=re(()=>af(vt.value,e.data.relativePath)),n=t.value.appearance,s=n==="force-dark"?le(!0):n==="force-auto"?Vo():n?Qa({storageKey:tf,initialValue:()=>n==="dark"?"dark":"auto",...typeof n=="object"?n:{}}):le(!1),r=le(me?location.hash:"");return me&&window.addEventListener("hashchange",()=>{r.value=location.hash}),Ie(()=>e.data,()=>{r.value=me?location.hash:""}),{site:t,theme:re(()=>t.value.themeConfig),page:re(()=>e.data),frontmatter:re(()=>e.data.frontmatter),params:re(()=>e.data.params),lang:re(()=>t.value.lang),dir:re(()=>e.data.frontmatter.dir||t.value.dir),localeIndex:re(()=>t.value.localeIndex||"root"),title:re(()=>Wo(t.value,e.data)),description:re(()=>e.data.description||t.value.description),isDark:s,hash:re(()=>r.value)}}function mf(){const e=bt(gf);if(!e)throw new Error("vitepress data not properly injected in app");return e}function yf(e,t){return`${e}${t}`.replace(/\/+/g,"/")}function ri(e){return Uo.test(e)||!e.startsWith("/")?e:yf(vt.value.base,e)}function bf(e){let t=e.replace(/\.html$/,"");if(t=decodeURIComponent(t),t=t.replace(/\/$/,"/index"),me){const n="/Boltz.jl/previews/PR98/";t=si(t.slice(n.length).replace(/\//g,"_")||"index")+".md";let s=__VP_HASH_MAP__[t.toLowerCase()];if(s||(t=t.endsWith("_index.md")?t.slice(0,-9)+".md":t.slice(0,-3)+"_index.md",s=__VP_HASH_MAP__[t.toLowerCase()]),!s)return null;t=`${n}assets/${t}.${s}.js`}else t=`./${si(t.slice(1).replace(/\//g,"_"))}.md.js`;return t}let An=[];function lu(e){An.push(e),Kn(()=>{An=An.filter(t=>t!==e)})}function _f(){let e=vt.value.scrollOffset,t=0,n=24;if(typeof e=="object"&&"padding"in e&&(n=e.padding,e=e.selector),typeof e=="number")t=e;else if(typeof e=="string")t=ii(e,n);else if(Array.isArray(e))for(const s of e){const r=ii(s,n);if(r){t=r;break}}return t}function ii(e,t){const n=document.querySelector(e);if(!n)return 0;const s=n.getBoundingClientRect().bottom;return s<0?0:s+t}const vf=Symbol(),qo="http://a.com",wf=()=>({path:"/",component:null,data:Bo});function cu(e,t){const n=Lt(wf()),s={route:n,go:r};async function r(l=me?location.href:"/"){var c,f;l=_s(l),await((c=s.onBeforeRouteChange)==null?void 0:c.call(s,l))!==!1&&(me&&l!==_s(location.href)&&(history.replaceState({scrollPosition:window.scrollY},""),history.pushState({},"",l)),await o(l),await((f=s.onAfterRouteChange??s.onAfterRouteChanged)==null?void 0:f(l)))}let i=null;async function o(l,c=0,f=!1){var m,y;if(await((m=s.onBeforePageLoad)==null?void 0:m.call(s,l))===!1)return;const a=new URL(l,qo),d=i=a.pathname;try{let v=await e(d);if(!v)throw new Error(`Page not found: ${d}`);if(i===d){i=null;const{default:_,__pageData:k}=v;if(!_)throw new Error(`Invalid route component: ${_}`);await((y=s.onAfterPageLoad)==null?void 0:y.call(s,l)),n.path=me?d:ri(d),n.component=Tn(_),n.data=Tn(k),me&&Bn(()=>{let P=vt.value.base+k.relativePath.replace(/(?:(^|\/)index)?\.md$/,"$1");if(!vt.value.cleanUrls&&!P.endsWith("/")&&(P+=".html"),P!==a.pathname&&(a.pathname=P,l=P+a.search+a.hash,history.replaceState({},"",l)),a.hash&&!c){let D=null;try{D=document.getElementById(decodeURIComponent(a.hash).slice(1))}catch(p){console.warn(p)}if(D){oi(D,a.hash);return}}window.scrollTo(0,c)})}}catch(v){if(!/fetch|Page not found/.test(v.message)&&!/^\/404(\.html|\/)?$/.test(l)&&console.error(v),!f)try{const _=await fetch(vt.value.base+"hashmap.json");window.__VP_HASH_MAP__=await _.json(),await o(l,c,!0);return}catch{}if(i===d){i=null,n.path=me?d:ri(d),n.component=t?Tn(t):null;const _=me?d.replace(/(^|\/)$/,"$1index").replace(/(\.html)?$/,".md").replace(/^\//,""):"404.md";n.data={...Bo,relativePath:_}}}}return me&&(history.state===null&&history.replaceState({},""),window.addEventListener("click",l=>{if(l.defaultPrevented||!(l.target instanceof Element)||l.target.closest("button")||l.button!==0||l.ctrlKey||l.shiftKey||l.altKey||l.metaKey)return;const c=l.target.closest("a");if(!c||c.closest(".vp-raw")||c.hasAttribute("download")||c.hasAttribute("target"))return;const f=c.getAttribute("href")??(c instanceof SVGAElement?c.getAttribute("xlink:href"):null);if(f==null)return;const{href:a,origin:d,pathname:m,hash:y,search:v}=new URL(f,c.baseURI),_=new URL(location.href);d===_.origin&&pf(m)&&(l.preventDefault(),m===_.pathname&&v===_.search?(y!==_.hash&&(history.pushState({},"",a),window.dispatchEvent(new HashChangeEvent("hashchange",{oldURL:_.href,newURL:a}))),y?oi(c,y,c.classList.contains("header-anchor")):window.scrollTo(0,0)):r(a))},{capture:!0}),window.addEventListener("popstate",async l=>{var f;if(l.state===null)return;const c=_s(location.href);await o(c,l.state&&l.state.scrollPosition||0),await((f=s.onAfterRouteChange??s.onAfterRouteChanged)==null?void 0:f(c))}),window.addEventListener("hashchange",l=>{l.preventDefault()})),s}function Sf(){const e=bt(vf);if(!e)throw new Error("useRouter() is called without provider.");return e}function Go(){return Sf().route}function oi(e,t,n=!1){let s=null;try{s=e.classList.contains("header-anchor")?e:document.getElementById(decodeURIComponent(t).slice(1))}catch(r){console.warn(r)}if(s){let r=function(){!n||Math.abs(o-window.scrollY)>window.innerHeight?window.scrollTo(0,o):window.scrollTo({left:0,top:o,behavior:"smooth"})};const i=parseInt(window.getComputedStyle(s).paddingTop,10),o=window.scrollY+s.getBoundingClientRect().top-_f()+i;requestAnimationFrame(r)}}function _s(e){const t=new URL(e,qo);return t.pathname=t.pathname.replace(/(^|\/)index(\.html)?$/,"$1"),vt.value.cleanUrls?t.pathname=t.pathname.replace(/\.html$/,""):!t.pathname.endsWith("/")&&!t.pathname.endsWith(".html")&&(t.pathname+=".html"),t.pathname+t.search+t.hash}const _n=()=>An.forEach(e=>e()),au=Qs({name:"VitePressContent",props:{as:{type:[Object,String],default:"div"}},setup(e){const t=Go(),{frontmatter:n,site:s}=mf();return Ie(n,_n,{deep:!0,flush:"post"}),()=>Hs(e.as,s.value.contentProps??{style:{position:"relative"}},[t.component?Hs(t.component,{onVnodeMounted:_n,onVnodeUpdated:_n,onVnodeUnmounted:_n}):"404 Page Not Found"])}}),fu=(e,t)=>{const n=e.__vccOpts||e;for(const[s,r]of t)n[s]=r;return n},Tf="modulepreload",Ef=function(e){return"/Boltz.jl/previews/PR98/"+e},li={},uu=function(t,n,s){let r=Promise.resolve();if(n&&n.length>0){document.getElementsByTagName("link");const o=document.querySelector("meta[property=csp-nonce]"),l=(o==null?void 0:o.nonce)||(o==null?void 0:o.getAttribute("nonce"));r=Promise.allSettled(n.map(c=>{if(c=Ef(c),c in li)return;li[c]=!0;const f=c.endsWith(".css"),a=f?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${c}"]${a}`))return;const d=document.createElement("link");if(d.rel=f?"stylesheet":Tf,f||(d.as="script"),d.crossOrigin="",d.href=c,l&&d.setAttribute("nonce",l),document.head.appendChild(d),f)return new Promise((m,y)=>{d.addEventListener("load",m),d.addEventListener("error",()=>y(new Error(`Unable to preload CSS for ${c}`)))})}))}function i(o){const l=new Event("vite:preloadError",{cancelable:!0});if(l.payload=o,window.dispatchEvent(l),!l.defaultPrevented)throw o}return r.then(o=>{for(const l of o||[])l.status==="rejected"&&i(l.reason);return t().catch(i)})},du=Qs({setup(e,{slots:t}){const n=le(!1);return Nt(()=>{n.value=!0}),()=>n.value&&t.default?t.default():null}});function hu(){me&&window.addEventListener("click",e=>{var n;const t=e.target;if(t.matches(".vp-code-group input")){const s=(n=t.parentElement)==null?void 0:n.parentElement;if(!s)return;const r=Array.from(s.querySelectorAll("input")).indexOf(t);if(r<0)return;const i=s.querySelector(".blocks");if(!i)return;const o=Array.from(i.children).find(f=>f.classList.contains("active"));if(!o)return;const l=i.children[r];if(!l||o===l)return;o.classList.remove("active"),l.classList.add("active");const c=s==null?void 0:s.querySelector(`label[for="${t.id}"]`);c==null||c.scrollIntoView({block:"nearest"})}})}function pu(){if(me){const e=new WeakMap;window.addEventListener("click",t=>{var s;const n=t.target;if(n.matches('div[class*="language-"] > button.copy')){const r=n.parentElement,i=(s=n.nextElementSibling)==null?void 0:s.nextElementSibling;if(!r||!i)return;const o=/language-(shellscript|shell|bash|sh|zsh)/.test(r.className),l=[".vp-copy-ignore",".diff.remove"],c=i.cloneNode(!0);c.querySelectorAll(l.join(",")).forEach(a=>a.remove());let f=c.textContent||"";o&&(f=f.replace(/^ *(\$|>) /gm,"").trim()),xf(f).then(()=>{n.classList.add("copied"),clearTimeout(e.get(n));const a=setTimeout(()=>{n.classList.remove("copied"),n.blur(),e.delete(n)},2e3);e.set(n,a)})}})}}async function xf(e){try{return navigator.clipboard.writeText(e)}catch{const t=document.createElement("textarea"),n=document.activeElement;t.value=e,t.setAttribute("readonly",""),t.style.contain="strict",t.style.position="absolute",t.style.left="-9999px",t.style.fontSize="12pt";const s=document.getSelection(),r=s?s.rangeCount>0&&s.getRangeAt(0):null;document.body.appendChild(t),t.select(),t.selectionStart=0,t.selectionEnd=e.length,document.execCommand("copy"),document.body.removeChild(t),r&&(s.removeAllRanges(),s.addRange(r)),n&&n.focus()}}function gu(e,t){let n=!0,s=[];const r=i=>{if(n){n=!1,i.forEach(l=>{const c=vs(l);for(const f of document.head.children)if(f.isEqualNode(c)){s.push(f);return}});return}const o=i.map(vs);s.forEach((l,c)=>{const f=o.findIndex(a=>a==null?void 0:a.isEqualNode(l??null));f!==-1?delete o[f]:(l==null||l.remove(),delete s[c])}),o.forEach(l=>l&&document.head.appendChild(l)),s=[...s,...o].filter(Boolean)};nr(()=>{const i=e.data,o=t.value,l=i&&i.description,c=i&&i.frontmatter.head||[],f=Wo(o,i);f!==document.title&&(document.title=f);const a=l||o.description;let d=document.querySelector("meta[name=description]");d?d.getAttribute("content")!==a&&d.setAttribute("content",a):vs(["meta",{name:"description",content:a}]),r(Ko(o.head,Af(c)))})}function vs([e,t,n]){const s=document.createElement(e);for(const r in t)s.setAttribute(r,t[r]);return n&&(s.innerHTML=n),e==="script"&&t.async==null&&(s.async=!1),s}function Cf(e){return e[0]==="meta"&&e[1]&&e[1].name==="description"}function Af(e){return e.filter(t=>!Cf(t))}const ws=new Set,Xo=()=>document.createElement("link"),Rf=e=>{const t=Xo();t.rel="prefetch",t.href=e,document.head.appendChild(t)},Mf=e=>{const t=new XMLHttpRequest;t.open("GET",e,t.withCredentials=!0),t.send()};let vn;const Of=me&&(vn=Xo())&&vn.relList&&vn.relList.supports&&vn.relList.supports("prefetch")?Rf:Mf;function mu(){if(!me||!window.IntersectionObserver)return;let e;if((e=navigator.connection)&&(e.saveData||/2g/.test(e.effectiveType)))return;const t=window.requestIdleCallback||setTimeout;let n=null;const s=()=>{n&&n.disconnect(),n=new IntersectionObserver(i=>{i.forEach(o=>{if(o.isIntersecting){const l=o.target;n.unobserve(l);const{pathname:c}=l;if(!ws.has(c)){ws.add(c);const f=bf(c);f&&Of(f)}}})}),t(()=>{document.querySelectorAll("#app a").forEach(i=>{const{hostname:o,pathname:l}=new URL(i.href instanceof SVGAnimatedString?i.href.animVal:i.href,i.baseURI),c=l.match(/\.\w+$/);c&&c[0]!==".html"||i.target!=="_blank"&&o===location.hostname&&(l!==location.pathname?n.observe(i):ws.add(l))})})};Nt(s);const r=Go();Ie(()=>r.path,s),Kn(()=>{n&&n.disconnect()})}export{Gi as $,_f as A,Nf as B,Hf as C,Un as D,lu as E,Ee as F,ae as G,Ff as H,Uo as I,Go as J,Bc as K,bt as L,ru as M,Us as N,Zf as O,Bn as P,su as Q,me as R,kn as S,Wf as T,If as U,uu as V,tu as W,Sc as X,Gf as Y,$f as Z,fu as _,To as a,qf as a0,jf as a1,Uf as a2,Lt as a3,$l as a4,Hs as a5,gu as a6,vf as a7,ou as a8,gf as a9,iu as aA,au as aa,du as ab,vt as ac,Yf as ad,cu as ae,bf as af,mu as ag,pu as ah,hu as ai,ce as aj,hs as ak,ir as al,zf as am,Lo as an,Qf as ao,nu as ap,eu as aq,Jf as ar,Sf as as,Ye as at,Pf as au,Kf as av,ue as aw,Lf as ax,Tn as ay,Xf as az,Ns as b,kf as c,Qs as d,Bf as e,pf as f,ri as g,re as h,lf as i,So as j,zs as k,of as l,$o as m,Bs as n,Is as o,le as p,Ie as q,Df as r,nr as s,al as t,mf as u,Nt as v,Gl as w,Kn as x,Vf as y,cc as z}; diff --git a/previews/PR98/assets/chunks/theme.CxjT12tT.js b/previews/PR98/assets/chunks/theme.CxjT12tT.js new file mode 100644 index 0000000..51a918e --- /dev/null +++ b/previews/PR98/assets/chunks/theme.CxjT12tT.js @@ -0,0 +1,2 @@ +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/chunks/VPLocalSearchBox.CHTMbhP1.js","assets/chunks/framework.BI0fNMXE.js"])))=>i.map(i=>d[i]); +import{d as m,o,c,r as u,n as I,a as z,t as w,b as g,w as v,e as h,T as de,_ as $,u as Ge,i as ze,f as Ke,g as fe,h as y,j as p,k as r,l as K,m as re,p as T,q as D,s as Z,v as O,x as pe,y as ve,z as Re,A as We,B as R,F as M,C as H,D as Te,E as x,G as k,H as E,I as Ne,J as ee,K as G,L as q,M as qe,N as we,O as ie,P as he,Q as Ie,R as te,S as Je,U as Ye,V as Xe,W as Me,X as me,Y as Qe,Z as Ze,$ as xe,a0 as et,a1 as Ae,a2 as tt,a3 as nt,a4 as st,a5 as Pe}from"./framework.BI0fNMXE.js";const at=m({__name:"VPBadge",props:{text:{},type:{default:"tip"}},setup(a){return(e,t)=>(o(),c("span",{class:I(["VPBadge",e.type])},[u(e.$slots,"default",{},()=>[z(w(e.text),1)])],2))}}),ot={key:0,class:"VPBackdrop"},rt=m({__name:"VPBackdrop",props:{show:{type:Boolean}},setup(a){return(e,t)=>(o(),g(de,{name:"fade"},{default:v(()=>[e.show?(o(),c("div",ot)):h("",!0)]),_:1}))}}),it=$(rt,[["__scopeId","data-v-b06cdb19"]]),V=Ge;function lt(a,e){let t,s=!1;return()=>{t&&clearTimeout(t),s?t=setTimeout(a,e):(a(),(s=!0)&&setTimeout(()=>s=!1,e))}}function le(a){return a.startsWith("/")?a:`/${a}`}function _e(a){const{pathname:e,search:t,hash:s,protocol:n}=new URL(a,"http://a.com");if(ze(a)||a.startsWith("#")||!n.startsWith("http")||!Ke(e))return a;const{site:i}=V(),l=e.endsWith("/")||e.endsWith(".html")?a:a.replace(/(?:(^\.+)\/)?.*$/,`$1${e.replace(/(\.md)?$/,i.value.cleanUrls?"":".html")}${t}${s}`);return fe(l)}function Y({correspondingLink:a=!1}={}){const{site:e,localeIndex:t,page:s,theme:n,hash:i}=V(),l=y(()=>{var f,b;return{label:(f=e.value.locales[t.value])==null?void 0:f.label,link:((b=e.value.locales[t.value])==null?void 0:b.link)||(t.value==="root"?"/":`/${t.value}/`)}});return{localeLinks:y(()=>Object.entries(e.value.locales).flatMap(([f,b])=>l.value.label===b.label?[]:{text:b.label,link:ut(b.link||(f==="root"?"/":`/${f}/`),n.value.i18nRouting!==!1&&a,s.value.relativePath.slice(l.value.link.length-1),!e.value.cleanUrls)+i.value})),currentLang:l}}function ut(a,e,t,s){return e?a.replace(/\/$/,"")+le(t.replace(/(^|\/)index\.md$/,"$1").replace(/\.md$/,s?".html":"")):a}const ct={class:"NotFound"},dt={class:"code"},ft={class:"title"},pt={class:"quote"},vt={class:"action"},ht=["href","aria-label"],mt=m({__name:"NotFound",setup(a){const{theme:e}=V(),{currentLang:t}=Y();return(s,n)=>{var i,l,d,f,b;return o(),c("div",ct,[p("p",dt,w(((i=r(e).notFound)==null?void 0:i.code)??"404"),1),p("h1",ft,w(((l=r(e).notFound)==null?void 0:l.title)??"PAGE NOT FOUND"),1),n[0]||(n[0]=p("div",{class:"divider"},null,-1)),p("blockquote",pt,w(((d=r(e).notFound)==null?void 0:d.quote)??"But if you don't change your direction, and if you keep looking, you may end up where you are heading."),1),p("div",vt,[p("a",{class:"link",href:r(fe)(r(t).link),"aria-label":((f=r(e).notFound)==null?void 0:f.linkLabel)??"go to home"},w(((b=r(e).notFound)==null?void 0:b.linkText)??"Take me home"),9,ht)])])}}}),_t=$(mt,[["__scopeId","data-v-951cab6c"]]);function Ce(a,e){if(Array.isArray(a))return X(a);if(a==null)return[];e=le(e);const t=Object.keys(a).sort((n,i)=>i.split("/").length-n.split("/").length).find(n=>e.startsWith(le(n))),s=t?a[t]:[];return Array.isArray(s)?X(s):X(s.items,s.base)}function bt(a){const e=[];let t=0;for(const s in a){const n=a[s];if(n.items){t=e.push(n);continue}e[t]||e.push({items:[]}),e[t].items.push(n)}return e}function kt(a){const e=[];function t(s){for(const n of s)n.text&&n.link&&e.push({text:n.text,link:n.link,docFooterText:n.docFooterText}),n.items&&t(n.items)}return t(a),e}function ue(a,e){return Array.isArray(e)?e.some(t=>ue(a,t)):K(a,e.link)?!0:e.items?ue(a,e.items):!1}function X(a,e){return[...a].map(t=>{const s={...t},n=s.base||e;return n&&s.link&&(s.link=n+s.link),s.items&&(s.items=X(s.items,n)),s})}function U(){const{frontmatter:a,page:e,theme:t}=V(),s=re("(min-width: 960px)"),n=T(!1),i=y(()=>{const C=t.value.sidebar,N=e.value.relativePath;return C?Ce(C,N):[]}),l=T(i.value);D(i,(C,N)=>{JSON.stringify(C)!==JSON.stringify(N)&&(l.value=i.value)});const d=y(()=>a.value.sidebar!==!1&&l.value.length>0&&a.value.layout!=="home"),f=y(()=>b?a.value.aside==null?t.value.aside==="left":a.value.aside==="left":!1),b=y(()=>a.value.layout==="home"?!1:a.value.aside!=null?!!a.value.aside:t.value.aside!==!1),L=y(()=>d.value&&s.value),_=y(()=>d.value?bt(l.value):[]);function P(){n.value=!0}function S(){n.value=!1}function A(){n.value?S():P()}return{isOpen:n,sidebar:l,sidebarGroups:_,hasSidebar:d,hasAside:b,leftAside:f,isSidebarEnabled:L,open:P,close:S,toggle:A}}function gt(a,e){let t;Z(()=>{t=a.value?document.activeElement:void 0}),O(()=>{window.addEventListener("keyup",s)}),pe(()=>{window.removeEventListener("keyup",s)});function s(n){n.key==="Escape"&&a.value&&(e(),t==null||t.focus())}}function $t(a){const{page:e,hash:t}=V(),s=T(!1),n=y(()=>a.value.collapsed!=null),i=y(()=>!!a.value.link),l=T(!1),d=()=>{l.value=K(e.value.relativePath,a.value.link)};D([e,a,t],d),O(d);const f=y(()=>l.value?!0:a.value.items?ue(e.value.relativePath,a.value.items):!1),b=y(()=>!!(a.value.items&&a.value.items.length));Z(()=>{s.value=!!(n.value&&a.value.collapsed)}),ve(()=>{(l.value||f.value)&&(s.value=!1)});function L(){n.value&&(s.value=!s.value)}return{collapsed:s,collapsible:n,isLink:i,isActiveLink:l,hasActiveLink:f,hasChildren:b,toggle:L}}function yt(){const{hasSidebar:a}=U(),e=re("(min-width: 960px)"),t=re("(min-width: 1280px)");return{isAsideEnabled:y(()=>!t.value&&!e.value?!1:a.value?t.value:e.value)}}const Pt=/\b(?:VPBadge|header-anchor|footnote-ref|ignore-header)\b/,ce=[];function He(a){return typeof a.outline=="object"&&!Array.isArray(a.outline)&&a.outline.label||a.outlineTitle||"On this page"}function be(a){const e=[...document.querySelectorAll(".VPDoc :where(h1,h2,h3,h4,h5,h6)")].filter(t=>t.id&&t.hasChildNodes()).map(t=>{const s=Number(t.tagName[1]);return{element:t,title:St(t),link:"#"+t.id,level:s}});return Lt(e,a)}function St(a){let e="";for(const t of a.childNodes)if(t.nodeType===1){if(Pt.test(t.className))continue;e+=t.textContent}else t.nodeType===3&&(e+=t.textContent);return e.trim()}function Lt(a,e){if(e===!1)return[];const t=(typeof e=="object"&&!Array.isArray(e)?e.level:e)||2,[s,n]=typeof t=="number"?[t,t]:t==="deep"?[2,6]:t;return Nt(a,s,n)}function Vt(a,e){const{isAsideEnabled:t}=yt(),s=lt(i,100);let n=null;O(()=>{requestAnimationFrame(i),window.addEventListener("scroll",s)}),Re(()=>{l(location.hash)}),pe(()=>{window.removeEventListener("scroll",s)});function i(){if(!t.value)return;const d=window.scrollY,f=window.innerHeight,b=document.body.offsetHeight,L=Math.abs(d+f-b)<1,_=ce.map(({element:S,link:A})=>({link:A,top:Tt(S)})).filter(({top:S})=>!Number.isNaN(S)).sort((S,A)=>S.top-A.top);if(!_.length){l(null);return}if(d<1){l(null);return}if(L){l(_[_.length-1].link);return}let P=null;for(const{link:S,top:A}of _){if(A>d+We()+4)break;P=S}l(P)}function l(d){n&&n.classList.remove("active"),d==null?n=null:n=a.value.querySelector(`a[href="${decodeURIComponent(d)}"]`);const f=n;f?(f.classList.add("active"),e.value.style.top=f.offsetTop+39+"px",e.value.style.opacity="1"):(e.value.style.top="33px",e.value.style.opacity="0")}}function Tt(a){let e=0;for(;a!==document.body;){if(a===null)return NaN;e+=a.offsetTop,a=a.offsetParent}return e}function Nt(a,e,t){ce.length=0;const s=[],n=[];return a.forEach(i=>{const l={...i,children:[]};let d=n[n.length-1];for(;d&&d.level>=l.level;)n.pop(),d=n[n.length-1];if(l.element.classList.contains("ignore-header")||d&&"shouldIgnore"in d){n.push({level:l.level,shouldIgnore:!0});return}l.level>t||l.level{const n=R("VPDocOutlineItem",!0);return o(),c("ul",{class:I(["VPDocOutlineItem",t.root?"root":"nested"])},[(o(!0),c(M,null,H(t.headers,({children:i,link:l,title:d})=>(o(),c("li",null,[p("a",{class:"outline-link",href:l,onClick:e,title:d},w(d),9,wt),i!=null&&i.length?(o(),g(n,{key:0,headers:i},null,8,["headers"])):h("",!0)]))),256))],2)}}}),Be=$(It,[["__scopeId","data-v-3f927ebe"]]),Mt={class:"content"},At={"aria-level":"2",class:"outline-title",id:"doc-outline-aria-label",role:"heading"},Ct=m({__name:"VPDocAsideOutline",setup(a){const{frontmatter:e,theme:t}=V(),s=Te([]);x(()=>{s.value=be(e.value.outline??t.value.outline)});const n=T(),i=T();return Vt(n,i),(l,d)=>(o(),c("nav",{"aria-labelledby":"doc-outline-aria-label",class:I(["VPDocAsideOutline",{"has-outline":s.value.length>0}]),ref_key:"container",ref:n},[p("div",Mt,[p("div",{class:"outline-marker",ref_key:"marker",ref:i},null,512),p("div",At,w(r(He)(r(t))),1),k(Be,{headers:s.value,root:!0},null,8,["headers"])])],2))}}),Ht=$(Ct,[["__scopeId","data-v-b38bf2ff"]]),Bt={class:"VPDocAsideCarbonAds"},Et=m({__name:"VPDocAsideCarbonAds",props:{carbonAds:{}},setup(a){const e=()=>null;return(t,s)=>(o(),c("div",Bt,[k(r(e),{"carbon-ads":t.carbonAds},null,8,["carbon-ads"])]))}}),Ft={class:"VPDocAside"},Dt=m({__name:"VPDocAside",setup(a){const{theme:e}=V();return(t,s)=>(o(),c("div",Ft,[u(t.$slots,"aside-top",{},void 0,!0),u(t.$slots,"aside-outline-before",{},void 0,!0),k(Ht),u(t.$slots,"aside-outline-after",{},void 0,!0),s[0]||(s[0]=p("div",{class:"spacer"},null,-1)),u(t.$slots,"aside-ads-before",{},void 0,!0),r(e).carbonAds?(o(),g(Et,{key:0,"carbon-ads":r(e).carbonAds},null,8,["carbon-ads"])):h("",!0),u(t.$slots,"aside-ads-after",{},void 0,!0),u(t.$slots,"aside-bottom",{},void 0,!0)]))}}),Ot=$(Dt,[["__scopeId","data-v-6d7b3c46"]]);function Ut(){const{theme:a,page:e}=V();return y(()=>{const{text:t="Edit this page",pattern:s=""}=a.value.editLink||{};let n;return typeof s=="function"?n=s(e.value):n=s.replace(/:path/g,e.value.filePath),{url:n,text:t}})}function jt(){const{page:a,theme:e,frontmatter:t}=V();return y(()=>{var b,L,_,P,S,A,C,N;const s=Ce(e.value.sidebar,a.value.relativePath),n=kt(s),i=Gt(n,B=>B.link.replace(/[?#].*$/,"")),l=i.findIndex(B=>K(a.value.relativePath,B.link)),d=((b=e.value.docFooter)==null?void 0:b.prev)===!1&&!t.value.prev||t.value.prev===!1,f=((L=e.value.docFooter)==null?void 0:L.next)===!1&&!t.value.next||t.value.next===!1;return{prev:d?void 0:{text:(typeof t.value.prev=="string"?t.value.prev:typeof t.value.prev=="object"?t.value.prev.text:void 0)??((_=i[l-1])==null?void 0:_.docFooterText)??((P=i[l-1])==null?void 0:P.text),link:(typeof t.value.prev=="object"?t.value.prev.link:void 0)??((S=i[l-1])==null?void 0:S.link)},next:f?void 0:{text:(typeof t.value.next=="string"?t.value.next:typeof t.value.next=="object"?t.value.next.text:void 0)??((A=i[l+1])==null?void 0:A.docFooterText)??((C=i[l+1])==null?void 0:C.text),link:(typeof t.value.next=="object"?t.value.next.link:void 0)??((N=i[l+1])==null?void 0:N.link)}}})}function Gt(a,e){const t=new Set;return a.filter(s=>{const n=e(s);return t.has(n)?!1:t.add(n)})}const F=m({__name:"VPLink",props:{tag:{},href:{},noIcon:{type:Boolean},target:{},rel:{}},setup(a){const e=a,t=y(()=>e.tag??(e.href?"a":"span")),s=y(()=>e.href&&Ne.test(e.href)||e.target==="_blank");return(n,i)=>(o(),g(E(t.value),{class:I(["VPLink",{link:n.href,"vp-external-link-icon":s.value,"no-icon":n.noIcon}]),href:n.href?r(_e)(n.href):void 0,target:n.target??(s.value?"_blank":void 0),rel:n.rel??(s.value?"noreferrer":void 0)},{default:v(()=>[u(n.$slots,"default")]),_:3},8,["class","href","target","rel"]))}}),zt={class:"VPLastUpdated"},Kt=["datetime"],Rt=m({__name:"VPDocFooterLastUpdated",setup(a){const{theme:e,page:t,lang:s}=V(),n=y(()=>new Date(t.value.lastUpdated)),i=y(()=>n.value.toISOString()),l=T("");return O(()=>{Z(()=>{var d,f,b;l.value=new Intl.DateTimeFormat((f=(d=e.value.lastUpdated)==null?void 0:d.formatOptions)!=null&&f.forceLocale?s.value:void 0,((b=e.value.lastUpdated)==null?void 0:b.formatOptions)??{dateStyle:"short",timeStyle:"short"}).format(n.value)})}),(d,f)=>{var b;return o(),c("p",zt,[z(w(((b=r(e).lastUpdated)==null?void 0:b.text)||r(e).lastUpdatedText||"Last updated")+": ",1),p("time",{datetime:i.value},w(l.value),9,Kt)])}}}),Wt=$(Rt,[["__scopeId","data-v-475f71b8"]]),qt={key:0,class:"VPDocFooter"},Jt={key:0,class:"edit-info"},Yt={key:0,class:"edit-link"},Xt={key:1,class:"last-updated"},Qt={key:1,class:"prev-next","aria-labelledby":"doc-footer-aria-label"},Zt={class:"pager"},xt=["innerHTML"],en=["innerHTML"],tn={class:"pager"},nn=["innerHTML"],sn=["innerHTML"],an=m({__name:"VPDocFooter",setup(a){const{theme:e,page:t,frontmatter:s}=V(),n=Ut(),i=jt(),l=y(()=>e.value.editLink&&s.value.editLink!==!1),d=y(()=>t.value.lastUpdated),f=y(()=>l.value||d.value||i.value.prev||i.value.next);return(b,L)=>{var _,P,S,A;return f.value?(o(),c("footer",qt,[u(b.$slots,"doc-footer-before",{},void 0,!0),l.value||d.value?(o(),c("div",Jt,[l.value?(o(),c("div",Yt,[k(F,{class:"edit-link-button",href:r(n).url,"no-icon":!0},{default:v(()=>[L[0]||(L[0]=p("span",{class:"vpi-square-pen edit-link-icon"},null,-1)),z(" "+w(r(n).text),1)]),_:1},8,["href"])])):h("",!0),d.value?(o(),c("div",Xt,[k(Wt)])):h("",!0)])):h("",!0),(_=r(i).prev)!=null&&_.link||(P=r(i).next)!=null&&P.link?(o(),c("nav",Qt,[L[1]||(L[1]=p("span",{class:"visually-hidden",id:"doc-footer-aria-label"},"Pager",-1)),p("div",Zt,[(S=r(i).prev)!=null&&S.link?(o(),g(F,{key:0,class:"pager-link prev",href:r(i).prev.link},{default:v(()=>{var C;return[p("span",{class:"desc",innerHTML:((C=r(e).docFooter)==null?void 0:C.prev)||"Previous page"},null,8,xt),p("span",{class:"title",innerHTML:r(i).prev.text},null,8,en)]}),_:1},8,["href"])):h("",!0)]),p("div",tn,[(A=r(i).next)!=null&&A.link?(o(),g(F,{key:0,class:"pager-link next",href:r(i).next.link},{default:v(()=>{var C;return[p("span",{class:"desc",innerHTML:((C=r(e).docFooter)==null?void 0:C.next)||"Next page"},null,8,nn),p("span",{class:"title",innerHTML:r(i).next.text},null,8,sn)]}),_:1},8,["href"])):h("",!0)])])):h("",!0)])):h("",!0)}}}),on=$(an,[["__scopeId","data-v-4f9813fa"]]),rn={class:"container"},ln={class:"aside-container"},un={class:"aside-content"},cn={class:"content"},dn={class:"content-container"},fn={class:"main"},pn=m({__name:"VPDoc",setup(a){const{theme:e}=V(),t=ee(),{hasSidebar:s,hasAside:n,leftAside:i}=U(),l=y(()=>t.path.replace(/[./]+/g,"_").replace(/_html$/,""));return(d,f)=>{const b=R("Content");return o(),c("div",{class:I(["VPDoc",{"has-sidebar":r(s),"has-aside":r(n)}])},[u(d.$slots,"doc-top",{},void 0,!0),p("div",rn,[r(n)?(o(),c("div",{key:0,class:I(["aside",{"left-aside":r(i)}])},[f[0]||(f[0]=p("div",{class:"aside-curtain"},null,-1)),p("div",ln,[p("div",un,[k(Ot,null,{"aside-top":v(()=>[u(d.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":v(()=>[u(d.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":v(()=>[u(d.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":v(()=>[u(d.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":v(()=>[u(d.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":v(()=>[u(d.$slots,"aside-ads-after",{},void 0,!0)]),_:3})])])],2)):h("",!0),p("div",cn,[p("div",dn,[u(d.$slots,"doc-before",{},void 0,!0),p("main",fn,[k(b,{class:I(["vp-doc",[l.value,r(e).externalLinkIcon&&"external-link-icon-enabled"]])},null,8,["class"])]),k(on,null,{"doc-footer-before":v(()=>[u(d.$slots,"doc-footer-before",{},void 0,!0)]),_:3}),u(d.$slots,"doc-after",{},void 0,!0)])])]),u(d.$slots,"doc-bottom",{},void 0,!0)],2)}}}),vn=$(pn,[["__scopeId","data-v-83890dd9"]]),hn=m({__name:"VPButton",props:{tag:{},size:{default:"medium"},theme:{default:"brand"},text:{},href:{},target:{},rel:{}},setup(a){const e=a,t=y(()=>e.href&&Ne.test(e.href)),s=y(()=>e.tag||(e.href?"a":"button"));return(n,i)=>(o(),g(E(s.value),{class:I(["VPButton",[n.size,n.theme]]),href:n.href?r(_e)(n.href):void 0,target:e.target??(t.value?"_blank":void 0),rel:e.rel??(t.value?"noreferrer":void 0)},{default:v(()=>[z(w(n.text),1)]),_:1},8,["class","href","target","rel"]))}}),mn=$(hn,[["__scopeId","data-v-906d7fb4"]]),_n=["src","alt"],bn=m({inheritAttrs:!1,__name:"VPImage",props:{image:{},alt:{}},setup(a){return(e,t)=>{const s=R("VPImage",!0);return e.image?(o(),c(M,{key:0},[typeof e.image=="string"||"src"in e.image?(o(),c("img",G({key:0,class:"VPImage"},typeof e.image=="string"?e.$attrs:{...e.image,...e.$attrs},{src:r(fe)(typeof e.image=="string"?e.image:e.image.src),alt:e.alt??(typeof e.image=="string"?"":e.image.alt||"")}),null,16,_n)):(o(),c(M,{key:1},[k(s,G({class:"dark",image:e.image.dark,alt:e.image.alt},e.$attrs),null,16,["image","alt"]),k(s,G({class:"light",image:e.image.light,alt:e.image.alt},e.$attrs),null,16,["image","alt"])],64))],64)):h("",!0)}}}),Q=$(bn,[["__scopeId","data-v-35a7d0b8"]]),kn={class:"container"},gn={class:"main"},$n={class:"heading"},yn=["innerHTML"],Pn=["innerHTML"],Sn=["innerHTML"],Ln={key:0,class:"actions"},Vn={key:0,class:"image"},Tn={class:"image-container"},Nn=m({__name:"VPHero",props:{name:{},text:{},tagline:{},image:{},actions:{}},setup(a){const e=q("hero-image-slot-exists");return(t,s)=>(o(),c("div",{class:I(["VPHero",{"has-image":t.image||r(e)}])},[p("div",kn,[p("div",gn,[u(t.$slots,"home-hero-info-before",{},void 0,!0),u(t.$slots,"home-hero-info",{},()=>[p("h1",$n,[t.name?(o(),c("span",{key:0,innerHTML:t.name,class:"name clip"},null,8,yn)):h("",!0),t.text?(o(),c("span",{key:1,innerHTML:t.text,class:"text"},null,8,Pn)):h("",!0)]),t.tagline?(o(),c("p",{key:0,innerHTML:t.tagline,class:"tagline"},null,8,Sn)):h("",!0)],!0),u(t.$slots,"home-hero-info-after",{},void 0,!0),t.actions?(o(),c("div",Ln,[(o(!0),c(M,null,H(t.actions,n=>(o(),c("div",{key:n.link,class:"action"},[k(mn,{tag:"a",size:"medium",theme:n.theme,text:n.text,href:n.link,target:n.target,rel:n.rel},null,8,["theme","text","href","target","rel"])]))),128))])):h("",!0),u(t.$slots,"home-hero-actions-after",{},void 0,!0)]),t.image||r(e)?(o(),c("div",Vn,[p("div",Tn,[s[0]||(s[0]=p("div",{class:"image-bg"},null,-1)),u(t.$slots,"home-hero-image",{},()=>[t.image?(o(),g(Q,{key:0,class:"image-src",image:t.image},null,8,["image"])):h("",!0)],!0)])])):h("",!0)])],2))}}),wn=$(Nn,[["__scopeId","data-v-3d256e5e"]]),In=m({__name:"VPHomeHero",setup(a){const{frontmatter:e}=V();return(t,s)=>r(e).hero?(o(),g(wn,{key:0,class:"VPHomeHero",name:r(e).hero.name,text:r(e).hero.text,tagline:r(e).hero.tagline,image:r(e).hero.image,actions:r(e).hero.actions},{"home-hero-info-before":v(()=>[u(t.$slots,"home-hero-info-before")]),"home-hero-info":v(()=>[u(t.$slots,"home-hero-info")]),"home-hero-info-after":v(()=>[u(t.$slots,"home-hero-info-after")]),"home-hero-actions-after":v(()=>[u(t.$slots,"home-hero-actions-after")]),"home-hero-image":v(()=>[u(t.$slots,"home-hero-image")]),_:3},8,["name","text","tagline","image","actions"])):h("",!0)}}),Mn={class:"box"},An={key:0,class:"icon"},Cn=["innerHTML"],Hn=["innerHTML"],Bn=["innerHTML"],En={key:4,class:"link-text"},Fn={class:"link-text-value"},Dn=m({__name:"VPFeature",props:{icon:{},title:{},details:{},link:{},linkText:{},rel:{},target:{}},setup(a){return(e,t)=>(o(),g(F,{class:"VPFeature",href:e.link,rel:e.rel,target:e.target,"no-icon":!0,tag:e.link?"a":"div"},{default:v(()=>[p("article",Mn,[typeof e.icon=="object"&&e.icon.wrap?(o(),c("div",An,[k(Q,{image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])])):typeof e.icon=="object"?(o(),g(Q,{key:1,image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])):e.icon?(o(),c("div",{key:2,class:"icon",innerHTML:e.icon},null,8,Cn)):h("",!0),p("h2",{class:"title",innerHTML:e.title},null,8,Hn),e.details?(o(),c("p",{key:3,class:"details",innerHTML:e.details},null,8,Bn)):h("",!0),e.linkText?(o(),c("div",En,[p("p",Fn,[z(w(e.linkText)+" ",1),t[0]||(t[0]=p("span",{class:"vpi-arrow-right link-text-icon"},null,-1))])])):h("",!0)])]),_:1},8,["href","rel","target","tag"]))}}),On=$(Dn,[["__scopeId","data-v-f5e9645b"]]),Un={key:0,class:"VPFeatures"},jn={class:"container"},Gn={class:"items"},zn=m({__name:"VPFeatures",props:{features:{}},setup(a){const e=a,t=y(()=>{const s=e.features.length;if(s){if(s===2)return"grid-2";if(s===3)return"grid-3";if(s%3===0)return"grid-6";if(s>3)return"grid-4"}else return});return(s,n)=>s.features?(o(),c("div",Un,[p("div",jn,[p("div",Gn,[(o(!0),c(M,null,H(s.features,i=>(o(),c("div",{key:i.title,class:I(["item",[t.value]])},[k(On,{icon:i.icon,title:i.title,details:i.details,link:i.link,"link-text":i.linkText,rel:i.rel,target:i.target},null,8,["icon","title","details","link","link-text","rel","target"])],2))),128))])])])):h("",!0)}}),Kn=$(zn,[["__scopeId","data-v-d0a190d7"]]),Rn=m({__name:"VPHomeFeatures",setup(a){const{frontmatter:e}=V();return(t,s)=>r(e).features?(o(),g(Kn,{key:0,class:"VPHomeFeatures",features:r(e).features},null,8,["features"])):h("",!0)}}),Wn=m({__name:"VPHomeContent",setup(a){const{width:e}=qe({initialWidth:0,includeScrollbar:!1});return(t,s)=>(o(),c("div",{class:"vp-doc container",style:we(r(e)?{"--vp-offset":`calc(50% - ${r(e)/2}px)`}:{})},[u(t.$slots,"default",{},void 0,!0)],4))}}),qn=$(Wn,[["__scopeId","data-v-7a48a447"]]),Jn=m({__name:"VPHome",setup(a){const{frontmatter:e,theme:t}=V();return(s,n)=>{const i=R("Content");return o(),c("div",{class:I(["VPHome",{"external-link-icon-enabled":r(t).externalLinkIcon}])},[u(s.$slots,"home-hero-before",{},void 0,!0),k(In,null,{"home-hero-info-before":v(()=>[u(s.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":v(()=>[u(s.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":v(()=>[u(s.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":v(()=>[u(s.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":v(()=>[u(s.$slots,"home-hero-image",{},void 0,!0)]),_:3}),u(s.$slots,"home-hero-after",{},void 0,!0),u(s.$slots,"home-features-before",{},void 0,!0),k(Rn),u(s.$slots,"home-features-after",{},void 0,!0),r(e).markdownStyles!==!1?(o(),g(qn,{key:0},{default:v(()=>[k(i)]),_:1})):(o(),g(i,{key:1}))],2)}}}),Yn=$(Jn,[["__scopeId","data-v-e40e30de"]]),Xn={},Qn={class:"VPPage"};function Zn(a,e){const t=R("Content");return o(),c("div",Qn,[u(a.$slots,"page-top"),k(t),u(a.$slots,"page-bottom")])}const xn=$(Xn,[["render",Zn]]),es=m({__name:"VPContent",setup(a){const{page:e,frontmatter:t}=V(),{hasSidebar:s}=U();return(n,i)=>(o(),c("div",{class:I(["VPContent",{"has-sidebar":r(s),"is-home":r(t).layout==="home"}]),id:"VPContent"},[r(e).isNotFound?u(n.$slots,"not-found",{key:0},()=>[k(_t)],!0):r(t).layout==="page"?(o(),g(xn,{key:1},{"page-top":v(()=>[u(n.$slots,"page-top",{},void 0,!0)]),"page-bottom":v(()=>[u(n.$slots,"page-bottom",{},void 0,!0)]),_:3})):r(t).layout==="home"?(o(),g(Yn,{key:2},{"home-hero-before":v(()=>[u(n.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":v(()=>[u(n.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":v(()=>[u(n.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":v(()=>[u(n.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":v(()=>[u(n.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":v(()=>[u(n.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":v(()=>[u(n.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":v(()=>[u(n.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":v(()=>[u(n.$slots,"home-features-after",{},void 0,!0)]),_:3})):r(t).layout&&r(t).layout!=="doc"?(o(),g(E(r(t).layout),{key:3})):(o(),g(vn,{key:4},{"doc-top":v(()=>[u(n.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":v(()=>[u(n.$slots,"doc-bottom",{},void 0,!0)]),"doc-footer-before":v(()=>[u(n.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":v(()=>[u(n.$slots,"doc-before",{},void 0,!0)]),"doc-after":v(()=>[u(n.$slots,"doc-after",{},void 0,!0)]),"aside-top":v(()=>[u(n.$slots,"aside-top",{},void 0,!0)]),"aside-outline-before":v(()=>[u(n.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":v(()=>[u(n.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":v(()=>[u(n.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":v(()=>[u(n.$slots,"aside-ads-after",{},void 0,!0)]),"aside-bottom":v(()=>[u(n.$slots,"aside-bottom",{},void 0,!0)]),_:3}))],2))}}),ts=$(es,[["__scopeId","data-v-91765379"]]),ns={class:"container"},ss=["innerHTML"],as=["innerHTML"],os=m({__name:"VPFooter",setup(a){const{theme:e,frontmatter:t}=V(),{hasSidebar:s}=U();return(n,i)=>r(e).footer&&r(t).footer!==!1?(o(),c("footer",{key:0,class:I(["VPFooter",{"has-sidebar":r(s)}])},[p("div",ns,[r(e).footer.message?(o(),c("p",{key:0,class:"message",innerHTML:r(e).footer.message},null,8,ss)):h("",!0),r(e).footer.copyright?(o(),c("p",{key:1,class:"copyright",innerHTML:r(e).footer.copyright},null,8,as)):h("",!0)])],2)):h("",!0)}}),rs=$(os,[["__scopeId","data-v-c970a860"]]);function is(){const{theme:a,frontmatter:e}=V(),t=Te([]),s=y(()=>t.value.length>0);return x(()=>{t.value=be(e.value.outline??a.value.outline)}),{headers:t,hasLocalNav:s}}const ls={class:"menu-text"},us={class:"header"},cs={class:"outline"},ds=m({__name:"VPLocalNavOutlineDropdown",props:{headers:{},navHeight:{}},setup(a){const e=a,{theme:t}=V(),s=T(!1),n=T(0),i=T(),l=T();function d(_){var P;(P=i.value)!=null&&P.contains(_.target)||(s.value=!1)}D(s,_=>{if(_){document.addEventListener("click",d);return}document.removeEventListener("click",d)}),ie("Escape",()=>{s.value=!1}),x(()=>{s.value=!1});function f(){s.value=!s.value,n.value=window.innerHeight+Math.min(window.scrollY-e.navHeight,0)}function b(_){_.target.classList.contains("outline-link")&&(l.value&&(l.value.style.transition="none"),he(()=>{s.value=!1}))}function L(){s.value=!1,window.scrollTo({top:0,left:0,behavior:"smooth"})}return(_,P)=>(o(),c("div",{class:"VPLocalNavOutlineDropdown",style:we({"--vp-vh":n.value+"px"}),ref_key:"main",ref:i},[_.headers.length>0?(o(),c("button",{key:0,onClick:f,class:I({open:s.value})},[p("span",ls,w(r(He)(r(t))),1),P[0]||(P[0]=p("span",{class:"vpi-chevron-right icon"},null,-1))],2)):(o(),c("button",{key:1,onClick:L},w(r(t).returnToTopLabel||"Return to top"),1)),k(de,{name:"flyout"},{default:v(()=>[s.value?(o(),c("div",{key:0,ref_key:"items",ref:l,class:"items",onClick:b},[p("div",us,[p("a",{class:"top-link",href:"#",onClick:L},w(r(t).returnToTopLabel||"Return to top"),1)]),p("div",cs,[k(Be,{headers:_.headers},null,8,["headers"])])],512)):h("",!0)]),_:1})],4))}}),fs=$(ds,[["__scopeId","data-v-168ddf5d"]]),ps={class:"container"},vs=["aria-expanded"],hs={class:"menu-text"},ms=m({__name:"VPLocalNav",props:{open:{type:Boolean}},emits:["open-menu"],setup(a){const{theme:e,frontmatter:t}=V(),{hasSidebar:s}=U(),{headers:n}=is(),{y:i}=Ie(),l=T(0);O(()=>{l.value=parseInt(getComputedStyle(document.documentElement).getPropertyValue("--vp-nav-height"))}),x(()=>{n.value=be(t.value.outline??e.value.outline)});const d=y(()=>n.value.length===0),f=y(()=>d.value&&!s.value),b=y(()=>({VPLocalNav:!0,"has-sidebar":s.value,empty:d.value,fixed:f.value}));return(L,_)=>r(t).layout!=="home"&&(!f.value||r(i)>=l.value)?(o(),c("div",{key:0,class:I(b.value)},[p("div",ps,[r(s)?(o(),c("button",{key:0,class:"menu","aria-expanded":L.open,"aria-controls":"VPSidebarNav",onClick:_[0]||(_[0]=P=>L.$emit("open-menu"))},[_[1]||(_[1]=p("span",{class:"vpi-align-left menu-icon"},null,-1)),p("span",hs,w(r(e).sidebarMenuLabel||"Menu"),1)],8,vs)):h("",!0),k(fs,{headers:r(n),navHeight:l.value},null,8,["headers","navHeight"])])],2)):h("",!0)}}),_s=$(ms,[["__scopeId","data-v-070ab83d"]]);function bs(){const a=T(!1);function e(){a.value=!0,window.addEventListener("resize",n)}function t(){a.value=!1,window.removeEventListener("resize",n)}function s(){a.value?t():e()}function n(){window.outerWidth>=768&&t()}const i=ee();return D(()=>i.path,t),{isScreenOpen:a,openScreen:e,closeScreen:t,toggleScreen:s}}const ks={},gs={class:"VPSwitch",type:"button",role:"switch"},$s={class:"check"},ys={key:0,class:"icon"};function Ps(a,e){return o(),c("button",gs,[p("span",$s,[a.$slots.default?(o(),c("span",ys,[u(a.$slots,"default",{},void 0,!0)])):h("",!0)])])}const Ss=$(ks,[["render",Ps],["__scopeId","data-v-4a1c76db"]]),Ls=m({__name:"VPSwitchAppearance",setup(a){const{isDark:e,theme:t}=V(),s=q("toggle-appearance",()=>{e.value=!e.value}),n=T("");return ve(()=>{n.value=e.value?t.value.lightModeSwitchTitle||"Switch to light theme":t.value.darkModeSwitchTitle||"Switch to dark theme"}),(i,l)=>(o(),g(Ss,{title:n.value,class:"VPSwitchAppearance","aria-checked":r(e),onClick:r(s)},{default:v(()=>l[0]||(l[0]=[p("span",{class:"vpi-sun sun"},null,-1),p("span",{class:"vpi-moon moon"},null,-1)])),_:1},8,["title","aria-checked","onClick"]))}}),ke=$(Ls,[["__scopeId","data-v-e40a8bb6"]]),Vs={key:0,class:"VPNavBarAppearance"},Ts=m({__name:"VPNavBarAppearance",setup(a){const{site:e}=V();return(t,s)=>r(e).appearance&&r(e).appearance!=="force-dark"&&r(e).appearance!=="force-auto"?(o(),c("div",Vs,[k(ke)])):h("",!0)}}),Ns=$(Ts,[["__scopeId","data-v-af096f4a"]]),ge=T();let Ee=!1,oe=0;function ws(a){const e=T(!1);if(te){!Ee&&Is(),oe++;const t=D(ge,s=>{var n,i,l;s===a.el.value||(n=a.el.value)!=null&&n.contains(s)?(e.value=!0,(i=a.onFocus)==null||i.call(a)):(e.value=!1,(l=a.onBlur)==null||l.call(a))});pe(()=>{t(),oe--,oe||Ms()})}return Je(e)}function Is(){document.addEventListener("focusin",Fe),Ee=!0,ge.value=document.activeElement}function Ms(){document.removeEventListener("focusin",Fe)}function Fe(){ge.value=document.activeElement}const As={class:"VPMenuLink"},Cs=["innerHTML"],Hs=m({__name:"VPMenuLink",props:{item:{}},setup(a){const{page:e}=V();return(t,s)=>(o(),c("div",As,[k(F,{class:I({active:r(K)(r(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,target:t.item.target,rel:t.item.rel,"no-icon":t.item.noIcon},{default:v(()=>[p("span",{innerHTML:t.item.text},null,8,Cs)]),_:1},8,["class","href","target","rel","no-icon"])]))}}),ne=$(Hs,[["__scopeId","data-v-acbfed09"]]),Bs={class:"VPMenuGroup"},Es={key:0,class:"title"},Fs=m({__name:"VPMenuGroup",props:{text:{},items:{}},setup(a){return(e,t)=>(o(),c("div",Bs,[e.text?(o(),c("p",Es,w(e.text),1)):h("",!0),(o(!0),c(M,null,H(e.items,s=>(o(),c(M,null,["link"in s?(o(),g(ne,{key:0,item:s},null,8,["item"])):h("",!0)],64))),256))]))}}),Ds=$(Fs,[["__scopeId","data-v-48c802d0"]]),Os={class:"VPMenu"},Us={key:0,class:"items"},js=m({__name:"VPMenu",props:{items:{}},setup(a){return(e,t)=>(o(),c("div",Os,[e.items?(o(),c("div",Us,[(o(!0),c(M,null,H(e.items,s=>(o(),c(M,{key:JSON.stringify(s)},["link"in s?(o(),g(ne,{key:0,item:s},null,8,["item"])):"component"in s?(o(),g(E(s.component),G({key:1,ref_for:!0},s.props),null,16)):(o(),g(Ds,{key:2,text:s.text,items:s.items},null,8,["text","items"]))],64))),128))])):h("",!0),u(e.$slots,"default",{},void 0,!0)]))}}),Gs=$(js,[["__scopeId","data-v-7dd3104a"]]),zs=["aria-expanded","aria-label"],Ks={key:0,class:"text"},Rs=["innerHTML"],Ws={key:1,class:"vpi-more-horizontal icon"},qs={class:"menu"},Js=m({__name:"VPFlyout",props:{icon:{},button:{},label:{},items:{}},setup(a){const e=T(!1),t=T();ws({el:t,onBlur:s});function s(){e.value=!1}return(n,i)=>(o(),c("div",{class:"VPFlyout",ref_key:"el",ref:t,onMouseenter:i[1]||(i[1]=l=>e.value=!0),onMouseleave:i[2]||(i[2]=l=>e.value=!1)},[p("button",{type:"button",class:"button","aria-haspopup":"true","aria-expanded":e.value,"aria-label":n.label,onClick:i[0]||(i[0]=l=>e.value=!e.value)},[n.button||n.icon?(o(),c("span",Ks,[n.icon?(o(),c("span",{key:0,class:I([n.icon,"option-icon"])},null,2)):h("",!0),n.button?(o(),c("span",{key:1,innerHTML:n.button},null,8,Rs)):h("",!0),i[3]||(i[3]=p("span",{class:"vpi-chevron-down text-icon"},null,-1))])):(o(),c("span",Ws))],8,zs),p("div",qs,[k(Gs,{items:n.items},{default:v(()=>[u(n.$slots,"default",{},void 0,!0)]),_:3},8,["items"])])],544))}}),$e=$(Js,[["__scopeId","data-v-04f5c5e9"]]),Ys=["href","aria-label","innerHTML"],Xs=m({__name:"VPSocialLink",props:{icon:{},link:{},ariaLabel:{}},setup(a){const e=a,t=T();O(async()=>{var i;await he();const n=(i=t.value)==null?void 0:i.children[0];n instanceof HTMLElement&&n.className.startsWith("vpi-social-")&&(getComputedStyle(n).maskImage||getComputedStyle(n).webkitMaskImage)==="none"&&n.style.setProperty("--icon",`url('https://api.iconify.design/simple-icons/${e.icon}.svg')`)});const s=y(()=>typeof e.icon=="object"?e.icon.svg:``);return(n,i)=>(o(),c("a",{ref_key:"el",ref:t,class:"VPSocialLink no-icon",href:n.link,"aria-label":n.ariaLabel??(typeof n.icon=="string"?n.icon:""),target:"_blank",rel:"noopener",innerHTML:s.value},null,8,Ys))}}),Qs=$(Xs,[["__scopeId","data-v-d26d30cb"]]),Zs={class:"VPSocialLinks"},xs=m({__name:"VPSocialLinks",props:{links:{}},setup(a){return(e,t)=>(o(),c("div",Zs,[(o(!0),c(M,null,H(e.links,({link:s,icon:n,ariaLabel:i})=>(o(),g(Qs,{key:s,icon:n,link:s,ariaLabel:i},null,8,["icon","link","ariaLabel"]))),128))]))}}),ye=$(xs,[["__scopeId","data-v-ee7a9424"]]),ea={key:0,class:"group translations"},ta={class:"trans-title"},na={key:1,class:"group"},sa={class:"item appearance"},aa={class:"label"},oa={class:"appearance-action"},ra={key:2,class:"group"},ia={class:"item social-links"},la=m({__name:"VPNavBarExtra",setup(a){const{site:e,theme:t}=V(),{localeLinks:s,currentLang:n}=Y({correspondingLink:!0}),i=y(()=>s.value.length&&n.value.label||e.value.appearance||t.value.socialLinks);return(l,d)=>i.value?(o(),g($e,{key:0,class:"VPNavBarExtra",label:"extra navigation"},{default:v(()=>[r(s).length&&r(n).label?(o(),c("div",ea,[p("p",ta,w(r(n).label),1),(o(!0),c(M,null,H(r(s),f=>(o(),g(ne,{key:f.link,item:f},null,8,["item"]))),128))])):h("",!0),r(e).appearance&&r(e).appearance!=="force-dark"&&r(e).appearance!=="force-auto"?(o(),c("div",na,[p("div",sa,[p("p",aa,w(r(t).darkModeSwitchLabel||"Appearance"),1),p("div",oa,[k(ke)])])])):h("",!0),r(t).socialLinks?(o(),c("div",ra,[p("div",ia,[k(ye,{class:"social-links-list",links:r(t).socialLinks},null,8,["links"])])])):h("",!0)]),_:1})):h("",!0)}}),ua=$(la,[["__scopeId","data-v-925effce"]]),ca=["aria-expanded"],da=m({__name:"VPNavBarHamburger",props:{active:{type:Boolean}},emits:["click"],setup(a){return(e,t)=>(o(),c("button",{type:"button",class:I(["VPNavBarHamburger",{active:e.active}]),"aria-label":"mobile navigation","aria-expanded":e.active,"aria-controls":"VPNavScreen",onClick:t[0]||(t[0]=s=>e.$emit("click"))},t[1]||(t[1]=[p("span",{class:"container"},[p("span",{class:"top"}),p("span",{class:"middle"}),p("span",{class:"bottom"})],-1)]),10,ca))}}),fa=$(da,[["__scopeId","data-v-5dea55bf"]]),pa=["innerHTML"],va=m({__name:"VPNavBarMenuLink",props:{item:{}},setup(a){const{page:e}=V();return(t,s)=>(o(),g(F,{class:I({VPNavBarMenuLink:!0,active:r(K)(r(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,target:t.item.target,rel:t.item.rel,"no-icon":t.item.noIcon,tabindex:"0"},{default:v(()=>[p("span",{innerHTML:t.item.text},null,8,pa)]),_:1},8,["class","href","target","rel","no-icon"]))}}),ha=$(va,[["__scopeId","data-v-956ec74c"]]),ma=m({__name:"VPNavBarMenuGroup",props:{item:{}},setup(a){const e=a,{page:t}=V(),s=i=>"component"in i?!1:"link"in i?K(t.value.relativePath,i.link,!!e.item.activeMatch):i.items.some(s),n=y(()=>s(e.item));return(i,l)=>(o(),g($e,{class:I({VPNavBarMenuGroup:!0,active:r(K)(r(t).relativePath,i.item.activeMatch,!!i.item.activeMatch)||n.value}),button:i.item.text,items:i.item.items},null,8,["class","button","items"]))}}),_a={key:0,"aria-labelledby":"main-nav-aria-label",class:"VPNavBarMenu"},ba=m({__name:"VPNavBarMenu",setup(a){const{theme:e}=V();return(t,s)=>r(e).nav?(o(),c("nav",_a,[s[0]||(s[0]=p("span",{id:"main-nav-aria-label",class:"visually-hidden"}," Main Navigation ",-1)),(o(!0),c(M,null,H(r(e).nav,n=>(o(),c(M,{key:JSON.stringify(n)},["link"in n?(o(),g(ha,{key:0,item:n},null,8,["item"])):"component"in n?(o(),g(E(n.component),G({key:1,ref_for:!0},n.props),null,16)):(o(),g(ma,{key:2,item:n},null,8,["item"]))],64))),128))])):h("",!0)}}),ka=$(ba,[["__scopeId","data-v-e6d46098"]]);function ga(a){const{localeIndex:e,theme:t}=V();function s(n){var A,C,N;const i=n.split("."),l=(A=t.value.search)==null?void 0:A.options,d=l&&typeof l=="object",f=d&&((N=(C=l.locales)==null?void 0:C[e.value])==null?void 0:N.translations)||null,b=d&&l.translations||null;let L=f,_=b,P=a;const S=i.pop();for(const B of i){let j=null;const W=P==null?void 0:P[B];W&&(j=P=W);const se=_==null?void 0:_[B];se&&(j=_=se);const ae=L==null?void 0:L[B];ae&&(j=L=ae),W||(P=j),se||(_=j),ae||(L=j)}return(L==null?void 0:L[S])??(_==null?void 0:_[S])??(P==null?void 0:P[S])??""}return s}const $a=["aria-label"],ya={class:"DocSearch-Button-Container"},Pa={class:"DocSearch-Button-Placeholder"},Se=m({__name:"VPNavBarSearchButton",setup(a){const t=ga({button:{buttonText:"Search",buttonAriaLabel:"Search"}});return(s,n)=>(o(),c("button",{type:"button",class:"DocSearch DocSearch-Button","aria-label":r(t)("button.buttonAriaLabel")},[p("span",ya,[n[0]||(n[0]=p("span",{class:"vp-icon DocSearch-Search-Icon"},null,-1)),p("span",Pa,w(r(t)("button.buttonText")),1)]),n[1]||(n[1]=p("span",{class:"DocSearch-Button-Keys"},[p("kbd",{class:"DocSearch-Button-Key"}),p("kbd",{class:"DocSearch-Button-Key"},"K")],-1))],8,$a))}}),Sa={class:"VPNavBarSearch"},La={id:"local-search"},Va={key:1,id:"docsearch"},Ta=m({__name:"VPNavBarSearch",setup(a){const e=Ye(()=>Xe(()=>import("./VPLocalSearchBox.CHTMbhP1.js"),__vite__mapDeps([0,1]))),t=()=>null,{theme:s}=V(),n=T(!1),i=T(!1);O(()=>{});function l(){n.value||(n.value=!0,setTimeout(d,16))}function d(){const _=new Event("keydown");_.key="k",_.metaKey=!0,window.dispatchEvent(_),setTimeout(()=>{document.querySelector(".DocSearch-Modal")||d()},16)}function f(_){const P=_.target,S=P.tagName;return P.isContentEditable||S==="INPUT"||S==="SELECT"||S==="TEXTAREA"}const b=T(!1);ie("k",_=>{(_.ctrlKey||_.metaKey)&&(_.preventDefault(),b.value=!0)}),ie("/",_=>{f(_)||(_.preventDefault(),b.value=!0)});const L="local";return(_,P)=>{var S;return o(),c("div",Sa,[r(L)==="local"?(o(),c(M,{key:0},[b.value?(o(),g(r(e),{key:0,onClose:P[0]||(P[0]=A=>b.value=!1)})):h("",!0),p("div",La,[k(Se,{onClick:P[1]||(P[1]=A=>b.value=!0)})])],64)):r(L)==="algolia"?(o(),c(M,{key:1},[n.value?(o(),g(r(t),{key:0,algolia:((S=r(s).search)==null?void 0:S.options)??r(s).algolia,onVnodeBeforeMount:P[2]||(P[2]=A=>i.value=!0)},null,8,["algolia"])):h("",!0),i.value?h("",!0):(o(),c("div",Va,[k(Se,{onClick:l})]))],64)):h("",!0)])}}}),Na=m({__name:"VPNavBarSocialLinks",setup(a){const{theme:e}=V();return(t,s)=>r(e).socialLinks?(o(),g(ye,{key:0,class:"VPNavBarSocialLinks",links:r(e).socialLinks},null,8,["links"])):h("",!0)}}),wa=$(Na,[["__scopeId","data-v-164c457f"]]),Ia=["href","rel","target"],Ma=["innerHTML"],Aa={key:2},Ca=m({__name:"VPNavBarTitle",setup(a){const{site:e,theme:t}=V(),{hasSidebar:s}=U(),{currentLang:n}=Y(),i=y(()=>{var f;return typeof t.value.logoLink=="string"?t.value.logoLink:(f=t.value.logoLink)==null?void 0:f.link}),l=y(()=>{var f;return typeof t.value.logoLink=="string"||(f=t.value.logoLink)==null?void 0:f.rel}),d=y(()=>{var f;return typeof t.value.logoLink=="string"||(f=t.value.logoLink)==null?void 0:f.target});return(f,b)=>(o(),c("div",{class:I(["VPNavBarTitle",{"has-sidebar":r(s)}])},[p("a",{class:"title",href:i.value??r(_e)(r(n).link),rel:l.value,target:d.value},[u(f.$slots,"nav-bar-title-before",{},void 0,!0),r(t).logo?(o(),g(Q,{key:0,class:"logo",image:r(t).logo},null,8,["image"])):h("",!0),r(t).siteTitle?(o(),c("span",{key:1,innerHTML:r(t).siteTitle},null,8,Ma)):r(t).siteTitle===void 0?(o(),c("span",Aa,w(r(e).title),1)):h("",!0),u(f.$slots,"nav-bar-title-after",{},void 0,!0)],8,Ia)],2))}}),Ha=$(Ca,[["__scopeId","data-v-0f4f798b"]]),Ba={class:"items"},Ea={class:"title"},Fa=m({__name:"VPNavBarTranslations",setup(a){const{theme:e}=V(),{localeLinks:t,currentLang:s}=Y({correspondingLink:!0});return(n,i)=>r(t).length&&r(s).label?(o(),g($e,{key:0,class:"VPNavBarTranslations",icon:"vpi-languages",label:r(e).langMenuLabel||"Change language"},{default:v(()=>[p("div",Ba,[p("p",Ea,w(r(s).label),1),(o(!0),c(M,null,H(r(t),l=>(o(),g(ne,{key:l.link,item:l},null,8,["item"]))),128))])]),_:1},8,["label"])):h("",!0)}}),Da=$(Fa,[["__scopeId","data-v-c80d9ad0"]]),Oa={class:"wrapper"},Ua={class:"container"},ja={class:"title"},Ga={class:"content"},za={class:"content-body"},Ka=m({__name:"VPNavBar",props:{isScreenOpen:{type:Boolean}},emits:["toggle-screen"],setup(a){const e=a,{y:t}=Ie(),{hasSidebar:s}=U(),{frontmatter:n}=V(),i=T({});return ve(()=>{i.value={"has-sidebar":s.value,home:n.value.layout==="home",top:t.value===0,"screen-open":e.isScreenOpen}}),(l,d)=>(o(),c("div",{class:I(["VPNavBar",i.value])},[p("div",Oa,[p("div",Ua,[p("div",ja,[k(Ha,null,{"nav-bar-title-before":v(()=>[u(l.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":v(()=>[u(l.$slots,"nav-bar-title-after",{},void 0,!0)]),_:3})]),p("div",Ga,[p("div",za,[u(l.$slots,"nav-bar-content-before",{},void 0,!0),k(Ta,{class:"search"}),k(ka,{class:"menu"}),k(Da,{class:"translations"}),k(Ns,{class:"appearance"}),k(wa,{class:"social-links"}),k(ua,{class:"extra"}),u(l.$slots,"nav-bar-content-after",{},void 0,!0),k(fa,{class:"hamburger",active:l.isScreenOpen,onClick:d[0]||(d[0]=f=>l.$emit("toggle-screen"))},null,8,["active"])])])])]),d[1]||(d[1]=p("div",{class:"divider"},[p("div",{class:"divider-line"})],-1))],2))}}),Ra=$(Ka,[["__scopeId","data-v-822684d1"]]),Wa={key:0,class:"VPNavScreenAppearance"},qa={class:"text"},Ja=m({__name:"VPNavScreenAppearance",setup(a){const{site:e,theme:t}=V();return(s,n)=>r(e).appearance&&r(e).appearance!=="force-dark"&&r(e).appearance!=="force-auto"?(o(),c("div",Wa,[p("p",qa,w(r(t).darkModeSwitchLabel||"Appearance"),1),k(ke)])):h("",!0)}}),Ya=$(Ja,[["__scopeId","data-v-ffb44008"]]),Xa=["innerHTML"],Qa=m({__name:"VPNavScreenMenuLink",props:{item:{}},setup(a){const e=q("close-screen");return(t,s)=>(o(),g(F,{class:"VPNavScreenMenuLink",href:t.item.link,target:t.item.target,rel:t.item.rel,"no-icon":t.item.noIcon,onClick:r(e)},{default:v(()=>[p("span",{innerHTML:t.item.text},null,8,Xa)]),_:1},8,["href","target","rel","no-icon","onClick"]))}}),Za=$(Qa,[["__scopeId","data-v-735512b8"]]),xa=["innerHTML"],eo=m({__name:"VPNavScreenMenuGroupLink",props:{item:{}},setup(a){const e=q("close-screen");return(t,s)=>(o(),g(F,{class:"VPNavScreenMenuGroupLink",href:t.item.link,target:t.item.target,rel:t.item.rel,"no-icon":t.item.noIcon,onClick:r(e)},{default:v(()=>[p("span",{innerHTML:t.item.text},null,8,xa)]),_:1},8,["href","target","rel","no-icon","onClick"]))}}),De=$(eo,[["__scopeId","data-v-372ae7c0"]]),to={class:"VPNavScreenMenuGroupSection"},no={key:0,class:"title"},so=m({__name:"VPNavScreenMenuGroupSection",props:{text:{},items:{}},setup(a){return(e,t)=>(o(),c("div",to,[e.text?(o(),c("p",no,w(e.text),1)):h("",!0),(o(!0),c(M,null,H(e.items,s=>(o(),g(De,{key:s.text,item:s},null,8,["item"]))),128))]))}}),ao=$(so,[["__scopeId","data-v-4b8941ac"]]),oo=["aria-controls","aria-expanded"],ro=["innerHTML"],io=["id"],lo={key:0,class:"item"},uo={key:1,class:"item"},co={key:2,class:"group"},fo=m({__name:"VPNavScreenMenuGroup",props:{text:{},items:{}},setup(a){const e=a,t=T(!1),s=y(()=>`NavScreenGroup-${e.text.replace(" ","-").toLowerCase()}`);function n(){t.value=!t.value}return(i,l)=>(o(),c("div",{class:I(["VPNavScreenMenuGroup",{open:t.value}])},[p("button",{class:"button","aria-controls":s.value,"aria-expanded":t.value,onClick:n},[p("span",{class:"button-text",innerHTML:i.text},null,8,ro),l[0]||(l[0]=p("span",{class:"vpi-plus button-icon"},null,-1))],8,oo),p("div",{id:s.value,class:"items"},[(o(!0),c(M,null,H(i.items,d=>(o(),c(M,{key:JSON.stringify(d)},["link"in d?(o(),c("div",lo,[k(De,{item:d},null,8,["item"])])):"component"in d?(o(),c("div",uo,[(o(),g(E(d.component),G({ref_for:!0},d.props,{"screen-menu":""}),null,16))])):(o(),c("div",co,[k(ao,{text:d.text,items:d.items},null,8,["text","items"])]))],64))),128))],8,io)],2))}}),po=$(fo,[["__scopeId","data-v-875057a5"]]),vo={key:0,class:"VPNavScreenMenu"},ho=m({__name:"VPNavScreenMenu",setup(a){const{theme:e}=V();return(t,s)=>r(e).nav?(o(),c("nav",vo,[(o(!0),c(M,null,H(r(e).nav,n=>(o(),c(M,{key:JSON.stringify(n)},["link"in n?(o(),g(Za,{key:0,item:n},null,8,["item"])):"component"in n?(o(),g(E(n.component),G({key:1,ref_for:!0},n.props,{"screen-menu":""}),null,16)):(o(),g(po,{key:2,text:n.text||"",items:n.items},null,8,["text","items"]))],64))),128))])):h("",!0)}}),mo=m({__name:"VPNavScreenSocialLinks",setup(a){const{theme:e}=V();return(t,s)=>r(e).socialLinks?(o(),g(ye,{key:0,class:"VPNavScreenSocialLinks",links:r(e).socialLinks},null,8,["links"])):h("",!0)}}),_o={class:"list"},bo=m({__name:"VPNavScreenTranslations",setup(a){const{localeLinks:e,currentLang:t}=Y({correspondingLink:!0}),s=T(!1);function n(){s.value=!s.value}return(i,l)=>r(e).length&&r(t).label?(o(),c("div",{key:0,class:I(["VPNavScreenTranslations",{open:s.value}])},[p("button",{class:"title",onClick:n},[l[0]||(l[0]=p("span",{class:"vpi-languages icon lang"},null,-1)),z(" "+w(r(t).label)+" ",1),l[1]||(l[1]=p("span",{class:"vpi-chevron-down icon chevron"},null,-1))]),p("ul",_o,[(o(!0),c(M,null,H(r(e),d=>(o(),c("li",{key:d.link,class:"item"},[k(F,{class:"link",href:d.link},{default:v(()=>[z(w(d.text),1)]),_:2},1032,["href"])]))),128))])],2)):h("",!0)}}),ko=$(bo,[["__scopeId","data-v-362991c2"]]),go={class:"container"},$o=m({__name:"VPNavScreen",props:{open:{type:Boolean}},setup(a){const e=T(null),t=Me(te?document.body:null);return(s,n)=>(o(),g(de,{name:"fade",onEnter:n[0]||(n[0]=i=>t.value=!0),onAfterLeave:n[1]||(n[1]=i=>t.value=!1)},{default:v(()=>[s.open?(o(),c("div",{key:0,class:"VPNavScreen",ref_key:"screen",ref:e,id:"VPNavScreen"},[p("div",go,[u(s.$slots,"nav-screen-content-before",{},void 0,!0),k(ho,{class:"menu"}),k(ko,{class:"translations"}),k(Ya,{class:"appearance"}),k(mo,{class:"social-links"}),u(s.$slots,"nav-screen-content-after",{},void 0,!0)])],512)):h("",!0)]),_:3}))}}),yo=$($o,[["__scopeId","data-v-833aabba"]]),Po={key:0,class:"VPNav"},So=m({__name:"VPNav",setup(a){const{isScreenOpen:e,closeScreen:t,toggleScreen:s}=bs(),{frontmatter:n}=V(),i=y(()=>n.value.navbar!==!1);return me("close-screen",t),Z(()=>{te&&document.documentElement.classList.toggle("hide-nav",!i.value)}),(l,d)=>i.value?(o(),c("header",Po,[k(Ra,{"is-screen-open":r(e),onToggleScreen:r(s)},{"nav-bar-title-before":v(()=>[u(l.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":v(()=>[u(l.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":v(()=>[u(l.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":v(()=>[u(l.$slots,"nav-bar-content-after",{},void 0,!0)]),_:3},8,["is-screen-open","onToggleScreen"]),k(yo,{open:r(e)},{"nav-screen-content-before":v(()=>[u(l.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":v(()=>[u(l.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3},8,["open"])])):h("",!0)}}),Lo=$(So,[["__scopeId","data-v-f1e365da"]]),Vo=["role","tabindex"],To={key:1,class:"items"},No=m({__name:"VPSidebarItem",props:{item:{},depth:{}},setup(a){const e=a,{collapsed:t,collapsible:s,isLink:n,isActiveLink:i,hasActiveLink:l,hasChildren:d,toggle:f}=$t(y(()=>e.item)),b=y(()=>d.value?"section":"div"),L=y(()=>n.value?"a":"div"),_=y(()=>d.value?e.depth+2===7?"p":`h${e.depth+2}`:"p"),P=y(()=>n.value?void 0:"button"),S=y(()=>[[`level-${e.depth}`],{collapsible:s.value},{collapsed:t.value},{"is-link":n.value},{"is-active":i.value},{"has-active":l.value}]);function A(N){"key"in N&&N.key!=="Enter"||!e.item.link&&f()}function C(){e.item.link&&f()}return(N,B)=>{const j=R("VPSidebarItem",!0);return o(),g(E(b.value),{class:I(["VPSidebarItem",S.value])},{default:v(()=>[N.item.text?(o(),c("div",G({key:0,class:"item",role:P.value},Ze(N.item.items?{click:A,keydown:A}:{},!0),{tabindex:N.item.items&&0}),[B[1]||(B[1]=p("div",{class:"indicator"},null,-1)),N.item.link?(o(),g(F,{key:0,tag:L.value,class:"link",href:N.item.link,rel:N.item.rel,target:N.item.target},{default:v(()=>[(o(),g(E(_.value),{class:"text",innerHTML:N.item.text},null,8,["innerHTML"]))]),_:1},8,["tag","href","rel","target"])):(o(),g(E(_.value),{key:1,class:"text",innerHTML:N.item.text},null,8,["innerHTML"])),N.item.collapsed!=null&&N.item.items&&N.item.items.length?(o(),c("div",{key:2,class:"caret",role:"button","aria-label":"toggle section",onClick:C,onKeydown:Qe(C,["enter"]),tabindex:"0"},B[0]||(B[0]=[p("span",{class:"vpi-chevron-right caret-icon"},null,-1)]),32)):h("",!0)],16,Vo)):h("",!0),N.item.items&&N.item.items.length?(o(),c("div",To,[N.depth<5?(o(!0),c(M,{key:0},H(N.item.items,W=>(o(),g(j,{key:W.text,item:W,depth:N.depth+1},null,8,["item","depth"]))),128)):h("",!0)])):h("",!0)]),_:1},8,["class"])}}}),wo=$(No,[["__scopeId","data-v-a4b0d9bf"]]),Io=m({__name:"VPSidebarGroup",props:{items:{}},setup(a){const e=T(!0);let t=null;return O(()=>{t=setTimeout(()=>{t=null,e.value=!1},300)}),xe(()=>{t!=null&&(clearTimeout(t),t=null)}),(s,n)=>(o(!0),c(M,null,H(s.items,i=>(o(),c("div",{key:i.text,class:I(["group",{"no-transition":e.value}])},[k(wo,{item:i,depth:0},null,8,["item"])],2))),128))}}),Mo=$(Io,[["__scopeId","data-v-9e426adc"]]),Ao={class:"nav",id:"VPSidebarNav","aria-labelledby":"sidebar-aria-label",tabindex:"-1"},Co=m({__name:"VPSidebar",props:{open:{type:Boolean}},setup(a){const{sidebarGroups:e,hasSidebar:t}=U(),s=a,n=T(null),i=Me(te?document.body:null);D([s,n],()=>{var d;s.open?(i.value=!0,(d=n.value)==null||d.focus()):i.value=!1},{immediate:!0,flush:"post"});const l=T(0);return D(e,()=>{l.value+=1},{deep:!0}),(d,f)=>r(t)?(o(),c("aside",{key:0,class:I(["VPSidebar",{open:d.open}]),ref_key:"navEl",ref:n,onClick:f[0]||(f[0]=et(()=>{},["stop"]))},[f[2]||(f[2]=p("div",{class:"curtain"},null,-1)),p("nav",Ao,[f[1]||(f[1]=p("span",{class:"visually-hidden",id:"sidebar-aria-label"}," Sidebar Navigation ",-1)),u(d.$slots,"sidebar-nav-before",{},void 0,!0),(o(),g(Mo,{items:r(e),key:l.value},null,8,["items"])),u(d.$slots,"sidebar-nav-after",{},void 0,!0)])],2)):h("",!0)}}),Ho=$(Co,[["__scopeId","data-v-18756405"]]),Bo=m({__name:"VPSkipLink",setup(a){const{theme:e}=V(),t=ee(),s=T();D(()=>t.path,()=>s.value.focus());function n({target:i}){const l=document.getElementById(decodeURIComponent(i.hash).slice(1));if(l){const d=()=>{l.removeAttribute("tabindex"),l.removeEventListener("blur",d)};l.setAttribute("tabindex","-1"),l.addEventListener("blur",d),l.focus(),window.scrollTo(0,0)}}return(i,l)=>(o(),c(M,null,[p("span",{ref_key:"backToTop",ref:s,tabindex:"-1"},null,512),p("a",{href:"#VPContent",class:"VPSkipLink visually-hidden",onClick:n},w(r(e).skipToContentLabel||"Skip to content"),1)],64))}}),Eo=$(Bo,[["__scopeId","data-v-492508fc"]]),Fo=m({__name:"Layout",setup(a){const{isOpen:e,open:t,close:s}=U(),n=ee();D(()=>n.path,s),gt(e,s);const{frontmatter:i}=V(),l=Ae(),d=y(()=>!!l["home-hero-image"]);return me("hero-image-slot-exists",d),(f,b)=>{const L=R("Content");return r(i).layout!==!1?(o(),c("div",{key:0,class:I(["Layout",r(i).pageClass])},[u(f.$slots,"layout-top",{},void 0,!0),k(Eo),k(it,{class:"backdrop",show:r(e),onClick:r(s)},null,8,["show","onClick"]),k(Lo,null,{"nav-bar-title-before":v(()=>[u(f.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":v(()=>[u(f.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":v(()=>[u(f.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":v(()=>[u(f.$slots,"nav-bar-content-after",{},void 0,!0)]),"nav-screen-content-before":v(()=>[u(f.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":v(()=>[u(f.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3}),k(_s,{open:r(e),onOpenMenu:r(t)},null,8,["open","onOpenMenu"]),k(Ho,{open:r(e)},{"sidebar-nav-before":v(()=>[u(f.$slots,"sidebar-nav-before",{},void 0,!0)]),"sidebar-nav-after":v(()=>[u(f.$slots,"sidebar-nav-after",{},void 0,!0)]),_:3},8,["open"]),k(ts,null,{"page-top":v(()=>[u(f.$slots,"page-top",{},void 0,!0)]),"page-bottom":v(()=>[u(f.$slots,"page-bottom",{},void 0,!0)]),"not-found":v(()=>[u(f.$slots,"not-found",{},void 0,!0)]),"home-hero-before":v(()=>[u(f.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":v(()=>[u(f.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":v(()=>[u(f.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":v(()=>[u(f.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":v(()=>[u(f.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":v(()=>[u(f.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":v(()=>[u(f.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":v(()=>[u(f.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":v(()=>[u(f.$slots,"home-features-after",{},void 0,!0)]),"doc-footer-before":v(()=>[u(f.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":v(()=>[u(f.$slots,"doc-before",{},void 0,!0)]),"doc-after":v(()=>[u(f.$slots,"doc-after",{},void 0,!0)]),"doc-top":v(()=>[u(f.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":v(()=>[u(f.$slots,"doc-bottom",{},void 0,!0)]),"aside-top":v(()=>[u(f.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":v(()=>[u(f.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":v(()=>[u(f.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":v(()=>[u(f.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":v(()=>[u(f.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":v(()=>[u(f.$slots,"aside-ads-after",{},void 0,!0)]),_:3}),k(rs),u(f.$slots,"layout-bottom",{},void 0,!0)],2)):(o(),g(L,{key:1}))}}}),Do=$(Fo,[["__scopeId","data-v-a9a9e638"]]),Le={Layout:Do,enhanceApp:({app:a})=>{a.component("Badge",at)}},Oo={};function Uo(a,e){return e[0]||(e[0]=tt('

Trusted by

Scientific Computing

SciML.ai

Machine Learning

',3))}const jo=$(Oo,[["render",Uo]]),Go=a=>{if(typeof document>"u")return{stabilizeScrollPosition:n=>async(...i)=>n(...i)};const e=document.documentElement;return{stabilizeScrollPosition:s=>async(...n)=>{const i=s(...n),l=a.value;if(!l)return i;const d=l.offsetTop-e.scrollTop;return await he(),e.scrollTop=l.offsetTop-d,i}}},Oe="vitepress:tabSharedState",J=typeof localStorage<"u"?localStorage:null,Ue="vitepress:tabsSharedState",zo=()=>{const a=J==null?void 0:J.getItem(Ue);if(a)try{return JSON.parse(a)}catch{}return{}},Ko=a=>{J&&J.setItem(Ue,JSON.stringify(a))},Ro=a=>{const e=nt({});D(()=>e.content,(t,s)=>{t&&s&&Ko(t)},{deep:!0}),a.provide(Oe,e)},Wo=(a,e)=>{const t=q(Oe);if(!t)throw new Error("[vitepress-plugin-tabs] TabsSharedState should be injected");O(()=>{t.content||(t.content=zo())});const s=T(),n=y({get(){var f;const l=e.value,d=a.value;if(l){const b=(f=t.content)==null?void 0:f[l];if(b&&d.includes(b))return b}else{const b=s.value;if(b)return b}return d[0]},set(l){const d=e.value;d?t.content&&(t.content[d]=l):s.value=l}});return{selected:n,select:l=>{n.value=l}}};let Ve=0;const qo=()=>(Ve++,""+Ve);function Jo(){const a=Ae();return y(()=>{var s;const t=(s=a.default)==null?void 0:s.call(a);return t?t.filter(n=>typeof n.type=="object"&&"__name"in n.type&&n.type.__name==="PluginTabsTab"&&n.props).map(n=>{var i;return(i=n.props)==null?void 0:i.label}):[]})}const je="vitepress:tabSingleState",Yo=a=>{me(je,a)},Xo=()=>{const a=q(je);if(!a)throw new Error("[vitepress-plugin-tabs] TabsSingleState should be injected");return a},Qo={class:"plugin-tabs"},Zo=["id","aria-selected","aria-controls","tabindex","onClick"],xo=m({__name:"PluginTabs",props:{sharedStateKey:{}},setup(a){const e=a,t=Jo(),{selected:s,select:n}=Wo(t,st(e,"sharedStateKey")),i=T(),{stabilizeScrollPosition:l}=Go(i),d=l(n),f=T([]),b=_=>{var A;const P=t.value.indexOf(s.value);let S;_.key==="ArrowLeft"?S=P>=1?P-1:t.value.length-1:_.key==="ArrowRight"&&(S=P(o(),c("div",Qo,[p("div",{ref_key:"tablist",ref:i,class:"plugin-tabs--tab-list",role:"tablist",onKeydown:b},[(o(!0),c(M,null,H(r(t),S=>(o(),c("button",{id:`tab-${S}-${r(L)}`,ref_for:!0,ref_key:"buttonRefs",ref:f,key:S,role:"tab",class:"plugin-tabs--tab","aria-selected":S===r(s),"aria-controls":`panel-${S}-${r(L)}`,tabindex:S===r(s)?0:-1,onClick:()=>r(d)(S)},w(S),9,Zo))),128))],544),u(_.$slots,"default")]))}}),er=["id","aria-labelledby"],tr=m({__name:"PluginTabsTab",props:{label:{}},setup(a){const{uid:e,selected:t}=Xo();return(s,n)=>r(t)===s.label?(o(),c("div",{key:0,id:`panel-${s.label}-${r(e)}`,class:"plugin-tabs--content",role:"tabpanel",tabindex:"0","aria-labelledby":`tab-${s.label}-${r(e)}`},[u(s.$slots,"default",{},void 0,!0)],8,er)):h("",!0)}}),nr=$(tr,[["__scopeId","data-v-9b0d03d2"]]),sr=a=>{Ro(a),a.component("PluginTabs",xo),a.component("PluginTabsTab",nr)},or={extends:Le,Layout(){return Pe(Le.Layout,null,{"aside-ads-before":()=>Pe(jo)})},enhanceApp({app:a}){sr(a)}};export{or as R,ga as c,V as u}; diff --git a/previews/PR98/assets/index.md.ac-RXHi6.js b/previews/PR98/assets/index.md.ac-RXHi6.js new file mode 100644 index 0000000..4f4ae5e --- /dev/null +++ b/previews/PR98/assets/index.md.ac-RXHi6.js @@ -0,0 +1,9 @@ +import{_ as s,c as a,a2 as t,o as l}from"./chunks/framework.BI0fNMXE.js";const g=JSON.parse('{"title":"","description":"","frontmatter":{"layout":"home","hero":{"name":"Boltz.jl ⚡ Docs","text":"Pre-built Deep Learning Models in Julia","tagline":"Accelerate ⚡ your ML research using pre-built Deep Learning Models with Lux","actions":[{"theme":"brand","text":"Lux.jl Docs","link":"https://lux.csail.mit.edu/"},{"theme":"alt","text":"Tutorials 📚","link":"/tutorials/1_GettingStarted"},{"theme":"alt","text":"Vision Models 👀","link":"/api/vision"},{"theme":"alt","text":"Layers API 🧩","link":"/api/layers"},{"theme":"alt","text":"View on GitHub","link":"https://github.com/LuxDL/Boltz.jl"}],"image":{"src":"/lux-logo.svg","alt":"Lux.jl"}},"features":[{"icon":"🔥","title":"Powered by Lux.jl","details":"Boltz.jl is built on top of Lux.jl, a pure Julia Deep Learning Framework designed for Scientific Machine Learning.","link":"https://lux.csail.mit.edu/"},{"icon":"🧩","title":"Pre-built Models","details":"Boltz.jl provides pre-built models for common deep learning tasks, such as image classification.","link":"/api/vision"},{"icon":"🧑‍🔬","title":"SciML Primitives","details":"Common deep learning primitives needed for scientific machine learning.","link":"https://sciml.ai/"}]},"headers":[],"relativePath":"index.md","filePath":"index.md","lastUpdated":null}'),e={name:"index.md"};function n(h,i,p,k,d,o){return l(),a("div",null,i[0]||(i[0]=[t(`

How to Install Boltz.jl?

Its easy to install Boltz.jl. Since Boltz.jl is registered in the Julia General registry, you can simply run the following command in the Julia REPL:

julia
julia> using Pkg
+julia> Pkg.add("Boltz")

If you want to use the latest unreleased version of Boltz.jl, you can run the following command: (in most cases the released version will be same as the version on github)

julia
julia> using Pkg
+julia> Pkg.add(url="https://github.com/LuxDL/Boltz.jl")

Want GPU Support?

Install the following package(s):

julia
using Pkg
+Pkg.add("LuxCUDA")
+# or
+Pkg.add(["CUDA", "cuDNN"])
julia
using Pkg
+Pkg.add("AMDGPU")
julia
using Pkg
+Pkg.add("Metal")
julia
using Pkg
+Pkg.add("oneAPI")
`,8)]))}const E=s(e,[["render",n]]);export{g as __pageData,E as default}; diff --git a/previews/PR98/assets/index.md.ac-RXHi6.lean.js b/previews/PR98/assets/index.md.ac-RXHi6.lean.js new file mode 100644 index 0000000..1cedb03 --- /dev/null +++ b/previews/PR98/assets/index.md.ac-RXHi6.lean.js @@ -0,0 +1 @@ +import{_ as s,c as a,a2 as t,o as l}from"./chunks/framework.BI0fNMXE.js";const g=JSON.parse('{"title":"","description":"","frontmatter":{"layout":"home","hero":{"name":"Boltz.jl ⚡ Docs","text":"Pre-built Deep Learning Models in Julia","tagline":"Accelerate ⚡ your ML research using pre-built Deep Learning Models with Lux","actions":[{"theme":"brand","text":"Lux.jl Docs","link":"https://lux.csail.mit.edu/"},{"theme":"alt","text":"Tutorials 📚","link":"/tutorials/1_GettingStarted"},{"theme":"alt","text":"Vision Models 👀","link":"/api/vision"},{"theme":"alt","text":"Layers API 🧩","link":"/api/layers"},{"theme":"alt","text":"View on GitHub","link":"https://github.com/LuxDL/Boltz.jl"}],"image":{"src":"/lux-logo.svg","alt":"Lux.jl"}},"features":[{"icon":"🔥","title":"Powered by Lux.jl","details":"Boltz.jl is built on top of Lux.jl, a pure Julia Deep Learning Framework designed for Scientific Machine Learning.","link":"https://lux.csail.mit.edu/"},{"icon":"🧩","title":"Pre-built Models","details":"Boltz.jl provides pre-built models for common deep learning tasks, such as image classification.","link":"/api/vision"},{"icon":"🧑‍🔬","title":"SciML Primitives","details":"Common deep learning primitives needed for scientific machine learning.","link":"https://sciml.ai/"}]},"headers":[],"relativePath":"index.md","filePath":"index.md","lastUpdated":null}'),e={name:"index.md"};function n(h,i,p,k,d,o){return l(),a("div",null,i[0]||(i[0]=[t("",8)]))}const E=s(e,[["render",n]]);export{g as __pageData,E as default}; diff --git a/previews/PR98/assets/inter-italic-cyrillic-ext.r48I6akx.woff2 b/previews/PR98/assets/inter-italic-cyrillic-ext.r48I6akx.woff2 new file mode 100644 index 0000000..b6b603d Binary files /dev/null and b/previews/PR98/assets/inter-italic-cyrillic-ext.r48I6akx.woff2 differ diff --git a/previews/PR98/assets/inter-italic-cyrillic.By2_1cv3.woff2 b/previews/PR98/assets/inter-italic-cyrillic.By2_1cv3.woff2 new file mode 100644 index 0000000..def40a4 Binary files /dev/null and b/previews/PR98/assets/inter-italic-cyrillic.By2_1cv3.woff2 differ diff --git a/previews/PR98/assets/inter-italic-greek-ext.1u6EdAuj.woff2 b/previews/PR98/assets/inter-italic-greek-ext.1u6EdAuj.woff2 new file mode 100644 index 0000000..e070c3d Binary files /dev/null and b/previews/PR98/assets/inter-italic-greek-ext.1u6EdAuj.woff2 differ diff --git a/previews/PR98/assets/inter-italic-greek.DJ8dCoTZ.woff2 b/previews/PR98/assets/inter-italic-greek.DJ8dCoTZ.woff2 new file mode 100644 index 0000000..a3c16ca Binary files /dev/null and b/previews/PR98/assets/inter-italic-greek.DJ8dCoTZ.woff2 differ diff --git a/previews/PR98/assets/inter-italic-latin-ext.CN1xVJS-.woff2 b/previews/PR98/assets/inter-italic-latin-ext.CN1xVJS-.woff2 new file mode 100644 index 0000000..2210a89 Binary files /dev/null and b/previews/PR98/assets/inter-italic-latin-ext.CN1xVJS-.woff2 differ diff --git a/previews/PR98/assets/inter-italic-latin.C2AdPX0b.woff2 b/previews/PR98/assets/inter-italic-latin.C2AdPX0b.woff2 new file mode 100644 index 0000000..790d62d Binary files /dev/null and b/previews/PR98/assets/inter-italic-latin.C2AdPX0b.woff2 differ diff --git a/previews/PR98/assets/inter-italic-vietnamese.BSbpV94h.woff2 b/previews/PR98/assets/inter-italic-vietnamese.BSbpV94h.woff2 new file mode 100644 index 0000000..1eec077 Binary files /dev/null and b/previews/PR98/assets/inter-italic-vietnamese.BSbpV94h.woff2 differ diff --git a/previews/PR98/assets/inter-roman-cyrillic-ext.BBPuwvHQ.woff2 b/previews/PR98/assets/inter-roman-cyrillic-ext.BBPuwvHQ.woff2 new file mode 100644 index 0000000..2cfe615 Binary files /dev/null and b/previews/PR98/assets/inter-roman-cyrillic-ext.BBPuwvHQ.woff2 differ diff --git a/previews/PR98/assets/inter-roman-cyrillic.C5lxZ8CY.woff2 b/previews/PR98/assets/inter-roman-cyrillic.C5lxZ8CY.woff2 new file mode 100644 index 0000000..e3886dd Binary files /dev/null and b/previews/PR98/assets/inter-roman-cyrillic.C5lxZ8CY.woff2 differ diff --git a/previews/PR98/assets/inter-roman-greek-ext.CqjqNYQ-.woff2 b/previews/PR98/assets/inter-roman-greek-ext.CqjqNYQ-.woff2 new file mode 100644 index 0000000..36d6748 Binary files /dev/null and b/previews/PR98/assets/inter-roman-greek-ext.CqjqNYQ-.woff2 differ diff --git a/previews/PR98/assets/inter-roman-greek.BBVDIX6e.woff2 b/previews/PR98/assets/inter-roman-greek.BBVDIX6e.woff2 new file mode 100644 index 0000000..2bed1e8 Binary files /dev/null and b/previews/PR98/assets/inter-roman-greek.BBVDIX6e.woff2 differ diff --git a/previews/PR98/assets/inter-roman-latin-ext.4ZJIpNVo.woff2 b/previews/PR98/assets/inter-roman-latin-ext.4ZJIpNVo.woff2 new file mode 100644 index 0000000..9a8d1e2 Binary files /dev/null and b/previews/PR98/assets/inter-roman-latin-ext.4ZJIpNVo.woff2 differ diff --git a/previews/PR98/assets/inter-roman-latin.Di8DUHzh.woff2 b/previews/PR98/assets/inter-roman-latin.Di8DUHzh.woff2 new file mode 100644 index 0000000..07d3c53 Binary files /dev/null and b/previews/PR98/assets/inter-roman-latin.Di8DUHzh.woff2 differ diff --git a/previews/PR98/assets/inter-roman-vietnamese.BjW4sHH5.woff2 b/previews/PR98/assets/inter-roman-vietnamese.BjW4sHH5.woff2 new file mode 100644 index 0000000..57bdc22 Binary files /dev/null and b/previews/PR98/assets/inter-roman-vietnamese.BjW4sHH5.woff2 differ diff --git a/previews/PR98/assets/style.BxgBX5_D.css b/previews/PR98/assets/style.BxgBX5_D.css new file mode 100644 index 0000000..289f11d --- /dev/null +++ b/previews/PR98/assets/style.BxgBX5_D.css @@ -0,0 +1 @@ +@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/Boltz.jl/previews/PR98/assets/inter-roman-cyrillic-ext.BBPuwvHQ.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/Boltz.jl/previews/PR98/assets/inter-roman-cyrillic.C5lxZ8CY.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/Boltz.jl/previews/PR98/assets/inter-roman-greek-ext.CqjqNYQ-.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/Boltz.jl/previews/PR98/assets/inter-roman-greek.BBVDIX6e.woff2) format("woff2");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/Boltz.jl/previews/PR98/assets/inter-roman-vietnamese.BjW4sHH5.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/Boltz.jl/previews/PR98/assets/inter-roman-latin-ext.4ZJIpNVo.woff2) format("woff2");unicode-range:U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/Boltz.jl/previews/PR98/assets/inter-roman-latin.Di8DUHzh.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/Boltz.jl/previews/PR98/assets/inter-italic-cyrillic-ext.r48I6akx.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/Boltz.jl/previews/PR98/assets/inter-italic-cyrillic.By2_1cv3.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/Boltz.jl/previews/PR98/assets/inter-italic-greek-ext.1u6EdAuj.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/Boltz.jl/previews/PR98/assets/inter-italic-greek.DJ8dCoTZ.woff2) format("woff2");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/Boltz.jl/previews/PR98/assets/inter-italic-vietnamese.BSbpV94h.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/Boltz.jl/previews/PR98/assets/inter-italic-latin-ext.CN1xVJS-.woff2) format("woff2");unicode-range:U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/Boltz.jl/previews/PR98/assets/inter-italic-latin.C2AdPX0b.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Punctuation SC;font-weight:400;src:local("PingFang SC Regular"),local("Noto Sans CJK SC"),local("Microsoft YaHei");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}@font-face{font-family:Punctuation SC;font-weight:500;src:local("PingFang SC Medium"),local("Noto Sans CJK SC"),local("Microsoft YaHei");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}@font-face{font-family:Punctuation SC;font-weight:600;src:local("PingFang SC Semibold"),local("Noto Sans CJK SC Bold"),local("Microsoft YaHei Bold");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}@font-face{font-family:Punctuation SC;font-weight:700;src:local("PingFang SC Semibold"),local("Noto Sans CJK SC Bold"),local("Microsoft YaHei Bold");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}:root{--vp-c-white: #ffffff;--vp-c-black: #000000;--vp-c-neutral: var(--vp-c-black);--vp-c-neutral-inverse: var(--vp-c-white)}.dark{--vp-c-neutral: var(--vp-c-white);--vp-c-neutral-inverse: var(--vp-c-black)}:root{--vp-c-gray-1: #dddde3;--vp-c-gray-2: #e4e4e9;--vp-c-gray-3: #ebebef;--vp-c-gray-soft: rgba(142, 150, 170, .14);--vp-c-indigo-1: #3451b2;--vp-c-indigo-2: #3a5ccc;--vp-c-indigo-3: #5672cd;--vp-c-indigo-soft: rgba(100, 108, 255, .14);--vp-c-purple-1: #6f42c1;--vp-c-purple-2: #7e4cc9;--vp-c-purple-3: #8e5cd9;--vp-c-purple-soft: rgba(159, 122, 234, .14);--vp-c-green-1: #18794e;--vp-c-green-2: #299764;--vp-c-green-3: #30a46c;--vp-c-green-soft: rgba(16, 185, 129, .14);--vp-c-yellow-1: #915930;--vp-c-yellow-2: #946300;--vp-c-yellow-3: #9f6a00;--vp-c-yellow-soft: rgba(234, 179, 8, .14);--vp-c-red-1: #b8272c;--vp-c-red-2: #d5393e;--vp-c-red-3: #e0575b;--vp-c-red-soft: rgba(244, 63, 94, .14);--vp-c-sponsor: #db2777}.dark{--vp-c-gray-1: #515c67;--vp-c-gray-2: #414853;--vp-c-gray-3: #32363f;--vp-c-gray-soft: rgba(101, 117, 133, .16);--vp-c-indigo-1: #a8b1ff;--vp-c-indigo-2: #5c73e7;--vp-c-indigo-3: #3e63dd;--vp-c-indigo-soft: rgba(100, 108, 255, .16);--vp-c-purple-1: #c8abfa;--vp-c-purple-2: #a879e6;--vp-c-purple-3: #8e5cd9;--vp-c-purple-soft: rgba(159, 122, 234, .16);--vp-c-green-1: #3dd68c;--vp-c-green-2: #30a46c;--vp-c-green-3: #298459;--vp-c-green-soft: rgba(16, 185, 129, .16);--vp-c-yellow-1: #f9b44e;--vp-c-yellow-2: #da8b17;--vp-c-yellow-3: #a46a0a;--vp-c-yellow-soft: rgba(234, 179, 8, .16);--vp-c-red-1: #f66f81;--vp-c-red-2: #f14158;--vp-c-red-3: #b62a3c;--vp-c-red-soft: rgba(244, 63, 94, .16)}:root{--vp-c-bg: #ffffff;--vp-c-bg-alt: #f6f6f7;--vp-c-bg-elv: #ffffff;--vp-c-bg-soft: #f6f6f7}.dark{--vp-c-bg: #1b1b1f;--vp-c-bg-alt: #161618;--vp-c-bg-elv: #202127;--vp-c-bg-soft: #202127}:root{--vp-c-border: #c2c2c4;--vp-c-divider: #e2e2e3;--vp-c-gutter: #e2e2e3}.dark{--vp-c-border: #3c3f44;--vp-c-divider: #2e2e32;--vp-c-gutter: #000000}:root{--vp-c-text-1: #3c3c43;--vp-c-text-2: #67676c;--vp-c-text-3: #929295}.dark{--vp-c-text-1: #dfdfd6;--vp-c-text-2: #98989f;--vp-c-text-3: #6a6a71}:root{--vp-c-default-1: var(--vp-c-gray-1);--vp-c-default-2: var(--vp-c-gray-2);--vp-c-default-3: var(--vp-c-gray-3);--vp-c-default-soft: var(--vp-c-gray-soft);--vp-c-brand-1: var(--vp-c-indigo-1);--vp-c-brand-2: var(--vp-c-indigo-2);--vp-c-brand-3: var(--vp-c-indigo-3);--vp-c-brand-soft: var(--vp-c-indigo-soft);--vp-c-brand: var(--vp-c-brand-1);--vp-c-tip-1: var(--vp-c-brand-1);--vp-c-tip-2: var(--vp-c-brand-2);--vp-c-tip-3: var(--vp-c-brand-3);--vp-c-tip-soft: var(--vp-c-brand-soft);--vp-c-note-1: var(--vp-c-brand-1);--vp-c-note-2: var(--vp-c-brand-2);--vp-c-note-3: var(--vp-c-brand-3);--vp-c-note-soft: var(--vp-c-brand-soft);--vp-c-success-1: var(--vp-c-green-1);--vp-c-success-2: var(--vp-c-green-2);--vp-c-success-3: var(--vp-c-green-3);--vp-c-success-soft: var(--vp-c-green-soft);--vp-c-important-1: var(--vp-c-purple-1);--vp-c-important-2: var(--vp-c-purple-2);--vp-c-important-3: var(--vp-c-purple-3);--vp-c-important-soft: var(--vp-c-purple-soft);--vp-c-warning-1: var(--vp-c-yellow-1);--vp-c-warning-2: var(--vp-c-yellow-2);--vp-c-warning-3: var(--vp-c-yellow-3);--vp-c-warning-soft: var(--vp-c-yellow-soft);--vp-c-danger-1: var(--vp-c-red-1);--vp-c-danger-2: var(--vp-c-red-2);--vp-c-danger-3: var(--vp-c-red-3);--vp-c-danger-soft: var(--vp-c-red-soft);--vp-c-caution-1: var(--vp-c-red-1);--vp-c-caution-2: var(--vp-c-red-2);--vp-c-caution-3: var(--vp-c-red-3);--vp-c-caution-soft: var(--vp-c-red-soft)}:root{--vp-font-family-base: "Inter", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--vp-font-family-mono: ui-monospace, "Menlo", "Monaco", "Consolas", "Liberation Mono", "Courier New", monospace;font-optical-sizing:auto}:root:where(:lang(zh)){--vp-font-family-base: "Punctuation SC", "Inter", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"}:root{--vp-shadow-1: 0 1px 2px rgba(0, 0, 0, .04), 0 1px 2px rgba(0, 0, 0, .06);--vp-shadow-2: 0 3px 12px rgba(0, 0, 0, .07), 0 1px 4px rgba(0, 0, 0, .07);--vp-shadow-3: 0 12px 32px rgba(0, 0, 0, .1), 0 2px 6px rgba(0, 0, 0, .08);--vp-shadow-4: 0 14px 44px rgba(0, 0, 0, .12), 0 3px 9px rgba(0, 0, 0, .12);--vp-shadow-5: 0 18px 56px rgba(0, 0, 0, .16), 0 4px 12px rgba(0, 0, 0, .16)}:root{--vp-z-index-footer: 10;--vp-z-index-local-nav: 20;--vp-z-index-nav: 30;--vp-z-index-layout-top: 40;--vp-z-index-backdrop: 50;--vp-z-index-sidebar: 60}@media (min-width: 960px){:root{--vp-z-index-sidebar: 25}}:root{--vp-layout-max-width: 1440px}:root{--vp-header-anchor-symbol: "#"}:root{--vp-code-line-height: 1.7;--vp-code-font-size: .875em;--vp-code-color: var(--vp-c-brand-1);--vp-code-link-color: var(--vp-c-brand-1);--vp-code-link-hover-color: var(--vp-c-brand-2);--vp-code-bg: var(--vp-c-default-soft);--vp-code-block-color: var(--vp-c-text-2);--vp-code-block-bg: var(--vp-c-bg-alt);--vp-code-block-divider-color: var(--vp-c-gutter);--vp-code-lang-color: var(--vp-c-text-3);--vp-code-line-highlight-color: var(--vp-c-default-soft);--vp-code-line-number-color: var(--vp-c-text-3);--vp-code-line-diff-add-color: var(--vp-c-success-soft);--vp-code-line-diff-add-symbol-color: var(--vp-c-success-1);--vp-code-line-diff-remove-color: var(--vp-c-danger-soft);--vp-code-line-diff-remove-symbol-color: var(--vp-c-danger-1);--vp-code-line-warning-color: var(--vp-c-warning-soft);--vp-code-line-error-color: var(--vp-c-danger-soft);--vp-code-copy-code-border-color: var(--vp-c-divider);--vp-code-copy-code-bg: var(--vp-c-bg-soft);--vp-code-copy-code-hover-border-color: var(--vp-c-divider);--vp-code-copy-code-hover-bg: var(--vp-c-bg);--vp-code-copy-code-active-text: var(--vp-c-text-2);--vp-code-copy-copied-text-content: "Copied";--vp-code-tab-divider: var(--vp-code-block-divider-color);--vp-code-tab-text-color: var(--vp-c-text-2);--vp-code-tab-bg: var(--vp-code-block-bg);--vp-code-tab-hover-text-color: var(--vp-c-text-1);--vp-code-tab-active-text-color: var(--vp-c-text-1);--vp-code-tab-active-bar-color: var(--vp-c-brand-1)}:lang(es),:lang(pt){--vp-code-copy-copied-text-content: "Copiado"}:lang(fa){--vp-code-copy-copied-text-content: "کپی شد"}:lang(ko){--vp-code-copy-copied-text-content: "복사됨"}:lang(ru){--vp-code-copy-copied-text-content: "Скопировано"}:lang(zh){--vp-code-copy-copied-text-content: "已复制"}:root{--vp-button-brand-border: transparent;--vp-button-brand-text: var(--vp-c-white);--vp-button-brand-bg: var(--vp-c-brand-3);--vp-button-brand-hover-border: transparent;--vp-button-brand-hover-text: var(--vp-c-white);--vp-button-brand-hover-bg: var(--vp-c-brand-2);--vp-button-brand-active-border: transparent;--vp-button-brand-active-text: var(--vp-c-white);--vp-button-brand-active-bg: var(--vp-c-brand-1);--vp-button-alt-border: transparent;--vp-button-alt-text: var(--vp-c-text-1);--vp-button-alt-bg: var(--vp-c-default-3);--vp-button-alt-hover-border: transparent;--vp-button-alt-hover-text: var(--vp-c-text-1);--vp-button-alt-hover-bg: var(--vp-c-default-2);--vp-button-alt-active-border: transparent;--vp-button-alt-active-text: var(--vp-c-text-1);--vp-button-alt-active-bg: var(--vp-c-default-1);--vp-button-sponsor-border: var(--vp-c-text-2);--vp-button-sponsor-text: var(--vp-c-text-2);--vp-button-sponsor-bg: transparent;--vp-button-sponsor-hover-border: var(--vp-c-sponsor);--vp-button-sponsor-hover-text: var(--vp-c-sponsor);--vp-button-sponsor-hover-bg: transparent;--vp-button-sponsor-active-border: var(--vp-c-sponsor);--vp-button-sponsor-active-text: var(--vp-c-sponsor);--vp-button-sponsor-active-bg: transparent}:root{--vp-custom-block-font-size: 14px;--vp-custom-block-code-font-size: 13px;--vp-custom-block-info-border: transparent;--vp-custom-block-info-text: var(--vp-c-text-1);--vp-custom-block-info-bg: var(--vp-c-default-soft);--vp-custom-block-info-code-bg: var(--vp-c-default-soft);--vp-custom-block-note-border: transparent;--vp-custom-block-note-text: var(--vp-c-text-1);--vp-custom-block-note-bg: var(--vp-c-default-soft);--vp-custom-block-note-code-bg: var(--vp-c-default-soft);--vp-custom-block-tip-border: transparent;--vp-custom-block-tip-text: var(--vp-c-text-1);--vp-custom-block-tip-bg: var(--vp-c-tip-soft);--vp-custom-block-tip-code-bg: var(--vp-c-tip-soft);--vp-custom-block-important-border: transparent;--vp-custom-block-important-text: var(--vp-c-text-1);--vp-custom-block-important-bg: var(--vp-c-important-soft);--vp-custom-block-important-code-bg: var(--vp-c-important-soft);--vp-custom-block-warning-border: transparent;--vp-custom-block-warning-text: var(--vp-c-text-1);--vp-custom-block-warning-bg: var(--vp-c-warning-soft);--vp-custom-block-warning-code-bg: var(--vp-c-warning-soft);--vp-custom-block-danger-border: transparent;--vp-custom-block-danger-text: var(--vp-c-text-1);--vp-custom-block-danger-bg: var(--vp-c-danger-soft);--vp-custom-block-danger-code-bg: var(--vp-c-danger-soft);--vp-custom-block-caution-border: transparent;--vp-custom-block-caution-text: var(--vp-c-text-1);--vp-custom-block-caution-bg: var(--vp-c-caution-soft);--vp-custom-block-caution-code-bg: var(--vp-c-caution-soft);--vp-custom-block-details-border: var(--vp-custom-block-info-border);--vp-custom-block-details-text: var(--vp-custom-block-info-text);--vp-custom-block-details-bg: var(--vp-custom-block-info-bg);--vp-custom-block-details-code-bg: var(--vp-custom-block-info-code-bg)}:root{--vp-input-border-color: var(--vp-c-border);--vp-input-bg-color: var(--vp-c-bg-alt);--vp-input-switch-bg-color: var(--vp-c-default-soft)}:root{--vp-nav-height: 64px;--vp-nav-bg-color: var(--vp-c-bg);--vp-nav-screen-bg-color: var(--vp-c-bg);--vp-nav-logo-height: 24px}.hide-nav{--vp-nav-height: 0px}.hide-nav .VPSidebar{--vp-nav-height: 22px}:root{--vp-local-nav-bg-color: var(--vp-c-bg)}:root{--vp-sidebar-width: 272px;--vp-sidebar-bg-color: var(--vp-c-bg-alt)}:root{--vp-backdrop-bg-color: rgba(0, 0, 0, .6)}:root{--vp-home-hero-name-color: var(--vp-c-brand-1);--vp-home-hero-name-background: transparent;--vp-home-hero-image-background-image: none;--vp-home-hero-image-filter: none}:root{--vp-badge-info-border: transparent;--vp-badge-info-text: var(--vp-c-text-2);--vp-badge-info-bg: var(--vp-c-default-soft);--vp-badge-tip-border: transparent;--vp-badge-tip-text: var(--vp-c-tip-1);--vp-badge-tip-bg: var(--vp-c-tip-soft);--vp-badge-warning-border: transparent;--vp-badge-warning-text: var(--vp-c-warning-1);--vp-badge-warning-bg: var(--vp-c-warning-soft);--vp-badge-danger-border: transparent;--vp-badge-danger-text: var(--vp-c-danger-1);--vp-badge-danger-bg: var(--vp-c-danger-soft)}:root{--vp-carbon-ads-text-color: var(--vp-c-text-1);--vp-carbon-ads-poweredby-color: var(--vp-c-text-2);--vp-carbon-ads-bg-color: var(--vp-c-bg-soft);--vp-carbon-ads-hover-text-color: var(--vp-c-brand-1);--vp-carbon-ads-hover-poweredby-color: var(--vp-c-text-1)}:root{--vp-local-search-bg: var(--vp-c-bg);--vp-local-search-result-bg: var(--vp-c-bg);--vp-local-search-result-border: var(--vp-c-divider);--vp-local-search-result-selected-bg: var(--vp-c-bg);--vp-local-search-result-selected-border: var(--vp-c-brand-1);--vp-local-search-highlight-bg: var(--vp-c-brand-1);--vp-local-search-highlight-text: var(--vp-c-neutral-inverse)}@media (prefers-reduced-motion: reduce){*,:before,:after{animation-delay:-1ms!important;animation-duration:1ms!important;animation-iteration-count:1!important;background-attachment:initial!important;scroll-behavior:auto!important;transition-duration:0s!important;transition-delay:0s!important}}*,:before,:after{box-sizing:border-box}html{line-height:1.4;font-size:16px;-webkit-text-size-adjust:100%}html.dark{color-scheme:dark}body{margin:0;width:100%;min-width:320px;min-height:100vh;line-height:24px;font-family:var(--vp-font-family-base);font-size:16px;font-weight:400;color:var(--vp-c-text-1);background-color:var(--vp-c-bg);font-synthesis:style;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}main{display:block}h1,h2,h3,h4,h5,h6{margin:0;line-height:24px;font-size:16px;font-weight:400}p{margin:0}strong,b{font-weight:600}a,area,button,[role=button],input,label,select,summary,textarea{touch-action:manipulation}a{color:inherit;text-decoration:inherit}ol,ul{list-style:none;margin:0;padding:0}blockquote{margin:0}pre,code,kbd,samp{font-family:var(--vp-font-family-mono)}img,svg,video,canvas,audio,iframe,embed,object{display:block}figure{margin:0}img,video{max-width:100%;height:auto}button,input,optgroup,select,textarea{border:0;padding:0;line-height:inherit;color:inherit}button{padding:0;font-family:inherit;background-color:transparent;background-image:none}button:enabled,[role=button]:enabled{cursor:pointer}button:focus,button:focus-visible{outline:1px dotted;outline:4px auto -webkit-focus-ring-color}button:focus:not(:focus-visible){outline:none!important}input:focus,textarea:focus,select:focus{outline:none}table{border-collapse:collapse}input{background-color:transparent}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:var(--vp-c-text-3)}input::-ms-input-placeholder,textarea::-ms-input-placeholder{color:var(--vp-c-text-3)}input::placeholder,textarea::placeholder{color:var(--vp-c-text-3)}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}textarea{resize:vertical}select{-webkit-appearance:none}fieldset{margin:0;padding:0}h1,h2,h3,h4,h5,h6,li,p{overflow-wrap:break-word}vite-error-overlay{z-index:9999}mjx-container{overflow-x:auto}mjx-container>svg{display:inline-block;margin:auto}[class^=vpi-],[class*=" vpi-"],.vp-icon{width:1em;height:1em}[class^=vpi-].bg,[class*=" vpi-"].bg,.vp-icon.bg{background-size:100% 100%;background-color:transparent}[class^=vpi-]:not(.bg),[class*=" vpi-"]:not(.bg),.vp-icon:not(.bg){-webkit-mask:var(--icon) no-repeat;mask:var(--icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit}.vpi-align-left{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M21 6H3M15 12H3M17 18H3'/%3E%3C/svg%3E")}.vpi-arrow-right,.vpi-arrow-down,.vpi-arrow-left,.vpi-arrow-up{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M5 12h14M12 5l7 7-7 7'/%3E%3C/svg%3E")}.vpi-chevron-right,.vpi-chevron-down,.vpi-chevron-left,.vpi-chevron-up{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='m9 18 6-6-6-6'/%3E%3C/svg%3E")}.vpi-chevron-down,.vpi-arrow-down{transform:rotate(90deg)}.vpi-chevron-left,.vpi-arrow-left{transform:rotate(180deg)}.vpi-chevron-up,.vpi-arrow-up{transform:rotate(-90deg)}.vpi-square-pen{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7'/%3E%3Cpath d='M18.375 2.625a2.121 2.121 0 1 1 3 3L12 15l-4 1 1-4Z'/%3E%3C/svg%3E")}.vpi-plus{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M5 12h14M12 5v14'/%3E%3C/svg%3E")}.vpi-sun{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='4'/%3E%3Cpath d='M12 2v2M12 20v2M4.93 4.93l1.41 1.41M17.66 17.66l1.41 1.41M2 12h2M20 12h2M6.34 17.66l-1.41 1.41M19.07 4.93l-1.41 1.41'/%3E%3C/svg%3E")}.vpi-moon{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z'/%3E%3C/svg%3E")}.vpi-more-horizontal{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='1'/%3E%3Ccircle cx='19' cy='12' r='1'/%3E%3Ccircle cx='5' cy='12' r='1'/%3E%3C/svg%3E")}.vpi-languages{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='m5 8 6 6M4 14l6-6 2-3M2 5h12M7 2h1M22 22l-5-10-5 10M14 18h6'/%3E%3C/svg%3E")}.vpi-heart{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M19 14c1.49-1.46 3-3.21 3-5.5A5.5 5.5 0 0 0 16.5 3c-1.76 0-3 .5-4.5 2-1.5-1.5-2.74-2-4.5-2A5.5 5.5 0 0 0 2 8.5c0 2.3 1.5 4.05 3 5.5l7 7Z'/%3E%3C/svg%3E")}.vpi-search{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Ccircle cx='11' cy='11' r='8'/%3E%3Cpath d='m21 21-4.3-4.3'/%3E%3C/svg%3E")}.vpi-layout-list{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Crect width='7' height='7' x='3' y='3' rx='1'/%3E%3Crect width='7' height='7' x='3' y='14' rx='1'/%3E%3Cpath d='M14 4h7M14 9h7M14 15h7M14 20h7'/%3E%3C/svg%3E")}.vpi-delete{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M20 5H9l-7 7 7 7h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2ZM18 9l-6 6M12 9l6 6'/%3E%3C/svg%3E")}.vpi-corner-down-left{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='m9 10-5 5 5 5'/%3E%3Cpath d='M20 4v7a4 4 0 0 1-4 4H4'/%3E%3C/svg%3E")}:root{--vp-icon-copy: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='rgba(128,128,128,1)' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Crect width='8' height='4' x='8' y='2' rx='1' ry='1'/%3E%3Cpath d='M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2'/%3E%3C/svg%3E");--vp-icon-copied: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='rgba(128,128,128,1)' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Crect width='8' height='4' x='8' y='2' rx='1' ry='1'/%3E%3Cpath d='M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2'/%3E%3Cpath d='m9 14 2 2 4-4'/%3E%3C/svg%3E")}.visually-hidden{position:absolute;width:1px;height:1px;white-space:nowrap;clip:rect(0 0 0 0);clip-path:inset(50%);overflow:hidden}.custom-block{border:1px solid transparent;border-radius:8px;padding:16px 16px 8px;line-height:24px;font-size:var(--vp-custom-block-font-size);color:var(--vp-c-text-2)}.custom-block.info{border-color:var(--vp-custom-block-info-border);color:var(--vp-custom-block-info-text);background-color:var(--vp-custom-block-info-bg)}.custom-block.info a,.custom-block.info code{color:var(--vp-c-brand-1)}.custom-block.info a:hover,.custom-block.info a:hover>code{color:var(--vp-c-brand-2)}.custom-block.info code{background-color:var(--vp-custom-block-info-code-bg)}.custom-block.note{border-color:var(--vp-custom-block-note-border);color:var(--vp-custom-block-note-text);background-color:var(--vp-custom-block-note-bg)}.custom-block.note a,.custom-block.note code{color:var(--vp-c-brand-1)}.custom-block.note a:hover,.custom-block.note a:hover>code{color:var(--vp-c-brand-2)}.custom-block.note code{background-color:var(--vp-custom-block-note-code-bg)}.custom-block.tip{border-color:var(--vp-custom-block-tip-border);color:var(--vp-custom-block-tip-text);background-color:var(--vp-custom-block-tip-bg)}.custom-block.tip a,.custom-block.tip code{color:var(--vp-c-tip-1)}.custom-block.tip a:hover,.custom-block.tip a:hover>code{color:var(--vp-c-tip-2)}.custom-block.tip code{background-color:var(--vp-custom-block-tip-code-bg)}.custom-block.important{border-color:var(--vp-custom-block-important-border);color:var(--vp-custom-block-important-text);background-color:var(--vp-custom-block-important-bg)}.custom-block.important a,.custom-block.important code{color:var(--vp-c-important-1)}.custom-block.important a:hover,.custom-block.important a:hover>code{color:var(--vp-c-important-2)}.custom-block.important code{background-color:var(--vp-custom-block-important-code-bg)}.custom-block.warning{border-color:var(--vp-custom-block-warning-border);color:var(--vp-custom-block-warning-text);background-color:var(--vp-custom-block-warning-bg)}.custom-block.warning a,.custom-block.warning code{color:var(--vp-c-warning-1)}.custom-block.warning a:hover,.custom-block.warning a:hover>code{color:var(--vp-c-warning-2)}.custom-block.warning code{background-color:var(--vp-custom-block-warning-code-bg)}.custom-block.danger{border-color:var(--vp-custom-block-danger-border);color:var(--vp-custom-block-danger-text);background-color:var(--vp-custom-block-danger-bg)}.custom-block.danger a,.custom-block.danger code{color:var(--vp-c-danger-1)}.custom-block.danger a:hover,.custom-block.danger a:hover>code{color:var(--vp-c-danger-2)}.custom-block.danger code{background-color:var(--vp-custom-block-danger-code-bg)}.custom-block.caution{border-color:var(--vp-custom-block-caution-border);color:var(--vp-custom-block-caution-text);background-color:var(--vp-custom-block-caution-bg)}.custom-block.caution a,.custom-block.caution code{color:var(--vp-c-caution-1)}.custom-block.caution a:hover,.custom-block.caution a:hover>code{color:var(--vp-c-caution-2)}.custom-block.caution code{background-color:var(--vp-custom-block-caution-code-bg)}.custom-block.details{border-color:var(--vp-custom-block-details-border);color:var(--vp-custom-block-details-text);background-color:var(--vp-custom-block-details-bg)}.custom-block.details a{color:var(--vp-c-brand-1)}.custom-block.details a:hover,.custom-block.details a:hover>code{color:var(--vp-c-brand-2)}.custom-block.details code{background-color:var(--vp-custom-block-details-code-bg)}.custom-block-title{font-weight:600}.custom-block p+p{margin:8px 0}.custom-block.details summary{margin:0 0 8px;font-weight:700;cursor:pointer;-webkit-user-select:none;user-select:none}.custom-block.details summary+p{margin:8px 0}.custom-block a{color:inherit;font-weight:600;text-decoration:underline;text-underline-offset:2px;transition:opacity .25s}.custom-block a:hover{opacity:.75}.custom-block code{font-size:var(--vp-custom-block-code-font-size)}.custom-block.custom-block th,.custom-block.custom-block blockquote>p{font-size:var(--vp-custom-block-font-size);color:inherit}.dark .vp-code span{color:var(--shiki-dark, inherit)}html:not(.dark) .vp-code span{color:var(--shiki-light, inherit)}.vp-code-group{margin-top:16px}.vp-code-group .tabs{position:relative;display:flex;margin-right:-24px;margin-left:-24px;padding:0 12px;background-color:var(--vp-code-tab-bg);overflow-x:auto;overflow-y:hidden;box-shadow:inset 0 -1px var(--vp-code-tab-divider)}@media (min-width: 640px){.vp-code-group .tabs{margin-right:0;margin-left:0;border-radius:8px 8px 0 0}}.vp-code-group .tabs input{position:fixed;opacity:0;pointer-events:none}.vp-code-group .tabs label{position:relative;display:inline-block;border-bottom:1px solid transparent;padding:0 12px;line-height:48px;font-size:14px;font-weight:500;color:var(--vp-code-tab-text-color);white-space:nowrap;cursor:pointer;transition:color .25s}.vp-code-group .tabs label:after{position:absolute;right:8px;bottom:-1px;left:8px;z-index:1;height:2px;border-radius:2px;content:"";background-color:transparent;transition:background-color .25s}.vp-code-group label:hover{color:var(--vp-code-tab-hover-text-color)}.vp-code-group input:checked+label{color:var(--vp-code-tab-active-text-color)}.vp-code-group input:checked+label:after{background-color:var(--vp-code-tab-active-bar-color)}.vp-code-group div[class*=language-],.vp-block{display:none;margin-top:0!important;border-top-left-radius:0!important;border-top-right-radius:0!important}.vp-code-group div[class*=language-].active,.vp-block.active{display:block}.vp-block{padding:20px 24px}.vp-doc h1,.vp-doc h2,.vp-doc h3,.vp-doc h4,.vp-doc h5,.vp-doc h6{position:relative;font-weight:600;outline:none}.vp-doc h1{letter-spacing:-.02em;line-height:40px;font-size:28px}.vp-doc h2{margin:48px 0 16px;border-top:1px solid var(--vp-c-divider);padding-top:24px;letter-spacing:-.02em;line-height:32px;font-size:24px}.vp-doc h3{margin:32px 0 0;letter-spacing:-.01em;line-height:28px;font-size:20px}.vp-doc h4{margin:24px 0 0;letter-spacing:-.01em;line-height:24px;font-size:18px}.vp-doc .header-anchor{position:absolute;top:0;left:0;margin-left:-.87em;font-weight:500;-webkit-user-select:none;user-select:none;opacity:0;text-decoration:none;transition:color .25s,opacity .25s}.vp-doc .header-anchor:before{content:var(--vp-header-anchor-symbol)}.vp-doc h1:hover .header-anchor,.vp-doc h1 .header-anchor:focus,.vp-doc h2:hover .header-anchor,.vp-doc h2 .header-anchor:focus,.vp-doc h3:hover .header-anchor,.vp-doc h3 .header-anchor:focus,.vp-doc h4:hover .header-anchor,.vp-doc h4 .header-anchor:focus,.vp-doc h5:hover .header-anchor,.vp-doc h5 .header-anchor:focus,.vp-doc h6:hover .header-anchor,.vp-doc h6 .header-anchor:focus{opacity:1}@media (min-width: 768px){.vp-doc h1{letter-spacing:-.02em;line-height:40px;font-size:32px}}.vp-doc h2 .header-anchor{top:24px}.vp-doc p,.vp-doc summary{margin:16px 0}.vp-doc p{line-height:28px}.vp-doc blockquote{margin:16px 0;border-left:2px solid var(--vp-c-divider);padding-left:16px;transition:border-color .5s;color:var(--vp-c-text-2)}.vp-doc blockquote>p{margin:0;font-size:16px;transition:color .5s}.vp-doc a{font-weight:500;color:var(--vp-c-brand-1);text-decoration:underline;text-underline-offset:2px;transition:color .25s,opacity .25s}.vp-doc a:hover{color:var(--vp-c-brand-2)}.vp-doc strong{font-weight:600}.vp-doc ul,.vp-doc ol{padding-left:1.25rem;margin:16px 0}.vp-doc ul{list-style:disc}.vp-doc ol{list-style:decimal}.vp-doc li+li{margin-top:8px}.vp-doc li>ol,.vp-doc li>ul{margin:8px 0 0}.vp-doc table{display:block;border-collapse:collapse;margin:20px 0;overflow-x:auto}.vp-doc tr{background-color:var(--vp-c-bg);border-top:1px solid var(--vp-c-divider);transition:background-color .5s}.vp-doc tr:nth-child(2n){background-color:var(--vp-c-bg-soft)}.vp-doc th,.vp-doc td{border:1px solid var(--vp-c-divider);padding:8px 16px}.vp-doc th{text-align:left;font-size:14px;font-weight:600;color:var(--vp-c-text-2);background-color:var(--vp-c-bg-soft)}.vp-doc td{font-size:14px}.vp-doc hr{margin:16px 0;border:none;border-top:1px solid var(--vp-c-divider)}.vp-doc .custom-block{margin:16px 0}.vp-doc .custom-block p{margin:8px 0;line-height:24px}.vp-doc .custom-block p:first-child{margin:0}.vp-doc .custom-block div[class*=language-]{margin:8px 0;border-radius:8px}.vp-doc .custom-block div[class*=language-] code{font-weight:400;background-color:transparent}.vp-doc .custom-block .vp-code-group .tabs{margin:0;border-radius:8px 8px 0 0}.vp-doc :not(pre,h1,h2,h3,h4,h5,h6)>code{font-size:var(--vp-code-font-size);color:var(--vp-code-color)}.vp-doc :not(pre)>code{border-radius:4px;padding:3px 6px;background-color:var(--vp-code-bg);transition:color .25s,background-color .5s}.vp-doc a>code{color:var(--vp-code-link-color)}.vp-doc a:hover>code{color:var(--vp-code-link-hover-color)}.vp-doc h1>code,.vp-doc h2>code,.vp-doc h3>code,.vp-doc h4>code{font-size:.9em}.vp-doc div[class*=language-],.vp-block{position:relative;margin:16px -24px;background-color:var(--vp-code-block-bg);overflow-x:auto;transition:background-color .5s}@media (min-width: 640px){.vp-doc div[class*=language-],.vp-block{border-radius:8px;margin:16px 0}}@media (max-width: 639px){.vp-doc li div[class*=language-]{border-radius:8px 0 0 8px}}.vp-doc div[class*=language-]+div[class*=language-],.vp-doc div[class$=-api]+div[class*=language-],.vp-doc div[class*=language-]+div[class$=-api]>div[class*=language-]{margin-top:-8px}.vp-doc [class*=language-] pre,.vp-doc [class*=language-] code{direction:ltr;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}.vp-doc [class*=language-] pre{position:relative;z-index:1;margin:0;padding:20px 0;background:transparent;overflow-x:auto}.vp-doc [class*=language-] code{display:block;padding:0 24px;width:fit-content;min-width:100%;line-height:var(--vp-code-line-height);font-size:var(--vp-code-font-size);color:var(--vp-code-block-color);transition:color .5s}.vp-doc [class*=language-] code .highlighted{background-color:var(--vp-code-line-highlight-color);transition:background-color .5s;margin:0 -24px;padding:0 24px;width:calc(100% + 48px);display:inline-block}.vp-doc [class*=language-] code .highlighted.error{background-color:var(--vp-code-line-error-color)}.vp-doc [class*=language-] code .highlighted.warning{background-color:var(--vp-code-line-warning-color)}.vp-doc [class*=language-] code .diff{transition:background-color .5s;margin:0 -24px;padding:0 24px;width:calc(100% + 48px);display:inline-block}.vp-doc [class*=language-] code .diff:before{position:absolute;left:10px}.vp-doc [class*=language-] .has-focused-lines .line:not(.has-focus){filter:blur(.095rem);opacity:.4;transition:filter .35s,opacity .35s}.vp-doc [class*=language-] .has-focused-lines .line:not(.has-focus){opacity:.7;transition:filter .35s,opacity .35s}.vp-doc [class*=language-]:hover .has-focused-lines .line:not(.has-focus){filter:blur(0);opacity:1}.vp-doc [class*=language-] code .diff.remove{background-color:var(--vp-code-line-diff-remove-color);opacity:.7}.vp-doc [class*=language-] code .diff.remove:before{content:"-";color:var(--vp-code-line-diff-remove-symbol-color)}.vp-doc [class*=language-] code .diff.add{background-color:var(--vp-code-line-diff-add-color)}.vp-doc [class*=language-] code .diff.add:before{content:"+";color:var(--vp-code-line-diff-add-symbol-color)}.vp-doc div[class*=language-].line-numbers-mode{padding-left:32px}.vp-doc .line-numbers-wrapper{position:absolute;top:0;bottom:0;left:0;z-index:3;border-right:1px solid var(--vp-code-block-divider-color);padding-top:20px;width:32px;text-align:center;font-family:var(--vp-font-family-mono);line-height:var(--vp-code-line-height);font-size:var(--vp-code-font-size);color:var(--vp-code-line-number-color);transition:border-color .5s,color .5s}.vp-doc [class*=language-]>button.copy{direction:ltr;position:absolute;top:12px;right:12px;z-index:3;border:1px solid var(--vp-code-copy-code-border-color);border-radius:4px;width:40px;height:40px;background-color:var(--vp-code-copy-code-bg);opacity:0;cursor:pointer;background-image:var(--vp-icon-copy);background-position:50%;background-size:20px;background-repeat:no-repeat;transition:border-color .25s,background-color .25s,opacity .25s}.vp-doc [class*=language-]:hover>button.copy,.vp-doc [class*=language-]>button.copy:focus{opacity:1}.vp-doc [class*=language-]>button.copy:hover,.vp-doc [class*=language-]>button.copy.copied{border-color:var(--vp-code-copy-code-hover-border-color);background-color:var(--vp-code-copy-code-hover-bg)}.vp-doc [class*=language-]>button.copy.copied,.vp-doc [class*=language-]>button.copy:hover.copied{border-radius:0 4px 4px 0;background-color:var(--vp-code-copy-code-hover-bg);background-image:var(--vp-icon-copied)}.vp-doc [class*=language-]>button.copy.copied:before,.vp-doc [class*=language-]>button.copy:hover.copied:before{position:relative;top:-1px;transform:translate(calc(-100% - 1px));display:flex;justify-content:center;align-items:center;border:1px solid var(--vp-code-copy-code-hover-border-color);border-right:0;border-radius:4px 0 0 4px;padding:0 10px;width:fit-content;height:40px;text-align:center;font-size:12px;font-weight:500;color:var(--vp-code-copy-code-active-text);background-color:var(--vp-code-copy-code-hover-bg);white-space:nowrap;content:var(--vp-code-copy-copied-text-content)}.vp-doc [class*=language-]>span.lang{position:absolute;top:2px;right:8px;z-index:2;font-size:12px;font-weight:500;-webkit-user-select:none;user-select:none;color:var(--vp-code-lang-color);transition:color .4s,opacity .4s}.vp-doc [class*=language-]:hover>button.copy+span.lang,.vp-doc [class*=language-]>button.copy:focus+span.lang{opacity:0}.vp-doc .VPTeamMembers{margin-top:24px}.vp-doc .VPTeamMembers.small.count-1 .container{margin:0!important;max-width:calc((100% - 24px)/2)!important}.vp-doc .VPTeamMembers.small.count-2 .container,.vp-doc .VPTeamMembers.small.count-3 .container{max-width:100%!important}.vp-doc .VPTeamMembers.medium.count-1 .container{margin:0!important;max-width:calc((100% - 24px)/2)!important}:is(.vp-external-link-icon,.vp-doc a[href*="://"],.vp-doc a[target=_blank]):not(:is(.no-icon,svg a,:has(img,svg))):after{display:inline-block;margin-top:-1px;margin-left:4px;width:11px;height:11px;background:currentColor;color:var(--vp-c-text-3);flex-shrink:0;--icon: url("data:image/svg+xml, %3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' %3E%3Cpath d='M0 0h24v24H0V0z' fill='none' /%3E%3Cpath d='M9 5v2h6.59L4 18.59 5.41 20 17 8.41V15h2V5H9z' /%3E%3C/svg%3E");-webkit-mask-image:var(--icon);mask-image:var(--icon)}.vp-external-link-icon:after{content:""}.external-link-icon-enabled :is(.vp-doc a[href*="://"],.vp-doc a[target=_blank]):not(:is(.no-icon,svg a,:has(img,svg))):after{content:"";color:currentColor}.vp-sponsor{border-radius:16px;overflow:hidden}.vp-sponsor.aside{border-radius:12px}.vp-sponsor-section+.vp-sponsor-section{margin-top:4px}.vp-sponsor-tier{margin:0 0 4px!important;text-align:center;letter-spacing:1px!important;line-height:24px;width:100%;font-weight:600;color:var(--vp-c-text-2);background-color:var(--vp-c-bg-soft)}.vp-sponsor.normal .vp-sponsor-tier{padding:13px 0 11px;font-size:14px}.vp-sponsor.aside .vp-sponsor-tier{padding:9px 0 7px;font-size:12px}.vp-sponsor-grid+.vp-sponsor-tier{margin-top:4px}.vp-sponsor-grid{display:flex;flex-wrap:wrap;gap:4px}.vp-sponsor-grid.xmini .vp-sponsor-grid-link{height:64px}.vp-sponsor-grid.xmini .vp-sponsor-grid-image{max-width:64px;max-height:22px}.vp-sponsor-grid.mini .vp-sponsor-grid-link{height:72px}.vp-sponsor-grid.mini .vp-sponsor-grid-image{max-width:96px;max-height:24px}.vp-sponsor-grid.small .vp-sponsor-grid-link{height:96px}.vp-sponsor-grid.small .vp-sponsor-grid-image{max-width:96px;max-height:24px}.vp-sponsor-grid.medium .vp-sponsor-grid-link{height:112px}.vp-sponsor-grid.medium .vp-sponsor-grid-image{max-width:120px;max-height:36px}.vp-sponsor-grid.big .vp-sponsor-grid-link{height:184px}.vp-sponsor-grid.big .vp-sponsor-grid-image{max-width:192px;max-height:56px}.vp-sponsor-grid[data-vp-grid="2"] .vp-sponsor-grid-item{width:calc((100% - 4px)/2)}.vp-sponsor-grid[data-vp-grid="3"] .vp-sponsor-grid-item{width:calc((100% - 4px * 2) / 3)}.vp-sponsor-grid[data-vp-grid="4"] .vp-sponsor-grid-item{width:calc((100% - 12px)/4)}.vp-sponsor-grid[data-vp-grid="5"] .vp-sponsor-grid-item{width:calc((100% - 16px)/5)}.vp-sponsor-grid[data-vp-grid="6"] .vp-sponsor-grid-item{width:calc((100% - 4px * 5) / 6)}.vp-sponsor-grid-item{flex-shrink:0;width:100%;background-color:var(--vp-c-bg-soft);transition:background-color .25s}.vp-sponsor-grid-item:hover{background-color:var(--vp-c-default-soft)}.vp-sponsor-grid-item:hover .vp-sponsor-grid-image{filter:grayscale(0) invert(0)}.vp-sponsor-grid-item.empty:hover{background-color:var(--vp-c-bg-soft)}.dark .vp-sponsor-grid-item:hover{background-color:var(--vp-c-white)}.dark .vp-sponsor-grid-item.empty:hover{background-color:var(--vp-c-bg-soft)}.vp-sponsor-grid-link{display:flex}.vp-sponsor-grid-box{display:flex;justify-content:center;align-items:center;width:100%}.vp-sponsor-grid-image{max-width:100%;filter:grayscale(1);transition:filter .25s}.dark .vp-sponsor-grid-image{filter:grayscale(1) invert(1)}.VPBadge{display:inline-block;margin-left:2px;border:1px solid transparent;border-radius:12px;padding:0 10px;line-height:22px;font-size:12px;font-weight:500;transform:translateY(-2px)}.VPBadge.small{padding:0 6px;line-height:18px;font-size:10px;transform:translateY(-8px)}.VPDocFooter .VPBadge{display:none}.vp-doc h1>.VPBadge{margin-top:4px;vertical-align:top}.vp-doc h2>.VPBadge{margin-top:3px;padding:0 8px;vertical-align:top}.vp-doc h3>.VPBadge{vertical-align:middle}.vp-doc h4>.VPBadge,.vp-doc h5>.VPBadge,.vp-doc h6>.VPBadge{vertical-align:middle;line-height:18px}.VPBadge.info{border-color:var(--vp-badge-info-border);color:var(--vp-badge-info-text);background-color:var(--vp-badge-info-bg)}.VPBadge.tip{border-color:var(--vp-badge-tip-border);color:var(--vp-badge-tip-text);background-color:var(--vp-badge-tip-bg)}.VPBadge.warning{border-color:var(--vp-badge-warning-border);color:var(--vp-badge-warning-text);background-color:var(--vp-badge-warning-bg)}.VPBadge.danger{border-color:var(--vp-badge-danger-border);color:var(--vp-badge-danger-text);background-color:var(--vp-badge-danger-bg)}.VPBackdrop[data-v-b06cdb19]{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--vp-z-index-backdrop);background:var(--vp-backdrop-bg-color);transition:opacity .5s}.VPBackdrop.fade-enter-from[data-v-b06cdb19],.VPBackdrop.fade-leave-to[data-v-b06cdb19]{opacity:0}.VPBackdrop.fade-leave-active[data-v-b06cdb19]{transition-duration:.25s}@media (min-width: 1280px){.VPBackdrop[data-v-b06cdb19]{display:none}}.NotFound[data-v-951cab6c]{padding:64px 24px 96px;text-align:center}@media (min-width: 768px){.NotFound[data-v-951cab6c]{padding:96px 32px 168px}}.code[data-v-951cab6c]{line-height:64px;font-size:64px;font-weight:600}.title[data-v-951cab6c]{padding-top:12px;letter-spacing:2px;line-height:20px;font-size:20px;font-weight:700}.divider[data-v-951cab6c]{margin:24px auto 18px;width:64px;height:1px;background-color:var(--vp-c-divider)}.quote[data-v-951cab6c]{margin:0 auto;max-width:256px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.action[data-v-951cab6c]{padding-top:20px}.link[data-v-951cab6c]{display:inline-block;border:1px solid var(--vp-c-brand-1);border-radius:16px;padding:3px 16px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:border-color .25s,color .25s}.link[data-v-951cab6c]:hover{border-color:var(--vp-c-brand-2);color:var(--vp-c-brand-2)}.root[data-v-3f927ebe]{position:relative;z-index:1}.nested[data-v-3f927ebe]{padding-right:16px;padding-left:16px}.outline-link[data-v-3f927ebe]{display:block;line-height:32px;font-size:14px;font-weight:400;color:var(--vp-c-text-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:color .5s}.outline-link[data-v-3f927ebe]:hover,.outline-link.active[data-v-3f927ebe]{color:var(--vp-c-text-1);transition:color .25s}.outline-link.nested[data-v-3f927ebe]{padding-left:13px}.VPDocAsideOutline[data-v-b38bf2ff]{display:none}.VPDocAsideOutline.has-outline[data-v-b38bf2ff]{display:block}.content[data-v-b38bf2ff]{position:relative;border-left:1px solid var(--vp-c-divider);padding-left:16px;font-size:13px;font-weight:500}.outline-marker[data-v-b38bf2ff]{position:absolute;top:32px;left:-1px;z-index:0;opacity:0;width:2px;border-radius:2px;height:18px;background-color:var(--vp-c-brand-1);transition:top .25s cubic-bezier(0,1,.5,1),background-color .5s,opacity .25s}.outline-title[data-v-b38bf2ff]{line-height:32px;font-size:14px;font-weight:600}.VPDocAside[data-v-6d7b3c46]{display:flex;flex-direction:column;flex-grow:1}.spacer[data-v-6d7b3c46]{flex-grow:1}.VPDocAside[data-v-6d7b3c46] .spacer+.VPDocAsideSponsors,.VPDocAside[data-v-6d7b3c46] .spacer+.VPDocAsideCarbonAds{margin-top:24px}.VPDocAside[data-v-6d7b3c46] .VPDocAsideSponsors+.VPDocAsideCarbonAds{margin-top:16px}.VPLastUpdated[data-v-475f71b8]{line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}@media (min-width: 640px){.VPLastUpdated[data-v-475f71b8]{line-height:32px;font-size:14px;font-weight:500}}.VPDocFooter[data-v-4f9813fa]{margin-top:64px}.edit-info[data-v-4f9813fa]{padding-bottom:18px}@media (min-width: 640px){.edit-info[data-v-4f9813fa]{display:flex;justify-content:space-between;align-items:center;padding-bottom:14px}}.edit-link-button[data-v-4f9813fa]{display:flex;align-items:center;border:0;line-height:32px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:color .25s}.edit-link-button[data-v-4f9813fa]:hover{color:var(--vp-c-brand-2)}.edit-link-icon[data-v-4f9813fa]{margin-right:8px}.prev-next[data-v-4f9813fa]{border-top:1px solid var(--vp-c-divider);padding-top:24px;display:grid;grid-row-gap:8px}@media (min-width: 640px){.prev-next[data-v-4f9813fa]{grid-template-columns:repeat(2,1fr);grid-column-gap:16px}}.pager-link[data-v-4f9813fa]{display:block;border:1px solid var(--vp-c-divider);border-radius:8px;padding:11px 16px 13px;width:100%;height:100%;transition:border-color .25s}.pager-link[data-v-4f9813fa]:hover{border-color:var(--vp-c-brand-1)}.pager-link.next[data-v-4f9813fa]{margin-left:auto;text-align:right}.desc[data-v-4f9813fa]{display:block;line-height:20px;font-size:12px;font-weight:500;color:var(--vp-c-text-2)}.title[data-v-4f9813fa]{display:block;line-height:20px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:color .25s}.VPDoc[data-v-83890dd9]{padding:32px 24px 96px;width:100%}@media (min-width: 768px){.VPDoc[data-v-83890dd9]{padding:48px 32px 128px}}@media (min-width: 960px){.VPDoc[data-v-83890dd9]{padding:48px 32px 0}.VPDoc:not(.has-sidebar) .container[data-v-83890dd9]{display:flex;justify-content:center;max-width:992px}.VPDoc:not(.has-sidebar) .content[data-v-83890dd9]{max-width:752px}}@media (min-width: 1280px){.VPDoc .container[data-v-83890dd9]{display:flex;justify-content:center}.VPDoc .aside[data-v-83890dd9]{display:block}}@media (min-width: 1440px){.VPDoc:not(.has-sidebar) .content[data-v-83890dd9]{max-width:784px}.VPDoc:not(.has-sidebar) .container[data-v-83890dd9]{max-width:1104px}}.container[data-v-83890dd9]{margin:0 auto;width:100%}.aside[data-v-83890dd9]{position:relative;display:none;order:2;flex-grow:1;padding-left:32px;width:100%;max-width:256px}.left-aside[data-v-83890dd9]{order:1;padding-left:unset;padding-right:32px}.aside-container[data-v-83890dd9]{position:fixed;top:0;padding-top:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + var(--vp-doc-top-height, 0px) + 48px);width:224px;height:100vh;overflow-x:hidden;overflow-y:auto;scrollbar-width:none}.aside-container[data-v-83890dd9]::-webkit-scrollbar{display:none}.aside-curtain[data-v-83890dd9]{position:fixed;bottom:0;z-index:10;width:224px;height:32px;background:linear-gradient(transparent,var(--vp-c-bg) 70%)}.aside-content[data-v-83890dd9]{display:flex;flex-direction:column;min-height:calc(100vh - (var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 48px));padding-bottom:32px}.content[data-v-83890dd9]{position:relative;margin:0 auto;width:100%}@media (min-width: 960px){.content[data-v-83890dd9]{padding:0 32px 128px}}@media (min-width: 1280px){.content[data-v-83890dd9]{order:1;margin:0;min-width:640px}}.content-container[data-v-83890dd9]{margin:0 auto}.VPDoc.has-aside .content-container[data-v-83890dd9]{max-width:688px}.VPButton[data-v-906d7fb4]{display:inline-block;border:1px solid transparent;text-align:center;font-weight:600;white-space:nowrap;transition:color .25s,border-color .25s,background-color .25s}.VPButton[data-v-906d7fb4]:active{transition:color .1s,border-color .1s,background-color .1s}.VPButton.medium[data-v-906d7fb4]{border-radius:20px;padding:0 20px;line-height:38px;font-size:14px}.VPButton.big[data-v-906d7fb4]{border-radius:24px;padding:0 24px;line-height:46px;font-size:16px}.VPButton.brand[data-v-906d7fb4]{border-color:var(--vp-button-brand-border);color:var(--vp-button-brand-text);background-color:var(--vp-button-brand-bg)}.VPButton.brand[data-v-906d7fb4]:hover{border-color:var(--vp-button-brand-hover-border);color:var(--vp-button-brand-hover-text);background-color:var(--vp-button-brand-hover-bg)}.VPButton.brand[data-v-906d7fb4]:active{border-color:var(--vp-button-brand-active-border);color:var(--vp-button-brand-active-text);background-color:var(--vp-button-brand-active-bg)}.VPButton.alt[data-v-906d7fb4]{border-color:var(--vp-button-alt-border);color:var(--vp-button-alt-text);background-color:var(--vp-button-alt-bg)}.VPButton.alt[data-v-906d7fb4]:hover{border-color:var(--vp-button-alt-hover-border);color:var(--vp-button-alt-hover-text);background-color:var(--vp-button-alt-hover-bg)}.VPButton.alt[data-v-906d7fb4]:active{border-color:var(--vp-button-alt-active-border);color:var(--vp-button-alt-active-text);background-color:var(--vp-button-alt-active-bg)}.VPButton.sponsor[data-v-906d7fb4]{border-color:var(--vp-button-sponsor-border);color:var(--vp-button-sponsor-text);background-color:var(--vp-button-sponsor-bg)}.VPButton.sponsor[data-v-906d7fb4]:hover{border-color:var(--vp-button-sponsor-hover-border);color:var(--vp-button-sponsor-hover-text);background-color:var(--vp-button-sponsor-hover-bg)}.VPButton.sponsor[data-v-906d7fb4]:active{border-color:var(--vp-button-sponsor-active-border);color:var(--vp-button-sponsor-active-text);background-color:var(--vp-button-sponsor-active-bg)}html:not(.dark) .VPImage.dark[data-v-35a7d0b8]{display:none}.dark .VPImage.light[data-v-35a7d0b8]{display:none}.VPHero[data-v-3d256e5e]{margin-top:calc((var(--vp-nav-height) + var(--vp-layout-top-height, 0px)) * -1);padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 48px) 24px 48px}@media (min-width: 640px){.VPHero[data-v-3d256e5e]{padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 80px) 48px 64px}}@media (min-width: 960px){.VPHero[data-v-3d256e5e]{padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 80px) 64px 64px}}.container[data-v-3d256e5e]{display:flex;flex-direction:column;margin:0 auto;max-width:1152px}@media (min-width: 960px){.container[data-v-3d256e5e]{flex-direction:row}}.main[data-v-3d256e5e]{position:relative;z-index:10;order:2;flex-grow:1;flex-shrink:0}.VPHero.has-image .container[data-v-3d256e5e]{text-align:center}@media (min-width: 960px){.VPHero.has-image .container[data-v-3d256e5e]{text-align:left}}@media (min-width: 960px){.main[data-v-3d256e5e]{order:1;width:calc((100% / 3) * 2)}.VPHero.has-image .main[data-v-3d256e5e]{max-width:592px}}.heading[data-v-3d256e5e]{display:flex;flex-direction:column}.name[data-v-3d256e5e],.text[data-v-3d256e5e]{width:fit-content;max-width:392px;letter-spacing:-.4px;line-height:40px;font-size:32px;font-weight:700;white-space:pre-wrap}.VPHero.has-image .name[data-v-3d256e5e],.VPHero.has-image .text[data-v-3d256e5e]{margin:0 auto}.name[data-v-3d256e5e]{color:var(--vp-home-hero-name-color)}.clip[data-v-3d256e5e]{background:var(--vp-home-hero-name-background);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:var(--vp-home-hero-name-color)}@media (min-width: 640px){.name[data-v-3d256e5e],.text[data-v-3d256e5e]{max-width:576px;line-height:56px;font-size:48px}}@media (min-width: 960px){.name[data-v-3d256e5e],.text[data-v-3d256e5e]{line-height:64px;font-size:56px}.VPHero.has-image .name[data-v-3d256e5e],.VPHero.has-image .text[data-v-3d256e5e]{margin:0}}.tagline[data-v-3d256e5e]{padding-top:8px;max-width:392px;line-height:28px;font-size:18px;font-weight:500;white-space:pre-wrap;color:var(--vp-c-text-2)}.VPHero.has-image .tagline[data-v-3d256e5e]{margin:0 auto}@media (min-width: 640px){.tagline[data-v-3d256e5e]{padding-top:12px;max-width:576px;line-height:32px;font-size:20px}}@media (min-width: 960px){.tagline[data-v-3d256e5e]{line-height:36px;font-size:24px}.VPHero.has-image .tagline[data-v-3d256e5e]{margin:0}}.actions[data-v-3d256e5e]{display:flex;flex-wrap:wrap;margin:-6px;padding-top:24px}.VPHero.has-image .actions[data-v-3d256e5e]{justify-content:center}@media (min-width: 640px){.actions[data-v-3d256e5e]{padding-top:32px}}@media (min-width: 960px){.VPHero.has-image .actions[data-v-3d256e5e]{justify-content:flex-start}}.action[data-v-3d256e5e]{flex-shrink:0;padding:6px}.image[data-v-3d256e5e]{order:1;margin:-76px -24px -48px}@media (min-width: 640px){.image[data-v-3d256e5e]{margin:-108px -24px -48px}}@media (min-width: 960px){.image[data-v-3d256e5e]{flex-grow:1;order:2;margin:0;min-height:100%}}.image-container[data-v-3d256e5e]{position:relative;margin:0 auto;width:320px;height:320px}@media (min-width: 640px){.image-container[data-v-3d256e5e]{width:392px;height:392px}}@media (min-width: 960px){.image-container[data-v-3d256e5e]{display:flex;justify-content:center;align-items:center;width:100%;height:100%;transform:translate(-32px,-32px)}}.image-bg[data-v-3d256e5e]{position:absolute;top:50%;left:50%;border-radius:50%;width:192px;height:192px;background-image:var(--vp-home-hero-image-background-image);filter:var(--vp-home-hero-image-filter);transform:translate(-50%,-50%)}@media (min-width: 640px){.image-bg[data-v-3d256e5e]{width:256px;height:256px}}@media (min-width: 960px){.image-bg[data-v-3d256e5e]{width:320px;height:320px}}[data-v-3d256e5e] .image-src{position:absolute;top:50%;left:50%;max-width:192px;max-height:192px;transform:translate(-50%,-50%)}@media (min-width: 640px){[data-v-3d256e5e] .image-src{max-width:256px;max-height:256px}}@media (min-width: 960px){[data-v-3d256e5e] .image-src{max-width:320px;max-height:320px}}.VPFeature[data-v-f5e9645b]{display:block;border:1px solid var(--vp-c-bg-soft);border-radius:12px;height:100%;background-color:var(--vp-c-bg-soft);transition:border-color .25s,background-color .25s}.VPFeature.link[data-v-f5e9645b]:hover{border-color:var(--vp-c-brand-1)}.box[data-v-f5e9645b]{display:flex;flex-direction:column;padding:24px;height:100%}.box[data-v-f5e9645b]>.VPImage{margin-bottom:20px}.icon[data-v-f5e9645b]{display:flex;justify-content:center;align-items:center;margin-bottom:20px;border-radius:6px;background-color:var(--vp-c-default-soft);width:48px;height:48px;font-size:24px;transition:background-color .25s}.title[data-v-f5e9645b]{line-height:24px;font-size:16px;font-weight:600}.details[data-v-f5e9645b]{flex-grow:1;padding-top:8px;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.link-text[data-v-f5e9645b]{padding-top:8px}.link-text-value[data-v-f5e9645b]{display:flex;align-items:center;font-size:14px;font-weight:500;color:var(--vp-c-brand-1)}.link-text-icon[data-v-f5e9645b]{margin-left:6px}.VPFeatures[data-v-d0a190d7]{position:relative;padding:0 24px}@media (min-width: 640px){.VPFeatures[data-v-d0a190d7]{padding:0 48px}}@media (min-width: 960px){.VPFeatures[data-v-d0a190d7]{padding:0 64px}}.container[data-v-d0a190d7]{margin:0 auto;max-width:1152px}.items[data-v-d0a190d7]{display:flex;flex-wrap:wrap;margin:-8px}.item[data-v-d0a190d7]{padding:8px;width:100%}@media (min-width: 640px){.item.grid-2[data-v-d0a190d7],.item.grid-4[data-v-d0a190d7],.item.grid-6[data-v-d0a190d7]{width:50%}}@media (min-width: 768px){.item.grid-2[data-v-d0a190d7],.item.grid-4[data-v-d0a190d7]{width:50%}.item.grid-3[data-v-d0a190d7],.item.grid-6[data-v-d0a190d7]{width:calc(100% / 3)}}@media (min-width: 960px){.item.grid-4[data-v-d0a190d7]{width:25%}}.container[data-v-7a48a447]{margin:auto;width:100%;max-width:1280px;padding:0 24px}@media (min-width: 640px){.container[data-v-7a48a447]{padding:0 48px}}@media (min-width: 960px){.container[data-v-7a48a447]{width:100%;padding:0 64px}}.vp-doc[data-v-7a48a447] .VPHomeSponsors,.vp-doc[data-v-7a48a447] .VPTeamPage{margin-left:var(--vp-offset, calc(50% - 50vw) );margin-right:var(--vp-offset, calc(50% - 50vw) )}.vp-doc[data-v-7a48a447] .VPHomeSponsors h2{border-top:none;letter-spacing:normal}.vp-doc[data-v-7a48a447] .VPHomeSponsors a,.vp-doc[data-v-7a48a447] .VPTeamPage a{text-decoration:none}.VPHome[data-v-e40e30de]{margin-bottom:96px}@media (min-width: 768px){.VPHome[data-v-e40e30de]{margin-bottom:128px}}.VPContent[data-v-91765379]{flex-grow:1;flex-shrink:0;margin:var(--vp-layout-top-height, 0px) auto 0;width:100%}.VPContent.is-home[data-v-91765379]{width:100%;max-width:100%}.VPContent.has-sidebar[data-v-91765379]{margin:0}@media (min-width: 960px){.VPContent[data-v-91765379]{padding-top:var(--vp-nav-height)}.VPContent.has-sidebar[data-v-91765379]{margin:var(--vp-layout-top-height, 0px) 0 0;padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPContent.has-sidebar[data-v-91765379]{padding-right:calc((100vw - var(--vp-layout-max-width)) / 2);padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.VPFooter[data-v-c970a860]{position:relative;z-index:var(--vp-z-index-footer);border-top:1px solid var(--vp-c-gutter);padding:32px 24px;background-color:var(--vp-c-bg)}.VPFooter.has-sidebar[data-v-c970a860]{display:none}.VPFooter[data-v-c970a860] a{text-decoration-line:underline;text-underline-offset:2px;transition:color .25s}.VPFooter[data-v-c970a860] a:hover{color:var(--vp-c-text-1)}@media (min-width: 768px){.VPFooter[data-v-c970a860]{padding:32px}}.container[data-v-c970a860]{margin:0 auto;max-width:var(--vp-layout-max-width);text-align:center}.message[data-v-c970a860],.copyright[data-v-c970a860]{line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.VPLocalNavOutlineDropdown[data-v-168ddf5d]{padding:12px 20px 11px}@media (min-width: 960px){.VPLocalNavOutlineDropdown[data-v-168ddf5d]{padding:12px 36px 11px}}.VPLocalNavOutlineDropdown button[data-v-168ddf5d]{display:block;font-size:12px;font-weight:500;line-height:24px;color:var(--vp-c-text-2);transition:color .5s;position:relative}.VPLocalNavOutlineDropdown button[data-v-168ddf5d]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPLocalNavOutlineDropdown button.open[data-v-168ddf5d]{color:var(--vp-c-text-1)}.icon[data-v-168ddf5d]{display:inline-block;vertical-align:middle;margin-left:2px;font-size:14px;transform:rotate(0);transition:transform .25s}@media (min-width: 960px){.VPLocalNavOutlineDropdown button[data-v-168ddf5d]{font-size:14px}.icon[data-v-168ddf5d]{font-size:16px}}.open>.icon[data-v-168ddf5d]{transform:rotate(90deg)}.items[data-v-168ddf5d]{position:absolute;top:40px;right:16px;left:16px;display:grid;gap:1px;border:1px solid var(--vp-c-border);border-radius:8px;background-color:var(--vp-c-gutter);max-height:calc(var(--vp-vh, 100vh) - 86px);overflow:hidden auto;box-shadow:var(--vp-shadow-3)}@media (min-width: 960px){.items[data-v-168ddf5d]{right:auto;left:calc(var(--vp-sidebar-width) + 32px);width:320px}}.header[data-v-168ddf5d]{background-color:var(--vp-c-bg-soft)}.top-link[data-v-168ddf5d]{display:block;padding:0 16px;line-height:48px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1)}.outline[data-v-168ddf5d]{padding:8px 0;background-color:var(--vp-c-bg-soft)}.flyout-enter-active[data-v-168ddf5d]{transition:all .2s ease-out}.flyout-leave-active[data-v-168ddf5d]{transition:all .15s ease-in}.flyout-enter-from[data-v-168ddf5d],.flyout-leave-to[data-v-168ddf5d]{opacity:0;transform:translateY(-16px)}.VPLocalNav[data-v-070ab83d]{position:sticky;top:0;left:0;z-index:var(--vp-z-index-local-nav);border-bottom:1px solid var(--vp-c-gutter);padding-top:var(--vp-layout-top-height, 0px);width:100%;background-color:var(--vp-local-nav-bg-color)}.VPLocalNav.fixed[data-v-070ab83d]{position:fixed}@media (min-width: 960px){.VPLocalNav[data-v-070ab83d]{top:var(--vp-nav-height)}.VPLocalNav.has-sidebar[data-v-070ab83d]{padding-left:var(--vp-sidebar-width)}.VPLocalNav.empty[data-v-070ab83d]{display:none}}@media (min-width: 1280px){.VPLocalNav[data-v-070ab83d]{display:none}}@media (min-width: 1440px){.VPLocalNav.has-sidebar[data-v-070ab83d]{padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.container[data-v-070ab83d]{display:flex;justify-content:space-between;align-items:center}.menu[data-v-070ab83d]{display:flex;align-items:center;padding:12px 24px 11px;line-height:24px;font-size:12px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.menu[data-v-070ab83d]:hover{color:var(--vp-c-text-1);transition:color .25s}@media (min-width: 768px){.menu[data-v-070ab83d]{padding:0 32px}}@media (min-width: 960px){.menu[data-v-070ab83d]{display:none}}.menu-icon[data-v-070ab83d]{margin-right:8px;font-size:14px}.VPOutlineDropdown[data-v-070ab83d]{padding:12px 24px 11px}@media (min-width: 768px){.VPOutlineDropdown[data-v-070ab83d]{padding:12px 32px 11px}}.VPSwitch[data-v-4a1c76db]{position:relative;border-radius:11px;display:block;width:40px;height:22px;flex-shrink:0;border:1px solid var(--vp-input-border-color);background-color:var(--vp-input-switch-bg-color);transition:border-color .25s!important}.VPSwitch[data-v-4a1c76db]:hover{border-color:var(--vp-c-brand-1)}.check[data-v-4a1c76db]{position:absolute;top:1px;left:1px;width:18px;height:18px;border-radius:50%;background-color:var(--vp-c-neutral-inverse);box-shadow:var(--vp-shadow-1);transition:transform .25s!important}.icon[data-v-4a1c76db]{position:relative;display:block;width:18px;height:18px;border-radius:50%;overflow:hidden}.icon[data-v-4a1c76db] [class^=vpi-]{position:absolute;top:3px;left:3px;width:12px;height:12px;color:var(--vp-c-text-2)}.dark .icon[data-v-4a1c76db] [class^=vpi-]{color:var(--vp-c-text-1);transition:opacity .25s!important}.sun[data-v-e40a8bb6]{opacity:1}.moon[data-v-e40a8bb6],.dark .sun[data-v-e40a8bb6]{opacity:0}.dark .moon[data-v-e40a8bb6]{opacity:1}.dark .VPSwitchAppearance[data-v-e40a8bb6] .check{transform:translate(18px)}.VPNavBarAppearance[data-v-af096f4a]{display:none}@media (min-width: 1280px){.VPNavBarAppearance[data-v-af096f4a]{display:flex;align-items:center}}.VPMenuGroup+.VPMenuLink[data-v-acbfed09]{margin:12px -12px 0;border-top:1px solid var(--vp-c-divider);padding:12px 12px 0}.link[data-v-acbfed09]{display:block;border-radius:6px;padding:0 12px;line-height:32px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);white-space:nowrap;transition:background-color .25s,color .25s}.link[data-v-acbfed09]:hover{color:var(--vp-c-brand-1);background-color:var(--vp-c-default-soft)}.link.active[data-v-acbfed09]{color:var(--vp-c-brand-1)}.VPMenuGroup[data-v-48c802d0]{margin:12px -12px 0;border-top:1px solid var(--vp-c-divider);padding:12px 12px 0}.VPMenuGroup[data-v-48c802d0]:first-child{margin-top:0;border-top:0;padding-top:0}.VPMenuGroup+.VPMenuGroup[data-v-48c802d0]{margin-top:12px;border-top:1px solid var(--vp-c-divider)}.title[data-v-48c802d0]{padding:0 12px;line-height:32px;font-size:14px;font-weight:600;color:var(--vp-c-text-2);white-space:nowrap;transition:color .25s}.VPMenu[data-v-7dd3104a]{border-radius:12px;padding:12px;min-width:128px;border:1px solid var(--vp-c-divider);background-color:var(--vp-c-bg-elv);box-shadow:var(--vp-shadow-3);transition:background-color .5s;max-height:calc(100vh - var(--vp-nav-height));overflow-y:auto}.VPMenu[data-v-7dd3104a] .group{margin:0 -12px;padding:0 12px 12px}.VPMenu[data-v-7dd3104a] .group+.group{border-top:1px solid var(--vp-c-divider);padding:11px 12px 12px}.VPMenu[data-v-7dd3104a] .group:last-child{padding-bottom:0}.VPMenu[data-v-7dd3104a] .group+.item{border-top:1px solid var(--vp-c-divider);padding:11px 16px 0}.VPMenu[data-v-7dd3104a] .item{padding:0 16px;white-space:nowrap}.VPMenu[data-v-7dd3104a] .label{flex-grow:1;line-height:28px;font-size:12px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.VPMenu[data-v-7dd3104a] .action{padding-left:24px}.VPFlyout[data-v-04f5c5e9]{position:relative}.VPFlyout[data-v-04f5c5e9]:hover{color:var(--vp-c-brand-1);transition:color .25s}.VPFlyout:hover .text[data-v-04f5c5e9]{color:var(--vp-c-text-2)}.VPFlyout:hover .icon[data-v-04f5c5e9]{fill:var(--vp-c-text-2)}.VPFlyout.active .text[data-v-04f5c5e9]{color:var(--vp-c-brand-1)}.VPFlyout.active:hover .text[data-v-04f5c5e9]{color:var(--vp-c-brand-2)}.button[aria-expanded=false]+.menu[data-v-04f5c5e9]{opacity:0;visibility:hidden;transform:translateY(0)}.VPFlyout:hover .menu[data-v-04f5c5e9],.button[aria-expanded=true]+.menu[data-v-04f5c5e9]{opacity:1;visibility:visible;transform:translateY(0)}.button[data-v-04f5c5e9]{display:flex;align-items:center;padding:0 12px;height:var(--vp-nav-height);color:var(--vp-c-text-1);transition:color .5s}.text[data-v-04f5c5e9]{display:flex;align-items:center;line-height:var(--vp-nav-height);font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.option-icon[data-v-04f5c5e9]{margin-right:0;font-size:16px}.text-icon[data-v-04f5c5e9]{margin-left:4px;font-size:14px}.icon[data-v-04f5c5e9]{font-size:20px;transition:fill .25s}.menu[data-v-04f5c5e9]{position:absolute;top:calc(var(--vp-nav-height) / 2 + 20px);right:0;opacity:0;visibility:hidden;transition:opacity .25s,visibility .25s,transform .25s}.VPSocialLink[data-v-d26d30cb]{display:flex;justify-content:center;align-items:center;width:36px;height:36px;color:var(--vp-c-text-2);transition:color .5s}.VPSocialLink[data-v-d26d30cb]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPSocialLink[data-v-d26d30cb]>svg,.VPSocialLink[data-v-d26d30cb]>[class^=vpi-social-]{width:20px;height:20px;fill:currentColor}.VPSocialLinks[data-v-ee7a9424]{display:flex;justify-content:center}.VPNavBarExtra[data-v-925effce]{display:none;margin-right:-12px}@media (min-width: 768px){.VPNavBarExtra[data-v-925effce]{display:block}}@media (min-width: 1280px){.VPNavBarExtra[data-v-925effce]{display:none}}.trans-title[data-v-925effce]{padding:0 24px 0 12px;line-height:32px;font-size:14px;font-weight:700;color:var(--vp-c-text-1)}.item.appearance[data-v-925effce],.item.social-links[data-v-925effce]{display:flex;align-items:center;padding:0 12px}.item.appearance[data-v-925effce]{min-width:176px}.appearance-action[data-v-925effce]{margin-right:-2px}.social-links-list[data-v-925effce]{margin:-4px -8px}.VPNavBarHamburger[data-v-5dea55bf]{display:flex;justify-content:center;align-items:center;width:48px;height:var(--vp-nav-height)}@media (min-width: 768px){.VPNavBarHamburger[data-v-5dea55bf]{display:none}}.container[data-v-5dea55bf]{position:relative;width:16px;height:14px;overflow:hidden}.VPNavBarHamburger:hover .top[data-v-5dea55bf]{top:0;left:0;transform:translate(4px)}.VPNavBarHamburger:hover .middle[data-v-5dea55bf]{top:6px;left:0;transform:translate(0)}.VPNavBarHamburger:hover .bottom[data-v-5dea55bf]{top:12px;left:0;transform:translate(8px)}.VPNavBarHamburger.active .top[data-v-5dea55bf]{top:6px;transform:translate(0) rotate(225deg)}.VPNavBarHamburger.active .middle[data-v-5dea55bf]{top:6px;transform:translate(16px)}.VPNavBarHamburger.active .bottom[data-v-5dea55bf]{top:6px;transform:translate(0) rotate(135deg)}.VPNavBarHamburger.active:hover .top[data-v-5dea55bf],.VPNavBarHamburger.active:hover .middle[data-v-5dea55bf],.VPNavBarHamburger.active:hover .bottom[data-v-5dea55bf]{background-color:var(--vp-c-text-2);transition:top .25s,background-color .25s,transform .25s}.top[data-v-5dea55bf],.middle[data-v-5dea55bf],.bottom[data-v-5dea55bf]{position:absolute;width:16px;height:2px;background-color:var(--vp-c-text-1);transition:top .25s,background-color .5s,transform .25s}.top[data-v-5dea55bf]{top:0;left:0;transform:translate(0)}.middle[data-v-5dea55bf]{top:6px;left:0;transform:translate(8px)}.bottom[data-v-5dea55bf]{top:12px;left:0;transform:translate(4px)}.VPNavBarMenuLink[data-v-956ec74c]{display:flex;align-items:center;padding:0 12px;line-height:var(--vp-nav-height);font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.VPNavBarMenuLink.active[data-v-956ec74c],.VPNavBarMenuLink[data-v-956ec74c]:hover{color:var(--vp-c-brand-1)}.VPNavBarMenu[data-v-e6d46098]{display:none}@media (min-width: 768px){.VPNavBarMenu[data-v-e6d46098]{display:flex}}/*! @docsearch/css 3.8.2 | MIT License | © Algolia, Inc. and contributors | https://docsearch.algolia.com */:root{--docsearch-primary-color:#5468ff;--docsearch-text-color:#1c1e21;--docsearch-spacing:12px;--docsearch-icon-stroke-width:1.4;--docsearch-highlight-color:var(--docsearch-primary-color);--docsearch-muted-color:#969faf;--docsearch-container-background:rgba(101,108,133,.8);--docsearch-logo-color:#5468ff;--docsearch-modal-width:560px;--docsearch-modal-height:600px;--docsearch-modal-background:#f5f6f7;--docsearch-modal-shadow:inset 1px 1px 0 0 hsla(0,0%,100%,.5),0 3px 8px 0 #555a64;--docsearch-searchbox-height:56px;--docsearch-searchbox-background:#ebedf0;--docsearch-searchbox-focus-background:#fff;--docsearch-searchbox-shadow:inset 0 0 0 2px var(--docsearch-primary-color);--docsearch-hit-height:56px;--docsearch-hit-color:#444950;--docsearch-hit-active-color:#fff;--docsearch-hit-background:#fff;--docsearch-hit-shadow:0 1px 3px 0 #d4d9e1;--docsearch-key-gradient:linear-gradient(-225deg,#d5dbe4,#f8f8f8);--docsearch-key-shadow:inset 0 -2px 0 0 #cdcde6,inset 0 0 1px 1px #fff,0 1px 2px 1px rgba(30,35,90,.4);--docsearch-key-pressed-shadow:inset 0 -2px 0 0 #cdcde6,inset 0 0 1px 1px #fff,0 1px 1px 0 rgba(30,35,90,.4);--docsearch-footer-height:44px;--docsearch-footer-background:#fff;--docsearch-footer-shadow:0 -1px 0 0 #e0e3e8,0 -3px 6px 0 rgba(69,98,155,.12)}html[data-theme=dark]{--docsearch-text-color:#f5f6f7;--docsearch-container-background:rgba(9,10,17,.8);--docsearch-modal-background:#15172a;--docsearch-modal-shadow:inset 1px 1px 0 0 #2c2e40,0 3px 8px 0 #000309;--docsearch-searchbox-background:#090a11;--docsearch-searchbox-focus-background:#000;--docsearch-hit-color:#bec3c9;--docsearch-hit-shadow:none;--docsearch-hit-background:#090a11;--docsearch-key-gradient:linear-gradient(-26.5deg,#565872,#31355b);--docsearch-key-shadow:inset 0 -2px 0 0 #282d55,inset 0 0 1px 1px #51577d,0 2px 2px 0 rgba(3,4,9,.3);--docsearch-key-pressed-shadow:inset 0 -2px 0 0 #282d55,inset 0 0 1px 1px #51577d,0 1px 1px 0 #0304094d;--docsearch-footer-background:#1e2136;--docsearch-footer-shadow:inset 0 1px 0 0 rgba(73,76,106,.5),0 -4px 8px 0 rgba(0,0,0,.2);--docsearch-logo-color:#fff;--docsearch-muted-color:#7f8497}.DocSearch-Button{align-items:center;background:var(--docsearch-searchbox-background);border:0;border-radius:40px;color:var(--docsearch-muted-color);cursor:pointer;display:flex;font-weight:500;height:36px;justify-content:space-between;margin:0 0 0 16px;padding:0 8px;-webkit-user-select:none;user-select:none}.DocSearch-Button:active,.DocSearch-Button:focus,.DocSearch-Button:hover{background:var(--docsearch-searchbox-focus-background);box-shadow:var(--docsearch-searchbox-shadow);color:var(--docsearch-text-color);outline:none}.DocSearch-Button-Container{align-items:center;display:flex}.DocSearch-Search-Icon{stroke-width:1.6}.DocSearch-Button .DocSearch-Search-Icon{color:var(--docsearch-text-color)}.DocSearch-Button-Placeholder{font-size:1rem;padding:0 12px 0 6px}.DocSearch-Button-Keys{display:flex;min-width:calc(40px + .8em)}.DocSearch-Button-Key{align-items:center;background:var(--docsearch-key-gradient);border:0;border-radius:3px;box-shadow:var(--docsearch-key-shadow);color:var(--docsearch-muted-color);display:flex;height:18px;justify-content:center;margin-right:.4em;padding:0 0 2px;position:relative;top:-1px;width:20px}.DocSearch-Button-Key--pressed{box-shadow:var(--docsearch-key-pressed-shadow);transform:translate3d(0,1px,0)}@media (max-width:768px){.DocSearch-Button-Keys,.DocSearch-Button-Placeholder{display:none}}.DocSearch--active{overflow:hidden!important}.DocSearch-Container,.DocSearch-Container *{box-sizing:border-box}.DocSearch-Container{background-color:var(--docsearch-container-background);height:100vh;left:0;position:fixed;top:0;width:100vw;z-index:200}.DocSearch-Container a{text-decoration:none}.DocSearch-Link{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;font:inherit;margin:0;padding:0}.DocSearch-Modal{background:var(--docsearch-modal-background);border-radius:6px;box-shadow:var(--docsearch-modal-shadow);flex-direction:column;margin:60px auto auto;max-width:var(--docsearch-modal-width);position:relative}.DocSearch-SearchBar{display:flex;padding:var(--docsearch-spacing) var(--docsearch-spacing) 0}.DocSearch-Form{align-items:center;background:var(--docsearch-searchbox-focus-background);border-radius:4px;box-shadow:var(--docsearch-searchbox-shadow);display:flex;height:var(--docsearch-searchbox-height);margin:0;padding:0 var(--docsearch-spacing);position:relative;width:100%}.DocSearch-Input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:0;color:var(--docsearch-text-color);flex:1;font:inherit;font-size:1.2em;height:100%;outline:none;padding:0 0 0 8px;width:80%}.DocSearch-Input::placeholder{color:var(--docsearch-muted-color);opacity:1}.DocSearch-Input::-webkit-search-cancel-button,.DocSearch-Input::-webkit-search-decoration,.DocSearch-Input::-webkit-search-results-button,.DocSearch-Input::-webkit-search-results-decoration{display:none}.DocSearch-LoadingIndicator,.DocSearch-MagnifierLabel,.DocSearch-Reset{margin:0;padding:0}.DocSearch-MagnifierLabel,.DocSearch-Reset{align-items:center;color:var(--docsearch-highlight-color);display:flex;justify-content:center}.DocSearch-Container--Stalled .DocSearch-MagnifierLabel,.DocSearch-LoadingIndicator{display:none}.DocSearch-Container--Stalled .DocSearch-LoadingIndicator{align-items:center;color:var(--docsearch-highlight-color);display:flex;justify-content:center}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Reset{animation:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;right:0;stroke-width:var(--docsearch-icon-stroke-width)}}.DocSearch-Reset{animation:fade-in .1s ease-in forwards;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;padding:2px;right:0;stroke-width:var(--docsearch-icon-stroke-width)}.DocSearch-Reset[hidden]{display:none}.DocSearch-Reset:hover{color:var(--docsearch-highlight-color)}.DocSearch-LoadingIndicator svg,.DocSearch-MagnifierLabel svg{height:24px;width:24px}.DocSearch-Cancel{display:none}.DocSearch-Dropdown{max-height:calc(var(--docsearch-modal-height) - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height));min-height:var(--docsearch-spacing);overflow-y:auto;overflow-y:overlay;padding:0 var(--docsearch-spacing);scrollbar-color:var(--docsearch-muted-color) var(--docsearch-modal-background);scrollbar-width:thin}.DocSearch-Dropdown::-webkit-scrollbar{width:12px}.DocSearch-Dropdown::-webkit-scrollbar-track{background:transparent}.DocSearch-Dropdown::-webkit-scrollbar-thumb{background-color:var(--docsearch-muted-color);border:3px solid var(--docsearch-modal-background);border-radius:20px}.DocSearch-Dropdown ul{list-style:none;margin:0;padding:0}.DocSearch-Label{font-size:.75em;line-height:1.6em}.DocSearch-Help,.DocSearch-Label{color:var(--docsearch-muted-color)}.DocSearch-Help{font-size:.9em;margin:0;-webkit-user-select:none;user-select:none}.DocSearch-Title{font-size:1.2em}.DocSearch-Logo a{display:flex}.DocSearch-Logo svg{color:var(--docsearch-logo-color);margin-left:8px}.DocSearch-Hits:last-of-type{margin-bottom:24px}.DocSearch-Hits mark{background:none;color:var(--docsearch-highlight-color)}.DocSearch-HitsFooter{color:var(--docsearch-muted-color);display:flex;font-size:.85em;justify-content:center;margin-bottom:var(--docsearch-spacing);padding:var(--docsearch-spacing)}.DocSearch-HitsFooter a{border-bottom:1px solid;color:inherit}.DocSearch-Hit{border-radius:4px;display:flex;padding-bottom:4px;position:relative}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit--deleting{transition:none}}.DocSearch-Hit--deleting{opacity:0;transition:all .25s linear}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit--favoriting{transition:none}}.DocSearch-Hit--favoriting{transform:scale(0);transform-origin:top center;transition:all .25s linear;transition-delay:.25s}.DocSearch-Hit a{background:var(--docsearch-hit-background);border-radius:4px;box-shadow:var(--docsearch-hit-shadow);display:block;padding-left:var(--docsearch-spacing);width:100%}.DocSearch-Hit-source{background:var(--docsearch-modal-background);color:var(--docsearch-highlight-color);font-size:.85em;font-weight:600;line-height:32px;margin:0 -4px;padding:8px 4px 0;position:sticky;top:0;z-index:10}.DocSearch-Hit-Tree{color:var(--docsearch-muted-color);height:var(--docsearch-hit-height);opacity:.5;stroke-width:var(--docsearch-icon-stroke-width);width:24px}.DocSearch-Hit[aria-selected=true] a{background-color:var(--docsearch-highlight-color)}.DocSearch-Hit[aria-selected=true] mark{text-decoration:underline}.DocSearch-Hit-Container{align-items:center;color:var(--docsearch-hit-color);display:flex;flex-direction:row;height:var(--docsearch-hit-height);padding:0 var(--docsearch-spacing) 0 0}.DocSearch-Hit-icon{height:20px;width:20px}.DocSearch-Hit-action,.DocSearch-Hit-icon{color:var(--docsearch-muted-color);stroke-width:var(--docsearch-icon-stroke-width)}.DocSearch-Hit-action{align-items:center;display:flex;height:22px;width:22px}.DocSearch-Hit-action svg{display:block;height:18px;width:18px}.DocSearch-Hit-action+.DocSearch-Hit-action{margin-left:6px}.DocSearch-Hit-action-button{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:inherit;cursor:pointer;padding:2px}svg.DocSearch-Hit-Select-Icon{display:none}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Select-Icon{display:block}.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:#0003;transition:background-color .1s ease-in}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{transition:none}}.DocSearch-Hit-action-button:focus path,.DocSearch-Hit-action-button:hover path{fill:#fff}.DocSearch-Hit-content-wrapper{display:flex;flex:1 1 auto;flex-direction:column;font-weight:500;justify-content:center;line-height:1.2em;margin:0 8px;overflow-x:hidden;position:relative;text-overflow:ellipsis;white-space:nowrap;width:80%}.DocSearch-Hit-title{font-size:.9em}.DocSearch-Hit-path{color:var(--docsearch-muted-color);font-size:.75em}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Tree,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-action,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-icon,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-path,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-text,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-title,.DocSearch-Hit[aria-selected=true] mark{color:var(--docsearch-hit-active-color)!important}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:#0003;transition:none}}.DocSearch-ErrorScreen,.DocSearch-NoResults,.DocSearch-StartScreen{font-size:.9em;margin:0 auto;padding:36px 0;text-align:center;width:80%}.DocSearch-Screen-Icon{color:var(--docsearch-muted-color);padding-bottom:12px}.DocSearch-NoResults-Prefill-List{display:inline-block;padding-bottom:24px;text-align:left}.DocSearch-NoResults-Prefill-List ul{display:inline-block;padding:8px 0 0}.DocSearch-NoResults-Prefill-List li{list-style-position:inside;list-style-type:"» "}.DocSearch-Prefill{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:1em;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;font-size:1em;font-weight:700;padding:0}.DocSearch-Prefill:focus,.DocSearch-Prefill:hover{outline:none;text-decoration:underline}.DocSearch-Footer{align-items:center;background:var(--docsearch-footer-background);border-radius:0 0 8px 8px;box-shadow:var(--docsearch-footer-shadow);display:flex;flex-direction:row-reverse;flex-shrink:0;height:var(--docsearch-footer-height);justify-content:space-between;padding:0 var(--docsearch-spacing);position:relative;-webkit-user-select:none;user-select:none;width:100%;z-index:300}.DocSearch-Commands{color:var(--docsearch-muted-color);display:flex;list-style:none;margin:0;padding:0}.DocSearch-Commands li{align-items:center;display:flex}.DocSearch-Commands li:not(:last-of-type){margin-right:.8em}.DocSearch-Commands-Key{align-items:center;background:var(--docsearch-key-gradient);border:0;border-radius:2px;box-shadow:var(--docsearch-key-shadow);color:var(--docsearch-muted-color);display:flex;height:18px;justify-content:center;margin-right:.4em;padding:0 0 1px;width:20px}.DocSearch-VisuallyHiddenForAccessibility{clip:rect(0 0 0 0);clip-path:inset(50%);height:1px;overflow:hidden;position:absolute;white-space:nowrap;width:1px}@media (max-width:768px){:root{--docsearch-spacing:10px;--docsearch-footer-height:40px}.DocSearch-Dropdown{height:100%}.DocSearch-Container{height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh, 1vh)*100);position:absolute}.DocSearch-Footer{border-radius:0;bottom:0;position:absolute}.DocSearch-Hit-content-wrapper{display:flex;position:relative;width:80%}.DocSearch-Modal{border-radius:0;box-shadow:none;height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh, 1vh)*100);margin:0;max-width:100%;width:100%}.DocSearch-Dropdown{max-height:calc(var(--docsearch-vh, 1vh)*100 - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height))}.DocSearch-Cancel{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;flex:none;font:inherit;font-size:1em;font-weight:500;margin-left:var(--docsearch-spacing);outline:none;overflow:hidden;padding:0;-webkit-user-select:none;user-select:none;white-space:nowrap}.DocSearch-Commands,.DocSearch-Hit-Tree{display:none}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}[class*=DocSearch]{--docsearch-primary-color: var(--vp-c-brand-1);--docsearch-highlight-color: var(--docsearch-primary-color);--docsearch-text-color: var(--vp-c-text-1);--docsearch-muted-color: var(--vp-c-text-2);--docsearch-searchbox-shadow: none;--docsearch-searchbox-background: transparent;--docsearch-searchbox-focus-background: transparent;--docsearch-key-gradient: transparent;--docsearch-key-shadow: none;--docsearch-modal-background: var(--vp-c-bg-soft);--docsearch-footer-background: var(--vp-c-bg)}.dark [class*=DocSearch]{--docsearch-modal-shadow: none;--docsearch-footer-shadow: none;--docsearch-logo-color: var(--vp-c-text-2);--docsearch-hit-background: var(--vp-c-default-soft);--docsearch-hit-color: var(--vp-c-text-2);--docsearch-hit-shadow: none}.DocSearch-Button{display:flex;justify-content:center;align-items:center;margin:0;padding:0;width:48px;height:55px;background:transparent;transition:border-color .25s}.DocSearch-Button:hover{background:transparent}.DocSearch-Button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}.DocSearch-Button-Key--pressed{transform:none;box-shadow:none}.DocSearch-Button:focus:not(:focus-visible){outline:none!important}@media (min-width: 768px){.DocSearch-Button{justify-content:flex-start;border:1px solid transparent;border-radius:8px;padding:0 10px 0 12px;width:100%;height:40px;background-color:var(--vp-c-bg-alt)}.DocSearch-Button:hover{border-color:var(--vp-c-brand-1);background:var(--vp-c-bg-alt)}}.DocSearch-Button .DocSearch-Button-Container{display:flex;align-items:center}.DocSearch-Button .DocSearch-Search-Icon{position:relative;width:16px;height:16px;color:var(--vp-c-text-1);fill:currentColor;transition:color .5s}.DocSearch-Button:hover .DocSearch-Search-Icon{color:var(--vp-c-text-1)}@media (min-width: 768px){.DocSearch-Button .DocSearch-Search-Icon{top:1px;margin-right:8px;width:14px;height:14px;color:var(--vp-c-text-2)}}.DocSearch-Button .DocSearch-Button-Placeholder{display:none;margin-top:2px;padding:0 16px 0 0;font-size:13px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.DocSearch-Button:hover .DocSearch-Button-Placeholder{color:var(--vp-c-text-1)}@media (min-width: 768px){.DocSearch-Button .DocSearch-Button-Placeholder{display:inline-block}}.DocSearch-Button .DocSearch-Button-Keys{direction:ltr;display:none;min-width:auto}@media (min-width: 768px){.DocSearch-Button .DocSearch-Button-Keys{display:flex;align-items:center}}.DocSearch-Button .DocSearch-Button-Key{display:block;margin:2px 0 0;border:1px solid var(--vp-c-divider);border-right:none;border-radius:4px 0 0 4px;padding-left:6px;min-width:0;width:auto;height:22px;line-height:22px;font-family:var(--vp-font-family-base);font-size:12px;font-weight:500;transition:color .5s,border-color .5s}.DocSearch-Button .DocSearch-Button-Key+.DocSearch-Button-Key{border-right:1px solid var(--vp-c-divider);border-left:none;border-radius:0 4px 4px 0;padding-left:2px;padding-right:6px}.DocSearch-Button .DocSearch-Button-Key:first-child{font-size:0!important}.DocSearch-Button .DocSearch-Button-Key:first-child:after{content:"Ctrl";font-size:12px;letter-spacing:normal;color:var(--docsearch-muted-color)}.mac .DocSearch-Button .DocSearch-Button-Key:first-child:after{content:"⌘"}.DocSearch-Button .DocSearch-Button-Key:first-child>*{display:none}.DocSearch-Search-Icon{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke-width='1.6' viewBox='0 0 20 20'%3E%3Cpath fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' d='m14.386 14.386 4.088 4.088-4.088-4.088A7.533 7.533 0 1 1 3.733 3.733a7.533 7.533 0 0 1 10.653 10.653z'/%3E%3C/svg%3E")}.VPNavBarSearch{display:flex;align-items:center}@media (min-width: 768px){.VPNavBarSearch{flex-grow:1;padding-left:24px}}@media (min-width: 960px){.VPNavBarSearch{padding-left:32px}}.dark .DocSearch-Footer{border-top:1px solid var(--vp-c-divider)}.DocSearch-Form{border:1px solid var(--vp-c-brand-1);background-color:var(--vp-c-white)}.dark .DocSearch-Form{background-color:var(--vp-c-default-soft)}.DocSearch-Screen-Icon>svg{margin:auto}.VPNavBarSocialLinks[data-v-164c457f]{display:none}@media (min-width: 1280px){.VPNavBarSocialLinks[data-v-164c457f]{display:flex;align-items:center}}.title[data-v-0f4f798b]{display:flex;align-items:center;border-bottom:1px solid transparent;width:100%;height:var(--vp-nav-height);font-size:16px;font-weight:600;color:var(--vp-c-text-1);transition:opacity .25s}@media (min-width: 960px){.title[data-v-0f4f798b]{flex-shrink:0}.VPNavBarTitle.has-sidebar .title[data-v-0f4f798b]{border-bottom-color:var(--vp-c-divider)}}[data-v-0f4f798b] .logo{margin-right:8px;height:var(--vp-nav-logo-height)}.VPNavBarTranslations[data-v-c80d9ad0]{display:none}@media (min-width: 1280px){.VPNavBarTranslations[data-v-c80d9ad0]{display:flex;align-items:center}}.title[data-v-c80d9ad0]{padding:0 24px 0 12px;line-height:32px;font-size:14px;font-weight:700;color:var(--vp-c-text-1)}.VPNavBar[data-v-822684d1]{position:relative;height:var(--vp-nav-height);pointer-events:none;white-space:nowrap;transition:background-color .25s}.VPNavBar.screen-open[data-v-822684d1]{transition:none;background-color:var(--vp-nav-bg-color);border-bottom:1px solid var(--vp-c-divider)}.VPNavBar[data-v-822684d1]:not(.home){background-color:var(--vp-nav-bg-color)}@media (min-width: 960px){.VPNavBar[data-v-822684d1]:not(.home){background-color:transparent}.VPNavBar[data-v-822684d1]:not(.has-sidebar):not(.home.top){background-color:var(--vp-nav-bg-color)}}.wrapper[data-v-822684d1]{padding:0 8px 0 24px}@media (min-width: 768px){.wrapper[data-v-822684d1]{padding:0 32px}}@media (min-width: 960px){.VPNavBar.has-sidebar .wrapper[data-v-822684d1]{padding:0}}.container[data-v-822684d1]{display:flex;justify-content:space-between;margin:0 auto;max-width:calc(var(--vp-layout-max-width) - 64px);height:var(--vp-nav-height);pointer-events:none}.container>.title[data-v-822684d1],.container>.content[data-v-822684d1]{pointer-events:none}.container[data-v-822684d1] *{pointer-events:auto}@media (min-width: 960px){.VPNavBar.has-sidebar .container[data-v-822684d1]{max-width:100%}}.title[data-v-822684d1]{flex-shrink:0;height:calc(var(--vp-nav-height) - 1px);transition:background-color .5s}@media (min-width: 960px){.VPNavBar.has-sidebar .title[data-v-822684d1]{position:absolute;top:0;left:0;z-index:2;padding:0 32px;width:var(--vp-sidebar-width);height:var(--vp-nav-height);background-color:transparent}}@media (min-width: 1440px){.VPNavBar.has-sidebar .title[data-v-822684d1]{padding-left:max(32px,calc((100% - (var(--vp-layout-max-width) - 64px)) / 2));width:calc((100% - (var(--vp-layout-max-width) - 64px)) / 2 + var(--vp-sidebar-width) - 32px)}}.content[data-v-822684d1]{flex-grow:1}@media (min-width: 960px){.VPNavBar.has-sidebar .content[data-v-822684d1]{position:relative;z-index:1;padding-right:32px;padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPNavBar.has-sidebar .content[data-v-822684d1]{padding-right:calc((100vw - var(--vp-layout-max-width)) / 2 + 32px);padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.content-body[data-v-822684d1]{display:flex;justify-content:flex-end;align-items:center;height:var(--vp-nav-height);transition:background-color .5s}@media (min-width: 960px){.VPNavBar:not(.home.top) .content-body[data-v-822684d1]{position:relative;background-color:var(--vp-nav-bg-color)}.VPNavBar:not(.has-sidebar):not(.home.top) .content-body[data-v-822684d1]{background-color:transparent}}@media (max-width: 767px){.content-body[data-v-822684d1]{column-gap:.5rem}}.menu+.translations[data-v-822684d1]:before,.menu+.appearance[data-v-822684d1]:before,.menu+.social-links[data-v-822684d1]:before,.translations+.appearance[data-v-822684d1]:before,.appearance+.social-links[data-v-822684d1]:before{margin-right:8px;margin-left:8px;width:1px;height:24px;background-color:var(--vp-c-divider);content:""}.menu+.appearance[data-v-822684d1]:before,.translations+.appearance[data-v-822684d1]:before{margin-right:16px}.appearance+.social-links[data-v-822684d1]:before{margin-left:16px}.social-links[data-v-822684d1]{margin-right:-8px}.divider[data-v-822684d1]{width:100%;height:1px}@media (min-width: 960px){.VPNavBar.has-sidebar .divider[data-v-822684d1]{padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPNavBar.has-sidebar .divider[data-v-822684d1]{padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.divider-line[data-v-822684d1]{width:100%;height:1px;transition:background-color .5s}.VPNavBar:not(.home) .divider-line[data-v-822684d1]{background-color:var(--vp-c-gutter)}@media (min-width: 960px){.VPNavBar:not(.home.top) .divider-line[data-v-822684d1]{background-color:var(--vp-c-gutter)}.VPNavBar:not(.has-sidebar):not(.home.top) .divider[data-v-822684d1]{background-color:var(--vp-c-gutter)}}.VPNavScreenAppearance[data-v-ffb44008]{display:flex;justify-content:space-between;align-items:center;border-radius:8px;padding:12px 14px 12px 16px;background-color:var(--vp-c-bg-soft)}.text[data-v-ffb44008]{line-height:24px;font-size:12px;font-weight:500;color:var(--vp-c-text-2)}.VPNavScreenMenuLink[data-v-735512b8]{display:block;border-bottom:1px solid var(--vp-c-divider);padding:12px 0 11px;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:border-color .25s,color .25s}.VPNavScreenMenuLink[data-v-735512b8]:hover{color:var(--vp-c-brand-1)}.VPNavScreenMenuGroupLink[data-v-372ae7c0]{display:block;margin-left:12px;line-height:32px;font-size:14px;font-weight:400;color:var(--vp-c-text-1);transition:color .25s}.VPNavScreenMenuGroupLink[data-v-372ae7c0]:hover{color:var(--vp-c-brand-1)}.VPNavScreenMenuGroupSection[data-v-4b8941ac]{display:block}.title[data-v-4b8941ac]{line-height:32px;font-size:13px;font-weight:700;color:var(--vp-c-text-2);transition:color .25s}.VPNavScreenMenuGroup[data-v-875057a5]{border-bottom:1px solid var(--vp-c-divider);height:48px;overflow:hidden;transition:border-color .5s}.VPNavScreenMenuGroup .items[data-v-875057a5]{visibility:hidden}.VPNavScreenMenuGroup.open .items[data-v-875057a5]{visibility:visible}.VPNavScreenMenuGroup.open[data-v-875057a5]{padding-bottom:10px;height:auto}.VPNavScreenMenuGroup.open .button[data-v-875057a5]{padding-bottom:6px;color:var(--vp-c-brand-1)}.VPNavScreenMenuGroup.open .button-icon[data-v-875057a5]{transform:rotate(45deg)}.button[data-v-875057a5]{display:flex;justify-content:space-between;align-items:center;padding:12px 4px 11px 0;width:100%;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.button[data-v-875057a5]:hover{color:var(--vp-c-brand-1)}.button-icon[data-v-875057a5]{transition:transform .25s}.group[data-v-875057a5]:first-child{padding-top:0}.group+.group[data-v-875057a5],.group+.item[data-v-875057a5]{padding-top:4px}.VPNavScreenTranslations[data-v-362991c2]{height:24px;overflow:hidden}.VPNavScreenTranslations.open[data-v-362991c2]{height:auto}.title[data-v-362991c2]{display:flex;align-items:center;font-size:14px;font-weight:500;color:var(--vp-c-text-1)}.icon[data-v-362991c2]{font-size:16px}.icon.lang[data-v-362991c2]{margin-right:8px}.icon.chevron[data-v-362991c2]{margin-left:4px}.list[data-v-362991c2]{padding:4px 0 0 24px}.link[data-v-362991c2]{line-height:32px;font-size:13px;color:var(--vp-c-text-1)}.VPNavScreen[data-v-833aabba]{position:fixed;top:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px));right:0;bottom:0;left:0;padding:0 32px;width:100%;background-color:var(--vp-nav-screen-bg-color);overflow-y:auto;transition:background-color .25s;pointer-events:auto}.VPNavScreen.fade-enter-active[data-v-833aabba],.VPNavScreen.fade-leave-active[data-v-833aabba]{transition:opacity .25s}.VPNavScreen.fade-enter-active .container[data-v-833aabba],.VPNavScreen.fade-leave-active .container[data-v-833aabba]{transition:transform .25s ease}.VPNavScreen.fade-enter-from[data-v-833aabba],.VPNavScreen.fade-leave-to[data-v-833aabba]{opacity:0}.VPNavScreen.fade-enter-from .container[data-v-833aabba],.VPNavScreen.fade-leave-to .container[data-v-833aabba]{transform:translateY(-8px)}@media (min-width: 768px){.VPNavScreen[data-v-833aabba]{display:none}}.container[data-v-833aabba]{margin:0 auto;padding:24px 0 96px;max-width:288px}.menu+.translations[data-v-833aabba],.menu+.appearance[data-v-833aabba],.translations+.appearance[data-v-833aabba]{margin-top:24px}.menu+.social-links[data-v-833aabba]{margin-top:16px}.appearance+.social-links[data-v-833aabba]{margin-top:16px}.VPNav[data-v-f1e365da]{position:relative;top:var(--vp-layout-top-height, 0px);left:0;z-index:var(--vp-z-index-nav);width:100%;pointer-events:none;transition:background-color .5s}@media (min-width: 960px){.VPNav[data-v-f1e365da]{position:fixed}}.VPSidebarItem.level-0[data-v-a4b0d9bf]{padding-bottom:24px}.VPSidebarItem.collapsed.level-0[data-v-a4b0d9bf]{padding-bottom:10px}.item[data-v-a4b0d9bf]{position:relative;display:flex;width:100%}.VPSidebarItem.collapsible>.item[data-v-a4b0d9bf]{cursor:pointer}.indicator[data-v-a4b0d9bf]{position:absolute;top:6px;bottom:6px;left:-17px;width:2px;border-radius:2px;transition:background-color .25s}.VPSidebarItem.level-2.is-active>.item>.indicator[data-v-a4b0d9bf],.VPSidebarItem.level-3.is-active>.item>.indicator[data-v-a4b0d9bf],.VPSidebarItem.level-4.is-active>.item>.indicator[data-v-a4b0d9bf],.VPSidebarItem.level-5.is-active>.item>.indicator[data-v-a4b0d9bf]{background-color:var(--vp-c-brand-1)}.link[data-v-a4b0d9bf]{display:flex;align-items:center;flex-grow:1}.text[data-v-a4b0d9bf]{flex-grow:1;padding:4px 0;line-height:24px;font-size:14px;transition:color .25s}.VPSidebarItem.level-0 .text[data-v-a4b0d9bf]{font-weight:700;color:var(--vp-c-text-1)}.VPSidebarItem.level-1 .text[data-v-a4b0d9bf],.VPSidebarItem.level-2 .text[data-v-a4b0d9bf],.VPSidebarItem.level-3 .text[data-v-a4b0d9bf],.VPSidebarItem.level-4 .text[data-v-a4b0d9bf],.VPSidebarItem.level-5 .text[data-v-a4b0d9bf]{font-weight:500;color:var(--vp-c-text-2)}.VPSidebarItem.level-0.is-link>.item>.link:hover .text[data-v-a4b0d9bf],.VPSidebarItem.level-1.is-link>.item>.link:hover .text[data-v-a4b0d9bf],.VPSidebarItem.level-2.is-link>.item>.link:hover .text[data-v-a4b0d9bf],.VPSidebarItem.level-3.is-link>.item>.link:hover .text[data-v-a4b0d9bf],.VPSidebarItem.level-4.is-link>.item>.link:hover .text[data-v-a4b0d9bf],.VPSidebarItem.level-5.is-link>.item>.link:hover .text[data-v-a4b0d9bf]{color:var(--vp-c-brand-1)}.VPSidebarItem.level-0.has-active>.item>.text[data-v-a4b0d9bf],.VPSidebarItem.level-1.has-active>.item>.text[data-v-a4b0d9bf],.VPSidebarItem.level-2.has-active>.item>.text[data-v-a4b0d9bf],.VPSidebarItem.level-3.has-active>.item>.text[data-v-a4b0d9bf],.VPSidebarItem.level-4.has-active>.item>.text[data-v-a4b0d9bf],.VPSidebarItem.level-5.has-active>.item>.text[data-v-a4b0d9bf],.VPSidebarItem.level-0.has-active>.item>.link>.text[data-v-a4b0d9bf],.VPSidebarItem.level-1.has-active>.item>.link>.text[data-v-a4b0d9bf],.VPSidebarItem.level-2.has-active>.item>.link>.text[data-v-a4b0d9bf],.VPSidebarItem.level-3.has-active>.item>.link>.text[data-v-a4b0d9bf],.VPSidebarItem.level-4.has-active>.item>.link>.text[data-v-a4b0d9bf],.VPSidebarItem.level-5.has-active>.item>.link>.text[data-v-a4b0d9bf]{color:var(--vp-c-text-1)}.VPSidebarItem.level-0.is-active>.item .link>.text[data-v-a4b0d9bf],.VPSidebarItem.level-1.is-active>.item .link>.text[data-v-a4b0d9bf],.VPSidebarItem.level-2.is-active>.item .link>.text[data-v-a4b0d9bf],.VPSidebarItem.level-3.is-active>.item .link>.text[data-v-a4b0d9bf],.VPSidebarItem.level-4.is-active>.item .link>.text[data-v-a4b0d9bf],.VPSidebarItem.level-5.is-active>.item .link>.text[data-v-a4b0d9bf]{color:var(--vp-c-brand-1)}.caret[data-v-a4b0d9bf]{display:flex;justify-content:center;align-items:center;margin-right:-7px;width:32px;height:32px;color:var(--vp-c-text-3);cursor:pointer;transition:color .25s;flex-shrink:0}.item:hover .caret[data-v-a4b0d9bf]{color:var(--vp-c-text-2)}.item:hover .caret[data-v-a4b0d9bf]:hover{color:var(--vp-c-text-1)}.caret-icon[data-v-a4b0d9bf]{font-size:18px;transform:rotate(90deg);transition:transform .25s}.VPSidebarItem.collapsed .caret-icon[data-v-a4b0d9bf]{transform:rotate(0)}.VPSidebarItem.level-1 .items[data-v-a4b0d9bf],.VPSidebarItem.level-2 .items[data-v-a4b0d9bf],.VPSidebarItem.level-3 .items[data-v-a4b0d9bf],.VPSidebarItem.level-4 .items[data-v-a4b0d9bf],.VPSidebarItem.level-5 .items[data-v-a4b0d9bf]{border-left:1px solid var(--vp-c-divider);padding-left:16px}.VPSidebarItem.collapsed .items[data-v-a4b0d9bf]{display:none}.no-transition[data-v-9e426adc] .caret-icon{transition:none}.group+.group[data-v-9e426adc]{border-top:1px solid var(--vp-c-divider);padding-top:10px}@media (min-width: 960px){.group[data-v-9e426adc]{padding-top:10px;width:calc(var(--vp-sidebar-width) - 64px)}}.VPSidebar[data-v-18756405]{position:fixed;top:var(--vp-layout-top-height, 0px);bottom:0;left:0;z-index:var(--vp-z-index-sidebar);padding:32px 32px 96px;width:calc(100vw - 64px);max-width:320px;background-color:var(--vp-sidebar-bg-color);opacity:0;box-shadow:var(--vp-c-shadow-3);overflow-x:hidden;overflow-y:auto;transform:translate(-100%);transition:opacity .5s,transform .25s ease;overscroll-behavior:contain}.VPSidebar.open[data-v-18756405]{opacity:1;visibility:visible;transform:translate(0);transition:opacity .25s,transform .5s cubic-bezier(.19,1,.22,1)}.dark .VPSidebar[data-v-18756405]{box-shadow:var(--vp-shadow-1)}@media (min-width: 960px){.VPSidebar[data-v-18756405]{padding-top:var(--vp-nav-height);width:var(--vp-sidebar-width);max-width:100%;background-color:var(--vp-sidebar-bg-color);opacity:1;visibility:visible;box-shadow:none;transform:translate(0)}}@media (min-width: 1440px){.VPSidebar[data-v-18756405]{padding-left:max(32px,calc((100% - (var(--vp-layout-max-width) - 64px)) / 2));width:calc((100% - (var(--vp-layout-max-width) - 64px)) / 2 + var(--vp-sidebar-width) - 32px)}}@media (min-width: 960px){.curtain[data-v-18756405]{position:sticky;top:-64px;left:0;z-index:1;margin-top:calc(var(--vp-nav-height) * -1);margin-right:-32px;margin-left:-32px;height:var(--vp-nav-height);background-color:var(--vp-sidebar-bg-color)}}.nav[data-v-18756405]{outline:0}.VPSkipLink[data-v-492508fc]{top:8px;left:8px;padding:8px 16px;z-index:999;border-radius:8px;font-size:12px;font-weight:700;text-decoration:none;color:var(--vp-c-brand-1);box-shadow:var(--vp-shadow-3);background-color:var(--vp-c-bg)}.VPSkipLink[data-v-492508fc]:focus{height:auto;width:auto;clip:auto;clip-path:none}@media (min-width: 1280px){.VPSkipLink[data-v-492508fc]{top:14px;left:16px}}.Layout[data-v-a9a9e638]{display:flex;flex-direction:column;min-height:100vh}.VPHomeSponsors[data-v-db81191c]{border-top:1px solid var(--vp-c-gutter);padding-top:88px!important}.VPHomeSponsors[data-v-db81191c]{margin:96px 0}@media (min-width: 768px){.VPHomeSponsors[data-v-db81191c]{margin:128px 0}}.VPHomeSponsors[data-v-db81191c]{padding:0 24px}@media (min-width: 768px){.VPHomeSponsors[data-v-db81191c]{padding:0 48px}}@media (min-width: 960px){.VPHomeSponsors[data-v-db81191c]{padding:0 64px}}.container[data-v-db81191c]{margin:0 auto;max-width:1152px}.love[data-v-db81191c]{margin:0 auto;width:fit-content;font-size:28px;color:var(--vp-c-text-3)}.icon[data-v-db81191c]{display:inline-block}.message[data-v-db81191c]{margin:0 auto;padding-top:10px;max-width:320px;text-align:center;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}.sponsors[data-v-db81191c]{padding-top:32px}.action[data-v-db81191c]{padding-top:40px;text-align:center}.VPTeamMembersItem[data-v-f9987cb6]{display:flex;flex-direction:column;gap:2px;border-radius:12px;width:100%;height:100%;overflow:hidden}.VPTeamMembersItem.small .profile[data-v-f9987cb6]{padding:32px}.VPTeamMembersItem.small .data[data-v-f9987cb6]{padding-top:20px}.VPTeamMembersItem.small .avatar[data-v-f9987cb6]{width:64px;height:64px}.VPTeamMembersItem.small .name[data-v-f9987cb6]{line-height:24px;font-size:16px}.VPTeamMembersItem.small .affiliation[data-v-f9987cb6]{padding-top:4px;line-height:20px;font-size:14px}.VPTeamMembersItem.small .desc[data-v-f9987cb6]{padding-top:12px;line-height:20px;font-size:14px}.VPTeamMembersItem.small .links[data-v-f9987cb6]{margin:0 -16px -20px;padding:10px 0 0}.VPTeamMembersItem.medium .profile[data-v-f9987cb6]{padding:48px 32px}.VPTeamMembersItem.medium .data[data-v-f9987cb6]{padding-top:24px;text-align:center}.VPTeamMembersItem.medium .avatar[data-v-f9987cb6]{width:96px;height:96px}.VPTeamMembersItem.medium .name[data-v-f9987cb6]{letter-spacing:.15px;line-height:28px;font-size:20px}.VPTeamMembersItem.medium .affiliation[data-v-f9987cb6]{padding-top:4px;font-size:16px}.VPTeamMembersItem.medium .desc[data-v-f9987cb6]{padding-top:16px;max-width:288px;font-size:16px}.VPTeamMembersItem.medium .links[data-v-f9987cb6]{margin:0 -16px -12px;padding:16px 12px 0}.profile[data-v-f9987cb6]{flex-grow:1;background-color:var(--vp-c-bg-soft)}.data[data-v-f9987cb6]{text-align:center}.avatar[data-v-f9987cb6]{position:relative;flex-shrink:0;margin:0 auto;border-radius:50%;box-shadow:var(--vp-shadow-3)}.avatar-img[data-v-f9987cb6]{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;object-fit:cover}.name[data-v-f9987cb6]{margin:0;font-weight:600}.affiliation[data-v-f9987cb6]{margin:0;font-weight:500;color:var(--vp-c-text-2)}.org.link[data-v-f9987cb6]{color:var(--vp-c-text-2);transition:color .25s}.org.link[data-v-f9987cb6]:hover{color:var(--vp-c-brand-1)}.desc[data-v-f9987cb6]{margin:0 auto}.desc[data-v-f9987cb6] a{font-weight:500;color:var(--vp-c-brand-1);text-decoration-style:dotted;transition:color .25s}.links[data-v-f9987cb6]{display:flex;justify-content:center;height:56px}.sp-link[data-v-f9987cb6]{display:flex;justify-content:center;align-items:center;text-align:center;padding:16px;font-size:14px;font-weight:500;color:var(--vp-c-sponsor);background-color:var(--vp-c-bg-soft);transition:color .25s,background-color .25s}.sp .sp-link.link[data-v-f9987cb6]:hover,.sp .sp-link.link[data-v-f9987cb6]:focus{outline:none;color:var(--vp-c-white);background-color:var(--vp-c-sponsor)}.sp-icon[data-v-f9987cb6]{margin-right:8px;font-size:16px}.VPTeamMembers.small .container[data-v-fba19bad]{grid-template-columns:repeat(auto-fit,minmax(224px,1fr))}.VPTeamMembers.small.count-1 .container[data-v-fba19bad]{max-width:276px}.VPTeamMembers.small.count-2 .container[data-v-fba19bad]{max-width:576px}.VPTeamMembers.small.count-3 .container[data-v-fba19bad]{max-width:876px}.VPTeamMembers.medium .container[data-v-fba19bad]{grid-template-columns:repeat(auto-fit,minmax(256px,1fr))}@media (min-width: 375px){.VPTeamMembers.medium .container[data-v-fba19bad]{grid-template-columns:repeat(auto-fit,minmax(288px,1fr))}}.VPTeamMembers.medium.count-1 .container[data-v-fba19bad]{max-width:368px}.VPTeamMembers.medium.count-2 .container[data-v-fba19bad]{max-width:760px}.container[data-v-fba19bad]{display:grid;gap:24px;margin:0 auto;max-width:1152px}.VPTeamPage[data-v-c2f8e101]{margin:96px 0}@media (min-width: 768px){.VPTeamPage[data-v-c2f8e101]{margin:128px 0}}.VPHome .VPTeamPageTitle[data-v-c2f8e101-s]{border-top:1px solid var(--vp-c-gutter);padding-top:88px!important}.VPTeamPageSection+.VPTeamPageSection[data-v-c2f8e101-s],.VPTeamMembers+.VPTeamPageSection[data-v-c2f8e101-s]{margin-top:64px}.VPTeamMembers+.VPTeamMembers[data-v-c2f8e101-s]{margin-top:24px}@media (min-width: 768px){.VPTeamPageTitle+.VPTeamPageSection[data-v-c2f8e101-s]{margin-top:16px}.VPTeamPageSection+.VPTeamPageSection[data-v-c2f8e101-s],.VPTeamMembers+.VPTeamPageSection[data-v-c2f8e101-s]{margin-top:96px}}.VPTeamMembers[data-v-c2f8e101-s]{padding:0 24px}@media (min-width: 768px){.VPTeamMembers[data-v-c2f8e101-s]{padding:0 48px}}@media (min-width: 960px){.VPTeamMembers[data-v-c2f8e101-s]{padding:0 64px}}.VPTeamPageSection[data-v-d43bc49d]{padding:0 32px}@media (min-width: 768px){.VPTeamPageSection[data-v-d43bc49d]{padding:0 48px}}@media (min-width: 960px){.VPTeamPageSection[data-v-d43bc49d]{padding:0 64px}}.title[data-v-d43bc49d]{position:relative;margin:0 auto;max-width:1152px;text-align:center;color:var(--vp-c-text-2)}.title-line[data-v-d43bc49d]{position:absolute;top:16px;left:0;width:100%;height:1px;background-color:var(--vp-c-divider)}.title-text[data-v-d43bc49d]{position:relative;display:inline-block;padding:0 24px;letter-spacing:0;line-height:32px;font-size:20px;font-weight:500;background-color:var(--vp-c-bg)}.lead[data-v-d43bc49d]{margin:0 auto;max-width:480px;padding-top:12px;text-align:center;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}.members[data-v-d43bc49d]{padding-top:40px}.VPTeamPageTitle[data-v-e277e15c]{padding:48px 32px;text-align:center}@media (min-width: 768px){.VPTeamPageTitle[data-v-e277e15c]{padding:64px 48px 48px}}@media (min-width: 960px){.VPTeamPageTitle[data-v-e277e15c]{padding:80px 64px 48px}}.title[data-v-e277e15c]{letter-spacing:0;line-height:44px;font-size:36px;font-weight:500}@media (min-width: 768px){.title[data-v-e277e15c]{letter-spacing:-.5px;line-height:56px;font-size:48px}}.lead[data-v-e277e15c]{margin:0 auto;max-width:512px;padding-top:12px;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}@media (min-width: 768px){.lead[data-v-e277e15c]{max-width:592px;letter-spacing:.15px;line-height:28px;font-size:20px}}.enjoyer{margin-top:.5rem;margin-bottom:0rem;border-radius:14px;padding-top:.2rem;padding-bottom:.2rem;position:relative;font-size:.9rem;font-weight:700;line-height:1.1rem;display:flex;align-items:center;justify-content:center;width:100%;gap:1rem;background-color:var(--vp-c-bg-alt);border:2px solid var(--vp-c-bg-alt);transition:border-color .5s}.enjoyer:hover{border:2px solid var(--vp-c-brand-light)}.enjoyer img{transition:transform .5s;transform:scale(1.25)}.enjoyer:hover img{transform:scale(1.75)}.enjoyer .heading{background-image:linear-gradient(120deg,#b047ff 16%,var(--vp-c-brand-lighter),var(--vp-c-brand-lighter));background-clip:text;-webkit-background-clip:text;-webkit-text-fill-color:transparent}.enjoyer .extra-info{color:var(--vp-c-text-1);opacity:0;font-size:.7rem;padding-left:.1rem;transition:opacity .5s}.enjoyer:hover .extra-info{opacity:.9}:root{--vp-plugin-tabs-tab-text-color: var(--vp-c-text-2);--vp-plugin-tabs-tab-active-text-color: var(--vp-c-text-1);--vp-plugin-tabs-tab-hover-text-color: var(--vp-c-text-1);--vp-plugin-tabs-tab-bg: var(--vp-c-bg-soft);--vp-plugin-tabs-tab-divider: var(--vp-c-divider);--vp-plugin-tabs-tab-active-bar-color: var(--vp-c-brand-1)}.plugin-tabs{margin:16px 0;background-color:var(--vp-plugin-tabs-tab-bg);border-radius:8px}.plugin-tabs--tab-list{position:relative;padding:0 12px;overflow-x:auto;overflow-y:hidden}.plugin-tabs--tab-list:after{content:"";position:absolute;bottom:0;left:0;right:0;height:2px;background-color:var(--vp-plugin-tabs-tab-divider)}.plugin-tabs--tab{position:relative;padding:0 12px;line-height:48px;border-bottom:2px solid transparent;color:var(--vp-plugin-tabs-tab-text-color);font-size:14px;font-weight:500;white-space:nowrap;transition:color .25s}.plugin-tabs--tab[aria-selected=true]{color:var(--vp-plugin-tabs-tab-active-text-color)}.plugin-tabs--tab:hover{color:var(--vp-plugin-tabs-tab-hover-text-color)}.plugin-tabs--tab:after{content:"";position:absolute;bottom:-2px;left:8px;right:8px;height:2px;background-color:transparent;transition:background-color .25s;z-index:1}.plugin-tabs--tab[aria-selected=true]:after{background-color:var(--vp-plugin-tabs-tab-active-bar-color)}.plugin-tabs--content[data-v-9b0d03d2]{padding:16px}.plugin-tabs--content[data-v-9b0d03d2]>:first-child:first-child{margin-top:0}.plugin-tabs--content[data-v-9b0d03d2]>:last-child:last-child{margin-bottom:0}.plugin-tabs--content[data-v-9b0d03d2]>div[class*=language-]{border-radius:8px;margin:16px 0}:root:not(.dark) .plugin-tabs--content[data-v-9b0d03d2] div[class*=language-]{background-color:var(--vp-c-bg)}.VPHero .clip{white-space:pre;max-width:500px}@font-face{font-family:JuliaMono-Regular;src:url(https://cdn.jsdelivr.net/gh/cormullion/juliamono/webfonts/JuliaMono-Regular.woff2)}:root{--vp-font-family-base: "Barlow", "Inter var experimental", "Inter var", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif;--vp-font-family-mono: JuliaMono-Regular, monospace;font-feature-settings:"calt" 0}.mono pre,.mono code{font-family:JuliaMono-Light}:root{--julia-blue: #4063D8;--julia-purple: #9558B2;--julia-red: #CB3C33;--julia-green: #389826;--vp-c-brand: #389826;--vp-c-brand-light: #3dd027;--vp-c-brand-lighter: #9499ff;--vp-c-brand-lightest: #bcc0ff;--vp-c-brand-dark: #535bf2;--vp-c-brand-darker: #454ce1;--vp-c-brand-dimm: #212425}:root{--vp-button-brand-border: var(--vp-c-brand-light);--vp-button-brand-text: var(--vp-c-white);--vp-button-brand-bg: var(--vp-c-brand);--vp-button-brand-hover-border: var(--vp-c-brand-light);--vp-button-brand-hover-text: var(--vp-c-white);--vp-button-brand-hover-bg: var(--vp-c-brand-light);--vp-button-brand-active-border: var(--vp-c-brand-light);--vp-button-brand-active-text: var(--vp-c-white);--vp-button-brand-active-bg: var(--vp-button-brand-bg)}:root{--vp-home-hero-name-color: transparent;--vp-home-hero-name-background: -webkit-linear-gradient(120deg, #9558B2 30%, #CB3C33);--vp-home-hero-image-background-image: linear-gradient(-45deg, #9558B2 30%, #389826 30%, #CB3C33);--vp-home-hero-image-filter: blur(40px)}@media (min-width: 640px){:root{--vp-home-hero-image-filter: blur(56px)}}@media (min-width: 960px){:root{--vp-home-hero-image-filter: blur(72px)}}:root.dark{--vp-custom-block-tip-border: var(--vp-c-brand);--vp-custom-block-tip-text: var(--vp-c-brand-lightest);--vp-custom-block-tip-bg: var(--vp-c-brand-dimm);--vp-c-black: hsl(220 20% 9%);--vp-c-black-pure: hsl(220, 24%, 4%);--vp-c-black-soft: hsl(220 16% 13%);--vp-c-black-mute: hsl(220 14% 17%);--vp-c-gray: hsl(220 8% 56%);--vp-c-gray-dark-1: hsl(220 10% 39%);--vp-c-gray-dark-2: hsl(220 12% 28%);--vp-c-gray-dark-3: hsl(220 12% 23%);--vp-c-gray-dark-4: hsl(220 14% 17%);--vp-c-gray-dark-5: hsl(220 16% 13%);--vp-custom-block-info-bg: hsl(220 14% 17%)}.DocSearch{--docsearch-primary-color: var(--vp-c-brand) !important}mjx-container>svg{display:block;margin:auto}mjx-container{padding:.5rem 0}mjx-container{display:inline;margin:auto 2px -2px}mjx-container>svg{margin:auto;display:inline}:root{--vp-c-brand-1: #CB3C33;--vp-c-brand-2: #CB3C33;--vp-c-brand-3: #CB3C33;--vp-c-sponsor: #ca2971;--vitest-c-sponsor-hover: #c13071}.dark{--vp-c-brand-1: #91dd33;--vp-c-brand-2: #91dd33;--vp-c-brand-3: #91dd33;--vp-c-sponsor: #91dd33;--vitest-c-sponsor-hover: #e51370}:root:not(.dark) .dark-only{display:none}:root:is(.dark) .light-only{display:none}@media (min-width: 1440px){.VPSidebar{padding-left:20px!important;width:250px!important}.VPNavBar .title{padding-left:15px!important;width:230px!important}.VPContent.has-sidebar{padding-left:250px!important;padding-right:5vw!important}.VPNavBar .curtain{width:100%!important}.VPDoc{padding:32px 0 0!important}.VPNavBar.has-sidebar .content{padding-left:250px!important;padding-right:20px!important}.VPNavBar .divider{padding-left:250px!important}}@media (min-width: 960px){.VPDoc{padding:32px 32px 0 10!important}.VPContent.has-sidebar{padding-left:255px!important}}.VPNavBar{padding-right:0!important}.VPDoc.has-aside .content-container{max-width:100%!important}.aside{max-width:200px!important;padding-left:0!important}.VPDocOutlineItem li{text-overflow:ellipsis;overflow:hidden;white-space:nowrap;max-width:200px}.VPNavBar .title{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.jldocstring.custom-block{border:1px solid var(--vp-c-gray-2);color:var(--vp-c-text-1)}.jldocstring.custom-block summary{font-weight:700;cursor:pointer;-webkit-user-select:none;user-select:none;margin:0 0 8px}.VPLocalSearchBox[data-v-42e65fb9]{position:fixed;z-index:100;top:0;right:0;bottom:0;left:0;display:flex}.backdrop[data-v-42e65fb9]{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--vp-backdrop-bg-color);transition:opacity .5s}.shell[data-v-42e65fb9]{position:relative;padding:12px;margin:64px auto;display:flex;flex-direction:column;gap:16px;background:var(--vp-local-search-bg);width:min(100vw - 60px,900px);height:min-content;max-height:min(100vh - 128px,900px);border-radius:6px}@media (max-width: 767px){.shell[data-v-42e65fb9]{margin:0;width:100vw;height:100vh;max-height:none;border-radius:0}}.search-bar[data-v-42e65fb9]{border:1px solid var(--vp-c-divider);border-radius:4px;display:flex;align-items:center;padding:0 12px;cursor:text}@media (max-width: 767px){.search-bar[data-v-42e65fb9]{padding:0 8px}}.search-bar[data-v-42e65fb9]:focus-within{border-color:var(--vp-c-brand-1)}.local-search-icon[data-v-42e65fb9]{display:block;font-size:18px}.navigate-icon[data-v-42e65fb9]{display:block;font-size:14px}.search-icon[data-v-42e65fb9]{margin:8px}@media (max-width: 767px){.search-icon[data-v-42e65fb9]{display:none}}.search-input[data-v-42e65fb9]{padding:6px 12px;font-size:inherit;width:100%}@media (max-width: 767px){.search-input[data-v-42e65fb9]{padding:6px 4px}}.search-actions[data-v-42e65fb9]{display:flex;gap:4px}@media (any-pointer: coarse){.search-actions[data-v-42e65fb9]{gap:8px}}@media (min-width: 769px){.search-actions.before[data-v-42e65fb9]{display:none}}.search-actions button[data-v-42e65fb9]{padding:8px}.search-actions button[data-v-42e65fb9]:not([disabled]):hover,.toggle-layout-button.detailed-list[data-v-42e65fb9]{color:var(--vp-c-brand-1)}.search-actions button.clear-button[data-v-42e65fb9]:disabled{opacity:.37}.search-keyboard-shortcuts[data-v-42e65fb9]{font-size:.8rem;opacity:75%;display:flex;flex-wrap:wrap;gap:16px;line-height:14px}.search-keyboard-shortcuts span[data-v-42e65fb9]{display:flex;align-items:center;gap:4px}@media (max-width: 767px){.search-keyboard-shortcuts[data-v-42e65fb9]{display:none}}.search-keyboard-shortcuts kbd[data-v-42e65fb9]{background:#8080801a;border-radius:4px;padding:3px 6px;min-width:24px;display:inline-block;text-align:center;vertical-align:middle;border:1px solid rgba(128,128,128,.15);box-shadow:0 2px 2px #0000001a}.results[data-v-42e65fb9]{display:flex;flex-direction:column;gap:6px;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain}.result[data-v-42e65fb9]{display:flex;align-items:center;gap:8px;border-radius:4px;transition:none;line-height:1rem;border:solid 2px var(--vp-local-search-result-border);outline:none}.result>div[data-v-42e65fb9]{margin:12px;width:100%;overflow:hidden}@media (max-width: 767px){.result>div[data-v-42e65fb9]{margin:8px}}.titles[data-v-42e65fb9]{display:flex;flex-wrap:wrap;gap:4px;position:relative;z-index:1001;padding:2px 0}.title[data-v-42e65fb9]{display:flex;align-items:center;gap:4px}.title.main[data-v-42e65fb9]{font-weight:500}.title-icon[data-v-42e65fb9]{opacity:.5;font-weight:500;color:var(--vp-c-brand-1)}.title svg[data-v-42e65fb9]{opacity:.5}.result.selected[data-v-42e65fb9]{--vp-local-search-result-bg: var(--vp-local-search-result-selected-bg);border-color:var(--vp-local-search-result-selected-border)}.excerpt-wrapper[data-v-42e65fb9]{position:relative}.excerpt[data-v-42e65fb9]{opacity:50%;pointer-events:none;max-height:140px;overflow:hidden;position:relative;margin-top:4px}.result.selected .excerpt[data-v-42e65fb9]{opacity:1}.excerpt[data-v-42e65fb9] *{font-size:.8rem!important;line-height:130%!important}.titles[data-v-42e65fb9] mark,.excerpt[data-v-42e65fb9] mark{background-color:var(--vp-local-search-highlight-bg);color:var(--vp-local-search-highlight-text);border-radius:2px;padding:0 2px}.excerpt[data-v-42e65fb9] .vp-code-group .tabs{display:none}.excerpt[data-v-42e65fb9] .vp-code-group div[class*=language-]{border-radius:8px!important}.excerpt-gradient-bottom[data-v-42e65fb9]{position:absolute;bottom:-1px;left:0;width:100%;height:8px;background:linear-gradient(transparent,var(--vp-local-search-result-bg));z-index:1000}.excerpt-gradient-top[data-v-42e65fb9]{position:absolute;top:-1px;left:0;width:100%;height:8px;background:linear-gradient(var(--vp-local-search-result-bg),transparent);z-index:1000}.result.selected .titles[data-v-42e65fb9],.result.selected .title-icon[data-v-42e65fb9]{color:var(--vp-c-brand-1)!important}.no-results[data-v-42e65fb9]{font-size:.9rem;text-align:center;padding:12px}svg[data-v-42e65fb9]{flex:none} diff --git a/previews/PR98/assets/tutorials_1_GettingStarted.md.I5QDH3_W.js b/previews/PR98/assets/tutorials_1_GettingStarted.md.I5QDH3_W.js new file mode 100644 index 0000000..3c6047c --- /dev/null +++ b/previews/PR98/assets/tutorials_1_GettingStarted.md.I5QDH3_W.js @@ -0,0 +1,320 @@ +import{_ as a,c as n,a2 as p,o as l}from"./chunks/framework.BI0fNMXE.js";const d=JSON.parse('{"title":"Getting Started","description":"","frontmatter":{},"headers":[],"relativePath":"tutorials/1_GettingStarted.md","filePath":"tutorials/1_GettingStarted.md","lastUpdated":null}'),e={name:"tutorials/1_GettingStarted.md"};function i(t,s,r,c,o,h){return l(),n("div",null,s[0]||(s[0]=[p(`

Getting Started

Prerequisites

Here we assume that you are familiar with Lux.jl. If not please take a look at the Lux.jl tutoials.

Boltz.jl is just like Lux.jl but comes with more "batteries included". Let's start by defining an MLP model.

julia
using Lux, Boltz, Random

Multi-Layer Perceptron

If we were to do this in Lux.jl we would write the following:

julia
model = Chain(
+    Dense(784, 256, relu),
+    Dense(256, 10)
+)
Chain(
+    layer_1 = Dense(784 => 256, relu),  # 200_960 parameters
+    layer_2 = Dense(256 => 10),         # 2_570 parameters
+)         # Total: 203_530 parameters,
+          #        plus 0 states.

But in Boltz.jl we can do this:

julia
model = Layers.MLP(784, (256, 10), relu)
MLP(
+    chain = Chain(
+        block1 = DenseNormActDropoutBlock(
+            block = Chain(
+                dense = Dense(784 => 256, relu),  # 200_960 parameters
+            ),
+        ),
+        block2 = DenseNormActDropoutBlock(
+            block = Chain(
+                dense = Dense(256 => 10),  # 2_570 parameters
+            ),
+        ),
+    ),
+)         # Total: 203_530 parameters,
+          #        plus 0 states.

The MLP function is just a convenience wrapper around Lux.Chain that constructs a multi-layer perceptron with the given number of layers and activation function.

How about VGG?

Let's take a look at the Vision module. We can construct a VGG model with the following code:

julia
Vision.VGG(13)
VGG(
+    layer = Chain(
+        feature_extractor = VGGFeatureExtractor(
+            model = Chain(
+                layer_1 = ConvNormActivation(
+                    model = Chain(
+                        block1 = ConvNormActivationBlock(
+                            block = Conv((3, 3), 3 => 64, relu, pad=1),  # 1_792 parameters
+                        ),
+                        block2 = ConvNormActivationBlock(
+                            block = Conv((3, 3), 64 => 64, relu, pad=1),  # 36_928 parameters
+                        ),
+                    ),
+                ),
+                layer_2 = MaxPool((2, 2)),
+                layer_3 = ConvNormActivation(
+                    model = Chain(
+                        block1 = ConvNormActivationBlock(
+                            block = Conv((3, 3), 64 => 128, relu, pad=1),  # 73_856 parameters
+                        ),
+                        block2 = ConvNormActivationBlock(
+                            block = Conv((3, 3), 128 => 128, relu, pad=1),  # 147_584 parameters
+                        ),
+                    ),
+                ),
+                layer_4 = MaxPool((2, 2)),
+                layer_5 = ConvNormActivation(
+                    model = Chain(
+                        block1 = ConvNormActivationBlock(
+                            block = Conv((3, 3), 128 => 256, relu, pad=1),  # 295_168 parameters
+                        ),
+                        block2 = ConvNormActivationBlock(
+                            block = Conv((3, 3), 256 => 256, relu, pad=1),  # 590_080 parameters
+                        ),
+                    ),
+                ),
+                layer_6 = MaxPool((2, 2)),
+                layer_7 = ConvNormActivation(
+                    model = Chain(
+                        block1 = ConvNormActivationBlock(
+                            block = Conv((3, 3), 256 => 512, relu, pad=1),  # 1_180_160 parameters
+                        ),
+                        block2 = ConvNormActivationBlock(
+                            block = Conv((3, 3), 512 => 512, relu, pad=1),  # 2_359_808 parameters
+                        ),
+                    ),
+                ),
+                layer_8 = MaxPool((2, 2)),
+                layer_9 = ConvNormActivation(
+                    model = Chain(
+                        block1 = ConvNormActivationBlock(
+                            block = Conv((3, 3), 512 => 512, relu, pad=1),  # 2_359_808 parameters
+                        ),
+                        block2 = ConvNormActivationBlock(
+                            block = Conv((3, 3), 512 => 512, relu, pad=1),  # 2_359_808 parameters
+                        ),
+                    ),
+                ),
+                layer_10 = MaxPool((2, 2)),
+            ),
+        ),
+        classifier = VGGClassifier(
+            model = Chain(
+                layer_1 = Lux.FlattenLayer{Nothing}(nothing),
+                layer_2 = Dense(25088 => 4096, relu),  # 102_764_544 parameters
+                layer_3 = Dropout(0.5),
+                layer_4 = Dense(4096 => 4096, relu),  # 16_781_312 parameters
+                layer_5 = Dropout(0.5),
+                layer_6 = Dense(4096 => 1000),  # 4_097_000 parameters
+            ),
+        ),
+    ),
+)         # Total: 133_047_848 parameters,
+          #        plus 4 states.

We can also load pretrained ImageNet weights using

Load JLD2

You need to load JLD2 before being able to load pretrained weights.

julia
using JLD2
+
+Vision.VGG(13; pretrained=true)
VGG(
+    layer = Chain(
+        feature_extractor = VGGFeatureExtractor(
+            model = Chain(
+                layer_1 = ConvNormActivation(
+                    model = Chain(
+                        block1 = ConvNormActivationBlock(
+                            block = Conv((3, 3), 3 => 64, relu, pad=1),  # 1_792 parameters
+                        ),
+                        block2 = ConvNormActivationBlock(
+                            block = Conv((3, 3), 64 => 64, relu, pad=1),  # 36_928 parameters
+                        ),
+                    ),
+                ),
+                layer_2 = MaxPool((2, 2)),
+                layer_3 = ConvNormActivation(
+                    model = Chain(
+                        block1 = ConvNormActivationBlock(
+                            block = Conv((3, 3), 64 => 128, relu, pad=1),  # 73_856 parameters
+                        ),
+                        block2 = ConvNormActivationBlock(
+                            block = Conv((3, 3), 128 => 128, relu, pad=1),  # 147_584 parameters
+                        ),
+                    ),
+                ),
+                layer_4 = MaxPool((2, 2)),
+                layer_5 = ConvNormActivation(
+                    model = Chain(
+                        block1 = ConvNormActivationBlock(
+                            block = Conv((3, 3), 128 => 256, relu, pad=1),  # 295_168 parameters
+                        ),
+                        block2 = ConvNormActivationBlock(
+                            block = Conv((3, 3), 256 => 256, relu, pad=1),  # 590_080 parameters
+                        ),
+                    ),
+                ),
+                layer_6 = MaxPool((2, 2)),
+                layer_7 = ConvNormActivation(
+                    model = Chain(
+                        block1 = ConvNormActivationBlock(
+                            block = Conv((3, 3), 256 => 512, relu, pad=1),  # 1_180_160 parameters
+                        ),
+                        block2 = ConvNormActivationBlock(
+                            block = Conv((3, 3), 512 => 512, relu, pad=1),  # 2_359_808 parameters
+                        ),
+                    ),
+                ),
+                layer_8 = MaxPool((2, 2)),
+                layer_9 = ConvNormActivation(
+                    model = Chain(
+                        block1 = ConvNormActivationBlock(
+                            block = Conv((3, 3), 512 => 512, relu, pad=1),  # 2_359_808 parameters
+                        ),
+                        block2 = ConvNormActivationBlock(
+                            block = Conv((3, 3), 512 => 512, relu, pad=1),  # 2_359_808 parameters
+                        ),
+                    ),
+                ),
+                layer_10 = MaxPool((2, 2)),
+            ),
+        ),
+        classifier = VGGClassifier(
+            model = Chain(
+                layer_1 = Lux.FlattenLayer{Nothing}(nothing),
+                layer_2 = Dense(25088 => 4096, relu),  # 102_764_544 parameters
+                layer_3 = Dropout(0.5),
+                layer_4 = Dense(4096 => 4096, relu),  # 16_781_312 parameters
+                layer_5 = Dropout(0.5),
+                layer_6 = Dense(4096 => 1000),  # 4_097_000 parameters
+            ),
+        ),
+    ),
+)         # Total: 133_047_848 parameters,
+          #        plus 4 states.

Loading Models from Metalhead (Flux.jl)

We can load models from Metalhead (Flux.jl), just remember to load Metalhead before.

julia
using Metalhead
+
+Vision.ResNet(18)
MetalheadWrapperLayer(
+    layer = Chain(
+        layer_1 = Chain(
+            layer_1 = Chain(
+                layer_1 = Conv((7, 7), 3 => 64, pad=3, stride=2, use_bias=false),  # 9_408 parameters
+                layer_2 = BatchNorm(64, relu, affine=true, track_stats=true),  # 128 parameters, plus 129
+                layer_3 = MaxPool((3, 3), pad=1, stride=2),
+            ),
+            layer_2 = Chain(
+                layer_1 = Parallel(
+                    connection = addact(NNlib.relu, ...),
+                    layer_1 = Lux.NoOpLayer(),
+                    layer_2 = Chain(
+                        layer_1 = Conv((3, 3), 64 => 64, pad=1, use_bias=false),  # 36_864 parameters
+                        layer_2 = BatchNorm(64, affine=true, track_stats=true),  # 128 parameters, plus 129
+                        layer_3 = WrappedFunction(relu),
+                        layer_4 = Conv((3, 3), 64 => 64, pad=1, use_bias=false),  # 36_864 parameters
+                        layer_5 = BatchNorm(64, affine=true, track_stats=true),  # 128 parameters, plus 129
+                    ),
+                ),
+                layer_2 = Parallel(
+                    connection = addact(NNlib.relu, ...),
+                    layer_1 = Lux.NoOpLayer(),
+                    layer_2 = Chain(
+                        layer_1 = Conv((3, 3), 64 => 64, pad=1, use_bias=false),  # 36_864 parameters
+                        layer_2 = BatchNorm(64, affine=true, track_stats=true),  # 128 parameters, plus 129
+                        layer_3 = WrappedFunction(relu),
+                        layer_4 = Conv((3, 3), 64 => 64, pad=1, use_bias=false),  # 36_864 parameters
+                        layer_5 = BatchNorm(64, affine=true, track_stats=true),  # 128 parameters, plus 129
+                    ),
+                ),
+            ),
+            layer_3 = Chain(
+                layer_1 = Parallel(
+                    connection = addact(NNlib.relu, ...),
+                    layer_1 = Chain(
+                        layer_1 = Conv((1, 1), 64 => 128, stride=2, use_bias=false),  # 8_192 parameters
+                        layer_2 = BatchNorm(128, affine=true, track_stats=true),  # 256 parameters, plus 257
+                    ),
+                    layer_2 = Chain(
+                        layer_1 = Conv((3, 3), 64 => 128, pad=1, stride=2, use_bias=false),  # 73_728 parameters
+                        layer_2 = BatchNorm(128, affine=true, track_stats=true),  # 256 parameters, plus 257
+                        layer_3 = WrappedFunction(relu),
+                        layer_4 = Conv((3, 3), 128 => 128, pad=1, use_bias=false),  # 147_456 parameters
+                        layer_5 = BatchNorm(128, affine=true, track_stats=true),  # 256 parameters, plus 257
+                    ),
+                ),
+                layer_2 = Parallel(
+                    connection = addact(NNlib.relu, ...),
+                    layer_1 = Lux.NoOpLayer(),
+                    layer_2 = Chain(
+                        layer_1 = Conv((3, 3), 128 => 128, pad=1, use_bias=false),  # 147_456 parameters
+                        layer_2 = BatchNorm(128, affine=true, track_stats=true),  # 256 parameters, plus 257
+                        layer_3 = WrappedFunction(relu),
+                        layer_4 = Conv((3, 3), 128 => 128, pad=1, use_bias=false),  # 147_456 parameters
+                        layer_5 = BatchNorm(128, affine=true, track_stats=true),  # 256 parameters, plus 257
+                    ),
+                ),
+            ),
+            layer_4 = Chain(
+                layer_1 = Parallel(
+                    connection = addact(NNlib.relu, ...),
+                    layer_1 = Chain(
+                        layer_1 = Conv((1, 1), 128 => 256, stride=2, use_bias=false),  # 32_768 parameters
+                        layer_2 = BatchNorm(256, affine=true, track_stats=true),  # 512 parameters, plus 513
+                    ),
+                    layer_2 = Chain(
+                        layer_1 = Conv((3, 3), 128 => 256, pad=1, stride=2, use_bias=false),  # 294_912 parameters
+                        layer_2 = BatchNorm(256, affine=true, track_stats=true),  # 512 parameters, plus 513
+                        layer_3 = WrappedFunction(relu),
+                        layer_4 = Conv((3, 3), 256 => 256, pad=1, use_bias=false),  # 589_824 parameters
+                        layer_5 = BatchNorm(256, affine=true, track_stats=true),  # 512 parameters, plus 513
+                    ),
+                ),
+                layer_2 = Parallel(
+                    connection = addact(NNlib.relu, ...),
+                    layer_1 = Lux.NoOpLayer(),
+                    layer_2 = Chain(
+                        layer_1 = Conv((3, 3), 256 => 256, pad=1, use_bias=false),  # 589_824 parameters
+                        layer_2 = BatchNorm(256, affine=true, track_stats=true),  # 512 parameters, plus 513
+                        layer_3 = WrappedFunction(relu),
+                        layer_4 = Conv((3, 3), 256 => 256, pad=1, use_bias=false),  # 589_824 parameters
+                        layer_5 = BatchNorm(256, affine=true, track_stats=true),  # 512 parameters, plus 513
+                    ),
+                ),
+            ),
+            layer_5 = Chain(
+                layer_1 = Parallel(
+                    connection = addact(NNlib.relu, ...),
+                    layer_1 = Chain(
+                        layer_1 = Conv((1, 1), 256 => 512, stride=2, use_bias=false),  # 131_072 parameters
+                        layer_2 = BatchNorm(512, affine=true, track_stats=true),  # 1_024 parameters, plus 1_025
+                    ),
+                    layer_2 = Chain(
+                        layer_1 = Conv((3, 3), 256 => 512, pad=1, stride=2, use_bias=false),  # 1_179_648 parameters
+                        layer_2 = BatchNorm(512, affine=true, track_stats=true),  # 1_024 parameters, plus 1_025
+                        layer_3 = WrappedFunction(relu),
+                        layer_4 = Conv((3, 3), 512 => 512, pad=1, use_bias=false),  # 2_359_296 parameters
+                        layer_5 = BatchNorm(512, affine=true, track_stats=true),  # 1_024 parameters, plus 1_025
+                    ),
+                ),
+                layer_2 = Parallel(
+                    connection = addact(NNlib.relu, ...),
+                    layer_1 = Lux.NoOpLayer(),
+                    layer_2 = Chain(
+                        layer_1 = Conv((3, 3), 512 => 512, pad=1, use_bias=false),  # 2_359_296 parameters
+                        layer_2 = BatchNorm(512, affine=true, track_stats=true),  # 1_024 parameters, plus 1_025
+                        layer_3 = WrappedFunction(relu),
+                        layer_4 = Conv((3, 3), 512 => 512, pad=1, use_bias=false),  # 2_359_296 parameters
+                        layer_5 = BatchNorm(512, affine=true, track_stats=true),  # 1_024 parameters, plus 1_025
+                    ),
+                ),
+            ),
+        ),
+        layer_2 = Chain(
+            layer_1 = AdaptiveMeanPool((1, 1)),
+            layer_2 = WrappedFunction(flatten),
+            layer_3 = Dense(512 => 1000),  # 513_000 parameters
+        ),
+    ),
+)         # Total: 11_689_512 parameters,
+          #        plus 9_620 states.

Appendix

julia
using InteractiveUtils
+InteractiveUtils.versioninfo()
+
+if @isdefined(MLDataDevices)
+    if @isdefined(CUDA) && MLDataDevices.functional(CUDADevice)
+        println()
+        CUDA.versioninfo()
+    end
+
+    if @isdefined(AMDGPU) && MLDataDevices.functional(AMDGPUDevice)
+        println()
+        AMDGPU.versioninfo()
+    end
+end
Julia Version 1.11.3
+Commit d63adeda50d (2025-01-21 19:42 UTC)
+Build Info:
+  Official https://julialang.org/ release
+Platform Info:
+  OS: Linux (x86_64-linux-gnu)
+  CPU: 4 × AMD EPYC 7763 64-Core Processor
+  WORD_SIZE: 64
+  LLVM: libLLVM-16.0.6 (ORCJIT, znver3)
+Threads: 1 default, 0 interactive, 1 GC (on 4 virtual cores)
+Environment:
+  JULIA_NUM_THREADS = 1
+  JULIA_CUDA_HARD_MEMORY_LIMIT = 100%
+  JULIA_PKG_PRECOMPILE_AUTO = 0
+  JULIA_DEBUG = Literate

This page was generated using Literate.jl.

`,29)]))}const u=a(e,[["render",i]]);export{d as __pageData,u as default}; diff --git a/previews/PR98/assets/tutorials_1_GettingStarted.md.I5QDH3_W.lean.js b/previews/PR98/assets/tutorials_1_GettingStarted.md.I5QDH3_W.lean.js new file mode 100644 index 0000000..17a083b --- /dev/null +++ b/previews/PR98/assets/tutorials_1_GettingStarted.md.I5QDH3_W.lean.js @@ -0,0 +1 @@ +import{_ as a,c as n,a2 as p,o as l}from"./chunks/framework.BI0fNMXE.js";const d=JSON.parse('{"title":"Getting Started","description":"","frontmatter":{},"headers":[],"relativePath":"tutorials/1_GettingStarted.md","filePath":"tutorials/1_GettingStarted.md","lastUpdated":null}'),e={name:"tutorials/1_GettingStarted.md"};function i(t,s,r,c,o,h){return l(),n("div",null,s[0]||(s[0]=[p("",29)]))}const u=a(e,[["render",i]]);export{d as __pageData,u as default}; diff --git a/previews/PR98/assets/tutorials_2_SymbolicOptimalControl.md.BLCy63T9.js b/previews/PR98/assets/tutorials_2_SymbolicOptimalControl.md.BLCy63T9.js new file mode 100644 index 0000000..f5be45a --- /dev/null +++ b/previews/PR98/assets/tutorials_2_SymbolicOptimalControl.md.BLCy63T9.js @@ -0,0 +1,753 @@ +import{_ as e,c as A,a2 as n,j as s,a as i,o as t}from"./chunks/framework.BI0fNMXE.js";const O=JSON.parse('{"title":"Solving Optimal Control Problems with Symbolic Universal Differential Equations","description":"","frontmatter":{},"headers":[],"relativePath":"tutorials/2_SymbolicOptimalControl.md","filePath":"tutorials/2_SymbolicOptimalControl.md","lastUpdated":null}'),l={name:"tutorials/2_SymbolicOptimalControl.md"},p={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},Q={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"10.238ex",height:"2.564ex",role:"img",focusable:"false",viewBox:"0 -883.2 4525 1133.2","aria-hidden":"true"},r={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},T={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"3.871ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 1711 1000","aria-hidden":"true"},h={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},d={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-2.697ex"},xmlns:"http://www.w3.org/2000/svg",width:"47.568ex",height:"4.847ex",role:"img",focusable:"false",viewBox:"0 -950 21025.1 2142.2","aria-hidden":"true"},o={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},k={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"0.781ex",height:"1.52ex",role:"img",focusable:"false",viewBox:"0 -661 345 672","aria-hidden":"true"},m={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},c={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.029ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2222.7 1000","aria-hidden":"true"},E={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},g={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.05ex"},xmlns:"http://www.w3.org/2000/svg",width:"4.023ex",height:"1.557ex",role:"img",focusable:"false",viewBox:"0 -666 1778 688","aria-hidden":"true"},y={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},C={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.186ex"},xmlns:"http://www.w3.org/2000/svg",width:"6.036ex",height:"2.016ex",role:"img",focusable:"false",viewBox:"0 -809 2668 891","aria-hidden":"true"},u={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},f={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"9.601ex",height:"2.564ex",role:"img",focusable:"false",viewBox:"0 -883.2 4243.6 1133.2","aria-hidden":"true"},v={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},x={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-2.697ex"},xmlns:"http://www.w3.org/2000/svg",width:"46.749ex",height:"4.847ex",role:"img",focusable:"false",viewBox:"0 -950 20663.1 2142.2","aria-hidden":"true"},F={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},V={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.294ex",height:"1.025ex",role:"img",focusable:"false",viewBox:"0 -442 572 453","aria-hidden":"true"},b={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},I={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-2.148ex"},xmlns:"http://www.w3.org/2000/svg",width:"87.063ex",height:"5.428ex",role:"img",focusable:"false",viewBox:"0 -1449.5 38482 2399","aria-hidden":"true"},L={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},H={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"56.088ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 24791.1 1000","aria-hidden":"true"},D={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},w={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-2.148ex"},xmlns:"http://www.w3.org/2000/svg",width:"112.162ex",height:"5.428ex",role:"img",focusable:"false",viewBox:"0 -1449.5 49575.8 2399","aria-hidden":"true"},M={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},B={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"59.482ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 26291.1 1000","aria-hidden":"true"};function Z(q,a,S,P,z,K){return t(),A("div",null,[a[36]||(a[36]=n('

Solving Optimal Control Problems with Symbolic Universal Differential Equations

This tutorial is based on SciMLSensitivity.jl tutorial. Instead of using a classical NN architecture, here we will combine the NN with a symbolic expression from DynamicExpressions.jl (the symbolic engine behind SymbolicRegression.jl and PySR).

Here we will solve a classic optimal control problem with a universal differential equation. Let

',3)),s("mjx-container",p,[(t(),A("svg",Q,a[0]||(a[0]=[n('',1)]))),a[1]||(a[1]=s("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[s("msup",null,[s("mi",null,"x"),s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",{"data-mjx-alternate":"1"},"′"),s("mi",{"data-mjx-alternate":"1"},"′")])]),s("mo",null,"="),s("msup",null,[s("mi",null,"u"),s("mn",null,"3")]),s("mo",{stretchy:"false"},"("),s("mi",null,"t"),s("mo",{stretchy:"false"},")")])],-1))]),s("p",null,[a[4]||(a[4]=i("where we want to optimize our controller ")),s("mjx-container",r,[(t(),A("svg",T,a[2]||(a[2]=[n('',1)]))),a[3]||(a[3]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mi",null,"u"),s("mo",{stretchy:"false"},"("),s("mi",null,"t"),s("mo",{stretchy:"false"},")")])],-1))]),a[5]||(a[5]=i(" such that the following is minimized:"))]),s("mjx-container",h,[(t(),A("svg",d,a[6]||(a[6]=[n('',1)]))),a[7]||(a[7]=s("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"L")]),s("mo",{stretchy:"false"},"("),s("mi",null,"θ"),s("mo",{stretchy:"false"},")"),s("mo",null,"="),s("munder",null,[s("mo",{"data-mjx-texclass":"OP"},"∑"),s("mi",null,"i")]),s("mrow",{"data-mjx-texclass":"INNER"},[s("mo",{"data-mjx-texclass":"OPEN"},"("),s("mo",{"data-mjx-texclass":"ORD"},"∥"),s("mn",null,"4"),s("mo",null,"−"),s("mi",null,"x"),s("mo",{stretchy:"false"},"("),s("msub",null,[s("mi",null,"t"),s("mi",null,"i")]),s("mo",{stretchy:"false"},")"),s("msub",null,[s("mo",{"data-mjx-texclass":"ORD"},"∥"),s("mn",null,"2")]),s("mo",null,"+"),s("mn",null,"2"),s("mo",{"data-mjx-texclass":"ORD"},"∥"),s("mi",null,"x"),s("mi",{"data-mjx-alternate":"1"},"′"),s("mo",{stretchy:"false"},"("),s("msub",null,[s("mi",null,"t"),s("mi",null,"i")]),s("mo",{stretchy:"false"},")"),s("msub",null,[s("mo",{"data-mjx-texclass":"ORD"},"∥"),s("mn",null,"2")]),s("mo",null,"+"),s("mo",{"data-mjx-texclass":"ORD"},"∥"),s("mi",null,"u"),s("mo",{stretchy:"false"},"("),s("msub",null,[s("mi",null,"t"),s("mi",null,"i")]),s("mo",{stretchy:"false"},")"),s("msub",null,[s("mo",{"data-mjx-texclass":"ORD"},"∥"),s("mn",null,"2")]),s("mo",{"data-mjx-texclass":"CLOSE"},")")])])],-1))]),s("p",null,[a[14]||(a[14]=i("where ")),s("mjx-container",o,[(t(),A("svg",k,a[8]||(a[8]=[s("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[s("g",{"data-mml-node":"math"},[s("g",{"data-mml-node":"mi"},[s("path",{"data-c":"1D456",d:"M184 600Q184 624 203 642T247 661Q265 661 277 649T290 619Q290 596 270 577T226 557Q211 557 198 567T184 600ZM21 287Q21 295 30 318T54 369T98 420T158 442Q197 442 223 419T250 357Q250 340 236 301T196 196T154 83Q149 61 149 51Q149 26 166 26Q175 26 185 29T208 43T235 78T260 137Q263 149 265 151T282 153Q302 153 302 143Q302 135 293 112T268 61T223 11T161 -11Q129 -11 102 10T74 74Q74 91 79 106T122 220Q160 321 166 341T173 380Q173 404 156 404H154Q124 404 99 371T61 287Q60 286 59 284T58 281T56 279T53 278T49 278T41 278H27Q21 284 21 287Z",style:{"stroke-width":"3"}})])])],-1)]))),a[9]||(a[9]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mi",null,"i")])],-1))]),a[15]||(a[15]=i(" is measured on ")),s("mjx-container",m,[(t(),A("svg",c,a[10]||(a[10]=[n('',1)]))),a[11]||(a[11]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mo",{stretchy:"false"},"("),s("mn",null,"0"),s("mo",null,","),s("mn",null,"8"),s("mo",{stretchy:"false"},")")])],-1))]),a[16]||(a[16]=i(" at ")),s("mjx-container",E,[(t(),A("svg",g,a[12]||(a[12]=[n('',1)]))),a[13]||(a[13]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mn",null,"0.01")])],-1))]),a[17]||(a[17]=i(" intervals. To do this, we rewrite the ODE in first order form:"))]),s("mjx-container",y,[(t(),A("svg",C,a[18]||(a[18]=[n('',1)]))),a[19]||(a[19]=s("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[s("msup",null,[s("mi",null,"x"),s("mi",{"data-mjx-alternate":"1"},"′")]),s("mo",null,"="),s("mi",null,"v")])],-1))]),s("mjx-container",u,[(t(),A("svg",f,a[20]||(a[20]=[n('',1)]))),a[21]||(a[21]=s("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[s("msup",null,[s("mi",null,"v"),s("mi",{"data-mjx-alternate":"1"},"′")]),s("mo",null,"="),s("msup",null,[s("mi",null,"u"),s("mn",null,"3")]),s("mo",{stretchy:"false"},"("),s("mi",null,"t"),s("mo",{stretchy:"false"},")")])],-1))]),a[37]||(a[37]=s("p",null,"and thus",-1)),s("mjx-container",v,[(t(),A("svg",x,a[22]||(a[22]=[n('',1)]))),a[23]||(a[23]=s("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"L")]),s("mo",{stretchy:"false"},"("),s("mi",null,"θ"),s("mo",{stretchy:"false"},")"),s("mo",null,"="),s("munder",null,[s("mo",{"data-mjx-texclass":"OP"},"∑"),s("mi",null,"i")]),s("mrow",{"data-mjx-texclass":"INNER"},[s("mo",{"data-mjx-texclass":"OPEN"},"("),s("mo",{"data-mjx-texclass":"ORD"},"∥"),s("mn",null,"4"),s("mo",null,"−"),s("mi",null,"x"),s("mo",{stretchy:"false"},"("),s("msub",null,[s("mi",null,"t"),s("mi",null,"i")]),s("mo",{stretchy:"false"},")"),s("msub",null,[s("mo",{"data-mjx-texclass":"ORD"},"∥"),s("mn",null,"2")]),s("mo",null,"+"),s("mn",null,"2"),s("mo",{"data-mjx-texclass":"ORD"},"∥"),s("mi",null,"v"),s("mo",{stretchy:"false"},"("),s("msub",null,[s("mi",null,"t"),s("mi",null,"i")]),s("mo",{stretchy:"false"},")"),s("msub",null,[s("mo",{"data-mjx-texclass":"ORD"},"∥"),s("mn",null,"2")]),s("mo",null,"+"),s("mo",{"data-mjx-texclass":"ORD"},"∥"),s("mi",null,"u"),s("mo",{stretchy:"false"},"("),s("msub",null,[s("mi",null,"t"),s("mi",null,"i")]),s("mo",{stretchy:"false"},")"),s("msub",null,[s("mo",{"data-mjx-texclass":"ORD"},"∥"),s("mn",null,"2")]),s("mo",{"data-mjx-texclass":"CLOSE"},")")])])],-1))]),s("p",null,[a[26]||(a[26]=i("is our loss function on the first order system. We thus choose a neural network form for ")),s("mjx-container",F,[(t(),A("svg",V,a[24]||(a[24]=[s("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[s("g",{"data-mml-node":"math"},[s("g",{"data-mml-node":"mi"},[s("path",{"data-c":"1D462",d:"M21 287Q21 295 30 318T55 370T99 420T158 442Q204 442 227 417T250 358Q250 340 216 246T182 105Q182 62 196 45T238 27T291 44T328 78L339 95Q341 99 377 247Q407 367 413 387T427 416Q444 431 463 431Q480 431 488 421T496 402L420 84Q419 79 419 68Q419 43 426 35T447 26Q469 29 482 57T512 145Q514 153 532 153Q551 153 551 144Q550 139 549 130T540 98T523 55T498 17T462 -8Q454 -10 438 -10Q372 -10 347 46Q345 45 336 36T318 21T296 6T267 -6T233 -11Q189 -11 155 7Q103 38 103 113Q103 170 138 262T173 379Q173 380 173 381Q173 390 173 393T169 400T158 404H154Q131 404 112 385T82 344T65 302T57 280Q55 278 41 278H27Q21 284 21 287Z",style:{"stroke-width":"3"}})])])],-1)]))),a[25]||(a[25]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mi",null,"u")])],-1))]),a[27]||(a[27]=i(" and optimize the equation with respect to this loss. Note that we will first reduce control cost (the last term) by 10x in order to bump the network out of a local minimum. This looks like:"))]),a[38]||(a[38]=n(`

Package Imports

julia
using Lux, Boltz, ComponentArrays, OrdinaryDiffEqVerner, Optimization, OptimizationOptimJL,
+      OptimizationOptimisers, SciMLSensitivity, Statistics, Printf, Random
+using DynamicExpressions, SymbolicRegression, MLJ, SymbolicUtils, Latexify
+using CairoMakie
Precompiling ComponentArrays...
+    840.2 ms  ✓ ComponentArrays
+  1 dependency successfully precompiled in 1 seconds. 45 already precompiled.
+Precompiling MLDataDevicesComponentArraysExt...
+    535.7 ms  ✓ MLDataDevices → MLDataDevicesComponentArraysExt
+  1 dependency successfully precompiled in 1 seconds. 48 already precompiled.
+Precompiling LuxComponentArraysExt...
+    651.1 ms  ✓ ComponentArrays → ComponentArraysOptimisersExt
+   1240.5 ms  ✓ Lux → LuxComponentArraysExt
+   2063.7 ms  ✓ ComponentArrays → ComponentArraysKernelAbstractionsExt
+  3 dependencies successfully precompiled in 2 seconds. 111 already precompiled.
+Precompiling OrdinaryDiffEqVerner...
+    458.0 ms  ✓ SimpleUnPack
+    501.0 ms  ✓ UnPack
+    516.1 ms  ✓ CommonSolve
+    577.1 ms  ✓ ExprTools
+    435.9 ms  ✓ FastPower
+    524.3 ms  ✓ EnumX
+    515.5 ms  ✓ MuladdMacro
+   1090.9 ms  ✓ FunctionWrappers
+    580.5 ms  ✓ SciMLStructures
+   1060.2 ms  ✓ TruncatedStacktraces
+   1086.0 ms  ✓ PreallocationTools
+    878.7 ms  ✓ Parameters
+   1398.2 ms  ✓ FastBroadcast
+   2640.0 ms  ✓ RecipesBase
+    682.5 ms  ✓ RuntimeGeneratedFunctions
+   3076.8 ms  ✓ SciMLOperators
+    646.3 ms  ✓ FunctionWrappersWrappers
+    932.7 ms  ✓ FastPower → FastPowerForwardDiffExt
+    731.8 ms  ✓ SciMLOperators → SciMLOperatorsStaticArraysCoreExt
+   1583.0 ms  ✓ SymbolicIndexingInterface
+   1902.9 ms  ✓ RecursiveArrayTools
+    963.4 ms  ✓ RecursiveArrayTools → RecursiveArrayToolsForwardDiffExt
+    974.4 ms  ✓ RecursiveArrayTools → RecursiveArrayToolsFastBroadcastExt
+   9110.3 ms  ✓ Expronicon
+  10995.3 ms  ✓ SciMLBase
+   5467.3 ms  ✓ DiffEqBase
+   4219.0 ms  ✓ OrdinaryDiffEqCore
+   1267.4 ms  ✓ OrdinaryDiffEqCore → OrdinaryDiffEqCoreEnzymeCoreExt
+  34662.9 ms  ✓ OrdinaryDiffEqVerner
+  29 dependencies successfully precompiled in 67 seconds. 96 already precompiled.
+Precompiling MLDataDevicesRecursiveArrayToolsExt...
+    499.4 ms  ✓ MLDataDevices → MLDataDevicesRecursiveArrayToolsExt
+  1 dependency successfully precompiled in 1 seconds. 47 already precompiled.
+Precompiling ComponentArraysRecursiveArrayToolsExt...
+    577.7 ms  ✓ ComponentArrays → ComponentArraysRecursiveArrayToolsExt
+  1 dependency successfully precompiled in 1 seconds. 69 already precompiled.
+Precompiling ComponentArraysSciMLBaseExt...
+    850.8 ms  ✓ SciMLBase → SciMLBaseChainRulesCoreExt
+    968.9 ms  ✓ ComponentArrays → ComponentArraysSciMLBaseExt
+  2 dependencies successfully precompiled in 1 seconds. 97 already precompiled.
+Precompiling DiffEqBaseChainRulesCoreExt...
+   1291.5 ms  ✓ DiffEqBase → DiffEqBaseChainRulesCoreExt
+  1 dependency successfully precompiled in 2 seconds. 125 already precompiled.
+Precompiling Optimization...
+    638.6 ms  ✓ LeftChildRightSiblingTrees
+    755.4 ms  ✓ LoggingExtras
+   1363.6 ms  ✓ DifferentiationInterface
+   1430.7 ms  ✓ ProgressMeter
+   1569.4 ms  ✓ PDMats
+   1215.5 ms  ✓ SciMLOperators → SciMLOperatorsSparseArraysExt
+   1131.2 ms  ✓ L_BFGS_B_jll
+   1503.5 ms  ✓ RecursiveArrayTools → RecursiveArrayToolsSparseArraysExt
+   1229.8 ms  ✓ TerminalLoggers
+   1970.1 ms  ✓ SparseMatrixColorings
+    919.8 ms  ✓ DifferentiationInterface → DifferentiationInterfaceSparseArraysExt
+    804.0 ms  ✓ ConsoleProgressMonitor
+   1000.2 ms  ✓ FillArrays → FillArraysPDMatsExt
+    811.5 ms  ✓ LBFGSB
+   1096.5 ms  ✓ DifferentiationInterface → DifferentiationInterfaceSparseMatrixColoringsExt
+   4862.0 ms  ✓ SparseConnectivityTracer
+   1904.0 ms  ✓ OptimizationBase
+   1765.7 ms  ✓ Optimization
+  18 dependencies successfully precompiled in 9 seconds. 86 already precompiled.
+Precompiling DiffEqBaseSparseArraysExt...
+   1337.3 ms  ✓ DiffEqBase → DiffEqBaseSparseArraysExt
+  1 dependency successfully precompiled in 2 seconds. 125 already precompiled.
+Precompiling DifferentiationInterfaceChainRulesCoreExt...
+    366.9 ms  ✓ DifferentiationInterface → DifferentiationInterfaceChainRulesCoreExt
+  1 dependency successfully precompiled in 0 seconds. 11 already precompiled.
+Precompiling DifferentiationInterfaceStaticArraysExt...
+    513.8 ms  ✓ DifferentiationInterface → DifferentiationInterfaceStaticArraysExt
+  1 dependency successfully precompiled in 1 seconds. 10 already precompiled.
+Precompiling DifferentiationInterfaceForwardDiffExt...
+    700.6 ms  ✓ DifferentiationInterface → DifferentiationInterfaceForwardDiffExt
+  1 dependency successfully precompiled in 1 seconds. 28 already precompiled.
+Precompiling SparseConnectivityTracerSpecialFunctionsExt...
+   1040.3 ms  ✓ SparseConnectivityTracer → SparseConnectivityTracerLogExpFunctionsExt
+   1406.7 ms  ✓ SparseConnectivityTracer → SparseConnectivityTracerSpecialFunctionsExt
+  2 dependencies successfully precompiled in 2 seconds. 26 already precompiled.
+Precompiling SparseConnectivityTracerNNlibExt...
+   1415.1 ms  ✓ SparseConnectivityTracer → SparseConnectivityTracerNNlibExt
+  1 dependency successfully precompiled in 2 seconds. 46 already precompiled.
+Precompiling SparseConnectivityTracerNaNMathExt...
+   1102.4 ms  ✓ SparseConnectivityTracer → SparseConnectivityTracerNaNMathExt
+  1 dependency successfully precompiled in 1 seconds. 18 already precompiled.
+Precompiling OptimizationForwardDiffExt...
+    556.5 ms  ✓ OptimizationBase → OptimizationForwardDiffExt
+  1 dependency successfully precompiled in 1 seconds. 110 already precompiled.
+Precompiling OptimizationMLDataDevicesExt...
+   1197.0 ms  ✓ OptimizationBase → OptimizationMLDataDevicesExt
+  1 dependency successfully precompiled in 1 seconds. 97 already precompiled.
+Precompiling OptimizationOptimJL...
+    394.6 ms  ✓ PositiveFactorizations
+    558.8 ms  ✓ FiniteDiff
+    531.1 ms  ✓ OptimizationBase → OptimizationFiniteDiffExt
+    574.3 ms  ✓ DifferentiationInterface → DifferentiationInterfaceFiniteDiffExt
+    747.0 ms  ✓ FiniteDiff → FiniteDiffSparseArraysExt
+   1113.7 ms  ✓ NLSolversBase
+   1605.8 ms  ✓ LineSearches
+   2870.3 ms  ✓ Optim
+  15169.9 ms  ✓ OptimizationOptimJL
+  9 dependencies successfully precompiled in 22 seconds. 131 already precompiled.
+Precompiling FiniteDiffStaticArraysExt...
+    511.2 ms  ✓ FiniteDiff → FiniteDiffStaticArraysExt
+  1 dependency successfully precompiled in 1 seconds. 21 already precompiled.
+Precompiling OptimizationOptimisers...
+   1669.6 ms  ✓ OptimizationOptimisers
+  1 dependency successfully precompiled in 2 seconds. 113 already precompiled.
+Precompiling SciMLSensitivity...
+    594.4 ms  ✓ PoissonRandom
+    732.5 ms  ✓ StructIO
+   1640.6 ms  ✓ OffsetArrays
+   1809.3 ms  ✓ Cassette
+   1539.4 ms  ✓ RandomNumbers
+   2136.6 ms  ✓ FastLapackInterface
+    638.4 ms  ✓ Scratch
+   1114.9 ms  ✓ Rmath_jll
+   1882.7 ms  ✓ KLU
+   1337.0 ms  ✓ oneTBB_jll
+   4881.4 ms  ✓ TimerOutputs
+   1908.9 ms  ✓ QuadGK
+   1056.0 ms  ✓ ResettableStacks
+   2298.9 ms  ✓ Enzyme_jll
+   2015.6 ms  ✓ IntelOpenMP_jll
+   2142.3 ms  ✓ HypergeometricFunctions
+    956.2 ms  ✓ RecursiveArrayTools → RecursiveArrayToolsStructArraysExt
+   1288.4 ms  ✓ HostCPUFeatures
+  10943.2 ms  ✓ Krylov
+   4391.5 ms  ✓ SciMLJacobianOperators
+   2622.4 ms  ✓ DifferentiationInterface → DifferentiationInterfaceZygoteExt
+   8507.4 ms  ✓ Tracker
+   5426.4 ms  ✓ RecursiveArrayTools → RecursiveArrayToolsZygoteExt
+   5997.9 ms  ✓ SciMLBase → SciMLBaseZygoteExt
+   3071.6 ms  ✓ ObjectFile
+    781.2 ms  ✓ OffsetArrays → OffsetArraysAdaptExt
+    960.2 ms  ✓ StaticArrayInterface → StaticArrayInterfaceOffsetArraysExt
+   1895.9 ms  ✓ Sparspak
+    742.7 ms  ✓ FunctionProperties
+  22077.3 ms  ✓ ArrayLayouts
+   1380.5 ms  ✓ Random123
+   1245.3 ms  ✓ Rmath
+   7276.4 ms  ✓ DiffEqCallbacks
+   1862.2 ms  ✓ DifferentiationInterface → DifferentiationInterfaceTrackerExt
+   1890.7 ms  ✓ Tracker → TrackerPDMatsExt
+   1730.3 ms  ✓ FastPower → FastPowerTrackerExt
+   1595.4 ms  ✓ ArrayInterface → ArrayInterfaceTrackerExt
+   1910.7 ms  ✓ RecursiveArrayTools → RecursiveArrayToolsTrackerExt
+   3440.8 ms  ✓ Zygote → ZygoteTrackerExt
+  28679.1 ms  ✓ ReverseDiff
+  13504.5 ms  ✓ MKL_jll
+   1572.3 ms  ✓ ArrayLayouts → ArrayLayoutsSparseArraysExt
+  14792.6 ms  ✓ VectorizationBase
+   3208.6 ms  ✓ StatsFuns
+   4545.6 ms  ✓ DiffEqBase → DiffEqBaseTrackerExt
+   6164.9 ms  ✓ FastPower → FastPowerReverseDiffExt
+   7006.7 ms  ✓ DifferentiationInterface → DifferentiationInterfaceReverseDiffExt
+   5583.7 ms  ✓ ArrayInterface → ArrayInterfaceReverseDiffExt
+   9374.7 ms  ✓ RecursiveArrayTools → RecursiveArrayToolsReverseDiffExt
+   4799.8 ms  ✓ LazyArrays
+   5961.5 ms  ✓ PreallocationTools → PreallocationToolsReverseDiffExt
+   1409.5 ms  ✓ StatsFuns → StatsFunsInverseFunctionsExt
+   1869.1 ms  ✓ SLEEFPirates
+   3062.0 ms  ✓ StatsFuns → StatsFunsChainRulesCoreExt
+   9366.1 ms  ✓ DiffEqBase → DiffEqBaseReverseDiffExt
+   2636.0 ms  ✓ LazyArrays → LazyArraysStaticArraysExt
+   7923.0 ms  ✓ Distributions
+   2699.9 ms  ✓ Distributions → DistributionsChainRulesCoreExt
+   3180.3 ms  ✓ Distributions → DistributionsTestExt
+   4012.2 ms  ✓ DiffEqBase → DiffEqBaseDistributionsExt
+  46203.5 ms  ✓ GPUCompiler
+   5219.4 ms  ✓ DiffEqNoiseProcess
+   6683.0 ms  ✓ DiffEqNoiseProcess → DiffEqNoiseProcessReverseDiffExt
+  34253.7 ms  ✓ LoopVectorization
+   1490.9 ms  ✓ LoopVectorization → SpecialFunctionsExt
+   1641.1 ms  ✓ LoopVectorization → ForwardDiffExt
+   3401.5 ms  ✓ TriangularSolve
+  13410.9 ms  ✓ RecursiveFactorization
+  33454.7 ms  ✓ LinearSolve
+   3325.6 ms  ✓ LinearSolve → LinearSolveRecursiveArrayToolsExt
+   3484.9 ms  ✓ LinearSolve → LinearSolveEnzymeExt
+   5075.3 ms  ✓ LinearSolve → LinearSolveKernelAbstractionsExt
+ 212740.4 ms  ✓ Enzyme
+   9961.4 ms  ✓ Enzyme → EnzymeGPUArraysCoreExt
+  10286.3 ms  ✓ Enzyme → EnzymeSpecialFunctionsExt
+  10380.7 ms  ✓ Enzyme → EnzymeLogExpFunctionsExt
+  14476.3 ms  ✓ Enzyme → EnzymeStaticArraysExt
+  18207.1 ms  ✓ Enzyme → EnzymeChainRulesCoreExt
+   8949.5 ms  ✓ DifferentiationInterface → DifferentiationInterfaceEnzymeExt
+   8739.8 ms  ✓ FastPower → FastPowerEnzymeExt
+   8812.7 ms  ✓ QuadGK → QuadGKEnzymeExt
+   7650.9 ms  ✓ DiffEqBase → DiffEqBaseEnzymeExt
+  19093.8 ms  ✓ SciMLSensitivity
+  83 dependencies successfully precompiled in 321 seconds. 208 already precompiled.
+  1 dependency had output during precompilation:
+┌ MKL_jll
+│  \x1B[32m\x1B[1m Downloading\x1B[22m\x1B[39m artifact: IntelOpenMP
+
+Precompiling LuxLibSLEEFPiratesExt...
+   2116.8 ms  ✓ LuxLib → LuxLibSLEEFPiratesExt
+  1 dependency successfully precompiled in 2 seconds. 97 already precompiled.
+Precompiling LuxLibLoopVectorizationExt...
+   3528.7 ms  ✓ LuxLib → LuxLibLoopVectorizationExt
+  1 dependency successfully precompiled in 4 seconds. 105 already precompiled.
+Precompiling LuxLibEnzymeExt...
+   1113.5 ms  ✓ LuxLib → LuxLibEnzymeExt
+  1 dependency successfully precompiled in 1 seconds. 130 already precompiled.
+Precompiling LuxEnzymeExt...
+   5931.9 ms  ✓ Lux → LuxEnzymeExt
+  1 dependency successfully precompiled in 6 seconds. 146 already precompiled.
+Precompiling OptimizationEnzymeExt...
+  11637.8 ms  ✓ OptimizationBase → OptimizationEnzymeExt
+  1 dependency successfully precompiled in 12 seconds. 109 already precompiled.
+Precompiling MLDataDevicesTrackerExt...
+   1005.5 ms  ✓ MLDataDevices → MLDataDevicesTrackerExt
+  1 dependency successfully precompiled in 1 seconds. 59 already precompiled.
+Precompiling LuxLibTrackerExt...
+    950.2 ms  ✓ LuxCore → LuxCoreArrayInterfaceTrackerExt
+   3019.0 ms  ✓ LuxLib → LuxLibTrackerExt
+  2 dependencies successfully precompiled in 3 seconds. 100 already precompiled.
+Precompiling LuxTrackerExt...
+   1839.3 ms  ✓ Lux → LuxTrackerExt
+  1 dependency successfully precompiled in 2 seconds. 114 already precompiled.
+Precompiling BoltzTrackerExt...
+   2073.4 ms  ✓ Boltz → BoltzTrackerExt
+  1 dependency successfully precompiled in 2 seconds. 128 already precompiled.
+Precompiling ComponentArraysTrackerExt...
+   1004.8 ms  ✓ ComponentArrays → ComponentArraysTrackerExt
+  1 dependency successfully precompiled in 1 seconds. 70 already precompiled.
+Precompiling MLDataDevicesReverseDiffExt...
+   2830.3 ms  ✓ MLDataDevices → MLDataDevicesReverseDiffExt
+  1 dependency successfully precompiled in 3 seconds. 49 already precompiled.
+Precompiling LuxLibReverseDiffExt...
+   2764.5 ms  ✓ LuxCore → LuxCoreArrayInterfaceReverseDiffExt
+   3503.6 ms  ✓ LuxLib → LuxLibReverseDiffExt
+  2 dependencies successfully precompiled in 4 seconds. 98 already precompiled.
+Precompiling BoltzReverseDiffExt...
+   3672.2 ms  ✓ Lux → LuxReverseDiffExt
+   3885.8 ms  ✓ Boltz → BoltzReverseDiffExt
+  2 dependencies successfully precompiled in 4 seconds. 128 already precompiled.
+Precompiling ComponentArraysReverseDiffExt...
+   2818.4 ms  ✓ ComponentArrays → ComponentArraysReverseDiffExt
+  1 dependency successfully precompiled in 3 seconds. 57 already precompiled.
+Precompiling OptimizationReverseDiffExt...
+   2737.4 ms  ✓ OptimizationBase → OptimizationReverseDiffExt
+  1 dependency successfully precompiled in 3 seconds. 130 already precompiled.
+Precompiling ComponentArraysZygoteExt...
+   1398.7 ms  ✓ ComponentArrays → ComponentArraysZygoteExt
+   1667.0 ms  ✓ ComponentArrays → ComponentArraysGPUArraysExt
+  2 dependencies successfully precompiled in 2 seconds. 116 already precompiled.
+Precompiling OptimizationZygoteExt...
+   1873.6 ms  ✓ OptimizationBase → OptimizationZygoteExt
+  1 dependency successfully precompiled in 2 seconds. 160 already precompiled.
+Precompiling DynamicExpressionsOptimExt...
+   1163.8 ms  ✓ DynamicExpressions → DynamicExpressionsOptimExt
+  1 dependency successfully precompiled in 1 seconds. 77 already precompiled.
+Precompiling DynamicExpressionsLoopVectorizationExt...
+   3382.1 ms  ✓ DynamicExpressions → DynamicExpressionsLoopVectorizationExt
+  1 dependency successfully precompiled in 4 seconds. 49 already precompiled.
+Precompiling DynamicExpressionsZygoteExt...
+   1362.1 ms  ✓ DynamicExpressions → DynamicExpressionsZygoteExt
+  1 dependency successfully precompiled in 2 seconds. 106 already precompiled.
+Precompiling SymbolicRegression...
+    478.9 ms  ✓ Tricks
+    503.1 ms  ✓ ScientificTypesBase
+    538.6 ms  ✓ StatisticalTraits
+   1929.9 ms  ✓ LossFunctions
+    958.4 ms  ✓ MLJModelInterface
+   2325.1 ms  ✓ DynamicDiff
+   4045.2 ms  ✓ DynamicQuantities
+    605.1 ms  ✓ DynamicQuantities → DynamicQuantitiesLinearAlgebraExt
+  68194.5 ms  ✓ SymbolicRegression
+  9 dependencies successfully precompiled in 73 seconds. 100 already precompiled.
+Precompiling LuxLossFunctionsExt...
+   1369.9 ms  ✓ Lux → LuxLossFunctionsExt
+  1 dependency successfully precompiled in 2 seconds. 110 already precompiled.
+Precompiling SymbolicRegressionEnzymeExt...
+  16133.6 ms  ✓ SymbolicRegression → SymbolicRegressionEnzymeExt
+  1 dependency successfully precompiled in 16 seconds. 129 already precompiled.
+Precompiling MLJ...
+    502.8 ms  ✓ LaTeXStrings
+    527.5 ms  ✓ SimpleBufferStream
+    579.1 ms  ✓ InvertedIndices
+    703.0 ms  ✓ BitFlags
+   1898.8 ms  ✓ Crayons
+    734.6 ms  ✓ StableRNGs
+   1637.0 ms  ✓ Combinatorics
+   1126.5 ms  ✓ ComputationalResources
+   1221.3 ms  ✓ ConcurrentUtilities
+   1369.8 ms  ✓ Distances
+   3935.9 ms  ✓ FixedPointNumbers
+   1893.0 ms  ✓ FeatureSelection
+    791.8 ms  ✓ EarlyStopping
+   1953.1 ms  ✓ MbedTLS
+    843.4 ms  ✓ RelocatableFolders
+   6313.5 ms  ✓ PrettyPrinting
+    947.1 ms  ✓ ExceptionUnwrapping
+   2212.7 ms  ✓ LearnAPI
+   4774.9 ms  ✓ CategoricalArrays
+   1684.1 ms  ✓ FilePathsBase
+    725.0 ms  ✓ Distances → DistancesChainRulesCoreExt
+   1176.0 ms  ✓ Distances → DistancesSparseArraysExt
+   1787.7 ms  ✓ LatinHypercubeSampling
+   3549.8 ms  ✓ OpenSSL
+   3899.5 ms  ✓ StringManipulation
+   1309.4 ms  ✓ CategoricalArrays → CategoricalArraysJSONExt
+   2401.1 ms  ✓ IterationControl
+   1367.4 ms  ✓ CategoricalArrays → CategoricalArraysRecipesBaseExt
+   1087.8 ms  ✓ FilePathsBase → FilePathsBaseMmapExt
+   2998.1 ms  ✓ ARFFFiles
+   4386.0 ms  ✓ ColorTypes
+   1967.4 ms  ✓ FilePathsBase → FilePathsBaseTestExt
+   9972.2 ms  ✓ StatisticalMeasuresBase
+  21064.9 ms  ✓ HTTP
+   2136.0 ms  ✓ MLFlowClient
+   3759.5 ms  ✓ OpenML
+  24683.0 ms  ✓ PrettyTables
+   2334.3 ms  ✓ ScientificTypes
+   2097.2 ms  ✓ CategoricalDistributions
+   4660.4 ms  ✓ MLJEnsembles
+   8620.5 ms  ✓ MLJBase
+  13854.8 ms  ✓ MLJModels
+   6729.0 ms  ✓ MLJTuning
+   6971.1 ms  ✓ MLJBalancing
+   7939.9 ms  ✓ MLJIteration
+   4437.3 ms  ✓ MLJFlow
+  22744.9 ms  ✓ StatisticalMeasures
+   2193.6 ms  ✓ StatisticalMeasures → ScientificTypesExt
+   2248.4 ms  ✓ MLJBase → DefaultMeasuresExt
+   5622.7 ms  ✓ MLJ
+  50 dependencies successfully precompiled in 73 seconds. 149 already precompiled.
+Precompiling LossFunctionsCategoricalArraysExt...
+    418.7 ms  ✓ LossFunctions → LossFunctionsCategoricalArraysExt
+  1 dependency successfully precompiled in 1 seconds. 12 already precompiled.
+Precompiling DynamicQuantitiesScientificTypesExt...
+   1327.5 ms  ✓ DynamicQuantities → DynamicQuantitiesScientificTypesExt
+  1 dependency successfully precompiled in 2 seconds. 74 already precompiled.
+Precompiling TransducersLazyArraysExt...
+   1042.3 ms  ✓ Transducers → TransducersLazyArraysExt
+  1 dependency successfully precompiled in 1 seconds. 48 already precompiled.
+Precompiling OptimizationMLUtilsExt...
+   1592.6 ms  ✓ OptimizationBase → OptimizationMLUtilsExt
+  1 dependency successfully precompiled in 2 seconds. 151 already precompiled.
+Precompiling LossFunctionsExt...
+   2231.0 ms  ✓ StatisticalMeasures → LossFunctionsExt
+  1 dependency successfully precompiled in 2 seconds. 138 already precompiled.
+Precompiling SymbolicUtils...
+    496.5 ms  ✓ TermInterface
+    521.4 ms  ✓ Bijections
+    636.7 ms  ✓ WeakValueDicts
+    731.8 ms  ✓ Unityper
+   5228.8 ms  ✓ MutableArithmetics
+   2407.7 ms  ✓ MultivariatePolynomials
+   1505.7 ms  ✓ DynamicPolynomials
+  18053.0 ms  ✓ SymbolicUtils
+  8 dependencies successfully precompiled in 27 seconds. 71 already precompiled.
+Precompiling DynamicExpressionsSymbolicUtilsExt...
+   1743.2 ms  ✓ DynamicExpressions → DynamicExpressionsSymbolicUtilsExt
+  1 dependency successfully precompiled in 2 seconds. 83 already precompiled.
+Precompiling SymbolicRegressionSymbolicUtilsExt...
+   3592.3 ms  ✓ SymbolicRegression → SymbolicRegressionSymbolicUtilsExt
+  1 dependency successfully precompiled in 4 seconds. 144 already precompiled.
+Precompiling SymbolicUtilsReverseDiffExt...
+   3627.5 ms  ✓ SymbolicUtils → SymbolicUtilsReverseDiffExt
+  1 dependency successfully precompiled in 4 seconds. 90 already precompiled.
+Precompiling Latexify...
+    974.8 ms  ✓ Format
+   3115.7 ms  ✓ Latexify
+  2 dependencies successfully precompiled in 4 seconds. 8 already precompiled.
+Precompiling SparseArraysExt...
+    708.5 ms  ✓ Latexify → SparseArraysExt
+  1 dependency successfully precompiled in 1 seconds. 31 already precompiled.
+Precompiling CairoMakie...
+    643.7 ms  ✓ GeoFormatTypes
+    723.5 ms  ✓ PaddedViews
+    772.0 ms  ✓ Contour
+    802.5 ms  ✓ Observables
+   1119.5 ms  ✓ Grisu
+    677.5 ms  ✓ Extents
+    633.7 ms  ✓ PolygonOps
+   1013.5 ms  ✓ IntervalSets
+    687.0 ms  ✓ StackViews
+    680.2 ms  ✓ RoundingEmulator
+    784.6 ms  ✓ IterTools
+    644.9 ms  ✓ LazyModules
+    788.2 ms  ✓ MappedArrays
+    499.0 ms  ✓ IndirectArrays
+    660.1 ms  ✓ RangeArrays
+    583.5 ms  ✓ TriplotBase
+   2423.3 ms  ✓ AdaptivePredicates
+    766.7 ms  ✓ Ratios
+    760.2 ms  ✓ TensorCore
+    890.9 ms  ✓ Inflate
+    970.4 ms  ✓ WoodburyMatrices
+    748.4 ms  ✓ SignedDistanceFields
+   1414.0 ms  ✓ FilePaths
+   1118.5 ms  ✓ Libffi_jll
+   2588.9 ms  ✓ UnicodeFun
+    983.1 ms  ✓ isoband_jll
+    982.4 ms  ✓ Libuuid_jll
+   1012.5 ms  ✓ LLVMOpenMP_jll
+   1086.6 ms  ✓ Imath_jll
+   1133.0 ms  ✓ CRlibm_jll
+    973.8 ms  ✓ Ogg_jll
+   1265.1 ms  ✓ JpegTurbo_jll
+    943.4 ms  ✓ x265_jll
+   1038.6 ms  ✓ x264_jll
+   1300.8 ms  ✓ FriBidi_jll
+   1401.9 ms  ✓ XML2_jll
+   1121.0 ms  ✓ Graphite2_jll
+   1324.4 ms  ✓ Xorg_libXau_jll
+   1252.8 ms  ✓ libpng_jll
+    976.5 ms  ✓ Giflib_jll
+   8091.0 ms  ✓ Colors
+   1085.6 ms  ✓ LAME_jll
+   1108.1 ms  ✓ EarCut_jll
+    886.0 ms  ✓ Xorg_libXdmcp_jll
+   1116.9 ms  ✓ libaom_jll
+    985.6 ms  ✓ LZO_jll
+   1103.4 ms  ✓ Opus_jll
+    867.2 ms  ✓ Xorg_xtrans_jll
+   1277.5 ms  ✓ Zstd_jll
+    929.9 ms  ✓ Libmount_jll
+    852.4 ms  ✓ Bzip2_jll
+   1220.5 ms  ✓ libfdk_aac_jll
+   1229.8 ms  ✓ LERC_jll
+    951.0 ms  ✓ XZ_jll
+    931.4 ms  ✓ Libgpg_error_jll
+    852.4 ms  ✓ Xorg_libpthread_stubs_jll
+   1205.9 ms  ✓ FFTW_jll
+    888.2 ms  ✓ Showoff
+   2578.4 ms  ✓ QOI
+   1745.3 ms  ✓ GeoInterface
+    739.1 ms  ✓ IntervalSets → IntervalSetsRandomExt
+    650.0 ms  ✓ IntervalSets → IntervalSetsStatisticsExt
+    799.0 ms  ✓ ConstructionBase → ConstructionBaseIntervalSetsExt
+   4475.7 ms  ✓ PkgVersion
+    793.2 ms  ✓ MosaicViews
+    760.7 ms  ✓ Ratios → RatiosFixedPointNumbersExt
+   1182.7 ms  ✓ AxisAlgorithms
+    781.0 ms  ✓ Isoband
+    976.2 ms  ✓ Pixman_jll
+   1255.0 ms  ✓ OpenEXR_jll
+   3959.7 ms  ✓ ColorVectorSpace
+   1488.2 ms  ✓ libvorbis_jll
+   1263.2 ms  ✓ Gettext_jll
+   1084.1 ms  ✓ libsixel_jll
+    971.0 ms  ✓ Graphics
+   1237.7 ms  ✓ Animations
+   4425.3 ms  ✓ IntervalArithmetic
+   1673.2 ms  ✓ ColorBrewer
+   1363.1 ms  ✓ FreeType2_jll
+   1311.3 ms  ✓ Libtiff_jll
+   1360.8 ms  ✓ Libgcrypt_jll
+   1640.2 ms  ✓ AxisArrays
+  15576.5 ms  ✓ SIMD
+   3210.0 ms  ✓ OpenEXR
+   4666.8 ms  ✓ Interpolations
+   1465.8 ms  ✓ ColorVectorSpace → SpecialFunctionsExt
+   8759.3 ms  ✓ ColorSchemes
+  41556.5 ms  ✓ Unitful
+   1009.8 ms  ✓ IntervalArithmetic → IntervalArithmeticIntervalSetsExt
+   1835.5 ms  ✓ Glib_jll
+   2539.9 ms  ✓ FreeType
+   1899.7 ms  ✓ Fontconfig_jll
+  23777.8 ms  ✓ FFTW
+   1423.7 ms  ✓ XSLT_jll
+  27184.1 ms  ✓ GeometryBasics
+  10088.2 ms  ✓ ExactPredicates
+   1339.0 ms  ✓ Unitful → InverseFunctionsUnitfulExt
+   1005.3 ms  ✓ Unitful → ConstructionBaseUnitfulExt
+   1931.1 ms  ✓ Interpolations → InterpolationsUnitfulExt
+   3195.3 ms  ✓ KernelDensity
+   2452.5 ms  ✓ Xorg_libxcb_jll
+   2921.5 ms  ✓ Packing
+  42820.0 ms  ✓ ImageCore
+  29113.1 ms  ✓ Automa
+  25649.5 ms  ✓ PlotUtils
+   2670.3 ms  ✓ ShaderAbstractions
+  16311.5 ms  ✓ GridLayoutBase
+   4760.3 ms  ✓ FreeTypeAbstraction
+   1540.5 ms  ✓ Xorg_libX11_jll
+   9640.9 ms  ✓ MakieCore
+   4272.8 ms  ✓ ImageBase
+   6048.1 ms  ✓ JpegTurbo
+  10563.5 ms  ✓ DelaunayTriangulation
+   8385.2 ms  ✓ PNGFiles
+   1260.0 ms  ✓ Xorg_libXrender_jll
+   1184.1 ms  ✓ Xorg_libXext_jll
+   6671.7 ms  ✓ Sixel
+   1298.2 ms  ✓ Cairo_jll
+   1619.2 ms  ✓ Libglvnd_jll
+   3256.0 ms  ✓ ImageAxes
+   1242.2 ms  ✓ HarfBuzz_jll
+   1424.5 ms  ✓ libwebp_jll
+   1444.3 ms  ✓ libass_jll
+   2059.2 ms  ✓ ImageMetadata
+   1277.5 ms  ✓ Pango_jll
+   1574.4 ms  ✓ FFMPEG_jll
+   4032.9 ms  ✓ WebP
+   3445.3 ms  ✓ Netpbm
+   2292.1 ms  ✓ Cairo
+  14010.5 ms  ✓ MathTeXEngine
+  86745.5 ms  ✓ TiffImages
+   1152.2 ms  ✓ ImageIO
+ 137885.2 ms  ✓ Makie
+  88186.8 ms  ✓ CairoMakie
+  134 dependencies successfully precompiled in 366 seconds. 136 already precompiled.
+Precompiling SparseMatrixColoringsColorsExt...
+    824.8 ms  ✓ SparseMatrixColorings → SparseMatrixColoringsColorsExt
+  1 dependency successfully precompiled in 1 seconds. 29 already precompiled.
+Precompiling ZygoteColorsExt...
+   1601.6 ms  ✓ Zygote → ZygoteColorsExt
+  1 dependency successfully precompiled in 2 seconds. 105 already precompiled.
+Precompiling IntervalSetsExt...
+    906.7 ms  ✓ Accessors → IntervalSetsExt
+  1 dependency successfully precompiled in 1 seconds. 15 already precompiled.
+Precompiling IntervalSetsRecipesBaseExt...
+    551.3 ms  ✓ IntervalSets → IntervalSetsRecipesBaseExt
+  1 dependency successfully precompiled in 1 seconds. 9 already precompiled.
+Precompiling UnitfulExt...
+    545.5 ms  ✓ Accessors → UnitfulExt
+  1 dependency successfully precompiled in 1 seconds. 15 already precompiled.
+Precompiling DiffEqBaseUnitfulExt...
+   1339.0 ms  ✓ DiffEqBase → DiffEqBaseUnitfulExt
+  1 dependency successfully precompiled in 2 seconds. 123 already precompiled.
+Precompiling DynamicQuantitiesUnitfulExt...
+   1009.0 ms  ✓ DynamicQuantities → DynamicQuantitiesUnitfulExt
+  1 dependency successfully precompiled in 1 seconds. 12 already precompiled.
+Precompiling NNlibFFTWExt...
+    803.5 ms  ✓ NNlib → NNlibFFTWExt
+  1 dependency successfully precompiled in 1 seconds. 54 already precompiled.
+Precompiling HTTPExt...
+   1590.0 ms  ✓ FileIO → HTTPExt
+  1 dependency successfully precompiled in 2 seconds. 43 already precompiled.
+Precompiling IntervalArithmeticForwardDiffExt...
+    473.4 ms  ✓ IntervalArithmetic → IntervalArithmeticDiffRulesExt
+    657.6 ms  ✓ IntervalArithmetic → IntervalArithmeticForwardDiffExt
+  2 dependencies successfully precompiled in 1 seconds. 42 already precompiled.
+Precompiling IntervalArithmeticRecipesBaseExt...
+    762.9 ms  ✓ IntervalArithmetic → IntervalArithmeticRecipesBaseExt
+  1 dependency successfully precompiled in 1 seconds. 31 already precompiled.
+Precompiling SciMLBaseMakieExt...
+   6970.8 ms  ✓ SciMLBase → SciMLBaseMakieExt
+  1 dependency successfully precompiled in 8 seconds. 303 already precompiled.

Helper Functions

julia
function plot_dynamics(sol, us, ts)
+    fig = Figure()
+    ax = CairoMakie.Axis(fig[1, 1]; xlabel=L"t")
+    ylims!(ax, (-6, 6))
+
+    lines!(ax, ts, sol[1, :]; label=L"u_1(t)", linewidth=3)
+    lines!(ax, ts, sol[2, :]; label=L"u_2(t)", linewidth=3)
+
+    lines!(ax, ts, vec(us); label=L"u(t)", linewidth=3)
+
+    axislegend(ax; position=:rb)
+
+    return fig
+end
plot_dynamics (generic function with 1 method)

Training a Neural Network based UDE

Let's setup the neural network. For the first part, we won't do any symbolic regression. We will plain and simple train a neural network to solve the optimal control problem.

julia
rng = Xoshiro(0)
+tspan = (0.0, 8.0)
+
+mlp = Chain(Dense(1 => 4, gelu), Dense(4 => 4, gelu), Dense(4 => 1))
+
+function construct_ude(mlp, solver; kwargs...)
+    return @compact(; mlp, solver, kwargs...) do x_in, ps
+        x, ts, ret_sol = x_in
+
+        function dudt(du, u, p, t)
+            u₁, u₂ = u
+            du[1] = u₂
+            du[2] = mlp([t], p)[1]^3
+            return
+        end
+
+        prob = ODEProblem{true}(dudt, x, extrema(ts), ps.mlp)
+
+        sol = solve(prob, solver; saveat=ts,
+            sensealg=QuadratureAdjoint(; autojacvec=ReverseDiffVJP(true)), kwargs...)
+
+        us = mlp(reshape(ts, 1, :), ps.mlp)
+        ret_sol === Val(true) && @return sol, us
+        @return Array(sol), us
+    end
+end
+
+ude = construct_ude(mlp, Vern9(); abstol=1e-10, reltol=1e-10);

Here we are going to tuse the same configuration for testing, but this is to show that we can setup them up with different ode solve configurations

julia
ude_test = construct_ude(mlp, Vern9(); abstol=1e-10, reltol=1e-10);
+
+function train_model_1(ude, rng, ts_)
+    ps, st = Lux.setup(rng, ude)
+    ps = ComponentArray{Float64}(ps)
+    stateful_ude = StatefulLuxLayer{true}(ude, nothing, st)
+
+    ts = collect(ts_)
+
+    function loss_adjoint(θ)
+        x, us = stateful_ude(([-4.0, 0.0], ts, Val(false)), θ)
+        return mean(abs2, 4 .- x[1, :]) + 2 * mean(abs2, x[2, :]) + 0.1 * mean(abs2, us)
+    end
+
+    callback = function (state, l)
+        state.iter % 50 == 1 && @printf "Iteration: %5d\\tLoss: %10g\\n" state.iter l
+        return false
+    end
+
+    optf = OptimizationFunction((x, p) -> loss_adjoint(x), AutoZygote())
+    optprob = OptimizationProblem(optf, ps)
+    res1 = solve(optprob, Optimisers.Adam(0.001); callback, maxiters=500)
+
+    optprob = OptimizationProblem(optf, res1.u)
+    res2 = solve(optprob, LBFGS(); callback, maxiters=100)
+
+    return StatefulLuxLayer{true}(ude, res2.u, st)
+end
+
+trained_ude = train_model_1(ude, rng, 0.0:0.01:8.0)
┌ Warning: Lux.apply(m::AbstractLuxLayer, x::AbstractArray{<:ReverseDiff.TrackedReal}, ps, st) input was corrected to Lux.apply(m::AbstractLuxLayer, x::ReverseDiff.TrackedArray}, ps, st).
+
+│ 1. If this was not the desired behavior overload the dispatch on \`m\`.
+
+│ 2. This might have performance implications. Check which layer was causing this problem using \`Lux.Experimental.@debug_mode\`.
+└ @ LuxCoreArrayInterfaceReverseDiffExt ~/.julia/packages/LuxCore/8mVob/ext/LuxCoreArrayInterfaceReverseDiffExt.jl:10
+Iteration:     1	Loss:    40.5618
+Iteration:    51	Loss:    29.4147
+Iteration:   101	Loss:    28.2559
+Iteration:   151	Loss:     27.217
+Iteration:   201	Loss:    26.1657
+Iteration:   251	Loss:    25.1631
+Iteration:   301	Loss:    24.2914
+Iteration:   351	Loss:    23.5965
+Iteration:   401	Loss:    23.0763
+Iteration:   451	Loss:    22.6983
+Iteration:     1	Loss:     22.245
+Iteration:    51	Loss:    12.0107
julia
sol, us = ude_test(([-4.0, 0.0], 0.0:0.01:8.0, Val(true)), trained_ude.ps, trained_ude.st)[1];
+plot_dynamics(sol, us, 0.0:0.01:8.0)

Now that the system is in a better behaved part of parameter space, we return to the original loss function to finish the optimization:

julia
function train_model_2(stateful_ude::StatefulLuxLayer, ts_)
+    ts = collect(ts_)
+
+    function loss_adjoint(θ)
+        x, us = stateful_ude(([-4.0, 0.0], ts, Val(false)), θ)
+        return mean(abs2, 4 .- x[1, :]) .+ 2 * mean(abs2, x[2, :]) .+ mean(abs2, us)
+    end
+
+    callback = function (state, l)
+        state.iter % 10 == 1 && @printf "Iteration: %5d\\tLoss: %10g\\n" state.iter l
+        return false
+    end
+
+    optf = OptimizationFunction((x, p) -> loss_adjoint(x), AutoZygote())
+    optprob = OptimizationProblem(optf, stateful_ude.ps)
+    res2 = solve(optprob, LBFGS(); callback, maxiters=100)
+
+    return StatefulLuxLayer{true}(stateful_ude.model, res2.u, stateful_ude.st)
+end
+
+trained_ude = train_model_2(trained_ude, 0.0:0.01:8.0)
┌ Warning: Lux.apply(m::AbstractLuxLayer, x::AbstractArray{<:ReverseDiff.TrackedReal}, ps, st) input was corrected to Lux.apply(m::AbstractLuxLayer, x::ReverseDiff.TrackedArray}, ps, st).
+
+│ 1. If this was not the desired behavior overload the dispatch on \`m\`.
+
+│ 2. This might have performance implications. Check which layer was causing this problem using \`Lux.Experimental.@debug_mode\`.
+└ @ LuxCoreArrayInterfaceReverseDiffExt ~/.julia/packages/LuxCore/8mVob/ext/LuxCoreArrayInterfaceReverseDiffExt.jl:10
+Iteration:     1	Loss:    12.5986
+Iteration:    11	Loss:     12.559
+Iteration:    21	Loss:     12.471
+Iteration:    31	Loss:    12.4164
+Iteration:    41	Loss:     12.401
+Iteration:    51	Loss:    12.3783
+Iteration:    61	Loss:    12.3635
+Iteration:    71	Loss:    12.3562
+Iteration:    81	Loss:    12.3519
+Iteration:    91	Loss:    12.3471
julia
sol, us = ude_test(([-4.0, 0.0], 0.0:0.01:8.0, Val(true)), trained_ude.ps, trained_ude.st)[1];
+plot_dynamics(sol, us, 0.0:0.01:8.0)

Symbolic Regression

Ok so now we have a trained neural network that solves the optimal control problem. But can we replace Dense(4 => 4, gelu) with a symbolic expression? Let's try!

Data Generation for Symbolic Regression

First, we need to generate data for the symbolic regression.

julia
ts = reshape(collect(0.0:0.1:8.0), 1, :)
+
+X_train = mlp[1](ts, trained_ude.ps.mlp.layer_1, trained_ude.st.mlp.layer_1)[1]
4×81 Matrix{Float64}:
+ -0.0397511  -0.0317854  -0.0250462  -0.0194458  -0.014873   -0.0112035   -0.00830924   -0.00606573   -0.00435673  -0.00307771   -0.00213748   -0.00145881  -0.000977957  -0.00064367  -0.00041574  -0.000263381  -0.000163581  -9.95524e-5  -5.93359e-5   -3.46184e-5   -1.97604e-5   -1.10295e-5   -6.01676e-6   -3.20614e-6   -1.66797e-6   -8.46734e-7   -4.19207e-7   -2.02301e-7   -9.51099e-8   -4.35387e-8   -1.9396e-8    -8.40435e-9   -3.54008e-9   -1.44879e-9   -5.75761e-10  -2.2207e-10   -8.30827e-11  -3.01347e-11  -1.05906e-11  -3.60445e-12  -1.18735e-12  -3.78357e-13  -1.16566e-13  -3.47018e-14  -9.977e-15  -2.76872e-15  -7.41222e-16  -1.91325e-16  -4.75889e-17  -1.14002e-17  -2.62879e-18  -5.83165e-19  -1.24389e-19  -2.54967e-20  -5.01952e-21  -9.48579e-22  -1.7198e-22   -2.98976e-23  -4.98088e-24  -7.94783e-25  -1.21401e-25  -1.77414e-26  -2.47914e-27  -3.31074e-28  -4.22297e-29  -5.14207e-30  -5.97371e-31  -6.61753e-32  -6.98637e-33  -7.0254e-34   -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0
+  0.111436    0.0419072  -0.017267   -0.0660352  -0.104617   -0.13349     -0.153362     -0.165131     -0.169837    -0.168603     -0.162587     -0.152923    -0.140682     -0.126833    -0.112217    -0.0975332    -0.0833352    -0.0700333   -0.057906     -0.0471162    -0.0377292    -0.0297327    -0.0230565    -0.0175905    -0.0132002    -0.00974017   -0.00706458   -0.00503462   -0.00352389   -0.00242131   -0.00163244   -0.00107935   -0.000699517  -0.000444123  -0.000276081  -0.000167939  -9.99068e-5   -5.8092e-5    -3.29957e-5   -1.82961e-5   -9.89833e-6   -5.2216e-6    -2.68423e-6   -1.34384e-6   -6.5482e-7  -3.10366e-7   -1.43001e-7   -6.40098e-8   -2.78182e-8   -1.17305e-8   -4.7967e-9    -1.90078e-9   -7.29484e-10  -2.70971e-10  -9.73601e-11  -3.38157e-11  -1.13465e-11  -3.67571e-12  -1.14889e-12  -3.46263e-13  -1.00565e-13  -2.81272e-14  -7.57134e-15  -1.96024e-15  -4.87825e-16  -1.16617e-16  -2.67624e-17  -5.89225e-18  -1.24381e-18  -2.51577e-19  -4.87251e-20  -9.03078e-21  -1.60071e-21  -2.71169e-22  -4.38764e-23  -6.77655e-24  -9.98384e-25  -1.40224e-25  -1.87631e-26  -2.39039e-27  -2.89761e-28
+ -0.110793   -0.0822512  -0.057209   -0.0373554  -0.0229031  -0.0131703   -0.00708815   -0.00355998   -0.00166277  -0.000719452  -0.000287171  -0.00010528  -3.52903e-5   -1.07663e-5  -2.97538e-6  -7.4137e-7    -1.65756e-7   -3.30953e-8  -5.87257e-9   -9.21623e-10  -1.273e-10    -1.54007e-11  -1.62392e-12  -1.48515e-13  -1.17228e-14  -7.9471e-16   -4.60432e-17  -2.26861e-18  -9.45911e-20  -3.32116e-21  -9.77079e-23  -2.39675e-24  -4.87773e-26  -8.19525e-28  -1.13111e-29  -1.2761e-31   -1.171e-33    -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0        -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0
+ -0.076181   -0.0468178  -0.026027   -0.0130715  -0.0059069  -0.00238742  -0.000856747  -0.000270747  -7.46883e-5  -1.78221e-5   -3.64438e-6   -6.32607e-7  -9.23267e-8   -1.12204e-8  -1.12451e-9  -9.20332e-11  -6.09117e-12  -3.2282e-13  -1.35657e-14  -4.47562e-16  -1.14788e-17  -2.26603e-19  -3.40918e-21  -3.87018e-23  -3.28239e-25  -2.05921e-27  -9.46098e-30  -3.15184e-32  -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0        -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0

This is the training input data. Now we generate the targets

julia
Y_train = mlp[2](X_train, trained_ude.ps.mlp.layer_2, trained_ude.st.mlp.layer_2)[1]
4×81 Matrix{Float64}:
+  0.0516886   0.045542   0.0400219   0.0359023   0.0332579   0.0317798   0.0310197   0.0305495   0.0300455   0.0293137   0.0282779   0.0269476   0.0253838   0.0236698   0.0218909   0.0201231   0.0184276   0.0168498   0.0154194   0.0141528   0.0130554   0.0121237   0.011348    0.0107144   0.0102065   0.00980671   0.00949794   0.00926388   0.00908979   0.0089628   0.00887198   0.00880831   0.0087646   0.00873521   0.00871587   0.00870343   0.0086956   0.00869079   0.0086879   0.00868621   0.00868524   0.00868471   0.00868441   0.00868426   0.00868418   0.00868414   0.00868412   0.00868411   0.00868411   0.00868411   0.00868411   0.00868411   0.00868411   0.00868411   0.00868411   0.00868411   0.00868411   0.00868411   0.00868411   0.00868411   0.00868411   0.00868411   0.00868411   0.00868411   0.00868411   0.00868411   0.00868411   0.00868411   0.00868411   0.00868411   0.00868411   0.00868411   0.00868411   0.00868411   0.00868411   0.00868411   0.00868411   0.00868411   0.00868411   0.00868411   0.00868411
+ -0.166848   -0.15062   -0.130688   -0.112766   -0.0986722  -0.0884998  -0.081764   -0.0778875  -0.0763561  -0.0767414  -0.0786804  -0.0818489  -0.0859417  -0.0906647  -0.0957383  -0.100907   -0.105953   -0.110702   -0.115033   -0.118875   -0.122199   -0.125009   -0.127337   -0.129228   -0.130735   -0.131915    -0.132823    -0.133509    -0.134017    -0.134388   -0.134652    -0.134837    -0.134964   -0.135049    -0.135105    -0.135142    -0.135164   -0.135178    -0.135187   -0.135191    -0.135194    -0.135196    -0.135197    -0.135197    -0.135197    -0.135197    -0.135197    -0.135198    -0.135198    -0.135198    -0.135198    -0.135198    -0.135198    -0.135198    -0.135198    -0.135198    -0.135198    -0.135198    -0.135198    -0.135198    -0.135198    -0.135198    -0.135198    -0.135198    -0.135198    -0.135198    -0.135198    -0.135198    -0.135198    -0.135198    -0.135198    -0.135198    -0.135198    -0.135198    -0.135198    -0.135198    -0.135198    -0.135198    -0.135198    -0.135198    -0.135198
+  1.15297     1.25565    1.33772     1.40111     1.44858     1.4827      1.50547     1.51843     1.52286     1.51998     1.5111      1.49754     1.48062     1.4616      1.44157     1.42147     1.40205     1.38386     1.36727     1.35251     1.33967     1.32874     1.31961     1.31213     1.30613     1.3014       1.29774      1.29496      1.2929       1.29139     1.29031      1.28956      1.28904     1.28869      1.28846      1.28831      1.28822     1.28816      1.28813     1.28811      1.28809      1.28809      1.28808      1.28808      1.28808      1.28808      1.28808      1.28808      1.28808      1.28808      1.28808      1.28808      1.28808      1.28808      1.28808      1.28808      1.28808      1.28808      1.28808      1.28808      1.28808      1.28808      1.28808      1.28808      1.28808      1.28808      1.28808      1.28808      1.28808      1.28808      1.28808      1.28808      1.28808      1.28808      1.28808      1.28808      1.28808      1.28808      1.28808      1.28808      1.28808
+  0.884722    0.264828  -0.0595685  -0.162055   -0.165213   -0.142734   -0.121854   -0.10885    -0.103638   -0.10493    -0.111445   -0.121894   -0.134731   -0.148027   -0.159607   -0.167429   -0.170034   -0.166869   -0.158333   -0.145568   -0.130106   -0.113513   -0.0971338  -0.0819568  -0.0685907  -0.0573086   -0.0481281   -0.040896    -0.0353637   -0.0312451  -0.0282564   -0.02614     -0.0246766  -0.0236881   -0.0230357   -0.0226149   -0.0223499  -0.0221869   -0.022089   -0.0220317   -0.0219989   -0.0219807   -0.0219708   -0.0219655   -0.0219629   -0.0219615   -0.0219609   -0.0219605   -0.0219604   -0.0219603   -0.0219603   -0.0219603   -0.0219603   -0.0219603   -0.0219603   -0.0219603   -0.0219603   -0.0219603   -0.0219603   -0.0219603   -0.0219603   -0.0219603   -0.0219603   -0.0219603   -0.0219603   -0.0219603   -0.0219603   -0.0219603   -0.0219603   -0.0219603   -0.0219603   -0.0219603   -0.0219603   -0.0219603   -0.0219603   -0.0219603   -0.0219603   -0.0219603   -0.0219603   -0.0219603   -0.0219603

Fitting the Symbolic Expression

We will follow the example from SymbolicRegression.jl docs to fit the symbolic expression.

julia
srmodel = MultitargetSRRegressor(;
+    binary_operators=[+, -, *, /], niterations=100, save_to_file=false);

One important note here is to transpose the data because that is how MLJ expects the data to be structured (this is in contrast to how Lux or SymbolicRegression expects the data)

julia
mach = machine(srmodel, X_train', Y_train')
+fit!(mach; verbosity=0)
+r = report(mach)
+best_eq = [r.equations[1][r.best_idx[1]], r.equations[2][r.best_idx[2]],
+    r.equations[3][r.best_idx[3]], r.equations[4][r.best_idx[4]]]
4-element Vector{DynamicExpressions.ExpressionModule.Expression{Float64, DynamicExpressions.NodeModule.Node{Float64}, @NamedTuple{operators::DynamicExpressions.OperatorEnumModule.OperatorEnum{Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}, Tuple{}}, variable_names::Vector{String}}}}:
+ (x3 * -0.502328657412731) - (((x2 * 0.061929614395115545) - 0.004810464255583077) * ((x1 / -0.22037385096229364) + (((x3 - (0.5953134353667464 / 1.2553627279851565)) * x2) - -1.8057907515075073)))
+ (x2 * -0.3486243198551685) + (-0.13520854135894056 - (x4 * (x4 * ((x2 * -24.09890185117278) + 1.4390086486201723))))
+ (1.2880839661497687 - ((1.3654078758771315 - (((x1 * (x1 + -0.6434378096334555)) * x2) + ((x3 - x1) * (3.4536618215595043 - ((x3 * -6.634586090196312) + (-0.01956117602530656 / x2)))))) * x2)) - x1
+ ((((x2 - (x4 * 2.149357629081865)) * 15.551691733525809) + 3.173903690663501) * (x2 - 0.007497421660196726)) - x3

Let's see the expressions that SymbolicRegression.jl found. In case you were wondering, these expressions are not hardcoded, it is live updated from the output of the code above using Latexify.jl and the integration of SymbolicUtils.jl with DynamicExpressions.jl.

`,35)),s("mjx-container",b,[(t(),A("svg",I,a[28]||(a[28]=[n('',1)]))),a[29]||(a[29]=s("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[s("mi",null,"x"),s("mn",null,"3"),s("mo",null,"⋅"),s("mo",null,"−"),s("mn",null,"0.50233"),s("mo",null,"−"),s("mrow",{"data-mjx-texclass":"INNER"},[s("mo",{"data-mjx-texclass":"OPEN"},"("),s("mi",null,"x"),s("mn",null,"2"),s("mo",null,"⋅"),s("mn",null,"0.06193"),s("mo",null,"−"),s("mn",null,"0.0048105"),s("mo",{"data-mjx-texclass":"CLOSE"},")")]),s("mo",null,"⋅"),s("mrow",{"data-mjx-texclass":"INNER"},[s("mo",{"data-mjx-texclass":"OPEN"},"("),s("mfrac",null,[s("mrow",null,[s("mi",null,"x"),s("mn",null,"1")]),s("mrow",null,[s("mo",null,"−"),s("mn",null,"0.22037")])]),s("mo",null,"+"),s("mrow",{"data-mjx-texclass":"INNER"},[s("mo",{"data-mjx-texclass":"OPEN"},"("),s("mi",null,"x"),s("mn",null,"3"),s("mo",null,"−"),s("mn",null,"0.47422"),s("mo",{"data-mjx-texclass":"CLOSE"},")")]),s("mo",null,"⋅"),s("mi",null,"x"),s("mn",null,"2"),s("mo",null,"+"),s("mn",null,"1.8058"),s("mo",{"data-mjx-texclass":"CLOSE"},")")])])],-1))]),s("mjx-container",L,[(t(),A("svg",H,a[30]||(a[30]=[n('',1)]))),a[31]||(a[31]=s("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[s("mi",null,"x"),s("mn",null,"2"),s("mo",null,"⋅"),s("mo",null,"−"),s("mn",null,"0.34862"),s("mo",null,"−"),s("mn",null,"0.13521"),s("mo",null,"−"),s("mi",null,"x"),s("mn",null,"4"),s("mo",null,"⋅"),s("mi",null,"x"),s("mn",null,"4"),s("mo",null,"⋅"),s("mrow",{"data-mjx-texclass":"INNER"},[s("mo",{"data-mjx-texclass":"OPEN"},"("),s("mi",null,"x"),s("mn",null,"2"),s("mo",null,"⋅"),s("mo",null,"−"),s("mn",null,"24.099"),s("mo",null,"+"),s("mn",null,"1.439"),s("mo",{"data-mjx-texclass":"CLOSE"},")")])])],-1))]),s("mjx-container",D,[(t(),A("svg",w,a[32]||(a[32]=[n('',1)]))),a[33]||(a[33]=s("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[s("mn",null,"1.2881"),s("mo",null,"−"),s("mrow",{"data-mjx-texclass":"INNER"},[s("mo",{"data-mjx-texclass":"OPEN"},"("),s("mn",null,"1.3654"),s("mo",null,"−"),s("mrow",{"data-mjx-texclass":"INNER"},[s("mo",{"data-mjx-texclass":"OPEN"},"("),s("mi",null,"x"),s("mn",null,"1"),s("mo",null,"⋅"),s("mrow",{"data-mjx-texclass":"INNER"},[s("mo",{"data-mjx-texclass":"OPEN"},"("),s("mi",null,"x"),s("mn",null,"1"),s("mo",null,"−"),s("mn",null,"0.64344"),s("mo",{"data-mjx-texclass":"CLOSE"},")")]),s("mo",null,"⋅"),s("mi",null,"x"),s("mn",null,"2"),s("mo",null,"+"),s("mrow",{"data-mjx-texclass":"INNER"},[s("mo",{"data-mjx-texclass":"OPEN"},"("),s("mi",null,"x"),s("mn",null,"3"),s("mo",null,"−"),s("mi",null,"x"),s("mn",null,"1"),s("mo",{"data-mjx-texclass":"CLOSE"},")")]),s("mo",null,"⋅"),s("mrow",{"data-mjx-texclass":"INNER"},[s("mo",{"data-mjx-texclass":"OPEN"},"("),s("mn",null,"3.4537"),s("mo",null,"−"),s("mrow",{"data-mjx-texclass":"INNER"},[s("mo",{"data-mjx-texclass":"OPEN"},"("),s("mi",null,"x"),s("mn",null,"3"),s("mo",null,"⋅"),s("mo",null,"−"),s("mn",null,"6.6346"),s("mo",null,"+"),s("mfrac",null,[s("mrow",null,[s("mo",null,"−"),s("mn",null,"0.019561")]),s("mrow",null,[s("mi",null,"x"),s("mn",null,"2")])]),s("mo",{"data-mjx-texclass":"CLOSE"},")")]),s("mo",{"data-mjx-texclass":"CLOSE"},")")]),s("mo",{"data-mjx-texclass":"CLOSE"},")")]),s("mo",{"data-mjx-texclass":"CLOSE"},")")]),s("mo",null,"⋅"),s("mi",null,"x"),s("mn",null,"2"),s("mo",null,"−"),s("mi",null,"x"),s("mn",null,"1")])],-1))]),s("mjx-container",M,[(t(),A("svg",B,a[34]||(a[34]=[n('',1)]))),a[35]||(a[35]=s("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[s("mrow",{"data-mjx-texclass":"INNER"},[s("mo",{"data-mjx-texclass":"OPEN"},"("),s("mrow",{"data-mjx-texclass":"INNER"},[s("mo",{"data-mjx-texclass":"OPEN"},"("),s("mi",null,"x"),s("mn",null,"2"),s("mo",null,"−"),s("mi",null,"x"),s("mn",null,"4"),s("mo",null,"⋅"),s("mn",null,"2.1494"),s("mo",{"data-mjx-texclass":"CLOSE"},")")]),s("mo",null,"⋅"),s("mn",null,"15.552"),s("mo",null,"+"),s("mn",null,"3.1739"),s("mo",{"data-mjx-texclass":"CLOSE"},")")]),s("mo",null,"⋅"),s("mrow",{"data-mjx-texclass":"INNER"},[s("mo",{"data-mjx-texclass":"OPEN"},"("),s("mi",null,"x"),s("mn",null,"2"),s("mo",null,"−"),s("mn",null,"0.0074974"),s("mo",{"data-mjx-texclass":"CLOSE"},")")]),s("mo",null,"−"),s("mi",null,"x"),s("mn",null,"3")])],-1))]),a[39]||(a[39]=n(`

Combining the Neural Network with the Symbolic Expression

Now that we have the symbolic expression, we can combine it with the neural network to solve the optimal control problem. but we do need to perform some finetuning.

julia
hybrid_mlp = Chain(Dense(1 => 4, gelu),
+    Layers.DynamicExpressionsLayer(OperatorEnum(; binary_operators=[+, -, *, /]), best_eq),
+    Dense(4 => 1))
Chain(
+    layer_1 = Dense(1 => 4, gelu),      # 8 parameters
+    layer_2 = DynamicExpressionsLayer(
+        chain = Chain(
+            layer_1 = Parallel(
+                layer_1 = InternalDynamicExpressionWrapper(DynamicExpressions.OperatorEnumModule.OperatorEnum{Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}, Tuple{}}((+, -, *, /), ()), (x3 * -0.502328657412731) - (((x2 * 0.061929614395115545) - 0.004810464255583077) * ((x1 / -0.22037385096229364) + (((x3 - (0.5953134353667464 / 1.2553627279851565)) * x2) - -1.8057907515075073))); eval_options=(turbo = Val{false}(), bumper = Val{false}())),  # 7 parameters
+                layer_2 = InternalDynamicExpressionWrapper(DynamicExpressions.OperatorEnumModule.OperatorEnum{Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}, Tuple{}}((+, -, *, /), ()), (x2 * -0.3486243198551685) + (-0.13520854135894056 - (x4 * (x4 * ((x2 * -24.09890185117278) + 1.4390086486201723)))); eval_options=(turbo = Val{false}(), bumper = Val{false}())),  # 4 parameters
+                layer_3 = InternalDynamicExpressionWrapper(DynamicExpressions.OperatorEnumModule.OperatorEnum{Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}, Tuple{}}((+, -, *, /), ()), (1.2880839661497687 - ((1.3654078758771315 - (((x1 * (x1 + -0.6434378096334555)) * x2) + ((x3 - x1) * (3.4536618215595043 - ((x3 * -6.634586090196312) + (-0.01956117602530656 / x2)))))) * x2)) - x1; eval_options=(turbo = Val{false}(), bumper = Val{false}())),  # 6 parameters
+                layer_4 = InternalDynamicExpressionWrapper(DynamicExpressions.OperatorEnumModule.OperatorEnum{Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}, Tuple{}}((+, -, *, /), ()), ((((x2 - (x4 * 2.149357629081865)) * 15.551691733525809) + 3.173903690663501) * (x2 - 0.007497421660196726)) - x3; eval_options=(turbo = Val{false}(), bumper = Val{false}())),  # 4 parameters
+            ),
+            layer_2 = WrappedFunction(stack1),
+        ),
+    ),
+    layer_3 = Dense(4 => 1),            # 5 parameters
+)         # Total: 34 parameters,
+          #        plus 0 states.

There you have it! It is that easy to take the fitted Symbolic Expression and combine it with a neural network. Let's see how it performs before fintetuning.

julia
hybrid_ude = construct_ude(hybrid_mlp, Vern9(); abstol=1e-10, reltol=1e-10);

We want to reuse the trained neural network parameters, so we will copy them over to the new model

julia
st = Lux.initialstates(rng, hybrid_ude)
+ps = (;
+    mlp=(; layer_1=trained_ude.ps.mlp.layer_1,
+        layer_2=Lux.initialparameters(rng, hybrid_mlp[2]),
+        layer_3=trained_ude.ps.mlp.layer_3))
+ps = ComponentArray(ps)
+
+sol, us = hybrid_ude(([-4.0, 0.0], 0.0:0.01:8.0, Val(true)), ps, st)[1];
+plot_dynamics(sol, us, 0.0:0.01:8.0)

Now that does perform well! But we could finetune this model very easily. We will skip that part on CI, but you can do it by using the same training code as above.

Appendix

julia
using InteractiveUtils
+InteractiveUtils.versioninfo()
+
+if @isdefined(MLDataDevices)
+    if @isdefined(CUDA) && MLDataDevices.functional(CUDADevice)
+        println()
+        CUDA.versioninfo()
+    end
+
+    if @isdefined(AMDGPU) && MLDataDevices.functional(AMDGPUDevice)
+        println()
+        AMDGPU.versioninfo()
+    end
+end
Julia Version 1.11.3
+Commit d63adeda50d (2025-01-21 19:42 UTC)
+Build Info:
+  Official https://julialang.org/ release
+Platform Info:
+  OS: Linux (x86_64-linux-gnu)
+  CPU: 4 × AMD EPYC 7763 64-Core Processor
+  WORD_SIZE: 64
+  LLVM: libLLVM-16.0.6 (ORCJIT, znver3)
+Threads: 1 default, 0 interactive, 1 GC (on 4 virtual cores)
+Environment:
+  JULIA_NUM_THREADS = 1
+  JULIA_CUDA_HARD_MEMORY_LIMIT = 100%
+  JULIA_PKG_PRECOMPILE_AUTO = 0
+  JULIA_DEBUG = Literate

This page was generated using Literate.jl.

`,15))])}const R=e(l,[["render",Z]]);export{O as __pageData,R as default}; diff --git a/previews/PR98/assets/tutorials_2_SymbolicOptimalControl.md.BLCy63T9.lean.js b/previews/PR98/assets/tutorials_2_SymbolicOptimalControl.md.BLCy63T9.lean.js new file mode 100644 index 0000000..6bd702a --- /dev/null +++ b/previews/PR98/assets/tutorials_2_SymbolicOptimalControl.md.BLCy63T9.lean.js @@ -0,0 +1 @@ +import{_ as e,c as A,a2 as n,j as s,a as i,o as t}from"./chunks/framework.BI0fNMXE.js";const O=JSON.parse('{"title":"Solving Optimal Control Problems with Symbolic Universal Differential Equations","description":"","frontmatter":{},"headers":[],"relativePath":"tutorials/2_SymbolicOptimalControl.md","filePath":"tutorials/2_SymbolicOptimalControl.md","lastUpdated":null}'),l={name:"tutorials/2_SymbolicOptimalControl.md"},p={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},Q={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"10.238ex",height:"2.564ex",role:"img",focusable:"false",viewBox:"0 -883.2 4525 1133.2","aria-hidden":"true"},r={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},T={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"3.871ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 1711 1000","aria-hidden":"true"},h={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},d={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-2.697ex"},xmlns:"http://www.w3.org/2000/svg",width:"47.568ex",height:"4.847ex",role:"img",focusable:"false",viewBox:"0 -950 21025.1 2142.2","aria-hidden":"true"},o={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},k={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"0.781ex",height:"1.52ex",role:"img",focusable:"false",viewBox:"0 -661 345 672","aria-hidden":"true"},m={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},c={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.029ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2222.7 1000","aria-hidden":"true"},E={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},g={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.05ex"},xmlns:"http://www.w3.org/2000/svg",width:"4.023ex",height:"1.557ex",role:"img",focusable:"false",viewBox:"0 -666 1778 688","aria-hidden":"true"},y={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},C={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.186ex"},xmlns:"http://www.w3.org/2000/svg",width:"6.036ex",height:"2.016ex",role:"img",focusable:"false",viewBox:"0 -809 2668 891","aria-hidden":"true"},u={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},f={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"9.601ex",height:"2.564ex",role:"img",focusable:"false",viewBox:"0 -883.2 4243.6 1133.2","aria-hidden":"true"},v={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},x={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-2.697ex"},xmlns:"http://www.w3.org/2000/svg",width:"46.749ex",height:"4.847ex",role:"img",focusable:"false",viewBox:"0 -950 20663.1 2142.2","aria-hidden":"true"},F={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},V={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.294ex",height:"1.025ex",role:"img",focusable:"false",viewBox:"0 -442 572 453","aria-hidden":"true"},b={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},I={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-2.148ex"},xmlns:"http://www.w3.org/2000/svg",width:"87.063ex",height:"5.428ex",role:"img",focusable:"false",viewBox:"0 -1449.5 38482 2399","aria-hidden":"true"},L={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},H={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"56.088ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 24791.1 1000","aria-hidden":"true"},D={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},w={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-2.148ex"},xmlns:"http://www.w3.org/2000/svg",width:"112.162ex",height:"5.428ex",role:"img",focusable:"false",viewBox:"0 -1449.5 49575.8 2399","aria-hidden":"true"},M={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},B={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"59.482ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 26291.1 1000","aria-hidden":"true"};function Z(q,a,S,P,z,K){return t(),A("div",null,[a[36]||(a[36]=n("",3)),s("mjx-container",p,[(t(),A("svg",Q,a[0]||(a[0]=[n("",1)]))),a[1]||(a[1]=s("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[s("msup",null,[s("mi",null,"x"),s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",{"data-mjx-alternate":"1"},"′"),s("mi",{"data-mjx-alternate":"1"},"′")])]),s("mo",null,"="),s("msup",null,[s("mi",null,"u"),s("mn",null,"3")]),s("mo",{stretchy:"false"},"("),s("mi",null,"t"),s("mo",{stretchy:"false"},")")])],-1))]),s("p",null,[a[4]||(a[4]=i("where we want to optimize our controller ")),s("mjx-container",r,[(t(),A("svg",T,a[2]||(a[2]=[n("",1)]))),a[3]||(a[3]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mi",null,"u"),s("mo",{stretchy:"false"},"("),s("mi",null,"t"),s("mo",{stretchy:"false"},")")])],-1))]),a[5]||(a[5]=i(" such that the following is minimized:"))]),s("mjx-container",h,[(t(),A("svg",d,a[6]||(a[6]=[n("",1)]))),a[7]||(a[7]=s("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"L")]),s("mo",{stretchy:"false"},"("),s("mi",null,"θ"),s("mo",{stretchy:"false"},")"),s("mo",null,"="),s("munder",null,[s("mo",{"data-mjx-texclass":"OP"},"∑"),s("mi",null,"i")]),s("mrow",{"data-mjx-texclass":"INNER"},[s("mo",{"data-mjx-texclass":"OPEN"},"("),s("mo",{"data-mjx-texclass":"ORD"},"∥"),s("mn",null,"4"),s("mo",null,"−"),s("mi",null,"x"),s("mo",{stretchy:"false"},"("),s("msub",null,[s("mi",null,"t"),s("mi",null,"i")]),s("mo",{stretchy:"false"},")"),s("msub",null,[s("mo",{"data-mjx-texclass":"ORD"},"∥"),s("mn",null,"2")]),s("mo",null,"+"),s("mn",null,"2"),s("mo",{"data-mjx-texclass":"ORD"},"∥"),s("mi",null,"x"),s("mi",{"data-mjx-alternate":"1"},"′"),s("mo",{stretchy:"false"},"("),s("msub",null,[s("mi",null,"t"),s("mi",null,"i")]),s("mo",{stretchy:"false"},")"),s("msub",null,[s("mo",{"data-mjx-texclass":"ORD"},"∥"),s("mn",null,"2")]),s("mo",null,"+"),s("mo",{"data-mjx-texclass":"ORD"},"∥"),s("mi",null,"u"),s("mo",{stretchy:"false"},"("),s("msub",null,[s("mi",null,"t"),s("mi",null,"i")]),s("mo",{stretchy:"false"},")"),s("msub",null,[s("mo",{"data-mjx-texclass":"ORD"},"∥"),s("mn",null,"2")]),s("mo",{"data-mjx-texclass":"CLOSE"},")")])])],-1))]),s("p",null,[a[14]||(a[14]=i("where ")),s("mjx-container",o,[(t(),A("svg",k,a[8]||(a[8]=[s("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[s("g",{"data-mml-node":"math"},[s("g",{"data-mml-node":"mi"},[s("path",{"data-c":"1D456",d:"M184 600Q184 624 203 642T247 661Q265 661 277 649T290 619Q290 596 270 577T226 557Q211 557 198 567T184 600ZM21 287Q21 295 30 318T54 369T98 420T158 442Q197 442 223 419T250 357Q250 340 236 301T196 196T154 83Q149 61 149 51Q149 26 166 26Q175 26 185 29T208 43T235 78T260 137Q263 149 265 151T282 153Q302 153 302 143Q302 135 293 112T268 61T223 11T161 -11Q129 -11 102 10T74 74Q74 91 79 106T122 220Q160 321 166 341T173 380Q173 404 156 404H154Q124 404 99 371T61 287Q60 286 59 284T58 281T56 279T53 278T49 278T41 278H27Q21 284 21 287Z",style:{"stroke-width":"3"}})])])],-1)]))),a[9]||(a[9]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mi",null,"i")])],-1))]),a[15]||(a[15]=i(" is measured on ")),s("mjx-container",m,[(t(),A("svg",c,a[10]||(a[10]=[n("",1)]))),a[11]||(a[11]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mo",{stretchy:"false"},"("),s("mn",null,"0"),s("mo",null,","),s("mn",null,"8"),s("mo",{stretchy:"false"},")")])],-1))]),a[16]||(a[16]=i(" at ")),s("mjx-container",E,[(t(),A("svg",g,a[12]||(a[12]=[n("",1)]))),a[13]||(a[13]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mn",null,"0.01")])],-1))]),a[17]||(a[17]=i(" intervals. To do this, we rewrite the ODE in first order form:"))]),s("mjx-container",y,[(t(),A("svg",C,a[18]||(a[18]=[n("",1)]))),a[19]||(a[19]=s("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[s("msup",null,[s("mi",null,"x"),s("mi",{"data-mjx-alternate":"1"},"′")]),s("mo",null,"="),s("mi",null,"v")])],-1))]),s("mjx-container",u,[(t(),A("svg",f,a[20]||(a[20]=[n("",1)]))),a[21]||(a[21]=s("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[s("msup",null,[s("mi",null,"v"),s("mi",{"data-mjx-alternate":"1"},"′")]),s("mo",null,"="),s("msup",null,[s("mi",null,"u"),s("mn",null,"3")]),s("mo",{stretchy:"false"},"("),s("mi",null,"t"),s("mo",{stretchy:"false"},")")])],-1))]),a[37]||(a[37]=s("p",null,"and thus",-1)),s("mjx-container",v,[(t(),A("svg",x,a[22]||(a[22]=[n("",1)]))),a[23]||(a[23]=s("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"L")]),s("mo",{stretchy:"false"},"("),s("mi",null,"θ"),s("mo",{stretchy:"false"},")"),s("mo",null,"="),s("munder",null,[s("mo",{"data-mjx-texclass":"OP"},"∑"),s("mi",null,"i")]),s("mrow",{"data-mjx-texclass":"INNER"},[s("mo",{"data-mjx-texclass":"OPEN"},"("),s("mo",{"data-mjx-texclass":"ORD"},"∥"),s("mn",null,"4"),s("mo",null,"−"),s("mi",null,"x"),s("mo",{stretchy:"false"},"("),s("msub",null,[s("mi",null,"t"),s("mi",null,"i")]),s("mo",{stretchy:"false"},")"),s("msub",null,[s("mo",{"data-mjx-texclass":"ORD"},"∥"),s("mn",null,"2")]),s("mo",null,"+"),s("mn",null,"2"),s("mo",{"data-mjx-texclass":"ORD"},"∥"),s("mi",null,"v"),s("mo",{stretchy:"false"},"("),s("msub",null,[s("mi",null,"t"),s("mi",null,"i")]),s("mo",{stretchy:"false"},")"),s("msub",null,[s("mo",{"data-mjx-texclass":"ORD"},"∥"),s("mn",null,"2")]),s("mo",null,"+"),s("mo",{"data-mjx-texclass":"ORD"},"∥"),s("mi",null,"u"),s("mo",{stretchy:"false"},"("),s("msub",null,[s("mi",null,"t"),s("mi",null,"i")]),s("mo",{stretchy:"false"},")"),s("msub",null,[s("mo",{"data-mjx-texclass":"ORD"},"∥"),s("mn",null,"2")]),s("mo",{"data-mjx-texclass":"CLOSE"},")")])])],-1))]),s("p",null,[a[26]||(a[26]=i("is our loss function on the first order system. We thus choose a neural network form for ")),s("mjx-container",F,[(t(),A("svg",V,a[24]||(a[24]=[s("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[s("g",{"data-mml-node":"math"},[s("g",{"data-mml-node":"mi"},[s("path",{"data-c":"1D462",d:"M21 287Q21 295 30 318T55 370T99 420T158 442Q204 442 227 417T250 358Q250 340 216 246T182 105Q182 62 196 45T238 27T291 44T328 78L339 95Q341 99 377 247Q407 367 413 387T427 416Q444 431 463 431Q480 431 488 421T496 402L420 84Q419 79 419 68Q419 43 426 35T447 26Q469 29 482 57T512 145Q514 153 532 153Q551 153 551 144Q550 139 549 130T540 98T523 55T498 17T462 -8Q454 -10 438 -10Q372 -10 347 46Q345 45 336 36T318 21T296 6T267 -6T233 -11Q189 -11 155 7Q103 38 103 113Q103 170 138 262T173 379Q173 380 173 381Q173 390 173 393T169 400T158 404H154Q131 404 112 385T82 344T65 302T57 280Q55 278 41 278H27Q21 284 21 287Z",style:{"stroke-width":"3"}})])])],-1)]))),a[25]||(a[25]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mi",null,"u")])],-1))]),a[27]||(a[27]=i(" and optimize the equation with respect to this loss. Note that we will first reduce control cost (the last term) by 10x in order to bump the network out of a local minimum. This looks like:"))]),a[38]||(a[38]=n("",35)),s("mjx-container",b,[(t(),A("svg",I,a[28]||(a[28]=[n("",1)]))),a[29]||(a[29]=s("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[s("mi",null,"x"),s("mn",null,"3"),s("mo",null,"⋅"),s("mo",null,"−"),s("mn",null,"0.50233"),s("mo",null,"−"),s("mrow",{"data-mjx-texclass":"INNER"},[s("mo",{"data-mjx-texclass":"OPEN"},"("),s("mi",null,"x"),s("mn",null,"2"),s("mo",null,"⋅"),s("mn",null,"0.06193"),s("mo",null,"−"),s("mn",null,"0.0048105"),s("mo",{"data-mjx-texclass":"CLOSE"},")")]),s("mo",null,"⋅"),s("mrow",{"data-mjx-texclass":"INNER"},[s("mo",{"data-mjx-texclass":"OPEN"},"("),s("mfrac",null,[s("mrow",null,[s("mi",null,"x"),s("mn",null,"1")]),s("mrow",null,[s("mo",null,"−"),s("mn",null,"0.22037")])]),s("mo",null,"+"),s("mrow",{"data-mjx-texclass":"INNER"},[s("mo",{"data-mjx-texclass":"OPEN"},"("),s("mi",null,"x"),s("mn",null,"3"),s("mo",null,"−"),s("mn",null,"0.47422"),s("mo",{"data-mjx-texclass":"CLOSE"},")")]),s("mo",null,"⋅"),s("mi",null,"x"),s("mn",null,"2"),s("mo",null,"+"),s("mn",null,"1.8058"),s("mo",{"data-mjx-texclass":"CLOSE"},")")])])],-1))]),s("mjx-container",L,[(t(),A("svg",H,a[30]||(a[30]=[n("",1)]))),a[31]||(a[31]=s("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[s("mi",null,"x"),s("mn",null,"2"),s("mo",null,"⋅"),s("mo",null,"−"),s("mn",null,"0.34862"),s("mo",null,"−"),s("mn",null,"0.13521"),s("mo",null,"−"),s("mi",null,"x"),s("mn",null,"4"),s("mo",null,"⋅"),s("mi",null,"x"),s("mn",null,"4"),s("mo",null,"⋅"),s("mrow",{"data-mjx-texclass":"INNER"},[s("mo",{"data-mjx-texclass":"OPEN"},"("),s("mi",null,"x"),s("mn",null,"2"),s("mo",null,"⋅"),s("mo",null,"−"),s("mn",null,"24.099"),s("mo",null,"+"),s("mn",null,"1.439"),s("mo",{"data-mjx-texclass":"CLOSE"},")")])])],-1))]),s("mjx-container",D,[(t(),A("svg",w,a[32]||(a[32]=[n("",1)]))),a[33]||(a[33]=s("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[s("mn",null,"1.2881"),s("mo",null,"−"),s("mrow",{"data-mjx-texclass":"INNER"},[s("mo",{"data-mjx-texclass":"OPEN"},"("),s("mn",null,"1.3654"),s("mo",null,"−"),s("mrow",{"data-mjx-texclass":"INNER"},[s("mo",{"data-mjx-texclass":"OPEN"},"("),s("mi",null,"x"),s("mn",null,"1"),s("mo",null,"⋅"),s("mrow",{"data-mjx-texclass":"INNER"},[s("mo",{"data-mjx-texclass":"OPEN"},"("),s("mi",null,"x"),s("mn",null,"1"),s("mo",null,"−"),s("mn",null,"0.64344"),s("mo",{"data-mjx-texclass":"CLOSE"},")")]),s("mo",null,"⋅"),s("mi",null,"x"),s("mn",null,"2"),s("mo",null,"+"),s("mrow",{"data-mjx-texclass":"INNER"},[s("mo",{"data-mjx-texclass":"OPEN"},"("),s("mi",null,"x"),s("mn",null,"3"),s("mo",null,"−"),s("mi",null,"x"),s("mn",null,"1"),s("mo",{"data-mjx-texclass":"CLOSE"},")")]),s("mo",null,"⋅"),s("mrow",{"data-mjx-texclass":"INNER"},[s("mo",{"data-mjx-texclass":"OPEN"},"("),s("mn",null,"3.4537"),s("mo",null,"−"),s("mrow",{"data-mjx-texclass":"INNER"},[s("mo",{"data-mjx-texclass":"OPEN"},"("),s("mi",null,"x"),s("mn",null,"3"),s("mo",null,"⋅"),s("mo",null,"−"),s("mn",null,"6.6346"),s("mo",null,"+"),s("mfrac",null,[s("mrow",null,[s("mo",null,"−"),s("mn",null,"0.019561")]),s("mrow",null,[s("mi",null,"x"),s("mn",null,"2")])]),s("mo",{"data-mjx-texclass":"CLOSE"},")")]),s("mo",{"data-mjx-texclass":"CLOSE"},")")]),s("mo",{"data-mjx-texclass":"CLOSE"},")")]),s("mo",{"data-mjx-texclass":"CLOSE"},")")]),s("mo",null,"⋅"),s("mi",null,"x"),s("mn",null,"2"),s("mo",null,"−"),s("mi",null,"x"),s("mn",null,"1")])],-1))]),s("mjx-container",M,[(t(),A("svg",B,a[34]||(a[34]=[n("",1)]))),a[35]||(a[35]=s("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[s("mrow",{"data-mjx-texclass":"INNER"},[s("mo",{"data-mjx-texclass":"OPEN"},"("),s("mrow",{"data-mjx-texclass":"INNER"},[s("mo",{"data-mjx-texclass":"OPEN"},"("),s("mi",null,"x"),s("mn",null,"2"),s("mo",null,"−"),s("mi",null,"x"),s("mn",null,"4"),s("mo",null,"⋅"),s("mn",null,"2.1494"),s("mo",{"data-mjx-texclass":"CLOSE"},")")]),s("mo",null,"⋅"),s("mn",null,"15.552"),s("mo",null,"+"),s("mn",null,"3.1739"),s("mo",{"data-mjx-texclass":"CLOSE"},")")]),s("mo",null,"⋅"),s("mrow",{"data-mjx-texclass":"INNER"},[s("mo",{"data-mjx-texclass":"OPEN"},"("),s("mi",null,"x"),s("mn",null,"2"),s("mo",null,"−"),s("mn",null,"0.0074974"),s("mo",{"data-mjx-texclass":"CLOSE"},")")]),s("mo",null,"−"),s("mi",null,"x"),s("mn",null,"3")])],-1))]),a[39]||(a[39]=n("",15))])}const R=e(l,[["render",Z]]);export{O as __pageData,R as default}; diff --git a/previews/PR98/hashmap.json b/previews/PR98/hashmap.json new file mode 100644 index 0000000..5da7ab6 --- /dev/null +++ b/previews/PR98/hashmap.json @@ -0,0 +1 @@ +{"api_basis.md":"D9oO8cm0","api_index.md":"Huv0Y-72","api_layers.md":"DmVxh5An","api_private.md":"BJWD8BVj","api_vision.md":"B5rI8T8X","index.md":"ac-RXHi6","tutorials_1_gettingstarted.md":"I5QDH3_W","tutorials_2_symbolicoptimalcontrol.md":"BLCy63T9"} diff --git a/previews/PR98/index.html b/previews/PR98/index.html new file mode 100644 index 0000000..93d3c90 --- /dev/null +++ b/previews/PR98/index.html @@ -0,0 +1,40 @@ + + + + + + Boltz.jl Docs + + + + + + + + + + + + + + + + + + + + + +
Skip to content

Boltz.jl ⚡ DocsPre-built Deep Learning Models in Julia

Accelerate ⚡ your ML research using pre-built Deep Learning Models with Lux

Lux.jl

How to Install Boltz.jl?

Its easy to install Boltz.jl. Since Boltz.jl is registered in the Julia General registry, you can simply run the following command in the Julia REPL:

julia
julia> using Pkg
+julia> Pkg.add("Boltz")

If you want to use the latest unreleased version of Boltz.jl, you can run the following command: (in most cases the released version will be same as the version on github)

julia
julia> using Pkg
+julia> Pkg.add(url="https://github.com/LuxDL/Boltz.jl")

Want GPU Support?

Install the following package(s):

julia
using Pkg
+Pkg.add("LuxCUDA")
+# or
+Pkg.add(["CUDA", "cuDNN"])
julia
using Pkg
+Pkg.add("AMDGPU")
julia
using Pkg
+Pkg.add("Metal")
julia
using Pkg
+Pkg.add("oneAPI")
+ + + + \ No newline at end of file diff --git a/previews/PR98/lux-logo-dark.svg b/previews/PR98/lux-logo-dark.svg new file mode 100644 index 0000000..ae8cbe3 --- /dev/null +++ b/previews/PR98/lux-logo-dark.svg @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/previews/PR98/lux-logo.svg b/previews/PR98/lux-logo.svg new file mode 100644 index 0000000..0ba3c90 --- /dev/null +++ b/previews/PR98/lux-logo.svg @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/previews/PR98/siteinfo.js b/previews/PR98/siteinfo.js new file mode 100644 index 0000000..79840ec --- /dev/null +++ b/previews/PR98/siteinfo.js @@ -0,0 +1 @@ +var DOCUMENTER_CURRENT_VERSION = "previews/PR98"; diff --git a/previews/PR98/tutorials/1_GettingStarted.html b/previews/PR98/tutorials/1_GettingStarted.html new file mode 100644 index 0000000..9bad53e --- /dev/null +++ b/previews/PR98/tutorials/1_GettingStarted.html @@ -0,0 +1,351 @@ + + + + + + Getting Started | Boltz.jl Docs + + + + + + + + + + + + + + + + + + + + + +
Skip to content

Getting Started

Prerequisites

Here we assume that you are familiar with Lux.jl. If not please take a look at the Lux.jl tutoials.

Boltz.jl is just like Lux.jl but comes with more "batteries included". Let's start by defining an MLP model.

julia
using Lux, Boltz, Random

Multi-Layer Perceptron

If we were to do this in Lux.jl we would write the following:

julia
model = Chain(
+    Dense(784, 256, relu),
+    Dense(256, 10)
+)
Chain(
+    layer_1 = Dense(784 => 256, relu),  # 200_960 parameters
+    layer_2 = Dense(256 => 10),         # 2_570 parameters
+)         # Total: 203_530 parameters,
+          #        plus 0 states.

But in Boltz.jl we can do this:

julia
model = Layers.MLP(784, (256, 10), relu)
MLP(
+    chain = Chain(
+        block1 = DenseNormActDropoutBlock(
+            block = Chain(
+                dense = Dense(784 => 256, relu),  # 200_960 parameters
+            ),
+        ),
+        block2 = DenseNormActDropoutBlock(
+            block = Chain(
+                dense = Dense(256 => 10),  # 2_570 parameters
+            ),
+        ),
+    ),
+)         # Total: 203_530 parameters,
+          #        plus 0 states.

The MLP function is just a convenience wrapper around Lux.Chain that constructs a multi-layer perceptron with the given number of layers and activation function.

How about VGG?

Let's take a look at the Vision module. We can construct a VGG model with the following code:

julia
Vision.VGG(13)
VGG(
+    layer = Chain(
+        feature_extractor = VGGFeatureExtractor(
+            model = Chain(
+                layer_1 = ConvNormActivation(
+                    model = Chain(
+                        block1 = ConvNormActivationBlock(
+                            block = Conv((3, 3), 3 => 64, relu, pad=1),  # 1_792 parameters
+                        ),
+                        block2 = ConvNormActivationBlock(
+                            block = Conv((3, 3), 64 => 64, relu, pad=1),  # 36_928 parameters
+                        ),
+                    ),
+                ),
+                layer_2 = MaxPool((2, 2)),
+                layer_3 = ConvNormActivation(
+                    model = Chain(
+                        block1 = ConvNormActivationBlock(
+                            block = Conv((3, 3), 64 => 128, relu, pad=1),  # 73_856 parameters
+                        ),
+                        block2 = ConvNormActivationBlock(
+                            block = Conv((3, 3), 128 => 128, relu, pad=1),  # 147_584 parameters
+                        ),
+                    ),
+                ),
+                layer_4 = MaxPool((2, 2)),
+                layer_5 = ConvNormActivation(
+                    model = Chain(
+                        block1 = ConvNormActivationBlock(
+                            block = Conv((3, 3), 128 => 256, relu, pad=1),  # 295_168 parameters
+                        ),
+                        block2 = ConvNormActivationBlock(
+                            block = Conv((3, 3), 256 => 256, relu, pad=1),  # 590_080 parameters
+                        ),
+                    ),
+                ),
+                layer_6 = MaxPool((2, 2)),
+                layer_7 = ConvNormActivation(
+                    model = Chain(
+                        block1 = ConvNormActivationBlock(
+                            block = Conv((3, 3), 256 => 512, relu, pad=1),  # 1_180_160 parameters
+                        ),
+                        block2 = ConvNormActivationBlock(
+                            block = Conv((3, 3), 512 => 512, relu, pad=1),  # 2_359_808 parameters
+                        ),
+                    ),
+                ),
+                layer_8 = MaxPool((2, 2)),
+                layer_9 = ConvNormActivation(
+                    model = Chain(
+                        block1 = ConvNormActivationBlock(
+                            block = Conv((3, 3), 512 => 512, relu, pad=1),  # 2_359_808 parameters
+                        ),
+                        block2 = ConvNormActivationBlock(
+                            block = Conv((3, 3), 512 => 512, relu, pad=1),  # 2_359_808 parameters
+                        ),
+                    ),
+                ),
+                layer_10 = MaxPool((2, 2)),
+            ),
+        ),
+        classifier = VGGClassifier(
+            model = Chain(
+                layer_1 = Lux.FlattenLayer{Nothing}(nothing),
+                layer_2 = Dense(25088 => 4096, relu),  # 102_764_544 parameters
+                layer_3 = Dropout(0.5),
+                layer_4 = Dense(4096 => 4096, relu),  # 16_781_312 parameters
+                layer_5 = Dropout(0.5),
+                layer_6 = Dense(4096 => 1000),  # 4_097_000 parameters
+            ),
+        ),
+    ),
+)         # Total: 133_047_848 parameters,
+          #        plus 4 states.

We can also load pretrained ImageNet weights using

Load JLD2

You need to load JLD2 before being able to load pretrained weights.

julia
using JLD2
+
+Vision.VGG(13; pretrained=true)
VGG(
+    layer = Chain(
+        feature_extractor = VGGFeatureExtractor(
+            model = Chain(
+                layer_1 = ConvNormActivation(
+                    model = Chain(
+                        block1 = ConvNormActivationBlock(
+                            block = Conv((3, 3), 3 => 64, relu, pad=1),  # 1_792 parameters
+                        ),
+                        block2 = ConvNormActivationBlock(
+                            block = Conv((3, 3), 64 => 64, relu, pad=1),  # 36_928 parameters
+                        ),
+                    ),
+                ),
+                layer_2 = MaxPool((2, 2)),
+                layer_3 = ConvNormActivation(
+                    model = Chain(
+                        block1 = ConvNormActivationBlock(
+                            block = Conv((3, 3), 64 => 128, relu, pad=1),  # 73_856 parameters
+                        ),
+                        block2 = ConvNormActivationBlock(
+                            block = Conv((3, 3), 128 => 128, relu, pad=1),  # 147_584 parameters
+                        ),
+                    ),
+                ),
+                layer_4 = MaxPool((2, 2)),
+                layer_5 = ConvNormActivation(
+                    model = Chain(
+                        block1 = ConvNormActivationBlock(
+                            block = Conv((3, 3), 128 => 256, relu, pad=1),  # 295_168 parameters
+                        ),
+                        block2 = ConvNormActivationBlock(
+                            block = Conv((3, 3), 256 => 256, relu, pad=1),  # 590_080 parameters
+                        ),
+                    ),
+                ),
+                layer_6 = MaxPool((2, 2)),
+                layer_7 = ConvNormActivation(
+                    model = Chain(
+                        block1 = ConvNormActivationBlock(
+                            block = Conv((3, 3), 256 => 512, relu, pad=1),  # 1_180_160 parameters
+                        ),
+                        block2 = ConvNormActivationBlock(
+                            block = Conv((3, 3), 512 => 512, relu, pad=1),  # 2_359_808 parameters
+                        ),
+                    ),
+                ),
+                layer_8 = MaxPool((2, 2)),
+                layer_9 = ConvNormActivation(
+                    model = Chain(
+                        block1 = ConvNormActivationBlock(
+                            block = Conv((3, 3), 512 => 512, relu, pad=1),  # 2_359_808 parameters
+                        ),
+                        block2 = ConvNormActivationBlock(
+                            block = Conv((3, 3), 512 => 512, relu, pad=1),  # 2_359_808 parameters
+                        ),
+                    ),
+                ),
+                layer_10 = MaxPool((2, 2)),
+            ),
+        ),
+        classifier = VGGClassifier(
+            model = Chain(
+                layer_1 = Lux.FlattenLayer{Nothing}(nothing),
+                layer_2 = Dense(25088 => 4096, relu),  # 102_764_544 parameters
+                layer_3 = Dropout(0.5),
+                layer_4 = Dense(4096 => 4096, relu),  # 16_781_312 parameters
+                layer_5 = Dropout(0.5),
+                layer_6 = Dense(4096 => 1000),  # 4_097_000 parameters
+            ),
+        ),
+    ),
+)         # Total: 133_047_848 parameters,
+          #        plus 4 states.

Loading Models from Metalhead (Flux.jl)

We can load models from Metalhead (Flux.jl), just remember to load Metalhead before.

julia
using Metalhead
+
+Vision.ResNet(18)
MetalheadWrapperLayer(
+    layer = Chain(
+        layer_1 = Chain(
+            layer_1 = Chain(
+                layer_1 = Conv((7, 7), 3 => 64, pad=3, stride=2, use_bias=false),  # 9_408 parameters
+                layer_2 = BatchNorm(64, relu, affine=true, track_stats=true),  # 128 parameters, plus 129
+                layer_3 = MaxPool((3, 3), pad=1, stride=2),
+            ),
+            layer_2 = Chain(
+                layer_1 = Parallel(
+                    connection = addact(NNlib.relu, ...),
+                    layer_1 = Lux.NoOpLayer(),
+                    layer_2 = Chain(
+                        layer_1 = Conv((3, 3), 64 => 64, pad=1, use_bias=false),  # 36_864 parameters
+                        layer_2 = BatchNorm(64, affine=true, track_stats=true),  # 128 parameters, plus 129
+                        layer_3 = WrappedFunction(relu),
+                        layer_4 = Conv((3, 3), 64 => 64, pad=1, use_bias=false),  # 36_864 parameters
+                        layer_5 = BatchNorm(64, affine=true, track_stats=true),  # 128 parameters, plus 129
+                    ),
+                ),
+                layer_2 = Parallel(
+                    connection = addact(NNlib.relu, ...),
+                    layer_1 = Lux.NoOpLayer(),
+                    layer_2 = Chain(
+                        layer_1 = Conv((3, 3), 64 => 64, pad=1, use_bias=false),  # 36_864 parameters
+                        layer_2 = BatchNorm(64, affine=true, track_stats=true),  # 128 parameters, plus 129
+                        layer_3 = WrappedFunction(relu),
+                        layer_4 = Conv((3, 3), 64 => 64, pad=1, use_bias=false),  # 36_864 parameters
+                        layer_5 = BatchNorm(64, affine=true, track_stats=true),  # 128 parameters, plus 129
+                    ),
+                ),
+            ),
+            layer_3 = Chain(
+                layer_1 = Parallel(
+                    connection = addact(NNlib.relu, ...),
+                    layer_1 = Chain(
+                        layer_1 = Conv((1, 1), 64 => 128, stride=2, use_bias=false),  # 8_192 parameters
+                        layer_2 = BatchNorm(128, affine=true, track_stats=true),  # 256 parameters, plus 257
+                    ),
+                    layer_2 = Chain(
+                        layer_1 = Conv((3, 3), 64 => 128, pad=1, stride=2, use_bias=false),  # 73_728 parameters
+                        layer_2 = BatchNorm(128, affine=true, track_stats=true),  # 256 parameters, plus 257
+                        layer_3 = WrappedFunction(relu),
+                        layer_4 = Conv((3, 3), 128 => 128, pad=1, use_bias=false),  # 147_456 parameters
+                        layer_5 = BatchNorm(128, affine=true, track_stats=true),  # 256 parameters, plus 257
+                    ),
+                ),
+                layer_2 = Parallel(
+                    connection = addact(NNlib.relu, ...),
+                    layer_1 = Lux.NoOpLayer(),
+                    layer_2 = Chain(
+                        layer_1 = Conv((3, 3), 128 => 128, pad=1, use_bias=false),  # 147_456 parameters
+                        layer_2 = BatchNorm(128, affine=true, track_stats=true),  # 256 parameters, plus 257
+                        layer_3 = WrappedFunction(relu),
+                        layer_4 = Conv((3, 3), 128 => 128, pad=1, use_bias=false),  # 147_456 parameters
+                        layer_5 = BatchNorm(128, affine=true, track_stats=true),  # 256 parameters, plus 257
+                    ),
+                ),
+            ),
+            layer_4 = Chain(
+                layer_1 = Parallel(
+                    connection = addact(NNlib.relu, ...),
+                    layer_1 = Chain(
+                        layer_1 = Conv((1, 1), 128 => 256, stride=2, use_bias=false),  # 32_768 parameters
+                        layer_2 = BatchNorm(256, affine=true, track_stats=true),  # 512 parameters, plus 513
+                    ),
+                    layer_2 = Chain(
+                        layer_1 = Conv((3, 3), 128 => 256, pad=1, stride=2, use_bias=false),  # 294_912 parameters
+                        layer_2 = BatchNorm(256, affine=true, track_stats=true),  # 512 parameters, plus 513
+                        layer_3 = WrappedFunction(relu),
+                        layer_4 = Conv((3, 3), 256 => 256, pad=1, use_bias=false),  # 589_824 parameters
+                        layer_5 = BatchNorm(256, affine=true, track_stats=true),  # 512 parameters, plus 513
+                    ),
+                ),
+                layer_2 = Parallel(
+                    connection = addact(NNlib.relu, ...),
+                    layer_1 = Lux.NoOpLayer(),
+                    layer_2 = Chain(
+                        layer_1 = Conv((3, 3), 256 => 256, pad=1, use_bias=false),  # 589_824 parameters
+                        layer_2 = BatchNorm(256, affine=true, track_stats=true),  # 512 parameters, plus 513
+                        layer_3 = WrappedFunction(relu),
+                        layer_4 = Conv((3, 3), 256 => 256, pad=1, use_bias=false),  # 589_824 parameters
+                        layer_5 = BatchNorm(256, affine=true, track_stats=true),  # 512 parameters, plus 513
+                    ),
+                ),
+            ),
+            layer_5 = Chain(
+                layer_1 = Parallel(
+                    connection = addact(NNlib.relu, ...),
+                    layer_1 = Chain(
+                        layer_1 = Conv((1, 1), 256 => 512, stride=2, use_bias=false),  # 131_072 parameters
+                        layer_2 = BatchNorm(512, affine=true, track_stats=true),  # 1_024 parameters, plus 1_025
+                    ),
+                    layer_2 = Chain(
+                        layer_1 = Conv((3, 3), 256 => 512, pad=1, stride=2, use_bias=false),  # 1_179_648 parameters
+                        layer_2 = BatchNorm(512, affine=true, track_stats=true),  # 1_024 parameters, plus 1_025
+                        layer_3 = WrappedFunction(relu),
+                        layer_4 = Conv((3, 3), 512 => 512, pad=1, use_bias=false),  # 2_359_296 parameters
+                        layer_5 = BatchNorm(512, affine=true, track_stats=true),  # 1_024 parameters, plus 1_025
+                    ),
+                ),
+                layer_2 = Parallel(
+                    connection = addact(NNlib.relu, ...),
+                    layer_1 = Lux.NoOpLayer(),
+                    layer_2 = Chain(
+                        layer_1 = Conv((3, 3), 512 => 512, pad=1, use_bias=false),  # 2_359_296 parameters
+                        layer_2 = BatchNorm(512, affine=true, track_stats=true),  # 1_024 parameters, plus 1_025
+                        layer_3 = WrappedFunction(relu),
+                        layer_4 = Conv((3, 3), 512 => 512, pad=1, use_bias=false),  # 2_359_296 parameters
+                        layer_5 = BatchNorm(512, affine=true, track_stats=true),  # 1_024 parameters, plus 1_025
+                    ),
+                ),
+            ),
+        ),
+        layer_2 = Chain(
+            layer_1 = AdaptiveMeanPool((1, 1)),
+            layer_2 = WrappedFunction(flatten),
+            layer_3 = Dense(512 => 1000),  # 513_000 parameters
+        ),
+    ),
+)         # Total: 11_689_512 parameters,
+          #        plus 9_620 states.

Appendix

julia
using InteractiveUtils
+InteractiveUtils.versioninfo()
+
+if @isdefined(MLDataDevices)
+    if @isdefined(CUDA) && MLDataDevices.functional(CUDADevice)
+        println()
+        CUDA.versioninfo()
+    end
+
+    if @isdefined(AMDGPU) && MLDataDevices.functional(AMDGPUDevice)
+        println()
+        AMDGPU.versioninfo()
+    end
+end
Julia Version 1.11.3
+Commit d63adeda50d (2025-01-21 19:42 UTC)
+Build Info:
+  Official https://julialang.org/ release
+Platform Info:
+  OS: Linux (x86_64-linux-gnu)
+  CPU: 4 × AMD EPYC 7763 64-Core Processor
+  WORD_SIZE: 64
+  LLVM: libLLVM-16.0.6 (ORCJIT, znver3)
+Threads: 1 default, 0 interactive, 1 GC (on 4 virtual cores)
+Environment:
+  JULIA_NUM_THREADS = 1
+  JULIA_CUDA_HARD_MEMORY_LIMIT = 100%
+  JULIA_PKG_PRECOMPILE_AUTO = 0
+  JULIA_DEBUG = Literate

This page was generated using Literate.jl.

+ + + + \ No newline at end of file diff --git a/previews/PR98/tutorials/2_SymbolicOptimalControl.html b/previews/PR98/tutorials/2_SymbolicOptimalControl.html new file mode 100644 index 0000000..3a2bb44 --- /dev/null +++ b/previews/PR98/tutorials/2_SymbolicOptimalControl.html @@ -0,0 +1,784 @@ + + + + + + Solving Optimal Control Problems with Symbolic Universal Differential Equations | Boltz.jl Docs + + + + + + + + + + + + + + + + + + + + + +
Skip to content

Solving Optimal Control Problems with Symbolic Universal Differential Equations

This tutorial is based on SciMLSensitivity.jl tutorial. Instead of using a classical NN architecture, here we will combine the NN with a symbolic expression from DynamicExpressions.jl (the symbolic engine behind SymbolicRegression.jl and PySR).

Here we will solve a classic optimal control problem with a universal differential equation. Let

x=u3(t)

where we want to optimize our controller u(t) such that the following is minimized:

L(θ)=i(4x(ti)2+2x(ti)2+u(ti)2)

where i is measured on (0,8) at 0.01 intervals. To do this, we rewrite the ODE in first order form:

x=vv=u3(t)

and thus

L(θ)=i(4x(ti)2+2v(ti)2+u(ti)2)

is our loss function on the first order system. We thus choose a neural network form for u and optimize the equation with respect to this loss. Note that we will first reduce control cost (the last term) by 10x in order to bump the network out of a local minimum. This looks like:

Package Imports

julia
using Lux, Boltz, ComponentArrays, OrdinaryDiffEqVerner, Optimization, OptimizationOptimJL,
+      OptimizationOptimisers, SciMLSensitivity, Statistics, Printf, Random
+using DynamicExpressions, SymbolicRegression, MLJ, SymbolicUtils, Latexify
+using CairoMakie
Precompiling ComponentArrays...
+    840.2 ms  ✓ ComponentArrays
+  1 dependency successfully precompiled in 1 seconds. 45 already precompiled.
+Precompiling MLDataDevicesComponentArraysExt...
+    535.7 ms  ✓ MLDataDevices → MLDataDevicesComponentArraysExt
+  1 dependency successfully precompiled in 1 seconds. 48 already precompiled.
+Precompiling LuxComponentArraysExt...
+    651.1 ms  ✓ ComponentArrays → ComponentArraysOptimisersExt
+   1240.5 ms  ✓ Lux → LuxComponentArraysExt
+   2063.7 ms  ✓ ComponentArrays → ComponentArraysKernelAbstractionsExt
+  3 dependencies successfully precompiled in 2 seconds. 111 already precompiled.
+Precompiling OrdinaryDiffEqVerner...
+    458.0 ms  ✓ SimpleUnPack
+    501.0 ms  ✓ UnPack
+    516.1 ms  ✓ CommonSolve
+    577.1 ms  ✓ ExprTools
+    435.9 ms  ✓ FastPower
+    524.3 ms  ✓ EnumX
+    515.5 ms  ✓ MuladdMacro
+   1090.9 ms  ✓ FunctionWrappers
+    580.5 ms  ✓ SciMLStructures
+   1060.2 ms  ✓ TruncatedStacktraces
+   1086.0 ms  ✓ PreallocationTools
+    878.7 ms  ✓ Parameters
+   1398.2 ms  ✓ FastBroadcast
+   2640.0 ms  ✓ RecipesBase
+    682.5 ms  ✓ RuntimeGeneratedFunctions
+   3076.8 ms  ✓ SciMLOperators
+    646.3 ms  ✓ FunctionWrappersWrappers
+    932.7 ms  ✓ FastPower → FastPowerForwardDiffExt
+    731.8 ms  ✓ SciMLOperators → SciMLOperatorsStaticArraysCoreExt
+   1583.0 ms  ✓ SymbolicIndexingInterface
+   1902.9 ms  ✓ RecursiveArrayTools
+    963.4 ms  ✓ RecursiveArrayTools → RecursiveArrayToolsForwardDiffExt
+    974.4 ms  ✓ RecursiveArrayTools → RecursiveArrayToolsFastBroadcastExt
+   9110.3 ms  ✓ Expronicon
+  10995.3 ms  ✓ SciMLBase
+   5467.3 ms  ✓ DiffEqBase
+   4219.0 ms  ✓ OrdinaryDiffEqCore
+   1267.4 ms  ✓ OrdinaryDiffEqCore → OrdinaryDiffEqCoreEnzymeCoreExt
+  34662.9 ms  ✓ OrdinaryDiffEqVerner
+  29 dependencies successfully precompiled in 67 seconds. 96 already precompiled.
+Precompiling MLDataDevicesRecursiveArrayToolsExt...
+    499.4 ms  ✓ MLDataDevices → MLDataDevicesRecursiveArrayToolsExt
+  1 dependency successfully precompiled in 1 seconds. 47 already precompiled.
+Precompiling ComponentArraysRecursiveArrayToolsExt...
+    577.7 ms  ✓ ComponentArrays → ComponentArraysRecursiveArrayToolsExt
+  1 dependency successfully precompiled in 1 seconds. 69 already precompiled.
+Precompiling ComponentArraysSciMLBaseExt...
+    850.8 ms  ✓ SciMLBase → SciMLBaseChainRulesCoreExt
+    968.9 ms  ✓ ComponentArrays → ComponentArraysSciMLBaseExt
+  2 dependencies successfully precompiled in 1 seconds. 97 already precompiled.
+Precompiling DiffEqBaseChainRulesCoreExt...
+   1291.5 ms  ✓ DiffEqBase → DiffEqBaseChainRulesCoreExt
+  1 dependency successfully precompiled in 2 seconds. 125 already precompiled.
+Precompiling Optimization...
+    638.6 ms  ✓ LeftChildRightSiblingTrees
+    755.4 ms  ✓ LoggingExtras
+   1363.6 ms  ✓ DifferentiationInterface
+   1430.7 ms  ✓ ProgressMeter
+   1569.4 ms  ✓ PDMats
+   1215.5 ms  ✓ SciMLOperators → SciMLOperatorsSparseArraysExt
+   1131.2 ms  ✓ L_BFGS_B_jll
+   1503.5 ms  ✓ RecursiveArrayTools → RecursiveArrayToolsSparseArraysExt
+   1229.8 ms  ✓ TerminalLoggers
+   1970.1 ms  ✓ SparseMatrixColorings
+    919.8 ms  ✓ DifferentiationInterface → DifferentiationInterfaceSparseArraysExt
+    804.0 ms  ✓ ConsoleProgressMonitor
+   1000.2 ms  ✓ FillArrays → FillArraysPDMatsExt
+    811.5 ms  ✓ LBFGSB
+   1096.5 ms  ✓ DifferentiationInterface → DifferentiationInterfaceSparseMatrixColoringsExt
+   4862.0 ms  ✓ SparseConnectivityTracer
+   1904.0 ms  ✓ OptimizationBase
+   1765.7 ms  ✓ Optimization
+  18 dependencies successfully precompiled in 9 seconds. 86 already precompiled.
+Precompiling DiffEqBaseSparseArraysExt...
+   1337.3 ms  ✓ DiffEqBase → DiffEqBaseSparseArraysExt
+  1 dependency successfully precompiled in 2 seconds. 125 already precompiled.
+Precompiling DifferentiationInterfaceChainRulesCoreExt...
+    366.9 ms  ✓ DifferentiationInterface → DifferentiationInterfaceChainRulesCoreExt
+  1 dependency successfully precompiled in 0 seconds. 11 already precompiled.
+Precompiling DifferentiationInterfaceStaticArraysExt...
+    513.8 ms  ✓ DifferentiationInterface → DifferentiationInterfaceStaticArraysExt
+  1 dependency successfully precompiled in 1 seconds. 10 already precompiled.
+Precompiling DifferentiationInterfaceForwardDiffExt...
+    700.6 ms  ✓ DifferentiationInterface → DifferentiationInterfaceForwardDiffExt
+  1 dependency successfully precompiled in 1 seconds. 28 already precompiled.
+Precompiling SparseConnectivityTracerSpecialFunctionsExt...
+   1040.3 ms  ✓ SparseConnectivityTracer → SparseConnectivityTracerLogExpFunctionsExt
+   1406.7 ms  ✓ SparseConnectivityTracer → SparseConnectivityTracerSpecialFunctionsExt
+  2 dependencies successfully precompiled in 2 seconds. 26 already precompiled.
+Precompiling SparseConnectivityTracerNNlibExt...
+   1415.1 ms  ✓ SparseConnectivityTracer → SparseConnectivityTracerNNlibExt
+  1 dependency successfully precompiled in 2 seconds. 46 already precompiled.
+Precompiling SparseConnectivityTracerNaNMathExt...
+   1102.4 ms  ✓ SparseConnectivityTracer → SparseConnectivityTracerNaNMathExt
+  1 dependency successfully precompiled in 1 seconds. 18 already precompiled.
+Precompiling OptimizationForwardDiffExt...
+    556.5 ms  ✓ OptimizationBase → OptimizationForwardDiffExt
+  1 dependency successfully precompiled in 1 seconds. 110 already precompiled.
+Precompiling OptimizationMLDataDevicesExt...
+   1197.0 ms  ✓ OptimizationBase → OptimizationMLDataDevicesExt
+  1 dependency successfully precompiled in 1 seconds. 97 already precompiled.
+Precompiling OptimizationOptimJL...
+    394.6 ms  ✓ PositiveFactorizations
+    558.8 ms  ✓ FiniteDiff
+    531.1 ms  ✓ OptimizationBase → OptimizationFiniteDiffExt
+    574.3 ms  ✓ DifferentiationInterface → DifferentiationInterfaceFiniteDiffExt
+    747.0 ms  ✓ FiniteDiff → FiniteDiffSparseArraysExt
+   1113.7 ms  ✓ NLSolversBase
+   1605.8 ms  ✓ LineSearches
+   2870.3 ms  ✓ Optim
+  15169.9 ms  ✓ OptimizationOptimJL
+  9 dependencies successfully precompiled in 22 seconds. 131 already precompiled.
+Precompiling FiniteDiffStaticArraysExt...
+    511.2 ms  ✓ FiniteDiff → FiniteDiffStaticArraysExt
+  1 dependency successfully precompiled in 1 seconds. 21 already precompiled.
+Precompiling OptimizationOptimisers...
+   1669.6 ms  ✓ OptimizationOptimisers
+  1 dependency successfully precompiled in 2 seconds. 113 already precompiled.
+Precompiling SciMLSensitivity...
+    594.4 ms  ✓ PoissonRandom
+    732.5 ms  ✓ StructIO
+   1640.6 ms  ✓ OffsetArrays
+   1809.3 ms  ✓ Cassette
+   1539.4 ms  ✓ RandomNumbers
+   2136.6 ms  ✓ FastLapackInterface
+    638.4 ms  ✓ Scratch
+   1114.9 ms  ✓ Rmath_jll
+   1882.7 ms  ✓ KLU
+   1337.0 ms  ✓ oneTBB_jll
+   4881.4 ms  ✓ TimerOutputs
+   1908.9 ms  ✓ QuadGK
+   1056.0 ms  ✓ ResettableStacks
+   2298.9 ms  ✓ Enzyme_jll
+   2015.6 ms  ✓ IntelOpenMP_jll
+   2142.3 ms  ✓ HypergeometricFunctions
+    956.2 ms  ✓ RecursiveArrayTools → RecursiveArrayToolsStructArraysExt
+   1288.4 ms  ✓ HostCPUFeatures
+  10943.2 ms  ✓ Krylov
+   4391.5 ms  ✓ SciMLJacobianOperators
+   2622.4 ms  ✓ DifferentiationInterface → DifferentiationInterfaceZygoteExt
+   8507.4 ms  ✓ Tracker
+   5426.4 ms  ✓ RecursiveArrayTools → RecursiveArrayToolsZygoteExt
+   5997.9 ms  ✓ SciMLBase → SciMLBaseZygoteExt
+   3071.6 ms  ✓ ObjectFile
+    781.2 ms  ✓ OffsetArrays → OffsetArraysAdaptExt
+    960.2 ms  ✓ StaticArrayInterface → StaticArrayInterfaceOffsetArraysExt
+   1895.9 ms  ✓ Sparspak
+    742.7 ms  ✓ FunctionProperties
+  22077.3 ms  ✓ ArrayLayouts
+   1380.5 ms  ✓ Random123
+   1245.3 ms  ✓ Rmath
+   7276.4 ms  ✓ DiffEqCallbacks
+   1862.2 ms  ✓ DifferentiationInterface → DifferentiationInterfaceTrackerExt
+   1890.7 ms  ✓ Tracker → TrackerPDMatsExt
+   1730.3 ms  ✓ FastPower → FastPowerTrackerExt
+   1595.4 ms  ✓ ArrayInterface → ArrayInterfaceTrackerExt
+   1910.7 ms  ✓ RecursiveArrayTools → RecursiveArrayToolsTrackerExt
+   3440.8 ms  ✓ Zygote → ZygoteTrackerExt
+  28679.1 ms  ✓ ReverseDiff
+  13504.5 ms  ✓ MKL_jll
+   1572.3 ms  ✓ ArrayLayouts → ArrayLayoutsSparseArraysExt
+  14792.6 ms  ✓ VectorizationBase
+   3208.6 ms  ✓ StatsFuns
+   4545.6 ms  ✓ DiffEqBase → DiffEqBaseTrackerExt
+   6164.9 ms  ✓ FastPower → FastPowerReverseDiffExt
+   7006.7 ms  ✓ DifferentiationInterface → DifferentiationInterfaceReverseDiffExt
+   5583.7 ms  ✓ ArrayInterface → ArrayInterfaceReverseDiffExt
+   9374.7 ms  ✓ RecursiveArrayTools → RecursiveArrayToolsReverseDiffExt
+   4799.8 ms  ✓ LazyArrays
+   5961.5 ms  ✓ PreallocationTools → PreallocationToolsReverseDiffExt
+   1409.5 ms  ✓ StatsFuns → StatsFunsInverseFunctionsExt
+   1869.1 ms  ✓ SLEEFPirates
+   3062.0 ms  ✓ StatsFuns → StatsFunsChainRulesCoreExt
+   9366.1 ms  ✓ DiffEqBase → DiffEqBaseReverseDiffExt
+   2636.0 ms  ✓ LazyArrays → LazyArraysStaticArraysExt
+   7923.0 ms  ✓ Distributions
+   2699.9 ms  ✓ Distributions → DistributionsChainRulesCoreExt
+   3180.3 ms  ✓ Distributions → DistributionsTestExt
+   4012.2 ms  ✓ DiffEqBase → DiffEqBaseDistributionsExt
+  46203.5 ms  ✓ GPUCompiler
+   5219.4 ms  ✓ DiffEqNoiseProcess
+   6683.0 ms  ✓ DiffEqNoiseProcess → DiffEqNoiseProcessReverseDiffExt
+  34253.7 ms  ✓ LoopVectorization
+   1490.9 ms  ✓ LoopVectorization → SpecialFunctionsExt
+   1641.1 ms  ✓ LoopVectorization → ForwardDiffExt
+   3401.5 ms  ✓ TriangularSolve
+  13410.9 ms  ✓ RecursiveFactorization
+  33454.7 ms  ✓ LinearSolve
+   3325.6 ms  ✓ LinearSolve → LinearSolveRecursiveArrayToolsExt
+   3484.9 ms  ✓ LinearSolve → LinearSolveEnzymeExt
+   5075.3 ms  ✓ LinearSolve → LinearSolveKernelAbstractionsExt
+ 212740.4 ms  ✓ Enzyme
+   9961.4 ms  ✓ Enzyme → EnzymeGPUArraysCoreExt
+  10286.3 ms  ✓ Enzyme → EnzymeSpecialFunctionsExt
+  10380.7 ms  ✓ Enzyme → EnzymeLogExpFunctionsExt
+  14476.3 ms  ✓ Enzyme → EnzymeStaticArraysExt
+  18207.1 ms  ✓ Enzyme → EnzymeChainRulesCoreExt
+   8949.5 ms  ✓ DifferentiationInterface → DifferentiationInterfaceEnzymeExt
+   8739.8 ms  ✓ FastPower → FastPowerEnzymeExt
+   8812.7 ms  ✓ QuadGK → QuadGKEnzymeExt
+   7650.9 ms  ✓ DiffEqBase → DiffEqBaseEnzymeExt
+  19093.8 ms  ✓ SciMLSensitivity
+  83 dependencies successfully precompiled in 321 seconds. 208 already precompiled.
+  1 dependency had output during precompilation:
+┌ MKL_jll
+│   Downloading artifact: IntelOpenMP
+
+Precompiling LuxLibSLEEFPiratesExt...
+   2116.8 ms  ✓ LuxLib → LuxLibSLEEFPiratesExt
+  1 dependency successfully precompiled in 2 seconds. 97 already precompiled.
+Precompiling LuxLibLoopVectorizationExt...
+   3528.7 ms  ✓ LuxLib → LuxLibLoopVectorizationExt
+  1 dependency successfully precompiled in 4 seconds. 105 already precompiled.
+Precompiling LuxLibEnzymeExt...
+   1113.5 ms  ✓ LuxLib → LuxLibEnzymeExt
+  1 dependency successfully precompiled in 1 seconds. 130 already precompiled.
+Precompiling LuxEnzymeExt...
+   5931.9 ms  ✓ Lux → LuxEnzymeExt
+  1 dependency successfully precompiled in 6 seconds. 146 already precompiled.
+Precompiling OptimizationEnzymeExt...
+  11637.8 ms  ✓ OptimizationBase → OptimizationEnzymeExt
+  1 dependency successfully precompiled in 12 seconds. 109 already precompiled.
+Precompiling MLDataDevicesTrackerExt...
+   1005.5 ms  ✓ MLDataDevices → MLDataDevicesTrackerExt
+  1 dependency successfully precompiled in 1 seconds. 59 already precompiled.
+Precompiling LuxLibTrackerExt...
+    950.2 ms  ✓ LuxCore → LuxCoreArrayInterfaceTrackerExt
+   3019.0 ms  ✓ LuxLib → LuxLibTrackerExt
+  2 dependencies successfully precompiled in 3 seconds. 100 already precompiled.
+Precompiling LuxTrackerExt...
+   1839.3 ms  ✓ Lux → LuxTrackerExt
+  1 dependency successfully precompiled in 2 seconds. 114 already precompiled.
+Precompiling BoltzTrackerExt...
+   2073.4 ms  ✓ Boltz → BoltzTrackerExt
+  1 dependency successfully precompiled in 2 seconds. 128 already precompiled.
+Precompiling ComponentArraysTrackerExt...
+   1004.8 ms  ✓ ComponentArrays → ComponentArraysTrackerExt
+  1 dependency successfully precompiled in 1 seconds. 70 already precompiled.
+Precompiling MLDataDevicesReverseDiffExt...
+   2830.3 ms  ✓ MLDataDevices → MLDataDevicesReverseDiffExt
+  1 dependency successfully precompiled in 3 seconds. 49 already precompiled.
+Precompiling LuxLibReverseDiffExt...
+   2764.5 ms  ✓ LuxCore → LuxCoreArrayInterfaceReverseDiffExt
+   3503.6 ms  ✓ LuxLib → LuxLibReverseDiffExt
+  2 dependencies successfully precompiled in 4 seconds. 98 already precompiled.
+Precompiling BoltzReverseDiffExt...
+   3672.2 ms  ✓ Lux → LuxReverseDiffExt
+   3885.8 ms  ✓ Boltz → BoltzReverseDiffExt
+  2 dependencies successfully precompiled in 4 seconds. 128 already precompiled.
+Precompiling ComponentArraysReverseDiffExt...
+   2818.4 ms  ✓ ComponentArrays → ComponentArraysReverseDiffExt
+  1 dependency successfully precompiled in 3 seconds. 57 already precompiled.
+Precompiling OptimizationReverseDiffExt...
+   2737.4 ms  ✓ OptimizationBase → OptimizationReverseDiffExt
+  1 dependency successfully precompiled in 3 seconds. 130 already precompiled.
+Precompiling ComponentArraysZygoteExt...
+   1398.7 ms  ✓ ComponentArrays → ComponentArraysZygoteExt
+   1667.0 ms  ✓ ComponentArrays → ComponentArraysGPUArraysExt
+  2 dependencies successfully precompiled in 2 seconds. 116 already precompiled.
+Precompiling OptimizationZygoteExt...
+   1873.6 ms  ✓ OptimizationBase → OptimizationZygoteExt
+  1 dependency successfully precompiled in 2 seconds. 160 already precompiled.
+Precompiling DynamicExpressionsOptimExt...
+   1163.8 ms  ✓ DynamicExpressions → DynamicExpressionsOptimExt
+  1 dependency successfully precompiled in 1 seconds. 77 already precompiled.
+Precompiling DynamicExpressionsLoopVectorizationExt...
+   3382.1 ms  ✓ DynamicExpressions → DynamicExpressionsLoopVectorizationExt
+  1 dependency successfully precompiled in 4 seconds. 49 already precompiled.
+Precompiling DynamicExpressionsZygoteExt...
+   1362.1 ms  ✓ DynamicExpressions → DynamicExpressionsZygoteExt
+  1 dependency successfully precompiled in 2 seconds. 106 already precompiled.
+Precompiling SymbolicRegression...
+    478.9 ms  ✓ Tricks
+    503.1 ms  ✓ ScientificTypesBase
+    538.6 ms  ✓ StatisticalTraits
+   1929.9 ms  ✓ LossFunctions
+    958.4 ms  ✓ MLJModelInterface
+   2325.1 ms  ✓ DynamicDiff
+   4045.2 ms  ✓ DynamicQuantities
+    605.1 ms  ✓ DynamicQuantities → DynamicQuantitiesLinearAlgebraExt
+  68194.5 ms  ✓ SymbolicRegression
+  9 dependencies successfully precompiled in 73 seconds. 100 already precompiled.
+Precompiling LuxLossFunctionsExt...
+   1369.9 ms  ✓ Lux → LuxLossFunctionsExt
+  1 dependency successfully precompiled in 2 seconds. 110 already precompiled.
+Precompiling SymbolicRegressionEnzymeExt...
+  16133.6 ms  ✓ SymbolicRegression → SymbolicRegressionEnzymeExt
+  1 dependency successfully precompiled in 16 seconds. 129 already precompiled.
+Precompiling MLJ...
+    502.8 ms  ✓ LaTeXStrings
+    527.5 ms  ✓ SimpleBufferStream
+    579.1 ms  ✓ InvertedIndices
+    703.0 ms  ✓ BitFlags
+   1898.8 ms  ✓ Crayons
+    734.6 ms  ✓ StableRNGs
+   1637.0 ms  ✓ Combinatorics
+   1126.5 ms  ✓ ComputationalResources
+   1221.3 ms  ✓ ConcurrentUtilities
+   1369.8 ms  ✓ Distances
+   3935.9 ms  ✓ FixedPointNumbers
+   1893.0 ms  ✓ FeatureSelection
+    791.8 ms  ✓ EarlyStopping
+   1953.1 ms  ✓ MbedTLS
+    843.4 ms  ✓ RelocatableFolders
+   6313.5 ms  ✓ PrettyPrinting
+    947.1 ms  ✓ ExceptionUnwrapping
+   2212.7 ms  ✓ LearnAPI
+   4774.9 ms  ✓ CategoricalArrays
+   1684.1 ms  ✓ FilePathsBase
+    725.0 ms  ✓ Distances → DistancesChainRulesCoreExt
+   1176.0 ms  ✓ Distances → DistancesSparseArraysExt
+   1787.7 ms  ✓ LatinHypercubeSampling
+   3549.8 ms  ✓ OpenSSL
+   3899.5 ms  ✓ StringManipulation
+   1309.4 ms  ✓ CategoricalArrays → CategoricalArraysJSONExt
+   2401.1 ms  ✓ IterationControl
+   1367.4 ms  ✓ CategoricalArrays → CategoricalArraysRecipesBaseExt
+   1087.8 ms  ✓ FilePathsBase → FilePathsBaseMmapExt
+   2998.1 ms  ✓ ARFFFiles
+   4386.0 ms  ✓ ColorTypes
+   1967.4 ms  ✓ FilePathsBase → FilePathsBaseTestExt
+   9972.2 ms  ✓ StatisticalMeasuresBase
+  21064.9 ms  ✓ HTTP
+   2136.0 ms  ✓ MLFlowClient
+   3759.5 ms  ✓ OpenML
+  24683.0 ms  ✓ PrettyTables
+   2334.3 ms  ✓ ScientificTypes
+   2097.2 ms  ✓ CategoricalDistributions
+   4660.4 ms  ✓ MLJEnsembles
+   8620.5 ms  ✓ MLJBase
+  13854.8 ms  ✓ MLJModels
+   6729.0 ms  ✓ MLJTuning
+   6971.1 ms  ✓ MLJBalancing
+   7939.9 ms  ✓ MLJIteration
+   4437.3 ms  ✓ MLJFlow
+  22744.9 ms  ✓ StatisticalMeasures
+   2193.6 ms  ✓ StatisticalMeasures → ScientificTypesExt
+   2248.4 ms  ✓ MLJBase → DefaultMeasuresExt
+   5622.7 ms  ✓ MLJ
+  50 dependencies successfully precompiled in 73 seconds. 149 already precompiled.
+Precompiling LossFunctionsCategoricalArraysExt...
+    418.7 ms  ✓ LossFunctions → LossFunctionsCategoricalArraysExt
+  1 dependency successfully precompiled in 1 seconds. 12 already precompiled.
+Precompiling DynamicQuantitiesScientificTypesExt...
+   1327.5 ms  ✓ DynamicQuantities → DynamicQuantitiesScientificTypesExt
+  1 dependency successfully precompiled in 2 seconds. 74 already precompiled.
+Precompiling TransducersLazyArraysExt...
+   1042.3 ms  ✓ Transducers → TransducersLazyArraysExt
+  1 dependency successfully precompiled in 1 seconds. 48 already precompiled.
+Precompiling OptimizationMLUtilsExt...
+   1592.6 ms  ✓ OptimizationBase → OptimizationMLUtilsExt
+  1 dependency successfully precompiled in 2 seconds. 151 already precompiled.
+Precompiling LossFunctionsExt...
+   2231.0 ms  ✓ StatisticalMeasures → LossFunctionsExt
+  1 dependency successfully precompiled in 2 seconds. 138 already precompiled.
+Precompiling SymbolicUtils...
+    496.5 ms  ✓ TermInterface
+    521.4 ms  ✓ Bijections
+    636.7 ms  ✓ WeakValueDicts
+    731.8 ms  ✓ Unityper
+   5228.8 ms  ✓ MutableArithmetics
+   2407.7 ms  ✓ MultivariatePolynomials
+   1505.7 ms  ✓ DynamicPolynomials
+  18053.0 ms  ✓ SymbolicUtils
+  8 dependencies successfully precompiled in 27 seconds. 71 already precompiled.
+Precompiling DynamicExpressionsSymbolicUtilsExt...
+   1743.2 ms  ✓ DynamicExpressions → DynamicExpressionsSymbolicUtilsExt
+  1 dependency successfully precompiled in 2 seconds. 83 already precompiled.
+Precompiling SymbolicRegressionSymbolicUtilsExt...
+   3592.3 ms  ✓ SymbolicRegression → SymbolicRegressionSymbolicUtilsExt
+  1 dependency successfully precompiled in 4 seconds. 144 already precompiled.
+Precompiling SymbolicUtilsReverseDiffExt...
+   3627.5 ms  ✓ SymbolicUtils → SymbolicUtilsReverseDiffExt
+  1 dependency successfully precompiled in 4 seconds. 90 already precompiled.
+Precompiling Latexify...
+    974.8 ms  ✓ Format
+   3115.7 ms  ✓ Latexify
+  2 dependencies successfully precompiled in 4 seconds. 8 already precompiled.
+Precompiling SparseArraysExt...
+    708.5 ms  ✓ Latexify → SparseArraysExt
+  1 dependency successfully precompiled in 1 seconds. 31 already precompiled.
+Precompiling CairoMakie...
+    643.7 ms  ✓ GeoFormatTypes
+    723.5 ms  ✓ PaddedViews
+    772.0 ms  ✓ Contour
+    802.5 ms  ✓ Observables
+   1119.5 ms  ✓ Grisu
+    677.5 ms  ✓ Extents
+    633.7 ms  ✓ PolygonOps
+   1013.5 ms  ✓ IntervalSets
+    687.0 ms  ✓ StackViews
+    680.2 ms  ✓ RoundingEmulator
+    784.6 ms  ✓ IterTools
+    644.9 ms  ✓ LazyModules
+    788.2 ms  ✓ MappedArrays
+    499.0 ms  ✓ IndirectArrays
+    660.1 ms  ✓ RangeArrays
+    583.5 ms  ✓ TriplotBase
+   2423.3 ms  ✓ AdaptivePredicates
+    766.7 ms  ✓ Ratios
+    760.2 ms  ✓ TensorCore
+    890.9 ms  ✓ Inflate
+    970.4 ms  ✓ WoodburyMatrices
+    748.4 ms  ✓ SignedDistanceFields
+   1414.0 ms  ✓ FilePaths
+   1118.5 ms  ✓ Libffi_jll
+   2588.9 ms  ✓ UnicodeFun
+    983.1 ms  ✓ isoband_jll
+    982.4 ms  ✓ Libuuid_jll
+   1012.5 ms  ✓ LLVMOpenMP_jll
+   1086.6 ms  ✓ Imath_jll
+   1133.0 ms  ✓ CRlibm_jll
+    973.8 ms  ✓ Ogg_jll
+   1265.1 ms  ✓ JpegTurbo_jll
+    943.4 ms  ✓ x265_jll
+   1038.6 ms  ✓ x264_jll
+   1300.8 ms  ✓ FriBidi_jll
+   1401.9 ms  ✓ XML2_jll
+   1121.0 ms  ✓ Graphite2_jll
+   1324.4 ms  ✓ Xorg_libXau_jll
+   1252.8 ms  ✓ libpng_jll
+    976.5 ms  ✓ Giflib_jll
+   8091.0 ms  ✓ Colors
+   1085.6 ms  ✓ LAME_jll
+   1108.1 ms  ✓ EarCut_jll
+    886.0 ms  ✓ Xorg_libXdmcp_jll
+   1116.9 ms  ✓ libaom_jll
+    985.6 ms  ✓ LZO_jll
+   1103.4 ms  ✓ Opus_jll
+    867.2 ms  ✓ Xorg_xtrans_jll
+   1277.5 ms  ✓ Zstd_jll
+    929.9 ms  ✓ Libmount_jll
+    852.4 ms  ✓ Bzip2_jll
+   1220.5 ms  ✓ libfdk_aac_jll
+   1229.8 ms  ✓ LERC_jll
+    951.0 ms  ✓ XZ_jll
+    931.4 ms  ✓ Libgpg_error_jll
+    852.4 ms  ✓ Xorg_libpthread_stubs_jll
+   1205.9 ms  ✓ FFTW_jll
+    888.2 ms  ✓ Showoff
+   2578.4 ms  ✓ QOI
+   1745.3 ms  ✓ GeoInterface
+    739.1 ms  ✓ IntervalSets → IntervalSetsRandomExt
+    650.0 ms  ✓ IntervalSets → IntervalSetsStatisticsExt
+    799.0 ms  ✓ ConstructionBase → ConstructionBaseIntervalSetsExt
+   4475.7 ms  ✓ PkgVersion
+    793.2 ms  ✓ MosaicViews
+    760.7 ms  ✓ Ratios → RatiosFixedPointNumbersExt
+   1182.7 ms  ✓ AxisAlgorithms
+    781.0 ms  ✓ Isoband
+    976.2 ms  ✓ Pixman_jll
+   1255.0 ms  ✓ OpenEXR_jll
+   3959.7 ms  ✓ ColorVectorSpace
+   1488.2 ms  ✓ libvorbis_jll
+   1263.2 ms  ✓ Gettext_jll
+   1084.1 ms  ✓ libsixel_jll
+    971.0 ms  ✓ Graphics
+   1237.7 ms  ✓ Animations
+   4425.3 ms  ✓ IntervalArithmetic
+   1673.2 ms  ✓ ColorBrewer
+   1363.1 ms  ✓ FreeType2_jll
+   1311.3 ms  ✓ Libtiff_jll
+   1360.8 ms  ✓ Libgcrypt_jll
+   1640.2 ms  ✓ AxisArrays
+  15576.5 ms  ✓ SIMD
+   3210.0 ms  ✓ OpenEXR
+   4666.8 ms  ✓ Interpolations
+   1465.8 ms  ✓ ColorVectorSpace → SpecialFunctionsExt
+   8759.3 ms  ✓ ColorSchemes
+  41556.5 ms  ✓ Unitful
+   1009.8 ms  ✓ IntervalArithmetic → IntervalArithmeticIntervalSetsExt
+   1835.5 ms  ✓ Glib_jll
+   2539.9 ms  ✓ FreeType
+   1899.7 ms  ✓ Fontconfig_jll
+  23777.8 ms  ✓ FFTW
+   1423.7 ms  ✓ XSLT_jll
+  27184.1 ms  ✓ GeometryBasics
+  10088.2 ms  ✓ ExactPredicates
+   1339.0 ms  ✓ Unitful → InverseFunctionsUnitfulExt
+   1005.3 ms  ✓ Unitful → ConstructionBaseUnitfulExt
+   1931.1 ms  ✓ Interpolations → InterpolationsUnitfulExt
+   3195.3 ms  ✓ KernelDensity
+   2452.5 ms  ✓ Xorg_libxcb_jll
+   2921.5 ms  ✓ Packing
+  42820.0 ms  ✓ ImageCore
+  29113.1 ms  ✓ Automa
+  25649.5 ms  ✓ PlotUtils
+   2670.3 ms  ✓ ShaderAbstractions
+  16311.5 ms  ✓ GridLayoutBase
+   4760.3 ms  ✓ FreeTypeAbstraction
+   1540.5 ms  ✓ Xorg_libX11_jll
+   9640.9 ms  ✓ MakieCore
+   4272.8 ms  ✓ ImageBase
+   6048.1 ms  ✓ JpegTurbo
+  10563.5 ms  ✓ DelaunayTriangulation
+   8385.2 ms  ✓ PNGFiles
+   1260.0 ms  ✓ Xorg_libXrender_jll
+   1184.1 ms  ✓ Xorg_libXext_jll
+   6671.7 ms  ✓ Sixel
+   1298.2 ms  ✓ Cairo_jll
+   1619.2 ms  ✓ Libglvnd_jll
+   3256.0 ms  ✓ ImageAxes
+   1242.2 ms  ✓ HarfBuzz_jll
+   1424.5 ms  ✓ libwebp_jll
+   1444.3 ms  ✓ libass_jll
+   2059.2 ms  ✓ ImageMetadata
+   1277.5 ms  ✓ Pango_jll
+   1574.4 ms  ✓ FFMPEG_jll
+   4032.9 ms  ✓ WebP
+   3445.3 ms  ✓ Netpbm
+   2292.1 ms  ✓ Cairo
+  14010.5 ms  ✓ MathTeXEngine
+  86745.5 ms  ✓ TiffImages
+   1152.2 ms  ✓ ImageIO
+ 137885.2 ms  ✓ Makie
+  88186.8 ms  ✓ CairoMakie
+  134 dependencies successfully precompiled in 366 seconds. 136 already precompiled.
+Precompiling SparseMatrixColoringsColorsExt...
+    824.8 ms  ✓ SparseMatrixColorings → SparseMatrixColoringsColorsExt
+  1 dependency successfully precompiled in 1 seconds. 29 already precompiled.
+Precompiling ZygoteColorsExt...
+   1601.6 ms  ✓ Zygote → ZygoteColorsExt
+  1 dependency successfully precompiled in 2 seconds. 105 already precompiled.
+Precompiling IntervalSetsExt...
+    906.7 ms  ✓ Accessors → IntervalSetsExt
+  1 dependency successfully precompiled in 1 seconds. 15 already precompiled.
+Precompiling IntervalSetsRecipesBaseExt...
+    551.3 ms  ✓ IntervalSets → IntervalSetsRecipesBaseExt
+  1 dependency successfully precompiled in 1 seconds. 9 already precompiled.
+Precompiling UnitfulExt...
+    545.5 ms  ✓ Accessors → UnitfulExt
+  1 dependency successfully precompiled in 1 seconds. 15 already precompiled.
+Precompiling DiffEqBaseUnitfulExt...
+   1339.0 ms  ✓ DiffEqBase → DiffEqBaseUnitfulExt
+  1 dependency successfully precompiled in 2 seconds. 123 already precompiled.
+Precompiling DynamicQuantitiesUnitfulExt...
+   1009.0 ms  ✓ DynamicQuantities → DynamicQuantitiesUnitfulExt
+  1 dependency successfully precompiled in 1 seconds. 12 already precompiled.
+Precompiling NNlibFFTWExt...
+    803.5 ms  ✓ NNlib → NNlibFFTWExt
+  1 dependency successfully precompiled in 1 seconds. 54 already precompiled.
+Precompiling HTTPExt...
+   1590.0 ms  ✓ FileIO → HTTPExt
+  1 dependency successfully precompiled in 2 seconds. 43 already precompiled.
+Precompiling IntervalArithmeticForwardDiffExt...
+    473.4 ms  ✓ IntervalArithmetic → IntervalArithmeticDiffRulesExt
+    657.6 ms  ✓ IntervalArithmetic → IntervalArithmeticForwardDiffExt
+  2 dependencies successfully precompiled in 1 seconds. 42 already precompiled.
+Precompiling IntervalArithmeticRecipesBaseExt...
+    762.9 ms  ✓ IntervalArithmetic → IntervalArithmeticRecipesBaseExt
+  1 dependency successfully precompiled in 1 seconds. 31 already precompiled.
+Precompiling SciMLBaseMakieExt...
+   6970.8 ms  ✓ SciMLBase → SciMLBaseMakieExt
+  1 dependency successfully precompiled in 8 seconds. 303 already precompiled.

Helper Functions

julia
function plot_dynamics(sol, us, ts)
+    fig = Figure()
+    ax = CairoMakie.Axis(fig[1, 1]; xlabel=L"t")
+    ylims!(ax, (-6, 6))
+
+    lines!(ax, ts, sol[1, :]; label=L"u_1(t)", linewidth=3)
+    lines!(ax, ts, sol[2, :]; label=L"u_2(t)", linewidth=3)
+
+    lines!(ax, ts, vec(us); label=L"u(t)", linewidth=3)
+
+    axislegend(ax; position=:rb)
+
+    return fig
+end
plot_dynamics (generic function with 1 method)

Training a Neural Network based UDE

Let's setup the neural network. For the first part, we won't do any symbolic regression. We will plain and simple train a neural network to solve the optimal control problem.

julia
rng = Xoshiro(0)
+tspan = (0.0, 8.0)
+
+mlp = Chain(Dense(1 => 4, gelu), Dense(4 => 4, gelu), Dense(4 => 1))
+
+function construct_ude(mlp, solver; kwargs...)
+    return @compact(; mlp, solver, kwargs...) do x_in, ps
+        x, ts, ret_sol = x_in
+
+        function dudt(du, u, p, t)
+            u₁, u₂ = u
+            du[1] = u₂
+            du[2] = mlp([t], p)[1]^3
+            return
+        end
+
+        prob = ODEProblem{true}(dudt, x, extrema(ts), ps.mlp)
+
+        sol = solve(prob, solver; saveat=ts,
+            sensealg=QuadratureAdjoint(; autojacvec=ReverseDiffVJP(true)), kwargs...)
+
+        us = mlp(reshape(ts, 1, :), ps.mlp)
+        ret_sol === Val(true) && @return sol, us
+        @return Array(sol), us
+    end
+end
+
+ude = construct_ude(mlp, Vern9(); abstol=1e-10, reltol=1e-10);

Here we are going to tuse the same configuration for testing, but this is to show that we can setup them up with different ode solve configurations

julia
ude_test = construct_ude(mlp, Vern9(); abstol=1e-10, reltol=1e-10);
+
+function train_model_1(ude, rng, ts_)
+    ps, st = Lux.setup(rng, ude)
+    ps = ComponentArray{Float64}(ps)
+    stateful_ude = StatefulLuxLayer{true}(ude, nothing, st)
+
+    ts = collect(ts_)
+
+    function loss_adjoint(θ)
+        x, us = stateful_ude(([-4.0, 0.0], ts, Val(false)), θ)
+        return mean(abs2, 4 .- x[1, :]) + 2 * mean(abs2, x[2, :]) + 0.1 * mean(abs2, us)
+    end
+
+    callback = function (state, l)
+        state.iter % 50 == 1 && @printf "Iteration: %5d\tLoss: %10g\n" state.iter l
+        return false
+    end
+
+    optf = OptimizationFunction((x, p) -> loss_adjoint(x), AutoZygote())
+    optprob = OptimizationProblem(optf, ps)
+    res1 = solve(optprob, Optimisers.Adam(0.001); callback, maxiters=500)
+
+    optprob = OptimizationProblem(optf, res1.u)
+    res2 = solve(optprob, LBFGS(); callback, maxiters=100)
+
+    return StatefulLuxLayer{true}(ude, res2.u, st)
+end
+
+trained_ude = train_model_1(ude, rng, 0.0:0.01:8.0)
┌ Warning: Lux.apply(m::AbstractLuxLayer, x::AbstractArray{<:ReverseDiff.TrackedReal}, ps, st) input was corrected to Lux.apply(m::AbstractLuxLayer, x::ReverseDiff.TrackedArray}, ps, st).
+
+│ 1. If this was not the desired behavior overload the dispatch on `m`.
+
+│ 2. This might have performance implications. Check which layer was causing this problem using `Lux.Experimental.@debug_mode`.
+└ @ LuxCoreArrayInterfaceReverseDiffExt ~/.julia/packages/LuxCore/8mVob/ext/LuxCoreArrayInterfaceReverseDiffExt.jl:10
+Iteration:     1	Loss:    40.5618
+Iteration:    51	Loss:    29.4147
+Iteration:   101	Loss:    28.2559
+Iteration:   151	Loss:     27.217
+Iteration:   201	Loss:    26.1657
+Iteration:   251	Loss:    25.1631
+Iteration:   301	Loss:    24.2914
+Iteration:   351	Loss:    23.5965
+Iteration:   401	Loss:    23.0763
+Iteration:   451	Loss:    22.6983
+Iteration:     1	Loss:     22.245
+Iteration:    51	Loss:    12.0107
julia
sol, us = ude_test(([-4.0, 0.0], 0.0:0.01:8.0, Val(true)), trained_ude.ps, trained_ude.st)[1];
+plot_dynamics(sol, us, 0.0:0.01:8.0)

Now that the system is in a better behaved part of parameter space, we return to the original loss function to finish the optimization:

julia
function train_model_2(stateful_ude::StatefulLuxLayer, ts_)
+    ts = collect(ts_)
+
+    function loss_adjoint(θ)
+        x, us = stateful_ude(([-4.0, 0.0], ts, Val(false)), θ)
+        return mean(abs2, 4 .- x[1, :]) .+ 2 * mean(abs2, x[2, :]) .+ mean(abs2, us)
+    end
+
+    callback = function (state, l)
+        state.iter % 10 == 1 && @printf "Iteration: %5d\tLoss: %10g\n" state.iter l
+        return false
+    end
+
+    optf = OptimizationFunction((x, p) -> loss_adjoint(x), AutoZygote())
+    optprob = OptimizationProblem(optf, stateful_ude.ps)
+    res2 = solve(optprob, LBFGS(); callback, maxiters=100)
+
+    return StatefulLuxLayer{true}(stateful_ude.model, res2.u, stateful_ude.st)
+end
+
+trained_ude = train_model_2(trained_ude, 0.0:0.01:8.0)
┌ Warning: Lux.apply(m::AbstractLuxLayer, x::AbstractArray{<:ReverseDiff.TrackedReal}, ps, st) input was corrected to Lux.apply(m::AbstractLuxLayer, x::ReverseDiff.TrackedArray}, ps, st).
+
+│ 1. If this was not the desired behavior overload the dispatch on `m`.
+
+│ 2. This might have performance implications. Check which layer was causing this problem using `Lux.Experimental.@debug_mode`.
+└ @ LuxCoreArrayInterfaceReverseDiffExt ~/.julia/packages/LuxCore/8mVob/ext/LuxCoreArrayInterfaceReverseDiffExt.jl:10
+Iteration:     1	Loss:    12.5986
+Iteration:    11	Loss:     12.559
+Iteration:    21	Loss:     12.471
+Iteration:    31	Loss:    12.4164
+Iteration:    41	Loss:     12.401
+Iteration:    51	Loss:    12.3783
+Iteration:    61	Loss:    12.3635
+Iteration:    71	Loss:    12.3562
+Iteration:    81	Loss:    12.3519
+Iteration:    91	Loss:    12.3471
julia
sol, us = ude_test(([-4.0, 0.0], 0.0:0.01:8.0, Val(true)), trained_ude.ps, trained_ude.st)[1];
+plot_dynamics(sol, us, 0.0:0.01:8.0)

Symbolic Regression

Ok so now we have a trained neural network that solves the optimal control problem. But can we replace Dense(4 => 4, gelu) with a symbolic expression? Let's try!

Data Generation for Symbolic Regression

First, we need to generate data for the symbolic regression.

julia
ts = reshape(collect(0.0:0.1:8.0), 1, :)
+
+X_train = mlp[1](ts, trained_ude.ps.mlp.layer_1, trained_ude.st.mlp.layer_1)[1]
4×81 Matrix{Float64}:
+ -0.0397511  -0.0317854  -0.0250462  -0.0194458  -0.014873   -0.0112035   -0.00830924   -0.00606573   -0.00435673  -0.00307771   -0.00213748   -0.00145881  -0.000977957  -0.00064367  -0.00041574  -0.000263381  -0.000163581  -9.95524e-5  -5.93359e-5   -3.46184e-5   -1.97604e-5   -1.10295e-5   -6.01676e-6   -3.20614e-6   -1.66797e-6   -8.46734e-7   -4.19207e-7   -2.02301e-7   -9.51099e-8   -4.35387e-8   -1.9396e-8    -8.40435e-9   -3.54008e-9   -1.44879e-9   -5.75761e-10  -2.2207e-10   -8.30827e-11  -3.01347e-11  -1.05906e-11  -3.60445e-12  -1.18735e-12  -3.78357e-13  -1.16566e-13  -3.47018e-14  -9.977e-15  -2.76872e-15  -7.41222e-16  -1.91325e-16  -4.75889e-17  -1.14002e-17  -2.62879e-18  -5.83165e-19  -1.24389e-19  -2.54967e-20  -5.01952e-21  -9.48579e-22  -1.7198e-22   -2.98976e-23  -4.98088e-24  -7.94783e-25  -1.21401e-25  -1.77414e-26  -2.47914e-27  -3.31074e-28  -4.22297e-29  -5.14207e-30  -5.97371e-31  -6.61753e-32  -6.98637e-33  -7.0254e-34   -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0
+  0.111436    0.0419072  -0.017267   -0.0660352  -0.104617   -0.13349     -0.153362     -0.165131     -0.169837    -0.168603     -0.162587     -0.152923    -0.140682     -0.126833    -0.112217    -0.0975332    -0.0833352    -0.0700333   -0.057906     -0.0471162    -0.0377292    -0.0297327    -0.0230565    -0.0175905    -0.0132002    -0.00974017   -0.00706458   -0.00503462   -0.00352389   -0.00242131   -0.00163244   -0.00107935   -0.000699517  -0.000444123  -0.000276081  -0.000167939  -9.99068e-5   -5.8092e-5    -3.29957e-5   -1.82961e-5   -9.89833e-6   -5.2216e-6    -2.68423e-6   -1.34384e-6   -6.5482e-7  -3.10366e-7   -1.43001e-7   -6.40098e-8   -2.78182e-8   -1.17305e-8   -4.7967e-9    -1.90078e-9   -7.29484e-10  -2.70971e-10  -9.73601e-11  -3.38157e-11  -1.13465e-11  -3.67571e-12  -1.14889e-12  -3.46263e-13  -1.00565e-13  -2.81272e-14  -7.57134e-15  -1.96024e-15  -4.87825e-16  -1.16617e-16  -2.67624e-17  -5.89225e-18  -1.24381e-18  -2.51577e-19  -4.87251e-20  -9.03078e-21  -1.60071e-21  -2.71169e-22  -4.38764e-23  -6.77655e-24  -9.98384e-25  -1.40224e-25  -1.87631e-26  -2.39039e-27  -2.89761e-28
+ -0.110793   -0.0822512  -0.057209   -0.0373554  -0.0229031  -0.0131703   -0.00708815   -0.00355998   -0.00166277  -0.000719452  -0.000287171  -0.00010528  -3.52903e-5   -1.07663e-5  -2.97538e-6  -7.4137e-7    -1.65756e-7   -3.30953e-8  -5.87257e-9   -9.21623e-10  -1.273e-10    -1.54007e-11  -1.62392e-12  -1.48515e-13  -1.17228e-14  -7.9471e-16   -4.60432e-17  -2.26861e-18  -9.45911e-20  -3.32116e-21  -9.77079e-23  -2.39675e-24  -4.87773e-26  -8.19525e-28  -1.13111e-29  -1.2761e-31   -1.171e-33    -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0        -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0
+ -0.076181   -0.0468178  -0.026027   -0.0130715  -0.0059069  -0.00238742  -0.000856747  -0.000270747  -7.46883e-5  -1.78221e-5   -3.64438e-6   -6.32607e-7  -9.23267e-8   -1.12204e-8  -1.12451e-9  -9.20332e-11  -6.09117e-12  -3.2282e-13  -1.35657e-14  -4.47562e-16  -1.14788e-17  -2.26603e-19  -3.40918e-21  -3.87018e-23  -3.28239e-25  -2.05921e-27  -9.46098e-30  -3.15184e-32  -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0        -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0          -0.0

This is the training input data. Now we generate the targets

julia
Y_train = mlp[2](X_train, trained_ude.ps.mlp.layer_2, trained_ude.st.mlp.layer_2)[1]
4×81 Matrix{Float64}:
+  0.0516886   0.045542   0.0400219   0.0359023   0.0332579   0.0317798   0.0310197   0.0305495   0.0300455   0.0293137   0.0282779   0.0269476   0.0253838   0.0236698   0.0218909   0.0201231   0.0184276   0.0168498   0.0154194   0.0141528   0.0130554   0.0121237   0.011348    0.0107144   0.0102065   0.00980671   0.00949794   0.00926388   0.00908979   0.0089628   0.00887198   0.00880831   0.0087646   0.00873521   0.00871587   0.00870343   0.0086956   0.00869079   0.0086879   0.00868621   0.00868524   0.00868471   0.00868441   0.00868426   0.00868418   0.00868414   0.00868412   0.00868411   0.00868411   0.00868411   0.00868411   0.00868411   0.00868411   0.00868411   0.00868411   0.00868411   0.00868411   0.00868411   0.00868411   0.00868411   0.00868411   0.00868411   0.00868411   0.00868411   0.00868411   0.00868411   0.00868411   0.00868411   0.00868411   0.00868411   0.00868411   0.00868411   0.00868411   0.00868411   0.00868411   0.00868411   0.00868411   0.00868411   0.00868411   0.00868411   0.00868411
+ -0.166848   -0.15062   -0.130688   -0.112766   -0.0986722  -0.0884998  -0.081764   -0.0778875  -0.0763561  -0.0767414  -0.0786804  -0.0818489  -0.0859417  -0.0906647  -0.0957383  -0.100907   -0.105953   -0.110702   -0.115033   -0.118875   -0.122199   -0.125009   -0.127337   -0.129228   -0.130735   -0.131915    -0.132823    -0.133509    -0.134017    -0.134388   -0.134652    -0.134837    -0.134964   -0.135049    -0.135105    -0.135142    -0.135164   -0.135178    -0.135187   -0.135191    -0.135194    -0.135196    -0.135197    -0.135197    -0.135197    -0.135197    -0.135197    -0.135198    -0.135198    -0.135198    -0.135198    -0.135198    -0.135198    -0.135198    -0.135198    -0.135198    -0.135198    -0.135198    -0.135198    -0.135198    -0.135198    -0.135198    -0.135198    -0.135198    -0.135198    -0.135198    -0.135198    -0.135198    -0.135198    -0.135198    -0.135198    -0.135198    -0.135198    -0.135198    -0.135198    -0.135198    -0.135198    -0.135198    -0.135198    -0.135198    -0.135198
+  1.15297     1.25565    1.33772     1.40111     1.44858     1.4827      1.50547     1.51843     1.52286     1.51998     1.5111      1.49754     1.48062     1.4616      1.44157     1.42147     1.40205     1.38386     1.36727     1.35251     1.33967     1.32874     1.31961     1.31213     1.30613     1.3014       1.29774      1.29496      1.2929       1.29139     1.29031      1.28956      1.28904     1.28869      1.28846      1.28831      1.28822     1.28816      1.28813     1.28811      1.28809      1.28809      1.28808      1.28808      1.28808      1.28808      1.28808      1.28808      1.28808      1.28808      1.28808      1.28808      1.28808      1.28808      1.28808      1.28808      1.28808      1.28808      1.28808      1.28808      1.28808      1.28808      1.28808      1.28808      1.28808      1.28808      1.28808      1.28808      1.28808      1.28808      1.28808      1.28808      1.28808      1.28808      1.28808      1.28808      1.28808      1.28808      1.28808      1.28808      1.28808
+  0.884722    0.264828  -0.0595685  -0.162055   -0.165213   -0.142734   -0.121854   -0.10885    -0.103638   -0.10493    -0.111445   -0.121894   -0.134731   -0.148027   -0.159607   -0.167429   -0.170034   -0.166869   -0.158333   -0.145568   -0.130106   -0.113513   -0.0971338  -0.0819568  -0.0685907  -0.0573086   -0.0481281   -0.040896    -0.0353637   -0.0312451  -0.0282564   -0.02614     -0.0246766  -0.0236881   -0.0230357   -0.0226149   -0.0223499  -0.0221869   -0.022089   -0.0220317   -0.0219989   -0.0219807   -0.0219708   -0.0219655   -0.0219629   -0.0219615   -0.0219609   -0.0219605   -0.0219604   -0.0219603   -0.0219603   -0.0219603   -0.0219603   -0.0219603   -0.0219603   -0.0219603   -0.0219603   -0.0219603   -0.0219603   -0.0219603   -0.0219603   -0.0219603   -0.0219603   -0.0219603   -0.0219603   -0.0219603   -0.0219603   -0.0219603   -0.0219603   -0.0219603   -0.0219603   -0.0219603   -0.0219603   -0.0219603   -0.0219603   -0.0219603   -0.0219603   -0.0219603   -0.0219603   -0.0219603   -0.0219603

Fitting the Symbolic Expression

We will follow the example from SymbolicRegression.jl docs to fit the symbolic expression.

julia
srmodel = MultitargetSRRegressor(;
+    binary_operators=[+, -, *, /], niterations=100, save_to_file=false);

One important note here is to transpose the data because that is how MLJ expects the data to be structured (this is in contrast to how Lux or SymbolicRegression expects the data)

julia
mach = machine(srmodel, X_train', Y_train')
+fit!(mach; verbosity=0)
+r = report(mach)
+best_eq = [r.equations[1][r.best_idx[1]], r.equations[2][r.best_idx[2]],
+    r.equations[3][r.best_idx[3]], r.equations[4][r.best_idx[4]]]
4-element Vector{DynamicExpressions.ExpressionModule.Expression{Float64, DynamicExpressions.NodeModule.Node{Float64}, @NamedTuple{operators::DynamicExpressions.OperatorEnumModule.OperatorEnum{Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}, Tuple{}}, variable_names::Vector{String}}}}:
+ (x3 * -0.502328657412731) - (((x2 * 0.061929614395115545) - 0.004810464255583077) * ((x1 / -0.22037385096229364) + (((x3 - (0.5953134353667464 / 1.2553627279851565)) * x2) - -1.8057907515075073)))
+ (x2 * -0.3486243198551685) + (-0.13520854135894056 - (x4 * (x4 * ((x2 * -24.09890185117278) + 1.4390086486201723))))
+ (1.2880839661497687 - ((1.3654078758771315 - (((x1 * (x1 + -0.6434378096334555)) * x2) + ((x3 - x1) * (3.4536618215595043 - ((x3 * -6.634586090196312) + (-0.01956117602530656 / x2)))))) * x2)) - x1
+ ((((x2 - (x4 * 2.149357629081865)) * 15.551691733525809) + 3.173903690663501) * (x2 - 0.007497421660196726)) - x3

Let's see the expressions that SymbolicRegression.jl found. In case you were wondering, these expressions are not hardcoded, it is live updated from the output of the code above using Latexify.jl and the integration of SymbolicUtils.jl with DynamicExpressions.jl.

x30.50233(x20.061930.0048105)(x10.22037+(x30.47422)x2+1.8058)x20.348620.13521x4x4(x224.099+1.439)1.2881(1.3654(x1(x10.64344)x2+(x3x1)(3.4537(x36.6346+0.019561x2))))x2x1((x2x42.1494)15.552+3.1739)(x20.0074974)x3

Combining the Neural Network with the Symbolic Expression

Now that we have the symbolic expression, we can combine it with the neural network to solve the optimal control problem. but we do need to perform some finetuning.

julia
hybrid_mlp = Chain(Dense(1 => 4, gelu),
+    Layers.DynamicExpressionsLayer(OperatorEnum(; binary_operators=[+, -, *, /]), best_eq),
+    Dense(4 => 1))
Chain(
+    layer_1 = Dense(1 => 4, gelu),      # 8 parameters
+    layer_2 = DynamicExpressionsLayer(
+        chain = Chain(
+            layer_1 = Parallel(
+                layer_1 = InternalDynamicExpressionWrapper(DynamicExpressions.OperatorEnumModule.OperatorEnum{Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}, Tuple{}}((+, -, *, /), ()), (x3 * -0.502328657412731) - (((x2 * 0.061929614395115545) - 0.004810464255583077) * ((x1 / -0.22037385096229364) + (((x3 - (0.5953134353667464 / 1.2553627279851565)) * x2) - -1.8057907515075073))); eval_options=(turbo = Val{false}(), bumper = Val{false}())),  # 7 parameters
+                layer_2 = InternalDynamicExpressionWrapper(DynamicExpressions.OperatorEnumModule.OperatorEnum{Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}, Tuple{}}((+, -, *, /), ()), (x2 * -0.3486243198551685) + (-0.13520854135894056 - (x4 * (x4 * ((x2 * -24.09890185117278) + 1.4390086486201723)))); eval_options=(turbo = Val{false}(), bumper = Val{false}())),  # 4 parameters
+                layer_3 = InternalDynamicExpressionWrapper(DynamicExpressions.OperatorEnumModule.OperatorEnum{Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}, Tuple{}}((+, -, *, /), ()), (1.2880839661497687 - ((1.3654078758771315 - (((x1 * (x1 + -0.6434378096334555)) * x2) + ((x3 - x1) * (3.4536618215595043 - ((x3 * -6.634586090196312) + (-0.01956117602530656 / x2)))))) * x2)) - x1; eval_options=(turbo = Val{false}(), bumper = Val{false}())),  # 6 parameters
+                layer_4 = InternalDynamicExpressionWrapper(DynamicExpressions.OperatorEnumModule.OperatorEnum{Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}, Tuple{}}((+, -, *, /), ()), ((((x2 - (x4 * 2.149357629081865)) * 15.551691733525809) + 3.173903690663501) * (x2 - 0.007497421660196726)) - x3; eval_options=(turbo = Val{false}(), bumper = Val{false}())),  # 4 parameters
+            ),
+            layer_2 = WrappedFunction(stack1),
+        ),
+    ),
+    layer_3 = Dense(4 => 1),            # 5 parameters
+)         # Total: 34 parameters,
+          #        plus 0 states.

There you have it! It is that easy to take the fitted Symbolic Expression and combine it with a neural network. Let's see how it performs before fintetuning.

julia
hybrid_ude = construct_ude(hybrid_mlp, Vern9(); abstol=1e-10, reltol=1e-10);

We want to reuse the trained neural network parameters, so we will copy them over to the new model

julia
st = Lux.initialstates(rng, hybrid_ude)
+ps = (;
+    mlp=(; layer_1=trained_ude.ps.mlp.layer_1,
+        layer_2=Lux.initialparameters(rng, hybrid_mlp[2]),
+        layer_3=trained_ude.ps.mlp.layer_3))
+ps = ComponentArray(ps)
+
+sol, us = hybrid_ude(([-4.0, 0.0], 0.0:0.01:8.0, Val(true)), ps, st)[1];
+plot_dynamics(sol, us, 0.0:0.01:8.0)

Now that does perform well! But we could finetune this model very easily. We will skip that part on CI, but you can do it by using the same training code as above.

Appendix

julia
using InteractiveUtils
+InteractiveUtils.versioninfo()
+
+if @isdefined(MLDataDevices)
+    if @isdefined(CUDA) && MLDataDevices.functional(CUDADevice)
+        println()
+        CUDA.versioninfo()
+    end
+
+    if @isdefined(AMDGPU) && MLDataDevices.functional(AMDGPUDevice)
+        println()
+        AMDGPU.versioninfo()
+    end
+end
Julia Version 1.11.3
+Commit d63adeda50d (2025-01-21 19:42 UTC)
+Build Info:
+  Official https://julialang.org/ release
+Platform Info:
+  OS: Linux (x86_64-linux-gnu)
+  CPU: 4 × AMD EPYC 7763 64-Core Processor
+  WORD_SIZE: 64
+  LLVM: libLLVM-16.0.6 (ORCJIT, znver3)
+Threads: 1 default, 0 interactive, 1 GC (on 4 virtual cores)
+Environment:
+  JULIA_NUM_THREADS = 1
+  JULIA_CUDA_HARD_MEMORY_LIMIT = 100%
+  JULIA_PKG_PRECOMPILE_AUTO = 0
+  JULIA_DEBUG = Literate

This page was generated using Literate.jl.

+ + + + \ No newline at end of file diff --git a/previews/PR98/vp-icons.css b/previews/PR98/vp-icons.css new file mode 100644 index 0000000..956594d --- /dev/null +++ b/previews/PR98/vp-icons.css @@ -0,0 +1 @@ +.vpi-social-github{--icon:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M12 .297c-6.63 0-12 5.373-12 12c0 5.303 3.438 9.8 8.205 11.385c.6.113.82-.258.82-.577c0-.285-.01-1.04-.015-2.04c-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729c1.205.084 1.838 1.236 1.838 1.236c1.07 1.835 2.809 1.305 3.495.998c.108-.776.417-1.305.76-1.605c-2.665-.3-5.466-1.332-5.466-5.93c0-1.31.465-2.38 1.235-3.22c-.135-.303-.54-1.523.105-3.176c0 0 1.005-.322 3.3 1.23c.96-.267 1.98-.399 3-.405c1.02.006 2.04.138 3 .405c2.28-1.552 3.285-1.23 3.285-1.23c.645 1.653.24 2.873.12 3.176c.765.84 1.23 1.91 1.23 3.22c0 4.61-2.805 5.625-5.475 5.92c.42.36.81 1.096.81 2.22c0 1.606-.015 2.896-.015 3.286c0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12'/%3E%3C/svg%3E")}.vpi-social-slack{--icon:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M5.042 15.165a2.53 2.53 0 0 1-2.52 2.523A2.53 2.53 0 0 1 0 15.165a2.527 2.527 0 0 1 2.522-2.52h2.52zm1.271 0a2.527 2.527 0 0 1 2.521-2.52a2.527 2.527 0 0 1 2.521 2.52v6.313A2.53 2.53 0 0 1 8.834 24a2.53 2.53 0 0 1-2.521-2.522zM8.834 5.042a2.53 2.53 0 0 1-2.521-2.52A2.53 2.53 0 0 1 8.834 0a2.53 2.53 0 0 1 2.521 2.522v2.52zm0 1.271a2.53 2.53 0 0 1 2.521 2.521a2.53 2.53 0 0 1-2.521 2.521H2.522A2.53 2.53 0 0 1 0 8.834a2.53 2.53 0 0 1 2.522-2.521zm10.122 2.521a2.53 2.53 0 0 1 2.522-2.521A2.53 2.53 0 0 1 24 8.834a2.53 2.53 0 0 1-2.522 2.521h-2.522zm-1.268 0a2.53 2.53 0 0 1-2.523 2.521a2.527 2.527 0 0 1-2.52-2.521V2.522A2.527 2.527 0 0 1 15.165 0a2.53 2.53 0 0 1 2.523 2.522zm-2.523 10.122a2.53 2.53 0 0 1 2.523 2.522A2.53 2.53 0 0 1 15.165 24a2.527 2.527 0 0 1-2.52-2.522v-2.522zm0-1.268a2.527 2.527 0 0 1-2.52-2.523a2.526 2.526 0 0 1 2.52-2.52h6.313A2.527 2.527 0 0 1 24 15.165a2.53 2.53 0 0 1-2.522 2.523z'/%3E%3C/svg%3E")}.vpi-social-twitter{--icon:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M21.543 7.104c.015.211.015.423.015.636c0 6.507-4.954 14.01-14.01 14.01v-.003A13.94 13.94 0 0 1 0 19.539a9.88 9.88 0 0 0 7.287-2.041a4.93 4.93 0 0 1-4.6-3.42a4.9 4.9 0 0 0 2.223-.084A4.926 4.926 0 0 1 .96 9.167v-.062a4.9 4.9 0 0 0 2.235.616A4.93 4.93 0 0 1 1.67 3.148a13.98 13.98 0 0 0 10.15 5.144a4.929 4.929 0 0 1 8.39-4.49a9.9 9.9 0 0 0 3.128-1.196a4.94 4.94 0 0 1-2.165 2.724A9.8 9.8 0 0 0 24 4.555a10 10 0 0 1-2.457 2.549'/%3E%3C/svg%3E")} \ No newline at end of file