From f058c53fe507fd55a15a0528d44649b7e148cb7c Mon Sep 17 00:00:00 2001 From: ahottung Date: Fri, 3 May 2024 15:42:27 +0200 Subject: [PATCH 001/102] Adding PolyNet model and policy --- rl4co/models/zoo/polynet/__init__.py | 1 + rl4co/models/zoo/polynet/decoder.py | 142 ++++++++++++++++++ rl4co/models/zoo/polynet/model.py | 209 +++++++++++++++++++++++++++ rl4co/models/zoo/polynet/policy.py | 86 +++++++++++ 4 files changed, 438 insertions(+) create mode 100644 rl4co/models/zoo/polynet/__init__.py create mode 100644 rl4co/models/zoo/polynet/decoder.py create mode 100644 rl4co/models/zoo/polynet/model.py create mode 100644 rl4co/models/zoo/polynet/policy.py diff --git a/rl4co/models/zoo/polynet/__init__.py b/rl4co/models/zoo/polynet/__init__.py new file mode 100644 index 00000000..1a908241 --- /dev/null +++ b/rl4co/models/zoo/polynet/__init__.py @@ -0,0 +1 @@ +from .model import PolyNet diff --git a/rl4co/models/zoo/polynet/decoder.py b/rl4co/models/zoo/polynet/decoder.py new file mode 100644 index 00000000..a24ceb95 --- /dev/null +++ b/rl4co/models/zoo/polynet/decoder.py @@ -0,0 +1,142 @@ +from dataclasses import dataclass +from typing import Tuple, Union + +import torch.nn as nn + +from torch import Tensor + +from rl4co.envs import RL4COEnvBase +from rl4co.models.nn.attention import PolyNetAttention +from rl4co.models.nn.env_embeddings import env_context_embedding, env_dynamic_embedding +from rl4co.models.nn.env_embeddings.dynamic import StaticEmbedding +from rl4co.utils.pylogger import get_pylogger + +from rl4co.models.zoo.am.decoder import AttentionModelDecoder + +log = get_pylogger(__name__) + + +@dataclass +class PrecomputedCache: + node_embeddings: Tensor + graph_context: Union[Tensor, float] + glimpse_key: Tensor + glimpse_val: Tensor + logit_key: Tensor + + +class PolyNetDecoder(AttentionModelDecoder): + """ + + # TODO + Auto-regressive decoder for constructing solutions for combinatorial optimization problems. + Given the environment state and the embeddings, compute the logits and sample actions autoregressively until + all the environments in the batch have reached a terminal state. + We additionally include support for multi-starts as it is more efficient to do so in the decoder as we can + natively perform the attention computation. + + + + Args: + # TODO + env_name: environment name to solve + embed_dim: Dimension of the embeddings + num_heads: Number of heads for the attention + use_graph_context: Whether to use the initial graph context to modify the query + context_embedding: Module to compute the context embedding. If None, the default is used + dynamic_embedding: Module to compute the dynamic embedding. If None, the default is used + """ + + def __init__( + self, + k: int, + encoder_type: str, + embed_dim: int = 128, + poly_layer_dim: int = 256, + num_heads: int = 8, + env_name: Union[str, RL4COEnvBase] = "tsp", + context_embedding: nn.Module = None, + dynamic_embedding: nn.Module = None, + mask_inner: bool = True, + out_bias_pointer_attn: bool = False, + linear_bias: bool = False, + use_graph_context: bool = True, + check_nan: bool = True, + sdpa_fn: callable = None, + **unused_kwargs + ): + super().__init__() + + if isinstance(env_name, RL4COEnvBase): + env_name = env_name.name + self.env_name = env_name + self.embed_dim = embed_dim + self.num_heads = num_heads + self.encoder_type = encoder_type + + assert embed_dim % num_heads == 0 + + self.context_embedding = ( + env_context_embedding(self.env_name, {"embed_dim": embed_dim}) + if context_embedding is None + else context_embedding + ) + self.dynamic_embedding = ( + env_dynamic_embedding(self.env_name, {"embed_dim": embed_dim}) + if dynamic_embedding is None + else dynamic_embedding + ) + self.is_dynamic_embedding = ( + False if isinstance(self.dynamic_embedding, StaticEmbedding) else True + ) + + # MHA with Pointer mechanism (https://arxiv.org/abs/1506.03134) + self.pointer = PolyNetAttention( + k, + embed_dim, + poly_layer_dim, + num_heads, + mask_inner=mask_inner, + out_bias=out_bias_pointer_attn, + check_nan=check_nan, + sdpa_fn=sdpa_fn, + ) + + # For each node we compute (glimpse key, glimpse value, logit key) so 3 * embed_dim + self.project_node_embeddings = nn.Linear( + embed_dim, 3 * embed_dim, bias=linear_bias + ) + self.project_fixed_context = nn.Linear(embed_dim, embed_dim, bias=linear_bias) + self.use_graph_context = use_graph_context + + + def _precompute_cache_matnet(self, embeddings: Tuple[Tensor, Tensor], *args, **kwargs): + col_emb, row_emb = embeddings + ( + glimpse_key_fixed, + glimpse_val_fixed, + logit_key, + ) = self.project_node_embeddings( + col_emb + ).chunk(3, dim=-1) + + # Optionally disable the graph context from the initial embedding as done in POMO + if self.use_graph_context: + graph_context = self.project_fixed_context(col_emb.mean(1)) + else: + graph_context = 0 + + # Organize in a dataclass for easy access + return PrecomputedCache( + node_embeddings=row_emb, + graph_context=graph_context, + glimpse_key=glimpse_key_fixed, + glimpse_val=glimpse_val_fixed, + logit_key=logit_key, + ) + + def _precompute_cache(self, embeddings: Tuple[Tensor, Tensor], *args, **kwargs): + if self.encoder_type == "AM": + return super()._precompute_cache(embeddings, *args, **kwargs) + elif self.encoder_type == "MatNet": + return self._precompute_cache_matnet(embeddings, *args, **kwargs) \ No newline at end of file diff --git a/rl4co/models/zoo/polynet/model.py b/rl4co/models/zoo/polynet/model.py new file mode 100644 index 00000000..400b1223 --- /dev/null +++ b/rl4co/models/zoo/polynet/model.py @@ -0,0 +1,209 @@ +from typing import Any, Union, Optional + +import torch + +from rl4co.data.transforms import StateAugmentation +from rl4co.envs.common.base import RL4COEnvBase +from rl4co.models.rl.reinforce.reinforce import REINFORCE +from rl4co.models.zoo.polynet.policy import PolyNetPolicy +from rl4co.utils.ops import gather_by_index, unbatchify +from rl4co.utils.pylogger import get_pylogger +from tensordict import TensorDict + +log = get_pylogger(__name__) + + +class PolyNet(REINFORCE): + """POMO Model for neural combinatorial optimization based on REINFORCE + Based on Kwon et al. (2020) http://arxiv.org/abs/2010.16011. + + Note: + If no policy kwargs is passed, we use the Attention Model policy with the following arguments: + Differently to the base class: + - `num_encoder_layers=6` (instead of 3) + - `normalization="instance"` (instead of "batch") + - `use_graph_context=False` (instead of True) + The latter is due to the fact that the paper does not use the graph context in the policy, which seems to be + helpful in overfitting to the training graph size. + + Args: + env: TorchRL Environment + policy: Policy to use for the algorithm + policy_kwargs: Keyword arguments for policy + baseline: Baseline to use for the algorithm. Note that POMO only supports shared baseline, + so we will throw an error if anything else is passed. + num_augment: Number of augmentations (used only for validation and test) + augment_fn: Function to use for augmentation, defaulting to dihedral8 + first_aug_identity: Whether to include the identity augmentation in the first position + feats: List of features to augment + num_starts: Number of starts for multi-start. If None, use the number of available actions + **kwargs: Keyword arguments passed to the superclass + """ + + def __init__( + self, + env: RL4COEnvBase, + policy: PolyNetPolicy = None, + k: int = 128, + val_num_solutions: int = 800, + encoder_type="AM", + policy_kwargs={}, + baseline: str = "shared", + num_augment: int = 8, + augment_fn: Union[str, callable] = "dihedral8", + first_aug_identity: bool = True, + feats: list = None, + **kwargs, + ): + self.save_hyperparameters(logger=False) + + self.k = k + self.val_num_solutions = val_num_solutions + + assert encoder_type in ["AM", "MatNet"], "Supported encoder types are 'AM' and 'MatNet'" + + if policy is None: + policy = PolyNetPolicy(env_name=env.name, k=k, encoder_type=encoder_type, **policy_kwargs) + + assert baseline == "shared", "PolyNet only supports shared baseline" + assert val_num_solutions >= k , "num_solutions_val needs to be >= k" + + if encoder_type == "MatNet": + assert num_augment == 1, "MatNet does not use symmetric or dihedral augmentation" + + train_batch_size = kwargs["batch_size"] if "batch_size" in kwargs else 64 + kwargs_with_defaults = { + "val_batch_size": max(1, train_batch_size // num_augment // (val_num_solutions // k)), + "test_batch_size": max(1, train_batch_size // num_augment // (val_num_solutions // k)) + } + kwargs_with_defaults.update(kwargs) + + # Initialize with the shared baseline + super(PolyNet, self).__init__(env, policy, baseline, **kwargs_with_defaults) + + self.num_augment = num_augment + if self.num_augment > 1: + self.augment = StateAugmentation( + num_augment=self.num_augment, + augment_fn=augment_fn, + first_aug_identity=first_aug_identity, + feats=feats, + ) + else: + self.augment = None + + # Add `_multistart` to decode type for train, val and test in policy + for phase in ["train", "val", "test"]: + self.set_decode_type_multistart(phase) + + def shared_step( + self, batch: Any, batch_idx: int, phase: str, dataloader_idx: int = None + ): + td = self.env.reset(batch) + n_aug = self.num_augment + + # During training, we do not augment the data + if phase == "train": + n_aug = 0 + elif n_aug > 1: + td = self.augment(td) + + if phase == "train": + n_start = self.k + else: + n_start = self.val_num_solutions + + # Evaluate policy + out = self.policy( + td, self.env, phase=phase, num_starts=n_start, return_actions=True, + select_start_nodes_fn=(lambda *args: None) + ) + + # Unbatchify reward to [batch_size, num_augment, num_starts]. + reward = unbatchify(out["reward"], (n_aug, n_start)) + + # Training phase + if phase == "train": + assert n_start > 1, "num_starts must be > 1 during training" + log_likelihood = unbatchify(out["log_likelihood"], (n_aug, n_start)) + self.calculate_loss(td, batch, out, reward, log_likelihood) + max_reward, max_idxs = reward.max(dim=-1) + out.update({"max_reward": max_reward}) + # Get multi-start (=POMO) rewards and best actions only during validation and test + else: + if n_start > 1: + # max multi-start reward + max_reward, max_idxs = reward.max(dim=-1) + out.update({"max_reward": max_reward}) + + if out.get("actions", None) is not None: + # Reshape batch to [batch_size, num_augment, num_starts, ...] + actions = unbatchify(out["actions"], (n_aug, n_start)) + out.update( + {"best_multistart_actions": gather_by_index(actions, max_idxs.unsqueeze(2), dim=2)} + ) + out["actions"] = actions + + # Get augmentation score only during inference + if n_aug > 1: + # If multistart is enabled, we use the best multistart rewards + reward_ = max_reward if n_start > 1 else reward + max_aug_reward, max_idxs = reward_.max(dim=1) + out.update({"max_aug_reward": max_aug_reward}) + + if out.get("actions", None) is not None: + actions_ = ( + out["best_multistart_actions"] if n_start > 1 else out["actions"] + ) + out.update({"best_aug_actions": gather_by_index(actions_, max_idxs)}) + + metrics = self.log_metrics(out, phase, dataloader_idx=dataloader_idx) + return {"loss": out.get("loss", None), **metrics} + + + def calculate_loss( + self, + td: TensorDict, + batch: TensorDict, + policy_out: dict, + reward: Optional[torch.Tensor] = None, + log_likelihood: Optional[torch.Tensor] = None, + ): + """Calculate loss for REINFORCE algorithm. + + Args: + td: TensorDict containing the current state of the environment + batch: Batch of data. This is used to get the extra loss terms, e.g., REINFORCE baseline + policy_out: Output of the policy network + reward: Reward tensor. If None, it is taken from `policy_out` + log_likelihood: Log-likelihood tensor. If None, it is taken from `policy_out` + """ + # Extra: this is used for additional loss terms, e.g., REINFORCE baseline + extra = batch.get("extra", None) + reward = reward if reward is not None else policy_out["reward"] + log_likelihood = ( + log_likelihood if log_likelihood is not None else policy_out["log_likelihood"] + ) + + # REINFORCE baseline + bl_val, bl_loss = ( + self.baseline.eval(td, reward, self.env) if extra is None else (extra, 0) + ) + + # Log-lilelihood mask + best_idx = (-reward).argsort(1).argsort(1) + mask = best_idx < 1 + + # Main loss function + advantage = reward - bl_val # advantage = reward - baseline + reinforce_loss = -(advantage * log_likelihood * mask).mean() + loss = reinforce_loss + bl_loss + policy_out.update( + { + "loss": loss, + "reinforce_loss": reinforce_loss, + "bl_loss": bl_loss, + "bl_val": bl_val, + } + ) + return policy_out diff --git a/rl4co/models/zoo/polynet/policy.py b/rl4co/models/zoo/polynet/policy.py new file mode 100644 index 00000000..40e77a8d --- /dev/null +++ b/rl4co/models/zoo/polynet/policy.py @@ -0,0 +1,86 @@ +from typing import Callable, Union + + +from rl4co.envs import RL4COEnvBase +from rl4co.models.common.constructive.autoregressive.policy import AutoregressivePolicy +from rl4co.models.zoo.polynet.decoder import PolyNetDecoder +from rl4co.models.zoo.am.encoder import AttentionModelEncoder +from rl4co.models.zoo.matnet.encoder import MatNetEncoder + + + +class PolyNetPolicy(AutoregressivePolicy): + """ + # TODO + Attention Model Policy based on Kool et al. (2019): https://arxiv.org/abs/1803.08475. + We re-declare the most important arguments here for convenience as in the paper. + See `AutoregressivePolicy` superclass for more details. + + Args: + env_name: Name of the environment used to initialize embeddings + embed_dim: Dimension of the node embeddings + num_encoder_layers: Number of layers in the encoder + num_heads: Number of heads in the attention layers + normalization: Normalization type in the attention layers + **kwargs: keyword arguments passed to the `AutoregressivePolicy` + """ + + def __init__( + self, + k: int, + encoder_type: str, + embed_dim: int = 128, + num_encoder_layers: int = 6, + num_heads: int = 8, + normalization: str = "instance", + feedforward_hidden: int = 512, + env_name: Union[str, RL4COEnvBase] = "tsp", + temperature: float = 1.0, + tanh_clipping: float = 10.0, + mask_logits: bool = True, + train_decode_type: str = "sampling", + val_decode_type: str = "sampling", + test_decode_type: str = "sampling", + **kwargs, # TODO + ): + if encoder_type == "AM": + encoder = AttentionModelEncoder( + embed_dim=embed_dim, + num_heads=num_heads, + num_layers=num_encoder_layers, + env_name=env_name, + normalization=normalization, + feedforward_hidden=feedforward_hidden, + **kwargs + ) + elif encoder_type == "MatNet": + kwargs_with_defaults = {"init_embedding_kwargs": {"mode": "RandomOneHot"}} + kwargs_with_defaults.update(kwargs) + encoder = MatNetEncoder( + embed_dim=embed_dim, + num_heads=num_heads, + num_layers=num_encoder_layers, + normalization=normalization, + **kwargs_with_defaults + ) + + decoder = PolyNetDecoder( + k=k, + encoder_type=encoder_type, + embed_dim=embed_dim, + num_heads=num_heads, + env_name=env_name, + **kwargs + ) + + super(PolyNetPolicy, self).__init__( + encoder=encoder, + decoder=decoder, + temperature=temperature, + tanh_clipping=tanh_clipping, + mask_logits=mask_logits, + train_decode_type=train_decode_type, + val_decode_type=val_decode_type, + test_decode_type=test_decode_type, + **kwargs + ) From ce88afc280a8353cf4e2052d0d395a56c2eeffa5 Mon Sep 17 00:00:00 2001 From: ahottung Date: Fri, 3 May 2024 15:46:16 +0200 Subject: [PATCH 002/102] Adding PolyNet attention --- rl4co/models/nn/attention.py | 79 ++++++++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) diff --git a/rl4co/models/nn/attention.py b/rl4co/models/nn/attention.py index a904e678..6e5a5b16 100644 --- a/rl4co/models/nn/attention.py +++ b/rl4co/models/nn/attention.py @@ -10,6 +10,7 @@ from einops import rearrange from rl4co.utils import get_pylogger +import itertools log = get_pylogger(__name__) @@ -211,6 +212,7 @@ def _make_heads(self, v): return rearrange(v, "... g (h s) -> ... h g s", h=self.num_heads) + # Deprecated class LogitAttention(PointerAttention): def __init__(self, *args, **kwargs): @@ -222,3 +224,80 @@ def __init__(self, *args, **kwargs): category=DeprecationWarning, ) super(LogitAttention, self).__init__(*args, **kwargs) + +class PolyNetAttention(PointerAttention): + """Calculate logits given query, key and value and logit key. + This follows the pointer mechanism of Vinyals et al. (2015) (https://arxiv.org/abs/1506.03134). + + Note: + With Flash Attention, masking is not supported + + Performs the following: + 1. Apply cross attention to get the heads + 2. Project heads to get glimpse + 3. Compute attention score between glimpse and logit key + + Args: + embed_dim: total dimension of the model + num_heads: number of heads + mask_inner: whether to mask inner attention + linear_bias: whether to use bias in linear projection + check_nan: whether to check for NaNs in logits + sdpa_fn: scaled dot product attention function (SDPA) implementation + """ + + def __init__( + self, + k: int, + embed_dim: int, + poly_layer_dim: int, + num_heads: int, + **kwargs + ): + super(PolyNetAttention, self).__init__(embed_dim, num_heads, **kwargs) + + self.binary_vector_dim = math.ceil(math.log2(k)) + self.binary_vectors = torch.nn.Parameter(torch.Tensor( + list(itertools.product([0, 1], repeat=self.binary_vector_dim))[:k]), requires_grad=False) + + self.poly_layer_1 = nn.Linear(embed_dim + self.binary_vector_dim, poly_layer_dim) + self.poly_layer_2 = nn.Linear(poly_layer_dim, embed_dim) + + def forward(self, query, key, value, logit_key, attn_mask=None): + """Compute attention logits given query, key, value, logit key and attention mask. + + Args: + query: query tensor of shape [B, ..., L, E] + key: key tensor of shape [B, ..., S, E] + value: value tensor of shape [B, ..., S, E] + logit_key: logit key tensor of shape [B, ..., S, E] + attn_mask: attention mask tensor of shape [B, ..., S]. Note that `True` means that the value _should_ take part in attention + as described in the [PyTorch Documentation](https://pytorch.org/docs/stable/generated/torch.nn.functional.scaled_dot_product_attention.html) + """ + # Compute inner multi-head attention with no projections. + heads = self._inner_mha(query, key, value, attn_mask) + glimpse = self.project_out(heads) + + num_solutions = glimpse.shape[1] + z = self.binary_vectors.repeat(math.ceil(num_solutions / self.binary_vector_dim), 1)[:num_solutions] + z = z[None].expand(glimpse.shape[0], num_solutions, self.binary_vector_dim) + + # PolyNet layers + poly_out = self.poly_layer_1(torch.cat((glimpse, z), dim=2)) + # shape: ? + poly_out = F.relu(poly_out) + # shape: ? + poly_out = self.poly_layer_2(poly_out) + + glimpse += poly_out + + # Batch matrix multiplication to compute logits (batch_size, num_steps, graph_size) + # bmm is slightly faster than einsum and matmul + logits = (torch.bmm(glimpse, logit_key.squeeze(-2).transpose(-2, -1))).squeeze( + -2 + ) / math.sqrt(glimpse.size(-1)) + + if self.check_nan: + assert not torch.isnan(logits).any(), "Logits contain NaNs" + + return logits \ No newline at end of file From a13eb074acb8b32d90d03bc7b2c79072fb22ffdc Mon Sep 17 00:00:00 2001 From: ahottung Date: Fri, 3 May 2024 15:52:12 +0200 Subject: [PATCH 003/102] Ability to skip start node selection for multi-start decoding --- rl4co/utils/decoding.py | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/rl4co/utils/decoding.py b/rl4co/utils/decoding.py index b4ed919a..d1b450e3 100644 --- a/rl4co/utils/decoding.py +++ b/rl4co/utils/decoding.py @@ -272,14 +272,15 @@ def pre_decoder_hook( # Expand td to batch_size * num_starts td = batchify(td, self.num_starts) - td.set("action", action) - td = env.step(td)["next"] - logprobs = torch.zeros_like( - td["action_mask"], device=td.device - ) # first logprobs is 0, so p = logprobs.exp() = 1 - - self.logprobs.append(logprobs) - self.actions.append(action) + if action is not None: + td.set("action", action) + td = env.step(td)["next"] + logprobs = torch.zeros_like( + td["action_mask"], device=td.device + ) # first logprobs is 0, so p = logprobs.exp() = 1 + + self.logprobs.append(logprobs) + self.actions.append(action) return td, env, self.num_starts From f3c8e4361db0336b0b37f227c5edf9efc060d5dc Mon Sep 17 00:00:00 2001 From: ahottung Date: Fri, 3 May 2024 16:03:02 +0200 Subject: [PATCH 004/102] Support context placeholders for TSP with multi-start decoding --- rl4co/models/nn/env_embeddings/context.py | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/rl4co/models/nn/env_embeddings/context.py b/rl4co/models/nn/env_embeddings/context.py index 439a9958..efbf743e 100644 --- a/rl4co/models/nn/env_embeddings/context.py +++ b/rl4co/models/nn/env_embeddings/context.py @@ -116,10 +116,15 @@ def forward(self, embeddings, td): node_dim = ( (-1,) if td["first_node"].dim() == 1 else (td["first_node"].size(-1), -1) ) - if td["i"][(0,) * td["i"].dim()].item() < 1: # get first item fast - context_embedding = self.W_placeholder[None, :].expand( - batch_size, self.W_placeholder.size(-1) - ) + if td["i"][(0,) * td["i"].dim()].item() < 1: # get first item fast + if td.batch_dims == 1: + context_embedding = self.W_placeholder[None, :].expand( + batch_size, self.W_placeholder.size(-1) + ) + elif td.batch_dims == 2: + context_embedding = self.W_placeholder[None, None, :].expand( + batch_size, td.batch_size[1], self.W_placeholder.size(-1) + ) else: context_embedding = gather_by_index( embeddings, From ea12d85fc780855058f1679e28b0aa00290ba6cf Mon Sep 17 00:00:00 2001 From: ahottung Date: Fri, 3 May 2024 16:07:44 +0200 Subject: [PATCH 005/102] Updating init files --- rl4co/models/__init__.py | 1 + rl4co/models/zoo/__init__.py | 1 + 2 files changed, 2 insertions(+) diff --git a/rl4co/models/__init__.py b/rl4co/models/__init__.py index 2d60adfd..bb83e9da 100644 --- a/rl4co/models/__init__.py +++ b/rl4co/models/__init__.py @@ -28,6 +28,7 @@ ) from rl4co.models.zoo.matnet import MatNet, MatNetPolicy from rl4co.models.zoo.mdam import MDAM, MDAMPolicy +from rl4co.models.zoo.polynet import PolyNet from rl4co.models.zoo.pomo import POMO from rl4co.models.zoo.ppo import PPOModel from rl4co.models.zoo.ptrnet import PointerNetwork, PointerNetworkPolicy diff --git a/rl4co/models/zoo/__init__.py b/rl4co/models/zoo/__init__.py index 25146ba2..b73cfe94 100644 --- a/rl4co/models/zoo/__init__.py +++ b/rl4co/models/zoo/__init__.py @@ -10,6 +10,7 @@ ) from rl4co.models.zoo.matnet import MatNet, MatNetPolicy from rl4co.models.zoo.mdam import MDAM, MDAMPolicy +from rl4co.models.zoo.polynet import PolyNet from rl4co.models.zoo.pomo import POMO from rl4co.models.zoo.ppo import PPOModel from rl4co.models.zoo.ptrnet import PointerNetwork, PointerNetworkPolicy From e249de9551307ea9ec1d5aafdf6807e8252bcd6f Mon Sep 17 00:00:00 2001 From: ahottung Date: Fri, 3 May 2024 16:29:46 +0200 Subject: [PATCH 006/102] Fixing merge problems --- rl4co/models/__init__.py | 2 +- rl4co/models/zoo/__init__.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/rl4co/models/__init__.py b/rl4co/models/__init__.py index 99dd90d5..7ef6a928 100644 --- a/rl4co/models/__init__.py +++ b/rl4co/models/__init__.py @@ -31,7 +31,7 @@ from rl4co.models.zoo.matnet import MatNet, MatNetPolicy from rl4co.models.zoo.mdam import MDAM, MDAMPolicy from rl4co.models.zoo.nargnn import NARGNNPolicy +from rl4co.models.zoo.polynet import PolyNet from rl4co.models.zoo.pomo import POMO -from rl4co.models.zoo.ppo import PPOModel from rl4co.models.zoo.ptrnet import PointerNetwork, PointerNetworkPolicy from rl4co.models.zoo.symnco import SymNCO, SymNCOPolicy diff --git a/rl4co/models/zoo/__init__.py b/rl4co/models/zoo/__init__.py index 449cf674..fb249552 100644 --- a/rl4co/models/zoo/__init__.py +++ b/rl4co/models/zoo/__init__.py @@ -14,7 +14,7 @@ from rl4co.models.zoo.mdam import MDAM, MDAMPolicy from rl4co.models.zoo.nargnn import NARGNNPolicy from rl4co.models.zoo.polynet import PolyNet -from rl4co.models.zoo.polynet import PolyNet from rl4co.models.zoo.pomo import POMO from rl4co.models.zoo.ptrnet import PointerNetwork, PointerNetworkPolicy from rl4co.models.zoo.symnco import SymNCO, SymNCOPolicy + From a912521017281d3dbc4e61471ee5dddd7ae9d1a8 Mon Sep 17 00:00:00 2001 From: ahottung Date: Tue, 7 May 2024 15:15:14 +0200 Subject: [PATCH 007/102] Bug fix z tensor size calculation --- rl4co/models/nn/attention.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rl4co/models/nn/attention.py b/rl4co/models/nn/attention.py index 6e5a5b16..ec37b23d 100644 --- a/rl4co/models/nn/attention.py +++ b/rl4co/models/nn/attention.py @@ -279,7 +279,7 @@ def forward(self, query, key, value, logit_key, attn_mask=None): glimpse = self.project_out(heads) num_solutions = glimpse.shape[1] - z = self.binary_vectors.repeat(math.ceil(num_solutions / self.binary_vector_dim), 1)[:num_solutions] + z = self.binary_vectors.repeat(math.ceil(num_solutions / (2**self.binary_vector_dim)), 1)[:num_solutions] z = z[None].expand(glimpse.shape[0], num_solutions, self.binary_vector_dim) # PolyNet layers From a4e490a13c7605d33441a7bd5ed7efed71f37c9c Mon Sep 17 00:00:00 2001 From: ahottung Date: Tue, 7 May 2024 15:15:53 +0200 Subject: [PATCH 008/102] Improving sanity checks and default batch size calculation --- rl4co/models/zoo/polynet/model.py | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/rl4co/models/zoo/polynet/model.py b/rl4co/models/zoo/polynet/model.py index 400b1223..a05f959a 100644 --- a/rl4co/models/zoo/polynet/model.py +++ b/rl4co/models/zoo/polynet/model.py @@ -62,19 +62,21 @@ def __init__( assert encoder_type in ["AM", "MatNet"], "Supported encoder types are 'AM' and 'MatNet'" - if policy is None: - policy = PolyNetPolicy(env_name=env.name, k=k, encoder_type=encoder_type, **policy_kwargs) - assert baseline == "shared", "PolyNet only supports shared baseline" - assert val_num_solutions >= k , "num_solutions_val needs to be >= k" + + if policy_kwargs.get("val_decode_type") == "greedy" or policy_kwargs.get("test_decode_type") == "greedy": + assert val_num_solutions <= k, "If greedy decoding is used val_num_solutions must be <= k" if encoder_type == "MatNet": assert num_augment == 1, "MatNet does not use symmetric or dihedral augmentation" + if policy is None: + policy = PolyNetPolicy(env_name=env.name, k=k, encoder_type=encoder_type, **policy_kwargs) + train_batch_size = kwargs["batch_size"] if "batch_size" in kwargs else 64 kwargs_with_defaults = { - "val_batch_size": max(1, train_batch_size // num_augment // (val_num_solutions // k)), - "test_batch_size": max(1, train_batch_size // num_augment // (val_num_solutions // k)) + "val_batch_size": max(1, train_batch_size // (val_num_solutions // k)), + "test_batch_size": max(1, train_batch_size // (val_num_solutions // k)) } kwargs_with_defaults.update(kwargs) From 44c7b391a892410f948c6cabee554b33ca18a106 Mon Sep 17 00:00:00 2001 From: ahottung Date: Wed, 8 May 2024 16:15:43 +0200 Subject: [PATCH 009/102] Allowing to load a model checkpoint; reformatting --- rl4co/models/zoo/polynet/model.py | 56 ++++++++++++++++++++++++------- 1 file changed, 44 insertions(+), 12 deletions(-) diff --git a/rl4co/models/zoo/polynet/model.py b/rl4co/models/zoo/polynet/model.py index a05f959a..aa0a6043 100644 --- a/rl4co/models/zoo/polynet/model.py +++ b/rl4co/models/zoo/polynet/model.py @@ -1,14 +1,17 @@ -from typing import Any, Union, Optional +import logging + +from typing import Any, Optional, Union import torch +from tensordict import TensorDict + from rl4co.data.transforms import StateAugmentation from rl4co.envs.common.base import RL4COEnvBase from rl4co.models.rl.reinforce.reinforce import REINFORCE from rl4co.models.zoo.polynet.policy import PolyNetPolicy from rl4co.utils.ops import gather_by_index, unbatchify from rl4co.utils.pylogger import get_pylogger -from tensordict import TensorDict log = get_pylogger(__name__) @@ -47,6 +50,7 @@ def __init__( k: int = 128, val_num_solutions: int = 800, encoder_type="AM", + base_model_checkpoint_path: str = None, policy_kwargs={}, baseline: str = "shared", num_augment: int = 8, @@ -60,23 +64,44 @@ def __init__( self.k = k self.val_num_solutions = val_num_solutions - assert encoder_type in ["AM", "MatNet"], "Supported encoder types are 'AM' and 'MatNet'" + assert encoder_type in [ + "AM", + "MatNet", + ], "Supported encoder types are 'AM' and 'MatNet'" assert baseline == "shared", "PolyNet only supports shared baseline" - if policy_kwargs.get("val_decode_type") == "greedy" or policy_kwargs.get("test_decode_type") == "greedy": - assert val_num_solutions <= k, "If greedy decoding is used val_num_solutions must be <= k" + if ( + policy_kwargs.get("val_decode_type") == "greedy" + or policy_kwargs.get("test_decode_type") == "greedy" + ): + assert ( + val_num_solutions <= k + ), "If greedy decoding is used val_num_solutions must be <= k" if encoder_type == "MatNet": - assert num_augment == 1, "MatNet does not use symmetric or dihedral augmentation" + assert ( + num_augment == 1 + ), "MatNet does not use symmetric or dihedral augmentation" if policy is None: - policy = PolyNetPolicy(env_name=env.name, k=k, encoder_type=encoder_type, **policy_kwargs) + policy = PolyNetPolicy( + env_name=env.name, k=k, encoder_type=encoder_type, **policy_kwargs + ) + + if base_model_checkpoint_path is not None: + logging.info( + f"Trying to load weights from baseline model {base_model_checkpoint_path}" + ) + checkpoint = torch.load(base_model_checkpoint_path) + state_dict = checkpoint["state_dict"] + state_dict = {k.replace("policy.", "", 1): v for k, v in state_dict.items()} + policy.load_state_dict(state_dict) train_batch_size = kwargs["batch_size"] if "batch_size" in kwargs else 64 kwargs_with_defaults = { "val_batch_size": max(1, train_batch_size // (val_num_solutions // k)), - "test_batch_size": max(1, train_batch_size // (val_num_solutions // k)) + "test_batch_size": max(1, train_batch_size // (val_num_solutions // k)), } kwargs_with_defaults.update(kwargs) @@ -117,8 +142,12 @@ def shared_step( # Evaluate policy out = self.policy( - td, self.env, phase=phase, num_starts=n_start, return_actions=True, - select_start_nodes_fn=(lambda *args: None) + td, + self.env, + phase=phase, + num_starts=n_start, + return_actions=True, + select_start_nodes_fn=(lambda *args: None), ) # Unbatchify reward to [batch_size, num_augment, num_starts]. @@ -142,7 +171,11 @@ def shared_step( # Reshape batch to [batch_size, num_augment, num_starts, ...] actions = unbatchify(out["actions"], (n_aug, n_start)) out.update( - {"best_multistart_actions": gather_by_index(actions, max_idxs.unsqueeze(2), dim=2)} + { + "best_multistart_actions": gather_by_index( + actions, max_idxs.unsqueeze(2), dim=2 + ) + } ) out["actions"] = actions @@ -162,7 +195,6 @@ def shared_step( metrics = self.log_metrics(out, phase, dataloader_idx=dataloader_idx) return {"loss": out.get("loss", None), **metrics} - def calculate_loss( self, td: TensorDict, From 60e95298490ad810c1d6f4a3bc2f6a1f6391a4a9 Mon Sep 17 00:00:00 2001 From: ahottung Date: Wed, 8 May 2024 17:40:18 +0200 Subject: [PATCH 010/102] Documentation --- rl4co/models/nn/attention.py | 36 ++++++++++++++------------ rl4co/models/zoo/polynet/decoder.py | 39 ++++++++++++++++------------- rl4co/models/zoo/polynet/model.py | 26 +++++++++---------- rl4co/models/zoo/polynet/policy.py | 38 +++++++++++++++++----------- 4 files changed, 77 insertions(+), 62 deletions(-) diff --git a/rl4co/models/nn/attention.py b/rl4co/models/nn/attention.py index ec37b23d..c810c2bd 100644 --- a/rl4co/models/nn/attention.py +++ b/rl4co/models/nn/attention.py @@ -1,3 +1,4 @@ +import itertools import math import warnings @@ -10,7 +11,6 @@ from einops import rearrange from rl4co.utils import get_pylogger -import itertools log = get_pylogger(__name__) @@ -212,7 +212,6 @@ def _make_heads(self, v): return rearrange(v, "... g (h s) -> ... h g s", h=self.num_heads) - # Deprecated class LogitAttention(PointerAttention): def __init__(self, *args, **kwargs): @@ -225,9 +224,12 @@ def __init__(self, *args, **kwargs): ) super(LogitAttention, self).__init__(*args, **kwargs) + class PolyNetAttention(PointerAttention): """Calculate logits given query, key and value and logit key. - This follows the pointer mechanism of Vinyals et al. (2015) (https://arxiv.org/abs/1506.03134). + This implements a modified version the pointer mechanism of Vinyals et al. (2015) (https://arxiv.org/abs/1506.03134) + as described in Hottung et al. (2024) (https://arxiv.org/abs/2402.14048) PolyNetAttention conditions the attention logits on + a set of k different binary vectors allowing to learn k different solution strategies. Note: With Flash Attention, masking is not supported @@ -235,10 +237,13 @@ class PolyNetAttention(PointerAttention): Performs the following: 1. Apply cross attention to get the heads 2. Project heads to get glimpse - 3. Compute attention score between glimpse and logit key + 3. Apply PolyNet layers + 4. Compute attention score between glimpse and logit key Args: + k: Number unique bit vectors used to compute attention score embed_dim: total dimension of the model + poly_layer_dim: Dimension of the PolyNet layers num_heads: number of heads mask_inner: whether to mask inner attention linear_bias: whether to use bias in linear projection @@ -247,18 +252,17 @@ class PolyNetAttention(PointerAttention): """ def __init__( - self, - k: int, - embed_dim: int, - poly_layer_dim: int, - num_heads: int, - **kwargs + self, k: int, embed_dim: int, poly_layer_dim: int, num_heads: int, **kwargs ): super(PolyNetAttention, self).__init__(embed_dim, num_heads, **kwargs) self.binary_vector_dim = math.ceil(math.log2(k)) - self.binary_vectors = torch.nn.Parameter(torch.Tensor( - list(itertools.product([0, 1], repeat=self.binary_vector_dim))[:k]), requires_grad=False) + self.binary_vectors = torch.nn.Parameter( + torch.Tensor( + list(itertools.product([0, 1], repeat=self.binary_vector_dim))[:k] + ), + requires_grad=False, + ) self.poly_layer_1 = nn.Linear(embed_dim + self.binary_vector_dim, poly_layer_dim) self.poly_layer_2 = nn.Linear(poly_layer_dim, embed_dim) @@ -279,14 +283,14 @@ def forward(self, query, key, value, logit_key, attn_mask=None): glimpse = self.project_out(heads) num_solutions = glimpse.shape[1] - z = self.binary_vectors.repeat(math.ceil(num_solutions / (2**self.binary_vector_dim)), 1)[:num_solutions] + z = self.binary_vectors.repeat( + math.ceil(num_solutions / (2**self.binary_vector_dim)), 1 + )[:num_solutions] z = z[None].expand(glimpse.shape[0], num_solutions, self.binary_vector_dim) # PolyNet layers poly_out = self.poly_layer_1(torch.cat((glimpse, z), dim=2)) - # shape: ? poly_out = F.relu(poly_out) - # shape: ? poly_out = self.poly_layer_2(poly_out) glimpse += poly_out @@ -300,4 +304,4 @@ def forward(self, query, key, value, logit_key, attn_mask=None): if self.check_nan: assert not torch.isnan(logits).any(), "Logits contain NaNs" - return logits \ No newline at end of file + return logits diff --git a/rl4co/models/zoo/polynet/decoder.py b/rl4co/models/zoo/polynet/decoder.py index a24ceb95..7a28fa1a 100644 --- a/rl4co/models/zoo/polynet/decoder.py +++ b/rl4co/models/zoo/polynet/decoder.py @@ -9,9 +9,8 @@ from rl4co.models.nn.attention import PolyNetAttention from rl4co.models.nn.env_embeddings import env_context_embedding, env_dynamic_embedding from rl4co.models.nn.env_embeddings.dynamic import StaticEmbedding -from rl4co.utils.pylogger import get_pylogger - from rl4co.models.zoo.am.decoder import AttentionModelDecoder +from rl4co.utils.pylogger import get_pylogger log = get_pylogger(__name__) @@ -27,24 +26,27 @@ class PrecomputedCache: class PolyNetDecoder(AttentionModelDecoder): """ - - # TODO - Auto-regressive decoder for constructing solutions for combinatorial optimization problems. + PolyNet decoder for constructing diverse solutions for combinatorial optimization problems. Given the environment state and the embeddings, compute the logits and sample actions autoregressively until all the environments in the batch have reached a terminal state. We additionally include support for multi-starts as it is more efficient to do so in the decoder as we can natively perform the attention computation. - - Args: - # TODO - env_name: environment name to solve - embed_dim: Dimension of the embeddings - num_heads: Number of heads for the attention - use_graph_context: Whether to use the initial graph context to modify the query - context_embedding: Module to compute the context embedding. If None, the default is used - dynamic_embedding: Module to compute the dynamic embedding. If None, the default is used + k: Number of strategies to learn ("K" in the PolyNet paper) + encoder_type: Type of encoder that should be used. "AM" or "MatNet" are supported + embed_dim: Embedding dimension + poly_layer_dim: Dimension of the PolyNet layers + num_heads: Number of attention heads + env_name: Name of the environment used to initialize embeddings + context_embedding: Context embedding module + dynamic_embedding: Dynamic embedding module + mask_inner: Whether to mask the inner loop + out_bias_pointer_attn: Whether to use a bias in the pointer attention + linear_bias: Whether to use a bias in the linear layer + use_graph_context: Whether to use the graph context + check_nan: Whether to check for nan values during decoding + sdpa_fn: scaled_dot_product_attention function """ def __init__( @@ -63,7 +65,7 @@ def __init__( use_graph_context: bool = True, check_nan: bool = True, sdpa_fn: callable = None, - **unused_kwargs + **unused_kwargs, ): super().__init__() @@ -109,8 +111,9 @@ def __init__( self.project_fixed_context = nn.Linear(embed_dim, embed_dim, bias=linear_bias) self.use_graph_context = use_graph_context - - def _precompute_cache_matnet(self, embeddings: Tuple[Tensor, Tensor], *args, **kwargs): + def _precompute_cache_matnet( + self, embeddings: Tuple[Tensor, Tensor], *args, **kwargs + ): col_emb, row_emb = embeddings ( glimpse_key_fixed, @@ -139,4 +142,4 @@ def _precompute_cache(self, embeddings: Tuple[Tensor, Tensor], *args, **kwargs): if self.encoder_type == "AM": return super()._precompute_cache(embeddings, *args, **kwargs) elif self.encoder_type == "MatNet": - return self._precompute_cache_matnet(embeddings, *args, **kwargs) \ No newline at end of file + return self._precompute_cache_matnet(embeddings, *args, **kwargs) diff --git a/rl4co/models/zoo/polynet/model.py b/rl4co/models/zoo/polynet/model.py index aa0a6043..ce33a563 100644 --- a/rl4co/models/zoo/polynet/model.py +++ b/rl4co/models/zoo/polynet/model.py @@ -17,29 +17,27 @@ class PolyNet(REINFORCE): - """POMO Model for neural combinatorial optimization based on REINFORCE - Based on Kwon et al. (2020) http://arxiv.org/abs/2010.16011. + """PolyNet + Based on Hottung et al. (2024) https://arxiv.org/abs/2402.14048. Note: - If no policy kwargs is passed, we use the Attention Model policy with the following arguments: - Differently to the base class: - - `num_encoder_layers=6` (instead of 3) - - `normalization="instance"` (instead of "batch") - - `use_graph_context=False` (instead of True) - The latter is due to the fact that the paper does not use the graph context in the policy, which seems to be - helpful in overfitting to the training graph size. + PolyNet allows to learn diverse solution stratgies with a single model. This is achieved + through a modified decoder and the Poppy loss (Grinsztajn et al. (2021)). PolyNet can be used with the attention model encoder or the MatNet encoder by + setting encoder_type to "AM" or "MatNet", respectively. Args: env: TorchRL Environment policy: Policy to use for the algorithm + k: Number of strategies to learn ("K" in the paper) + val_num_solutions: Number of solutions that are generated per instance during validation + encoder_type: Type of encoder that should be used. "AM" or "MatNet" are supported policy_kwargs: Keyword arguments for policy - baseline: Baseline to use for the algorithm. Note that POMO only supports shared baseline, + baseline: Baseline to use for the algorithm. Note that PolyNet only supports shared baseline, so we will throw an error if anything else is passed. num_augment: Number of augmentations (used only for validation and test) augment_fn: Function to use for augmentation, defaulting to dihedral8 first_aug_identity: Whether to include the identity augmentation in the first position feats: List of features to augment - num_starts: Number of starts for multi-start. If None, use the number of available actions **kwargs: Keyword arguments passed to the superclass """ @@ -96,7 +94,7 @@ def __init__( checkpoint = torch.load(base_model_checkpoint_path) state_dict = checkpoint["state_dict"] state_dict = {k.replace("policy.", "", 1): v for k, v in state_dict.items()} - policy.load_state_dict(state_dict) + policy.load_state_dict(state_dict, strict=False) train_batch_size = kwargs["batch_size"] if "batch_size" in kwargs else 64 kwargs_with_defaults = { @@ -203,7 +201,7 @@ def calculate_loss( reward: Optional[torch.Tensor] = None, log_likelihood: Optional[torch.Tensor] = None, ): - """Calculate loss for REINFORCE algorithm. + """Calculate loss following Poppy (https://arxiv.org/abs/2210.03475). Args: td: TensorDict containing the current state of the environment @@ -224,7 +222,7 @@ def calculate_loss( self.baseline.eval(td, reward, self.env) if extra is None else (extra, 0) ) - # Log-lilelihood mask + # Log-likelihood mask. Mask everything but the best rollout per instance best_idx = (-reward).argsort(1).argsort(1) mask = best_idx < 1 diff --git a/rl4co/models/zoo/polynet/policy.py b/rl4co/models/zoo/polynet/policy.py index 40e77a8d..25217505 100644 --- a/rl4co/models/zoo/polynet/policy.py +++ b/rl4co/models/zoo/polynet/policy.py @@ -1,28 +1,38 @@ -from typing import Callable, Union - +from typing import Union from rl4co.envs import RL4COEnvBase from rl4co.models.common.constructive.autoregressive.policy import AutoregressivePolicy -from rl4co.models.zoo.polynet.decoder import PolyNetDecoder from rl4co.models.zoo.am.encoder import AttentionModelEncoder from rl4co.models.zoo.matnet.encoder import MatNetEncoder - +from rl4co.models.zoo.polynet.decoder import PolyNetDecoder class PolyNetPolicy(AutoregressivePolicy): """ # TODO - Attention Model Policy based on Kool et al. (2019): https://arxiv.org/abs/1803.08475. - We re-declare the most important arguments here for convenience as in the paper. - See `AutoregressivePolicy` superclass for more details. + Polynet policy based on Hottung et al. (2024) https://arxiv.org/abs/2402.14048. + The model uses either the AttentionModel encoder or the MatNet encoder in combination with + a custom PolyNet decoder. + + Note: The default arguments for the AttentionModel encoder follow the POMO paper. The default decoding type + during validation and testing is 'sampling'. Args: - env_name: Name of the environment used to initialize embeddings + k: Number of strategies to learn ("K" in the paper) + encoder_type: Type of encoder that should be used. "AM" or "MatNet" are supported. embed_dim: Dimension of the node embeddings num_encoder_layers: Number of layers in the encoder num_heads: Number of heads in the attention layers normalization: Normalization type in the attention layers - **kwargs: keyword arguments passed to the `AutoregressivePolicy` + feedforward_hidden: Dimension of the hidden layer in the feedforward network + env_name: Name of the environment used to initialize embeddings + temperature: Temperature for the softmax + tanh_clipping: Tanh clipping value (see Bello et al., 2016) + mask_logits: Whether to mask the logits during decoding + train_decode_type: Type of decoding to use during training + val_decode_type: Type of decoding to use during validation + test_decode_type: Type of decoding to use during testing + **kwargs: keyword arguments passed to the encoder and decoder modules """ def __init__( @@ -41,7 +51,7 @@ def __init__( train_decode_type: str = "sampling", val_decode_type: str = "sampling", test_decode_type: str = "sampling", - **kwargs, # TODO + **kwargs, ): if encoder_type == "AM": encoder = AttentionModelEncoder( @@ -51,7 +61,7 @@ def __init__( env_name=env_name, normalization=normalization, feedforward_hidden=feedforward_hidden, - **kwargs + **kwargs, ) elif encoder_type == "MatNet": kwargs_with_defaults = {"init_embedding_kwargs": {"mode": "RandomOneHot"}} @@ -61,7 +71,7 @@ def __init__( num_heads=num_heads, num_layers=num_encoder_layers, normalization=normalization, - **kwargs_with_defaults + **kwargs_with_defaults, ) decoder = PolyNetDecoder( @@ -70,7 +80,7 @@ def __init__( embed_dim=embed_dim, num_heads=num_heads, env_name=env_name, - **kwargs + **kwargs, ) super(PolyNetPolicy, self).__init__( @@ -82,5 +92,5 @@ def __init__( train_decode_type=train_decode_type, val_decode_type=val_decode_type, test_decode_type=test_decode_type, - **kwargs + **kwargs, ) From 475e430b7b8c07a1a0228003fad7342758e73c51 Mon Sep 17 00:00:00 2001 From: jieyibi Date: Mon, 27 May 2024 23:08:25 +0800 Subject: [PATCH 011/102] Update meta trainer --- examples/2d-meta_train.py | 90 ++++++++++++++ rl4co/utils/__init__.py | 1 + rl4co/utils/meta_trainer.py | 242 ++++++++++++++++++++++++++++++++++++ 3 files changed, 333 insertions(+) create mode 100644 examples/2d-meta_train.py create mode 100644 rl4co/utils/meta_trainer.py diff --git a/examples/2d-meta_train.py b/examples/2d-meta_train.py new file mode 100644 index 00000000..2e79c6f8 --- /dev/null +++ b/examples/2d-meta_train.py @@ -0,0 +1,90 @@ +import sys +sys.path.append("/home/jieyi/rl4co") + +import pytz +import torch + +from datetime import datetime +from lightning.pytorch.callbacks import ModelCheckpoint, RichModelSummary +from lightning.pytorch.loggers import WandbLogger + +from rl4co.envs import CVRPEnv +from rl4co.models.zoo.am import AttentionModelPolicy +from rl4co.models.zoo.pomo import POMO +from rl4co.utils.meta_trainer import RL4COMetaTrainer, MetaModelCallback + +def main(): + # Set device + device_id = 0 + + # RL4CO env based on TorchRL + env = CVRPEnv(generator_params={'num_loc': 50}) + + # Policy: neural network, in this case with encoder-decoder architecture + # Note that this is adapted the same as POMO did in the original paper + policy = AttentionModelPolicy(env_name=env.name, + embed_dim=128, + num_encoder_layers=6, + num_heads=8, + normalization="instance", + use_graph_context=False + ) + + # RL Model (POMO) + model = POMO(env, + policy, + batch_size=64, # meta_batch_size + train_data_size=64 * 50, # each epoch + val_data_size=0, + optimizer_kwargs={"lr": 1e-4, "weight_decay": 1e-6}, + # for the task scheduler of size setting, where sch_epoch = 0.9 * epochs + ) + + # Example callbacks + checkpoint_callback = ModelCheckpoint( + dirpath="checkpoints", # save to checkpoints/ + filename="epoch_{epoch:03d}", # save as epoch_XXX.ckpt + save_top_k=1, # save only the best model + save_last=True, # save the last model + monitor="val/reward", # monitor validation reward + mode="max", # maximize validation reward + ) + rich_model_summary = RichModelSummary(max_depth=3) # model summary callback + # Meta callbacks + meta_callback = MetaModelCallback( + meta_params={ + 'meta_method': 'reptile', # choose from ['maml', 'fomaml', 'maml_fomaml', 'reptile'] + 'data_type': 'size', # choose from ["size", "distribution", "size_distribution"] + 'sch_bar': 0.9, # for the task scheduler of size setting, where sch_epoch = sch_bar * epochs + 'B': 1, # the number of tasks in a mini-batch + 'alpha': 0.99, # params for the outer-loop optimization of reptile + 'alpha_decay': 0.999, # params for the outer-loop optimization of reptile + 'min_size': 20, # minimum of sampled size in meta tasks + 'max_size': 150, # maximum of sampled size in meta tasks + }, + print_log=True # whether to print the sampled tasks in each meta iteration + ) + callbacks = [meta_callback, checkpoint_callback, rich_model_summary] + + # Logger + process_start_time = datetime.now(pytz.timezone("Asia/Singapore")) + logger = WandbLogger(project="rl4co", name=f"{env.name}_{process_start_time.strftime('%Y%m%d_%H%M%S')}") + # logger = None # uncomment this line if you don't want logging + + # Adjust your trainer to the number of epochs you want to run + trainer = RL4COMetaTrainer( + max_epochs=20000, # (the number of meta-model updates) * (the number of tasks in a mini-batch) + callbacks=callbacks, + accelerator="gpu", + devices=[device_id], + logger=logger, + limit_train_batches=50 # gradient decent steps in the inner-loop optimization of meta-learning method + ) + + # Fit + trainer.fit(model) + + +if __name__ == "__main__": + main() + diff --git a/rl4co/utils/__init__.py b/rl4co/utils/__init__.py index 4b0246aa..638f3149 100644 --- a/rl4co/utils/__init__.py +++ b/rl4co/utils/__init__.py @@ -2,6 +2,7 @@ from rl4co.utils.pylogger import get_pylogger from rl4co.utils.rich_utils import enforce_tags, print_config_tree from rl4co.utils.trainer import RL4COTrainer +from rl4co.utils.meta_trainer import RL4COMetaTrainer from rl4co.utils.utils import ( extras, get_metric_value, diff --git a/rl4co/utils/meta_trainer.py b/rl4co/utils/meta_trainer.py new file mode 100644 index 00000000..0d45ccff --- /dev/null +++ b/rl4co/utils/meta_trainer.py @@ -0,0 +1,242 @@ +from typing import Iterable, List, Optional, Union + +import lightning.pytorch as pl +import torch +import math +import copy +from torch.optim import Adam + +from lightning import Callback, Trainer +from lightning.fabric.accelerators.cuda import num_cuda_devices +from lightning.pytorch.accelerators import Accelerator +from lightning.pytorch.core.datamodule import LightningDataModule +from lightning.pytorch.loggers import Logger +from lightning.pytorch.strategies import DDPStrategy, Strategy +from lightning.pytorch.utilities.types import EVAL_DATALOADERS, TRAIN_DATALOADERS +from rl4co import utils +import random +log = utils.get_pylogger(__name__) + + +class MetaModelCallback(Callback): + def __init__(self, meta_params, print_log=True): + super().__init__() + self.meta_params = meta_params + assert meta_params["meta_method"] == 'reptile', NotImplementedError + assert meta_params["data_type"] == 'size', NotImplementedError + self.print_log = print_log + + def on_fit_start(self, trainer: "pl.Trainer", pl_module: "pl.LightningModule") -> None: + + # Initialize some hyperparameters + self.alpha = self.meta_params["alpha"] + self.alpha_decay = self.meta_params["alpha_decay"] + self.sch_bar = self.meta_params["sch_bar"] + self.task_set = [(n,) for n in range(self.meta_params["min_size"], self.meta_params["max_size"] + 1)] + + # Sample a batch of tasks + self._sample_task() + self.selected_tasks[0] = (pl_module.env.generator.num_loc, ) + + def on_train_epoch_start(self, trainer: "pl.Trainer", pl_module: "pl.LightningModule") -> None: + + # Alpha scheduler (decay for the update of meta model) + self._alpha_scheduler() + + # Reinitialize the task model with the parameters of the meta model + if trainer.current_epoch % self.meta_params['B'] == 0: # Save the meta model + self.meta_model_state_dict = copy.deepcopy(pl_module.state_dict()) + self.task_models = [] + # Print sampled tasks + if self.print_log: + print('\n>> Meta epoch: {} (Exact epoch: {}), Training task: {}'.format(trainer.current_epoch//self.meta_params['B'], trainer.current_epoch, self.selected_tasks)) + else: + pl_module.load_state_dict(self.meta_model_state_dict) + + # Reinitialize the optimizer every epoch + lr_decay = 0.1 if trainer.current_epoch+1 == int(self.sch_bar * trainer.max_epochs) else 1 + old_lr = trainer.optimizers[0].param_groups[0]['lr'] + new_optimizer = Adam(pl_module.parameters(), lr=old_lr * lr_decay) + trainer.optimizers = [new_optimizer] + + # Print + if self.print_log: + print('\n>> Training task: {}, capacity: {}'.format(pl_module.env.generator.num_loc, pl_module.env.generator.capacity)) + + def on_train_epoch_end(self, trainer, pl_module): + + # Save the task model + self.task_models.append(copy.deepcopy(pl_module.state_dict())) + if (trainer.current_epoch+1) % self.meta_params['B'] == 0: + # Outer-loop optimization (update the meta model with the parameters of the task model) + with torch.no_grad(): + state_dict = {params_key: (self.meta_model_state_dict[params_key] + + self.alpha * torch.mean(torch.stack([fast_weight[params_key] - self.meta_model_state_dict[params_key] + for fast_weight in self.task_models], dim=0).float(), dim=0)) + for params_key in self.meta_model_state_dict} + pl_module.load_state_dict(state_dict) + + # Get ready for the next meta-training iteration + if (trainer.current_epoch + 1) % self.meta_params['B'] == 0: + # Sample a batch of tasks + self._sample_task() + + # Load new training task (Update the environment) + self._load_task(pl_module, task_idx = (trainer.current_epoch+1) % self.meta_params['B']) + + def _sample_task(self): + # Sample a batch of tasks + w, self.selected_tasks = [1.0] * self.meta_params['B'], [] + for b in range(self.meta_params['B']): + task_params = random.sample(self.task_set, 1)[0] + self.selected_tasks.append(task_params) + self.w = torch.softmax(torch.Tensor(w), dim=0) + + def _load_task(self, pl_module, task_idx=0): + # Load new training task (Update the environment) + task_params, task_w = self.selected_tasks[task_idx], self.w[task_idx].item() + task_capacity = math.ceil(30 + task_params[0] / 5) if task_params[0] >= 20 else 20 + pl_module.env.generator.num_loc = task_params[0] + pl_module.env.generator.capacity = task_capacity + + def _alpha_scheduler(self): + self.alpha = max(self.alpha * self.alpha_decay, 0.0001) + +class RL4COMetaTrainer(Trainer): + """Wrapper around Lightning Trainer, with some RL4CO magic for efficient training. + + Note: + The most important hyperparameter to use is `reload_dataloaders_every_n_epochs`. + This allows for datasets to be re-created on the run and distributed by Lightning across + devices on each epoch. Setting to a value different than 1 may lead to overfitting to a + specific (such as the initial) data distribution. + + Args: + accelerator: hardware accelerator to use. + callbacks: list of callbacks. + logger: logger (or iterable collection of loggers) for experiment tracking. + min_epochs: minimum number of training epochs. + max_epochs: maximum number of training epochs. + strategy: training strategy to use (if any), such as Distributed Data Parallel (DDP). + devices: number of devices to train on (int) or which GPUs to train on (list or str) applied per node. + gradient_clip_val: 0 means don't clip. Defaults to 1.0 for stability. + precision: allows for mixed precision training. Can be specified as a string (e.g., '16'). + This also allows to use `FlashAttention` by default. + disable_profiling_executor: Disable JIT profiling executor. This reduces memory and increases speed. + auto_configure_ddp: Automatically configure DDP strategy if multiple GPUs are available. + reload_dataloaders_every_n_epochs: Set to a value different than 1 to reload dataloaders every n epochs. + matmul_precision: Set matmul precision for faster inference https://pytorch.org/docs/stable/generated/torch.set_float32_matmul_precision.html#torch.set_float32_matmul_precision + **kwargs: Additional keyword arguments passed to the Lightning Trainer. See :class:`lightning.pytorch.trainer.Trainer` for details. + """ + + def __init__( + self, + accelerator: Union[str, Accelerator] = "auto", + callbacks: Optional[List[Callback]] = None, + logger: Optional[Union[Logger, Iterable[Logger]]] = None, + min_epochs: Optional[int] = None, + max_epochs: Optional[int] = None, + strategy: Union[str, Strategy] = "auto", + devices: Union[List[int], str, int] = "auto", + gradient_clip_val: Union[int, float] = 1.0, + precision: Union[str, int] = "16-mixed", + reload_dataloaders_every_n_epochs: int = 1, + disable_profiling_executor: bool = True, + auto_configure_ddp: bool = True, + matmul_precision: Union[str, int] = "medium", + **kwargs, + ): + # Disable JIT profiling executor. This reduces memory and increases speed. + # Reference: https://github.com/HazyResearch/safari/blob/111d2726e7e2b8d57726b7a8b932ad8a4b2ad660/train.py#LL124-L129C17 + if disable_profiling_executor: + try: + torch._C._jit_set_profiling_executor(False) + torch._C._jit_set_profiling_mode(False) + except AttributeError: + pass + + # Configure DDP automatically if multiple GPUs are available + if auto_configure_ddp and strategy == "auto": + if devices == "auto": + n_devices = num_cuda_devices() + elif isinstance(devices, Iterable): + n_devices = len(devices) + else: + n_devices = devices + if n_devices > 1: + log.info( + "Configuring DDP strategy automatically with {} GPUs".format( + n_devices + ) + ) + strategy = DDPStrategy( + find_unused_parameters=True, # We set to True due to RL envs + gradient_as_bucket_view=True, # https://pytorch-lightning.readthedocs.io/en/stable/advanced/advanced_gpu.html#ddp-optimizations + ) + + # Set matmul precision for faster inference https://pytorch.org/docs/stable/generated/torch.set_float32_matmul_precision.html#torch.set_float32_matmul_precision + if matmul_precision is not None: + torch.set_float32_matmul_precision(matmul_precision) + + # Check if gradient_clip_val is set to None + if gradient_clip_val is None: + log.warning( + "gradient_clip_val is set to None. This may lead to unstable training." + ) + + # We should reload dataloaders every epoch for RL training + if reload_dataloaders_every_n_epochs != 1: + log.warning( + "We reload dataloaders every epoch for RL training. Setting reload_dataloaders_every_n_epochs to a value different than 1 " + + "may lead to unexpected behavior since the initial conditions will be the same for `n_epochs` epochs." + ) + + # Main call to `Trainer` superclass + super().__init__( + accelerator=accelerator, + callbacks=callbacks, + logger=logger, + min_epochs=min_epochs, + max_epochs=max_epochs, + strategy=strategy, + gradient_clip_val=gradient_clip_val, + devices=devices, + precision=precision, + reload_dataloaders_every_n_epochs=reload_dataloaders_every_n_epochs, + **kwargs, + ) + + def fit( + self, + model: "pl.LightningModule", + train_dataloaders: Optional[Union[TRAIN_DATALOADERS, LightningDataModule]] = None, + val_dataloaders: Optional[EVAL_DATALOADERS] = None, + datamodule: Optional[LightningDataModule] = None, + ckpt_path: Optional[str] = None, + ) -> None: + """ + We override the `fit` method to automatically apply and handle RL4CO magic + to 'self.automatic_optimization = False' models, such as PPO + + It behaves exactly like the original `fit` method, but with the following changes: + - if the given model is 'self.automatic_optimization = False', we override 'gradient_clip_val' as None + """ + + if not model.automatic_optimization: + if self.gradient_clip_val is not None: + log.warning( + "Overriding gradient_clip_val to None for 'automatic_optimization=False' models" + ) + self.gradient_clip_val = None + + # Fit (Inner-loop Optimization) + super().fit( + model=model, + train_dataloaders=train_dataloaders, + val_dataloaders=val_dataloaders, + datamodule=datamodule, + ckpt_path=ckpt_path, + ) + + + From 5cbe7b9cee1574b74c00e4624fd4d1141cce4e38 Mon Sep 17 00:00:00 2001 From: jieyibi Date: Mon, 27 May 2024 23:12:19 +0800 Subject: [PATCH 012/102] Update meta trainer --- examples/2d-meta_train.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/examples/2d-meta_train.py b/examples/2d-meta_train.py index 2e79c6f8..f0b8c59b 100644 --- a/examples/2d-meta_train.py +++ b/examples/2d-meta_train.py @@ -1,6 +1,3 @@ -import sys -sys.path.append("/home/jieyi/rl4co") - import pytz import torch From 05e0870898f7ff3d3c97b1062b5f91e710e4e0be Mon Sep 17 00:00:00 2001 From: jieyibi Date: Mon, 27 May 2024 23:31:07 +0800 Subject: [PATCH 013/102] Add source --- rl4co/utils/meta_trainer.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/rl4co/utils/meta_trainer.py b/rl4co/utils/meta_trainer.py index 0d45ccff..9c8fe3ff 100644 --- a/rl4co/utils/meta_trainer.py +++ b/rl4co/utils/meta_trainer.py @@ -105,6 +105,9 @@ def _alpha_scheduler(self): class RL4COMetaTrainer(Trainer): """Wrapper around Lightning Trainer, with some RL4CO magic for efficient training. + # Meta training framework for addressing the generalization issue + # Based on Zhou et al. (2023): https://arxiv.org/abs/2305.19587 + Note: The most important hyperparameter to use is `reload_dataloaders_every_n_epochs`. This allows for datasets to be re-created on the run and distributed by Lightning across From e8435c613bd651dc68e7ec4356947f004aa2bca6 Mon Sep 17 00:00:00 2001 From: jieyibi Date: Tue, 28 May 2024 15:09:55 +0800 Subject: [PATCH 014/102] Update Reptile callbacks --- examples/2d-meta_train.py | 19 ++-- rl4co/utils/__init__.py | 1 - rl4co/utils/meta_trainer.py | 171 +++--------------------------------- 3 files changed, 20 insertions(+), 171 deletions(-) diff --git a/examples/2d-meta_train.py b/examples/2d-meta_train.py index f0b8c59b..2de9b629 100644 --- a/examples/2d-meta_train.py +++ b/examples/2d-meta_train.py @@ -1,14 +1,11 @@ -import pytz -import torch - -from datetime import datetime from lightning.pytorch.callbacks import ModelCheckpoint, RichModelSummary from lightning.pytorch.loggers import WandbLogger from rl4co.envs import CVRPEnv from rl4co.models.zoo.am import AttentionModelPolicy from rl4co.models.zoo.pomo import POMO -from rl4co.utils.meta_trainer import RL4COMetaTrainer, MetaModelCallback +from rl4co.utils.trainer import RL4COTrainer +from rl4co.utils.meta_trainer import ReptileCallback def main(): # Set device @@ -34,7 +31,6 @@ def main(): train_data_size=64 * 50, # each epoch val_data_size=0, optimizer_kwargs={"lr": 1e-4, "weight_decay": 1e-6}, - # for the task scheduler of size setting, where sch_epoch = 0.9 * epochs ) # Example callbacks @@ -47,10 +43,10 @@ def main(): mode="max", # maximize validation reward ) rich_model_summary = RichModelSummary(max_depth=3) # model summary callback + # Meta callbacks - meta_callback = MetaModelCallback( + meta_callback = ReptileCallback( meta_params={ - 'meta_method': 'reptile', # choose from ['maml', 'fomaml', 'maml_fomaml', 'reptile'] 'data_type': 'size', # choose from ["size", "distribution", "size_distribution"] 'sch_bar': 0.9, # for the task scheduler of size setting, where sch_epoch = sch_bar * epochs 'B': 1, # the number of tasks in a mini-batch @@ -64,13 +60,12 @@ def main(): callbacks = [meta_callback, checkpoint_callback, rich_model_summary] # Logger - process_start_time = datetime.now(pytz.timezone("Asia/Singapore")) - logger = WandbLogger(project="rl4co", name=f"{env.name}_{process_start_time.strftime('%Y%m%d_%H%M%S')}") + logger = WandbLogger(project="rl4co", name=f"{env.name}_pomo_reptile") # logger = None # uncomment this line if you don't want logging # Adjust your trainer to the number of epochs you want to run - trainer = RL4COMetaTrainer( - max_epochs=20000, # (the number of meta-model updates) * (the number of tasks in a mini-batch) + trainer = RL4COTrainer( + max_epochs=20000, # (the number of meta_model updates) * (the number of tasks in a mini-batch) callbacks=callbacks, accelerator="gpu", devices=[device_id], diff --git a/rl4co/utils/__init__.py b/rl4co/utils/__init__.py index 638f3149..4b0246aa 100644 --- a/rl4co/utils/__init__.py +++ b/rl4co/utils/__init__.py @@ -2,7 +2,6 @@ from rl4co.utils.pylogger import get_pylogger from rl4co.utils.rich_utils import enforce_tags, print_config_tree from rl4co.utils.trainer import RL4COTrainer -from rl4co.utils.meta_trainer import RL4COMetaTrainer from rl4co.utils.utils import ( extras, get_metric_value, diff --git a/rl4co/utils/meta_trainer.py b/rl4co/utils/meta_trainer.py index 9c8fe3ff..ada6e894 100644 --- a/rl4co/utils/meta_trainer.py +++ b/rl4co/utils/meta_trainer.py @@ -1,44 +1,40 @@ -from typing import Iterable, List, Optional, Union - import lightning.pytorch as pl import torch import math import copy from torch.optim import Adam -from lightning import Callback, Trainer -from lightning.fabric.accelerators.cuda import num_cuda_devices -from lightning.pytorch.accelerators import Accelerator -from lightning.pytorch.core.datamodule import LightningDataModule -from lightning.pytorch.loggers import Logger -from lightning.pytorch.strategies import DDPStrategy, Strategy -from lightning.pytorch.utilities.types import EVAL_DATALOADERS, TRAIN_DATALOADERS +from lightning import Callback from rl4co import utils import random log = utils.get_pylogger(__name__) -class MetaModelCallback(Callback): +class ReptileCallback(Callback): + + # Meta training framework for addressing the generalization issue + # Based on Zhou et al. (2023): https://arxiv.org/abs/2305.19587 def __init__(self, meta_params, print_log=True): super().__init__() self.meta_params = meta_params - assert meta_params["meta_method"] == 'reptile', NotImplementedError - assert meta_params["data_type"] == 'size', NotImplementedError self.print_log = print_log - def on_fit_start(self, trainer: "pl.Trainer", pl_module: "pl.LightningModule") -> None: + def on_fit_start(self, trainer: pl.Trainer, pl_module: pl.LightningModule) -> None: # Initialize some hyperparameters self.alpha = self.meta_params["alpha"] self.alpha_decay = self.meta_params["alpha_decay"] self.sch_bar = self.meta_params["sch_bar"] - self.task_set = [(n,) for n in range(self.meta_params["min_size"], self.meta_params["max_size"] + 1)] + if self.meta_params["data_type"] == "size": + self.task_set = [(n,) for n in range(self.meta_params["min_size"], self.meta_params["max_size"] + 1)] + else: + raise NotImplementedError # Sample a batch of tasks self._sample_task() self.selected_tasks[0] = (pl_module.env.generator.num_loc, ) - def on_train_epoch_start(self, trainer: "pl.Trainer", pl_module: "pl.LightningModule") -> None: + def on_train_epoch_start(self, trainer: pl.Trainer, pl_module: pl.LightningModule) -> None: # Alpha scheduler (decay for the update of meta model) self._alpha_scheduler() @@ -63,7 +59,7 @@ def on_train_epoch_start(self, trainer: "pl.Trainer", pl_module: "pl.LightningMo if self.print_log: print('\n>> Training task: {}, capacity: {}'.format(pl_module.env.generator.num_loc, pl_module.env.generator.capacity)) - def on_train_epoch_end(self, trainer, pl_module): + def on_train_epoch_end(self, trainer: pl.Trainer, pl_module: pl.LightningModule): # Save the task model self.task_models.append(copy.deepcopy(pl_module.state_dict())) @@ -92,7 +88,7 @@ def _sample_task(self): self.selected_tasks.append(task_params) self.w = torch.softmax(torch.Tensor(w), dim=0) - def _load_task(self, pl_module, task_idx=0): + def _load_task(self, pl_module: pl.LightningModule, task_idx=0): # Load new training task (Update the environment) task_params, task_w = self.selected_tasks[task_idx], self.w[task_idx].item() task_capacity = math.ceil(30 + task_params[0] / 5) if task_params[0] >= 20 else 20 @@ -102,144 +98,3 @@ def _load_task(self, pl_module, task_idx=0): def _alpha_scheduler(self): self.alpha = max(self.alpha * self.alpha_decay, 0.0001) -class RL4COMetaTrainer(Trainer): - """Wrapper around Lightning Trainer, with some RL4CO magic for efficient training. - - # Meta training framework for addressing the generalization issue - # Based on Zhou et al. (2023): https://arxiv.org/abs/2305.19587 - - Note: - The most important hyperparameter to use is `reload_dataloaders_every_n_epochs`. - This allows for datasets to be re-created on the run and distributed by Lightning across - devices on each epoch. Setting to a value different than 1 may lead to overfitting to a - specific (such as the initial) data distribution. - - Args: - accelerator: hardware accelerator to use. - callbacks: list of callbacks. - logger: logger (or iterable collection of loggers) for experiment tracking. - min_epochs: minimum number of training epochs. - max_epochs: maximum number of training epochs. - strategy: training strategy to use (if any), such as Distributed Data Parallel (DDP). - devices: number of devices to train on (int) or which GPUs to train on (list or str) applied per node. - gradient_clip_val: 0 means don't clip. Defaults to 1.0 for stability. - precision: allows for mixed precision training. Can be specified as a string (e.g., '16'). - This also allows to use `FlashAttention` by default. - disable_profiling_executor: Disable JIT profiling executor. This reduces memory and increases speed. - auto_configure_ddp: Automatically configure DDP strategy if multiple GPUs are available. - reload_dataloaders_every_n_epochs: Set to a value different than 1 to reload dataloaders every n epochs. - matmul_precision: Set matmul precision for faster inference https://pytorch.org/docs/stable/generated/torch.set_float32_matmul_precision.html#torch.set_float32_matmul_precision - **kwargs: Additional keyword arguments passed to the Lightning Trainer. See :class:`lightning.pytorch.trainer.Trainer` for details. - """ - - def __init__( - self, - accelerator: Union[str, Accelerator] = "auto", - callbacks: Optional[List[Callback]] = None, - logger: Optional[Union[Logger, Iterable[Logger]]] = None, - min_epochs: Optional[int] = None, - max_epochs: Optional[int] = None, - strategy: Union[str, Strategy] = "auto", - devices: Union[List[int], str, int] = "auto", - gradient_clip_val: Union[int, float] = 1.0, - precision: Union[str, int] = "16-mixed", - reload_dataloaders_every_n_epochs: int = 1, - disable_profiling_executor: bool = True, - auto_configure_ddp: bool = True, - matmul_precision: Union[str, int] = "medium", - **kwargs, - ): - # Disable JIT profiling executor. This reduces memory and increases speed. - # Reference: https://github.com/HazyResearch/safari/blob/111d2726e7e2b8d57726b7a8b932ad8a4b2ad660/train.py#LL124-L129C17 - if disable_profiling_executor: - try: - torch._C._jit_set_profiling_executor(False) - torch._C._jit_set_profiling_mode(False) - except AttributeError: - pass - - # Configure DDP automatically if multiple GPUs are available - if auto_configure_ddp and strategy == "auto": - if devices == "auto": - n_devices = num_cuda_devices() - elif isinstance(devices, Iterable): - n_devices = len(devices) - else: - n_devices = devices - if n_devices > 1: - log.info( - "Configuring DDP strategy automatically with {} GPUs".format( - n_devices - ) - ) - strategy = DDPStrategy( - find_unused_parameters=True, # We set to True due to RL envs - gradient_as_bucket_view=True, # https://pytorch-lightning.readthedocs.io/en/stable/advanced/advanced_gpu.html#ddp-optimizations - ) - - # Set matmul precision for faster inference https://pytorch.org/docs/stable/generated/torch.set_float32_matmul_precision.html#torch.set_float32_matmul_precision - if matmul_precision is not None: - torch.set_float32_matmul_precision(matmul_precision) - - # Check if gradient_clip_val is set to None - if gradient_clip_val is None: - log.warning( - "gradient_clip_val is set to None. This may lead to unstable training." - ) - - # We should reload dataloaders every epoch for RL training - if reload_dataloaders_every_n_epochs != 1: - log.warning( - "We reload dataloaders every epoch for RL training. Setting reload_dataloaders_every_n_epochs to a value different than 1 " - + "may lead to unexpected behavior since the initial conditions will be the same for `n_epochs` epochs." - ) - - # Main call to `Trainer` superclass - super().__init__( - accelerator=accelerator, - callbacks=callbacks, - logger=logger, - min_epochs=min_epochs, - max_epochs=max_epochs, - strategy=strategy, - gradient_clip_val=gradient_clip_val, - devices=devices, - precision=precision, - reload_dataloaders_every_n_epochs=reload_dataloaders_every_n_epochs, - **kwargs, - ) - - def fit( - self, - model: "pl.LightningModule", - train_dataloaders: Optional[Union[TRAIN_DATALOADERS, LightningDataModule]] = None, - val_dataloaders: Optional[EVAL_DATALOADERS] = None, - datamodule: Optional[LightningDataModule] = None, - ckpt_path: Optional[str] = None, - ) -> None: - """ - We override the `fit` method to automatically apply and handle RL4CO magic - to 'self.automatic_optimization = False' models, such as PPO - - It behaves exactly like the original `fit` method, but with the following changes: - - if the given model is 'self.automatic_optimization = False', we override 'gradient_clip_val' as None - """ - - if not model.automatic_optimization: - if self.gradient_clip_val is not None: - log.warning( - "Overriding gradient_clip_val to None for 'automatic_optimization=False' models" - ) - self.gradient_clip_val = None - - # Fit (Inner-loop Optimization) - super().fit( - model=model, - train_dataloaders=train_dataloaders, - val_dataloaders=val_dataloaders, - datamodule=datamodule, - ckpt_path=ckpt_path, - ) - - - From bff31a998fe3dbae36e20d8fcd2107434cd7dcd8 Mon Sep 17 00:00:00 2001 From: jieyibi Date: Tue, 28 May 2024 15:45:02 +0800 Subject: [PATCH 015/102] Add test --- tests/test_training.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/tests/test_training.py b/tests/test_training.py index 1e94a813..62c3c4eb 100644 --- a/tests/test_training.py +++ b/tests/test_training.py @@ -16,8 +16,10 @@ MatNet, NARGNNPolicy, SymNCO, + POMO ) from rl4co.utils import RL4COTrainer +from rl4co.utils.meta_trainer import ReptileCallback # Get env variable MAC_OS_GITHUB_RUNNER if "MAC_OS_GITHUB_RUNNER" in os.environ: @@ -115,6 +117,19 @@ def test_mdam(): trainer.fit(model) trainer.test(model) +def test_pomo_reptile(): + env = TSPEnv(generator_params=dict(num_loc=20)) + policy = AttentionModelPolicy(env_name=env.name, embed_dim=128, + num_encoder_layers=6, num_heads=8, + normalization="instance", use_graph_context=False) + model = POMO(env, policy, batch_size=5, train_data_size=5*3, val_data_size=10) + meta_callback = ReptileCallback( + meta_params={'data_type': 'size', 'sch_bar': 0.9, 'B': 2, 'alpha': 0.99, + 'alpha_decay': 0.999, 'min_size': 20, 'max_size': 50} + ) + trainer = RL4COTrainer(max_epochs=2, callbacks=[meta_callback], devices=1, accelerator=accelerator, limit_train_batches=3) + trainer.fit(model) + trainer.test(model) @pytest.mark.parametrize("SearchMethod", [ActiveSearch, EASEmb, EASLay]) def test_search_methods(SearchMethod): From 0f4032c4f783de90563044060cf1ca03cce6c61c Mon Sep 17 00:00:00 2001 From: jieyibi Date: Tue, 28 May 2024 19:29:20 +0800 Subject: [PATCH 016/102] Update meta learning framework --- examples/2d-meta_train.py | 16 +++++------ rl4co/utils/meta_trainer.py | 53 ++++++++++++++++++++++--------------- tests/test_training.py | 6 ++--- 3 files changed, 42 insertions(+), 33 deletions(-) diff --git a/examples/2d-meta_train.py b/examples/2d-meta_train.py index 2de9b629..b375f7be 100644 --- a/examples/2d-meta_train.py +++ b/examples/2d-meta_train.py @@ -46,15 +46,13 @@ def main(): # Meta callbacks meta_callback = ReptileCallback( - meta_params={ - 'data_type': 'size', # choose from ["size", "distribution", "size_distribution"] - 'sch_bar': 0.9, # for the task scheduler of size setting, where sch_epoch = sch_bar * epochs - 'B': 1, # the number of tasks in a mini-batch - 'alpha': 0.99, # params for the outer-loop optimization of reptile - 'alpha_decay': 0.999, # params for the outer-loop optimization of reptile - 'min_size': 20, # minimum of sampled size in meta tasks - 'max_size': 150, # maximum of sampled size in meta tasks - }, + num_tasks = 1, # the number of tasks in a mini-batch + alpha = 0.99, # params for the outer-loop optimization of reptile + alpha_decay = 0.999, # params for the outer-loop optimization of reptile + min_size = 20, # minimum of sampled size in meta tasks + max_size= 150, # maximum of sampled size in meta tasks + data_type="size", # choose from ["size", "distribution", "size_distribution"] + sch_bar=0.9, # for the task scheduler of size setting, where sch_epoch = sch_bar * epochs print_log=True # whether to print the sampled tasks in each meta iteration ) callbacks = [meta_callback, checkpoint_callback, rich_model_summary] diff --git a/rl4co/utils/meta_trainer.py b/rl4co/utils/meta_trainer.py index ada6e894..2b6425bd 100644 --- a/rl4co/utils/meta_trainer.py +++ b/rl4co/utils/meta_trainer.py @@ -14,22 +14,29 @@ class ReptileCallback(Callback): # Meta training framework for addressing the generalization issue # Based on Zhou et al. (2023): https://arxiv.org/abs/2305.19587 - def __init__(self, meta_params, print_log=True): + def __init__(self, + num_tasks, + alpha, + alpha_decay, + min_size, + max_size, + sch_bar = 0.9, + data_type = "size", + print_log=True): super().__init__() - self.meta_params = meta_params - self.print_log = print_log - - def on_fit_start(self, trainer: pl.Trainer, pl_module: pl.LightningModule) -> None: - # Initialize some hyperparameters - self.alpha = self.meta_params["alpha"] - self.alpha_decay = self.meta_params["alpha_decay"] - self.sch_bar = self.meta_params["sch_bar"] - if self.meta_params["data_type"] == "size": - self.task_set = [(n,) for n in range(self.meta_params["min_size"], self.meta_params["max_size"] + 1)] + self.num_tasks = num_tasks # i.e., B in the paper + self.alpha = alpha + self.alpha_decay = alpha_decay + self.sch_bar = sch_bar + self.print_log = print_log + if data_type == "size": + self.task_set = [(n,) for n in range(min_size, max_size + 1)] else: raise NotImplementedError + def on_fit_start(self, trainer: pl.Trainer, pl_module: pl.LightningModule) -> None: + # Sample a batch of tasks self._sample_task() self.selected_tasks[0] = (pl_module.env.generator.num_loc, ) @@ -40,12 +47,12 @@ def on_train_epoch_start(self, trainer: pl.Trainer, pl_module: pl.LightningModul self._alpha_scheduler() # Reinitialize the task model with the parameters of the meta model - if trainer.current_epoch % self.meta_params['B'] == 0: # Save the meta model + if trainer.current_epoch % self.num_tasks == 0: # Save the meta model self.meta_model_state_dict = copy.deepcopy(pl_module.state_dict()) self.task_models = [] # Print sampled tasks if self.print_log: - print('\n>> Meta epoch: {} (Exact epoch: {}), Training task: {}'.format(trainer.current_epoch//self.meta_params['B'], trainer.current_epoch, self.selected_tasks)) + print('\n>> Meta epoch: {} (Exact epoch: {}), Training task: {}'.format(trainer.current_epoch//self.num_tasks, trainer.current_epoch, self.selected_tasks)) else: pl_module.load_state_dict(self.meta_model_state_dict) @@ -57,13 +64,16 @@ def on_train_epoch_start(self, trainer: pl.Trainer, pl_module: pl.LightningModul # Print if self.print_log: - print('\n>> Training task: {}, capacity: {}'.format(pl_module.env.generator.num_loc, pl_module.env.generator.capacity)) + if hasattr(pl_module.env.generator, 'capacity'): + print('\n>> Training task: {}, capacity: {}'.format(pl_module.env.generator.num_loc, pl_module.env.generator.capacity)) + else: + print('\n>> Training task: {}'.format(pl_module.env.generator.num_loc)) def on_train_epoch_end(self, trainer: pl.Trainer, pl_module: pl.LightningModule): # Save the task model self.task_models.append(copy.deepcopy(pl_module.state_dict())) - if (trainer.current_epoch+1) % self.meta_params['B'] == 0: + if (trainer.current_epoch+1) % self.num_tasks == 0: # Outer-loop optimization (update the meta model with the parameters of the task model) with torch.no_grad(): state_dict = {params_key: (self.meta_model_state_dict[params_key] + @@ -73,17 +83,17 @@ def on_train_epoch_end(self, trainer: pl.Trainer, pl_module: pl.LightningModule pl_module.load_state_dict(state_dict) # Get ready for the next meta-training iteration - if (trainer.current_epoch + 1) % self.meta_params['B'] == 0: + if (trainer.current_epoch + 1) % self.num_tasks == 0: # Sample a batch of tasks self._sample_task() # Load new training task (Update the environment) - self._load_task(pl_module, task_idx = (trainer.current_epoch+1) % self.meta_params['B']) + self._load_task(pl_module, task_idx = (trainer.current_epoch+1) % self.num_tasks) def _sample_task(self): # Sample a batch of tasks - w, self.selected_tasks = [1.0] * self.meta_params['B'], [] - for b in range(self.meta_params['B']): + w, self.selected_tasks = [1.0] * self.num_tasks, [] + for b in range(self.num_tasks): task_params = random.sample(self.task_set, 1)[0] self.selected_tasks.append(task_params) self.w = torch.softmax(torch.Tensor(w), dim=0) @@ -91,9 +101,10 @@ def _sample_task(self): def _load_task(self, pl_module: pl.LightningModule, task_idx=0): # Load new training task (Update the environment) task_params, task_w = self.selected_tasks[task_idx], self.w[task_idx].item() - task_capacity = math.ceil(30 + task_params[0] / 5) if task_params[0] >= 20 else 20 pl_module.env.generator.num_loc = task_params[0] - pl_module.env.generator.capacity = task_capacity + if hasattr(pl_module.env.generator, 'capacity'): + task_capacity = math.ceil(30 + task_params[0] / 5) if task_params[0] >= 20 else 20 + pl_module.env.generator.capacity = task_capacity def _alpha_scheduler(self): self.alpha = max(self.alpha * self.alpha_decay, 0.0001) diff --git a/tests/test_training.py b/tests/test_training.py index 62c3c4eb..1d92e6b2 100644 --- a/tests/test_training.py +++ b/tests/test_training.py @@ -122,10 +122,10 @@ def test_pomo_reptile(): policy = AttentionModelPolicy(env_name=env.name, embed_dim=128, num_encoder_layers=6, num_heads=8, normalization="instance", use_graph_context=False) - model = POMO(env, policy, batch_size=5, train_data_size=5*3, val_data_size=10) + model = POMO(env, policy, batch_size=5, train_data_size=5*3, val_data_size=10, test_data_size=10) meta_callback = ReptileCallback( - meta_params={'data_type': 'size', 'sch_bar': 0.9, 'B': 2, 'alpha': 0.99, - 'alpha_decay': 0.999, 'min_size': 20, 'max_size': 50} + data_type="size", sch_bar=0.9, num_tasks=2, alpha = 0.99, + alpha_decay = 0.999, min_size = 20, max_size =50 ) trainer = RL4COTrainer(max_epochs=2, callbacks=[meta_callback], devices=1, accelerator=accelerator, limit_train_batches=3) trainer.fit(model) From 73d7a65df8a7d27d8548cee9ca95ab0723130fee Mon Sep 17 00:00:00 2001 From: jieyibi Date: Wed, 29 May 2024 21:14:33 +0800 Subject: [PATCH 017/102] Add support for cross-distribution generalization --- examples/2d-meta_train.py | 19 +-- rl4co/envs/common/distribution_utils.py | 184 ++++++++++++++++++++++++ rl4co/envs/common/utils.py | 9 +- rl4co/utils/meta_trainer.py | 109 ++++++++++---- 4 files changed, 287 insertions(+), 34 deletions(-) create mode 100644 rl4co/envs/common/distribution_utils.py diff --git a/examples/2d-meta_train.py b/examples/2d-meta_train.py index b375f7be..245ae9a2 100644 --- a/examples/2d-meta_train.py +++ b/examples/2d-meta_train.py @@ -1,3 +1,6 @@ +import sys +sys.path.append("/home/jieyi/rl4co") + from lightning.pytorch.callbacks import ModelCheckpoint, RichModelSummary from lightning.pytorch.loggers import WandbLogger @@ -9,7 +12,7 @@ def main(): # Set device - device_id = 0 + device_id = 1 # RL4CO env based on TorchRL env = CVRPEnv(generator_params={'num_loc': 50}) @@ -46,13 +49,13 @@ def main(): # Meta callbacks meta_callback = ReptileCallback( - num_tasks = 1, # the number of tasks in a mini-batch - alpha = 0.99, # params for the outer-loop optimization of reptile - alpha_decay = 0.999, # params for the outer-loop optimization of reptile - min_size = 20, # minimum of sampled size in meta tasks - max_size= 150, # maximum of sampled size in meta tasks - data_type="size", # choose from ["size", "distribution", "size_distribution"] - sch_bar=0.9, # for the task scheduler of size setting, where sch_epoch = sch_bar * epochs + num_tasks = 1, # the number of tasks in a mini-batch, i.e. `B` in the original paper + alpha = 0.99, # initial weight of the task model for the outer-loop optimization of reptile + alpha_decay = 0.999, # weight decay of the task model for the outer-loop optimization of reptile + min_size = 20, # minimum of sampled size in meta tasks (only supported in cross-size generalization) + max_size= 150, # maximum of sampled size in meta tasks (only supported in cross-size generalization) + data_type="size_distribution", # choose from ["size", "distribution", "size_distribution"] + sch_bar=0.9, # for the task scheduler of size setting, where lr_decay_epoch = sch_bar * epochs, i.e. after this epoch, learning rate will decay with a weight 0.1 print_log=True # whether to print the sampled tasks in each meta iteration ) callbacks = [meta_callback, checkpoint_callback, rich_model_summary] diff --git a/rl4co/envs/common/distribution_utils.py b/rl4co/envs/common/distribution_utils.py new file mode 100644 index 00000000..d03e92b8 --- /dev/null +++ b/rl4co/envs/common/distribution_utils.py @@ -0,0 +1,184 @@ +import torch + +class Cluster(): + + """ + Multiple gaussian distributed clusters, as in the Solomon benchmark dataset + Following the setting in Bi et al. 2022 (https://arxiv.org/abs/2210.07686) + + Args: + n_cluster: Number of the gaussian distributed clusters + """ + def __init__(self, n_cluster: int = 3): + super().__init__() + self.lower, self.upper = 0.2, 0.8 + self.std = 0.07 + self.n_cluster = n_cluster + def sample(self, size): + + batch_size, num_loc, _ = size + + # Generate the centers of the clusters + center = self.lower + (self.upper - self.lower) * torch.rand(batch_size, self.n_cluster * 2) + + # Pre-define the coordinates + coords = torch.zeros(batch_size, num_loc, 2) + + # Calculate the size of each cluster + cluster_sizes = [num_loc // self.n_cluster] * self.n_cluster + for i in range(num_loc % self.n_cluster): + cluster_sizes[i] += 1 + + # Generate the coordinates + current_index = 0 + for i in range(self.n_cluster): + means = center[:, i * 2:(i + 1) * 2] + stds = torch.full((batch_size, 2), self.std) + points = torch.normal(means.unsqueeze(1).expand(-1, cluster_sizes[i], -1), + stds.unsqueeze(1).expand(-1, cluster_sizes[i], -1)) + coords[:, current_index:current_index + cluster_sizes[i], :] = points + current_index += cluster_sizes[i] + + # Confine the coordinates to range [0, 1] + coords.clamp_(0, 1) + + return coords + +class Mixed(): + + """ + 50% nodes sampled from uniform distribution, 50% nodes sampled from gaussian distribution, as in the Solomon benchmark dataset + Following the setting in Bi et al. 2022 (https://arxiv.org/abs/2210.07686) + + Args: + n_cluster_mix: Number of the gaussian distributed clusters + """ + + def __init__(self, n_cluster_mix=1): + super().__init__() + self.lower, self.upper = 0.2, 0.8 + self.std = 0.07 + self.n_cluster_mix = n_cluster_mix + def sample(self, size): + + batch_size, num_loc, _ = size + + # Generate the centers of the clusters + center = self.lower + (self.upper - self.lower) * torch.rand(batch_size, self.n_cluster_mix * 2) + + # Pre-define the coordinates sampled under uniform distribution + coords = torch.FloatTensor(batch_size, num_loc, 2).uniform_(0, 1) + + # Sample mutated index (default setting: 50% mutation) + mutate_idx = torch.stack([torch.randperm(num_loc)[:num_loc // 2] for _ in range(batch_size)]) + + # Generate the coordinates + segment_size = num_loc // (2 * self.n_cluster_mix) + remaining_indices = num_loc // 2 - segment_size * (self.n_cluster_mix - 1) + sizes = [segment_size] * (self.n_cluster_mix - 1) + [remaining_indices] + for i in range(self.n_cluster_mix): + indices = mutate_idx[:, sum(sizes[:i]):sum(sizes[:i + 1])] + means_x = center[:, 2 * i].unsqueeze(1).expand(-1, sizes[i]) + means_y = center[:, 2 * i + 1].unsqueeze(1).expand(-1, sizes[i]) + coords.scatter_(1, indices.unsqueeze(-1).expand(-1, -1, 2), + torch.stack([ + torch.normal(means_x.expand(-1, sizes[i]), self.std), + torch.normal(means_y.expand(-1, sizes[i]), self.std) + ], dim=2)) + + # Confine the coordinates to range [0, 1] + coords.clamp_(0, 1) + + return coords + +class Gaussian_Mixture(): + ''' + Following Zhou et al. (2023): https://arxiv.org/abs/2305.19587 + + Args: + num_modes: the number of clusters/modes in the Gaussian Mixture. + cdist: scale of the uniform distribution for center generation. + ''' + def __init__(self, num_modes: int = 0, cdist: int = 0): + super().__init__() + self.num_modes = num_modes + self.cdist = cdist + + def sample(self, size): + + batch_size, num_loc, _ = size + + if self.num_modes == 0: # (0, 0) - uniform + return torch.rand((batch_size, num_loc, 2)) + elif self.num_modes == 1 and self.cdist == 1: # (1, 1) - gaussian + return self.generate_gaussian(batch_size, num_loc) + else: + res = [self.generate_gaussian_mixture(num_loc) for _ in range(batch_size)] + return torch.stack(res) + + def generate_gaussian_mixture(self, num_loc): + + """Following the setting in Zhang et al. 2022 (https://arxiv.org/abs/2204.03236)""" + + # Randomly decide how many points each mode gets + nums = torch.multinomial(input=torch.ones(self.num_modes) / self.num_modes, num_samples=num_loc, replacement=True) + + # Prepare to collect points + coords = torch.empty((0, 2)) + + # Generate points for each mode + for i in range(self.num_modes): + num = (nums == i).sum() # Number of points in this mode + if num > 0: + center = torch.rand((1, 2)) * self.cdist + cov = torch.eye(2) # Covariance matrix + nxy = torch.distributions.MultivariateNormal(center.squeeze(), covariance_matrix=cov).sample((num,)) + coords = torch.cat((coords, nxy), dim=0) + + return self._global_min_max_scaling(coords) + + def generate_gaussian(self, batch_size, num_loc): + + """Following the setting in Xin et al. 2022 (https://openreview.net/pdf?id=nJuzV-izmPJ)""" + + # Mean and random covariances + mean = torch.full((batch_size, num_loc, 2), 0.5) + covs = torch.rand(batch_size) # Random covariances between 0 and 1 + + # Generate the coordinates + coords = torch.zeros((batch_size, num_loc, 2)) + for i in range(batch_size): + # Construct covariance matrix for each sample + cov_matrix = torch.tensor([[1.0, covs[i]], [covs[i], 1.0]]) + m = torch.distributions.MultivariateNormal(mean[i], covariance_matrix=cov_matrix) + coords[i] = m.sample() + + # Shuffle the coordinates + indices = torch.randperm(coords.size(0)) + coords = coords[indices] + + return self._batch_normalize_and_center(coords) + + def _global_min_max_scaling(self, coords): + + # Scale the points to [0, 1] using min-max scaling + coords_min = coords.min(0, keepdim=True).values + coords_max = coords.max(0, keepdim=True).values + coords = (coords - coords_min) / (coords_max - coords_min) + + return coords + + def _batch_normalize_and_center(self, coords): + # Step 1: Compute min and max along each batch + coords_min = coords.min(dim=1, keepdim=True).values + coords_max = coords.max(dim=1, keepdim=True).values + + # Step 2: Normalize coordinates to range [0, 1] + coords = coords - coords_min # Broadcasting subtracts min value on each coordinate + range_max = (coords_max - coords_min).max(dim=-1, keepdim=True).values # The maximum range among both coordinates + coords = coords / range_max # Divide by the max range to normalize + + # Step 3: Center the batch in the middle of the [0, 1] range + coords = coords + (1 - coords.max(dim=1, keepdim=True).values) / 2 # Centering the batch + + return coords diff --git a/rl4co/envs/common/utils.py b/rl4co/envs/common/utils.py index 5d7612f7..ebaed856 100644 --- a/rl4co/envs/common/utils.py +++ b/rl4co/envs/common/utils.py @@ -6,7 +6,7 @@ from tensordict.tensordict import TensorDict from torch.distributions import Exponential, Normal, Poisson, Uniform - +from rl4co.envs.common.distribution_utils import Cluster, Mixed, Gaussian_Mixture class Generator(metaclass=abc.ABCMeta): """Base data generator class, to be called with `env.generator(batch_size)`""" @@ -76,6 +76,12 @@ def get_sampler( ) # todo: should be also `low, high` and any other corner elif isinstance(distribution, Callable): return distribution(**kwargs) + elif distribution == "gaussian_mixture": + return Gaussian_Mixture(num_modes=kwargs['num_modes'], cdist=kwargs['cdist']) + elif distribution == "cluster": + return Cluster(kwargs['n_cluster']) + elif distribution == "mixed": + return Mixed(kwargs['n_cluster_mix']) else: raise ValueError(f"Invalid distribution type of {distribution}") @@ -87,3 +93,4 @@ def batch_to_scalar(param): if isinstance(param, torch.Tensor): return param.item() return param + diff --git a/rl4co/utils/meta_trainer.py b/rl4co/utils/meta_trainer.py index 2b6425bd..ccd64352 100644 --- a/rl4co/utils/meta_trainer.py +++ b/rl4co/utils/meta_trainer.py @@ -12,34 +12,55 @@ class ReptileCallback(Callback): - # Meta training framework for addressing the generalization issue - # Based on Zhou et al. (2023): https://arxiv.org/abs/2305.19587 + """ Meta training framework for addressing the generalization issue (implement the Reptile algorithm only) + Based on Manchanda et al. 2022 (https://arxiv.org/abs/2206.00787) and Zhou et al. 2023 (https://arxiv.org/abs/2305.19587) + + Args: + - num_tasks: the number of tasks in a mini-batch, i.e. `B` in the original paper + - alpha: initial weight of the task model for the outer-loop optimization of reptile + - alpha_decay: weight decay of the task model for the outer-loop optimization of reptile + - min_size: minimum problem size of the task (only supported in cross-size generalization) + - max_size: maximum problem size of the task (only supported in cross-size generalization) + - sch_bar: for the task scheduler of size setting, where lr_decay_epoch = sch_bar * epochs, i.e. after this epoch, learning rate will decay with a weight 0.1 + - data_type: type of the tasks, chosen from ["size", "distribution", "size_distribution"] + - print_log: whether to print the specific task sampled in each inner-loop optimization + """ def __init__(self, - num_tasks, - alpha, - alpha_decay, - min_size, - max_size, - sch_bar = 0.9, - data_type = "size", - print_log=True): + num_tasks: int, + alpha: float, + alpha_decay: float, + min_size: int, + max_size: int, + sch_bar: float = 0.9, + data_type: str = "size", + print_log: bool =True): + super().__init__() - self.num_tasks = num_tasks # i.e., B in the paper + self.num_tasks = num_tasks self.alpha = alpha self.alpha_decay = alpha_decay self.sch_bar = sch_bar self.print_log = print_log - if data_type == "size": - self.task_set = [(n,) for n in range(min_size, max_size + 1)] - else: - raise NotImplementedError + self.data_type = data_type + self.task_set = self._generate_task_set(data_type, min_size, max_size) def on_fit_start(self, trainer: pl.Trainer, pl_module: pl.LightningModule) -> None: # Sample a batch of tasks self._sample_task() - self.selected_tasks[0] = (pl_module.env.generator.num_loc, ) + + # Pre-set the distribution + if self.data_type == "size_distribution": + pl_module.env.generator.loc_distribution = "gaussian_mixture" + self.selected_tasks[0] = (pl_module.env.generator.num_loc, 0, 0) + elif self.data_type == "size": + pl_module.env.generator.loc_distribution = "uniform" + self.selected_tasks[0] = (pl_module.env.generator.num_loc, ) + elif self.data_type == "distribution": + pl_module.env.generator.loc_distribution = "gaussian_mixture" + self.selected_tasks[0] = (0, 0) + self.task_params = self.selected_tasks[0] def on_train_epoch_start(self, trainer: pl.Trainer, pl_module: pl.LightningModule) -> None: @@ -65,9 +86,9 @@ def on_train_epoch_start(self, trainer: pl.Trainer, pl_module: pl.LightningModul # Print if self.print_log: if hasattr(pl_module.env.generator, 'capacity'): - print('\n>> Training task: {}, capacity: {}'.format(pl_module.env.generator.num_loc, pl_module.env.generator.capacity)) + print('>> Training task: {}, capacity: {}'.format(self.task_params, pl_module.env.generator.capacity)) else: - print('\n>> Training task: {}'.format(pl_module.env.generator.num_loc)) + print('>> Training task: {}'.format(self.task_params)) def on_train_epoch_end(self, trainer: pl.Trainer, pl_module: pl.LightningModule): @@ -87,25 +108,63 @@ def on_train_epoch_end(self, trainer: pl.Trainer, pl_module: pl.LightningModule # Sample a batch of tasks self._sample_task() - # Load new training task (Update the environment) + # Load new training task (Update the environment) for the next meta-training iteration self._load_task(pl_module, task_idx = (trainer.current_epoch+1) % self.num_tasks) def _sample_task(self): + # Sample a batch of tasks - w, self.selected_tasks = [1.0] * self.num_tasks, [] + self.selected_tasks = [] for b in range(self.num_tasks): task_params = random.sample(self.task_set, 1)[0] self.selected_tasks.append(task_params) - self.w = torch.softmax(torch.Tensor(w), dim=0) def _load_task(self, pl_module: pl.LightningModule, task_idx=0): + # Load new training task (Update the environment) - task_params, task_w = self.selected_tasks[task_idx], self.w[task_idx].item() - pl_module.env.generator.num_loc = task_params[0] - if hasattr(pl_module.env.generator, 'capacity'): - task_capacity = math.ceil(30 + task_params[0] / 5) if task_params[0] >= 20 else 20 + self.task_params = self.selected_tasks[task_idx] + + if self.data_type == "size_distribution": + assert len(self.task_params) == 3 + pl_module.env.generator.num_loc = self.task_params[0] + pl_module.env.generator.num_modes = self.task_params[1] + pl_module.env.generator.cdist = self.task_params[2] + elif self.data_type == "distribution": # fixed size + assert len(self.task_params) == 2 + pl_module.env.generator.num_modes = self.task_params[0] + pl_module.env.generator.cdist = self.task_params[1] + elif self.data_type == "size": # fixed distribution + assert len(self.task_params) == 1 + pl_module.env.generator.num_loc = self.task_params[0] + + if hasattr(pl_module.env.generator, 'capacity') and self.data_type in ["size_distribution", "size"]: + task_capacity = math.ceil(30 + self.task_params[0] / 5) if self.task_params[0] >= 20 else 20 pl_module.env.generator.capacity = task_capacity def _alpha_scheduler(self): self.alpha = max(self.alpha * self.alpha_decay, 0.0001) + def _generate_task_set(self, data_type, min_size, max_size): + """ + Following the setting in Zhou et al. 2023 (https://arxiv.org/abs/2305.19587) + Current setting: + size: (n,) \in [20, 150] + distribution: (m, c) \in {(0, 0) + [1-9] * [1, 10, 20, 30, 40, 50]} + size_distribution: (n, m, c) \in [50, 200, 5] * {(0, 0) + (1, 1) + [3, 5, 7] * [10, 30, 50]} + """ + + if data_type == "distribution": # focus on TSP100 with gaussian mixture distributions + task_set = [(0, 0)] + [(m, c) for m in range(1, 10) for c in [1, 10, 20, 30, 40, 50]] + elif data_type == "size": # focus on uniform distribution with different sizes + task_set = [(n,) for n in range(min_size, max_size + 1)] + elif data_type == "size_distribution": + dist_set = [(0, 0), (1, 1)] + [(m, c) for m in [3, 5, 7] for c in [10, 30, 50]] + task_set = [(n, m, c) for n in range(50, 201, 5) for (m, c) in dist_set] + else: + raise NotImplementedError + + print(">> Generating training task set: {} tasks with type {}".format(len(task_set), data_type)) + print(">> Training task set: {}".format(task_set)) + + return task_set + From 5a029fa3c2646e68a49d6687d792f1a9e3ad1b39 Mon Sep 17 00:00:00 2001 From: jieyibi Date: Wed, 29 May 2024 21:51:08 +0800 Subject: [PATCH 018/102] add document --- examples/2d-meta_train.py | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/examples/2d-meta_train.py b/examples/2d-meta_train.py index 245ae9a2..41b6db4c 100644 --- a/examples/2d-meta_train.py +++ b/examples/2d-meta_train.py @@ -1,6 +1,3 @@ -import sys -sys.path.append("/home/jieyi/rl4co") - from lightning.pytorch.callbacks import ModelCheckpoint, RichModelSummary from lightning.pytorch.loggers import WandbLogger @@ -12,7 +9,7 @@ def main(): # Set device - device_id = 1 + device_id = 0 # RL4CO env based on TorchRL env = CVRPEnv(generator_params={'num_loc': 50}) @@ -31,7 +28,7 @@ def main(): model = POMO(env, policy, batch_size=64, # meta_batch_size - train_data_size=64 * 50, # each epoch + train_data_size=64 * 50, # equals to (meta_batch_size) * (gradient decent steps in the inner-loop optimization of meta-learning method) val_data_size=0, optimizer_kwargs={"lr": 1e-4, "weight_decay": 1e-6}, ) From 9ff903ffe43cbf919794025172d7bb4ba373907b Mon Sep 17 00:00:00 2001 From: ahottung Date: Mon, 3 Jun 2024 13:07:27 +0200 Subject: [PATCH 019/102] Allowing to pass an encoder to PolyNetPolicy --- rl4co/models/zoo/polynet/policy.py | 46 ++++++++++++++++-------------- 1 file changed, 25 insertions(+), 21 deletions(-) diff --git a/rl4co/models/zoo/polynet/policy.py b/rl4co/models/zoo/polynet/policy.py index 25217505..e2bc68ed 100644 --- a/rl4co/models/zoo/polynet/policy.py +++ b/rl4co/models/zoo/polynet/policy.py @@ -1,5 +1,7 @@ from typing import Union +import torch.nn as nn + from rl4co.envs import RL4COEnvBase from rl4co.models.common.constructive.autoregressive.policy import AutoregressivePolicy from rl4co.models.zoo.am.encoder import AttentionModelEncoder @@ -38,7 +40,8 @@ class PolyNetPolicy(AutoregressivePolicy): def __init__( self, k: int, - encoder_type: str, + encoder: nn.Module = None, + encoder_type: str = "AM", embed_dim: int = 128, num_encoder_layers: int = 6, num_heads: int = 8, @@ -53,26 +56,27 @@ def __init__( test_decode_type: str = "sampling", **kwargs, ): - if encoder_type == "AM": - encoder = AttentionModelEncoder( - embed_dim=embed_dim, - num_heads=num_heads, - num_layers=num_encoder_layers, - env_name=env_name, - normalization=normalization, - feedforward_hidden=feedforward_hidden, - **kwargs, - ) - elif encoder_type == "MatNet": - kwargs_with_defaults = {"init_embedding_kwargs": {"mode": "RandomOneHot"}} - kwargs_with_defaults.update(kwargs) - encoder = MatNetEncoder( - embed_dim=embed_dim, - num_heads=num_heads, - num_layers=num_encoder_layers, - normalization=normalization, - **kwargs_with_defaults, - ) + if encoder is None: + if encoder_type == "AM": + encoder = AttentionModelEncoder( + embed_dim=embed_dim, + num_heads=num_heads, + num_layers=num_encoder_layers, + env_name=env_name, + normalization=normalization, + feedforward_hidden=feedforward_hidden, + **kwargs, + ) + elif encoder_type == "MatNet": + kwargs_with_defaults = {"init_embedding_kwargs": {"mode": "RandomOneHot"}} + kwargs_with_defaults.update(kwargs) + encoder = MatNetEncoder( + embed_dim=embed_dim, + num_heads=num_heads, + num_layers=num_encoder_layers, + normalization=normalization, + **kwargs_with_defaults, + ) decoder = PolyNetDecoder( k=k, From ce84153759f7a5a337025ff623f601efb3217e76 Mon Sep 17 00:00:00 2001 From: ahottung Date: Mon, 3 Jun 2024 13:29:42 +0200 Subject: [PATCH 020/102] Adding polynet config --- configs/experiment/routing/polynet.yaml | 43 +++++++++++++++++++++++++ configs/model/polynet.yaml | 11 +++++++ 2 files changed, 54 insertions(+) create mode 100644 configs/experiment/routing/polynet.yaml create mode 100644 configs/model/polynet.yaml diff --git a/configs/experiment/routing/polynet.yaml b/configs/experiment/routing/polynet.yaml new file mode 100644 index 00000000..b8fb5265 --- /dev/null +++ b/configs/experiment/routing/polynet.yaml @@ -0,0 +1,43 @@ +# @package _global_ + +defaults: + - override /model: polynet.yaml + - override /env: tsp.yaml + - override /callbacks: default.yaml + - override /trainer: default.yaml + - override /logger: wandb.yaml + +env: + generator_params: + num_loc: 50 + +logger: + wandb: + project: "rl4co" + tags: ["polynet", "${env.name}"] + group: "${env.name}${env.generator_params.num_loc}" + name: "polynet-${env.name}${env.generator_params.num_loc}-${model.k}" + +model: + k: 100 + val_num_solutions: ${model.k} + batch_size: 512 + val_batch_size: 1024 + test_batch_size: 1024 + train_data_size: 1_280_000 + val_data_size: 10_000 + test_data_size: 10_000 + optimizer_kwargs: + lr: 1e-4 + weight_decay: 1e-6 + lr_scheduler: + "MultiStepLR" + lr_scheduler_kwargs: + milestones: [80, 95] + gamma: 0.1 + +trainer: + max_epochs: 100 + +seed: 1234 + diff --git a/configs/model/polynet.yaml b/configs/model/polynet.yaml new file mode 100644 index 00000000..4070d120 --- /dev/null +++ b/configs/model/polynet.yaml @@ -0,0 +1,11 @@ +_target_: rl4co.models.PolyNet + +# During val/test only we apply dihedral transformations +num_augment: 8 + +metrics: + train: ["loss", "reward"] + val: ["reward", "max_reward", "max_aug_reward"] + test: ${model.metrics.val} + log_on_step: True + From 46a3f3ccdb738b624e4330cf00cba22a050af29a Mon Sep 17 00:00:00 2001 From: ahottung Date: Mon, 3 Jun 2024 14:19:34 +0200 Subject: [PATCH 021/102] Polynet config: Disabling solution checking --- configs/experiment/routing/polynet.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/configs/experiment/routing/polynet.yaml b/configs/experiment/routing/polynet.yaml index b8fb5265..709a18cf 100644 --- a/configs/experiment/routing/polynet.yaml +++ b/configs/experiment/routing/polynet.yaml @@ -10,6 +10,7 @@ defaults: env: generator_params: num_loc: 50 + check_solution: False # optimization logger: wandb: From e6772e941400a88f1077a94541b0f7ba792d0aa4 Mon Sep 17 00:00:00 2001 From: ahottung Date: Mon, 3 Jun 2024 15:28:36 +0200 Subject: [PATCH 022/102] Bug fix PolyNetAttention --- rl4co/models/nn/attention.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/rl4co/models/nn/attention.py b/rl4co/models/nn/attention.py index 37635aae..6e4330b0 100644 --- a/rl4co/models/nn/attention.py +++ b/rl4co/models/nn/attention.py @@ -376,6 +376,7 @@ def __init__( ): super(PolyNetAttention, self).__init__(embed_dim, num_heads, **kwargs) + self.k = k self.binary_vector_dim = math.ceil(math.log2(k)) self.binary_vectors = torch.nn.Parameter( torch.Tensor( @@ -404,7 +405,7 @@ def forward(self, query, key, value, logit_key, attn_mask=None): num_solutions = glimpse.shape[1] z = self.binary_vectors.repeat( - math.ceil(num_solutions / (2**self.binary_vector_dim)), 1 + math.ceil(num_solutions / self.k), 1 )[:num_solutions] z = z[None].expand(glimpse.shape[0], num_solutions, self.binary_vector_dim) From 6744ddb0d160fa584987cc6df5a5a2b7957ca707 Mon Sep 17 00:00:00 2001 From: LTluttmann Date: Mon, 3 Jun 2024 19:54:48 +0200 Subject: [PATCH 023/102] [BugFix] fix inheritance structure in l2d --- rl4co/models/zoo/l2d/decoder.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rl4co/models/zoo/l2d/decoder.py b/rl4co/models/zoo/l2d/decoder.py index 2f37b63d..b0ab3041 100644 --- a/rl4co/models/zoo/l2d/decoder.py +++ b/rl4co/models/zoo/l2d/decoder.py @@ -313,7 +313,7 @@ def pre_decoder_hook( return td, env, (cache,) -class L2DAttnActor(AttentionModelDecoder): +class L2DAttnActor(AttnActor): def __init__( self, embed_dim: int = 128, From ab03421a1d88f597d14e25e2523e075a0509952d Mon Sep 17 00:00:00 2001 From: Laurin Luttmann Date: Tue, 4 Jun 2024 09:28:46 -0600 Subject: [PATCH 024/102] [Minor] new data generation strategy for fjsp --- rl4co/envs/scheduling/fjsp/generator.py | 36 ++++++++++++++++++++----- 1 file changed, 29 insertions(+), 7 deletions(-) diff --git a/rl4co/envs/scheduling/fjsp/generator.py b/rl4co/envs/scheduling/fjsp/generator.py index 60246a50..17d3f99f 100644 --- a/rl4co/envs/scheduling/fjsp/generator.py +++ b/rl4co/envs/scheduling/fjsp/generator.py @@ -45,6 +45,7 @@ def __init__( max_processing_time: int = 20, min_eligible_ma_per_op: int = 1, max_eligible_ma_per_op: int = None, + same_mean_per_op: bool = True, **unused_kwargs, ): self.num_jobs = num_jobs @@ -58,7 +59,7 @@ def __init__( # determines whether to use a fixed number of total operations or let it vary between instances # NOTE: due to the way rl4co builds datasets, we need a fixed size here self.n_ops_max = max_ops_per_job * num_jobs - + self.same_mean_per_op = same_mean_per_op # FFSP environment doen't have any other kwargs if len(unused_kwargs) > 0: log.error(f"Found {len(unused_kwargs)} unused kwargs: {unused_kwargs}") @@ -86,12 +87,33 @@ def _simulate_processing_times( ma_ops_edges = ma_ops_edges_unshuffled.gather(2, idx).transpose(1, 2) # (bs, max_ops, machines) - proc_times = torch.ones((bs, n_ops_max, self.num_mas)) - proc_times = torch.randint( - self.min_processing_time, - self.max_processing_time + 1, - size=(bs, self.num_mas, n_ops_max), - ) + if self.same_mean_per_op: + proc_times = torch.ones((bs, self.num_mas, n_ops_max)) + proc_time_means = torch.randint( + self.min_processing_time, self.max_processing_time, (bs, n_ops_max) + ) + low_bounds = torch.maximum( + torch.full_like(proc_times, self.min_processing_time), + (proc_time_means * (1 - 0.2)).round().unsqueeze(1), + ) + high_bounds = ( + torch.minimum( + torch.full_like(proc_times, self.max_processing_time), + (proc_time_means * (1 + 0.2)).round().unsqueeze(1), + ) + + 1 + ) + proc_times = ( + torch.randint(2**63 - 1, size=proc_times.shape) + % (high_bounds - low_bounds) + + low_bounds + ) + else: + proc_times = torch.randint( + self.min_processing_time, + self.max_processing_time + 1, + size=(bs, self.num_mas, n_ops_max), + ) # remove proc_times for which there is no corresponding ma-ops connection proc_times = proc_times * ma_ops_edges From b081e8fe41cb2a90ffce74c73cfc4623c5b93c1a Mon Sep 17 00:00:00 2001 From: ahottung Date: Tue, 4 Jun 2024 17:49:18 +0200 Subject: [PATCH 025/102] Using new multisample option for decoding instead of workaround --- rl4co/models/zoo/polynet/model.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/rl4co/models/zoo/polynet/model.py b/rl4co/models/zoo/polynet/model.py index ce33a563..208bbaf7 100644 --- a/rl4co/models/zoo/polynet/model.py +++ b/rl4co/models/zoo/polynet/model.py @@ -118,8 +118,8 @@ def __init__( self.augment = None # Add `_multistart` to decode type for train, val and test in policy - for phase in ["train", "val", "test"]: - self.set_decode_type_multistart(phase) + # for phase in ["train", "val", "test"]: + # self.set_decode_type_multistart(phase) def shared_step( self, batch: Any, batch_idx: int, phase: str, dataloader_idx: int = None @@ -144,8 +144,8 @@ def shared_step( self.env, phase=phase, num_starts=n_start, + multisample=True, return_actions=True, - select_start_nodes_fn=(lambda *args: None), ) # Unbatchify reward to [batch_size, num_augment, num_starts]. From 5d796f4e7612cfac0882233d0aff72623788c432 Mon Sep 17 00:00:00 2001 From: LTluttmann Date: Sun, 9 Jun 2024 19:36:04 +0200 Subject: [PATCH 026/102] td dataset without dict comprehension --- rl4co/data/dataset.py | 21 +++++++++++++++++++++ rl4co/envs/common/base.py | 4 ++-- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/rl4co/data/dataset.py b/rl4co/data/dataset.py index a1f03391..9eeb5043 100644 --- a/rl4co/data/dataset.py +++ b/rl4co/data/dataset.py @@ -6,6 +6,27 @@ from torch.utils.data import Dataset +class FastTdDataset(Dataset): + """ + Note: + Check out the issue on tensordict for more details: + https://github.com/pytorch-labs/tensordict/issues/374. + """ + + def __init__(self, td: TensorDict): + self.data_len = td.batch_size[0] + self.data = td + + def __len__(self): + return self.data_len + + def __getitems__(self, idx): + return self.data[idx] + + def add_key(self, key, value): + return ExtraKeyDataset(self, value, key_name=key) + + class TensorDictDataset(Dataset): """Dataset compatible with TensorDicts with low CPU usage. Fast loading but somewhat slow instantiation due to list comprehension since we diff --git a/rl4co/envs/common/base.py b/rl4co/envs/common/base.py index e477d7e3..c9a0068f 100644 --- a/rl4co/envs/common/base.py +++ b/rl4co/envs/common/base.py @@ -8,7 +8,7 @@ from tensordict.tensordict import TensorDict from torchrl.envs import EnvBase -from rl4co.data.dataset import TensorDictDataset +from rl4co.data.dataset import FastTdDataset from rl4co.data.utils import load_npz_to_tensordict from rl4co.utils.ops import get_num_starts, select_start_nodes from rl4co.utils.pylogger import get_pylogger @@ -52,7 +52,7 @@ def __init__( val_dataloader_names: list = None, test_dataloader_names: list = None, check_solution: bool = True, - dataset_cls: callable = TensorDictDataset, + dataset_cls: callable = FastTdDataset, seed: int = None, device: str = "cpu", batch_size: torch.Size = None, From 4d7e5b7db86812ed598291b9427657e57c85e8d6 Mon Sep 17 00:00:00 2001 From: bokveizen Date: Mon, 10 Jun 2024 15:04:06 +0900 Subject: [PATCH 027/102] update FLP and MCP --- rl4co/envs/graph/__init__.py | 3 + rl4co/envs/graph/flp/env.py | 173 +++++++++++++++++++++++++ rl4co/envs/graph/flp/generator.py | 70 ++++++++++ rl4co/envs/graph/flp/render.py | 14 ++ rl4co/envs/graph/mcp/env.py | 206 ++++++++++++++++++++++++++++++ rl4co/envs/graph/mcp/generator.py | 116 +++++++++++++++++ rl4co/envs/graph/mcp/render.py | 14 ++ rl4co/utils/ops.py | 2 +- 8 files changed, 597 insertions(+), 1 deletion(-) create mode 100644 rl4co/envs/graph/__init__.py create mode 100644 rl4co/envs/graph/flp/env.py create mode 100644 rl4co/envs/graph/flp/generator.py create mode 100644 rl4co/envs/graph/flp/render.py create mode 100644 rl4co/envs/graph/mcp/env.py create mode 100644 rl4co/envs/graph/mcp/generator.py create mode 100644 rl4co/envs/graph/mcp/render.py diff --git a/rl4co/envs/graph/__init__.py b/rl4co/envs/graph/__init__.py new file mode 100644 index 00000000..d49826b1 --- /dev/null +++ b/rl4co/envs/graph/__init__.py @@ -0,0 +1,3 @@ +from rl4co.envs.graph.mcp.env import MCPEnv +from rl4co.envs.graph.flp.env import FLPEnv + diff --git a/rl4co/envs/graph/flp/env.py b/rl4co/envs/graph/flp/env.py new file mode 100644 index 00000000..bc838c48 --- /dev/null +++ b/rl4co/envs/graph/flp/env.py @@ -0,0 +1,173 @@ +import math +from typing import Optional +from einops import rearrange +from matplotlib.axes import Axes + +import torch +import torch.nn as nn + +from tensordict.tensordict import TensorDict + +from rl4co.envs.common.base import RL4COEnvBase +from rl4co.utils.ops import gather_by_index, get_distance_matrix +from rl4co.data.dataset import TensorDictDataset + +from typing import Iterable, Optional + +from lightning.pytorch.utilities.seed import isolate_rng + +from rl4co.utils.pylogger import get_pylogger + +from .generator import FLPGenerator +from .render import render + +log = get_pylogger(__name__) + +class FLPEnv(RL4COEnvBase): + """Facility Location Problem (FLP) environment + At each step, the agent chooses a location. The reward is 0 unless enough number of locations are chosen. + The reward is (-) the total distance of each location to its closest chosen location. + + Observations: + - the locations + - the number of locations to choose + + Constraints: + - the given number of locations must be chosen + + Finish condition: + - the given number of locations are chosen + + Reward: + - (minus) the total distance of each location to its closest chosen location + + Args: + generator: FLPGenerator instance as the data generator + generator_params: parameters for the generator + """ + + name = "flp" + + def __init__( + self, + generator: FLPGenerator = None, + generator_params: dict = {}, + check_solution = False, + **kwargs, + ): + super().__init__(**kwargs) + if generator is None: + generator = FLPGenerator(**generator_params) + self.generator = generator + self.check_solution = check_solution + self._make_spec(self.generator) + + def _step(self, td: TensorDict) -> TensorDict: + # action: [batch_size, 1]; the location to be chosen in each instance + selected = td["action"] + batch_size = selected.shape[0] + + # Update location selection status + chosen = td["chosen"].clone() # (batch_size, n_locations) + n_points_ = chosen.shape[-1] + + chosen[torch.arange(batch_size).to(td.device), selected] = True + + # We are done if we choose enough locations + done = td["i"] >= (td["to_choose"] - 1) + + # The reward is calculated outside via get_reward for efficiency, so we set it to zero here + reward = torch.zeros_like(done) + + # Update distances + orig_distances = td["orig_distances"] # (batch_size, n_points, n_points) + + cur_min_dist = ( + gather_by_index( + orig_distances, chosen.nonzero(as_tuple=True)[1].view(batch_size, -1) + ) + .view(batch_size, -1, n_points_) + .min(dim=1) + .values + ) + + + # We cannot choose the already-chosen locations + action_mask = ~chosen + + td.update( + { + "distances": cur_min_dist, # (batch_size, n_points) + # states changed by actions + "chosen": chosen, # each entry is binary; 1 iff the corresponding facility is chosen + "i": td["i"] + 1, # the number of sets we have chosen + "action_mask": action_mask, + "reward": reward, + "done": done, + } + ) + return td + + def _reset(self, td: Optional[TensorDict] = None, batch_size=None) -> TensorDict: + self.to(td.device) + + return TensorDict( + { + # given information + "locs": td["locs"], # (batch_size, n_points, dim_loc) + "orig_distances": td[ + "orig_distances" + ], # (batch_size, n_points, n_points) + "distances": td["distances"], # (batch_size, n_points, n_points) + # states changed by actions + "chosen": torch.zeros( + *td["locs"].shape[:-1], dtype=torch.bool, device=td.device + ), # each entry is binary; 1 iff the corresponding facility is chosen + "to_choose": td["to_choose"], # the number of sets to choose + "i": torch.zeros( + *batch_size, dtype=torch.int64, device=td.device + ), # the number of sets we have chosen + "action_mask": torch.ones( + *td["locs"].shape[:-1], dtype=torch.bool, device=td.device + ), + }, + batch_size=batch_size, + ) + + def _make_spec(self, generator: FLPGenerator): + # TODO: make spec + pass + + def _get_reward(self, td: TensorDict, actions: torch.Tensor) -> torch.Tensor: + if self.check_solution: + self.check_solution_validity(td, actions) + + # The reward is (minus) the total distance from each location to the closest chosen location + chosen = td["chosen"] # (batch_size, n_points) + batch_size_ = td["chosen"].shape[0] + n_points_ = td["chosen"].shape[-1] + orig_distances = td["orig_distances"] + cur_min_dist = ( + gather_by_index( + orig_distances, chosen.nonzero(as_tuple=True)[1].view(batch_size_, -1) + ) + .view(batch_size_, -1, n_points_) + .min(1) + .values.sum(-1) + ) + return -cur_min_dist + + + @staticmethod + def check_solution_validity(td: TensorDict, actions: torch.Tensor) -> None: + # TODO: check solution validity + pass + + @staticmethod + def local_search(td: TensorDict, actions: torch.Tensor, **kwargs) -> torch.Tensor: + # TODO: local search + pass + + @staticmethod + def render(td: TensorDict, actions: torch.Tensor = None, ax=None): + return render(td, actions, ax) diff --git a/rl4co/envs/graph/flp/generator.py b/rl4co/envs/graph/flp/generator.py new file mode 100644 index 00000000..8c171204 --- /dev/null +++ b/rl4co/envs/graph/flp/generator.py @@ -0,0 +1,70 @@ +from typing import Callable, Union + +import torch +import math + +from tensordict.tensordict import TensorDict +from torch.distributions import Uniform + +from rl4co.envs.common.utils import Generator, get_sampler +from rl4co.utils.ops import gather_by_index, get_distance_matrix +from rl4co.utils.pylogger import get_pylogger + +log = get_pylogger(__name__) + +class FLPGenerator(Generator): + """Data generator for the Facility Location Problem (FLP). + + Args: + num_loc: number of locations in the FLP + min_loc: minimum value for the location coordinates + max_loc: maximum value for the location coordinates + loc_distribution: distribution for the location coordinates + + Returns: + A TensorDict with the following keys: + locs [batch_size, num_loc, 2]: locations + orig_distances [batch_size, num_loc, num_loc]: original distances between locations + distances [batch_size, num_loc]: the current minimum distance from each location to the chosen locations + chosen [batch_size, num_loc]: indicators of chosen locations + to_choose [batch_size, 1]: number of locations to choose in the FLP + """ + + def __init__( + self, + num_loc: int = 100, + min_loc: float = 0.0, + max_loc: float = 1.0, + loc_distribution: Union[int, float, str, type, Callable] = Uniform, + to_choose: int = 10, + **kwargs, + ): + self.num_loc = num_loc + self.min_loc = min_loc + self.max_loc = max_loc + self.to_choose = to_choose + + # Location distribution + if kwargs.get("loc_sampler", None) is not None: + self.loc_sampler = kwargs["loc_sampler"] + else: + self.loc_sampler = get_sampler( + "loc", loc_distribution, min_loc, max_loc, **kwargs + ) + + def _generate(self, batch_size) -> TensorDict: + # Sample locations + locs = self.loc_sampler.sample((*batch_size, self.num_loc, 2)) + distances = get_distance_matrix(locs) + max_dist = math.sqrt(2) * (self.max_loc - self.min_loc) + + return TensorDict( + { + "locs": locs, + "orig_distances": distances, + "distances": torch.full((*batch_size, self.num_loc), max_dist, dtype=torch.float), + "chosen": torch.zeros(*batch_size, self.num_loc, dtype=torch.bool), + "to_choose": torch.ones(*batch_size, dtype=torch.long) * self.to_choose, + }, + batch_size=batch_size, + ) diff --git a/rl4co/envs/graph/flp/render.py b/rl4co/envs/graph/flp/render.py new file mode 100644 index 00000000..0844b419 --- /dev/null +++ b/rl4co/envs/graph/flp/render.py @@ -0,0 +1,14 @@ +import matplotlib.pyplot as plt +import numpy as np +import torch + +from rl4co.utils.ops import gather_by_index +from rl4co.utils.pylogger import get_pylogger + +log = get_pylogger(__name__) + + +def render(td, actions=None, ax=None): + # TODO: better rendering, e.g., visualization + print(td) + print(actions) \ No newline at end of file diff --git a/rl4co/envs/graph/mcp/env.py b/rl4co/envs/graph/mcp/env.py new file mode 100644 index 00000000..0c100eee --- /dev/null +++ b/rl4co/envs/graph/mcp/env.py @@ -0,0 +1,206 @@ +from typing import Optional +from einops import rearrange +from matplotlib.axes import Axes +import random + +import torch +import torch.nn as nn + +from tensordict.tensordict import TensorDict +from rl4co.envs.common.base import RL4COEnvBase +from rl4co.data.dataset import TensorDictDataset +from rl4co.data.utils import load_npz_to_tensordict + +from pyg_bipartite import BipartiteData +from torch_geometric.data import Batch, Data + +from rl4co.utils.ops import gather_by_index + +from rl4co.utils.pylogger import get_pylogger +from typing import Iterable, Optional + +from lightning.pytorch.utilities.seed import isolate_rng + +import numpy as np + +from .generator import MCPGenerator +from .render import render + + +log = get_pylogger(__name__) + + +class MCPEnv(RL4COEnvBase): + """Maximum Coverage Problem (MCP) environment + At each step, the agent chooses a set. The reward is 0 unless enough number of sets are chosen. + The reward is the total weights of the covered items (i.e., items in any chosen set). + + Observations: + - the weights of items + - the membership of items in sets + - the number of sets to choose + + Constraints: + - the given number of sets must be chosen + + Finish condition: + - the given number of sets are chosen + + Reward: + - the total weights of the covered items (i.e., items in any chosen set) + + Args: + generator: MCPGenerator instance as the data generator + generator_params: parameters for the generator + """ + + name = "mcp" + + def __init__( + self, + generator: MCPGenerator = None, + generator_params: dict = {}, + check_solution=False, + **kwargs, + ): + super().__init__(**kwargs) + if generator is None: + generator = MCPGenerator(**generator_params) + self.generator = generator + self.check_solution = check_solution + self._make_spec(self.generator) + + def _step(self, td: TensorDict) -> TensorDict: + # action: [batch_size, 1]; the set to be chosen in each instance + batch_size = td["action"].shape[0] + n_items_ = td["weights"].shape[1] + selected = td["action"] + + # Update set selection status + chosen = td["chosen"].clone() # (batch_size, n_sets) + n_sets_ = chosen.shape[1] + chosen[torch.arange(batch_size).to(td.device), selected] = True + + # We are done if we choose enough sets + done = td["i"] >= (td["n_sets_to_choose"] - 1) + + # The reward is calculated outside via get_reward for efficiency, so we set it to -inf here + reward = torch.ones_like(done) * float("-inf") + + remaining_sets = ~chosen # (batch_size, n_sets) + + chosen_membership = chosen.unsqueeze(-1) * td["membership"] + chosen_membership_nonzero = chosen_membership.nonzero() + remaining_membership = remaining_sets.unsqueeze(-1) * td["membership"] + + batch_indices, set_indices, item_indices = chosen_membership_nonzero.T + chosen_items_indices = chosen_membership[ + batch_indices, set_indices, item_indices + ].long() + + batch_size, n_items = td["weights"].shape + + # We have batch_indices and chosen_items_indices + # chosen_items: (batch_size, n_items) + # for each i, chosen_items[batch_size[i], chosen_items_indices[i]] += 1 + chosen_items = torch.zeros(batch_size, n_items + 1, device=td.device) + chosen_items[batch_indices, chosen_items_indices] += 1 + chosen_items = chosen_items[:, 1:] # Remove the first column (invalid zeros) + + # chosen_item[i, j] > 0 means item j is chosen in batch i + covered_items = (chosen_items > 0).float() # (batch_size, n_items) + remaining_items = 1.0 - covered_items # (batch_size, n_items) + + # We cannot choose the already-chosen sets + action_mask = ~chosen + + td.update( + { + "membership": remaining_membership, # (batch_size, n_sets, max_size) + "weights": td["weights"] * remaining_items, # (batch_size, n_items) + "chosen": chosen, + "i": td["i"] + 1, + "action_mask": action_mask, + "reward": reward, + "done": done, + } + ) + return td + + def _reset(self, td: Optional[TensorDict] = None, batch_size=None) -> TensorDict: + self.to(td.device) + + return TensorDict( + { + # given information; constant for each given instance + "orig_membership": td["membership"], # (batch_size, n_sets, max_size) + "membership": td["membership"], # (batch_size, n_sets, max_size) + "orig_weights": td["weights"], # (batch_size, n_items) + "weights": td["weights"], # (batch_size, n_items) + "n_sets_to_choose": td["n_sets_to_choose"], # (batch_size, 1) + # states changed by actions + "chosen": torch.zeros( + *td["membership"].shape[:-1], dtype=torch.bool, device=td.device + ), # each entry is binary; 1 iff the corresponding set is chosen + "i": torch.zeros( + *batch_size, dtype=torch.int64, device=td.device + ), # the number of sets we have chosen + "action_mask": torch.ones( + *td["membership"].shape[:-1], dtype=torch.bool, device=td.device + ), + }, + batch_size=batch_size, + ) + + def _make_spec(self, generator: MCPGenerator): + # TODO: make spec + pass + + def _get_reward(self, td: TensorDict, actions: torch.Tensor) -> torch.Tensor: + if self.check_solution: + self.check_solution_validity(td, actions) + + membership = td[ + "orig_membership" + ] # (batch_size, n_sets, max_size); membership[i, j] = the items in set j in batch i (with 0 padding) + weights = td["orig_weights"] # (batch_size, n_items) + chosen_sets = td["chosen"] # (batch_size, n_set); 1 if chosen, 0 otherwise + + chosen_membership = chosen_sets.unsqueeze(-1) * membership + chosen_membership_nonzero = chosen_membership.nonzero() + + batch_indices, set_indices, item_indices = chosen_membership_nonzero.T + chosen_items_indices = chosen_membership[ + batch_indices, set_indices, item_indices + ].long() + + batch_size, n_items = weights.shape + + # We have batch_indices and chosen_items_indices + # chosen_items: (batch_size, n_items) + # For each i, chosen_items[batch_size[i], chosen_items_indices[i]] += 1 + chosen_items = torch.zeros(batch_size, n_items + 1, device=td.device) + chosen_items[batch_indices, chosen_items_indices] += 1 + chosen_items = chosen_items[:, 1:] # remove the first column + + # chosen_item[i, j] > 0 means item j is chosen in batch i + chosen_items = (chosen_items > 0).float() + # Compute the total weights of chosen items + chosen_weights = torch.sum(chosen_items * weights, dim=-1) + + return chosen_weights + + @staticmethod + def check_solution_validity(td: TensorDict, actions: torch.Tensor) -> None: + # TODO: check solution validity + pass + + @staticmethod + def local_search(td: TensorDict, actions: torch.Tensor, **kwargs) -> torch.Tensor: + # TODO: local search + pass + + @staticmethod + def render(td: TensorDict, actions: torch.Tensor = None, ax=None): + return render(td, actions, ax) + \ No newline at end of file diff --git a/rl4co/envs/graph/mcp/generator.py b/rl4co/envs/graph/mcp/generator.py new file mode 100644 index 00000000..7a7b5b95 --- /dev/null +++ b/rl4co/envs/graph/mcp/generator.py @@ -0,0 +1,116 @@ +from typing import Callable, Union + +import torch + +from tensordict.tensordict import TensorDict +from torch.distributions import Uniform + +from rl4co.envs.common.utils import Generator, get_sampler +from rl4co.utils.pylogger import get_pylogger + +log = get_pylogger(__name__) + + +def remove_repeat(x: torch.Tensor) -> torch.Tensor: + """ + Remove the repeated elements in each row (i.e., the last dimension) of the input tensor x, + and change the repeated elements to 0 + + Ref: https://stackoverflow.com/questions/62300404 + + Args: + x: input tensor + """ + + # sorting the rows so that duplicate values appear together + # e.g., first row: [1, 2, 3, 3, 3, 4, 4] + y, indices = x.sort(dim=-1) + + # subtracting, so duplicate values will become 0 + # e.g., first row: [1, 2, 3, 0, 0, 4, 0] + y[..., 1:] *= ((y[..., 1:] - y[..., :-1]) != 0).long() + + # retrieving the original indices of elements + indices = indices.sort(dim=-1)[1] + + # re-organizing the rows following original order + # e.g., first row: [1, 2, 3, 4, 0, 0, 0] + return torch.gather(y, -1, indices) + + +class MCPGenerator(Generator): + """Data generator for the Maximum Coverage Problem (MCP). + + Args: + num_items: number of items in the MCP + num_sets: number of sets in the MCP + min_weight: minimum value for the item weights + max_weight: maximum value for the item weights + min_size: minimum size for the sets + max_size: maximum size for the sets + n_sets_to_choose: number of sets to choose in the MCP + + Returns: + A TensorDict with the following keys: + membership [batch_size, num_sets, max_size]: membership of items in sets + weights [batch_size, num_items]: weights of the items + n_sets_to_choose [batch_size, 1]: number of sets to choose in the MCP + """ + + def __init__( + self, + num_items: int = 200, + num_sets: int = 100, + min_weight: float = 1.0, + max_weight: float = 10.0, + min_size: int = 5, + max_size: int = 15, + n_sets_to_choose: int = 10, + **kwargs, + ): + self.num_items = num_items + self.num_sets = num_sets + self.min_weight = min_weight + self.max_weight = max_weight + self.min_size = min_size + self.max_size = max_size + self.n_sets_to_choose = n_sets_to_choose + + def _generate(self, batch_size) -> TensorDict: + try: + batch_size = batch_size[0] + except TypeError: + batch_size = batch_size + + weights_tensor = torch.randint( + self.min_weight, self.max_weight + 1, (batch_size, self.num_items) + ).float() + # Create membership tensor + membership_tensor_max_size = torch.randint( + 1, self.num_items + 1, (batch_size, self.num_sets, self.max_size) + ) + # Cutoffs for each set + cutoffs = torch.randint( + self.min_size, self.max_size + 1, (batch_size, self.num_sets) + ) + + cutoffs_masks = torch.arange(self.max_size).view(1, 1, -1) < cutoffs.unsqueeze( + -1 + ) + # Take the masked elements, 0 means the item is invalid + membership_tensor = ( + membership_tensor_max_size * cutoffs_masks + ) # (batch_size, num_sets, max_size) + + # Remove repeated items in each set + membership_tensor = remove_repeat(membership_tensor) + + return TensorDict( + { + "membership": membership_tensor.float(), # (batch_size, num_sets, max_size) + "weights": weights_tensor.float(), # (batch_size, num_items) + "n_sets_to_choose": torch.ones(batch_size, 1) + * self.n_sets_to_choose, # (batch_size, 1) + }, + batch_size=batch_size, + ) diff --git a/rl4co/envs/graph/mcp/render.py b/rl4co/envs/graph/mcp/render.py new file mode 100644 index 00000000..0844b419 --- /dev/null +++ b/rl4co/envs/graph/mcp/render.py @@ -0,0 +1,14 @@ +import matplotlib.pyplot as plt +import numpy as np +import torch + +from rl4co.utils.ops import gather_by_index +from rl4co.utils.pylogger import get_pylogger + +log = get_pylogger(__name__) + + +def render(td, actions=None, ax=None): + # TODO: better rendering, e.g., visualization + print(td) + print(actions) \ No newline at end of file diff --git a/rl4co/utils/ops.py b/rl4co/utils/ops.py index 86dc2a1e..b78821dc 100644 --- a/rl4co/utils/ops.py +++ b/rl4co/utils/ops.py @@ -147,7 +147,7 @@ def select_start_nodes(td, env, num_starts): num_starts: Number of nodes to select. This may be passed when calling the policy directly. See :class:`rl4co.models.AutoregressiveDecoder` """ num_loc = env.generator.num_loc if hasattr(env.generator, "num_loc") else 0xFFFFFFFF - if env.name in ["tsp", "atsp"]: + if env.name in ["tsp", "atsp", "flp", "mcp"]: selected = ( torch.arange(num_starts, device=td.device).repeat_interleave(td.shape[0]) % num_loc From 84227490a5f2f312c72372abc244848cf8bb9782 Mon Sep 17 00:00:00 2001 From: bokveizen Date: Mon, 10 Jun 2024 17:08:10 +0900 Subject: [PATCH 028/102] update envs/init --- rl4co/envs/__init__.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/rl4co/envs/__init__.py b/rl4co/envs/__init__.py index f1de6e68..f3b65b7d 100644 --- a/rl4co/envs/__init__.py +++ b/rl4co/envs/__init__.py @@ -28,6 +28,9 @@ from rl4co.envs.scheduling import FFSPEnv, FJSPEnv, SMTWTPEnv from rl4co.envs.scheduling.jssp.env import JSSPEnv +# Graph +from rl4co.envs.graph import MCPEnv, FLPEnv + # Register environments ENV_REGISTRY = { "atsp": ATSPEnv, @@ -51,6 +54,8 @@ "mdcpdp": MDCPDPEnv, "mtvrp": MTVRPEnv, "tsp_kopt": TSPkoptEnv, + "mcp": MCPEnv, + "flp": FLPEnv, } From f86a739736b250c3d89562c28db61f35387277e7 Mon Sep 17 00:00:00 2001 From: bokveizen Date: Mon, 10 Jun 2024 17:11:28 +0900 Subject: [PATCH 029/102] Update env.py --- rl4co/envs/graph/mcp/env.py | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/rl4co/envs/graph/mcp/env.py b/rl4co/envs/graph/mcp/env.py index 0c100eee..77e34af5 100644 --- a/rl4co/envs/graph/mcp/env.py +++ b/rl4co/envs/graph/mcp/env.py @@ -11,7 +11,6 @@ from rl4co.data.dataset import TensorDictDataset from rl4co.data.utils import load_npz_to_tensordict -from pyg_bipartite import BipartiteData from torch_geometric.data import Batch, Data from rl4co.utils.ops import gather_by_index @@ -127,7 +126,7 @@ def _step(self, td: TensorDict) -> TensorDict: ) return td - def _reset(self, td: Optional[TensorDict] = None, batch_size=None) -> TensorDict: + def _reset(self, td: Optional[TensorDict] = None, batch_size=None) -> TensorDict: self.to(td.device) return TensorDict( @@ -136,7 +135,7 @@ def _reset(self, td: Optional[TensorDict] = None, batch_size=None) -> TensorDict "orig_membership": td["membership"], # (batch_size, n_sets, max_size) "membership": td["membership"], # (batch_size, n_sets, max_size) "orig_weights": td["weights"], # (batch_size, n_items) - "weights": td["weights"], # (batch_size, n_items) + "weights": td["weights"], # (batch_size, n_items) "n_sets_to_choose": td["n_sets_to_choose"], # (batch_size, 1) # states changed by actions "chosen": torch.zeros( @@ -159,7 +158,7 @@ def _make_spec(self, generator: MCPGenerator): def _get_reward(self, td: TensorDict, actions: torch.Tensor) -> torch.Tensor: if self.check_solution: self.check_solution_validity(td, actions) - + membership = td[ "orig_membership" ] # (batch_size, n_sets, max_size); membership[i, j] = the items in set j in batch i (with 0 padding) @@ -203,4 +202,3 @@ def local_search(td: TensorDict, actions: torch.Tensor, **kwargs) -> torch.Tenso @staticmethod def render(td: TensorDict, actions: torch.Tensor = None, ax=None): return render(td, actions, ax) - \ No newline at end of file From 23a1fd1fdc2ddca708747ba3a6e60981dcb6929a Mon Sep 17 00:00:00 2001 From: bokveizen Date: Mon, 10 Jun 2024 17:18:23 +0900 Subject: [PATCH 030/102] add test --- rl4co/utils/test_utils.py | 6 ++++++ tests/test_envs.py | 9 +++++++++ 2 files changed, 15 insertions(+) diff --git a/rl4co/utils/test_utils.py b/rl4co/utils/test_utils.py index 321bf99b..60e2a327 100644 --- a/rl4co/utils/test_utils.py +++ b/rl4co/utils/test_utils.py @@ -14,6 +14,8 @@ SMTWTPEnv, SPCTSPEnv, TSPEnv, + FLPEnv, + MCPEnv, ) @@ -44,6 +46,10 @@ def get_env(name, size): env = SMTWTPEnv() elif name == "pdp_ruin_repair": env = PDPRuinRepairEnv() + elif name == "mcp": + env = MCPEnv() + elif name == "flp": + env = FLPEnv() else: raise ValueError(f"Unknown env_name: {name}") diff --git a/tests/test_envs.py b/tests/test_envs.py index 775a46be..aa83d583 100644 --- a/tests/test_envs.py +++ b/tests/test_envs.py @@ -26,6 +26,8 @@ SPCTSPEnv, SVRPEnv, TSPEnv, + FLPEnv, + MCPEnv, ) from rl4co.utils.decoding import random_policy, rollout @@ -133,6 +135,13 @@ def test_jssp_lb(env_cls): assert torch.allclose(td["lbs"], lb_expected) +@pytest.mark.parametrize("env_cls", [FLPEnv, MCPEnv]) +def test_flp_mcp(env_cls, batch_size=2): + env = env_cls() + reward, td, actions = rollout(env, env.reset(batch_size=[batch_size]), random_policy) + assert reward.shape == (batch_size,) + + def test_scheduling_dataloader(): from tempfile import TemporaryDirectory From 61864efa1f881757d1854c70b8d68d9eb76410a8 Mon Sep 17 00:00:00 2001 From: bokveizen Date: Mon, 10 Jun 2024 17:24:42 +0900 Subject: [PATCH 031/102] MCP weights: float -> int --- rl4co/envs/graph/mcp/generator.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/rl4co/envs/graph/mcp/generator.py b/rl4co/envs/graph/mcp/generator.py index 7a7b5b95..d1af191f 100644 --- a/rl4co/envs/graph/mcp/generator.py +++ b/rl4co/envs/graph/mcp/generator.py @@ -61,8 +61,8 @@ def __init__( self, num_items: int = 200, num_sets: int = 100, - min_weight: float = 1.0, - max_weight: float = 10.0, + min_weight: int = 1, + max_weight: int = 10, min_size: int = 5, max_size: int = 15, n_sets_to_choose: int = 10, From 492529e52541ea54da3b675610f91a0f440f29cc Mon Sep 17 00:00:00 2001 From: bokveizen Date: Mon, 10 Jun 2024 20:38:08 +0900 Subject: [PATCH 032/102] remove render and reformat --- rl4co/envs/graph/flp/env.py | 40 +++++++++++++------------------ rl4co/envs/graph/flp/generator.py | 21 +++++++++------- rl4co/envs/graph/flp/render.py | 14 ----------- rl4co/envs/graph/mcp/env.py | 5 ---- rl4co/envs/graph/mcp/generator.py | 4 +--- rl4co/envs/graph/mcp/render.py | 14 ----------- 6 files changed, 30 insertions(+), 68 deletions(-) delete mode 100644 rl4co/envs/graph/flp/render.py delete mode 100644 rl4co/envs/graph/mcp/render.py diff --git a/rl4co/envs/graph/flp/env.py b/rl4co/envs/graph/flp/env.py index bc838c48..f745c033 100644 --- a/rl4co/envs/graph/flp/env.py +++ b/rl4co/envs/graph/flp/env.py @@ -19,10 +19,10 @@ from rl4co.utils.pylogger import get_pylogger from .generator import FLPGenerator -from .render import render log = get_pylogger(__name__) + class FLPEnv(RL4COEnvBase): """Facility Location Problem (FLP) environment At each step, the agent chooses a location. The reward is 0 unless enough number of locations are chosen. @@ -38,7 +38,7 @@ class FLPEnv(RL4COEnvBase): Finish condition: - the given number of locations are chosen - Reward: + Reward: - (minus) the total distance of each location to its closest chosen location Args: @@ -52,7 +52,7 @@ def __init__( self, generator: FLPGenerator = None, generator_params: dict = {}, - check_solution = False, + check_solution=False, **kwargs, ): super().__init__(**kwargs) @@ -60,14 +60,14 @@ def __init__( generator = FLPGenerator(**generator_params) self.generator = generator self.check_solution = check_solution - self._make_spec(self.generator) + self._make_spec(self.generator) def _step(self, td: TensorDict) -> TensorDict: # action: [batch_size, 1]; the location to be chosen in each instance selected = td["action"] - batch_size = selected.shape[0] + batch_size = selected.shape[0] - # Update location selection status + # Update location selection status chosen = td["chosen"].clone() # (batch_size, n_locations) n_points_ = chosen.shape[-1] @@ -75,13 +75,13 @@ def _step(self, td: TensorDict) -> TensorDict: # We are done if we choose enough locations done = td["i"] >= (td["to_choose"] - 1) - + # The reward is calculated outside via get_reward for efficiency, so we set it to zero here reward = torch.zeros_like(done) # Update distances - orig_distances = td["orig_distances"] # (batch_size, n_points, n_points) - + orig_distances = td["orig_distances"] # (batch_size, n_points, n_points) + cur_min_dist = ( gather_by_index( orig_distances, chosen.nonzero(as_tuple=True)[1].view(batch_size, -1) @@ -90,11 +90,10 @@ def _step(self, td: TensorDict) -> TensorDict: .min(dim=1) .values ) - - + # We cannot choose the already-chosen locations action_mask = ~chosen - + td.update( { "distances": cur_min_dist, # (batch_size, n_points) @@ -105,10 +104,10 @@ def _step(self, td: TensorDict) -> TensorDict: "reward": reward, "done": done, } - ) + ) return td - def _reset(self, td: Optional[TensorDict] = None, batch_size=None) -> TensorDict: + def _reset(self, td: Optional[TensorDict] = None, batch_size=None) -> TensorDict: self.to(td.device) return TensorDict( @@ -132,21 +131,21 @@ def _reset(self, td: Optional[TensorDict] = None, batch_size=None) -> TensorDict ), }, batch_size=batch_size, - ) + ) def _make_spec(self, generator: FLPGenerator): # TODO: make spec pass - + def _get_reward(self, td: TensorDict, actions: torch.Tensor) -> torch.Tensor: if self.check_solution: self.check_solution_validity(td, actions) - + # The reward is (minus) the total distance from each location to the closest chosen location chosen = td["chosen"] # (batch_size, n_points) batch_size_ = td["chosen"].shape[0] n_points_ = td["chosen"].shape[-1] - orig_distances = td["orig_distances"] + orig_distances = td["orig_distances"] cur_min_dist = ( gather_by_index( orig_distances, chosen.nonzero(as_tuple=True)[1].view(batch_size_, -1) @@ -157,7 +156,6 @@ def _get_reward(self, td: TensorDict, actions: torch.Tensor) -> torch.Tensor: ) return -cur_min_dist - @staticmethod def check_solution_validity(td: TensorDict, actions: torch.Tensor) -> None: # TODO: check solution validity @@ -167,7 +165,3 @@ def check_solution_validity(td: TensorDict, actions: torch.Tensor) -> None: def local_search(td: TensorDict, actions: torch.Tensor, **kwargs) -> torch.Tensor: # TODO: local search pass - - @staticmethod - def render(td: TensorDict, actions: torch.Tensor = None, ax=None): - return render(td, actions, ax) diff --git a/rl4co/envs/graph/flp/generator.py b/rl4co/envs/graph/flp/generator.py index 8c171204..f30932b3 100644 --- a/rl4co/envs/graph/flp/generator.py +++ b/rl4co/envs/graph/flp/generator.py @@ -12,20 +12,21 @@ log = get_pylogger(__name__) + class FLPGenerator(Generator): """Data generator for the Facility Location Problem (FLP). Args: num_loc: number of locations in the FLP min_loc: minimum value for the location coordinates - max_loc: maximum value for the location coordinates + max_loc: maximum value for the location coordinates loc_distribution: distribution for the location coordinates Returns: A TensorDict with the following keys: locs [batch_size, num_loc, 2]: locations orig_distances [batch_size, num_loc, num_loc]: original distances between locations - distances [batch_size, num_loc]: the current minimum distance from each location to the chosen locations + distances [batch_size, num_loc]: the current minimum distance rom each location to the chosen locations chosen [batch_size, num_loc]: indicators of chosen locations to_choose [batch_size, 1]: number of locations to choose in the FLP """ @@ -35,7 +36,7 @@ def __init__( num_loc: int = 100, min_loc: float = 0.0, max_loc: float = 1.0, - loc_distribution: Union[int, float, str, type, Callable] = Uniform, + loc_distribution: Union[int, float, str, type, Callable] = Uniform, to_choose: int = 10, **kwargs, ): @@ -43,7 +44,7 @@ def __init__( self.min_loc = min_loc self.max_loc = max_loc self.to_choose = to_choose - + # Location distribution if kwargs.get("loc_sampler", None) is not None: self.loc_sampler = kwargs["loc_sampler"] @@ -54,15 +55,17 @@ def __init__( def _generate(self, batch_size) -> TensorDict: # Sample locations - locs = self.loc_sampler.sample((*batch_size, self.num_loc, 2)) - distances = get_distance_matrix(locs) - max_dist = math.sqrt(2) * (self.max_loc - self.min_loc) - + locs = self.loc_sampler.sample((*batch_size, self.num_loc, 2)) + distances = get_distance_matrix(locs) + max_dist = math.sqrt(2) * (self.max_loc - self.min_loc) + return TensorDict( { "locs": locs, "orig_distances": distances, - "distances": torch.full((*batch_size, self.num_loc), max_dist, dtype=torch.float), + "distances": torch.full( + (*batch_size, self.num_loc), max_dist, dtype=torch.float + ), "chosen": torch.zeros(*batch_size, self.num_loc, dtype=torch.bool), "to_choose": torch.ones(*batch_size, dtype=torch.long) * self.to_choose, }, diff --git a/rl4co/envs/graph/flp/render.py b/rl4co/envs/graph/flp/render.py deleted file mode 100644 index 0844b419..00000000 --- a/rl4co/envs/graph/flp/render.py +++ /dev/null @@ -1,14 +0,0 @@ -import matplotlib.pyplot as plt -import numpy as np -import torch - -from rl4co.utils.ops import gather_by_index -from rl4co.utils.pylogger import get_pylogger - -log = get_pylogger(__name__) - - -def render(td, actions=None, ax=None): - # TODO: better rendering, e.g., visualization - print(td) - print(actions) \ No newline at end of file diff --git a/rl4co/envs/graph/mcp/env.py b/rl4co/envs/graph/mcp/env.py index 77e34af5..b87235e0 100644 --- a/rl4co/envs/graph/mcp/env.py +++ b/rl4co/envs/graph/mcp/env.py @@ -23,7 +23,6 @@ import numpy as np from .generator import MCPGenerator -from .render import render log = get_pylogger(__name__) @@ -198,7 +197,3 @@ def check_solution_validity(td: TensorDict, actions: torch.Tensor) -> None: def local_search(td: TensorDict, actions: torch.Tensor, **kwargs) -> torch.Tensor: # TODO: local search pass - - @staticmethod - def render(td: TensorDict, actions: torch.Tensor = None, ax=None): - return render(td, actions, ax) diff --git a/rl4co/envs/graph/mcp/generator.py b/rl4co/envs/graph/mcp/generator.py index d1af191f..ea14159c 100644 --- a/rl4co/envs/graph/mcp/generator.py +++ b/rl4co/envs/graph/mcp/generator.py @@ -94,9 +94,7 @@ def _generate(self, batch_size) -> TensorDict: self.min_size, self.max_size + 1, (batch_size, self.num_sets) ) - cutoffs_masks = torch.arange(self.max_size).view(1, 1, -1) < cutoffs.unsqueeze( - -1 - ) + cutoffs_masks = torch.arange(self.max_size).view(1, 1, -1) < cutoffs.unsqueeze(-1) # Take the masked elements, 0 means the item is invalid membership_tensor = ( membership_tensor_max_size * cutoffs_masks diff --git a/rl4co/envs/graph/mcp/render.py b/rl4co/envs/graph/mcp/render.py deleted file mode 100644 index 0844b419..00000000 --- a/rl4co/envs/graph/mcp/render.py +++ /dev/null @@ -1,14 +0,0 @@ -import matplotlib.pyplot as plt -import numpy as np -import torch - -from rl4co.utils.ops import gather_by_index -from rl4co.utils.pylogger import get_pylogger - -log = get_pylogger(__name__) - - -def render(td, actions=None, ax=None): - # TODO: better rendering, e.g., visualization - print(td) - print(actions) \ No newline at end of file From d1bc475fc69a863d0a6ed3919f3a13dd705742ce Mon Sep 17 00:00:00 2001 From: bokveizen Date: Mon, 10 Jun 2024 21:58:39 +0900 Subject: [PATCH 033/102] a typo --- rl4co/envs/routing/pdp/env.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rl4co/envs/routing/pdp/env.py b/rl4co/envs/routing/pdp/env.py index 6c46e4a3..dfa78904 100644 --- a/rl4co/envs/routing/pdp/env.py +++ b/rl4co/envs/routing/pdp/env.py @@ -235,7 +235,7 @@ def render(td: TensorDict, actions: torch.Tensor = None, ax=None): class PDPRuinRepairEnv(ImprovementEnvBase): - """Pickup and Delivery Problem (PDP) environment for performing neural rein-repair search. + """Pickup and Delivery Problem (PDP) environment for performing neural ruin-repair search. The environment is made of num_loc + 1 locations (cities): - 1 depot - `num_loc` / 2 pickup locations From 56224802df652dd27016f57ace5c30b241d17898 Mon Sep 17 00:00:00 2001 From: bokveizen Date: Mon, 10 Jun 2024 22:04:11 +0900 Subject: [PATCH 034/102] update multistarts --- rl4co/envs/graph/flp/env.py | 12 ++++++++++++ rl4co/envs/graph/mcp/env.py | 12 ++++++++++++ 2 files changed, 24 insertions(+) diff --git a/rl4co/envs/graph/flp/env.py b/rl4co/envs/graph/flp/env.py index f745c033..0c985841 100644 --- a/rl4co/envs/graph/flp/env.py +++ b/rl4co/envs/graph/flp/env.py @@ -165,3 +165,15 @@ def check_solution_validity(td: TensorDict, actions: torch.Tensor) -> None: def local_search(td: TensorDict, actions: torch.Tensor, **kwargs) -> torch.Tensor: # TODO: local search pass + + @staticmethod + def get_num_starts(td): + return td["action_mask"].shape[-1] + + @staticmethod + def select_start_nodes(td, num_starts): + num_loc = td["action_mask"].shape[-1] + return ( + torch.arange(num_starts, device=td.device).repeat_interleave(td.shape[0]) + % num_loc + ) diff --git a/rl4co/envs/graph/mcp/env.py b/rl4co/envs/graph/mcp/env.py index b87235e0..e8a4ddc2 100644 --- a/rl4co/envs/graph/mcp/env.py +++ b/rl4co/envs/graph/mcp/env.py @@ -197,3 +197,15 @@ def check_solution_validity(td: TensorDict, actions: torch.Tensor) -> None: def local_search(td: TensorDict, actions: torch.Tensor, **kwargs) -> torch.Tensor: # TODO: local search pass + + @staticmethod + def get_num_starts(td): + return td["action_mask"].shape[-1] + + @staticmethod + def select_start_nodes(td, num_starts): + num_sets = td["action_mask"].shape[-1] + return ( + torch.arange(num_starts, device=td.device).repeat_interleave(td.shape[0]) + % num_sets + ) From 0d57fc0a4b4051a4f3068766cc32ad025fb369c8 Mon Sep 17 00:00:00 2001 From: LTluttmann Date: Mon, 10 Jun 2024 19:37:06 +0200 Subject: [PATCH 035/102] [BugFix] Fix FFSP --- .../experiment/scheduling/ffsp-matnet.yaml | 46 +++++++ rl4co/data/dataset.py | 5 + rl4co/envs/common/base.py | 4 +- rl4co/envs/scheduling/ffsp/env.py | 41 +------ rl4co/envs/scheduling/ffsp/generator.py | 22 +--- rl4co/models/zoo/matnet/decoder.py | 41 ++----- rl4co/models/zoo/matnet/encoder.py | 113 ++++-------------- rl4co/models/zoo/matnet/policy.py | 23 ++-- 8 files changed, 113 insertions(+), 182 deletions(-) create mode 100644 configs/experiment/scheduling/ffsp-matnet.yaml diff --git a/configs/experiment/scheduling/ffsp-matnet.yaml b/configs/experiment/scheduling/ffsp-matnet.yaml new file mode 100644 index 00000000..7a1f4148 --- /dev/null +++ b/configs/experiment/scheduling/ffsp-matnet.yaml @@ -0,0 +1,46 @@ +# @package _global_ + +defaults: + - override /model: matnet.yaml + - override /callbacks: default.yaml + - override /trainer: default.yaml + - override /logger: wandb.yaml + - override /env: ffsp.yaml + +logger: + wandb: + project: "rl4co" + log_model: "all" + group: "${env.name}-${env.generator_params.num_job}-${env.generator_params.num_machine}" + tags: ["matnet", "${env.name}"] + name: "matnet-${env.name}-${env.generator_params.num_job}j-${env.generator_params.num_machine}m" + +env: + generator_params: + num_stage: 3 + num_machine: 4 + num_job: 20 + flatten_stages: False + +trainer: + max_epochs: 50 + # NOTE for some reason l2d is extremely sensitive to precision + # ONLY USE 32-true for l2d! + precision: 32-true + gradient_clip_val: 10 # orig paper does not use grad clipping + +seed: 12345678 + +model: + batch_size: 50 + train_data_size: 10_000 + val_data_size: 1_000 + test_data_size: 1_000 + optimizer_kwargs: + lr: 1e-4 + weight_decay: 1e-6 + lr_scheduler: + "MultiStepLR" + lr_scheduler_kwargs: + milestones: [35, 45] + gamma: 0.1 diff --git a/rl4co/data/dataset.py b/rl4co/data/dataset.py index 9eeb5043..fa876757 100644 --- a/rl4co/data/dataset.py +++ b/rl4co/data/dataset.py @@ -26,6 +26,11 @@ def __getitems__(self, idx): def add_key(self, key, value): return ExtraKeyDataset(self, value, key_name=key) + @staticmethod + def collate_fn(batch: Union[dict, TensorDict]): + """Collate function compatible with TensorDicts that reassembles a list of dicts.""" + return batch + class TensorDictDataset(Dataset): """Dataset compatible with TensorDicts with low CPU usage. diff --git a/rl4co/envs/common/base.py b/rl4co/envs/common/base.py index c9a0068f..e477d7e3 100644 --- a/rl4co/envs/common/base.py +++ b/rl4co/envs/common/base.py @@ -8,7 +8,7 @@ from tensordict.tensordict import TensorDict from torchrl.envs import EnvBase -from rl4co.data.dataset import FastTdDataset +from rl4co.data.dataset import TensorDictDataset from rl4co.data.utils import load_npz_to_tensordict from rl4co.utils.ops import get_num_starts, select_start_nodes from rl4co.utils.pylogger import get_pylogger @@ -52,7 +52,7 @@ def __init__( val_dataloader_names: list = None, test_dataloader_names: list = None, check_solution: bool = True, - dataset_cls: callable = FastTdDataset, + dataset_cls: callable = TensorDictDataset, seed: int = None, device: str = "cpu", batch_size: torch.Size = None, diff --git a/rl4co/envs/scheduling/ffsp/env.py b/rl4co/envs/scheduling/ffsp/env.py index da8eff24..c74ef4c2 100644 --- a/rl4co/envs/scheduling/ffsp/env.py +++ b/rl4co/envs/scheduling/ffsp/env.py @@ -13,6 +13,7 @@ UnboundedDiscreteTensorSpec, ) +from rl4co.data.dataset import FastTdDataset from rl4co.envs.common.base import RL4COEnvBase from .generator import FFSPGenerator @@ -57,7 +58,7 @@ def __init__( generator_params: dict = {}, **kwargs, ): - super().__init__(check_solution=False, **kwargs) + super().__init__(check_solution=False, dataset_cls=FastTdDataset, **kwargs) if generator is None: generator = FFSPGenerator(**generator_params) self.generator = generator @@ -150,15 +151,12 @@ def pre_step(self, td: TensorDict) -> TensorDict: batch_idx = torch.arange(*batch_size, dtype=torch.long, device=td.device) sub_time_idx = td["sub_time_idx"] # update machine index - machine_idx = self.tables.get_machine_index(batch_idx, sub_time_idx) + td["machine_idx"] = self.tables.get_machine_index(batch_idx, sub_time_idx) # update action mask and stage machine indx td = self._update_step_state(td) # perform some checks - stage_machine_idx = td["stage_machine_idx"] - stage_idx = td["stage_idx"] - is_stage_one = stage_idx == 0 - assert torch.all(stage_machine_idx[is_stage_one] == machine_idx[is_stage_one]) - assert is_stage_one.all(), "call pre_step only at beginning of env" + assert (td["stage_idx"] == 0).all(), "call pre_step only at beginning of env" + assert torch.all(td["stage_machine_idx"] == td["machine_idx"]) # return updated td return td @@ -215,9 +213,6 @@ def _step(self, td: TensorDict) -> TensorDict: time_idx = td["time_idx"] machine_idx = td["machine_idx"] - # create new td to avoid incplace ops and gradient problems resulting from this - # td = td.clone() - # increment the operation counter of the selected job td["job_location"][batch_idx, job_idx] += 1 # td["job_location"][:, :-1].clip_(0, self.num_stage) @@ -311,21 +306,7 @@ def _reset( dtype=torch.long, device=device, ) - if self.flatten_stages: - assert ( - len(td["run_time"].shape) == 3 - ), "cost matrix has shape other than (bs, jobs, ma_total)" - job_duration[..., : self.num_job, :] = td["run_time"] - else: - assert ( - len(td["run_time"].shape) == 4 - ), "cost matrix has shape other than (bs, jobs, ma, stages)" - job_duration[..., : self.num_job, :] = ( - td["run_time"] - .transpose(-2, -1) - .contiguous() - .view(*batch_size, self.num_job, self.num_machine_total) - ) + job_duration[..., : self.num_job, :] = td["run_time"] job_duration[..., self.num_job, :] = 0 # Finish status information @@ -429,16 +410,6 @@ def _make_spec(self, generator: FFSPGenerator): def _get_reward(self, td, actions) -> TensorDict: return td["reward"] - def _get_cmap(self, color_cnt): - from random import shuffle - - from matplotlib.colors import CSS4_COLORS, ListedColormap - - color_list = list(CSS4_COLORS.keys()) - shuffle(color_list) - cmap = ListedColormap(color_list, N=color_cnt) - return cmap - class IndexTables: def __init__(self, env: FFSPEnv): diff --git a/rl4co/envs/scheduling/ffsp/generator.py b/rl4co/envs/scheduling/ffsp/generator.py index 8ec3ce71..6b33b8b1 100644 --- a/rl4co/envs/scheduling/ffsp/generator.py +++ b/rl4co/envs/scheduling/ffsp/generator.py @@ -1,17 +1,9 @@ -import os -import zipfile -from typing import Union, Callable - import torch -import numpy as np -from robust_downloader import download -from torch.distributions import Uniform from tensordict.tensordict import TensorDict -from rl4co.data.utils import load_npz_to_tensordict +from rl4co.envs.common.utils import Generator from rl4co.utils.pylogger import get_pylogger -from rl4co.envs.common.utils import get_sampler, Generator log = get_pylogger(__name__) @@ -34,6 +26,7 @@ class FFSPGenerator(Generator): Note: - [IMPORTANT] This version of ffsp requires the number of machines in each stage to be the same """ + def __init__( self, num_stage: int = 2, @@ -42,7 +35,7 @@ def __init__( min_time: int = 2, max_time: int = 10, flatten_stages: bool = True, - **unused_kwargs + **unused_kwargs, ): self.num_stage = num_stage self.num_machine = num_machine @@ -61,16 +54,9 @@ def _generate(self, batch_size) -> TensorDict: run_time = torch.randint( low=self.min_time, high=self.max_time, - size=(*batch_size, self.num_job, self.num_machine, self.num_stage), + size=(*batch_size, self.num_job, self.num_machine_total), ) - if self.flatten_stages: - run_time = ( - run_time.transpose(-2, -1) - .contiguous() - .view(*batch_size, self.num_job, self.num_machine_total) - ) - return TensorDict( { "run_time": run_time, diff --git a/rl4co/models/zoo/matnet/decoder.py b/rl4co/models/zoo/matnet/decoder.py index ad8aef77..5a8d6e28 100644 --- a/rl4co/models/zoo/matnet/decoder.py +++ b/rl4co/models/zoo/matnet/decoder.py @@ -9,7 +9,8 @@ from rl4co.models.nn.env_embeddings.context import FFSPContext from rl4co.models.zoo.am.decoder import AttentionModelDecoder -from rl4co.utils.decoding import process_logits +from rl4co.utils.decoding import decode_logprobs, process_logits +from rl4co.utils.ops import gather_by_index @dataclass @@ -53,6 +54,8 @@ def __init__( self, embed_dim: int, num_heads: int, + linear_bias: bool = False, + out_bias_pointer_attn: bool = True, use_graph_context: bool = False, **kwargs, ): @@ -62,8 +65,10 @@ def __init__( env_name="ffsp", embed_dim=embed_dim, num_heads=num_heads, - use_graph_context=use_graph_context, context_embedding=context_embedding, + out_bias_pointer_attn=out_bias_pointer_attn, + linear_bias=linear_bias, + use_graph_context=use_graph_context, **kwargs, ) @@ -116,6 +121,7 @@ def __init__( embed_dim: int, num_heads: int, use_graph_context: bool = True, + tanh_clipping: float = 10, **kwargs, ): super().__init__( @@ -125,7 +131,7 @@ def __init__( **kwargs, ) self.cached_embs: PrecomputedCache = None - # self.encoded_wait_op = nn.Parameter(torch.rand((1, 1, embed_dim))) + self.tanh_clipping = tanh_clipping def _precompute_cache(self, embeddings: Tuple[Tensor], **kwargs): self.cached_embs = super()._precompute_cache(embeddings, **kwargs) @@ -137,38 +143,15 @@ def forward( num_starts: int = 1, **decoding_kwargs, ) -> Tuple[Tensor, Tensor, TensorDict]: - device = td.device - batch_size = td.size(0) - # TODO: we need to insert precompute cache inside the decoder logits, mask = super().forward(td, self.cached_embs, num_starts) logprobs = process_logits( logits, mask, + tanh_clipping=self.tanh_clipping, **decoding_kwargs, ) - all_job_probs = logprobs.exp() - - if "sampling" in decode_type: - # to fix pytorch.multinomial bug on selecting 0 probability elements - while True: - job_selected = all_job_probs.multinomial(1).squeeze(dim=1) - # shape: (batch) - job_prob = all_job_probs.gather(1, job_selected[:, None]).squeeze(dim=1) - # shape: (batch) - assert (job_prob[td["done"].squeeze()] == 1).all() - - if (job_prob != 0).all(): - break - - elif "greedy" in decode_type: - job_selected = all_job_probs.argmax(dim=1) - # shape: (batch) - job_prob = torch.zeros( - size=(batch_size,), device=device - ) # any number is okay - - else: - raise ValueError(f"decode type {decode_type} not understood") + job_selected = decode_logprobs(logprobs, mask, decode_type) + job_prob = gather_by_index(logprobs, job_selected, dim=1) return job_selected, job_prob diff --git a/rl4co/models/zoo/matnet/encoder.py b/rl4co/models/zoo/matnet/encoder.py index 3ad52309..0af88e23 100644 --- a/rl4co/models/zoo/matnet/encoder.py +++ b/rl4co/models/zoo/matnet/encoder.py @@ -6,7 +6,7 @@ from rl4co.models.nn.attention import MultiHeadCrossAttention from rl4co.models.nn.env_embeddings import env_init_embedding -from rl4co.models.nn.ops import Normalization +from rl4co.models.nn.ops import TransformerFFN class MixedScoresSDPA(nn.Module): @@ -47,14 +47,15 @@ def forward(self, q, k, v, attn_mask=None, dmat=None, dropout_p=0.0): # Calculate scaled dot product attn_scores = torch.matmul(q, k.transpose(-2, -1)) / (k.size(-1) ** 0.5) + # [b, h, m, n, num_scores+1] mix_attn_scores = torch.cat( [ attn_scores.unsqueeze(-1), dmat[:, None, ...].expand(b, self.num_heads, m, n, self.num_scores), ], dim=-1, - ) # [b, h, m, n, num_scores+1] - + ) + # [b, h, m, n] attn_scores = ( ( torch.matmul( @@ -68,7 +69,7 @@ def forward(self, q, k, v, attn_mask=None, dmat=None, dropout_p=0.0): ) .transpose(1, 2) .squeeze(-1) - ) # [b, h, m, n] + ) # Apply the provided attention mask if attn_mask is not None: @@ -141,7 +142,7 @@ def forward(self, row_emb, col_emb, dmat, attn_mask=None): return updated_row_emb, updated_col_emb -class MatNetMHALayer(nn.Module): +class MatNetLayer(nn.Module): def __init__( self, embed_dim: int, @@ -152,30 +153,8 @@ def __init__( ): super().__init__() self.MHA = MatNetMHA(embed_dim, num_heads, bias) - - self.F_a = nn.ModuleDict( - { - "norm1": Normalization(embed_dim, normalization), - "ffn": nn.Sequential( - nn.Linear(embed_dim, feedforward_hidden), - nn.ReLU(), - nn.Linear(feedforward_hidden, embed_dim), - ), - "norm2": Normalization(embed_dim, normalization), - } - ) - - self.F_b = nn.ModuleDict( - { - "norm1": Normalization(embed_dim, normalization), - "ffn": nn.Sequential( - nn.Linear(embed_dim, feedforward_hidden), - nn.ReLU(), - nn.Linear(feedforward_hidden, embed_dim), - ), - "norm2": Normalization(embed_dim, normalization), - } - ) + self.F_a = TransformerFFN(embed_dim, feedforward_hidden, normalization) + self.F_b = TransformerFFN(embed_dim, feedforward_hidden, normalization) def forward(self, row_emb, col_emb, dmat, attn_mask=None): """ @@ -190,63 +169,18 @@ def forward(self, row_emb, col_emb, dmat, attn_mask=None): """ row_emb_out, col_emb_out = self.MHA(row_emb, col_emb, dmat, attn_mask) - - row_emb_out = self.F_a["norm1"](row_emb + row_emb_out) - row_emb_out = self.F_a["norm2"](row_emb_out + self.F_a["ffn"](row_emb_out)) - - col_emb_out = self.F_b["norm1"](col_emb + col_emb_out) - col_emb_out = self.F_b["norm2"](col_emb_out + self.F_b["ffn"](col_emb_out)) + row_emb_out = self.F_a(row_emb_out, row_emb) + col_emb_out = self.F_b(col_emb_out, col_emb) return row_emb_out, col_emb_out -class MatNetMHANetwork(nn.Module): - def __init__( - self, - embed_dim: int = 128, - num_heads: int = 8, - num_layers: int = 3, - normalization: str = "batch", - feedforward_hidden: int = 512, - bias: bool = False, - ): - super().__init__() - self.layers = nn.ModuleList( - [ - MatNetMHALayer( - num_heads=num_heads, - embed_dim=embed_dim, - feedforward_hidden=feedforward_hidden, - normalization=normalization, - bias=bias, - ) - for _ in range(num_layers) - ] - ) - - def forward(self, row_emb, col_emb, dmat, attn_mask=None): - """ - Args: - row_emb (Tensor): [b, m, d] - col_emb (Tensor): [b, n, d] - dmat (Tensor): [b, m, n] - - Returns: - Updated row_emb (Tensor): [b, m, d] - Updated col_emb (Tensor): [b, n, d] - """ - - for layer in self.layers: - row_emb, col_emb = layer(row_emb, col_emb, dmat, attn_mask) - return row_emb, col_emb - - class MatNetEncoder(nn.Module): def __init__( self, embed_dim: int = 256, num_heads: int = 16, - num_layers: int = 5, - normalization: str = "instance", + num_layers: int = 3, + normalization: str = "batch", feedforward_hidden: int = 512, init_embedding: nn.Module = None, init_embedding_kwargs: dict = {}, @@ -261,15 +195,19 @@ def __init__( ) self.init_embedding = init_embedding - self.net = MatNetMHANetwork( - embed_dim=embed_dim, - num_heads=num_heads, - num_layers=num_layers, - normalization=normalization, - feedforward_hidden=feedforward_hidden, - bias=bias, - ) self.mask_non_neighbors = mask_non_neighbors + self.layers = nn.ModuleList( + [ + MatNetLayer( + embed_dim=embed_dim, + num_heads=num_heads, + bias=bias, + feedforward_hidden=feedforward_hidden, + normalization=normalization, + ) + for _ in range(num_layers) + ] + ) def forward(self, td, attn_mask: torch.Tensor = None): row_emb, col_emb, dmat = self.init_embedding(td) @@ -278,7 +216,8 @@ def forward(self, td, attn_mask: torch.Tensor = None): # attn_mask (keep 1s discard 0s) to only attend on neighborhood attn_mask = dmat.ne(0) - row_emb, col_emb = self.net(row_emb, col_emb, dmat, attn_mask) + for layer in self.layers: + row_emb, col_emb = layer(row_emb, col_emb, dmat, attn_mask) embedding = (row_emb, col_emb) init_embedding = None diff --git a/rl4co/models/zoo/matnet/policy.py b/rl4co/models/zoo/matnet/policy.py index 0c2af426..4e3ea980 100644 --- a/rl4co/models/zoo/matnet/policy.py +++ b/rl4co/models/zoo/matnet/policy.py @@ -96,15 +96,15 @@ class MultiStageFFSPPolicy(nn.Module): def __init__( self, stage_cnt: int, - embed_dim: int = 256, + embed_dim: int = 512, num_heads: int = 16, - num_encoder_layers: int = 3, + num_encoder_layers: int = 5, use_graph_context: bool = False, normalization: str = "instance", feedforward_hidden: int = 512, bias: bool = False, train_decode_type: str = "sampling", - val_decode_type: str = "sampling", # authors report better results for sampling + val_decode_type: str = "sampling", test_decode_type: str = "sampling", ): super().__init__() @@ -136,8 +136,9 @@ def __init__( self.test_decode_type = test_decode_type def pre_forward(self, td: TensorDict, env: FFSPEnv, num_starts: int): + run_time_list = td["run_time"].chunk(env.num_stage, dim=-1) for stage_idx in range(self.stage_cnt): - td["cost_matrix"] = td["run_time"][:, :, :, stage_idx] + td["cost_matrix"] = run_time_list[stage_idx] encoder = self.encoders[stage_idx] embeddings, _ = encoder(td) decoder = self.decoders[stage_idx] @@ -171,36 +172,36 @@ def forward( # NOTE: this must come after pre_forward due to batchify op batch_size = td.size(0) - prob_list = torch.zeros(size=(batch_size, 0), device=device) + logp_list = torch.zeros(size=(batch_size, 0), device=device) action_list = [] while not td["done"].all(): action_stack = torch.empty( size=(batch_size, self.stage_cnt), dtype=torch.long, device=device ) - prob_stack = torch.empty(size=(batch_size, self.stage_cnt), device=device) + logp_stack = torch.empty(size=(batch_size, self.stage_cnt), device=device) for stage_idx in range(self.stage_cnt): decoder = self.decoders[stage_idx] - action, prob = decoder(td, decode_type, num_starts, **decoder_kwargs) + action, logp = decoder(td, decode_type, num_starts, **decoder_kwargs) action_stack[:, stage_idx] = action - prob_stack[:, stage_idx] = prob + logp_stack[:, stage_idx] = logp gathering_index = td["stage_idx"][:, None] # shape: (batch, 1) action = action_stack.gather(dim=1, index=gathering_index).squeeze(dim=1) - prob = prob_stack.gather(dim=1, index=gathering_index).squeeze(dim=1) + logp = logp_stack.gather(dim=1, index=gathering_index).squeeze(dim=1) # shape: (batch) action_list.append(action) # transition td.set("action", action) td = env.step(td)["next"] - prob_list = torch.cat((prob_list, prob[:, None]), dim=1) + logp_list = torch.cat((logp_list, logp[:, None]), dim=1) out = { "reward": td["reward"], - "log_likelihood": prob_list.log().sum(1), + "log_likelihood": logp_list.sum(1), } if return_actions: From d11788d333951e7fa94e6becc2540bb7e5ec0407 Mon Sep 17 00:00:00 2001 From: jieyibi Date: Tue, 11 Jun 2024 15:54:10 +0800 Subject: [PATCH 036/102] add support for training on multiple mixed distributions --- rl4co/envs/common/distribution_utils.py | 70 +++++++++++++++++++++++++ rl4co/envs/common/utils.py | 6 ++- 2 files changed, 75 insertions(+), 1 deletion(-) diff --git a/rl4co/envs/common/distribution_utils.py b/rl4co/envs/common/distribution_utils.py index d03e92b8..f440adeb 100644 --- a/rl4co/envs/common/distribution_utils.py +++ b/rl4co/envs/common/distribution_utils.py @@ -1,3 +1,4 @@ +import random import torch class Cluster(): @@ -182,3 +183,72 @@ def _batch_normalize_and_center(self, coords): coords = coords + (1 - coords.max(dim=1, keepdim=True).values) / 2 # Centering the batch return coords + +class Mix_Distribution(): + + ''' + Mixture of three exemplar distributions in batch-level, i.e. Uniform, Cluster, Mixed + Following the setting in Bi et al. 2022 (https://arxiv.org/abs/2210.07686) + + Args: + n_cluster: Number of the gaussian distributed clusters in Cluster distribution + n_cluster_mix: Number of the gaussian distributed clusters in Mixed distribution + ''' + def __init__(self, n_cluster=3, n_cluster_mix=1): + super().__init__() + self.lower, self.upper = 0.2, 0.8 + self.std = 0.07 + self.Mixed = Mixed(n_cluster_mix=n_cluster_mix) + self.Cluster = Cluster(n_cluster=n_cluster) + + def sample(self, size): + + batch_size, num_loc, _ = size + + # Pre-define the coordinates sampled under uniform distribution + coords = torch.FloatTensor(batch_size, num_loc, 2).uniform_(0, 1) + + # Random sample probability for the distribution of each sample + p = torch.rand(batch_size) + + # Mixed + mask = p <= 0.33 + n_mixed = mask.sum().item() + if n_mixed > 0: + coords[mask] = self.Mixed.sample((n_mixed, num_loc, 2)) + + # Cluster + mask = (p > 0.33) & (p <= 0.66) + n_cluster = mask.sum().item() + if n_cluster > 0: + coords[mask] = self.Cluster.sample((n_cluster, num_loc, 2)) + + # The remaining ones are uniformly distributed + return coords + +class Mix_Multi_Distributions(): + + ''' + Mixture of 11 Gaussian-like distributions in batch-level + Following the setting in Zhou et al. (2023): https://arxiv.org/abs/2305.19587 + ''' + def __init__(self): + super().__init__() + self.dist_set = [(0, 0), (1, 1)] + [(m, c) for m in [3, 5, 7] for c in [10, 30, 50]] + + def sample(self, size): + batch_size, num_loc, _ = size + coords = torch.zeros(batch_size, num_loc, 2) + + # Pre-select distributions for the entire batch + dists = [random.choice(self.dist_set) for _ in range(batch_size)] + unique_dists = list(set(dists)) # Unique distributions to minimize re-instantiation + + # Instantiate Gaussian_Mixture only once per unique distribution + gm_instances = {dist: Gaussian_Mixture(*dist) for dist in unique_dists} + + # Batch process where possible + for i, dist in enumerate(dists): + coords[i] = gm_instances[dist].sample((1, num_loc, 2)).squeeze(0) + + return coords diff --git a/rl4co/envs/common/utils.py b/rl4co/envs/common/utils.py index ebaed856..0c2a27e8 100644 --- a/rl4co/envs/common/utils.py +++ b/rl4co/envs/common/utils.py @@ -6,7 +6,7 @@ from tensordict.tensordict import TensorDict from torch.distributions import Exponential, Normal, Poisson, Uniform -from rl4co.envs.common.distribution_utils import Cluster, Mixed, Gaussian_Mixture +from rl4co.envs.common.distribution_utils import Cluster, Mixed, Gaussian_Mixture, Mix_Distribution, Mix_Multi_Distributions class Generator(metaclass=abc.ABCMeta): """Base data generator class, to be called with `env.generator(batch_size)`""" @@ -82,6 +82,10 @@ def get_sampler( return Cluster(kwargs['n_cluster']) elif distribution == "mixed": return Mixed(kwargs['n_cluster_mix']) + elif distribution == "mix_distribution": + return Mix_Distribution(kwargs['n_cluster'], kwargs['n_cluster_mix']) + elif distribution == "mix_multi_distributions": + return Mix_Multi_Distributions() else: raise ValueError(f"Invalid distribution type of {distribution}") From d07f0b28620b0a8d9ee99ae9233cf244224fa7d4 Mon Sep 17 00:00:00 2001 From: ahottung Date: Tue, 11 Jun 2024 14:40:41 +0200 Subject: [PATCH 037/102] Bug fix parameter passing --- rl4co/models/zoo/polynet/policy.py | 1 + 1 file changed, 1 insertion(+) diff --git a/rl4co/models/zoo/polynet/policy.py b/rl4co/models/zoo/polynet/policy.py index e2bc68ed..d2128a6f 100644 --- a/rl4co/models/zoo/polynet/policy.py +++ b/rl4co/models/zoo/polynet/policy.py @@ -90,6 +90,7 @@ def __init__( super(PolyNetPolicy, self).__init__( encoder=encoder, decoder=decoder, + env_name=env_name, temperature=temperature, tanh_clipping=tanh_clipping, mask_logits=mask_logits, From 9d68bed4932a0ee98624320cddfc59fca5783a24 Mon Sep 17 00:00:00 2001 From: ahottung Date: Tue, 11 Jun 2024 14:53:55 +0200 Subject: [PATCH 038/102] Adding PolyNet to training test cases --- tests/test_training.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/tests/test_training.py b/tests/test_training.py index 4b50f3b0..66e36389 100644 --- a/tests/test_training.py +++ b/tests/test_training.py @@ -27,6 +27,7 @@ MatNet, NARGNNPolicy, NeuOpt, + PolyNet, SymNCO, ) from rl4co.utils import RL4COTrainer @@ -248,3 +249,17 @@ def test_l2d_ppo(env_cls): ) trainer.fit(model) trainer.test(model) + + +def test_polynet(): + env = TSPEnv(generator_params=dict(num_loc=20)) + model = PolyNet( + env, + k=10, + train_data_size=10, + val_data_size=10, + test_data_size=10, + ) + trainer = RL4COTrainer(max_epochs=1, devices=1, accelerator=accelerator) + trainer.fit(model) + trainer.test(model) From c644803edaf362bb0b3c1a398f4588823b6bd187 Mon Sep 17 00:00:00 2001 From: ahottung Date: Tue, 11 Jun 2024 15:12:16 +0200 Subject: [PATCH 039/102] Adjusting default batch size calculation --- rl4co/models/zoo/polynet/model.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/rl4co/models/zoo/polynet/model.py b/rl4co/models/zoo/polynet/model.py index 208bbaf7..a1271da8 100644 --- a/rl4co/models/zoo/polynet/model.py +++ b/rl4co/models/zoo/polynet/model.py @@ -98,8 +98,8 @@ def __init__( train_batch_size = kwargs["batch_size"] if "batch_size" in kwargs else 64 kwargs_with_defaults = { - "val_batch_size": max(1, train_batch_size // (val_num_solutions // k)), - "test_batch_size": max(1, train_batch_size // (val_num_solutions // k)), + "val_batch_size": train_batch_size, + "test_batch_size": train_batch_size, } kwargs_with_defaults.update(kwargs) From 9880eabe5a03fc31dd1b888de6a1a475e7bc796e Mon Sep 17 00:00:00 2001 From: LTluttmann Date: Thu, 13 Jun 2024 14:25:41 +0200 Subject: [PATCH 040/102] [Minor] updated scheduling notebook with taillard instances --- examples/other/2-scheduling.ipynb | 376 ++++++++++++++++++++++-------- 1 file changed, 283 insertions(+), 93 deletions(-) diff --git a/examples/other/2-scheduling.ipynb b/examples/other/2-scheduling.ipynb index 4c4c029e..2fc6856b 100644 --- a/examples/other/2-scheduling.ipynb +++ b/examples/other/2-scheduling.ipynb @@ -13,15 +13,27 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 1, "metadata": {}, "outputs": [ { - "name": "stdout", + "name": "stderr", "output_type": "stream", "text": [ - "The autoreload extension is already loaded. To reload it, use:\n", - " %reload_ext autoreload\n" + "/home/laurin.luttmann/miniconda3/envs/cuda1203/lib/python3.10/site-packages/lightning_utilities/core/imports.py:14: DeprecationWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html\n", + " import pkg_resources\n", + "/home/laurin.luttmann/miniconda3/envs/cuda1203/lib/python3.10/site-packages/lightning/fabric/__init__.py:41: Deprecated call to `pkg_resources.declare_namespace('lightning.fabric')`.\n", + "Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages\n", + "/home/laurin.luttmann/miniconda3/envs/cuda1203/lib/python3.10/site-packages/pkg_resources/__init__.py:2317: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('lightning')`.\n", + "Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages\n", + " declare_namespace(parent)\n", + "/home/laurin.luttmann/miniconda3/envs/cuda1203/lib/python3.10/site-packages/lightning/pytorch/__init__.py:37: Deprecated call to `pkg_resources.declare_namespace('lightning.pytorch')`.\n", + "Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages\n", + "/home/laurin.luttmann/miniconda3/envs/cuda1203/lib/python3.10/site-packages/pkg_resources/__init__.py:2317: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('lightning')`.\n", + "Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages\n", + " declare_namespace(parent)\n", + "/home/laurin.luttmann/miniconda3/envs/cuda1203/lib/python3.10/site-packages/tqdm/auto.py:21: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html\n", + " from .autonotebook import tqdm as notebook_tqdm\n" ] } ], @@ -59,7 +71,7 @@ " \"min_processing_time\": 1, # the minimum time required for a machine to process an operation\n", " \"max_processing_time\": 20, # the maximum time required for a machine to process an operation\n", " \"min_eligible_ma_per_op\": 1, # the minimum number of machines capable to process an operation\n", - " \"max_eligible_ma_per_op\": 3, # the maximum number of machines capable to process an operation\n", + " \"max_eligible_ma_per_op\": 2, # the maximum number of machines capable to process an operation\n", "}" ] }, @@ -91,11 +103,15 @@ { "cell_type": "code", "execution_count": 5, - "metadata": {}, + "metadata": { + "jupyter": { + "source_hidden": true + } + }, "outputs": [ { "data": { - "image/png": "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", + "image/png": "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", "text/plain": [ "
" ] @@ -171,7 +187,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Build a Model to Solve the FJSP\n", + "## Build a Model to Solve the FJSP\n", "\n", "In the FJSP we typically encode Operations and Machines separately, since they pose different node types in a k-partite Graph. Therefore, the encoder for the FJSP returns two hidden representations, the first containing machine embeddings and the second containing operation embeddings:" ] @@ -208,8 +224,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "torch.Size([1, 5, 32])\n", - "torch.Size([1, 60, 32])\n" + "torch.Size([1, 60, 32])\n", + "torch.Size([1, 5, 32])\n" ] } ], @@ -235,7 +251,7 @@ { "data": { "text/plain": [ - "tensor([[ 0, 5, 10, 16, 20, 24, 29, 34, 40, 44]])" + "tensor([[ 0, 4, 9, 15, 21, 27, 31, 37, 41, 45]])" ] }, "execution_count": 8, @@ -250,7 +266,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 9, "metadata": {}, "outputs": [ { @@ -270,7 +286,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 10, "metadata": {}, "outputs": [], "source": [ @@ -286,7 +302,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Visualize solution construction\n", + "## Visualize solution construction\n", "\n", "Starting at $t=0$, the decoder uses the machine-operation embeddings of the encoder to decide which machine-**job**-combination to schedule next. Note, that due to the precedence relationship, the operations to be scheduled next are fixed per job. Therefore, it is sufficient to determine the next job to be scheduled, which significantly reduces the action space. \n", "\n", @@ -299,7 +315,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 20, "metadata": {}, "outputs": [ { @@ -313,7 +329,7 @@ }, { "data": { - "image/png": "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", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAnYAAAHWCAYAAAD6oMSKAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy80BEi2AAAACXBIWXMAAA9hAAAPYQGoP6dpAACjGElEQVR4nOzdeVxU5f7A8c8MMOz7riwqKIpouGSamlqZe1rdvFlZhrfS6ucamllpVmqZ1/JW3psrLV695VJ6u1ppmFIa7rsgKqiobMMOw8DM7w9icmSHmQHp+369eL2Yc57zPN9zZvvOc87zHIVer9cjhBBCCCFue8qmDkAIIYQQQpiGJHZCCCGEEC2EJHZCCCGEEC2EJHZCCCGEEC2EJHZCCCGEEC2EJHZCCCGEEC2EJHZCCCGEEC2EJHZCCCGEEC2EJHZCCCGEEC2EJHZCCHGT2NhYFAoFX3/9dVOHIoQQ9SaJnRCiWhcvXuSll16iQ4cOODg44ODgQHh4OC+++CLHjx83e/sLFy5k69atlZb/8ssvzJ8/n+zs7HrVFxsby8MPP4yfnx8qlQofHx9GjRrF5s2bTRNwA6xfv54PPvigydoXQrQsktgJIaq0fft2IiIi+Pzzz7n//vtZtmwZH374IcOGDeO7774jMjKS5ORks8ZQU2L35ptv1iuxmzdvHoMGDeLkyZM8//zz/POf/yQ6Opr8/HweeeQR1q9fb7rA60ESOyGEKVk3dQBCiOYnKSmJxx57jODgYHbt2oW/v7/R+nfffZdPPvkEpfL2+G349ddfs2DBAv7yl7+wfv16bGxsDOuio6PZuXMnWq3WojEVFBTg6Oho0TaFEH8CeiGEuMVzzz2nB/T79++v8zbHjh3TP/300/q2bdvqbW1t9b6+vvpnnnlGn5GRYVRu3rx5ekCfmJiof/rpp/Wurq56FxcX/YQJE/QFBQWGckClv6efftqw/a1/Fy9erDa2jh076j08PPS5ubm17sdPP/2kB/QbN27Uv/322/rWrVvrbW1t9ffee68+MTHRqOzPP/+s/8tf/qIPDAzUq1QqfUBAgH7atGn6wsJCo3JPP/203tHRUX/+/Hn9sGHD9E5OTvrRo0frBwwYUGk/goODaz/YQghRDemxE0JUsn37dkJDQ7nrrrvqvM0PP/zAhQsXeOaZZ/Dz8+PUqVN8+umnnDp1iv3796NQKIzKjx07lrZt27Jo0SIOHz7MqlWr8PHx4d133wXg888/529/+xu9evXiueeeAyAkJARHR0cSEhL497//zbJly/Dy8gLA29u7yrgSExM5e/YsUVFRODs713l/Fi9ejFKp5OWXXyYnJ4f33nuPJ554ggMHDhjKfPXVVxQWFjJ58mQ8PT357bff+Mc//sGVK1f46quvjOorLS1lyJAh9OvXj/fffx8HBwf8/PzIycnhypUrLFu2DAAnJ6c6xyiEEJU0dWYphGhecnJy9IB+zJgxldap1Wp9enq64e/mnqlbe6n0er3+3//+tx7Q//zzz4ZlFT1uUVFRRmUfeughvaenp9EyR0dH/dNPP12p3iVLltTaS1fhm2++0QP6ZcuW1VpWr/+jx65Tp056jUZjWP7hhx/qAf2JEycMy6ra50WLFukVCoU+OTnZsOzpp5/WA/pXXnmlUvkRI0ZIL50QwmRujwtkhBAWk5ubC1TdczRw4EC8vb0Nfx9//LFhnb29veH/4uJiMjIy6N27NwCHDx+uVNekSZOMHvfv35/MzExD+6ZSUV99eusAnnnmGVQqlVF8ABcuXDAsu3mfCwoKyMjI4O6770av13PkyJFKdU6ePLleMQghRH1JYieEMFKRAOXn51da969//YsffviBL774otK6rKwspk6diq+vL/b29nh7e9O2bVsAcnJyKpUPCgoyeuzu7g6AWq1u9D7czMXFBYC8vLx6bVeX+FJSUpgwYQIeHh44OTnh7e3NgAEDgMr7bG1tTUBAQL3jF0KI+pBr7IQQRlxdXfH39+fkyZOV1lVcc3fp0qVK68aOHcsvv/xCdHQ0kZGRODk5odPpGDp0KDqdrlJ5KyurKtvX6/WN24FbdOzYEYATJ07Ua7va4isrK2Pw4MFkZWUxe/ZsOnbsiKOjI1evXmXChAmV9tnW1va2GUUshLh9SWInhKhkxIgRrFq1it9++41evXrVWl6tVrNr1y7efPNN3njjDcPyxMTERsVx64CL2pZXpUOHDoSFhfHNN9/w4YcfmmxwwokTJ0hISCAmJoannnrKsPyHH36oVz312RchhKiN/HwUQlQya9YsHBwciIqK4saNG5XW39qrVtG7devyxk686+joWOUkxBXzv9V1guI333yTzMxM/va3v1FaWlpp/ffff8/27dvrFVtV+6zX6/nwww/rVY+jo2OVp6qFEKIhpMdOCFFJ+/btWb9+PePGjSMsLIwnnniCO+64A71ez8WLF1m/fj1KpdJwzZiLiwv33HMP7733HlqtltatW/P9999z8eLFRsXRo0cPfvzxR/7+97/TqlUr2rZty1133UWPHj0AmDt3Lo899hg2NjaMGjWq2gl///rXv3LixAneeecdjhw5wrhx4wgODiYzM5MdO3awa9euet95omPHjoSEhPDyyy9z9epVXFxc2LRpU72vEezRowcbN25kxowZ3HnnnTg5OTFq1Kh61SGEEAZNNyBXCNHcnT9/Xj958mR9aGio3s7OTm9vb6/v2LGjftKkSfqjR48alb1y5Yr+oYce0ru5ueldXV31jz76qD41NVUP6OfNm2coVzHdSXp6utH2a9eurTSFydmzZ/X33HOP3t7e3jBBcYW33npL37p1a71Sqazz1Ce7du3Sjx49Wu/j46O3trbWe3t760eNGqX/5ptvDGUqpjv56quvjLa9ePGiHtCvXbvWsOz06dP6+++/X+/k5KT38vLSP/vss/pjx45VKlcxQXFV8vPz9Y8//rjezc1NJigWQjSaQq838ZXKQgghhBCiScg1dkIIIYQQLYQkdkIIIYQQLYQkdkIIIYQQLYQkdkIIIYQQLYQkdkIIIYQQLYQkdkIIIYQQLYRMUGwhOp2O1NRUnJ2d5RZCQgghbmt6vZ68vDxatWol90BuZiSxs5DU1FQCAwObOgwhhBDCZC5fvmy4A41oHiSxsxBnZ2eg/E3g4uLSxNEIIYQQDZebm0tgYKDhu000H5LYWUjF6VcXFxdJ7IQQQrQIcmlR8yMnxoUQQgghWghJ7IQQQgghWghJ7IQQQgghWghJ7IQQQgghWghJ7IQQQgghWghJ7IQQQgghWghJ7IQQQgghWghJ7IQQQgghWghJ7IQQQgghWghJ7IQQQgghWghJ7IQQQgghWghJ7IQQQgghWghJ7IQQQgghWghJ7IQQQgghWgjrpg7gz+bo0aM4OTk1dRgmpdFosLW1bdbtmCpGc++rOer38vIiKCjIpHU2hZSUFDIyMpo6DIux1PuqIW5+Td1uz0t9j2tLef+IPw9J7CxswIABTR2CySmVoNM173ZMFaNCoUSvN9/OKgFT125n78C5s2du6y+nlJQUwjqGUVxU3NShWIw5Xgum4mBnx5lz5wBuv+dFAejrXtzO3o5zZ8/d1u8f8eciiZ2FPdqjC609XJs6DJM5ey2NHScTmDPHm6Agldna+e23AtauzW5QOykpJSxalM7IO5+hc2CvBsdwPTuFmN2LmOLlxT2Opu91TSrRMPvaNVz7P4l9u54mqVObeZnM7UvJyMi4rb+YMjIyKC4qJuC5AGxbNc9eLFPKO55H2uY03vX3J0TVvPa34nVa0Ut3Oz0vFce1rvFqUjVc+fTKbf/+EX8ukthZmJeLIwHuLSexS8vNByAoSEX7Dub7YE9JKWl0O55OfgR6d2h0LAHWNoTb2TW6nupYu/pi6xdqtvpvZ7atbLFvY9/UYZidJlUDQIjK1qyvNVO5XZ6XiuN6u8QrREPI4AkhhBBCiBZCEjshhBBCiBZCEjshhBBCiBZCEjshhBBCiBZCEjshhBBCiBZCEjshhBBCiBZCEjshhBBCiBZCEjshhBBCiBZCEjshhBBCiBZCEjshhBBCiBZCEjshhBBCiBZCEjshhBBCiBZCEjshhBBCiBZCEjshhBBCiBbCuqkDqMn8+fPZunUrR48erbbMwIEDiYyM5IMPPrBYXM1BrzGP0r5XHzxaBVBaUkJqwhl+/nId6mtXDWUcXN0Y8GQUwV27obKzJ+vaFQ5s/g+Jv/1i8XiDg58nNGQWKZfXkpj4NgDdu32Ju3tvo3JXrq7n3LnXG1wngItLN0JCZuLqcgd6fRmdOp5i+vRBjBg3gHsG98Tdz4HSEh3XL+Tw65Yksm8UGtXr29aF3qND8G3rgl6nJ+NKPt8uP1ptHPY9e+I5MQq7zp2x8fHh8osvkb9rl2F9p7NnqtzuxntLyFqzpk77CtCrrQfP3dOOLq1d8XWx47nPDvL96Rt13l5Ur4dvDyZ0nkC4Zzg+Dj5M3T2V3Zd3A2CtsOb/uv0f/QP609qpNfnafPZf288Hhz4gvSi9iSMv5/ncszgPHoyqXTv0xcUUHTlC2tKllFy8ZCijUKnwmT0blxHDUdrYkB8Xx/U3F1CWmdlkcdd03G/1eu/XGRs2lnd/e5cvznzRoPbuan8Xn3z7Cb0G9sLX2bdSe2/3fZvRoaONttlx144GtSVEU6lXj92ECRNQKBRMmjSp0roXX3wRhULBhAkTTBVbnWzevJm33nrLYu1lZmYSEBCAQqEgOzvbYu3eKqBTBEd3/pf1r73M1++8jtLKmr/MfQtrW1tDmWEvzsC9VQBb33uLmOgXSfztV0ZOn41Pm3YWjdXZuQutW40jL69ygnP16gb27rvL8Hf+/LuNqtPFpRvdIteSlbWX+IMPE3/wIU6dWodOp6PjHW05uecKm949xLcfHkVppeDBKZFYq/54G/i2dWHUlEgun8ni68UH+WrxQU7EXkGv11cbi9LeHs3Zc9xYUPXrMKFff6O/1FdfRa/Tkff993Xa1woONlacuZbLG9+crNd2onb21vYkqBN458A7ldbZWdvRybMT/zr2L/66/a9M/2k6bVza8I97/9EEkVbN4c47Ua9fz6W/PkZK1EQU1jYErVqNwt7eUMZ3zhycBw3k6tRpJD/1FNY+PgT8Y3nTBU3Nx/1m9wbdS1fvrtwobNwPGXuVPceOHWP+d/OrLbPvyj4GbhzIwI0D6f1+b8aNG9eoNoWwtHr32AUGBrJhwwaWLVuG/e8fGsXFxaxfv56goCCTB1gbDw8Pi7Y3ceJEunbtytWrV2svbEabF80zerzjk2W8sGo9vu1CuXrmFACtwjrx46pPuJ6UAMCBzRvpMXw0vu1CSbt0wSJxWlk5ENF5GWfOvkrbNi9WWl+mK6KkJMNkdXZoP5fLl2NITv6XYVlS0llKSkpY+so67uxwv2H5rpgzTHy/P95BLlw7nw1Av0fbc3z3ZQ7vTDaUu7VH71YFe/dSsHdvtevLMoz3z/neeyk8cADtlSu17uvNYhPSiU1oHj1ELc2+q/vYd3Vflevytfk898NzRssWHljIhpEb8HP043rBdUuEWKPLzxrHlzpnDh1+/QW7zp0pOngQpZMTbo88zNXoaAoPHADg2pxXCfnfd9jdcQfFx441Rdg1HvcKPg4+vNrrVZ7/8Xk+vu/jRrUXeyqWLz79gpD5IdWWKdGVkFlc3otZVFDUpD/ghWiIel9j1717dwIDA9m8ebNh2ebNmwkKCqJbt25GZXfs2EG/fv1wc3PD09OTkSNHkpSUZFTmypUrjBs3Dg8PDxwdHenZsycHfv/gqfD555/Tpk0bXF1deeyxx8jLyzOsGzhwINOmTTM8btOmDQsXLiQqKgpnZ2eCgoL49NNPjeq7fPkyY8eOxc3NDQ8PD0aPHs2lS5dq3fcVK1aQnZ3Nyy+/XGtZS7N1cASgOD/fsCz13BnC+vTHztEJFArC7r4HaxsVl0+dsFhcYR3eJCPjJ9Tqqk//+vk+SP9+8dzV63+EtHsZpdKuwXXa2Hji6tqNEm0mPXp8Rf9+B+jebT1+fndWWY+tffnvGk2hFgB7Zxv82rlSlKfl4egePPNeP8bM6IZ/iGt9drlGVp6eOA0YQPamTSarU1ies8oZnV5HXkle7YWbgNLZGQBdTg4Adp07o1CpKPjlV0OZkosX0V5NxSEysilCrBMFChb2W8jaU2tJyk6qfQMT6OnXk9ixsXw75lveHPGmxTsPhGisBg2eiIqKYu3atYbHa9as4ZlnnqlUrqCggBkzZnDw4EF27dqFUqnkoYceQqfTAZCfn8+AAQO4evUq3377LceOHWPWrFmG9QBJSUls3bqV7du3s337dvbs2cPixYtrjG/p0qX07NmTI0eO8MILLzB58mTOnTsHgFarZciQITg7O7N3717i4uJwcnJi6NChlJSUVFvn6dOnWbBgAZ999hlKZTMbc6JQMPDpZ7l69hSZl//oadr+wbtYWVvz4poNTPtiC4OffZFvlr5D9o1rFgnL12ckzs6dSbqwpMr1129s49TpmRw+8gSXklfg5zeGzuF/r7HOkJAHq63T3j4QgHZtp5CauoEjR58hL+8Uo0ZtIDQ01Liworx3LvV8NlmpBQC4eJX3QPca2ZbT+1LZ9o+jpF/OY/S0brj62GMKrmPGoCsoIO/7H0xSn7A8lVLF9B7T+d/F/1GgLWjqcCpTKPB9dQ6Fhw6hSUwEwNrbC11JCbo840S0NDMDKy+vpoiyTqIioijTl/HlmS8t0t6+q/uYu28uz37/LB8c+oC7gu/if//7n0XaFsJUGjR44sknn2TOnDkkJ5cnEXFxcWzYsIHY2Fijco888ojR4zVr1uDt7c3p06eJiIhg/fr1pKenEx8fb/hVdOsXsE6nY926dTj//gt0/Pjx7Nq1i3feqf6ajOHDh/PCCy8AMHv2bJYtW8ZPP/1EWFgYGzduRKfTsWrVKhQKBQBr167Fzc2N2NhYHnjggUr1aTQaxo0bx5IlSwgKCuLChdpPY2o0GjQajeFxbm5urds01H1Rk/EKDGbDvFlGy/v+9UlsHRz56q25FOXlEnpnb0ZOm83GebPJuCkBNAdbW386dHidI0eeQqerOmFOTd1g+L+gIIGSknS6d/sCe/sgiopSKpUPCAigb983OXHi6SrrVPz+O+Xq1X9z7Vp5j1ji+dM4OvYhKiqKcz/88aU24LEOeLR2ZPOSw39sX/5y4NTeq5z9tTz5zbh8noAwDzrd7c/JU40/XeX2yMPkbN+OvoYfEaL5slZY8/7A9wF4a7/lru2tD7833sC2fXuSH3+iqUNplHCPcJ4Mf5Kx28ZarM0dl/4YKJGYncjxE8f5aepPJP6eIAtxO2hQYuft7c2IESNYt24der2eESNG4FXFr77ExETeeOMNDhw4QEZGhqEnLiUlhYiICI4ePUq3bt1q7Opu06aNIakD8Pf3Jy0trcb4unbtavhfoVDg5+dn2ObYsWOcP3/eqE4ov07w1tPEFebMmUOnTp148skna2z3ZosWLeLNN9+sc/mGuveZSYR0v5MN818hP+uP0W2uvn50GzqKdTNfIPNKeZKUnnyR1h07EzlkJD+uaty1KrVxdo5ApfLizju/NSxTKq1xc+tFQOvx/BTbCdAZbZOTcxQAe/vgKhO7Hj164ODgXW2d+w8MBqCg4LzRdmp1IkFBQZyj/NrD/o91ILiLF1uWHqYg+4/kuyCnPNnKumbcC6O+XoCzR+2niGtj36MHtu3acXX6jEbXJSyvIqlr5diKid9PbJa9db6vv4bTwAEkPzme0ht/DDQoTc9AqVKhdHY26rWz9vSqdA1oc9Hdtzsedh58/5c/BhlZK615uefLPBn+JEM3DTV7DJezL5Oeno7tTYPShGjuGjzdSVRUFC+99BIAH39cdZIwatQogoODWblyJa1atUKn0xEREWE45WlvX/vpLRsbG6PHCoXC6FRtfbfJz8+nR48efPll5a59b2/vKuvbvXs3J06c4OuvvwYwjJD08vJi7ty5VSZwc+bMYcaMP77Ac3NzCQwMrDHu+rr3mUmE9urDf96cQ2668WgxG5Xt77EaHyu9TmfoqTQntfoX9h8YZrQsvNO7FBQmkZz8KbcmdQDOzuEAlGiqTtx37drFxo33EdxGVWWdRUUpFGuu4+BgPOrXza0dycnlyWD/xzrQLtKbrX8/TF5msVG5vMxi8rM1uPk6GG/v40DKqcZPCeH2l0coOnkSze+XBYjbR0VSF+QcxMSdE8nR5DR1SJX4vv4azvffT/JTT6O9ZXBX8alT6EtKcOzT23AZgKptG2xat6KwhumkmtK2C9vYf22/0bJ/Dv4n25O2s/X8VovE4Ofsh6enJxcvXrRIe0KYQoMTu4pr0hQKBUOGDKm0PjMzk3PnzrFy5Ur69+8PwL59xqOfunbtyqpVq8jKyrLYBardu3dn48aN+Pj44OLiUqdtNm3aRFFRkeFxfHw8UVFR7N27l5CQqkdX2dramvVX3n0TJ9Ox7wC+WfI2JUWFOLi6AVBSWEiptoSs1Cuor6Uy+NmX2PP5Gorycwm9sw/BXSLZ8u4Cs8VVoaysgIKChFuWFaLVZlNQkIC9fRC+vg+SmRmLVqvGyakj7dvPRa0+QH5B1YlPfn4+avU5vLxtq6wTICV5Je3aTSM//wx5+Wfw93sYN7dQVq9ezad//5KwXr58t+IE2uIyHFzKE0RNUSll2vJE88j3yfQa1Y7Mq/lkXM4nrLcf7n4O7Pi0+ilGFA4OqG4aEa4KCMC2Y0fKcnIovVZ+Slfp6IjLkCHcePe9BhzNcg4qK9p4OhoeB3o4EO7vQnZhCak5xTVsKWpjb21PkPMfz2Fr59aEuYeRU5JDRmEGfx/4dzp5duLFXS+iVCjxtPMEIKckh1JdaVOFbeD3xhu4jBzBlRdfQldQYLhuTpeXh16jQZefT/amzfjOfoWynBx0+fn4vvYahUeONNmIWKj5uF8vuF4pgS7VlZJRlMGl3EsNas/B1oE77riDQN/ASu3laHKYfMdkfkz+kYyiDAKdA5k2eBrnz5+noKD59c4KUZ0GJ3ZWVlacOXPG8P+t3N3d8fT05NNPP8Xf35+UlBReeeUVozLjxo1j4cKFjBkzhkWLFuHv78+RI0do1aoVffr0aWhoNXriiSdYsmQJo0ePZsGCBQQEBJCcnMzmzZuZNWsWAQEBlba5NXnL+P3URadOnXBzczNLnLWJfGAEAH+dbzyQZMcnyzi1Zxe6sjI2L55P/8efZsys11HZ2aO+cY3/fbKMi0cPNkXIRnQ6LR7udxMUOAGl0gGN5hrpaTu5eKlxp4gvX1mH0sqW9u1fw8bGlbz8s2zfPo4LFy5w3+jyyZAfmtndaJtdMac5+2v5lBXHd1/B2saKvn9pj52jTfnkxB8eJTejqFJbFewjOhP82WeGx75zyl/n2Vu2cG3OqwC4jBgOCgW5//1vg/eta4ArG577433x+sjyHs6vD13m5a+ON7heAZ09O7N26B8DwmbdWX696jfnv+GTo58wKGgQAJseNB7N/MyOZzh4o+nfT+6Pl8+1Fvz5Z0bLU+fMIWfLVgBuLFqEXqcj4MMPUahU5O+L4/oC8//Iq0lNx/21uNdM3l7X4K58dfSrKtt7a/9bdHDvwIMhD+KiciGtKI295/YydfhUGUAhbiuNuvNETT1eSqWSDRs2MGXKFCIiIggLC2P58uUMHDjQUEalUvH9998zc+ZMhg8fTmlpKeHh4dWe2jUFBwcHfv75Z2bPns3DDz9MXl4erVu35r777qtzD15zsPSvI2stk309lW1/X2SBaOrm8JE/LubWaK5x+MjjJq2zQnLyv4zmsbt+vfw6ugn3vmo0j121de5MNprHrjaFv8VzpmOnGstk/+crsv/zVY1larP/QhZtXml4Yiiqd/DGQbrEdKl2fU3rmoPaXn8A+pISbrz1FjcsOKF7bWo77rdq7HV1+xP2o1AoCJkfgn2bypcCTfrRePL9oktFtV7TLURzU6/Ebt26dTWu37p1q9Hj+++/n9OnTxstu3UG/+DgYMO1a7eaP38+8+fPN1o2bdo0o3nrbh2JW9V8dLfekszPz4+YmJgq26yLgQMH1ngnAiGEEEKIptDMJmQTQgghhBANJYmdEEIIIUQLIYmdEEIIIUQLIYmdEEIIIUQLIYmdEEIIIUQLIYmdEEIIIUQLIYmdEEIIIUQLIYmdEEIIIUQLIYmdEEIIIUQLIYmdEEIIIUQLIYmdEEIIIUQLIYmdEEIIIUQLIYmdEEIIIUQLIYmdEEIIIUQLIYmdEEIIIUQLYd3UAfzZZOQWYGvdcg57VkEhACkpJWZt5/p1bYPbqdgmM/86l9MTGh5DdgoAV0q1nC4ubnA91Ukq0QBQmnMDzfXzJqlTm3nZJPU0F5pUTVOHYBElGeWv2YrXRHNSVUy3y/NScVzrGu/tsl9C3Eyh1+v1TR3En0Fubi6urq5NHYZZKJWg0zXvdkwVo0KhRK83384qAVPXbmfvwLmzZwgKCjJxzZaTkpJCWMcwiotMn1A3V+Z4LZiKg50dZ86dA7j9nhcFUI9vPTt7O86dPXdbv3/MoeI7LScnBxcXl6YOR9yk5XQd3Sb27NmDk5NTU4dhUhqNBltb22bdjqliNPe+mqN+Ly+v2/5LKSgoiHNnz5GRkdHUoViMpd5XDXHza+p2e17qe1xbwvtH/LlIj52FyK8bIYQQLYV8pzVfMnhCCCGEEKKFkMROCCGEEKKFkMROCCGEEKKFkMROCCGEEKKFkMROCCGEEKKFkMROCCGEEKKFkMROCCGEEKKFkMROCCGEEKKFkMROCCGEEKKFkMROCCGEEKKFkMROCCGEEKKFkMROCCGEEKKFkMROCCGEEKKFkMROCCGEEKKFkMROCCGEEKKFkMROCCGEEKKFkMROCCGEEKKFkMROCCGEEKKFkMROCCGEEKKFsG7qAIQQQgjRMpWVlaHVaps6jNuajY0NVlZWdS4viZ0QQgghTEqv13P9+nWys7ObOpQWwc3NDT8/PxQKRa1lJbETQgghhElVJHU+Pj44ODjUKSERlen1egoLC0lLSwPA39+/1m0ksRNCCCGEyZSVlRmSOk9Pz6YO57Znb28PQFpaGj4+PrWelpXBE0IIIYQwmYpr6hwcHJo4kpaj4ljW5XpFSeyEEEIIYXJy+tV06nMsJbETQgghhKin2NhYFApFsxsgItfYCSGEEMIirmYXoS4osVh77o4qWrvZ17n8hAkTyM7OZuvWrWaLqbi4mJkzZ7JhwwY0Gg1Dhgzhk08+wdfX1yT1S2JnYUePHsXJycns7Wg0Gmxtbc3eTkPaNXVsTdGmKTXn2KrT1DGbqv2m3g8ALy8vgoKCKi1PSUkhIyOjCSKqn+ribynkeTCdq9lF3Pt+LJpSncXatLVWsvvlgfVK7sxt+vTp/Pe//+Wrr77C1dWVl156iYcffpi4uDiT1C+JnYUNGDDAIu0olaCz3HvHQKFQotfX3HBdypi6zaY6HnXRnGOrTlPHrFQo0ZngNWSqehrD3t6Os2fPGX0pp6SkENYxjOKi4iaMrG7s7O04d0v8LYU8D6alLiixaFIHoCnVoS4oaVBip9FoiI6OZsOGDeTm5tKzZ0+WLVvGnXfeaVQuLi6OOXPmkJCQQGRkJKtWrSIiIqLKOnNycli9ejXr16/n3nvvBWDt2rV06tSJ/fv307t37/rv5C0ksbOwGTM8ad/ezqxtpKSUsGhROiPvfIbOgb3M2tbNTl3+je3xa3n63jn4uVX94VKXMvVxPTuFmN2LeGuQLcPbV/1y/i6xlNd/0jBnjjdBQapGt2lKv/1WwNq12c0ytupUvL6i+09kULvGfwjV108X9rNk72qWj3yNUM/gBtdzPjOZKdvfZmhEBzr6+5gwwrpLy81n/YGjZGRkGH0hZ2RkUFxUTMBzAdi2ar69uZpUDVc+vVIp/pZCnoc/t1mzZrFp0yZiYmIIDg7mvffeY8iQIZw/fx4PDw9DuejoaD788EP8/Px49dVXGTVqFAkJCdjY2FSq89ChQ2i1Wu6//37Dso4dOxIUFMSvv/4qid3tKCBARfsOlvmA8HTyI9C7g0XaAriuTgHAzy2o2nbrUqYh2ror6O5f9dw+ZzLKAAgKstyxr6uUlPJrTZpjbLUJdPWni1+Yxds9n5kMQKhnsEna93B0IMDdtdH1mINtK1vs2zSfU0h/VvI8/PkUFBSwYsUK1q1bx7BhwwBYuXIlP/zwA6tXryY6OtpQdt68eQwePBiAmJgYAgIC2LJlC2PHjq1U7/Xr11GpVLi5uRkt9/X15fr16yaJXUbFCiGEEELcJCkpCa1WS9++fQ3LbGxs6NWrF2fOnDEq26dPH8P/Hh4ehIWFVSpjSZLYCSGEEEJYgJ+fHyUlJZWmSLlx4wZ+fn4maUMSOyGEEEKIm4SEhKBSqYxGqmq1WuLj4wkPDzcqu3//fsP/arWahIQEOnXqVGW9PXr0wMbGhl27dhmWnTt3jpSUFKOev8aQa+yEEEIIIW7i6OjI5MmTiY6OxsPDg6CgIN577z0KCwuZOHGiUdkFCxbg6emJr68vc+fOxcvLizFjxlRZr6urKxMnTmTGjBl4eHjg4uLC//3f/9GnTx+TDJwASeyEEEIIIQDQ6XRYW5enRosXL0an0zF+/Hjy8vLo2bMnO3fuxN3d3WibxYsXM3XqVBITE4mMjGTbtm2oVNXPcrBs2TKUSiWPPPKI0QTFpiKJnRBCCCHMzt1Rha210uITFLs71n0qqbS0NEJDQwGws7Nj+fLlLF++vMqyAwcORK/XAzBy5Mg6t2FnZ8fHH3/Mxx9/XOdt6kMSOyGEEEKYXWs3e3a/PLBZ3lJMrVYTFxdHbGwskyZNskBk5iOJnRBCCCEsorWbfbO6vVeFqKgo4uPjmTlzJqNHj27qcBpFEjshhBBC/Klt2bKlqUMwGZnuRAghhBCihZDETgghhBCihZDETgghhBCihZDETgghhBCihZDETgghhBCihWjWo2Lnz5/P1q1bOXr0aLVlBg4cSGRkJB988IHF4jKn4ODnCQ2ZRcrltSQmvl1p/R13rMHLcwDHjk8iI+OHBrXRfUgw7bp54+7nQGmJjusXcvh1SxLZNwoNZQY+HkZAJw8cXVVoNWVcv5DDL5uNy9xa1/iiXozZ04vzu4pAW3XbMxY9zbq7FvLZuzto36H2OMbM6EbrDsazfJ/8+Sp71p+rXPm04+AWXGnxnf/7J2yeXI8jVNmtz4udXWv63v1zlWVPnHiJtPT/Naq9hqjqtaNSeREa+goe7v2wtnakoPACly59Qnr6TrPG4niXP469/bF2twVAe6OQvF0pFCeosXK3xX92ryq3y/zyDEUnMkzSDoDSyQbX4W2xa++OwtaK0vQi8n5KoehkZp3buGPwMO4YPBwXb9/yGK+k8Oumf3Pp6CEArGxsGDh+ImF334OVjQ2Xjh1m1+oVFOZk17kNU+nh24MJnScQ7hmOj4MPU3dPZffl3Yb1k++YzLC2w/B18KVUV8rpzNMsP7KcExknLB5rS1fbcwHQ1rUt03tMp6dvT6wUVlzIucD02OlcL7jeRFGLlqBeid2ECROIiYnh+eef55///KfRuhdffJFPPvmEp59+mnXr1pkyxhpt3rwZGxsbs7aRmZnJE088wfHjx8nMzMTHx4fRo0ezcOFCXFxcTNaOs3MXWrcaR17emSrXBwY+A7/Pct0YrTq4cXLPFdIu5aFQKug9ph0PTolk/Zv7KS0pnxE8LSWPc7/dIF9djK2DNb1GtuXBqZF8PvcXoxBuruv05QP0fiiEiW/cx3/eOmSoq8Id9wWiR1evOABO7b3Kb9suGh5rS8qq3rFPB4HS6o/HPuHw1Dck/7q5EUer6ueluPgae/fdZVSudavHCAp6lsysPY1qryGqe+2Eh7+PtbULx48/R4lWjZ/fg3SJ+Ae/xY8hP/+02eIpy9WQu+MipRlFoFDg0N0Hz6fCubH8CKXphaS+vd+ovONd/jjf05ric1mmayetEI+xYSjtrcmIOYWusBSHSG88Hu9E2kdHoI7fnXmZmexdH4P6eioKBYTfcx9jol/j89lTybySwsCnnqVd955sW7YYTWEB90VN5sGZr7LhjVn12hdTsLe2J0GdwJbzW/hw0IeV1ifnJrPwwEKu5F3B1tqW8Z3G86/B/2LE5hGoNWqLx9uS1fZcBDgH8NnQz9h8fjOfHP2EfG0+oW6hlJRZbvJe0TixsbEMGjQItVqNm5tbU4djUO8eu8DAQDZs2MCyZcuwty+fZLC4uJj169cTFBRk8gBr4+HhYfY2lEolo0eP5u2338bb25vz58/z4osvkpWVxfr1603ShpWVAxGdl3Hm7Ku0bfNipfVOTp0ICpxI/MEx9O93oFFtbf/HMaPHu2LOMPH9/ngHuXDtfDYAp/elGtbnZcKBby/w2Ot34expT25GUZV1Xb5wnX9OeIv09HSjugC8ApyIvD+QuX/7Ox9uerXOcQCUlugozK3Dh13hLb0w/aZD1gXSTu2tfdtqVP+86CgpMe5Z8vZ+gLS07ygrM+7VNLeaXjuuLt05l/AGuXnHAbh06WOCAp/BxTnCrIld8RnjBC33+2ScevujCnKmNK0QXb5xl659Z0+KjmegL6nfrYZqa0cV7EL21vNor+QDkLf7Mk59W2PT2gkO162NC4d/M3oct/Fz7nhgOP7tw8jLzKDLvYP57/L3uXyq/BjvXPEBzyz7J/7tw7iWWEXPshntu7qPfVf3Vbv+u4vfGT1ecnAJj3R4hA7uHThwvXGfK8JYbc/FlG5T2Ht1L8sOLTMsu5J3xRKhNa3sy5U/q83JwRPcAutcfMKECWRnZ7N161azhfTpp5+yfv16Dh8+TF5enskTw3ondt27dycpKYnNmzfzxBNPAOW9ZkFBQbRt29ao7I4dO3j77bc5efIkVlZW9OnThw8//JCQkBBDmStXrhAdHc3OnTvRaDR06tSJjz/+mLvu+qM35PPPP+f1119HrVYzbNgwVq5cibOzM1D5VGybNm147rnnOH/+PF999RXu7u689tprPPfcc4b6Ll++zMyZM/n+++9RKpX079+fDz/8kDZt2lS5z+7u7kye/MepvODgYF544QWWLFlS38NXrbAOb5KR8RNq9S+VvpyVSjsiOi/jXML8SsmEKdjal78MNIVVnz+1VinpeLc/OelF5KuLa6zL1dW1Ul3WNkoGT+zMzxsSyFHn1zuODr186XCXL4U5JVw6kcHB/16iVFtLAmBlA13/Cr827l58NT0vN3N2jsDZuTPnzs1vVHsNUVOMObmH8fUZQUbGT5SW5uLrMwKl0hZ1tgW/xBVg38UbhcqKkpS8SqttWjuhauVE9tbzJm+nJDkX+65eFJ3NQl9cWr7eRonmQk7DmlAo6dCnHza2dqQmnMW3XShW1jaknDhqKJOVeoXc9DT823e0eGJXH9ZKa/7S4S/kluRyTt1842yJFCi4J+Ae1p5cyz/v/ycdPTpyNf8qq0+srnS6tkXJvgwf9YBSjeXatLaFlw7VK7kzt8LCQoYOHcrQoUOZM2eOyetv0OCJqKgo1q5da3i8Zs0annnmmUrlCgoKmDFjBgcPHmTXrl0olUoeeughdLryL+X8/HwGDBjA1atX+fbbbzl27BizZs0yrAdISkpi69atbN++ne3bt7Nnzx4WL15cY3xLly6lZ8+eHDlyhBdeeIHJkydz7lz5B5dWq2XIkCE4Ozuzd+9e4uLicHJyYujQoZSU1K0LPDU1lc2bNzNgwIA6la+Nr89InJ07k3Sh6kSxQ/vXyM45TEbGjyZpz4gC+j3antTz2WSlFhitihjQmuc+uIfnlw8kuLMn3354FF1Z9aeCFQoFH3zwAZfOXDOqq9+j7bmelMPFYzUkpdXEkfDbDX5Ye5qtfz/C4Z3JhN3lx/1R4bXvV8eRYOcKR7+svWw1antebtbK/1EKChLJya1jN5CJ1BbjyZP/h0JhzYB7DjNo4Bk6dnyb4ycmU1SUbPbYrH0daPXm3bR+ux/uD4WS+flpStMq92Y69vRFe6OwyqSvse1krj+DwkpJ63l9aP12X9wfLl9fllnzD5RbeQUG838xXzHtyy3c/7cX+Pb9d8i6ehlHN3dKtVo0hcbvnYKcbBzd3KuprWndE3APBx4/wKEnDzE+fDzPff8c2Zrspg7rT8XDzgNHG0eiIqKIS43j+R+eZ3fKbpYNWkZP355NHZ75FGZaNqmD8vYa2EOo0WiYMmUKPj4+2NnZ0a9fP+Lj4yuVi4uLo2vXrtjZ2dG7d29OnjxZY73Tpk3jlVdeoXfv3g2KqzYNSuyefPJJ9u3bR3JyMsnJycTFxfHkk09WKvfII4/w8MMPExoaSmRkJGvWrOHEiROcPl1+Cmj9+vWkp6ezdetW+vXrR2hoKGPHjqVPnz6GOnQ6HevWrSMiIoL+/fszfvx4du3aVWN8w4cP54UXXiA0NJTZs2fj5eXFTz/9BMDGjRvR6XSsWrWKLl260KlTJ9auXUtKSgqxsbE11jtu3DgcHBxo3bo1Li4urFq1qtqyGo2G3Nxco7+q2Nr606HD65w6NR2drnJi6eV1H+7ufaocSGEKAx7rgEdrR75fdarSuoQD19m4MJ7N7x8m+0YhQ57tjJV19S+Z8VMfJCIigvV//yMBbdPVi9Yd3dn3VWKD4ji9L5XLp7PISi0g4bcb/LjuDCHdfHDxquVeg93GQ+IPkNewi5Bre15uplTa4uv7IKmpXzWorYaqS4zt2s7A2tqFw0fGE39wDCkpq4no/A8cHTuYPb7SjCJuLD9M2idHyd9/DfdHw7D2cTAuZK3EIdKHgoMNv1i8pnZcH2iD0s6K9JUnSPvoKHl7r+L5eCesfR1qqdVYVupVPp81hS/nzuDYD/9j6IvT8WjdfHoA6iP+ejx/2fYXxn83nrircbw/4H087Mx/SYv4g1JR/jkaezmWz09/zjn1OVafXM2eK3t4NOzRpg1OGMyaNYtNmzYRExPD4cOHCQ0NZciQIWRlGV8CEh0dzdKlS4mPj8fb25tRo0ah1VYzgtACGjQq1tvbmxEjRrBu3Tr0ej0jRozAy8urUrnExETeeOMNDhw4QEZGhqEnLiUlhYiICI4ePUq3bt1qvE6uTZs2htOuAP7+/qSlpdUYX9euXQ3/KxQK/Pz8DNscO3aM8+fPG9UJ5dcJJiUl1VjvsmXLmDdvHgkJCcyZM4cZM2bwySefVFl20aJFvPnmmzXWB+Wn8FQqL+6881vDMqXSGje3XgS0Hs/Vq+uxtw/inv5HjPexy8dkZ8dz+MgTtbZRnf6PdSC4ixdblh6mILvyr6iS4jJKiovISSvixsUc/vb3e2gX6U3iwRtV1tU63Imed3Xjr91n4+pdvjwgzB1XL3v+9vf+AEyivJfzyZcf4FpSDlv/fqTWOG5242L5KTRXH+Nr/Yy4BkK7gbCx8o+NuqrtefkpthP8PhDEx2cYVlZ2XLtu2XsN1hbj/gODCQx8iv0HhlJQUJ5Y5+efxc3tTgICxnPu3OvmDbBMT1lmMWWA9mo+qgAnnPq2InvLH6dcHbp4obBRUni45vd0Q9rJ23MFp7tbcf3vhww9eNprBdi2ccGpTys4dqTmem+iKysl+8Y1ANIuJuEX0p7uwx/k3C97sbaxwdbB0ajXztHVjYLs5jkYoai0iMt5l7mcd5njGcfZ/tB2Hgp9iNUnVzd1aH8aao0arU5LUo7xd87F7It08+3WRFGJmxUUFLBixQrWrVvHsGHDAFi5ciU//PADq1evJjo62lB23rx5DB48GICYmBgCAgLYsmULY8eObZLYGzzdSVRUFC+99BIAH39c9XVMo0aNIjg4mJUrV9KqVSt0Oh0RERGGU54Vgy9qcuuIV4VCYXSqtr7b5Ofn06NHD778svIpOm9v7xrr9fPzw8/Pj44dO+Lh4UH//v15/fXX8ff3r1S2IvGrkJubS2Bg5V/4avUv7D8wzGhZeKd3KShMIjn5U7TaLK6m/ttofe+7/kdC4jtkZNTcc1mT/o91oF2kN1v/fpi8upyWUpT/Wdkoqq3rrf/7iEuXLkH3P9Yd3pnM6bg/BmKcvLSfd9ZMZfu6X8i+oKx3HF6B5Ql5YU4NCWC3J6AgHRIbPqVHbc8LN4/u9X+UjIxdaLX1G9HZWLXFqFTaAaDXG79f9PoyFE0xhaVSgeKWHl/HO30pOpOFrsCEv25/b0dh83tbt44k11P+em4EhUKBlbUNNy6cp6xUS1DEHST+9gsA7v6tcfH24Vri2cY1YiFKhRKVlaqpw/hTKdWVcirjFG1c2hgtD3YN5lr+taYJShhJSkpCq9XSt29fwzIbGxt69erFmTPGsw/cfJbRw8ODsLCwSmUsqcGJXcU1aQqFgiFDhlRan5mZyblz51i5ciX9+5f31uzbZzxCqGvXrqxatYqsrCyLjG6F8sEfGzduxMfHp1FTlVQkihpN1QmGra0ttra2tdZTVlZAQUHCLcsK0WqzDcurGjBRXJxKcXHDRlDdM64DHe705bsVJ9AWl+HgUv6hrikqpUyrw8XLjtAevlw+k0VRXglO7rZ0HxJMWYmO5Fvm/7q5ruJCDb6+vji52WNlo6RMWz6a9eYRrVcvlff2ZWfk0+2BiFrisKdDL1+ST2ZSXKDFs7UT/R5tz9UENZlXja9pMlAoIPIJOPZv0FUzLUod1OV5AbC3D8bNrRdHj01scFsNVVuMCoU1hYWX6Njxbc4nLkJbmo2312A8PPpx7PizZo3NZUgbihOyKMvWoFBZ4RDpg21bVzLW/HHtiZWnHao2rmSsq3wZgCnaKU0vQptRhPvD7cn+7wV0haXYd/bENtSN/Ji6t9lv3NNcPHqQvIx0VHb2dOw3kMDwLmxa+AYlRYWc2P0DA5/6G8UFeWgKC7nvmUmknjvTJAMn7K3tCXL+Y3aC1s6tCXMPI6ckhxxNDs92eZbYy7GkF6XjbuvOYx0fw8fBh++Tv7d4rC1dTc/F9YLrrD21lvfveZ9DNw7x2/Xf6Ne6HwMCBhC1M6oJoxYtQYMTOysrK0NGamVlVWm9u7s7np6efPrpp/j7+5OSksIrr7xiVGbcuHEsXLiQMWPGsGjRIvz9/Tly5AitWrUyyoBN6YknnmDJkiWMHj2aBQsWEBAQQHJyMps3b2bWrFkEBARU2ua7777jxo0b3HnnnTg5OXHq1Cmio6Pp27dvtSNpm7MuA8r38aGZ3Y2W74o5zdlfr1Oq1dGqvSt33BeIrYM1hbklXDufzaYlhyjK01Zb10Mzu/MhrxrV1Zg4dGU6Ajq6c8e9gVjbKslXa0g6ksbB7y5VX2m7QeAWBEc+r/U4mEIr/7+g0VwnK6vhU6qYi15fytFjEwkNieaOO1ZiZeVAYWEyp89Ek5kZa9a2rZxs8BgbhpWzCl1xKdprBWSsOYnmpmlsHHv6UparQZPY8FOWtbWTufYkLsPa4vV05/IJijOLUH+VQPG5urfp4OLKsBdm4OjuQUlhAekpl9i08A2Sfx8JG/vZStDrGDXjVaytbbh0/DA/rqr6Eg1z6+zZmbVD/xjYNuvO8rn0vjn/DQt+XUBb17Y8GPog7rbuZGuyOZVxiqf/9zRJ2TVfhiLqr6bn4rW419idspsF+xfwty5/45Ver3Ap9xIzYmdwJK3ulwgI8wkJCUGlUhEXF0dwcPnE91qtlvj4eKZNm2ZUdv/+/Ybp3tRqNQkJCXTq1MnSIRs06s4TNfV4KZVKNmzYwJQpU4iIiCAsLIzly5czcOBAQxmVSsX333/PzJkzGT58OKWlpYSHh1d7atcUHBwc+Pnnn5k9ezYPP/wweXl5tG7dmvvuu6/a/bG3t2flypVMnz4djUZDYGAgDz/8cKVE1VRqu25u1+6QGtfX5uNJNQ+nL8wpYftHx+tdV3zCj8T8tIjZD68g0Lv6i/MVCgWzH15Raxz5ag1b/17PD7mk3TDftX7b1FFVz0vShaUkXVhqlvYa4tYYi4ouceJk9dO0mIt6U82DZQBydyaTu7Nxo3Nra6c0s5isLxp3SuT7fy2vcX2ZVsuuNf9k15p/1ljOEg7eOEiXmC7Vrp8eO92C0fy51fZcAGw9v5Wt57daJiBRL46OjkyePJno6Gg8PDwICgrivffeo7CwkIkTjc/QLFiwAE9PT3x9fZk7dy5eXl6MGTOm2rqvX7/O9evXOX++/HrjEydO4OzsTFBQkEnOXtYrsavtjhK3Tuh3//33G0bAVtDfcr1LcHAwX3/9dZX1zZ8/n/nz5xstmzZtmlG2fOtI1kuXLlWq59Zbkvn5+RETE1Nlm1UZNGgQv/zyS53LCyGEEOL2o9PpsLYuT40WL16MTqdj/Pjx5OXl0bNnT3bu3Im7u/FURosXL2bq1KkkJiYSGRnJtm3bUKmqv271n//8p9HgynvuuQeAtWvXMmHChEbvQ7O+V6wQQgghWggHz/IJgy09QbGDZ52Lp6WlERoaCoCdnR3Lly9n+fKqe+0HDhxo6KwaOXJknduoqtPKlCSxE0IIIYT5uQWW3wWiGd5STK1WExcXR2xsLJMmTbJAYOYjiZ0QQgghLMMtsFnd3qtCVFQU8fHxzJw5k9GjRzd1OI0iiZ0QQggh/tS2bLHsBPPm1ASzlAohhBBCCHOQxE4IIYQQooWQxE4IIYQQooWQxE4IIYQQooWQxE4IIYQQooWQxE4IIYQQooWQ6U6EEEIIYRHX8q+h1qgt1p67rTv+Tv5mqTs2NpZBgwahVqtxc3MzSxsNIYmdEEIIIczuWv41Rm4dSUlZicXaVFmp2D5me52TuwkTJpCdnc3WrVvNEk9WVhbz5s3j+++/JyUlBW9vb8aMGcNbb72Fq6urSdqQxE4IIYQQZqfWqC2a1AGUlJWg1qjN1mtXX6mpqaSmpvL+++8THh5OcnIykyZNIjU1la+//tokbcg1dkIIIYQQt9BoNEyZMgUfHx/s7Ozo168f8fHxlcrFxcXRtWtX7Ozs6N27NydPnqy2zoiICDZt2sSoUaMICQnh3nvv5Z133mHbtm2UlpaaJG5J7IQQQgghbjFr1iw2bdpETEwMhw8fJjQ0lCFDhpCVlWVULjo6mqVLlxIfH4+3tzejRo1Cq9XWuZ2cnBxcXFywtjbNSVQ5FWthV66UYG9v3nw6JaW8qzsz/zqX0xPM2tbNMvOvA3A9O6VRZeqjop6Laj2Hr5VVWeaiWg/8cVyak+vXy9/8zTG26lTEejnnGieun7N4+5dzrgFwPjO5UfVUbJ9VUMgVdU6j42qItNz8GtdrUjUWiqRhmnt8ptLc97O5x3c7KigoYMWKFaxbt45hw4YBsHLlSn744QdWr15NdHS0oey8efMYPHgwADExMQQEBLBlyxbGjh1bazsZGRm89dZbPPfccyaLXRI7C/v73zMt0o5SCdvj17I9fq1F2qugUCiJ2b2o0WXq2+brP2l4/afqP9yUSli0KN1kbZpSc46tOkolLNm7miV7VzdN+wolU7a/bZJ6dpxMYMdJy/0AupW9vR1eXl5Gy7y8vLCzt+PKp1eaKKq6s6si/pZCnoc/r6SkJLRaLX379jUss7GxoVevXpw5c8aobJ8+fQz/e3h4EBYWVqlMVXJzcxkxYgTh4eHMnz/fZLFLYmdhe/bswcnJyeztaDQabG1tzd5OQ9o1dWxN0aYpNefYqtPUMZuq/abeDyhPHoKCgoyWBQUFce7sOTIyMpooqrqrKv6WQp4HYS55eXkMHToUZ2dntmzZgo2NjcnqlsTOwiIjI3FxcWnqMIQQzVxQUJB8UTcD8jz8OYWEhKBSqYiLiyM4OBgArVZLfHw806ZNMyq7f/9+w2tErVaTkJBAp06dqq07NzeXIUOGYGtry7fffoudnZ1JY5fETgghhBDiJo6OjkyePJno6Gg8PDwICgrivffeo7CwkIkTJxqVXbBgAZ6envj6+jJ37ly8vLwYM2ZMlfXm5ubywAMPUFhYyBdffEFubi65ubkAeHt7Y2Vl1ejYJbETQgghhAB0Op1hdOrixYvR6XSMHz+evLw8evbsyc6dO3F3dzfaZvHixUydOpXExEQiIyPZtm0bKpWqyvoPHz7MgQMHAAgNDTVad/HiRdq0adPofZDETgghhBBm527rjspKZfE7T7jbutde8HdpaWmGhMvOzo7ly5ezfPnyKssOHDgQvb581oWRI0fWqf6btzEXSeyEEEIIYXb+Tv5sH7O9Wd4rVq1WExcXR2xsLJMmTbJAZOYjiZ0QQgghLMLfyb/Z3N7rZlFRUcTHxzNz5kxGjx7d1OE0iiR2QgghhPhT27JlS1OHYDJySzEhhBBCiBZCEjshhBBCiBZCEjshhBBCiBZCEjshhBBCiBZCEjshhBBCiBZCEjshhBBCiBZCpjsRQgghhEVoU1MpVVtugmJrd3dsWrUyS92xsbEMGjQItVqNm5ubWdpoCEnshBBCCGF22tRUkoYOQ19iuVuKKVQqQnb8r87J3YQJE8jOzmbr1q1mi+n555/nxx9/JDU1FScnJ+6++27effddOnbsaJL65VSsEEIIIcyuVK22aFIHoC8psWgPYV306NGDtWvXcubMGXbu3Iler+eBBx6grKzMJPVLYieEEEIIcQuNRsOUKVPw8fHBzs6Ofv36ER8fX6lcXFwcXbt2xc7Ojt69e3Py5Mka633uuee45557aNOmDd27d+ftt9/m8uXLXLp0ySRxS2InhBBCCHGLWbNmsWnTJmJiYjh8+DChoaEMGTKErKwso3LR0dEsXbqU+Ph4vL29GTVqFFqttk5tFBQUsHbtWtq2bUtgYKBJ4pbETgghhBDiJgUFBaxYsYIlS5YwbNgwwsPDWblyJfb29qxevdqo7Lx58xg8eDBdunQhJiaGGzdu1Hrv2U8++QQnJyecnJz43//+xw8//IBKpTJJ7JLYCSGEEELcJCkpCa1WS9++fQ3LbGxs6NWrF2fOnDEq26dPH8P/Hh4ehIWFVSpzqyeeeIIjR46wZ88eOnTowNixYykuLjZJ7DIqVgghhBDCglxdXXF1daV9+/b07t0bd3d3tmzZwrhx4xpdt/TYCSGEEELcJCQkBJVKRVxcnGGZVqslPj6e8PBwo7L79+83/K9Wq0lISKBTp051bkuv16PX69FoNI0PHOmxE0IIIYQw4ujoyOTJk4mOjsbDw4OgoCDee+89CgsLmThxolHZBQsW4Onpia+vL3PnzsXLy4sxY8ZUWe+FCxfYuHEjDzzwAN7e3ly5coXFixdjb2/P8OHDTRK7JHZCCCGEEIBOp8Paujw1Wrx4MTqdjvHjx5OXl0fPnj3ZuXMn7u7uRtssXryYqVOnkpiYSGRkJNu2bat2IISdnR179+7lgw8+QK1W4+vryz333MMvv/yCj4+PSfZBEjshhBBCmJ21uzsKlcrid56wviURq0laWhqhoaFAeRK2fPlyli9fXmXZgQMHotfrARg5cmSd6m/VqhXfffddneNpCEnshBBCCGF2Nq1aEbLjf83yXrFqtZq4uDhiY2OZNGmSBSIzH0nshBBCCGERNq1a1fm+rZYUFRVFfHw8M2fOZPTo0U0dTqNIYieEEEKIP7XaJhS+nUhiZ2FHjx7FycnJZPVpNBpsbW1NVl9zb7e5tG8uddmvxux7cz1uzTWuW5kjztulTku5nWOH5hf/zfF4eXkRFBTUxBEJc5PEzsIGDBhg2gqVStDpTFtnc263ubRvJkqFEp2+5v2qSxlzbGtWCiU0x7huYY7jZ446FQqF4aLu283tHDs0v/iVQMWry8HOjjPnzkly18JJYmdhzjNfx6Z93ScurInmt30UrPkEl1ffwTqorUnqbM7tVihNuUjuwrkMjehAR3/TDA9vDs5eS2PHyQSWj3yNUM/gKsv8dGE/S/aurrFMdc5nJjNl+9u49n8S+3Y9TRGySRRdOEjO3i/wHDkTG0/T3ATbHCribMixr07Fc2LK13LF6+jxuyLxcTHd2QFLuJ1jB0jLzWf9gaNM8fLiHsemj//ngnyWZ2Twrr8/ALOvXSMjI0MSuxZOEjsLsw4IxqaDaRK70pSL5XUGtTVZnc253Vt5ODoQ4O7aZO2bWlpuPgChnsF08Qurssz5zORay9TG2tUXW7/QhgVpBtrMywDYeAY2q7huVRFnY459dUz5Wq54Hfm4ON1274/bOfabBVjbEG5n19RhcOH3OxmEqJrPqWFhfnJLMSGEEEKIFkISOyGEEEKIFkJOxQohhBDCIvKyiinO11qsPTsnG5w9zHNaPDY2lkGDBqFWq3FzczNLGw0hiZ0QQgghzC4vq5gv39hPWanlRsBbWSt5YkHvOid3EyZMIDs7m61bt5o3MECv1zN8+HB27NjBli1bGDNmjEnqlVOxQgghhDC74nytRZM6gLJSnUV7COvjgw8+QKFQmLxeSeyEEEIIIW6h0WiYMmUKPj4+2NnZ0a9fP+Lj4yuVi4uLo2vXrtjZ2dG7d29OnjxZa91Hjx5l6dKlrFmzxuRxS2InhBBCCHGLWbNmsWnTJmJiYjh8+DChoaEMGTKErKwso3LR0dEsXbqU+Ph4vL29GTVqFFpt9b2EhYWFPP7443z88cf4+fmZPG5J7IQQQgghblJQUMCKFStYsmQJw4YNIzw8nJUrV2Jvb8/q1auNys6bN4/BgwfTpUsXYmJiuHHjRo33np0+fTp33303o0ePNkvsMnhCCCGEEOImSUlJaLVa+vbta1hmY2NDr169OHPmjFHZPn36GP738PAgLCysUpkK3377Lbt37+bIkSPmCRzpsRNCCCGEsIjdu3eTlJSEm5sb1tbWWFuX96898sgjDBw40CRtSGInhBBCCHGTkJAQVCoVcXFxhmVarZb4+HjCw8ONyu7fv9/wv1qtJiEhgU6dqr7d5iuvvMLx48c5evSo4Q9g2bJlrF271iSxy6lYIYQQQoibODo6MnnyZKKjo/Hw8CAoKIj33nuPwsJCJk6caFR2wYIFeHp64uvry9y5c/Hy8qp2Tjo/P78qB0wEBQXRtm1bk8QuiZ0QQgghBKDT6QynRxcvXoxOp2P8+PHk5eXRs2dPdu7cibu7u9E2ixcvZurUqSQmJhIZGcm2bdtQqVRNET4giZ0QQgghLMDOyQYra6XF7zxh52RT5/JpaWmEhoYCYGdnx/Lly1m+fHmVZQcOHIherwdg5MiRDY6xog5TadaJ3fz589m6davhHHRVBg4cSGRkJB988IHF4jK1l4J8eC2kFZ9eTueN81cBCLZTMS+0FXe5OqFSKvgpK5dXE66SoS2tc70vt/Hj5bbGXb6JBcX0/+0sALZKBfNDWjHa1x1bhYKfsvJ4JeFKvdpoaNtP+nvysK87XZztcba2osPeE+SWljW63YboNeZR2vfqg0erAEpLSkhNOMPPX65Dfe2qoYyrrx8DnpxI647hWFnbcOnYIXav/ReFOdmNbv+OwcO4Y/BwXvDyZkWZjrK0Isp+Tqc4QQ2A93NdsG3nBsD/0Z//4y1K8osNvyq1NwrJ25ViKA+gCnLGZUgbVIHOoNOjvVaAcuH5Rsf6wsAQhnT2I8THiWJtGYeT1Sz+31kuZBQ0um5TePKuIJ7oHUyAuz0AiTfyWb4rkdiEdJO35XiXP469/bF2twUqPw9WHna4jWiLKtgVhbWC4gQ12d8moathFvyK14KLty8AmVdS+HXTv7l09BAAXe4bQqe+A/FpG4KtgwMfPfNXNIWmP/Y1xWHn6MTdY58guGs3nL28KcrN4Xz8fuI2fkFJUaHJY6mv2o7h/c++SHBEJI4eHmiLi0k9d4a969eRlXrFonF6PvcszoMHo2rXDn1xMUVHjpC2dCklFy8ZyriNfRSXkSOxCw/HysmJc3f2QpeXV+e6OHoMABtXV8KnT+dsn960b9/eUrtYibOHHU8s6N0s7xWrVquJi4sjNjaWSZMmWSAy86lXYjdhwgRiYmJ4/vnn+ec//2m07sUXX+STTz7h6aefZt26daaMsUabN2/Gxqbu2XhDHDt2jMWLF7Nv3z4yMjJo06YNkyZNYurUqY2uO9LZnqdaeXIqv8iwzEGpZGNkCKfyi3jkaPmX8ey2/nzetS3DDyVSn9z+bH4Rjx5LMjwuu+mXwYLQ1tzn6cKzJy+RV1rGwg4BrOnShgcPNz4BqK1teyslu7Ny2Z2Vy2shrUzSXkMFdIrg6M7/cj0pEaWVFf0ee4q/zH2LtTMnU6rRYG1ry19efYv0lIt8teBVAPr+9UnGzHqD9a/NhEb+2srLzGTv+hj2HT7C9mNn+G7pfwh5qis3lh+hNK38izL/wDVyf0jmf+f2EMtJZtz1NP5FrqBQ4NDdB8+nwg3lVUHOeEVFkPfTZbK/SQKdHht/x0bHCXBXWw8+35/MscvZWFspiB7Skc8m9mLw33+mSNs0ifnNruUW8+6Os1zKKEChUPBI9wA+faonI5bvJTEt36RtleVqyN1xkdKMokrPQ5m6GO+JEWivFZC+8jgArg8E4/V0Z9I+OUp1b+KK14L6eioKBYTfcx9jol/j89lTybySgo2tLZeOHeLSsUP0f3yCSfenrnGgUODo7sGez9eQeTUFFy8f7v/bizi5e7Jt2SKzxWSK2DOvpHDjwnnO7IslLyMdOydn7v7L4zwydwGrXvober3lepIc7rwT9fr1FJ04icLKCp/p0wlatZqkkSPRF5V/Hyjs7CnYu5eCvXvxmTmz3nXZ9O8PgL2vL/a+Pkx6+WUWLVpERESERfaxKs4ednW+b6slRUVFER8fz8yZM802v5yl1LvHLjAwkA0bNrBs2TLs7ct/FRcXF7N+/XqCgoJMHmBtPDw8zN7GoUOH8PHx4YsvviAwMJBffvmF5557DisrK1566aUG1+tgpeTj8GBmnrvM9OA/erfudHUk0E7F/fHnyC8r/6CZciaZc/270M/dib3qun9BleohvaRyD5yzlZJx/h68cDqZuOzy+qadTWHfXZ3o7uLA4dzG//Kurm2AlVfKe1DudnNqdDuNtXnRPKPHOz5Zxgur1uPbLpSrZ07ROiwcFx8fPn9lCiW/f+D+7+NlvLRmA0ERXUk5caxR7V84/BsANy5fJTExkcRNB2l3X2dUQc6GxE6v1aHL11KYnc8X27/gcasBePuFAZD7fTJOvf0N5V1HtiM/LpW8PX/0QJRmFKEzwemPp9ca307n5a+Ocfj1wXQJcOW3i1nVbGU5u86kGT1+//tzPNk7iG5B7iZP7IrPGO/vzc9DmasKK3c7biw/gl5TnvBm/SeBVvP6YBvihuZ8dpV1VrwWKsRt/Jw7HhiOf/swMq+kcPi7bwEICO9i0n2pTxwnf/qBbX//I4HLuXGduI2fMeyll1Eoleh1lr0X6K1qO4Yndu00rMtNT2Pfxs95eslHuPj4kHPjusXivPzsc0aPU+fMocOvv2DXuTNFBw8CoP7sMwAcet3ZoLp87+gKFy+Qm5DA/skvsD35Em+++aYJ96LlqGlC4dtNvac76d69O4GBgWzevNmwbPPmzQQFBdGtWzejsjt27KBfv364ubnh6enJyJEjSUpKMipz5coVxo0bh4eHB46OjvTs2ZMDBw4Ylfn8889p06YNrq6uPPbYY+Td1BU9cOBApk2bZnjcpk0bFi5cSFRUFM7OzgQFBfHpp58a1Xf58mXGjh2Lm5sbHh4ejB49mkuXLlW7z1FRUXz44YcMGDCAdu3a8eSTT/LMM88YHYOGWNw+gB8zcyslaiqlAr0eSnR//KzX6PTo9HCXa/0SoXYOKo7e3ZkDvTvxcacgWtuW9252dXZApVTy801tny/UcKW4hJ4ujo3Yq9rbbu5sHcr3vzi//NhYWduAHspuukVMmbYEvV5P67DOJm1bqVTif1c7FCorSlL+eJ07RPrg/3pvHv/oJRYuXIhSZVW+QgH2Xb0N5ZWONtgGuVBWoMV78h34z70L7+e6ogp2MWmcFZztyn8bZheWmKX+xlAqYFRXf+xVVhxOUde+QWPc8jworJWgB/1NybS+VAd6sG1Tt+dCoVASdvc92NjakZpw1lyRmyQOWwdHSooKmzypu1VtsVvb2hIx8H6yb1wnLyOjCSL8g9LZGQBdTo7J6ipWZze6LnH7adA1dlFRUaxdu5YnnngCgDVr1vDMM88QGxtrVK6goIAZM2bQtWtX8vPzeeONN3jooYc4evQoSqWS/Px8BgwYQOvWrfn222/x8/Pj8OHD6G76cEhKSmLr1q1s374dtVrN2LFjWbx4Me+880618S1dupS33nqLV199la+//prJkyczYMAAwsLC0Gq1DBkyhD59+rB3716sra15++23GTp0KMePH6/zSJacnJxG9RaO9nGji7M9Qw8lVFp3OLeAQp2O10JasehCKgoUzA3xx1qpwEdV96fscG4BU88Ucb5Qg6+tDTPb+PFN9/YM+O0sPiprNDpdpeva0ku09WqjIW0XlDWvD38jCgUDn36Wq2dPkXk5GYBriWfRaorp/8Qz7Pv3Z6CAex6fgNLKCsdbRkc1lFdgMKvX/ocYlQp9SRmZn5829NYVHk2nVH2ZstwSjpVdYPz48djlKPAI9UNhrTQqrwos/0B3uS+InO8uor2Wj0N3X7yf7YLDpXMmibWCQgFvjAwn/lIWCTdM2xvWGGG+zmx+4W5srZUUlpTx/OeHOG/i3roK1r4O+LwQWel50BVo0WvLcB3WltydlwBwHdYWhZUCpXPNnzFegcGMe/t9rG1UlBQX8e3775B19bJZ4jdFHPbOLvR++DGO/7jD4jFWp7bY73hgOPc88QwqO3uyrl7m63deQ1fW+GuLG0yhwPfVORQeOoQmMdFkdWWcM+17XtweGvQN/uSTTzJnzhySk8u/+OLi4tiwYUOlxO6RRx4xerxmzRq8vb05ffo0ERERrF+/nvT0dOLj4w1JUsVolAo6nY5169bh/PsvkPHjx7Nr164aE7vhw4fzwgsvADB79myWLVvGTz/9RFhYGBs3bkSn07Fq1SoUCgUAa9euxc3NjdjYWB544IFa9/+XX35h48aN/Pe//622jEajQaPRGB7n5uYa/m9la8Pb7Vsz9mgSGl3li20ytWU8e/IS74YF8LcAL3R62JKm5lheYb2ur9ud9UePz5mCYg7nFnKwTzgP+rhRbObkqqa2/32t6U/ZVee+qMl4BQazYd4sw7KivFy2LVvM/RNfoPvQUej1es7G7eHGhfPoq3j+GiIr9SqvPvUYey5e5T9vrqbNo51J//Q4pWmFFPz2x+mhhFPHefe7FezevZu0T4+j15RhH+GF+6NhpH96HMpf0hT8do3CQzcAyEm9gG2IGwH9O8B7JgkXgLdGRxDm58xfVvxqukpN4EJGPsOX78XZzprhEf4sffQO/vrpfrMkd6UZRdxYfhilnbXR81CaVkjml2dwHxOK092tQA+Fx9IouZJX7fV1FbJSr/L5rCmoHBzo0LsfQ1+czsb5r1g8uatLHCp7ex6aPa98gMLX6y0aX01qi/3M3liSjx/F0d2dO0c+zKhpr/DvN6KNeuUtye+NN7Bt357kx58we11KpdyXoKVrUGLn7e3NiBEjWLduHXq9nhEjRuDl5VWpXGJiIm+88QYHDhwgIyPD0BOXkpJCREQER48epVu3bjX2fLVp08aQ1AH4+/uTlpZWbXmArl27Gv5XKBT4+fkZtjl27Bjnz583qhPKrxO89TRxVU6ePMno0aOZN29ejUngokWLqr2WoauzA94qG37oGWZYZq1U0NvNkajWXgTtOcYedR6995/Bw8aKUj3klpZx/O7OfFOkqbLOusgtLeNCoYa29rbsycrDVqnExdrKqNfOW2VDWjXXxTXGzW03V/c+M4mQ7neyYf4r5GdlGq1LPn6E1VOfxd7ZBV1ZGZrCAib963Ny0kxzTY6urJQbV65y+PBREr4+SOuwYJz6tiJ7S+WBLBWXKiisFJRczUd7NR9VgBNOfVuRF1v+xVV6w/gaydK0Quw9TXc945sPdubejj6M/devXM8tNlm9pqAt05OcWb7/J6/m0jXAjai+bXh1y0nTN1ampyyzmDIweh6yt5xHk5jN9SUHUTpYo9fp0ReX4T/3LkqP1zxCV1dWSvaNawCkXUzCL6Q93Yc/yI8rPzZ9/I2Iw8bOnkfmLKCkuIhvlr6DrqzpB89UqC32kqJCSooKyb6eyrWEc7y0ZgPt7+zD2V9+tnisvq+/htPAASQ/OZ7SGzfMWpeTk1OlzhPR8jT4nFtUVJRh4MDHH1f9gTNq1CiCg4NZuXIlrVq1QqfTERERQUlJ+fU4FYMvanLriFeFQmF0qra+2+Tn59OjRw++/PLLStt5e3vXWO/p06e57777eO6553jttddqLDtnzhxmzJhheJybm0tgYCAAe9V5DPzN+HqPDzoGkVhYzMcpady8d1m/jzTs6+aEl8qanRm5NJSDlZJgexU3rms5nldIiU5Hf3cn/ptefk1HiL0tAXYqDuaafvqEm9tuju59ZhKhvfrwnzfnkJte/YdrUV758Q/s3BUHF1eSDh6otmyjKBXl12lVITIyEgBdXkml8mVqDWU5Gqy9HYy2sfa2p+jQVUzhzQc7M6SzH499+itX1EW1b9DElEpQVXMsTd9Y5edNV1j+Q8k2xBWlow3Fp+vXY61QKMqv82xiN8ehsrfnkVffokyrZet7bzVZT1dd1XQMFQpAAVZmnl2hKr6vv4bz/feT/NTTaK827v1ZW13WTk58/+/1Jp8zTTQ/DU7shg4dSklJCQqFgiFDhlRan5mZyblz51i5ciX9fx9yvW/fPqMyXbt2ZdWqVWRlZVlkdCuUD/7YuHEjPj4+uLjU/YLyU6dOce+99/L000/XeBq4gq2tLba2VfdOFZTpOFtg3MtRWKZDrS0zLH/Mz4OEwmIyS0rp6erIW+1b8+nldJLq0WM3L6QV32fmcKVYi6/Kmui2/uj0sDVNTV6Zjn9fy+LN0NZka8vIKy3jnQ4BxOcUmGREbE1tA3irrPFR2dDGvvx6o06OduSX6bhaXEK2heezu2/iZDr2HcA3S96mpKgQB1c3AEoKCynVlidPnQfeT9bVyxTm5tCqfUcGTXiOQ999YzTXXUP1G/c0F48eJKVER0REKR3+0hPbtq5krDmJlYcdDpHeFJ9ToyvU0rZXR7a/NIPc5Ex0mjKsfR1wiPQxlAfI+/kKLoOD0V4roORaPo7dfbHxtufKz42/3uat0RGMjmzFs58dpEBThrdT+Ws8t1iLxoKTjlZn1pAwYhPSSc0uwlFlzejIVvRu68lTa36rfeN6chnShuKELMqyNShUVpWeB4cevpSmFVJWoMU2yBnXUSHkx10tnx6lGhWvhbyMdFR29nTsN5DA8C5sWvhGeZ2ubji6uePu5w+AV1AbSooKyctIp7jAdKeaa4pDZW/PI3PfwkZly3cfvY/K3h7V7z/Si3JzLTplSH1jd/XxJezue7h07DBFubk4e3rSa/SjlJaUcOHIQYvG6ffGG7iMHMGVF19CV1CA1e9nvXR5eeh/v4zHyssLay8vVEHBANh26ICuoADttWtGgyyqq8v693qsnZzo9/lnXLWyIjk5uUmnOxHm1+DEzsrKijNnzhj+v5W7uzuenp58+umn+Pv7k5KSwiuvvGJUZty4cSxcuJAxY8awaNEi/P39OXLkCK1ataJPnz4NDa1GTzzxBEuWLGH06NEsWLCAgIAAkpOT2bx5M7NmzSIgIKDSNidPnuTee+9lyJAhzJgxg+vXrxv2u7ZevoYKcbDl1Xb+uNlYcbm4hA+Tb/Cvy/WbZNXf1oYV4W1wt7Eis6SU33IKGH4ogczfewHfOH8VnV7Pqog22Cr/mKDYFGpr++lWXkYTGH/TvXzSzKlnUth43bLX4EU+MAKAv85fbLR8xyfLOLVnFwAe/q3pP+5p7JycyElL48CW/3Dov1tN0r6DiyvDXpjBI27uqLOzUaZryVhzEs35bKxcVdiFuuPUtzVKlRX90kNIuXyZ9q3b4TezJ7riUrTXCgzlAfLjUlFYK3Ed2Q6lg3X5XGqrTlKYXnli0/oa36f8C2bj88bvz5e/OsbXhyw7wWtVPJ1s+fvYO/B2tiWvuJSz1/J4as1v7Dtv+hGPVk42eIwNw8pZVeXzYO1tj+vQNijtrSlVF5P302Xy99X8Q6DiteDo7kFJYQHpKZfYtPANkk8cBeCOwcO5+9HHDeUfe/NdwPi1ago1xREQ3oVW7TsC8Lflq4y2W/lSFLnpNV8qY241xe7o7kHrjp3pPuxB7JycKMzO5srZU/z79WiKchs/GrU+3B8fB0Dw558ZLU+dM4ecLVvLyzz2V7xvmlKrzZdfVCpTU13np06D5R/iFtEZz27d8DTxPjREbkYaRbkNP/NUX/YuLrh4+Zil7tjYWAYNGoRarcbNzc0sbTREo4Y/1tTjpVQq2bBhA1OmTCEiIoKwsDCWL1/OwIEDDWVUKhXff/89M2fOZPjw4ZSWlhIeHl7tqV1TcHBw4Oeff2b27Nk8/PDD5OXl0bp1a+67775q9+frr78mPT2dL774gi+++MKwPDg4uMZpUurj4aPG11K9c+Ea71y41qg6J51OrnG9RqdnTuJV5iSa5hRdfdp+/9J13r9kuTmjarL0r7XfCmbvv2PY++8Ys7T//b/Kb1dzOPkq6w8c5bunV9Ll9znqynJKygdF/G7Lqe+Zsv1tozJVydtzxWgeO1Np80r1A4aag9mbjtdeyETUm2oevZi74xK5Oy7Vq86K10J1fv16vUUGKdQUx5XTJ+r0nmkqNcVeoM5iy+L5lgumBmc6dqq1TMZHH5PxUe3fh9XVder3Xr2M/QfY1KYtf0m+xKFDh+jevXv9gjWR3Iw01kx73qKn7q1sbIj64F91Tu4mTJhAdnY2W7duNVtMAwcOZM+ePUbLqrrxQ0PVK7Gr7Y4Stx6I+++/n9OnTxstu/X8fnBwMF9//XWV9c2fP5/58+cbLZs2bZrRvHW3jsStKtG69ZZkfn5+xMTU/Uu6qjiEEEIIUXdFubkWvx6zTKulKDfXbL12DfXss8+yYMECw2MHB4caStePjHsWQgghhLiFRqNhypQp+Pj4YGdnR79+/YiPj69ULi4ujq5du2JnZ0fv3r05ebL2EfgODg74+fkZ/upzzX9tJLETQgghhLjFrFmz2LRpEzExMRw+fJjQ0FCGDBlCVpbxdeDR0dEsXbqU+Ph4vL29GTVqFNpaeia//PJLvLy8iIiIYM6cORQWNn7QYgVJ7IQQQgghblJQUMCKFStYsmQJw4YNIzw8nJUrV2Jvb8/q1auNys6bN4/BgwfTpUsXYmJiuHHjRo33nn388cf54osv+Omnn5gzZw6ff/45Tz75pMlib/y9o4QQQgghWpCkpCS0Wi19+/Y1LLOxsaFXr16GGUEq3DyLh4eHB2FhYZXK3Oy5554z/N+lSxf8/f257777SEpKIiQkpNGxS4+dEEIIIUQTueuuuwA4f77ynYYaQhI7IYQQQoibhISEoFKpiIuLMyzTarXEx8cTHh5uVHb//v2G/9VqNQkJCXTqVPt0NhUqZu7w9/dvXNC/k1OxQgghhBA3cXR0ZPLkyURHR+Ph4UFQUBDvvfcehYWFTJw40ajsggUL8PT0xNfXl7lz5+Ll5cWYMWOqrDcpKYn169czfPhwPD09OX78ONOnT+eee+4xus99Y0hiJ4QQQggB6HQ6rK3LU6PFixej0+kYP348eXl59OzZk507d+Lu7m60zeLFi5k6dSqJiYlERkaybds2VCpVlfWrVCp+/PFHPvjgAwoKCggMDOSRRx6p9f7z9SGJnRBCCCHMzt7FBSsbG4vfecK+HnPEpaWlERoaCoCdnR3Lly9n+fKq72YycOBAw00XRo6s291YAgMDK911wtQksRNCCCGE2bl4+RD1wb+a5b1i1Wo1cXFxxMbGMmnSJAtEZj6S2AkhhBDCIly8fJrd7b0AoqKiiI+PZ+bMmYwePbqpw2kUSeyEEEII8adW04TCtxuZ7kQIIYQQooWQxE4IIYQQooWQxE4IIYQQooWQa+wsrPRKMgp7B5PUVXb9anmdKRdNUl9zb7dCRbtZBYVcUec0SQzmkFVQCMD5zORqy1zOuVZrmepUbFOacwPNddPcusYUSnNuAKDNvNzEkdSsIs6GHPvqVNRlytdyxesoLTffJPVZ0u0cO/wR95VSLaeLi5s4mvI4AJJKNE0cibAkhb5iEhZhVrm5ubi6upq+YqUSdDrT19tc220u7ZuJUqFEp695v+pSxhzbmpVCCc0xrluY4/iZo06FQsHt+tF+O8cOzS9+JVDx6nKws+PMuXMEBQU1ut6K77ScnBxcbpknrri4mIsXL9K2bVvs7Owa3Zao3zGVHjsL27NnD05OTiarT6PRYGtra7L6mnu7zaV9c6nLfjVm35vrcWuucd3KHHHeLnVayu0cOzS/+G+Ox8vLyyRJnWjeJLGzsMjIyEq/boQQQog/g9LsYnQFpRZrT+lojbWbeXoNY2NjGTRoEGq1Gjc3N7O00RCS2AkhhBDC7Eqzi7n+/kEoteCpamsFfi/3rHNyN2HCBLKzs9m6datZw/r111+ZO3cuBw4cwMrKisjISHbu3Im9vX2j65ZRsUIIIYQwO11BqWWTOoBSvUV7COvi119/ZejQoTzwwAP89ttvxMfH89JLL6FUmiYlk8ROCCGEEOIWGo2GKVOm4OPjg52dHf369SM+Pr5Subi4OLp27YqdnR29e/fm5MmTNdY7ffp0pkyZwiuvvELnzp0JCwtj7NixJrs2UxI7IYQQQohbzJo1i02bNhETE8Phw4cJDQ1lyJAhZGVlGZWLjo5m6dKlxMfH4+3tzahRo9BqtVXWmZaWxoEDB/Dx8eHuu+/G19eXAQMGsG/fPpPFLYmdEEIIIcRNCgoKWLFiBUuWLGHYsGGEh4ezcuVK7O3tWb16tVHZefPmMXjwYLp06UJMTAw3btyo9t6zFy5cAGD+/Pk8++yz7Nixg+7du3PfffeRmJhoktglsRNCCCGEuElSUhJarZa+ffsaltnY2NCrVy/OnDljVLZPnz6G/z08PAgLC6tUpoLu9/lXn3/+eZ555hm6devGsmXLCAsLY82aNSaJXRI7IYQQQggL8Pf3ByA8PNxoeadOnUhJSTFJG5LYCSGEEELcJCQkBJVKRVxcnGGZVqslPj6+UlK2f/9+w/9qtZqEhAQ6depUZb1t2rShVatWnDt3zmh5QkICwcHBJold5rETQgghhLiJo6MjkydPJjo6Gg8PD4KCgnjvvfcoLCxk4sSJRmUXLFiAp6cnvr6+zJ07Fy8vL8aMGVNlvQqFgujoaObNm8cdd9xBZGQkMTExnD17lq+//toksUtiJ4QQQghB+TVw1tblqdHixYvR6XSMHz+evLw8evbsyc6dO3F3dzfaZvHixUydOpXExEQiIyPZtm0bKpWq2jamTZtGcXEx06dPJysrizvuuIMffviBkJAQk+yDQt+c7lbcgtV0w2QhhBDidlLTd1p1N6y/He48MXToUEJDQ/noo4/MHFj9VHdMqyI9dkIIIYQwO2s3O/xe7tks7xWrVquJi4sjNjaWSZMmWSAy85HETgghhBAWYe1mB25NHUVlUVFRxMfHM3PmTEaPHt3U4TSKJHZCCCGE+FOrbkLh25FMdyKEEEII0UJIYieEEEII0UJIYieEEEII0UJIYieEEEII0UJIYieEEEII0UJIYieEEEII0ULIdCdCCCGEsIjs7GwKCwst1p6DgwNubm5mqTs2NpZBgwahVqvN1kZDSGInhBBCCLPLzs7mo48+orTUcneesLa25qWXXqpz4jVhwgSys7PZunWrWeK5dOkSbdu2rXLdf/7zHx599NFGtyGnYoUQQghhdoWFhRZN6gBKS0st2kNYm8DAQK5du2b09+abb+Lk5MSwYcNM0oYkdkIIIYQQt9BoNEyZMgUfHx/s7Ozo168f8fHxlcrFxcXRtWtX7Ozs6N27NydPnqy2TisrK/z8/Iz+tmzZwtixY3FycjJJ3JLYCSGEEELcYtasWWzatImYmBgOHz5MaGgoQ4YMISsry6hcdHQ0S5cuJT4+Hm9vb0aNGoVWq61TG4cOHeLo0aNMnDjRZHFLYieEEEIIcZOCggJWrFjBkiVLGDZsGOHh4axcuRJ7e3tWr15tVHbevHkMHjyYLl26EBMTw40bN+p879nVq1fTqVMn7r77bpPFLomdEEIIIcRNkpKS0Gq19O3b17DMxsaGXr16cebMGaOyffr0Mfzv4eFBWFhYpTJVKSoqYv369SbtrQMZFWtxR48eNdl5dEvQaDTY2tretvU3hcbsU1Mdj5byPLSU/aiJl5cXQUFBTR2GEKKRvv76awoLC3nqqadMWq8kdhY2YMCApg6hXpQKJTq9zoz1g05vtuqbhEKhQK9v2E41ZtvGUALme5Ytp6XsR00c7O04c/acJHdCmFFISAgqlYq4uDiCg4MB0Gq1xMfHM23aNKOy+/fvN7wf1Wo1CQkJdOrUqdY2Vq9ezYMPPoi3t7dJY5fEzsLeHRJNF78OTR1GnZzPTGbK9rd5a5Atw9ub/qVyJl3Hk1uKcO3/JPbtepq8/qZQdOEgOXu/4KGHHqr3mzU9PZ0tW7YwxcuLexwt16v7c0E+yzMyeNffnxDV7dvblVSiYfa1a2Z7vTYHFe+ZjIwMSeyEMCNHR0cmT55MdHQ0Hh4eBAUF8d5771FYWFjp1OmCBQvw9PTE19eXuXPn4uXlxZgxY2qs//z58/z888989913Jo+9ZX76NWMhHoF08Qtr6jDqpa27gu7+Vmar39rVF1u/ULPVb0nazMsAeHt74+/v36A6AqxtCLezM2VYNbqg0QAQorK1aLvmYu7XqxCi5dLpdFhbl6dGixcvRqfTMX78ePLy8ujZsyc7d+7E3d3daJvFixczdepUEhMTiYyMZNu2bahUqhrbWbNmDQEBATzwwAMm3wdJ7IQQQghhdg4ODlhbW1v8zhMODg51Lp+WlkZoaHlHg52dHcuXL2f58uVVlh04cKDh0pmRI0fWK66FCxeycOHCem1TV5LYCSGEEMLs3NzceOmll5rlvWLVajVxcXHExsYyadIk8wdmRpLYCSGEEMIi3Nzc6nzfVkuKiooiPj6emTNnMnr06KYOp1EksRNCCCHEn1pdJxS+HcgExUIIIYQQLYQkdkIIIYQQLYQkdkIIIYQQLYQkdkIIIYQQLYQkdkIIIYQQLYQkdkIIIYQQLYRMdyKEEEIIiyguTqVEm2Wx9lQ2HtjZtTJL3bGxsQwaNAi1Wt2s5uaTxE4IIYQQZldcnMqv++9Hp9NYrE2l0pY+vX+sc3I3YcIEsrOz2bp1q9liun79OtHR0fzwww/k5eURFhbG3LlzeeSRR0xSv5yKFUIIIYTZlWizLJrUAeh0Gov2ENbFU089xblz5/j22285ceIEDz/8MGPHjuXIkSMmqV967G4Tjnf549jbH2t3WwC0NwrJ25VCcYK6UlmvZzpjF+ZBxmenKT6daf7gnP1h8JsQOhhs7CHrAnzzIqSa5kXaWON7B/P8gHZ4O9ly5lou8749xbErORZpu1+/ftx///3s37+fHTt2AOU3i27Xrh3Ozs6UlJRw+fJlfvzxR65du1ZrffY9e+I5MQq7zp2x8fHh8osvkb9rl2G9wsEBn5kzcL7vPqzc3NBeuULW51+QvXGj2faxPvFZeXri8/JMHPv2xcrZmcKDB7n+9jtok5MtEp9JKJQwcA50/Ss4+UDedTj6Jfy8pKkjE0KYkEajITo6mg0bNpCbm0vPnj1ZtmwZd955p1G5uLg45syZQ0JCApGRkaxatYqIiIhq6/3ll19YsWIFvXr1AuC1115j2bJlHDp0iG7dujU67mbdYzd//nwiIyNrLDNw4ECmTZtmkXiaUlmuhtwdF0n7xxHSPjqKJikbz6fCsfZxMCrn1K8Ver0FA7Nzg4k7oUwLXz4CH98F378GRdkWDKJ6I7v689rITnz4YyIj/rGP09fy+GziXXg6qszedqtWrejRowfXr183Wn7t2jW++eYbPv74Y7744gsUCgXjx49HoVDUWqfS3h7N2XPcWPBWlet9X5mNU79+pM6axYURI8j67DP8Xn8Np0GDTLJPjY0v4OOPUAUEcuWFF7n48MNoU1MJXrMGhb29ReIziX7T4c6J8N3L8HEv+HEe9J0Kdz3f1JEJIUxo1qxZbNq0iZiYGA4fPkxoaChDhgwhK8u4BzA6OpqlS5cSHx+Pt7c3o0aNQqvVVlvv3XffzcaNG8nKykKn07FhwwaKi4sZOHCgSeKuV2I3YcIEFAoFkyZNqrTuxRdfRKFQMGHCBJMEVlebN2/mrbeq/hIxpSlTptCjRw9sbW1rTTbNofhMFsXn1JRmFlOaUUTu98noS8pQBTkbytj4O+LUPwD11wmWC6zfNMi5Wt5Dd/UwZCdD0m5QX7RcDDX4W7+2bPjtMl8dusL5tHzmbj1BUUkZY3sGmrVdW1tbHnnkEbZt20ZxcbHRukOHDpGcnEx2djbXrl1j9+7duLq64unpWWu9BXv3kv7hh+T9+GOV6+0ju5Gz9RsKf4tHezWV7P98RfG5c9h37WqS/WpMfKo2bXCIjOTam29SfPIkJRcvcX3+myjsbHEdMcIi8ZlEYC84+x0kfg/ZKXD6G0j6CVr3aOrIhBAmUlBQwIoVK1iyZAnDhg0jPDyclStXYm9vz+rVq43Kzps3j8GDB9OlSxdiYmK4ceNGjfee/c9//oNWq8XT0xNbW1uef/55tmzZQmhoqElir3ePXWBgIBs2bKCoqMiwrLi4mPXr1xMUFGSSoOrDw8MDZ2fn2guaQFRUFH/9618t0laNFGDf1RuFyoqSlLzyRTZKPB7rSPY359HlV/9LweTChpWfcn00BqLPw/N7ofvTlmu/BjZWCiJauxJ3PsOwTK+HuPMZdA92M2vb48aNIyEhgQsXLtQco40NkZGRqNVq1OrKp9Xrq+joEZzuHYS1jw8ADnf1QtWmDflxcY2uu7EUKhsA9JqbrrHR69GXlGDfo3sTRdUAl3+DdveAZ0j5Y98ICOoNiT80bVxCCJNJSkpCq9XSt29fwzIbGxt69erFmTNnjMr26dPH8L+HhwdhYWGVytzs9ddfJzs7mx9//JGDBw8yY8YMxo4dy4kTJ0wSe70Tu+7duxMYGMjmzZsNyzZv3kxQUFClc8M7duygX79+uLm54enpyciRI0lKSjIqc+XKFcaNG4eHhweOjo707NmTAwcOGJX5/PPPadOmDa6urjz22GPk5eUZ1t16KrZNmzYsXLiQqKgonJ2dCQoK4tNPPzWq7/Lly4wdOxY3Nzc8PDwYPXo0ly5dqnG/ly9fzosvvki7du3qcpjMwtrXgVZv3k3rt/vh/lAomZ+fpjStEADXke0oScml+LSFLxJ1b1N+WiorCT5/GA6uhmHvwh3jLBtHVaE5qLC2UpKRb3yxbnq+Bm8nW7O1+9e//pWgoCB23XRt2a3uvPNOXn31VebOnUv79u357LPPKCsra3TbN956G01SEu1/3kPHE8cJXLmSGwveoujgwUbX3ViaCxfRXk3FZ8Z0lC4uYGOD59/+ho2/P9be3k0dXt3t+zuc3AwvHYTXM2DSXti/Ak581dSRCSGauaSkJD766CPWrFnDfffdxx133MG8efPo2bMnH3/8sUnaaNA1dlFRUaxdu9bweM2aNTzzzDOVyhUUFDBjxgwOHjzIrl27UCqVPPTQQ+h0OgDy8/MZMGAAV69e5dtvv+XYsWPMmjXLsB7KD8LWrVvZvn0727dvZ8+ePSxevLjG+JYuXUrPnj05cuQIL7zwApMnT+bcuXMAaLVahgwZgrOzM3v37iUuLg4nJyeGDh1KSUlJQw5HlTQaDbm5uUZ/jVWaUcSN5YdJ++Qo+fuv4f5oGNY+Dth18sA2xI3sbUm1V2JqCiVcOwa7FsD143BoHRyOgZ5Rlo+lGWjl5cqHH37I6tWrKS0trbbc8ePH+ec//8natWvJzMzk0Ucfxdq68WOZ3Mc/if0dd3B58mQuPvIX0t59F983Xsfhpl+UTaa0lCtT/g9VmzaE/XaAjkcO43BXL/L3/Aw3veebvc4PQ5dHYdPf4F/3wJZJcPf/NYsfM0II0wgJCUGlUhF309kOrVZLfHw84eHhRmX3799v+F+tVpOQkECnTp2qrLewsLwzRqk0Tr+srKyMcp/GaNA3yZNPPsmcOXNI/n0kW1xcHBs2bCA2Ntao3K1zsqxZswZvb29Onz5NREQE69evJz09nfj4eDw8PAAqnWPW6XSsW7fOcLp1/Pjx7Nq1i3feeafa+IYPH84LL7wAwOzZs1m2bBk//fQTYWFhbNy4EZ1Ox6pVqwwXq69duxY3NzdiY2N54IEHGnJIKlm0aBFvvvmmSeoyKNNTlllMGaC9mo8qwAmnvq3Qa3VYe9jRat7dRsU9n+xEyaUc0j81TfdulfKuQ/o542XpCdDpQfO1WUfqwhJKy3R43dI75+1kS3q+eYbc3xEagK+vL3PnzjW8vpRKJcHBwfTq1Yu33noLvV6PRqNBo9GQlZXFlStXmD17dqNHQylsbfGZNo0r/zeF/D17ANAkJGDXsROeUc9Q+Ouvjd6/xio+dZqLDz2M0skJhY0NZWo1bTZuoOjkqaYOre4GL4B9y+DkpvLHaafBLRD6z4Bj/27a2IQQJuHo6MjkyZOJjo7Gw8ODoKAg3nvvPQoLC5k4caJR2QULFuDp6Wn47Pfy8mLMmDFV1tuxY0dCQ0N5/vnnef/99/H09GTr1q388MMPbN++3SSxNyix8/b2ZsSIEaxbtw69Xs+IESPw8vKqVC4xMZE33niDAwcOkJGRYchGU1JSiIiI4OjRo3Tr1s2Q1FWlTZs2RtfQ+fv7k5aWVmN8XW+6UFyhUODn52fY5tixY5w/f77SdXnFxcWVThM3xpw5c5gxY4bhcW5uLoGBJr5gX6lAYa0k94dkCuKNR176Te9BzvYLFJ0x83Qnlw+A5y0XfHqGQM5l87ZbB9oyPSev5nB3qBffn74BgEIBd4d68tkv5pleY++x80RERPDoo4/i/fvpxdGjR5ORkUFcXBz6aoYsKxSKRvfYKaytUahU6G/51afXlYGyeQ2A1+XnA2ATHIxdRATpy5c3cUT1YONApaHnOl1577UQ4ram0+kMn8WLFy9Gp9Mxfvx48vLy6NmzJzt37sTd3d1om8WLFzN16lQSExOJjIxk27ZtqFRVz7xgY2PDd999xyuvvMKoUaPIz88nNDSUmJgYhg8fbpJ9aPA3SVRUFC+99BJAteeFR40aRXBwMCtXrqRVq1bodDoiIiIMpzzt6zDFgY2NjdFjhUJRa3dlTdvk5+fTo0cPvvzyy0rbeZvwOh9bW1tsbU13HZfLkDYUJ2RRlq1BobLCIdIH27auZKw5iS5fW+WAidJsDWVqM08G+esnMPF76D8TTm2B1t2hxwTYNtW87dbRqn0XWfroHZy4ks3RyzlM7NcGB5U1Xx0yT+KZX6Qh+dQp+vbta0jitFotRUVFpKWl4e7uTufOnUlKSqKwsBAXFxf69euHVqvl5MmTtdavcHBAddMgJVVAALYdO1KWk0PptWsU/PYbPtHR3NAUo72aikOvO3EdPZobi981y/7WNz7nIUMoU2ehTb2GbYcO+M59lbxduyiI+8Ui8ZlEwv/gnpnlP17Sz4JfV+jzIhz5oqkjE6JZU9l4oFTaWvzOEyqb6juPbpWWlmY4c2hnZ8fy5ctZXs0Pz4EDBxo+50eOHFnnNtq3b8+mTZvqXL6+GpzYVVyTplAoGDJkSKX1mZmZnDt3jpUrV9K/f38A9u3bZ1Sma9eurFq1iqysrBp77Uype/fubNy4ER8fH1xcXCzSpilYOdngMTYMK2cVuuJStNcKyFhzEs357KYNLPUwbHwC7psHA2aBOhl2zGk2F5JvP34ND0cV0wd3wNvZljOpuTy95jcy8k13PWV9lJaWEhwcTO/evbG3tyc/P5/k5GRWr15tNCioOvYRnQn+7DPDY985rwCQvWUL1+a8ytUZM/GZMZ1WS5Zg5eqKNjWV9A8+IHvDBrPtU33is/bxxveV2Vh7elKankHON9+QvmKFRWIzme9mwb1zYcRScPQuvxzh0FrYY5nkWYjblZ1dK/r0/rFZ3itWrVYTFxdHbGxslVO63U4anNhZWVkZhvNaWVlVWu/u7o6npyeffvop/v7+pKSk8MorrxiVGTduHAsXLmTMmDEsWrQIf39/jhw5QqtWrYyGD5vSE088wZIlSxg9ejQLFiwgICCA5ORkNm/ezKxZswgICKhyu/Pnz5Ofn8/169cpKiri6NGjAISHh1fb5WpK6k2J9Sp/5ZW9ZoqkCgk7y/+aqc9+TeazX5vuzgbr1q0z/J+Xl1dlb3FdFf4Wz5mOVV+UC1CWkcG1V+c2uP7Gqi0+9edfoP78Nu/ZKskv//GyY05TRyLEbcfOrlWd79tqSVFRUcTHxzNz5kxGjx7d1OE0SqMu6qmpx0upVLJhwwamTJlCREQEYWFhLF++3GhmZZVKxffff8/MmTMZPnw4paWlhIeHm2zIb1UcHBz4+eefmT17Ng8//DB5eXm0bt2a++67r8b9+dvf/sae3y9IBwwXul+8eJE2bdqYLV4hhBBCmFdNEwrfbuqV2N3c81CVrVu3Gj2+//77OX36tNGyWy8eDw4O5uuvv66yvvnz5zN//nyjZdOmTTOat+7WkbhVzUdX0btWwc/Pj5iYmCrbrM6t7QghhBBCNDcyjEsIIYQQooWQxE4IIYQQooWQxE4IIYQQooWQxE4IIYQQooWQxE4IIYQQooVo/F3HhRBCCCHq4EpxCVnaUou152FjTYCdeeaajY2NZdCgQajVatzc3MzSRkNIYieEEEIIs7tSXELfA2fQ6Kq+Z7Y52CoVxN3Vqc7J3YQJE8jOzq40fZspJSUl8fLLL7Nv3z40Gg1Dhw7lH//4B76+viapX07FCiGEEMLssrSlFk3qADQ6vUV7CGtTUFDAAw88gEKhYPfu3cTFxVFSUsKoUaMM97RvLEnshBBCCCFuodFomDJlCj4+PtjZ2dGvXz/i4+MrlYuLi6Nr167Y2dnRu3dvTp48WW2dcXFxXLp0iXXr1tGlSxe6dOlCTEwMBw8eZPfu3SaJWxI7IYQQQohbzJo1i02bNhETE8Phw4cJDQ1lyJAhZGVlGZWLjo5m6dKlxMfH4+3tzahRo9BqtVXWqdFoUCgU2NraGpbZ2dmhVCrZt2+fSeKWxE4IIYQQ4iYFBQWsWLGCJUuWMGzYMMLDw1m5ciX29vasXr3aqOy8efMYPHiwofftxo0b1d57tnfv3jg6OjJ79mwKCwspKCjg5ZdfpqysjGvXrpkkdknshBBCCCFukpSUhFarpW/fvoZlNjY29OrVizNnzhiV7dOnj+F/Dw8PwsLCKpWp4O3tzVdffcW2bdtwcnLC1dWV7OxsunfvjlJpmpRMRsUKIYQQQljIAw88QFJSEhkZGVhbW+Pm5oafnx/t2rUzSf3SYyeEEEIIcZOQkBBUKhVxcXGGZVqtlvj4eMLDw43K7t+/3/C/Wq0mISGBTp061dqGl5cXbm5u7N69m7S0NB588EGTxC49dkIIIYQQN3F0dGTy5MlER0fj4eFBUFAQ7733HoWFhUycONGo7IIFC/D09MTX15e5c+fi5eXFmDFjqq177dq1dOrUCW9vb3799VemTp3K9OnTCQsLM0nskthZWFLWZRxU9k0dRp2cz0wG4KJaz+FrZSav/0x6+Zw9pTk30Fw/b/L6m0Jpzg0A0tPT671txTZXSrWcLi42aVw1uVJaPnorqURjsTbNoSJ+c71em4OK94wQwjx0Oh3W1uWp0eLFi9HpdIwfP568vDx69uzJzp07cXd3N9pm8eLFTJ06lcTERCIjI9m2bRsqVfUTIp87d445c+aQlZVFmzZtmDt3LtOnTzfZPij0er1lZwv8k8rNzcXV1bWpw6g3pUKJTm++LxOlAiw8X6XZKRQKGvq2asy2jaEEWkLK0FL2oyYO9nacOXuOoKCgpg5F/IlVfKfl5OTg4uJitK64uJiLFy/Stm1b7OzsDMtvhztPDB06lNDQUD766CMzR1Y/1R3TqkiPnYXt2bMHJyenpg6jzjQajdF8O7db/U2hMfvUVMejpTwPLWU/auLl5SVJnbgtBdipiLurU7O8V6xarSYuLo7Y2FgmTZpkgcjMRxI7C4uMjKz060YIIYT4MwiwU9W598ySoqKiiI+PZ+bMmYwePbqpw2kUSeyEEEII8adW3YTCtyOZ7kQIIYQQooWQxE4IIYQQooWQxE4IIYQQJqfTtfQx6pZTn2Mp19gJIYQQwmRUKhVKpZLU1FS8vb1RqVQoFIqmDuu2pNfrKSkpIT09HaVSWeP8eBUksRNCCCGEySiVStq2bcu1a9dITU1t6nBaBAcHB4KCglAqaz/RKomdEEIIIUxKpVIRFBREaWkpZWUt804wlmJlZYW1tXWdez0lsRNCCCGEySkUCmxsbLCxsWnqUP5UZPCEEEIIIUQLIYmdEEIIIUQLIYmdEEIIIUQLIYmdEEIIIUQLIYmdEEIIIUQLIYmdEEIIIUQLIYmdEEIIIUQLIYmdEEIIIUQLIYmdEEIIIUQLIYmdEEIIIUQLIYmdEEIIIUQLIYmdEEIIIUQLIYmdEEIIIUQLIYmdEEIIIUQLIYmdEEIIIUQLIYmdEEIIIUQLIYmdEEIIIUQLIYmdEEIIIUQLIYmdEEIIIUQLYd3UAfzZHD16FCcnp6YOo0YajQZbW9umDqPRqtsPU+3f7X6cbrf4vby8CAoKatIYUlJSyMjIqHP5m4+xqeJvDjEIIZovSewsbMCAAU0dQq0UCgV6vb6pw2g8pRJ0urovr6fb/TgpFEr0+sYfB0uxs7fj3NlzTZaYpKSkENaxE8VFhXXfSKGE34+xnb0D586eaVT8KSkpdOoYRmFRcZ23sVJA2e8vUwd7O8404TEUQpifJHYWNnLkSFq1atXUYVQrMTGRn376iYceeghvb++mDqfBKvbD5dV3sA5qa1hemnKR3IVzGTRoEO3bt29w/enp6WzZsoWRdz5D58BepgjZoq5npxCzexE+D/vg3NW5qcOplSZVw5VPr5CRkdFkSUlGRgbFRYV4jpyJjWdgreWLLhwkZ+8XeI6cCUDm9qWNjj8jI4PComK+eMieTt61X0nzXWIpr/+k4YuH7AF4cktRkx5DIYT5SWJnYV5eXvj7+zd1GNWqOMXj7e3drOOsTcV+WAe1xaZDp0rr3d3dTbJ/nk5+BHp3aHQ9TUXlpcK+jX1Th3FbsfEMxNYvtNZy2szLhvKm1slbSXd/q1rLnckoM5QXQvw5yLtdCCGEEKKFkMROCCGEEKKFkMROCCGEEKKFkMROCCGEEKKFkMROCCGEEKKFkMROCCGEEKKFkMROCCGEEKKFkMROCCGEEKKFkMROCCGEEKKFkMROCCGEEKKFkMROCCGEEKKFkMROCCGEEKKFkMROCCGEEKKFsG7qAET99OvXj/vvv5/9+/ezY8cOAKytrfn/9u48qqlr7R/4NxAIYIAICAE1YJ0VtCDVS7VXW11gpQ61rdUqdfq11WIV7et0r1NrHdteOzlc7XJ4qxbrvYiWDpYiUrWKyuAEgoIVJ0BmmYfs3x++RsOgiIHI4ftZK2uRvffJeZ4QznnYZ4ivry/c3d0hl8tx+fJl/PTTTygqKjJytPfVFnefPn3g4eEBZ2dnKBQKrF69GqWlpQ1ex6BBgzBo0CC9tku5BXghPhUquSnmdlBjoOczaPt2MQoLC5GamopDhw6hrKysRnyWlpYYNGgQOnbsCFtbWxQXF+PixYu68Ybg5eeKZzzboLXaCpXlWqSn5uP4vhTkZRQDAKztLfD2iudrXfbXzeeQEnvbIHE0RB+nPpjUcxJ62PeAo5UjZh2ahUPXDun6B2sGY0zXMehh1wMqCxVeP/A6knKTjBZvY5s+sCPmv9wNW49ewcdhCQga0hlBq/0BfKYbc3GBH4qLiw27YnMl8NI/gW6vAEonoKIY0FYBrRyA4LeAc/v0hn/00Ufw8PAwbAxE9FR5qmfsli1bhmefffahYwYNGoSgoKAmicfYXFxc0KdPH6Snp+u1+/n5oWvXrti7dy+2bdsGa2trvPnmm0aKsqa64jYzM8Ply5dx5MgRg60rMzMTn332GaZOnQq1Wo1hB8IBAGqFGZzMzbDkRBzc3d3xzTffoFOnThg5cmSt8VlbW8Pa2hq//fYbNmzYgNDQUN14Q3HposL5qOv475oYHPgyHiamMoyY+Szk5nf/LAtzSrFt3lG9R/SBVJSXViLtQo7B4mgIS7klknOTsSJ6RZ39cRlxWBe7rokja3q92tnirX4aJN4q0GtPvJoOtVqNXrO2oNesLRgwYIDhVz7ia+CZF4F97wE/fQhkJgBmlrUOdfKbjZkzZyItLc3wcRDRU+OxCrtJkyZBJpNh2rRpNfoCAwMhk8kwadIkQ8VWLyEhIVi+fHmjryctLQ3+/v6wsrKCo6Mj5s6di8rKykZf7z3m5uZ47bXX8OOPP+rNaikUCnh5eeHgwYO4cuUKbt26hf3790Oj0aBdu3ZNFl9d6oobAE6cOIGjR4/i+vXrBlufVqtFYWEh8vLykJGRgZzScgDAxaJS/L8Lf+Hg1ZtITU3F+fPnERERgS5dutQaX2ZmJn744QckJycjNzcXV65c0Y03MTHM/0NhX5/BxePpyLlVhOwbhYjYkQhrewu00dgAAIQAigvK9R7PPNsGl2MyUVFWZZAYGurojaP4Ou5rHEo7VGt/WGoYNp3dhBM3TzRxZE3LytwUX7z5LBaEnEV+SYVeX2VVFTIyMnA7vxi384uRnZ1t2JXLLYAeI4DwJcDVP4G474Btw4CsS7UOdxwciE8++QT5+fmGjYOIniqPvYdq3749goODUVJSomsrLS3F7t27odFoDBpcfdjZ2cHa2rpR11FVVQV/f3+Ul5fjzz//xI4dO7B9+3YsWbKkUdf7oGHDhiE5ORmpqal67S4uLjA1NdVrz8rKQl5e3lNR2NUVd2Oxs7PDhx9+iA0bNmDnzp1oq7Sqc6yFhQUA1Ds+CwsLlJWVQavVGizeByks754ZUVZcUWt/G4012miskXjsZqOsnx7f8pHuiEzKxLHLNYu2Z1za4MaNGzixdhLWv+eH9u3bG3blJvK7j8pqpwZUltQYau7gBjNbNX7//XfDxkBET53HLuy8vLzQvn17hISE6NpCQkKg0Wjg6empN/bXX3/FgAEDoFKpYG9vj1deeQUpKSl6Y65fv45x48bBzs4OrVq1gre3N6Kjo/XGfPfdd3Bzc4OtrS3Gjh2LO3fu6PqqH4p1c3PDypUrMWXKFFhbW0Oj0WDz5s16r3ft2jWMGTMGKpUKdnZ2GDlyJP766686c/7tt9+QkJCAnTt34tlnn8XLL7+M5cuXY/369SgvL6/vW9dg7u7ucHZ2RkRERI0+pVKJysrKGrNhRUVFUCqVjR7bwzws7sZw/fp1hIaGYufOndi8eTM6dOiAn0YMQSvTmh9za2trDB48GKWlpfWKz8rKCn//+98RExPTGKEDMmDAG51x83Iecm7Wfm5k9/7OyLlVhPTUglr7qWkN7+WMnm1tsPbXmucOxqfl4YMvgjF06FAs+N9DaO9ggyNHjhhsthcAUF4IXIsGBs4FrNWAzAToNQZo17fGUDMbJwBARkaG4dZPRE+lBm1lpkyZgm3btumeb926FZMnT64xrqioCHPmzMHp06cREREBExMTvPrqq7oZj8LCQgwcOBA3btzAgQMHcObMGcybN09vRiQlJQWhoaEICwtDWFgYoqKisHr16ofG9/nnn8Pb2xtxcXF4//33MX36dCQl3d34VlRUwM/PD9bW1jhy5AiOHTsGpVKJoUOH1lmkHT9+HB4eHnByctK1+fn5oaCgABcuXKh1mbKyMhQUFOg9GsLGxgZDhw5FSEhIkx76fVLGiPvy5ctISEhARkYG4uPjMWzYMNiam2GEo0pvnLW1NZYuXQqFQoFdu3Y9Mj6FQoG33noLt2/fxuHDhxsl9oFju8CubSv89m3tnydTMxN0ec6Js3VPCWdbCywZ3hNBwfEoq6w5g3s4+TYOHDuLc+fO4fD5NExYtx8qlQqtW7c2bCAh7wGQAR8mAYtvA/2mAef/Y9h1EFGz0qCrYidMmICFCxfi6tWrAIBjx44hODi4xk7vtdde03u+detWtGnTBgkJCXB3d8fu3btx+/ZtnDp1CnZ2dgCATp066S2j1Wqxfft23eHWgIAAREREYMWK2k/aBu4e/nv//fcBAPPnz8e6desQGRmJrl27Ys+ePdBqtfj2228hk8kAANu2bYNKpcLhw4fh6+tb4/XS09P1ijoAuufVLwi4Z9WqVfjoo4/qjLG+XFxcoFQq8d577+naTExM4Orqir59++K7776DXC6HhYWF3qxdq1atUFhY+MTrb6hHxb18+XIIIRo1hvz8fKTk30EHS4WuTWkmx/e//gqZTAa5XI533nnnofGZm5tjwoQJKC8v1312DO2FsV3g6uGAfZ/Hoiiv9ituO3o5Qm5uiosnav+8UdPyaGuLNtYKhH1w/4IIuakJ+rrZ4W0fV3RZ9Ive+ILiciQnJxv+cGzuFWC7P2BmBSisgcIM4PVtNYZVFNydqau+HSMi6WlQYdemTRv4+/tj+/btEELA398fDg4ONcZdunQJS5YsQXR0NLKysnQ7xbS0NLi7uyM+Ph6enp66oq42bm5ueufQOTs7IzMz86Hx9erVS/ezTCaDWq3WLXPmzBlcvny5xnl5paWlNQ4TP4mFCxdizpw5uucFBQUN2qinpqZiw4YNem0jR45EVlYWjh07hvz8fFRVVaFDhw5ITEwEANjb20OlUhn0ooTH9ai4G7uoA+4Wt242Svwn7+5tQZSmJvje/0UUJZ7HRx99hOeee+6h8SkUCkyYMAFVVVX4/vvvG2Xm8YWxXfDMs20Q+q9Y3Mmu+1YvPfo748rZLJQW1n7+HTWtY5ez4LsuSq/t09d7I+V2ITZFpUBb7eNtpTBDx44dG+8WRBXFdx8WKqDTSzW6y7P+QkV+OgYPHtw46yeip0aD72M3ZcoUzJgxAwCwfv36WscMHz4crq6u2LJlC1xcXKDVauHu7q475GlpWftl+Q8yMzPTey6TyR45a/KwZQoLC9GnTx/s2rWrxnJt2rSp9fXUajVOnjyp13bvXBW1Wl3rMgqFAgqFota+x1FeXl6jkK2oqEBJSYmuPTY2Fn5+figpKUFZWRmGDRuGa9euGbWwq0/cSqUSSqVSV9g7OjqivLwc+fn5ehfn1Jevry+SkpKQn5+Prl27Ytq0aagSAqGZuVCammBP746wqKzA2KlTMWjQIN09xYqKiiCE0ItPoVAgICAAZmZmCA4O1vt9Gmrn/PdxXdDlOSf8vPEcKkqrYGVjDgAoK6lEVcX9z7htG0u4dFIh7JszBlmvIVjKLaGxvn+xVFvrtujauivyy/ORXpQOG3MbOLdyhqOVIwDAzdYNAJBVkoXsUgNfHWoEReVVSM7QnxEvqahCXnEFkjMK8Y9h3REmu4qz51zh0ckZ/zPqb6iqqkJubq5hZ+06DgZkALIuA449AN+Pgfzrdws8lStau/VC+/a3AOQgM2I9Fi1ahJwc494qh4gaV4MLu3vnpMlkMvj5+dXoz87ORlJSErZs2YIXXngBAHD06FG9Mb169cK3336LnJych87aGZKXlxf27NkDR0dH2NjY1GsZHx8frFixApmZmXB0vLujCg8Ph42NDXr06NGY4dbLwYMHIYTAm2++CVNTU6SkpOCnn34ydliP5O3trXdD4SlTpgAAQkNDER8f/9ivZ2Njg9dffx2WlpbIz89HeHg4/ELDka1uj+dVSvSxbQUANWZmv/jiC+Tl5em1OTs7664qnjVrVo3xN28++bluHgPvvv6rH3rptUfsSMDF4/cPuXZ/3hmFeWVIS3x6dsg97Xti29D7h/zmPTcPALD/8n4sOrYIL7Z/EZ8M+ETX/9nAuzfq3RC/ARvPbGzaYI3A2dYCm/9nPFovm4rsonKcvHQTf/vbi9i7d69hV2RhAwxeCti4AOVFgNUD29GhqzBsKPCxx3bg+AxkHFyHsPNmWLhwoWFjIKKnSoMLO1NTU92hP1NT0xr9rVu3hr29PTZv3gxnZ2ekpaVhwYIFemPGjRuHlStXYtSoUVi1ahWcnZ0RFxcHFxcX+Pj4NDS0hxo/fjw+/fRTjBw5Eh9//DHatWuHq1evIiQkBPPmzav1FiG+vr7o0aMHAgICsHbtWqSnp2PRokUIDAw0yKzc49q+fbve88rKSvz888/4+eefmzyWx1E97sOHDxv0YoT//Of+SePnzp1DSEgI7Dbthpka+DOvEOrIeFQkJyJn2lsYPXp0jTvwPxjfX3/9hWXLlhksttqsn1b7PeCqO7E/FSf2N83tYurrdMZpeOyo+xsM9qfsx/6U/U0YkfGN3Xz/nn0ffB+HwguRyA77HOqJXwAA0hvjlj8X9t191GHXuXJMDilFzLt3/6lZunQpXnnlFXh5edW5DBE1b0907b2NjU2ds14mJiYIDg5GTEwM3N3dMXv2bHz66ad6Y8zNzfHbb7/B0dERw4YNg4eHB1avXl1roWgoVlZW+OOPP6DRaDB69Gh0794dU6dORWlpaZ25mJqaIiwsDKampvDx8cGECRPw9ttv4+OPP260OImIiIge12PN2FWfcakuNDRU7/mQIUOQkJCg11b9pHlXV1e9mZYHLVu2rMasSVBQkN5966rP+NR2P7rqh/XUajV27NhR6zrr4urq+tTPiBEREVHL9lR/VywRERER1R8LOyIiIiKJYGFHREREJBEs7IiIiIgkgoUdERERkUSwsCMiIiKSCBZ2RERERBLBwo6IiIhIIljYEREREUkECzsiIiIiiWBhR0RERCQRLOyIiIiIJIKFHREREZFEsLAjIiIikggWdkREREQSITd2AC1NVlYWzM3NjR1GnXJzcwEAt2/fNnIkT+ZeHpVpV/Ta7z3Pzc3FrVu3Gvz6996f7MJ0XLud3ODXMZb0vDQAQHlWOUr+KjFyNI9WdrPM2CHoVGRfq9e4yvyMxxr/OBJva+s17kqueKzxRNT8yYQQwthBtAQFBQWwtbU1dhj1IpPJIImPhYkJoK1lh1ZX+2Nq7u+TTGYCIZrPDt/C0gJJF5Og0WiMsv60tDR07dYdpSXF9V9IZgL833tsYWmFpIuJTxR/WloaunfriuKS0novYyoDqv7vY2plaYFEI76HJB339mn5+fmwsbExdjj0AM7YNbGoqCgolUpjh/FQZWVlUCgUxg7jidWVh6Hya+7vU3OL38HBwagFiUajQdLFRGRlZdV7mQffY0PEr9FokHgxyagxENHTjTN2TYT/3RARkVRwn/b04sUTRERERBLBwo6IiIhIIljYEREREUkECzsiIiIiiWBhR0RERCQRLOyIiIiIJIKFHREREZFEsLAjIiIikggWdkREREQSwcKOiIiISCJY2BERERFJBAs7IiIiIolgYUdEREQkESzsiIiIiCRCbuwAWgohBACgoKDAyJEQERE9mXv7snv7Nnp6sLBrItnZ2QCA9u3bGzkSIiIiw7hz5w5sbW2NHQY9gIVdE7GzswMApKWltYg/goKCArRv3x7Xrl2DjY2NscNpVC0pV6Bl5duScgVaVr4tKVfA8PkKIXDnzh24uLgYIDoyJBZ2TcTE5O7pjLa2ti1iI3KPjY1Ni8m3JeUKtKx8W1KuQMvKtyXlChg235YwSdEc8eIJIiIiIolgYUdEREQkESzsmohCocDSpUuhUCiMHUqTaEn5tqRcgZaVb0vKFWhZ+bakXIGWl29LJhO8VpmIiIhIEjhjR0RERCQRLOyIiIiIJIKFHREREZFEsLBrIuvXr4ebmxssLCzQr18/nDx50tghPbFVq1bhueeeg7W1NRwdHTFq1CgkJSXpjSktLUVgYCDs7e2hVCrx2muvISMjw0gRG87q1ashk8kQFBSka5Narjdu3MCECRNgb28PS0tLeHh44PTp07p+IQSWLFkCZ2dnWFpaYsiQIbh06ZIRI26YqqoqLF68GB06dIClpSU6duyI5cuX631VUnPO9Y8//sDw4cPh4uICmUyG0NBQvf765JaTk4Px48fDxsYGKpUKU6dORWFhYRNmUT8Py7WiogLz58+Hh4cHWrVqBRcXF7z99tu4efOm3ms0l1yBR/9uHzRt2jTIZDJ88cUXeu3NKV+qHxZ2TWDPnj2YM2cOli5ditjYWPTu3Rt+fn7IzMw0dmhPJCoqCoGBgThx4gTCw8NRUVEBX19fFBUV6cbMnj0bP/74I/bu3YuoqCjcvHkTo0ePNmLUT+7UqVP497//jV69eum1SynX3Nxc9O/fH2ZmZvjll1+QkJCAzz//HK1bt9aNWbt2Lb766its2rQJ0dHRaNWqFfz8/FBaWmrEyB/fmjVrsHHjRnzzzTdITEzEmjVrsHbtWnz99de6Mc0516KiIvTu3Rvr16+vtb8+uY0fPx4XLlxAeHg4wsLC8Mcff+Ddd99tqhTq7WG5FhcXIzY2FosXL0ZsbCxCQkKQlJSEESNG6I1rLrkCj/7d3rNv3z6cOHGi1m+JaE75Uj0JanR9+/YVgYGBuudVVVXCxcVFrFq1yohRGV5mZqYAIKKiooQQQuTl5QkzMzOxd+9e3ZjExEQBQBw/ftxYYT6RO3fuiM6dO4vw8HAxcOBAMWvWLCGE9HKdP3++GDBgQJ39Wq1WqNVq8emnn+ra8vLyhEKhEN9//31ThGgw/v7+YsqUKXpto0ePFuPHjxdCSCtXAGLfvn265/XJLSEhQQAQp06d0o355ZdfhEwmEzdu3Giy2B9X9Vxrc/LkSQFAXL16VQjRfHMVou58r1+/Ltq2bSvOnz8vXF1dxbp163R9zTlfqhtn7BpZeXk5YmJiMGTIEF2biYkJhgwZguPHjxsxMsPLz88HcP97cWNiYlBRUaGXe7du3aDRaJpt7oGBgfD399fLCZBergcOHIC3tzfeeOMNODo6wtPTE1u2bNH1X7lyBenp6Xr52traol+/fs0u3+effx4RERFITk4GAJw5cwZHjx7Fyy+/DEBauVZXn9yOHz8OlUoFb29v3ZghQ4bAxMQE0dHRTR6zIeXn50Mmk0GlUgGQXq5arRYBAQGYO3cuevbsWaNfavnSXfyu2EaWlZWFqqoqODk56bU7OTnh4sWLRorK8LRaLYKCgtC/f3+4u7sDANLT02Fubq7baN7j5OSE9PR0I0T5ZIKDgxEbG4tTp07V6JNarqmpqdi4cSPmzJmDf/zjHzh16hRmzpwJc3NzTJw4UZdTbZ/r5pbvggULUFBQgG7dusHU1BRVVVVYsWIFxo8fDwCSyrW6+uSWnp4OR0dHvX65XA47O7tmnX9paSnmz5+PcePG6b47VWq5rlmzBnK5HDNnzqy1X2r50l0s7MggAgMDcf78eRw9etTYoTSKa9euYdasWQgPD4eFhYWxw2l0Wq0W3t7eWLlyJQDA09MT58+fx6ZNmzBx4kQjR2dYP/zwA3bt2oXdu3ejZ8+eiI+PR1BQEFxcXCSXK91VUVGBMWPGQAiBjRs3GjucRhETE4Mvv/wSsbGxkMlkxg6HmhAPxTYyBwcHmJqa1rg6MiMjA2q12khRGdaMGTMQFhaGyMhItGvXTteuVqtRXl6OvLw8vfHNMfeYmBhkZmbCy8sLcrkccrkcUVFR+OqrryCXy+Hk5CSZXAHA2dkZPXr00Gvr3r070tLSAECXkxQ+13PnzsWCBQswduxYeHh4ICAgALNnz8aqVasASCvX6uqTm1qtrnGhV2VlJXJycppl/veKuqtXryI8PFw3WwdIK9cjR44gMzMTGo1Gt826evUqPvzwQ7i5uQGQVr50Hwu7RmZubo4+ffogIiJC16bVahEREQEfHx8jRvbkhBCYMWMG9u3bh0OHDqFDhw56/X369IGZmZle7klJSUhLS2t2uQ8ePBjnzp1DfHy87uHt7Y3x48frfpZKrgDQv3//GreuSU5OhqurKwCgQ4cOUKvVevkWFBQgOjq62eVbXFwMExP9TaGpqSm0Wi0AaeVaXX1y8/HxQV5eHmJiYnRjDh06BK1Wi379+jV5zE/iXlF36dIl/P7777C3t9frl1KuAQEBOHv2rN42y8XFBXPnzsXBgwcBSCtfeoCxr95oCYKDg4VCoRDbt28XCQkJ4t133xUqlUqkp6cbO7QnMn36dGFraysOHz4sbt26pXsUFxfrxkybNk1oNBpx6NAhcfr0aeHj4yN8fHyMGLXhPHhVrBDSyvXkyZNCLpeLFStWiEuXLoldu3YJKysrsXPnTt2Y1atXC5VKJfbv3y/Onj0rRo4cKTp06CBKSkqMGPnjmzhxomjbtq0ICwsTV65cESEhIcLBwUHMmzdPN6Y553rnzh0RFxcn4uLiBADxr3/9S8TFxemuBK1PbkOHDhWenp4iOjpaHD16VHTu3FmMGzfOWCnV6WG5lpeXixEjRoh27dqJ+Ph4vW1WWVmZ7jWaS65CPPp3W131q2KFaF75Uv2wsGsiX3/9tdBoNMLc3Fz07dtXnDhxwtghPTEAtT62bdumG1NSUiLef/990bp1a2FlZSVeffVVcevWLeMFbUDVCzup5frjjz8Kd3d3oVAoRLdu3cTmzZv1+rVarVi8eLFwcnISCoVCDB48WCQlJRkp2oYrKCgQs2bNEhqNRlhYWIhnnnlG/POf/9Tb2TfnXCMjI2v9O504caIQon65ZWdni3HjxgmlUilsbGzE5MmTxZ07d4yQzcM9LNcrV67Uuc2KjIzUvUZzyVWIR/9uq6utsGtO+VL9yIR44PbqRERERNRs8Rw7IiIiIolgYUdEREQkESzsiIiIiCSChR0RERGRRLCwIyIiIpIIFnZEREREEsHCjoiIiEgiWNgRERERSQQLOyJqdiZNmoRRo0YZOwwioqeO3NgBEBE9SCaTPbR/6dKl+PLLL8EvzSEiqomFHRE9VW7duqX7ec+ePViyZAmSkpJ0bUqlEkql0hihERE99XgoloieKmq1WvewtbWFTCbTa1MqlTUOxQ4aNAgffPABgoKC0Lp1azg5OWHLli0oKirC5MmTYW1tjU6dOuGXX37RW9f58+fx8ssvQ6lUwsnJCQEBAcjKymrijImIDIeFHRFJwo4dO+Dg4ICTJ0/igw8+wPTp0/HGG2/g+eefR2xsLHx9fREQEIDi4mIAQF5eHl566SV4enri9OnT+PXXX5GRkYExY8YYORMiooZjYUdEktC7d28sWrQInTt3xsKFC2FhYQEHBwe888476Ny5M5YsWYLs7GycPXsWAPDNN9/A09MTK1euRLdu3eDp6YmtW7ciMjISycnJRs6GiKhheI4dEUlCr169dD+bmprC3t4eHh4eujYnJycAQGZmJgDgzJkziIyMrPV8vZSUFHTp0qWRIyYiMjwWdkQkCWZmZnrPZTKZXtu9q221Wi0AoLCwEMOHD8eaNWtqvJazs3MjRkpE1HhY2BFRi+Tl5YX//ve/cHNzg1zOTSERSQPPsSOiFikwMBA5OTkYN24cTp06hZSUFBw8eBCTJ09GVVWVscMjImoQFnZE1CK5uLjg2LFjqKqqgq+vLzw8PBAUFASVSgUTE24aiah5kgnevp2IiIhIEvhvKREREZFEsLAjIiIikggWdkREREQSwcKOiIiISCJY2BERERFJBAs7IiIiIolgYUdEREQkESzsiIiIiCSChR0RERGRRLCwIyIiIpIIFnZEREREEsHCjoiIiEgi/j90atEjyqZvZQAAAABJRU5ErkJggg==", "text/plain": [ "
" ] @@ -358,97 +374,75 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 20, + "metadata": {}, + "outputs": [], + "source": [ + "if torch.cuda.is_available():\n", + " accelerator = \"gpu\"\n", + " batch_size = 256\n", + " train_data_size = 2_000\n", + " embed_dim = 128\n", + " num_encoder_layers = 4\n", + "else:\n", + " accelerator = \"cpu\"\n", + " batch_size = 32\n", + " train_data_size = 1_000\n", + " embed_dim = 64\n", + " num_encoder_layers = 2" + ] + }, + { + "cell_type": "code", + "execution_count": 21, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ - "/Users/luttmann/opt/miniconda3/envs/rl4co/lib/python3.9/site-packages/lightning/pytorch/utilities/parsing.py:198: Attribute 'env' is an instance of `nn.Module` and is already saved during checkpointing. It is recommended to ignore them using `self.save_hyperparameters(ignore=['env'])`.\n", - "/Users/luttmann/opt/miniconda3/envs/rl4co/lib/python3.9/site-packages/lightning/pytorch/utilities/parsing.py:198: Attribute 'policy' is an instance of `nn.Module` and is already saved during checkpointing. It is recommended to ignore them using `self.save_hyperparameters(ignore=['policy'])`.\n", - "/Users/luttmann/opt/miniconda3/envs/rl4co/lib/python3.9/site-packages/lightning/pytorch/trainer/connectors/accelerator_connector.py:551: You passed `Trainer(accelerator='cpu', precision='16-mixed')` but AMP with fp16 is not supported on CPU. Using `precision='bf16-mixed'` instead.\n", - "Using bfloat16 Automatic Mixed Precision (AMP)\n", - "GPU available: False, used: False\n", + "Using 16bit Automatic Mixed Precision (AMP)\n", + "GPU available: True (cuda), used: True\n", "TPU available: False, using: 0 TPU cores\n", "IPU available: False, using: 0 IPUs\n", "HPU available: False, using: 0 HPUs\n", - "/Users/luttmann/opt/miniconda3/envs/rl4co/lib/python3.9/site-packages/lightning/pytorch/trainer/connectors/logger_connector/logger_connector.py:67: Starting from v1.9.0, `tensorboardX` has been removed as a dependency of the `lightning.pytorch` package, due to potential conflicts with other packages in the ML ecosystem. For this reason, `logger=True` will use `CSVLogger` as the default logger, unless the `tensorboard` or `tensorboardX` packages are found. Please `pip install lightning[extra]` or one of them to enable TensorBoard support by default\n", - "Missing logger folder: /Users/luttmann/Documents/Diss/Repos/nco/ai4co/rl4co/examples/other/lightning_logs\n", "val_file not set. Generating dataset instead\n", - "test_file not set. Generating dataset instead\n", - "\n", - " | Name | Type | Params\n", - "--------------------------------------------\n", - "0 | env | FJSPEnv | 0 \n", - "1 | policy | L2DPolicy | 15.9 K\n", - "2 | baseline | WarmupBaseline | 15.9 K\n", - "--------------------------------------------\n", - "31.9 K Trainable params\n", - "0 Non-trainable params\n", - "31.9 K Total params\n", - "0.127 Total estimated model params size (MB)\n" - ] - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "c543880423f84865a05170d16a5aa6fd", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "Sanity Checking: | | 0/? [00:00 20\u001b[0m \u001b[43mtrainer\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mfit\u001b[49m\u001b[43m(\u001b[49m\u001b[43mmodel\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/repos/ai4co/rl4co/rl4co/utils/trainer.py:146\u001b[0m, in \u001b[0;36mRL4COTrainer.fit\u001b[0;34m(self, model, train_dataloaders, val_dataloaders, datamodule, ckpt_path)\u001b[0m\n\u001b[1;32m 141\u001b[0m log\u001b[38;5;241m.\u001b[39mwarning(\n\u001b[1;32m 142\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mOverriding gradient_clip_val to None for \u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mautomatic_optimization=False\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124m models\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 143\u001b[0m )\n\u001b[1;32m 144\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mgradient_clip_val \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[0;32m--> 146\u001b[0m \u001b[38;5;28;43msuper\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mfit\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 147\u001b[0m \u001b[43m \u001b[49m\u001b[43mmodel\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mmodel\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 148\u001b[0m \u001b[43m \u001b[49m\u001b[43mtrain_dataloaders\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mtrain_dataloaders\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 149\u001b[0m \u001b[43m \u001b[49m\u001b[43mval_dataloaders\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mval_dataloaders\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 150\u001b[0m \u001b[43m \u001b[49m\u001b[43mdatamodule\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mdatamodule\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 151\u001b[0m \u001b[43m \u001b[49m\u001b[43mckpt_path\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mckpt_path\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 152\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/miniconda3/envs/cuda1203/lib/python3.10/site-packages/lightning/pytorch/trainer/trainer.py:544\u001b[0m, in \u001b[0;36mTrainer.fit\u001b[0;34m(self, model, train_dataloaders, val_dataloaders, datamodule, ckpt_path)\u001b[0m\n\u001b[1;32m 542\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mstate\u001b[38;5;241m.\u001b[39mstatus \u001b[38;5;241m=\u001b[39m TrainerStatus\u001b[38;5;241m.\u001b[39mRUNNING\n\u001b[1;32m 543\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mtraining \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mTrue\u001b[39;00m\n\u001b[0;32m--> 544\u001b[0m \u001b[43mcall\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_call_and_handle_interrupt\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 545\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_fit_impl\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mmodel\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mtrain_dataloaders\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mval_dataloaders\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdatamodule\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mckpt_path\u001b[49m\n\u001b[1;32m 546\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/miniconda3/envs/cuda1203/lib/python3.10/site-packages/lightning/pytorch/trainer/call.py:44\u001b[0m, in \u001b[0;36m_call_and_handle_interrupt\u001b[0;34m(trainer, trainer_fn, *args, **kwargs)\u001b[0m\n\u001b[1;32m 42\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m trainer\u001b[38;5;241m.\u001b[39mstrategy\u001b[38;5;241m.\u001b[39mlauncher \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m 43\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m trainer\u001b[38;5;241m.\u001b[39mstrategy\u001b[38;5;241m.\u001b[39mlauncher\u001b[38;5;241m.\u001b[39mlaunch(trainer_fn, \u001b[38;5;241m*\u001b[39margs, trainer\u001b[38;5;241m=\u001b[39mtrainer, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs)\n\u001b[0;32m---> 44\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mtrainer_fn\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 46\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m _TunerExitException:\n\u001b[1;32m 47\u001b[0m _call_teardown_hook(trainer)\n", + "File \u001b[0;32m~/miniconda3/envs/cuda1203/lib/python3.10/site-packages/lightning/pytorch/trainer/trainer.py:580\u001b[0m, in \u001b[0;36mTrainer._fit_impl\u001b[0;34m(self, model, train_dataloaders, val_dataloaders, datamodule, ckpt_path)\u001b[0m\n\u001b[1;32m 573\u001b[0m \u001b[38;5;28;01massert\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mstate\u001b[38;5;241m.\u001b[39mfn \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[1;32m 574\u001b[0m ckpt_path \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_checkpoint_connector\u001b[38;5;241m.\u001b[39m_select_ckpt_path(\n\u001b[1;32m 575\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mstate\u001b[38;5;241m.\u001b[39mfn,\n\u001b[1;32m 576\u001b[0m ckpt_path,\n\u001b[1;32m 577\u001b[0m model_provided\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mTrue\u001b[39;00m,\n\u001b[1;32m 578\u001b[0m model_connected\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mlightning_module \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m,\n\u001b[1;32m 579\u001b[0m )\n\u001b[0;32m--> 580\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_run\u001b[49m\u001b[43m(\u001b[49m\u001b[43mmodel\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mckpt_path\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mckpt_path\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 582\u001b[0m \u001b[38;5;28;01massert\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mstate\u001b[38;5;241m.\u001b[39mstopped\n\u001b[1;32m 583\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mtraining \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mFalse\u001b[39;00m\n", + "File \u001b[0;32m~/miniconda3/envs/cuda1203/lib/python3.10/site-packages/lightning/pytorch/trainer/trainer.py:949\u001b[0m, in \u001b[0;36mTrainer._run\u001b[0;34m(self, model, ckpt_path)\u001b[0m\n\u001b[1;32m 946\u001b[0m log\u001b[38;5;241m.\u001b[39mdebug(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;132;01m{\u001b[39;00m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m\u001b[38;5;18m__class__\u001b[39m\u001b[38;5;241m.\u001b[39m\u001b[38;5;18m__name__\u001b[39m\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m: preparing data\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m 947\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_data_connector\u001b[38;5;241m.\u001b[39mprepare_data()\n\u001b[0;32m--> 949\u001b[0m \u001b[43mcall\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_call_setup_hook\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m)\u001b[49m \u001b[38;5;66;03m# allow user to set up LightningModule in accelerator environment\u001b[39;00m\n\u001b[1;32m 950\u001b[0m log\u001b[38;5;241m.\u001b[39mdebug(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;132;01m{\u001b[39;00m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m\u001b[38;5;18m__class__\u001b[39m\u001b[38;5;241m.\u001b[39m\u001b[38;5;18m__name__\u001b[39m\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m: configuring model\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m 951\u001b[0m call\u001b[38;5;241m.\u001b[39m_call_configure_model(\u001b[38;5;28mself\u001b[39m)\n", + "File \u001b[0;32m~/miniconda3/envs/cuda1203/lib/python3.10/site-packages/lightning/pytorch/trainer/call.py:94\u001b[0m, in \u001b[0;36m_call_setup_hook\u001b[0;34m(trainer)\u001b[0m\n\u001b[1;32m 92\u001b[0m _call_lightning_datamodule_hook(trainer, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124msetup\u001b[39m\u001b[38;5;124m\"\u001b[39m, stage\u001b[38;5;241m=\u001b[39mfn)\n\u001b[1;32m 93\u001b[0m _call_callback_hooks(trainer, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124msetup\u001b[39m\u001b[38;5;124m\"\u001b[39m, stage\u001b[38;5;241m=\u001b[39mfn)\n\u001b[0;32m---> 94\u001b[0m \u001b[43m_call_lightning_module_hook\u001b[49m\u001b[43m(\u001b[49m\u001b[43mtrainer\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43msetup\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mstage\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mfn\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 96\u001b[0m trainer\u001b[38;5;241m.\u001b[39mstrategy\u001b[38;5;241m.\u001b[39mbarrier(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mpost_setup\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n", + "File \u001b[0;32m~/miniconda3/envs/cuda1203/lib/python3.10/site-packages/lightning/pytorch/trainer/call.py:157\u001b[0m, in \u001b[0;36m_call_lightning_module_hook\u001b[0;34m(trainer, hook_name, pl_module, *args, **kwargs)\u001b[0m\n\u001b[1;32m 154\u001b[0m pl_module\u001b[38;5;241m.\u001b[39m_current_fx_name \u001b[38;5;241m=\u001b[39m hook_name\n\u001b[1;32m 156\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m trainer\u001b[38;5;241m.\u001b[39mprofiler\u001b[38;5;241m.\u001b[39mprofile(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m[LightningModule]\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mpl_module\u001b[38;5;241m.\u001b[39m\u001b[38;5;18m__class__\u001b[39m\u001b[38;5;241m.\u001b[39m\u001b[38;5;18m__name__\u001b[39m\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m.\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mhook_name\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m):\n\u001b[0;32m--> 157\u001b[0m output \u001b[38;5;241m=\u001b[39m \u001b[43mfn\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 159\u001b[0m \u001b[38;5;66;03m# restore current_fx when nested context\u001b[39;00m\n\u001b[1;32m 160\u001b[0m pl_module\u001b[38;5;241m.\u001b[39m_current_fx_name \u001b[38;5;241m=\u001b[39m prev_fx_name\n", + "File \u001b[0;32m~/repos/ai4co/rl4co/rl4co/models/rl/common/base.py:155\u001b[0m, in \u001b[0;36mRL4COLitModule.setup\u001b[0;34m(self, stage)\u001b[0m\n\u001b[1;32m 153\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mdataloader_names \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[1;32m 154\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39msetup_loggers()\n\u001b[0;32m--> 155\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mpost_setup_hook\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/repos/ai4co/rl4co/rl4co/models/rl/reinforce/reinforce.py:119\u001b[0m, in \u001b[0;36mREINFORCE.post_setup_hook\u001b[0;34m(self, stage)\u001b[0m\n\u001b[1;32m 117\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mpost_setup_hook\u001b[39m(\u001b[38;5;28mself\u001b[39m, stage\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mfit\u001b[39m\u001b[38;5;124m\"\u001b[39m):\n\u001b[1;32m 118\u001b[0m \u001b[38;5;66;03m# Make baseline taking model itself and train_dataloader from model as input\u001b[39;00m\n\u001b[0;32m--> 119\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mbaseline\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msetup\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 120\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mpolicy\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 121\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43menv\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 122\u001b[0m \u001b[43m \u001b[49m\u001b[43mbatch_size\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mval_batch_size\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 123\u001b[0m \u001b[43m \u001b[49m\u001b[43mdevice\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mget_lightning_device\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 124\u001b[0m \u001b[43m \u001b[49m\u001b[43mdataset_size\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mdata_cfg\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mval_data_size\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 125\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/repos/ai4co/rl4co/rl4co/models/rl/reinforce/baselines.py:117\u001b[0m, in \u001b[0;36mWarmupBaseline.setup\u001b[0;34m(self, *args, **kw)\u001b[0m\n\u001b[1;32m 116\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21msetup\u001b[39m(\u001b[38;5;28mself\u001b[39m, \u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkw):\n\u001b[0;32m--> 117\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mbaseline\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msetup\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkw\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/repos/ai4co/rl4co/rl4co/models/rl/reinforce/baselines.py:174\u001b[0m, in \u001b[0;36mRolloutBaseline.setup\u001b[0;34m(self, *args, **kw)\u001b[0m\n\u001b[1;32m 173\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21msetup\u001b[39m(\u001b[38;5;28mself\u001b[39m, \u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkw):\n\u001b[0;32m--> 174\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_update_policy\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkw\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/repos/ai4co/rl4co/rl4co/models/rl/reinforce/baselines.py:187\u001b[0m, in \u001b[0;36mRolloutBaseline._update_policy\u001b[0;34m(self, policy, env, batch_size, device, dataset_size, dataset)\u001b[0m\n\u001b[1;32m 183\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mdataset \u001b[38;5;241m=\u001b[39m env\u001b[38;5;241m.\u001b[39mdataset(batch_size\u001b[38;5;241m=\u001b[39m[dataset_size])\n\u001b[1;32m 185\u001b[0m log\u001b[38;5;241m.\u001b[39minfo(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mEvaluating baseline policy on evaluation dataset\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m 186\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mbl_vals \u001b[38;5;241m=\u001b[39m (\n\u001b[0;32m--> 187\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrollout\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mpolicy\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43menv\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mbatch_size\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdevice\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mdataset\u001b[49m\u001b[43m)\u001b[49m\u001b[38;5;241m.\u001b[39mcpu()\u001b[38;5;241m.\u001b[39mnumpy()\n\u001b[1;32m 188\u001b[0m )\n\u001b[1;32m 189\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mmean \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mbl_vals\u001b[38;5;241m.\u001b[39mmean()\n", + "File \u001b[0;32m~/repos/ai4co/rl4co/rl4co/models/rl/reinforce/baselines.py:242\u001b[0m, in \u001b[0;36mRolloutBaseline.rollout\u001b[0;34m(self, policy, env, batch_size, device, dataset)\u001b[0m\n\u001b[1;32m 238\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m policy(batch, env, decode_type\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mgreedy\u001b[39m\u001b[38;5;124m\"\u001b[39m)[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mreward\u001b[39m\u001b[38;5;124m\"\u001b[39m]\n\u001b[1;32m 240\u001b[0m dl \u001b[38;5;241m=\u001b[39m DataLoader(dataset, batch_size\u001b[38;5;241m=\u001b[39mbatch_size, collate_fn\u001b[38;5;241m=\u001b[39mdataset\u001b[38;5;241m.\u001b[39mcollate_fn)\n\u001b[0;32m--> 242\u001b[0m rewards \u001b[38;5;241m=\u001b[39m torch\u001b[38;5;241m.\u001b[39mcat([eval_policy(batch) \u001b[38;5;28;01mfor\u001b[39;00m batch \u001b[38;5;129;01min\u001b[39;00m dl], \u001b[38;5;241m0\u001b[39m)\n\u001b[1;32m 243\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m rewards\n", + "File \u001b[0;32m~/repos/ai4co/rl4co/rl4co/models/rl/reinforce/baselines.py:242\u001b[0m, in \u001b[0;36m\u001b[0;34m(.0)\u001b[0m\n\u001b[1;32m 238\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m policy(batch, env, decode_type\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mgreedy\u001b[39m\u001b[38;5;124m\"\u001b[39m)[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mreward\u001b[39m\u001b[38;5;124m\"\u001b[39m]\n\u001b[1;32m 240\u001b[0m dl \u001b[38;5;241m=\u001b[39m DataLoader(dataset, batch_size\u001b[38;5;241m=\u001b[39mbatch_size, collate_fn\u001b[38;5;241m=\u001b[39mdataset\u001b[38;5;241m.\u001b[39mcollate_fn)\n\u001b[0;32m--> 242\u001b[0m rewards \u001b[38;5;241m=\u001b[39m torch\u001b[38;5;241m.\u001b[39mcat([\u001b[43meval_policy\u001b[49m\u001b[43m(\u001b[49m\u001b[43mbatch\u001b[49m\u001b[43m)\u001b[49m \u001b[38;5;28;01mfor\u001b[39;00m batch \u001b[38;5;129;01min\u001b[39;00m dl], \u001b[38;5;241m0\u001b[39m)\n\u001b[1;32m 243\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m rewards\n", + "File \u001b[0;32m~/repos/ai4co/rl4co/rl4co/models/rl/reinforce/baselines.py:238\u001b[0m, in \u001b[0;36mRolloutBaseline.rollout..eval_policy\u001b[0;34m(batch)\u001b[0m\n\u001b[1;32m 236\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m torch\u001b[38;5;241m.\u001b[39minference_mode():\n\u001b[1;32m 237\u001b[0m batch \u001b[38;5;241m=\u001b[39m env\u001b[38;5;241m.\u001b[39mreset(batch\u001b[38;5;241m.\u001b[39mto(device))\n\u001b[0;32m--> 238\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mpolicy\u001b[49m\u001b[43m(\u001b[49m\u001b[43mbatch\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43menv\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdecode_type\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mgreedy\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m)\u001b[49m[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mreward\u001b[39m\u001b[38;5;124m\"\u001b[39m]\n", + "File \u001b[0;32m~/miniconda3/envs/cuda1203/lib/python3.10/site-packages/torch/nn/modules/module.py:1532\u001b[0m, in \u001b[0;36mModule._wrapped_call_impl\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 1530\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_compiled_call_impl(\u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs) \u001b[38;5;66;03m# type: ignore[misc]\u001b[39;00m\n\u001b[1;32m 1531\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m-> 1532\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_call_impl\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/miniconda3/envs/cuda1203/lib/python3.10/site-packages/torch/nn/modules/module.py:1541\u001b[0m, in \u001b[0;36mModule._call_impl\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 1536\u001b[0m \u001b[38;5;66;03m# If we don't have any hooks, we want to skip the rest of the logic in\u001b[39;00m\n\u001b[1;32m 1537\u001b[0m \u001b[38;5;66;03m# this function, and just call forward.\u001b[39;00m\n\u001b[1;32m 1538\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m (\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_backward_hooks \u001b[38;5;129;01mor\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_backward_pre_hooks \u001b[38;5;129;01mor\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_forward_hooks \u001b[38;5;129;01mor\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_forward_pre_hooks\n\u001b[1;32m 1539\u001b[0m \u001b[38;5;129;01mor\u001b[39;00m _global_backward_pre_hooks \u001b[38;5;129;01mor\u001b[39;00m _global_backward_hooks\n\u001b[1;32m 1540\u001b[0m \u001b[38;5;129;01mor\u001b[39;00m _global_forward_hooks \u001b[38;5;129;01mor\u001b[39;00m _global_forward_pre_hooks):\n\u001b[0;32m-> 1541\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mforward_call\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1543\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m 1544\u001b[0m result \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m\n", + "File \u001b[0;32m~/repos/ai4co/rl4co/rl4co/models/common/constructive/base.py:231\u001b[0m, in \u001b[0;36mConstructivePolicy.forward\u001b[0;34m(self, td, env, phase, calc_reward, return_actions, return_entropy, return_hidden, return_init_embeds, return_sum_log_likelihood, actions, max_steps, **decoding_kwargs)\u001b[0m\n\u001b[1;32m 229\u001b[0m \u001b[38;5;28;01mwhile\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m td[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mdone\u001b[39m\u001b[38;5;124m\"\u001b[39m]\u001b[38;5;241m.\u001b[39mall():\n\u001b[1;32m 230\u001b[0m logits, mask \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mdecoder(td, hidden, num_starts)\n\u001b[0;32m--> 231\u001b[0m td \u001b[38;5;241m=\u001b[39m \u001b[43mdecode_strategy\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mstep\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 232\u001b[0m \u001b[43m \u001b[49m\u001b[43mlogits\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 233\u001b[0m \u001b[43m \u001b[49m\u001b[43mmask\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 234\u001b[0m \u001b[43m \u001b[49m\u001b[43mtd\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 235\u001b[0m \u001b[43m \u001b[49m\u001b[43maction\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mactions\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mstep\u001b[49m\u001b[43m]\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mif\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mactions\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01mis\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;129;43;01mnot\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mNone\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;28;43;01melse\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mNone\u001b[39;49;00m\u001b[43m,\u001b[49m\n\u001b[1;32m 236\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 237\u001b[0m td \u001b[38;5;241m=\u001b[39m env\u001b[38;5;241m.\u001b[39mstep(td)[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mnext\u001b[39m\u001b[38;5;124m\"\u001b[39m]\n\u001b[1;32m 238\u001b[0m step \u001b[38;5;241m+\u001b[39m\u001b[38;5;241m=\u001b[39m \u001b[38;5;241m1\u001b[39m\n", + "File \u001b[0;32m~/repos/ai4co/rl4co/rl4co/utils/decoding.py:343\u001b[0m, in \u001b[0;36mDecodingStrategy.step\u001b[0;34m(self, logits, mask, td, action, **kwargs)\u001b[0m\n\u001b[1;32m 340\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mmask_logits: \u001b[38;5;66;03m# set mask_logit to None if mask_logits is False\u001b[39;00m\n\u001b[1;32m 341\u001b[0m mask \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[0;32m--> 343\u001b[0m logprobs \u001b[38;5;241m=\u001b[39m \u001b[43mprocess_logits\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 344\u001b[0m \u001b[43m \u001b[49m\u001b[43mlogits\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 345\u001b[0m \u001b[43m \u001b[49m\u001b[43mmask\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 346\u001b[0m \u001b[43m \u001b[49m\u001b[43mtemperature\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mtemperature\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 347\u001b[0m \u001b[43m \u001b[49m\u001b[43mtop_p\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mtop_p\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 348\u001b[0m \u001b[43m \u001b[49m\u001b[43mtop_k\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mtop_k\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 349\u001b[0m \u001b[43m \u001b[49m\u001b[43mtanh_clipping\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mtanh_clipping\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 350\u001b[0m \u001b[43m \u001b[49m\u001b[43mmask_logits\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mmask_logits\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 351\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 352\u001b[0m logprobs, selected_action, td \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_step(\n\u001b[1;32m 353\u001b[0m logprobs, mask, td, action\u001b[38;5;241m=\u001b[39maction, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs\n\u001b[1;32m 354\u001b[0m )\n\u001b[1;32m 356\u001b[0m \u001b[38;5;66;03m# directly return for improvement methods, since the action for improvement methods is finalized in its own policy\u001b[39;00m\n", + "File \u001b[0;32m~/repos/ai4co/rl4co/rl4co/utils/decoding.py:177\u001b[0m, in \u001b[0;36mprocess_logits\u001b[0;34m(logits, mask, temperature, top_p, top_k, tanh_clipping, mask_logits)\u001b[0m\n\u001b[1;32m 175\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m mask_logits:\n\u001b[1;32m 176\u001b[0m \u001b[38;5;28;01massert\u001b[39;00m mask \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mmask must be provided if mask_logits is True\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[0;32m--> 177\u001b[0m \u001b[43mlogits\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;241;43m~\u001b[39;49m\u001b[43mmask\u001b[49m\u001b[43m]\u001b[49m \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mfloat\u001b[39m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m-inf\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m 179\u001b[0m logits \u001b[38;5;241m=\u001b[39m logits \u001b[38;5;241m/\u001b[39m temperature \u001b[38;5;66;03m# temperature scaling\u001b[39;00m\n\u001b[1;32m 181\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m top_k \u001b[38;5;241m>\u001b[39m \u001b[38;5;241m0\u001b[39m:\n", + "\u001b[0;31mIndexError\u001b[0m: The shape of the mask [256, 11] at index 1 does not match the shape of the indexed tensor [256, 101] at index 1" ] } ], "source": [ - "if torch.cuda.is_available():\n", - " accelerator = \"gpu\"\n", - " batch_size = 512\n", - " train_data_size = 100_000\n", - " embed_dim = 128\n", - " num_encoder_layers = 4\n", - "else:\n", - " accelerator = \"cpu\"\n", - " batch_size = 32\n", - " train_data_size = 1_000\n", - " embed_dim = 64\n", - " num_encoder_layers = 2\n", - "\n", "# Policy: neural network, in this case with encoder-decoder architecture\n", "policy = L2DPolicy(embed_dim=embed_dim, num_encoder_layers=num_encoder_layers, env_name=\"fjsp\")\n", "\n", @@ -470,11 +464,207 @@ "\n", "trainer.fit(model)" ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Solving the Job-Shop Scheduling Problem (JSSP)" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "import gc\n", + "from rl4co.envs import JSSPEnv\n", + "from rl4co.models.zoo.l2d.model import L2DPPOModel\n", + "from rl4co.models.zoo.l2d.policy import L2DPolicy4PPO\n", + "from torch.utils.data import DataLoader" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "# Lets generate a more complex instance\n", + "\n", + "generator_params = {\n", + " \"num_jobs\": 15, # the total number of jobs\n", + " \"num_machines\": 15, # the total number of machines that can process operations\n", + " \"min_processing_time\": 1, # the minimum time required for a machine to process an operation\n", + " \"max_processing_time\": 99, # the maximum time required for a machine to process an operation\n", + "}\n", + "\n", + "env = JSSPEnv(\n", + " generator_params=generator_params, \n", + " _torchrl_mode=True, \n", + " stepwise_reward=True\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Train on synthetic data and test on Taillard benchmark" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Using 16bit Automatic Mixed Precision (AMP)\n", + "GPU available: True (cuda), used: True\n", + "TPU available: False, using: 0 TPU cores\n", + "IPU available: False, using: 0 IPUs\n", + "HPU available: False, using: 0 HPUs\n", + "Overriding gradient_clip_val to None for 'automatic_optimization=False' models\n", + "val_file not set. Generating dataset instead\n", + "Provided file name data/../../data/jssp/taillard/15j_15m not found. Make sure to provide a file in the right path first or unset test_file to generate data automatically instead\n", + "LOCAL_RANK: 0 - CUDA_VISIBLE_DEVICES: [0,1,2,3,4]\n", + "\n", + " | Name | Type | Params\n", + "---------------------------------------------\n", + "0 | env | JSSPEnv | 0 \n", + "1 | policy | L2DPolicy4PPO | 133 K \n", + "2 | policy_old | L2DPolicy4PPO | 133 K \n", + "---------------------------------------------\n", + "266 K Trainable params\n", + "0 Non-trainable params\n", + "266 K Total params\n", + "1.066 Total estimated model params size (MB)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 0: 100%|█| 8/8 [03:40<00:00, 0.04it/s, v_num=9, train/loss=1.45e+3, train\n", + "Validation: | | 0/? [00:00 Date: Thu, 13 Jun 2024 14:28:00 +0200 Subject: [PATCH 041/102] [Config] updated configs to match latest experiments --- configs/experiment/scheduling/am-pomo.yaml | 1 + configs/experiment/scheduling/am-ppo.yaml | 8 +------- configs/experiment/scheduling/base.yaml | 8 +++++--- configs/experiment/scheduling/gnn-ppo.yaml | 14 ++++++-------- configs/experiment/scheduling/hgnn-pomo.yaml | 1 + configs/experiment/scheduling/hgnn-ppo.yaml | 16 ++++------------ configs/experiment/scheduling/matnet-ppo.yaml | 8 +------- 7 files changed, 19 insertions(+), 37 deletions(-) diff --git a/configs/experiment/scheduling/am-pomo.yaml b/configs/experiment/scheduling/am-pomo.yaml index a3d2cde7..eb49e2da 100644 --- a/configs/experiment/scheduling/am-pomo.yaml +++ b/configs/experiment/scheduling/am-pomo.yaml @@ -14,6 +14,7 @@ model: _target_: rl4co.models.L2DAttnPolicy env_name: ${env.name} scaling_factor: ${scaling_factor} + normalization: "batch" batch_size: 64 num_starts: 10 num_augment: 0 diff --git a/configs/experiment/scheduling/am-ppo.yaml b/configs/experiment/scheduling/am-ppo.yaml index c5d38eb1..f9e5d354 100644 --- a/configs/experiment/scheduling/am-ppo.yaml +++ b/configs/experiment/scheduling/am-ppo.yaml @@ -43,14 +43,8 @@ model: batch_size: 128 val_batch_size: 512 test_batch_size: 64 - # Song et al use 1000 iterations over batches of 20 = 20_000 - # We train 10 epochs on a set of 2000 instance = 20_000 train_data_size: 2000 mini_batch_size: 512 - reward_scale: scale - optimizer_kwargs: - lr: 1e-4 env: - stepwise_reward: True - _torchrl_mode: True \ No newline at end of file + stepwise_reward: True \ No newline at end of file diff --git a/configs/experiment/scheduling/base.yaml b/configs/experiment/scheduling/base.yaml index e84f95fd..c15a6c45 100644 --- a/configs/experiment/scheduling/base.yaml +++ b/configs/experiment/scheduling/base.yaml @@ -22,17 +22,19 @@ trainer: seed: 12345678 -scaling_factor: 20 +scaling_factor: ${env.generator_params.max_processing_time} model: _target_: ??? batch_size: ??? train_data_size: 2_000 val_data_size: 1_000 - test_data_size: 1_000 + test_data_size: 100 optimizer_kwargs: - lr: 1e-4 + lr: 2e-4 weight_decay: 1e-6 lr_scheduler: "ExponentialLR" lr_scheduler_kwargs: gamma: 0.95 + reward_scale: scale + max_grad_norm: 1 diff --git a/configs/experiment/scheduling/gnn-ppo.yaml b/configs/experiment/scheduling/gnn-ppo.yaml index d9c04856..d2139eea 100644 --- a/configs/experiment/scheduling/gnn-ppo.yaml +++ b/configs/experiment/scheduling/gnn-ppo.yaml @@ -12,24 +12,22 @@ logger: model: _target_: rl4co.models.L2DPPOModel policy_kwargs: - embed_dim: 128 + embed_dim: 256 num_encoder_layers: 3 scaling_factor: ${scaling_factor} - max_grad_norm: 1 - ppo_epochs: 3 + ppo_epochs: 2 het_emb: False + normalization: instance + test_decode_type: greedy batch_size: 128 val_batch_size: 512 test_batch_size: 64 mini_batch_size: 512 - reward_scale: scale - optimizer_kwargs: - lr: 1e-4 + trainer: max_epochs: 10 env: - stepwise_reward: True - _torchrl_mode: True \ No newline at end of file + stepwise_reward: True \ No newline at end of file diff --git a/configs/experiment/scheduling/hgnn-pomo.yaml b/configs/experiment/scheduling/hgnn-pomo.yaml index eb688c03..a964143f 100644 --- a/configs/experiment/scheduling/hgnn-pomo.yaml +++ b/configs/experiment/scheduling/hgnn-pomo.yaml @@ -18,6 +18,7 @@ model: stepwise_encoding: False scaling_factor: ${scaling_factor} het_emb: True + normalization: instance num_starts: 10 batch_size: 64 num_augment: 0 diff --git a/configs/experiment/scheduling/hgnn-ppo.yaml b/configs/experiment/scheduling/hgnn-ppo.yaml index 8e3a62d8..7d46f7d7 100644 --- a/configs/experiment/scheduling/hgnn-ppo.yaml +++ b/configs/experiment/scheduling/hgnn-ppo.yaml @@ -12,24 +12,16 @@ logger: model: _target_: rl4co.models.L2DPPOModel policy_kwargs: - embed_dim: 128 + embed_dim: 256 num_encoder_layers: 3 scaling_factor: ${scaling_factor} - max_grad_norm: 1 - ppo_epochs: 3 + ppo_epochs: 2 het_emb: True + normalization: instance batch_size: 128 val_batch_size: 512 test_batch_size: 64 mini_batch_size: 512 - reward_scale: scale - optimizer_kwargs: - lr: 1e-4 - -trainer: - max_epochs: 10 - env: - stepwise_reward: True - _torchrl_mode: True \ No newline at end of file + stepwise_reward: True \ No newline at end of file diff --git a/configs/experiment/scheduling/matnet-ppo.yaml b/configs/experiment/scheduling/matnet-ppo.yaml index f0e30e3b..c88d2c64 100644 --- a/configs/experiment/scheduling/matnet-ppo.yaml +++ b/configs/experiment/scheduling/matnet-ppo.yaml @@ -36,13 +36,7 @@ model: batch_size: 128 val_batch_size: 512 test_batch_size: 64 - # Song et al use 1000 iterations over batches of 20 = 20_000 - # We train 10 epochs on a set of 2000 instance = 20_000 mini_batch_size: 512 - reward_scale: scale - optimizer_kwargs: - lr: 1e-4 env: - stepwise_reward: True - _torchrl_mode: True \ No newline at end of file + stepwise_reward: True \ No newline at end of file From 0c3e3596a7613ca9c90bc5e33b73ef101f12c493 Mon Sep 17 00:00:00 2001 From: LTluttmann Date: Thu, 13 Jun 2024 14:28:37 +0200 Subject: [PATCH 042/102] [Minor] performance improvements in stepwise PPO + some minor model adjustments --- rl4co/envs/scheduling/fjsp/env.py | 37 +++++++++++++++++++------ rl4co/envs/scheduling/fjsp/generator.py | 3 +- rl4co/models/nn/env_embeddings/init.py | 25 ++--------------- rl4co/models/rl/common/utils.py | 2 ++ rl4co/models/rl/ppo/stepwise_ppo.py | 21 ++++++++------ rl4co/models/zoo/l2d/decoder.py | 1 - rl4co/models/zoo/l2d/policy.py | 5 +++- 7 files changed, 51 insertions(+), 43 deletions(-) diff --git a/rl4co/envs/scheduling/fjsp/env.py b/rl4co/envs/scheduling/fjsp/env.py index dac1c8b6..dcf62608 100644 --- a/rl4co/envs/scheduling/fjsp/env.py +++ b/rl4co/envs/scheduling/fjsp/env.py @@ -79,14 +79,32 @@ def __init__( else: generator = FJSPGenerator(**generator_params) self.generator = generator - self.num_mas = generator.num_mas - self.num_jobs = generator.num_jobs - self.n_ops_max = generator.max_ops_per_job * self.num_jobs + self._num_mas = generator.num_mas + self._num_jobs = generator.num_jobs + self._n_ops_max = generator.max_ops_per_job * self.num_jobs + self.mask_no_ops = mask_no_ops self.check_mask = check_mask self.stepwise_reward = stepwise_reward self._make_spec(self.generator) + @property + def num_mas(self): + return self._num_mas + + @property + def num_jobs(self): + return self._num_jobs + + @property + def n_ops_max(self): + return self._n_ops_max + + def set_instance_params(self, td): + self._num_jobs = td["start_op_per_job"].size(1) + self._num_mas = td["proc_times"].size(1) + self._n_ops_max = td["proc_times"].size(2) + def _decode_graph_structure(self, td: TensorDict): batch_size = td.batch_size start_op_per_job = td["start_op_per_job"] @@ -142,6 +160,8 @@ def _decode_graph_structure(self, td: TensorDict): return td, n_ops_max def _reset(self, td: TensorDict = None, batch_size=None) -> TensorDict: + self.set_instance_params(td) + td_reset = td.clone() td_reset, n_ops_max = self._decode_graph_structure(td_reset) @@ -333,10 +353,10 @@ def _make_step(self, td: TensorDict) -> TensorDict: td["ops_sequence_order"] - gather_by_index(td["job_ops_adj"], selected_job, 1) ).clip(0) # some checks - assert torch.allclose( - td["proc_times"].sum(1).gt(0).sum(1), # num ops with eligible machine - (~(td["op_scheduled"] + td["pad_mask"])).sum(1), # num unscheduled ops - ) + # assert torch.allclose( + # td["proc_times"].sum(1).gt(0).sum(1), # num ops with eligible machine + # (~(td["op_scheduled"] + td["pad_mask"])).sum(1), # num unscheduled ops + # ) return td @@ -483,7 +503,6 @@ def get_num_starts(self, td): # NOTE in the paper they use N_s = 100 return 100 - @staticmethod - def load_data(fpath, batch_size=[]): + def load_data(self, fpath, batch_size=[]): g = FJSPFileGenerator(fpath) return g(batch_size=batch_size) diff --git a/rl4co/envs/scheduling/fjsp/generator.py b/rl4co/envs/scheduling/fjsp/generator.py index 17d3f99f..8d2f427f 100644 --- a/rl4co/envs/scheduling/fjsp/generator.py +++ b/rl4co/envs/scheduling/fjsp/generator.py @@ -15,7 +15,6 @@ class FJSPGenerator(Generator): - """Data generator for the Flexible Job-Shop Scheduling Problem (FJSP). Args: @@ -209,6 +208,8 @@ def __init__(self, file_path: str, n_ops_max: int = None, **unused_kwargs): self.num_mas = num_machines self.num_jobs = num_jobs self.max_ops_per_job = max_ops_per_job + self.n_ops_max = max_ops_per_job * num_jobs + self.start_idx = 0 def _generate(self, batch_size: List[int]) -> TensorDict: diff --git a/rl4co/models/nn/env_embeddings/init.py b/rl4co/models/nn/env_embeddings/init.py index fa3b6fb6..06391cb2 100644 --- a/rl4co/models/nn/env_embeddings/init.py +++ b/rl4co/models/nn/env_embeddings/init.py @@ -407,6 +407,7 @@ def _op_features(self, td): mean_durations = proc_times.sum(1) / (proc_times.gt(0).sum(1) + 1e-9) feats = [ mean_durations / self.scaling_factor, + # td["lbs"] / self.scaling_factor, td["is_ready"], td["num_eligible"], td["ops_job_map"], @@ -430,20 +431,10 @@ def forward(self, td): class FJSPInitEmbedding(JSSPInitEmbedding): def __init__(self, embed_dim, linear_bias=False, scaling_factor: int = 100): - super().__init__(embed_dim, linear_bias, scaling_factor, num_op_feats=5) + super().__init__(embed_dim, linear_bias, scaling_factor) self.init_ma_embed = nn.Linear(1, self.embed_dim, bias=linear_bias) self.edge_embed = nn.Linear(1, embed_dim, bias=linear_bias) - def _op_features(self, td): - feats = [ - td["lbs"] / self.scaling_factor, - td["is_ready"], - td["num_eligible"], - td["op_scheduled"], - td["ops_job_map"], - ] - return torch.stack(feats, dim=-1) - def forward(self, td: TensorDict): ops_emb = self._init_ops_embed(td) ma_emb = self._init_machine_embed(td) @@ -471,19 +462,9 @@ def __init__( linear_bias: bool = False, scaling_factor: int = 1000, ): - super().__init__(embed_dim, linear_bias, scaling_factor, num_op_feats=5) + super().__init__(embed_dim, linear_bias, scaling_factor) self.init_ma_embed = nn.Linear(1, self.embed_dim, bias=linear_bias) - def _op_features(self, td): - feats = [ - td["lbs"] / self.scaling_factor, - td["is_ready"], - td["op_scheduled"], - td["num_eligible"], - td["ops_job_map"], - ] - return torch.stack(feats, dim=-1) - def _init_machine_embed(self, td: TensorDict): busy_for = (td["busy_until"] - td["time"].unsqueeze(1)) / self.scaling_factor ma_embeddings = self.init_ma_embed(busy_for.unsqueeze(2)) diff --git a/rl4co/models/rl/common/utils.py b/rl4co/models/rl/common/utils.py index b23149f7..6c16976a 100644 --- a/rl4co/models/rl/common/utils.py +++ b/rl4co/models/rl/common/utils.py @@ -20,6 +20,8 @@ def __init__(self, scale: str = None): def __call__(self, scores: torch.Tensor): if self.scale is None: return scores + elif isinstance(self.scale, int): + return scores / self.scale # Score scaling self.update(scores) tensor_to_kwargs = dict(dtype=scores.dtype, device=scores.device) diff --git a/rl4co/models/rl/ppo/stepwise_ppo.py b/rl4co/models/rl/ppo/stepwise_ppo.py index 98186ea1..49d087d0 100644 --- a/rl4co/models/rl/ppo/stepwise_ppo.py +++ b/rl4co/models/rl/ppo/stepwise_ppo.py @@ -1,13 +1,13 @@ import copy -from typing import Any +from typing import Any, Union import torch import torch.nn as nn import torch.nn.functional as F from torchrl.data.replay_buffers import ( - LazyTensorStorage, + LazyMemmapStorage, ListStorage, SamplerWithoutReplacement, TensorDictReplayBuffer, @@ -23,13 +23,17 @@ def make_replay_buffer(buffer_size, batch_size, device="cpu"): if device == "cpu": - storage = LazyTensorStorage(buffer_size, device="cpu") + storage = LazyMemmapStorage(buffer_size, device="cpu") + prefetch = 3 else: storage = ListStorage(buffer_size) + prefetch = None return TensorDictReplayBuffer( storage=storage, batch_size=batch_size, sampler=SamplerWithoutReplacement(drop_last=True), + pin_memory=False, + prefetch=prefetch, ) @@ -51,7 +55,7 @@ def __init__( metrics: dict = { "train": ["loss", "surrogate_loss", "value_loss", "entropy"], }, - reward_scale: str = None, + reward_scale: Union[str, int] = None, **kwargs, ): super().__init__(env, policy, metrics=metrics, batch_size=batch_size, **kwargs) @@ -143,13 +147,12 @@ def shared_step( while not next_td["done"].all(): with torch.no_grad(): td = self.policy_old.act(next_td, self.env, phase="train") - - assert self.env._torchrl_mode, "Use torchrl mode in stepwise PPO" - td = self.env.step(td) - next_td = td.pop("next") + # get next state + next_td = self.env.step(td)["next"] + # get reward of action reward = self.env.get_reward(next_td, None) reward = self.scaler(reward) - + # add reward to prior state td.set("reward", reward) # add tensordict with action, logprobs and reward information to buffer self.rb.extend(td) diff --git a/rl4co/models/zoo/l2d/decoder.py b/rl4co/models/zoo/l2d/decoder.py index b0ab3041..833e9c6e 100644 --- a/rl4co/models/zoo/l2d/decoder.py +++ b/rl4co/models/zoo/l2d/decoder.py @@ -178,7 +178,6 @@ def __init__( actor_hidden_dim: int = 128, actor_hidden_layers: int = 2, num_encoder_layers: int = 3, - num_heads: int = 8, normalization: str = "batch", het_emb: bool = False, stepwise: bool = False, diff --git a/rl4co/models/zoo/l2d/policy.py b/rl4co/models/zoo/l2d/policy.py index b4b9b11c..0cfac356 100644 --- a/rl4co/models/zoo/l2d/policy.py +++ b/rl4co/models/zoo/l2d/policy.py @@ -35,6 +35,7 @@ def __init__( env_name: str = "fjsp", het_emb: bool = True, scaling_factor: int = 1000, + normalization: str = "batch", init_embedding: Optional[nn.Module] = None, stepwise_encoding: bool = False, tanh_clipping: float = 10, @@ -77,6 +78,7 @@ def __init__( het_emb=het_emb, stepwise=stepwise_encoding, scaling_factor=scaling_factor, + normalization=normalization, ) # Pass to constructive policy @@ -101,6 +103,7 @@ def __init__( num_heads: int = 8, num_encoder_layers: int = 4, scaling_factor: int = 1000, + normalization: str = "batch", env_name: str = "fjsp", init_embedding: Optional[nn.Module] = None, tanh_clipping: float = 10, @@ -122,7 +125,7 @@ def __init__( embed_dim=embed_dim, num_heads=num_heads, num_layers=num_encoder_layers, - normalization="batch", + normalization=normalization, feedforward_hidden=embed_dim * 2, init_embedding=init_embedding, ) From 60fa8c8a7f37ed2825c3323b54022730dbea0135 Mon Sep 17 00:00:00 2001 From: Jieyi Bi <113847374+jieyibi@users.noreply.github.com> Date: Wed, 19 Jun 2024 21:19:42 +0800 Subject: [PATCH 043/102] Update 2d-meta_train.py Change some parameters for performance --- examples/2d-meta_train.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/examples/2d-meta_train.py b/examples/2d-meta_train.py index 41b6db4c..1f3fb8d4 100644 --- a/examples/2d-meta_train.py +++ b/examples/2d-meta_train.py @@ -35,7 +35,7 @@ def main(): # Example callbacks checkpoint_callback = ModelCheckpoint( - dirpath="checkpoints", # save to checkpoints/ + dirpath="meta_pomo/checkpoints", # save to checkpoints/ filename="epoch_{epoch:03d}", # save as epoch_XXX.ckpt save_top_k=1, # save only the best model save_last=True, # save the last model @@ -47,8 +47,8 @@ def main(): # Meta callbacks meta_callback = ReptileCallback( num_tasks = 1, # the number of tasks in a mini-batch, i.e. `B` in the original paper - alpha = 0.99, # initial weight of the task model for the outer-loop optimization of reptile - alpha_decay = 0.999, # weight decay of the task model for the outer-loop optimization of reptile + alpha = 0.9, # initial weight of the task model for the outer-loop optimization of reptile + alpha_decay = 1, # weight decay of the task model for the outer-loop optimization of reptile. No decay performs better. min_size = 20, # minimum of sampled size in meta tasks (only supported in cross-size generalization) max_size= 150, # maximum of sampled size in meta tasks (only supported in cross-size generalization) data_type="size_distribution", # choose from ["size", "distribution", "size_distribution"] @@ -63,7 +63,7 @@ def main(): # Adjust your trainer to the number of epochs you want to run trainer = RL4COTrainer( - max_epochs=20000, # (the number of meta_model updates) * (the number of tasks in a mini-batch) + max_epochs=15000, # (the number of meta_model updates) * (the number of tasks in a mini-batch) callbacks=callbacks, accelerator="gpu", devices=[device_id], From 1d3d3f8791bb44d018b4620e4d827bab3f504b7e Mon Sep 17 00:00:00 2001 From: Jieyi Bi <113847374+jieyibi@users.noreply.github.com> Date: Thu, 20 Jun 2024 01:27:51 +0800 Subject: [PATCH 044/102] Create mdpomo.yaml --- configs/experiment/routing/mdpomo.yaml | 41 ++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 configs/experiment/routing/mdpomo.yaml diff --git a/configs/experiment/routing/mdpomo.yaml b/configs/experiment/routing/mdpomo.yaml new file mode 100644 index 00000000..2de2a532 --- /dev/null +++ b/configs/experiment/routing/mdpomo.yaml @@ -0,0 +1,41 @@ +# @package _global_ + +defaults: + - override /model: pomo.yaml + - override /env: cvrp.yaml + - override /callbacks: default.yaml + - override /trainer: default.yaml + - override /logger: wandb.yaml + +env: + generator_params: + num_loc: 50 + loc_distribution: "mix_distribution" + + +logger: + wandb: + project: "rl4co" + tags: ["mdpomo", "${env.name}"] + group: "${env.name}${env.generator_params.num_loc}" + name: "mdpomo-${env.name}${env.generator_params.num_loc}" + + +model: + batch_size: 512 + train_data_size: 10_000 + val_data_size: 10_000 + test_data_size: 10_000 + optimizer_kwargs: + lr: 1e-4 + weight_decay: 1e-6 + lr_scheduler: + "MultiStepLR" + lr_scheduler_kwargs: + milestones: [9001] + gamma: 0.1 + +trainer: + max_epochs: 10000 + +seed: 1234 From 01f05f40ca832a17d3d46f998cd31b4111ebd702 Mon Sep 17 00:00:00 2001 From: Federico Berto Date: Thu, 20 Jun 2024 13:44:44 +0900 Subject: [PATCH 045/102] [Minor] remove unused imports --- rl4co/envs/graph/flp/env.py | 14 ++------------ rl4co/envs/graph/flp/generator.py | 5 +++-- rl4co/envs/graph/mcp/env.py | 20 +------------------- rl4co/envs/graph/mcp/generator.py | 5 +---- 4 files changed, 7 insertions(+), 37 deletions(-) diff --git a/rl4co/envs/graph/flp/env.py b/rl4co/envs/graph/flp/env.py index 0c985841..aa73b3f9 100644 --- a/rl4co/envs/graph/flp/env.py +++ b/rl4co/envs/graph/flp/env.py @@ -1,21 +1,11 @@ -import math from typing import Optional -from einops import rearrange -from matplotlib.axes import Axes import torch -import torch.nn as nn from tensordict.tensordict import TensorDict from rl4co.envs.common.base import RL4COEnvBase -from rl4co.utils.ops import gather_by_index, get_distance_matrix -from rl4co.data.dataset import TensorDictDataset - -from typing import Iterable, Optional - -from lightning.pytorch.utilities.seed import isolate_rng - +from rl4co.utils.ops import gather_by_index from rl4co.utils.pylogger import get_pylogger from .generator import FLPGenerator @@ -165,7 +155,7 @@ def check_solution_validity(td: TensorDict, actions: torch.Tensor) -> None: def local_search(td: TensorDict, actions: torch.Tensor, **kwargs) -> torch.Tensor: # TODO: local search pass - + @staticmethod def get_num_starts(td): return td["action_mask"].shape[-1] diff --git a/rl4co/envs/graph/flp/generator.py b/rl4co/envs/graph/flp/generator.py index f30932b3..adbc7de6 100644 --- a/rl4co/envs/graph/flp/generator.py +++ b/rl4co/envs/graph/flp/generator.py @@ -1,13 +1,14 @@ +import math + from typing import Callable, Union import torch -import math from tensordict.tensordict import TensorDict from torch.distributions import Uniform from rl4co.envs.common.utils import Generator, get_sampler -from rl4co.utils.ops import gather_by_index, get_distance_matrix +from rl4co.utils.ops import get_distance_matrix from rl4co.utils.pylogger import get_pylogger log = get_pylogger(__name__) diff --git a/rl4co/envs/graph/mcp/env.py b/rl4co/envs/graph/mcp/env.py index e8a4ddc2..3f0275e0 100644 --- a/rl4co/envs/graph/mcp/env.py +++ b/rl4co/envs/graph/mcp/env.py @@ -1,30 +1,14 @@ from typing import Optional -from einops import rearrange -from matplotlib.axes import Axes -import random import torch -import torch.nn as nn from tensordict.tensordict import TensorDict -from rl4co.envs.common.base import RL4COEnvBase -from rl4co.data.dataset import TensorDictDataset -from rl4co.data.utils import load_npz_to_tensordict - -from torch_geometric.data import Batch, Data - -from rl4co.utils.ops import gather_by_index +from rl4co.envs.common.base import RL4COEnvBase from rl4co.utils.pylogger import get_pylogger -from typing import Iterable, Optional - -from lightning.pytorch.utilities.seed import isolate_rng - -import numpy as np from .generator import MCPGenerator - log = get_pylogger(__name__) @@ -71,12 +55,10 @@ def __init__( def _step(self, td: TensorDict) -> TensorDict: # action: [batch_size, 1]; the set to be chosen in each instance batch_size = td["action"].shape[0] - n_items_ = td["weights"].shape[1] selected = td["action"] # Update set selection status chosen = td["chosen"].clone() # (batch_size, n_sets) - n_sets_ = chosen.shape[1] chosen[torch.arange(batch_size).to(td.device), selected] = True # We are done if we choose enough sets diff --git a/rl4co/envs/graph/mcp/generator.py b/rl4co/envs/graph/mcp/generator.py index ea14159c..92b59410 100644 --- a/rl4co/envs/graph/mcp/generator.py +++ b/rl4co/envs/graph/mcp/generator.py @@ -1,11 +1,8 @@ -from typing import Callable, Union - import torch from tensordict.tensordict import TensorDict -from torch.distributions import Uniform -from rl4co.envs.common.utils import Generator, get_sampler +from rl4co.envs.common.utils import Generator from rl4co.utils.pylogger import get_pylogger log = get_pylogger(__name__) From c24c3a6ad63ad2b4276045aad7cb2c0c2edb15a9 Mon Sep 17 00:00:00 2001 From: Federico Berto Date: Thu, 20 Jun 2024 13:45:35 +0900 Subject: [PATCH 046/102] [Minor] linting --- rl4co/envs/common/distribution_utils.py | 106 ++++++++++++++++-------- 1 file changed, 72 insertions(+), 34 deletions(-) diff --git a/rl4co/envs/common/distribution_utils.py b/rl4co/envs/common/distribution_utils.py index f440adeb..ab8e1449 100644 --- a/rl4co/envs/common/distribution_utils.py +++ b/rl4co/envs/common/distribution_utils.py @@ -1,8 +1,9 @@ import random + import torch -class Cluster(): +class Cluster: """ Multiple gaussian distributed clusters, as in the Solomon benchmark dataset Following the setting in Bi et al. 2022 (https://arxiv.org/abs/2210.07686) @@ -10,17 +11,21 @@ class Cluster(): Args: n_cluster: Number of the gaussian distributed clusters """ + def __init__(self, n_cluster: int = 3): super().__init__() self.lower, self.upper = 0.2, 0.8 self.std = 0.07 self.n_cluster = n_cluster + def sample(self, size): batch_size, num_loc, _ = size # Generate the centers of the clusters - center = self.lower + (self.upper - self.lower) * torch.rand(batch_size, self.n_cluster * 2) + center = self.lower + (self.upper - self.lower) * torch.rand( + batch_size, self.n_cluster * 2 + ) # Pre-define the coordinates coords = torch.zeros(batch_size, num_loc, 2) @@ -33,11 +38,13 @@ def sample(self, size): # Generate the coordinates current_index = 0 for i in range(self.n_cluster): - means = center[:, i * 2:(i + 1) * 2] + means = center[:, i * 2 : (i + 1) * 2] stds = torch.full((batch_size, 2), self.std) - points = torch.normal(means.unsqueeze(1).expand(-1, cluster_sizes[i], -1), - stds.unsqueeze(1).expand(-1, cluster_sizes[i], -1)) - coords[:, current_index:current_index + cluster_sizes[i], :] = points + points = torch.normal( + means.unsqueeze(1).expand(-1, cluster_sizes[i], -1), + stds.unsqueeze(1).expand(-1, cluster_sizes[i], -1), + ) + coords[:, current_index : current_index + cluster_sizes[i], :] = points current_index += cluster_sizes[i] # Confine the coordinates to range [0, 1] @@ -45,8 +52,8 @@ def sample(self, size): return coords -class Mixed(): +class Mixed: """ 50% nodes sampled from uniform distribution, 50% nodes sampled from gaussian distribution, as in the Solomon benchmark dataset Following the setting in Bi et al. 2022 (https://arxiv.org/abs/2210.07686) @@ -60,46 +67,59 @@ def __init__(self, n_cluster_mix=1): self.lower, self.upper = 0.2, 0.8 self.std = 0.07 self.n_cluster_mix = n_cluster_mix + def sample(self, size): batch_size, num_loc, _ = size # Generate the centers of the clusters - center = self.lower + (self.upper - self.lower) * torch.rand(batch_size, self.n_cluster_mix * 2) + center = self.lower + (self.upper - self.lower) * torch.rand( + batch_size, self.n_cluster_mix * 2 + ) # Pre-define the coordinates sampled under uniform distribution coords = torch.FloatTensor(batch_size, num_loc, 2).uniform_(0, 1) # Sample mutated index (default setting: 50% mutation) - mutate_idx = torch.stack([torch.randperm(num_loc)[:num_loc // 2] for _ in range(batch_size)]) + mutate_idx = torch.stack( + [torch.randperm(num_loc)[: num_loc // 2] for _ in range(batch_size)] + ) # Generate the coordinates segment_size = num_loc // (2 * self.n_cluster_mix) remaining_indices = num_loc // 2 - segment_size * (self.n_cluster_mix - 1) sizes = [segment_size] * (self.n_cluster_mix - 1) + [remaining_indices] for i in range(self.n_cluster_mix): - indices = mutate_idx[:, sum(sizes[:i]):sum(sizes[:i + 1])] + indices = mutate_idx[:, sum(sizes[:i]) : sum(sizes[: i + 1])] means_x = center[:, 2 * i].unsqueeze(1).expand(-1, sizes[i]) means_y = center[:, 2 * i + 1].unsqueeze(1).expand(-1, sizes[i]) - coords.scatter_(1, indices.unsqueeze(-1).expand(-1, -1, 2), - torch.stack([ - torch.normal(means_x.expand(-1, sizes[i]), self.std), - torch.normal(means_y.expand(-1, sizes[i]), self.std) - ], dim=2)) + coords.scatter_( + 1, + indices.unsqueeze(-1).expand(-1, -1, 2), + torch.stack( + [ + torch.normal(means_x.expand(-1, sizes[i]), self.std), + torch.normal(means_y.expand(-1, sizes[i]), self.std), + ], + dim=2, + ), + ) # Confine the coordinates to range [0, 1] coords.clamp_(0, 1) return coords -class Gaussian_Mixture(): - ''' + +class Gaussian_Mixture: + """ Following Zhou et al. (2023): https://arxiv.org/abs/2305.19587 Args: num_modes: the number of clusters/modes in the Gaussian Mixture. cdist: scale of the uniform distribution for center generation. - ''' + """ + def __init__(self, num_modes: int = 0, cdist: int = 0): super().__init__() self.num_modes = num_modes @@ -118,11 +138,14 @@ def sample(self, size): return torch.stack(res) def generate_gaussian_mixture(self, num_loc): - """Following the setting in Zhang et al. 2022 (https://arxiv.org/abs/2204.03236)""" # Randomly decide how many points each mode gets - nums = torch.multinomial(input=torch.ones(self.num_modes) / self.num_modes, num_samples=num_loc, replacement=True) + nums = torch.multinomial( + input=torch.ones(self.num_modes) / self.num_modes, + num_samples=num_loc, + replacement=True, + ) # Prepare to collect points coords = torch.empty((0, 2)) @@ -133,13 +156,14 @@ def generate_gaussian_mixture(self, num_loc): if num > 0: center = torch.rand((1, 2)) * self.cdist cov = torch.eye(2) # Covariance matrix - nxy = torch.distributions.MultivariateNormal(center.squeeze(), covariance_matrix=cov).sample((num,)) + nxy = torch.distributions.MultivariateNormal( + center.squeeze(), covariance_matrix=cov + ).sample((num,)) coords = torch.cat((coords, nxy), dim=0) return self._global_min_max_scaling(coords) def generate_gaussian(self, batch_size, num_loc): - """Following the setting in Xin et al. 2022 (https://openreview.net/pdf?id=nJuzV-izmPJ)""" # Mean and random covariances @@ -151,7 +175,9 @@ def generate_gaussian(self, batch_size, num_loc): for i in range(batch_size): # Construct covariance matrix for each sample cov_matrix = torch.tensor([[1.0, covs[i]], [covs[i], 1.0]]) - m = torch.distributions.MultivariateNormal(mean[i], covariance_matrix=cov_matrix) + m = torch.distributions.MultivariateNormal( + mean[i], covariance_matrix=cov_matrix + ) coords[i] = m.sample() # Shuffle the coordinates @@ -175,25 +201,32 @@ def _batch_normalize_and_center(self, coords): coords_max = coords.max(dim=1, keepdim=True).values # Step 2: Normalize coordinates to range [0, 1] - coords = coords - coords_min # Broadcasting subtracts min value on each coordinate - range_max = (coords_max - coords_min).max(dim=-1, keepdim=True).values # The maximum range among both coordinates + coords = ( + coords - coords_min + ) # Broadcasting subtracts min value on each coordinate + range_max = ( + (coords_max - coords_min).max(dim=-1, keepdim=True).values + ) # The maximum range among both coordinates coords = coords / range_max # Divide by the max range to normalize # Step 3: Center the batch in the middle of the [0, 1] range - coords = coords + (1 - coords.max(dim=1, keepdim=True).values) / 2 # Centering the batch + coords = ( + coords + (1 - coords.max(dim=1, keepdim=True).values) / 2 + ) # Centering the batch return coords -class Mix_Distribution(): - ''' +class Mix_Distribution: + """ Mixture of three exemplar distributions in batch-level, i.e. Uniform, Cluster, Mixed Following the setting in Bi et al. 2022 (https://arxiv.org/abs/2210.07686) Args: n_cluster: Number of the gaussian distributed clusters in Cluster distribution n_cluster_mix: Number of the gaussian distributed clusters in Mixed distribution - ''' + """ + def __init__(self, n_cluster=3, n_cluster_mix=1): super().__init__() self.lower, self.upper = 0.2, 0.8 @@ -226,15 +259,18 @@ def sample(self, size): # The remaining ones are uniformly distributed return coords -class Mix_Multi_Distributions(): - ''' +class Mix_Multi_Distributions: + """ Mixture of 11 Gaussian-like distributions in batch-level Following the setting in Zhou et al. (2023): https://arxiv.org/abs/2305.19587 - ''' + """ + def __init__(self): super().__init__() - self.dist_set = [(0, 0), (1, 1)] + [(m, c) for m in [3, 5, 7] for c in [10, 30, 50]] + self.dist_set = [(0, 0), (1, 1)] + [ + (m, c) for m in [3, 5, 7] for c in [10, 30, 50] + ] def sample(self, size): batch_size, num_loc, _ = size @@ -242,7 +278,9 @@ def sample(self, size): # Pre-select distributions for the entire batch dists = [random.choice(self.dist_set) for _ in range(batch_size)] - unique_dists = list(set(dists)) # Unique distributions to minimize re-instantiation + unique_dists = list( + set(dists) + ) # Unique distributions to minimize re-instantiation # Instantiate Gaussian_Mixture only once per unique distribution gm_instances = {dist: Gaussian_Mixture(*dist) for dist in unique_dists} From 57ace5408d29611861166d57a9c63e9098b1e409 Mon Sep 17 00:00:00 2001 From: Federico Berto Date: Thu, 20 Jun 2024 13:48:17 +0900 Subject: [PATCH 047/102] [Doc] citation as Google Scholar, un-butcher @ngastzepeda and @ahottung names --- README.md | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 7ecd0d3e..550a19ff 100644 --- a/README.md +++ b/README.md @@ -178,13 +178,11 @@ We are also on [Slack](https://join.slack.com/t/rl4co/shared_invite/zt-1ytz2c1v4 If you find RL4CO valuable for your research or applied projects: ```bibtex -@misc{berto2024rl4co, +@article{berto2024rl4co, title={{RL4CO: an Extensive Reinforcement Learning for Combinatorial Optimization Benchmark}}, - author={Federico Berto and Chuanbo Hua and Junyoung Park and Laurin Luttmann and Yining Ma and Fanchen Bu and Jiarui Wang and Haoran Ye and Minsu Kim and Sanghyeok Choi and Zepeda Gast and Andre Hottung and Jianan Zhou and Jieyi Bi and Yu Hu and Fei Liu and Hyeonah Kim and Jiwoo Son and Haeyeon Kim and Davide Angioni and Wouter Kool and Zhiguang Cao and Jie Zhang and Kijung Shin and Cathy Wu and Sungsoo Ahn and Guojie Song and Changhyun Kwon and Lin Xie and Jinkyoo Park}, + author={Federico Berto and Chuanbo Hua and Junyoung Park and Laurin Luttmann and Yining Ma and Fanchen Bu and Jiarui Wang and Haoran Ye and Minsu Kim and Sanghyeok Choi and Nayeli Gast Zepeda and Andr\'e Hottung and Jianan Zhou and Jieyi Bi and Yu Hu and Fei Liu and Hyeonah Kim and Jiwoo Son and Haeyeon Kim and Davide Angioni and Wouter Kool and Zhiguang Cao and Jie Zhang and Kijung Shin and Cathy Wu and Sungsoo Ahn and Guojie Song and Changhyun Kwon and Lin Xie and Jinkyoo Park}, year={2024}, - eprint={2306.17100}, - archivePrefix={arXiv}, - primaryClass={cs.LG}, + journal={arXiv preprint arXiv:2306.17100}, note={\url{https://github.com/ai4co/rl4co}} } ``` From 131520140eb71b7cb4bebed773352cd6ba5c635e Mon Sep 17 00:00:00 2001 From: Federico Berto Date: Thu, 20 Jun 2024 16:03:52 +0900 Subject: [PATCH 048/102] [Tests] skip if numba is not installed --- tests/test_training.py | 42 ++++++++++++++++++++++++++++++++++-------- 1 file changed, 34 insertions(+), 8 deletions(-) diff --git a/tests/test_training.py b/tests/test_training.py index 5558e5de..0730923d 100644 --- a/tests/test_training.py +++ b/tests/test_training.py @@ -17,6 +17,7 @@ DACT, MDAM, N2S, + POMO, ActiveSearch, AttentionModelPolicy, DeepACO, @@ -29,7 +30,6 @@ NeuOpt, PolyNet, SymNCO, - POMO ) from rl4co.utils import RL4COTrainer from rl4co.utils.meta_trainer import ReptileCallback @@ -130,20 +130,45 @@ def test_mdam(): trainer.fit(model) trainer.test(model) + def test_pomo_reptile(): env = TSPEnv(generator_params=dict(num_loc=20)) - policy = AttentionModelPolicy(env_name=env.name, embed_dim=128, - num_encoder_layers=6, num_heads=8, - normalization="instance", use_graph_context=False) - model = POMO(env, policy, batch_size=5, train_data_size=5*3, val_data_size=10, test_data_size=10) + policy = AttentionModelPolicy( + env_name=env.name, + embed_dim=128, + num_encoder_layers=6, + num_heads=8, + normalization="instance", + use_graph_context=False, + ) + model = POMO( + env, + policy, + batch_size=5, + train_data_size=5 * 3, + val_data_size=10, + test_data_size=10, + ) meta_callback = ReptileCallback( - data_type="size", sch_bar=0.9, num_tasks=2, alpha = 0.99, - alpha_decay = 0.999, min_size = 20, max_size =50 + data_type="size", + sch_bar=0.9, + num_tasks=2, + alpha=0.99, + alpha_decay=0.999, + min_size=20, + max_size=50, + ) + trainer = RL4COTrainer( + max_epochs=2, + callbacks=[meta_callback], + devices=1, + accelerator=accelerator, + limit_train_batches=3, ) - trainer = RL4COTrainer(max_epochs=2, callbacks=[meta_callback], devices=1, accelerator=accelerator, limit_train_batches=3) trainer.fit(model) trainer.test(model) + @pytest.mark.parametrize("SearchMethod", [ActiveSearch, EASEmb, EASLay]) def test_search_methods(SearchMethod): env = TSPEnv(generator_params=dict(num_loc=20)) @@ -175,6 +200,7 @@ def test_nargnn(): @pytest.mark.skipif( "torch_geometric" not in sys.modules, reason="PyTorch Geometric not installed" ) +@pytest.mark.skipfif("numba" not in sys.modules, reason="Numba not installed") def test_deepaco(): env = TSPEnv(generator_params=dict(num_loc=20)) model = DeepACO(env, train_data_size=10, val_data_size=10, test_data_size=10) From a6231241b8ddf2fd6f38f8931f42778d84e78603 Mon Sep 17 00:00:00 2001 From: Federico Berto Date: Thu, 20 Jun 2024 16:10:13 +0900 Subject: [PATCH 049/102] [Tests] less ants for faster testing --- tests/test_training.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/tests/test_training.py b/tests/test_training.py index 0730923d..07d23a25 100644 --- a/tests/test_training.py +++ b/tests/test_training.py @@ -203,7 +203,13 @@ def test_nargnn(): @pytest.mark.skipfif("numba" not in sys.modules, reason="Numba not installed") def test_deepaco(): env = TSPEnv(generator_params=dict(num_loc=20)) - model = DeepACO(env, train_data_size=10, val_data_size=10, test_data_size=10) + model = DeepACO( + env, + train_data_size=10, + val_data_size=10, + test_data_size=10, + policy_kwargs={"n_ants": 5}, + ) trainer = RL4COTrainer( max_epochs=1, gradient_clip_val=1, devices=1, accelerator=accelerator ) From 907d07567bc06813ddbd222a13c49682ff1d1b63 Mon Sep 17 00:00:00 2001 From: Federico Berto Date: Wed, 3 Jul 2024 18:11:21 +0900 Subject: [PATCH 050/102] [Feat] move to poetry #196; version in pyproject --- .github/workflows/tests.yml | 2 +- pyproject.toml | 214 ++++++++++++++++-------------------- rl4co/__init__.py | 5 +- 3 files changed, 101 insertions(+), 120 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index bc821ab2..972bc9dc 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -38,7 +38,7 @@ jobs: - name: Install dependencies run: | python -m pip install --upgrade pip - pip install -e ".[testing, graph, routing]" + pip install -e ".[dev, graph, routing]" - name: Run pytest run: pytest --cov=rl4co tests/*.py diff --git a/pyproject.toml b/pyproject.toml index 06bf7b2c..3d17b497 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,57 +1,47 @@ -[build-system] -requires = ["setuptools>=61.0"] -build-backend = "setuptools.build_meta" - -[tool.setuptools.packages.find] -include = ['rl4co*'] - -# Automatically determine version from package -[tool.setuptools.dynamic] -version = {attr = "rl4co.__version__"} - -[project] +[tool.poetry] name = "rl4co" -readme = "README.md" - - +version = "0.5.0.dev1" description = "RL4CO: an Extensive Reinforcement Learning for Combinatorial Optimization Benchmark" authors = [ - {name = "Federico Berto", email = "berto.federico2@gmail.com"}, - {name = "Chuanbo Hua", email="cbhua@kaist.ac.kr"}, - {name = "Junyoung Park", email="junyoungpark.ml@gmail.com"}, - {name = "Laurin Luttmann", email="laurin.luttmann@gmail.com"}, - {name = "Yining Ma"}, - {name = "Fanchen Bu"}, - {name = "Jiarui Wang"}, - {name = "Haoran Ye"}, - {name = "Minsu Kim"}, - {name = "Sanghyeok Choi"}, - {name = "Zepeda Gast"}, - {name = "Andre Hottung"}, - {name = "Jianan Zhou"}, - {name = "Jieyi Bi"}, - {name = "Yu Hu"}, - {name = "Fei Liu"}, - {name = "Hyeonah Kim"}, - {name = "Jiwoo Son"}, - {name = "Haeyeon Kim"}, - {name = "Davide Angioni"}, - {name = "Wouter Kool"}, - {name = "Zhiguang Cao"}, - {name = "Jie Zhang"}, - {name = "Kijung Shin"}, - {name = "Cathy Wu"}, - {name = "Sungsoo Ahn"}, - {name = "Guojie Song"}, - {name = "Changhyun Kwon"}, - {name = "Lin Xie"}, - {name = "Jinkyoo Park"}, - ] -dynamic = ["version"] - -license = {file = "LICENSE"} - -requires-python = ">=3.8" + "Federico Berto ", + "Chuanbo Hua ", + "Junyoung Park ", + "Laurin Luttmann ", + "Yining Ma", + "Fanchen Bu", + "Jiarui Wang", + "Haoran Ye", + "Minsu Kim", + "Sanghyeok Choi", + "Zepeda Gast", + "Andre Hottung", + "Jianan Zhou", + "Jieyi Bi", + "Yu Hu", + "Fei Liu", + "Hyeonah Kim", + "Jiwoo Son", + "Haeyeon Kim", + "Davide Angioni", + "Wouter Kool", + "Zhiguang Cao", + "Jie Zhang", + "Kijung Shin", + "Cathy Wu", + "Sungsoo Ahn", + "Guojie Song", + "Changhyun Kwon", + "Lin Xie", + "Jinkyoo Park", + "AI4CO", +] +readme = "README.md" +license = "MIT" +homepage = "https://rl4.co" +repository = "https://github.com/ai4co/rl4co" +documentation = "https://rl4co.readthedocs.io" +keywords = ["reinforcement learning", "combinatorial optimization", "benchmark"] +packages = [{ include = "rl4co" }] classifiers = [ "Programming Language :: Python", "Programming Language :: Python :: 3", @@ -64,64 +54,69 @@ classifiers = [ "Intended Audience :: Developers", "Intended Audience :: Science/Research", "Operating System :: OS Independent", - "Topic :: Scientific/Engineering :: Artificial Intelligence", + "Topic :: Scientific/Engineering :: Artificial Intelligence" ] -dependencies = [ - "einops", - "hydra-core", - "hydra-colorlog", - "lightning>=2.1.0", - "matplotlib", - "omegaconf", - "pyrootutils", - "rich", - "robust-downloader", - "scipy", - "tensordict>=0.2.0", - "torchrl>=0.2.0", - "wandb" -] - -[project.optional-dependencies] +[tool.poetry.urls] +"Tracker" = "https://github.com/ai4co/rl4co/issues" + +[tool.poetry.dependencies] +python = ">=3.8" +einops = "*" +hydra-core = "*" +hydra-colorlog = "*" +lightning = ">=2.1.0" +matplotlib = "*" +omegaconf = "*" +pyrootutils = "*" +rich = "*" +robust-downloader = "*" +scipy = "*" +tensordict = ">=0.4.0" +torchrl = ">=0.4.0" +wandb = "*" +black = { version = "*", optional = true } +pre-commit = { version = ">=3.3.3", optional = true } +ruff = { version = "*", optional = true } +pytest = { version = "*", optional = true } +pytest-cov = { version = "*", optional = true } +torch_geometric = { version = "*", optional = true } +numba = { version = ">=0.58.1", optional = true } +pyvrp = { version = ">=0.8.2", optional = true } + +[tool.poetry.extras] +dev = ["black", "pre-commit", "ruff", "pytest", "pytest-cov"] graph = ["torch_geometric"] -testing = ["pytest", "pytest-cov"] -dev = ["black", "ruff", "pre-commit>=3.3.3"] -routing = ["numba>=0.58.1", "pyvrp>=0.8.2"] +routing = ["numba", "pyvrp"] -[project.urls] -"Homepage" = "https://github.com/ai4co/rl4co" -"Bug Tracker" = "https://github.com/ai4co/rl4co/issues" +[tool.black] +line-length = 90 +target-version = ["py311"] +include = '\.pyi?$' +exclude = ''' +( + /( + \.direnv + | \.eggs + | \.git + | \.tox + | \.venv + | _build + | build + | dist + | venv + )/ +) +''' -# Ruff + Black + isort combo for code formatting -# Adapted from https://github.com/AntonOsika/gpt-engineer (kudos!) -# https://beta.ruff.rs/docs/configuration/#using-pyprojecttoml [tool.ruff] select = ["F", "E", "W", "I001"] line-length = 90 show-fixes = false -target-version = "py310" +target-version = "py311" task-tags = ["TODO", "FIXME"] -exclude = [ - ".bzr", - ".direnv", - ".eggs", - ".git", - ".ruff_cache", - ".svn", - ".tox", - ".venv", - "__pypackages__", - "_build", - "buck-out", - "build", - "dist", - "node_modules", - "venv", -] ignore = ["E501"] # never enforce `E501` (line length violations), done in Black -# Ignore `E402` (import violations) and "F401" (unused imports) in all `__init__.py` files [tool.ruff.per-file-ignores] "__init__.py" = ["E402", "F401"] @@ -139,27 +134,6 @@ combine-as-imports = true split-on-trailing-comma = false lines-between-types = 1 -# https://black.readthedocs.io/en/stable/usage_and_configuration/the_basics.html -[tool.black] -line-length = 90 -target-version = ["py311"] -include = '\.pyi?$' -exclude = ''' -( - /( - \.direnv - | \.eggs - | \.git - | \.tox - | \.venv - | _build - | build - | dist - | venv - )/ -) -''' - [tool.coverage] include = ["rl4co.*"] @@ -170,3 +144,7 @@ exclude_lines = [ "pragma: no cover", "if __name__ == .__main__.:", ] + +[build-system] +requires = ["poetry"] +build-backend = "poetry.core.masonry.api" \ No newline at end of file diff --git a/rl4co/__init__.py b/rl4co/__init__.py index 2d299658..1830875a 100644 --- a/rl4co/__init__.py +++ b/rl4co/__init__.py @@ -1 +1,4 @@ -__version__ = "0.5.0dev0" +from importlib.metadata import version as get_version + +# The package version is obtained from the pyproject.toml file +__version__ = get_version(__package__) From 56d32b4f742224a9559be01ad354d2d9dd5c3396 Mon Sep 17 00:00:00 2001 From: Chuanbo HUA Date: Mon, 8 Jul 2024 23:49:33 +0900 Subject: [PATCH 051/102] [Feat, Init] Init mkdocs documentation --- docs/Makefile | 20 - docs/README.md | 114 - docs/_content/api/algos/a2c.md | 9 - docs/_content/api/algos/base.md | 9 - docs/_content/api/algos/ppo.md | 11 - docs/_content/api/algos/reinforce.md | 17 - docs/_content/api/data.md | 33 - docs/_content/api/decoding.md | 7 - docs/_content/api/envs/base.md | 21 - docs/_content/api/envs/eda.md | 30 - docs/_content/api/envs/routing.md | 139 - docs/_content/api/envs/scheduling.md | 29 - docs/_content/api/models/common/__init__.md | 54 - .../api/models/common/constructive.md | 71 - .../_content/api/models/common/improvement.md | 3 - .../api/models/common/transductive.md | 19 - docs/_content/api/models/env_embeddings.md | 47 - docs/_content/api/models/nn.md | 60 - docs/_content/api/models/zoo/__init__.md | 3 - docs/_content/api/models/zoo/constructive.md | 215 - docs/_content/api/models/zoo/improvement.md | 5 - docs/_content/api/models/zoo/transductive.md | 31 - docs/_content/api/tasks.md | 17 - docs/_content/general/contribute.md | 14 - docs/_content/general/faq.md | 4 - docs/_content/start/hydra.md | 43 - docs/_content/start/installation.md | 22 - docs/_theme/rl4co/__init__.py | 19 - docs/_theme/rl4co/breadcrumbs.html | 90 - docs/_theme/rl4co/cookie_banner.html | 6 - docs/_theme/rl4co/extensions/lightning.py | 179 - .../rl4co/extensions/pytorch_tutorials.py | 523 - docs/_theme/rl4co/extensions/react.py | 7 - docs/_theme/rl4co/fonts.html | 23 - docs/_theme/rl4co/footer.html | 74 - docs/_theme/rl4co/layout.html | 591 - docs/_theme/rl4co/search.html | 46 - docs/_theme/rl4co/searchbox.html | 16 - docs/_theme/rl4co/static/css/theme.css | 16268 ---------------- .../FreightSans/freight-sans-bold-italic.woff | Bin 39560 -> 0 bytes .../freight-sans-bold-italic.woff2 | Bin 31812 -> 0 bytes .../fonts/FreightSans/freight-sans-bold.woff | Bin 32396 -> 0 bytes .../fonts/FreightSans/freight-sans-bold.woff2 | Bin 25672 -> 0 bytes .../FreightSans/freight-sans-book-italic.woff | Bin 33944 -> 0 bytes .../freight-sans-book-italic.woff2 | Bin 26832 -> 0 bytes .../fonts/FreightSans/freight-sans-book.woff | Bin 31612 -> 0 bytes .../fonts/FreightSans/freight-sans-book.woff2 | Bin 25120 -> 0 bytes .../freight-sans-light-italic.woff | Bin 29304 -> 0 bytes .../freight-sans-light-italic.woff2 | Bin 22720 -> 0 bytes .../fonts/FreightSans/freight-sans-light.woff | Bin 26908 -> 0 bytes .../FreightSans/freight-sans-light.woff2 | Bin 21012 -> 0 bytes .../freight-sans-medium-italic.woff | Bin 19420 -> 0 bytes .../freight-sans-medium-italic.woff2 | Bin 16000 -> 0 bytes .../FreightSans/freight-sans-medium.woff | Bin 32072 -> 0 bytes .../FreightSans/freight-sans-medium.woff2 | Bin 25460 -> 0 bytes .../fonts/IBMPlexMono/IBMPlexMono-Light.woff | Bin 50680 -> 0 bytes .../fonts/IBMPlexMono/IBMPlexMono-Light.woff2 | Bin 35916 -> 0 bytes .../fonts/IBMPlexMono/IBMPlexMono-Medium.woff | Bin 51872 -> 0 bytes .../IBMPlexMono/IBMPlexMono-Medium.woff2 | Bin 36648 -> 0 bytes .../IBMPlexMono/IBMPlexMono-Regular.woff | Bin 50664 -> 0 bytes .../IBMPlexMono/IBMPlexMono-Regular.woff2 | Bin 35536 -> 0 bytes .../IBMPlexMono/IBMPlexMono-SemiBold.woff | Bin 52936 -> 0 bytes .../IBMPlexMono/IBMPlexMono-SemiBold.woff2 | Bin 37592 -> 0 bytes .../fonts/Inconsolata/Inconsolata.woff2 | Bin 17804 -> 0 bytes .../static/fonts/UCity/UCity-Light.woff2 | Bin 24420 -> 0 bytes .../static/fonts/UCity/UCity-Regular.woff2 | Bin 24948 -> 0 bytes .../static/fonts/UCity/UCity-Semibold.woff2 | Bin 23504 -> 0 bytes .../rl4co/static/images/arrow-down-orange.svg | 19 - .../static/images/arrow-right-with-tail.svg | 19 - .../static/images/chevron-down-black.svg | 16 - .../rl4co/static/images/chevron-down-grey.svg | 18 - .../static/images/chevron-down-orange.svg | 16 - .../static/images/chevron-down-white.svg | 16 - .../static/images/chevron-right-orange.svg | 17 - .../static/images/chevron-right-white.svg | 17 - .../static/images/home-footer-background.jpg | Bin 38907 -> 0 bytes .../_theme/rl4co/static/images/icon-close.svg | 21 - .../static/images/icon-menu-dots-dark.svg | 42 - docs/_theme/rl4co/static/images/icon.svg | 62 - .../static/images/logo-facebook-dark.svg | 8 - docs/_theme/rl4co/static/images/logo-icon.svg | 62 - .../_theme/rl4co/static/images/logo-large.svg | 61 - .../static/images/logo-lightning-large.svg | 61 - .../rl4co/static/images/logo-lightning.svg | 70 - .../rl4co/static/images/logo-pytorch-dark.svg | 30 - .../rl4co/static/images/logo-pytorch-icon.svg | 12 - .../rl4co/static/images/logo-pytorch.svg | 31 - .../rl4co/static/images/logo-twitter-dark.svg | 16 - .../rl4co/static/images/logo-youtube-dark.svg | 21 - docs/_theme/rl4co/static/images/logo.png | Bin 1305146 -> 0 bytes docs/_theme/rl4co/static/images/logo.svg | 70 - .../rl4co/static/images/pytorch-colab.svg | 24 - .../rl4co/static/images/pytorch-download.svg | 10 - .../rl4co/static/images/pytorch-github.svg | 15 - docs/_theme/rl4co/static/images/pytorch-x.svg | 10 - .../rl4co/static/images/search-icon.svg | 19 - .../static/images/view-page-source-icon.svg | 13 - docs/_theme/rl4co/static/js/modernizr.min.js | 4 - docs/_theme/rl4co/static/js/react/react.jsx | 60 - docs/_theme/rl4co/static/js/theme.js | 1 - .../rl4co/static/js/vendor/anchor.min.js | 9 - .../rl4co/static/js/vendor/bootstrap.min.js | 7 - .../rl4co/static/js/vendor/popper.min.js | 5 - docs/_theme/rl4co/theme.conf | 19 - docs/_theme/rl4co/theme_variables.jinja | 18 - docs/_theme/rl4co/versions.html | 36 - .../__init__.py => algorithms/ppo.md} | 0 docs/api/train_and_eval.md | 0 docs/assets/figs/rl4co-logo.svg | 38 + docs/conf.py | 121 - docs/environments/basic.md | 1 + docs/environments/eda.md | 0 docs/environments/routing.md | 0 docs/environments/scheduling.md | 0 docs/index.md | 246 +- docs/javascripts/autolink.js | 34 + docs/javascripts/katex.js | 10 + docs/make.bat | 35 - docs/networks/environment_embeddings.md | 0 docs/networks/neural_network_modules.md | 0 docs/requirements.txt | 22 - docs/stylesheets/extra.css | 20 + mkdocs.yml | 153 + 123 files changed, 429 insertions(+), 20095 deletions(-) delete mode 100644 docs/Makefile delete mode 100644 docs/README.md delete mode 100644 docs/_content/api/algos/a2c.md delete mode 100644 docs/_content/api/algos/base.md delete mode 100644 docs/_content/api/algos/ppo.md delete mode 100644 docs/_content/api/algos/reinforce.md delete mode 100644 docs/_content/api/data.md delete mode 100644 docs/_content/api/decoding.md delete mode 100644 docs/_content/api/envs/base.md delete mode 100644 docs/_content/api/envs/eda.md delete mode 100644 docs/_content/api/envs/routing.md delete mode 100644 docs/_content/api/envs/scheduling.md delete mode 100644 docs/_content/api/models/common/__init__.md delete mode 100644 docs/_content/api/models/common/constructive.md delete mode 100644 docs/_content/api/models/common/improvement.md delete mode 100644 docs/_content/api/models/common/transductive.md delete mode 100644 docs/_content/api/models/env_embeddings.md delete mode 100644 docs/_content/api/models/nn.md delete mode 100644 docs/_content/api/models/zoo/__init__.md delete mode 100644 docs/_content/api/models/zoo/constructive.md delete mode 100644 docs/_content/api/models/zoo/improvement.md delete mode 100644 docs/_content/api/models/zoo/transductive.md delete mode 100644 docs/_content/api/tasks.md delete mode 100644 docs/_content/general/contribute.md delete mode 100644 docs/_content/general/faq.md delete mode 100644 docs/_content/start/hydra.md delete mode 100644 docs/_content/start/installation.md delete mode 100644 docs/_theme/rl4co/__init__.py delete mode 100644 docs/_theme/rl4co/breadcrumbs.html delete mode 100644 docs/_theme/rl4co/cookie_banner.html delete mode 100644 docs/_theme/rl4co/extensions/lightning.py delete mode 100644 docs/_theme/rl4co/extensions/pytorch_tutorials.py delete mode 100644 docs/_theme/rl4co/extensions/react.py delete mode 100644 docs/_theme/rl4co/fonts.html delete mode 100644 docs/_theme/rl4co/footer.html delete mode 100644 docs/_theme/rl4co/layout.html delete mode 100644 docs/_theme/rl4co/search.html delete mode 100644 docs/_theme/rl4co/searchbox.html delete mode 100644 docs/_theme/rl4co/static/css/theme.css delete mode 100644 docs/_theme/rl4co/static/fonts/FreightSans/freight-sans-bold-italic.woff delete mode 100644 docs/_theme/rl4co/static/fonts/FreightSans/freight-sans-bold-italic.woff2 delete mode 100644 docs/_theme/rl4co/static/fonts/FreightSans/freight-sans-bold.woff delete mode 100644 docs/_theme/rl4co/static/fonts/FreightSans/freight-sans-bold.woff2 delete mode 100644 docs/_theme/rl4co/static/fonts/FreightSans/freight-sans-book-italic.woff delete mode 100644 docs/_theme/rl4co/static/fonts/FreightSans/freight-sans-book-italic.woff2 delete mode 100644 docs/_theme/rl4co/static/fonts/FreightSans/freight-sans-book.woff delete mode 100644 docs/_theme/rl4co/static/fonts/FreightSans/freight-sans-book.woff2 delete mode 100644 docs/_theme/rl4co/static/fonts/FreightSans/freight-sans-light-italic.woff delete mode 100644 docs/_theme/rl4co/static/fonts/FreightSans/freight-sans-light-italic.woff2 delete mode 100644 docs/_theme/rl4co/static/fonts/FreightSans/freight-sans-light.woff delete mode 100644 docs/_theme/rl4co/static/fonts/FreightSans/freight-sans-light.woff2 delete mode 100644 docs/_theme/rl4co/static/fonts/FreightSans/freight-sans-medium-italic.woff delete mode 100644 docs/_theme/rl4co/static/fonts/FreightSans/freight-sans-medium-italic.woff2 delete mode 100644 docs/_theme/rl4co/static/fonts/FreightSans/freight-sans-medium.woff delete mode 100644 docs/_theme/rl4co/static/fonts/FreightSans/freight-sans-medium.woff2 delete mode 100644 docs/_theme/rl4co/static/fonts/IBMPlexMono/IBMPlexMono-Light.woff delete mode 100644 docs/_theme/rl4co/static/fonts/IBMPlexMono/IBMPlexMono-Light.woff2 delete mode 100644 docs/_theme/rl4co/static/fonts/IBMPlexMono/IBMPlexMono-Medium.woff delete mode 100644 docs/_theme/rl4co/static/fonts/IBMPlexMono/IBMPlexMono-Medium.woff2 delete mode 100644 docs/_theme/rl4co/static/fonts/IBMPlexMono/IBMPlexMono-Regular.woff delete mode 100644 docs/_theme/rl4co/static/fonts/IBMPlexMono/IBMPlexMono-Regular.woff2 delete mode 100644 docs/_theme/rl4co/static/fonts/IBMPlexMono/IBMPlexMono-SemiBold.woff delete mode 100644 docs/_theme/rl4co/static/fonts/IBMPlexMono/IBMPlexMono-SemiBold.woff2 delete mode 100644 docs/_theme/rl4co/static/fonts/Inconsolata/Inconsolata.woff2 delete mode 100644 docs/_theme/rl4co/static/fonts/UCity/UCity-Light.woff2 delete mode 100644 docs/_theme/rl4co/static/fonts/UCity/UCity-Regular.woff2 delete mode 100644 docs/_theme/rl4co/static/fonts/UCity/UCity-Semibold.woff2 delete mode 100644 docs/_theme/rl4co/static/images/arrow-down-orange.svg delete mode 100644 docs/_theme/rl4co/static/images/arrow-right-with-tail.svg delete mode 100644 docs/_theme/rl4co/static/images/chevron-down-black.svg delete mode 100644 docs/_theme/rl4co/static/images/chevron-down-grey.svg delete mode 100644 docs/_theme/rl4co/static/images/chevron-down-orange.svg delete mode 100644 docs/_theme/rl4co/static/images/chevron-down-white.svg delete mode 100644 docs/_theme/rl4co/static/images/chevron-right-orange.svg delete mode 100644 docs/_theme/rl4co/static/images/chevron-right-white.svg delete mode 100644 docs/_theme/rl4co/static/images/home-footer-background.jpg delete mode 100644 docs/_theme/rl4co/static/images/icon-close.svg delete mode 100644 docs/_theme/rl4co/static/images/icon-menu-dots-dark.svg delete mode 100644 docs/_theme/rl4co/static/images/icon.svg delete mode 100644 docs/_theme/rl4co/static/images/logo-facebook-dark.svg delete mode 100644 docs/_theme/rl4co/static/images/logo-icon.svg delete mode 100644 docs/_theme/rl4co/static/images/logo-large.svg delete mode 100644 docs/_theme/rl4co/static/images/logo-lightning-large.svg delete mode 100644 docs/_theme/rl4co/static/images/logo-lightning.svg delete mode 100644 docs/_theme/rl4co/static/images/logo-pytorch-dark.svg delete mode 100644 docs/_theme/rl4co/static/images/logo-pytorch-icon.svg delete mode 100644 docs/_theme/rl4co/static/images/logo-pytorch.svg delete mode 100644 docs/_theme/rl4co/static/images/logo-twitter-dark.svg delete mode 100644 docs/_theme/rl4co/static/images/logo-youtube-dark.svg delete mode 100644 docs/_theme/rl4co/static/images/logo.png delete mode 100644 docs/_theme/rl4co/static/images/logo.svg delete mode 100644 docs/_theme/rl4co/static/images/pytorch-colab.svg delete mode 100644 docs/_theme/rl4co/static/images/pytorch-download.svg delete mode 100644 docs/_theme/rl4co/static/images/pytorch-github.svg delete mode 100644 docs/_theme/rl4co/static/images/pytorch-x.svg delete mode 100644 docs/_theme/rl4co/static/images/search-icon.svg delete mode 100644 docs/_theme/rl4co/static/images/view-page-source-icon.svg delete mode 100644 docs/_theme/rl4co/static/js/modernizr.min.js delete mode 100644 docs/_theme/rl4co/static/js/react/react.jsx delete mode 100644 docs/_theme/rl4co/static/js/theme.js delete mode 100644 docs/_theme/rl4co/static/js/vendor/anchor.min.js delete mode 100644 docs/_theme/rl4co/static/js/vendor/bootstrap.min.js delete mode 100644 docs/_theme/rl4co/static/js/vendor/popper.min.js delete mode 100644 docs/_theme/rl4co/theme.conf delete mode 100644 docs/_theme/rl4co/theme_variables.jinja delete mode 100644 docs/_theme/rl4co/versions.html rename docs/{_theme/rl4co/extensions/__init__.py => algorithms/ppo.md} (100%) create mode 100644 docs/api/train_and_eval.md create mode 100644 docs/assets/figs/rl4co-logo.svg delete mode 100644 docs/conf.py create mode 100644 docs/environments/basic.md create mode 100644 docs/environments/eda.md create mode 100644 docs/environments/routing.md create mode 100644 docs/environments/scheduling.md create mode 100644 docs/javascripts/autolink.js create mode 100644 docs/javascripts/katex.js delete mode 100644 docs/make.bat create mode 100644 docs/networks/environment_embeddings.md create mode 100644 docs/networks/neural_network_modules.md delete mode 100644 docs/requirements.txt create mode 100644 docs/stylesheets/extra.css create mode 100644 mkdocs.yml diff --git a/docs/Makefile b/docs/Makefile deleted file mode 100644 index d4bb2cbb..00000000 --- a/docs/Makefile +++ /dev/null @@ -1,20 +0,0 @@ -# Minimal makefile for Sphinx documentation -# - -# You can set these variables from the command line, and also -# from the environment for the first two. -SPHINXOPTS ?= -SPHINXBUILD ?= sphinx-build -SOURCEDIR = . -BUILDDIR = _build - -# Put it first so that "make" without argument is like "make help". -help: - @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) - -.PHONY: help Makefile - -# Catch-all target: route all unknown targets to Sphinx using the new -# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). -%: Makefile - @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) diff --git a/docs/README.md b/docs/README.md deleted file mode 100644 index b89e38ec..00000000 --- a/docs/README.md +++ /dev/null @@ -1,114 +0,0 @@ -# 📑 RL4CO Docs - -We are using [Sphinx](https://www.sphinx-doc.org/en/master/) with [Napoleon extension](https://www.sphinx-doc.org/en/master/usage/extensions/napoleon.html) to build the documentation. -Moreover, we set [Google style](https://google.github.io/styleguide/pyguide.html) to follow with type convention. - -- [Napoleon formatting with Google style](https://sphinxcontrib-napoleon.readthedocs.io/en/latest/example_google.html) -- [ReStructured Text (reST)](https://docs.pylonsproject.org/projects/docs-style-guide/) -- [Paragraph-level markup](https://www.sphinx-doc.org/en/master/usage/restructuredtext/basics.html#paragraphs) - -See following short example of a sample function taking one position string and optional - -```python -from typing import Optional - - -def my_func(param_a: int, param_b: Optional[float] = None) -> str: - """Sample function. - - Args: - param_a: first parameter - param_b: second parameter - - Return: - sum of both numbers - - Example:: - - >>> my_func(1, 2) - 3 - - Note: - If you want to add something. - """ - p = param_b if param_b else 0 - return str(param_a + p) -``` - -## 🗂️ File structures - -``` -. -├── _build/ - output website, only for local building -├── _content/ - content for docs pages in Markdown format -├── _theme/ -│ └── rl4co/ - website theme files -├── conf.py - main config file for building -├── index.md - content for index page -├── make.bat - building script for Windows -├── Makefile - building script for Unix -├── README.md -└── requirements.txt - requirement python packages for Read the Docs building -``` - -## ⚙️ Build docs locally - -**Step 1**. Install requirement packages (from root folder): `pip install -r docs/requirement.txt`; - -**Step 2**. Run the building script: - -- **Windows**: run `make.bat`; -- **Linux/macOS**: run `make html`; - -The generated docs will be under the `_build` folder. You can open `docs/build/html/index.html` in your browser to check the docs. - -We need to have LaTeX installed for rendering math equations. You can for example install TeXLive with the necessary extras by doing one of the following: - -- **Windows/macOS**: check the [Tex Live install guide](https://www.tug.org/texlive/windows.html) for Windows/macOS; -- **Ubuntu (Linux)**: run `sudo apt-get update && sudo apt-get install -y texlive-latex-extra dvipng texlive-pictures`; -- Use the [RTD docker image](https://hub.docker.com/r/readthedocs/build); - -## ⚙️ Build in Read the Docs - -In the root of this repository, there is `.readthedocs.yaml` which will be loaded by the Read the Docs to build the docs. Please refer to the [configuration file v2 guide from Read the Docs](https://docs.readthedocs.io/en/stable/config-file/v2.html) for details information of variables. - -## 💡 Notes for contents -
-Markdown and RST support -RST is originally supported by the Sphinx. With the extension `myst_parser` it can support Markdown contents. Follow [this guide](https://www.sphinx-doc.org/en/master/usage/markdown.html) to learn more. - -In the meantime, we can still use RST within Markdown files by -```` -```{eval-rst} -RST CONTENTS -``` -```` -
-
-Jupyter notebook support -With the extension `nbsphinx`, Sphinx can support Jupyter notebook. Follow [this guide](https://docs.readthedocs.io/en/stable/guides/jupyter.html) to learn more. - -Indexing a Jupyter notebook is the same with a Markdown file in RST: -``` -.. toctree:: - :maxdepth: 2 - :caption: Getting started: - - _content/start/installation - _content/start/quickstart_notebook -``` -
-
-API docs auto generator -With Sphinx's `automodule` we can easily get the API docs: -``` -.. automodule:: rl4co.data.generate_data - :members: - :undoc-members: -``` -When deploy in Read the Docs, make sure putting the package to `requirement.txt` mentioned before. -
- -## 📚 References - -We base the above guide on the official [PyTorch Lightning Docs](https://github.com/Lightning-AI/lightning/tree/master/docs). \ No newline at end of file diff --git a/docs/_content/api/algos/a2c.md b/docs/_content/api/algos/a2c.md deleted file mode 100644 index 731f48bc..00000000 --- a/docs/_content/api/algos/a2c.md +++ /dev/null @@ -1,9 +0,0 @@ -# A2C - -## A2C (Advantage Actor Critic) - -```{eval-rst} -.. automodule:: rl4co.models.rl.a2c.a2c - :members: - :undoc-members: -``` diff --git a/docs/_content/api/algos/base.md b/docs/_content/api/algos/base.md deleted file mode 100644 index 243c9dab..00000000 --- a/docs/_content/api/algos/base.md +++ /dev/null @@ -1,9 +0,0 @@ -# Base Classes - -## RL4COLitModule - -```{eval-rst} -.. automodule:: rl4co.models.rl.common.base - :members: - :undoc-members: -``` \ No newline at end of file diff --git a/docs/_content/api/algos/ppo.md b/docs/_content/api/algos/ppo.md deleted file mode 100644 index d99fd1d3..00000000 --- a/docs/_content/api/algos/ppo.md +++ /dev/null @@ -1,11 +0,0 @@ -# PPO - - -## PPO (Proximal Policy Optimization) - - -```{eval-rst} -.. automodule:: rl4co.models.rl.ppo.ppo - :members: - :undoc-members: -``` \ No newline at end of file diff --git a/docs/_content/api/algos/reinforce.md b/docs/_content/api/algos/reinforce.md deleted file mode 100644 index ea8070b1..00000000 --- a/docs/_content/api/algos/reinforce.md +++ /dev/null @@ -1,17 +0,0 @@ -# Reinforce - -## REINFORCE - -```{eval-rst} -.. automodule:: rl4co.models.rl.reinforce.reinforce - :members: - :undoc-members: -``` - -## Baselines - -```{eval-rst} -.. automodule:: rl4co.models.rl.reinforce.baselines - :members: - :undoc-members: -``` \ No newline at end of file diff --git a/docs/_content/api/data.md b/docs/_content/api/data.md deleted file mode 100644 index 87690422..00000000 --- a/docs/_content/api/data.md +++ /dev/null @@ -1,33 +0,0 @@ -# Data - -## Datasets - -```{eval-rst} -.. automodule:: rl4co.data.dataset - :members: - :undoc-members: -``` - -## Data Generation - -```{eval-rst} -.. automodule:: rl4co.data.generate_data - :members: - :undoc-members: -``` - -## Transforms - -```{eval-rst} -.. automodule:: rl4co.data.transforms - :members: - :undoc-members: -``` - -## Utils - -```{eval-rst} -.. automodule:: rl4co.data.utils - :members: - :undoc-members: -``` \ No newline at end of file diff --git a/docs/_content/api/decoding.md b/docs/_content/api/decoding.md deleted file mode 100644 index 1ba9470b..00000000 --- a/docs/_content/api/decoding.md +++ /dev/null @@ -1,7 +0,0 @@ -# Decoding Strategies - -```{eval-rst} -.. automodule:: rl4co.utils.decoding - :members: - :undoc-members: -``` diff --git a/docs/_content/api/envs/base.md b/docs/_content/api/envs/base.md deleted file mode 100644 index 30e1a190..00000000 --- a/docs/_content/api/envs/base.md +++ /dev/null @@ -1,21 +0,0 @@ -# Base Environment - -## `RL4COEnvBase` - -This is the base wrapper around TorchRL's `EnvBase`, with additional functionality. - -```{eval-rst} -.. automodule:: rl4co.envs.common.base - :members: - :undoc-members: -``` - -## Utilities - -These contain utilities such as the base `Generator` class and `get_sampler`. - -```{eval-rst} -.. automodule:: rl4co.envs.common.utils - :members: - :undoc-members: -``` \ No newline at end of file diff --git a/docs/_content/api/envs/eda.md b/docs/_content/api/envs/eda.md deleted file mode 100644 index d89568b1..00000000 --- a/docs/_content/api/envs/eda.md +++ /dev/null @@ -1,30 +0,0 @@ -# EDA Problems -Environment for Electronic Design Automation (EDA) problems - -## Decap Placement Problem (DPP) - -```{eval-rst} -.. automodule:: rl4co.envs.eda.dpp.env - :members: - :undoc-members: -``` - -```{eval-rst} -.. automodule:: rl4co.envs.eda.dpp.generator - :members: - :undoc-members: -``` - -## Multi-port Decap Placement Problem (mDPP) - -```{eval-rst} -.. automodule:: rl4co.envs.eda.mdpp.env - :members: - :undoc-members: -``` - -```{eval-rst} -.. automodule:: rl4co.envs.eda.mdpp.generator - :members: - :undoc-members: -``` diff --git a/docs/_content/api/envs/routing.md b/docs/_content/api/envs/routing.md deleted file mode 100644 index 2ee370cb..00000000 --- a/docs/_content/api/envs/routing.md +++ /dev/null @@ -1,139 +0,0 @@ -# Routing Problems - -See also the [Multi-Task VRP](#Multi-Task-Vehicle-Routing-Problem-(MTVRP)) at the bottom of this page, that includes 16 variants! - - - -## Asymmetric Traveling Salesman Problem (ATSP) - -```{eval-rst} -.. automodule:: rl4co.envs.routing.atsp.env - :members: - :undoc-members: -``` - -```{eval-rst} -.. automodule:: rl4co.envs.routing.atsp.generator - :members: - :undoc-members: -``` - -## Capacitated Vehicle Routing Problem (CVRP) - -```{eval-rst} -.. automodule:: rl4co.envs.routing.cvrp.env - :members: - :undoc-members: -``` - -```{eval-rst} -.. automodule:: rl4co.envs.routing.cvrp.generator - :members: - :undoc-members: -``` - -## Multiple Traveling Salesman Problem (mTSP) - -```{eval-rst} -.. automodule:: rl4co.envs.routing.mtsp.env - :members: - :undoc-members: -``` - -```{eval-rst} -.. automodule:: rl4co.envs.routing.mtsp.generator - :members: - :undoc-members: -``` - - -## Orienteering Problem (OP) - -```{eval-rst} -.. automodule:: rl4co.envs.routing.op.env - :members: - :undoc-members: -``` - -```{eval-rst} -.. automodule:: rl4co.envs.routing.op.generator - :members: - :undoc-members: -``` - -## Pickup and Delivery Problem (PDP) - -```{eval-rst} -.. automodule:: rl4co.envs.routing.pdp.env - :members: - :undoc-members: -``` - -```{eval-rst} -.. automodule:: rl4co.envs.routing.pdp.generator - :members: - :undoc-members: -``` - -## Prize Collecting Traveling Salesman Problem (PCTSP) - -```{eval-rst} -.. automodule:: rl4co.envs.routing.pctsp.env - :members: - :undoc-members: -``` - -```{eval-rst} -.. automodule:: rl4co.envs.routing.pctsp.generator - :members: - :undoc-members: -``` - -## Split Delivery Vehicle Routing Problem (SDVRP) - -```{eval-rst} -.. automodule:: rl4co.envs.routing.sdvrp.env - :members: - :undoc-members: -``` -``` - -## Stochastic Prize Collecting Traveling Salesman Problem (SPCTSP) - -```{eval-rst} -.. automodule:: rl4co.envs.routing.spctsp.env - :members: - :undoc-members: -``` -``` - -## Traveling Salesman Problem (TSP) - -```{eval-rst} -.. automodule:: rl4co.envs.routing.tsp.env - :members: - :undoc-members: -``` - -```{eval-rst} -.. automodule:: rl4co.envs.routing.tsp.generator - :members: - :undoc-members: -``` - ---- - - -## Multi-Task Vehicle Routing Problem (MTVRP) - - - -```{eval-rst} -.. automodule:: rl4co.envs.routing.mtvrp.env - :members: - :undoc-members: - -.. automodule:: rl4co.envs.routing.mtvrp.generator - :members: - :undoc-members: -``` \ No newline at end of file diff --git a/docs/_content/api/envs/scheduling.md b/docs/_content/api/envs/scheduling.md deleted file mode 100644 index 46edb20d..00000000 --- a/docs/_content/api/envs/scheduling.md +++ /dev/null @@ -1,29 +0,0 @@ -# Scheduling Problems - -## Flexible Flow Shop Problem (FFSP) - -```{eval-rst} -.. automodule:: rl4co.envs.scheduling.ffsp.env - :members: - :undoc-members: -``` - -```{eval-rst} -.. automodule:: rl4co.envs.scheduling.ffsp.generator - :members: - :undoc-members: -``` - -## Single Machine Total Weighted Tardiness Problem (SMTWTP) - -```{eval-rst} -.. automodule:: rl4co.envs.scheduling.smtwtp.env - :members: - :undoc-members: -``` - -```{eval-rst} -.. automodule:: rl4co.envs.scheduling.smtwtp.generator - :members: - :undoc-members: -``` \ No newline at end of file diff --git a/docs/_content/api/models/common/__init__.md b/docs/_content/api/models/common/__init__.md deleted file mode 100644 index bba01830..00000000 --- a/docs/_content/api/models/common/__init__.md +++ /dev/null @@ -1,54 +0,0 @@ -# NCO Methods Overview - - -We categorize NCO approaches (which are in fact not necessarily trained with RL!) into the following: 1) constructive, 2) improvement, 3) transductive. - - - -```{eval-rst} -.. tip:: - Note that in RL4CO we distinguish the RL algorithms and the actors via the following naming: - - * **Model:** Refers to the reinforcement learning algorithm encapsulated within a `LightningModule`. This module is responsible for training the policy. - * **Policy:** Implemented as a `nn.Module`, this neural network (often referred to as the *actor*) takes an instance and outputs a sequence of actions, :math:`\pi = \pi_0, \pi_1, \dots, \pi_N`, which constitutes the solution. - - Here, :math:`\pi_i` represents the action taken at step :math:`i`, forming a sequence that leads to the optimal or near-optimal solution for the given instance. -``` - - -The following table contains the categorization that we follow in RL4CO: - - -```{eval-rst} -.. list-table:: Overview of RL Models and Policies - :widths: 5 5 5 5 25 - :header-rows: 1 - :stub-columns: 1 - - * - Category - - Model or Policy? - - Input - - Output - - Description - * - `Constructive `_ - - Policy - - Instance - - Solution - - Policies trained to generate solutions from scratch. Can be categorized into AutoRegressive (AR) and Non-Autoregressive (NAR). - * - `Improvement `_ - - Policy - - Instance, Current Solution - - Improved Solution - - Policies trained to improve existing solutions iteratively, akin to local search algorithms. They focus on refining *existing* solutions rather than generating them from scratch. - * - `Transductive `_ - - Model - - Instance, (Policy) - - Solution, (Updated Policy) - - Updates policy parameters during online testing to improve solutions of a specific instance. -``` - - - - - - diff --git a/docs/_content/api/models/common/constructive.md b/docs/_content/api/models/common/constructive.md deleted file mode 100644 index 4b3d0e82..00000000 --- a/docs/_content/api/models/common/constructive.md +++ /dev/null @@ -1,71 +0,0 @@ -## Constructive Policies - -Constructive NCO policies pre-train a policy to amortize the inference. "Constructive" means that a solution is created from scratch by the model. We can also categorize constructive NCO in two sub-categories depending on the role of encoder and decoder: - -#### Autoregressive (AR) -Autoregressive approaches **use a learned decoder** that outputs log probabilities for the current solution. These approaches generate a solution step by step, similar to e.g. LLMs. They have an encoder-decoder structure. Some models may not have an encoder at all and just re-encode at each step. - -#### NonAutoregressive (NAR) -The difference between AR and NAR approaches is that NAR **only an encoder is learnable** (they just encode in one shot) and generate for example a heatmap, which can then be decoded simply by using it as a probability distribution or by using some search method on top. - -Here is a general structure of a general constructive policy with an encoder-decoder structure: - -policy - - -where _embeddings_ transfer information from feature space to embedding space. - ---- - - - -### Constructive Policy Base Classes - -```{eval-rst} -.. automodule:: rl4co.models.common.constructive.base - :members: - :undoc-members: -``` - - - -### Autoregressive Policies Base Classes - -```{eval-rst} -.. automodule:: rl4co.models.common.constructive.autoregressive.encoder - :members: - :undoc-members: -``` - -```{eval-rst} -.. automodule:: rl4co.models.common.constructive.autoregressive.decoder - :members: - :undoc-members: -``` - -```{eval-rst} -.. automodule:: rl4co.models.common.constructive.autoregressive.policy - :members: - :undoc-members: -``` - -### Nonautoregressive Policies Base Classes - - -```{eval-rst} -.. automodule:: rl4co.models.common.constructive.nonautoregressive.encoder - :members: - :undoc-members: -``` - -```{eval-rst} -.. automodule:: rl4co.models.common.constructive.nonautoregressive.decoder - :members: - :undoc-members: -``` - -```{eval-rst} -.. automodule:: rl4co.models.common.constructive.nonautoregressive.policy - :members: - :undoc-members: -``` diff --git a/docs/_content/api/models/common/improvement.md b/docs/_content/api/models/common/improvement.md deleted file mode 100644 index 80543b2a..00000000 --- a/docs/_content/api/models/common/improvement.md +++ /dev/null @@ -1,3 +0,0 @@ -## Improvement Policies - -These methods differ w.r.t. constructive NCO since they can obtain better solutions similarly to how local search algorithms work - they can improve the solutions over time. This is different from decoding strategies or similar in constructive methods since these policies are trained for performing improvement operations. diff --git a/docs/_content/api/models/common/transductive.md b/docs/_content/api/models/common/transductive.md deleted file mode 100644 index 6c14c036..00000000 --- a/docs/_content/api/models/common/transductive.md +++ /dev/null @@ -1,19 +0,0 @@ -# Transductive Models - - -Transductive models are learning algorithms that optimize on a specific instance. They improve solutions by updating policy parameters $\theta$_, which means that we are running optimization (backprop) **at test time**. Transductive learning can be performed with different policies: for example EAS updates (a part of) AR policies parameters to obtain better solutions, but I guess there are ways (or papers out there I don't know of) that optimize at test time. - - -```{eval-rst} -.. tip:: - You may refer to the definition of `inductive vs transductive RL `_. In inductive RL, we train to generalize to new instances. In transductive RL we train (or finetune) to solve only specific ones. -``` - - -## Base Transductive Model - -```{eval-rst} -.. automodule:: rl4co.models.common.transductive.base - :members: - :undoc-members: -``` \ No newline at end of file diff --git a/docs/_content/api/models/env_embeddings.md b/docs/_content/api/models/env_embeddings.md deleted file mode 100644 index 9d70ae6b..00000000 --- a/docs/_content/api/models/env_embeddings.md +++ /dev/null @@ -1,47 +0,0 @@ -# Environment Embeddings - -In autoregressive policies, environment embeddings transfer data from feature space to hidden space: - -- Initial Embeddings: encode global problem features -- Context Embeddings: modify current node embedding during decoding -- Dynamic Embeddings: modify all nodes embeddings during decoding - -policy - - - - -## Context Embeddings - -The context embedding is used to modify the query embedding of the problem node of the current partial solution. Usually consists of a projection of gathered node embeddings and features to the embedding space. - - -```{eval-rst} -.. automodule:: rl4co.models.nn.env_embeddings.context - :members: - :undoc-members: -``` - ---- - -## Dynamic Embeddings - -The dynamic embedding is used to modify query, key and value vectors of the attention mechanism based on the current state of the environment (which is changing during the rollout). Generally consists of a linear layer that projects the node features to the embedding space. - -```{eval-rst} -.. automodule:: rl4co.models.nn.env_embeddings.dynamic - :members: - :undoc-members: -``` - ---- - -## Init Embeddings - -The init embedding is used to initialize the general embedding of the problem nodes without any solution information. Generally consists of a linear layer that projects the node features to the embedding space. - -```{eval-rst} -.. automodule:: rl4co.models.nn.env_embeddings.init - :members: - :undoc-members: -``` \ No newline at end of file diff --git a/docs/_content/api/models/nn.md b/docs/_content/api/models/nn.md deleted file mode 100644 index ba5fa86b..00000000 --- a/docs/_content/api/models/nn.md +++ /dev/null @@ -1,60 +0,0 @@ -# Neural Network Modules - -## Critic Network - -```{eval-rst} -.. automodule:: rl4co.models.rl.common.critic - :members: - :undoc-members: -``` - -## Graph Neural Networks - -### Graph Attention Encoder - -```{eval-rst} -.. automodule:: rl4co.models.nn.graph.attnnet - :members: - :undoc-members: -``` - -### Graph Convolutional Encoder - -```{eval-rst} -.. automodule:: rl4co.models.nn.graph.gcn - :members: - :undoc-members: -``` - -### Message Passing Encoder - -```{eval-rst} -.. automodule:: rl4co.models.nn.graph.mpnn - :members: - :undoc-members: -``` - -## rl4co.models.nn.attention - -```{eval-rst} -.. automodule:: rl4co.models.nn.attention - :members: - :undoc-members: -``` - - -## rl4co.models.nn.mlp - -```{eval-rst} -.. automodule:: rl4co.models.nn.mlp - :members: - :undoc-members: -``` - -## rl4co.models.nn.ops - -```{eval-rst} -.. automodule:: rl4co.models.nn.ops - :members: - :undoc-members: -``` \ No newline at end of file diff --git a/docs/_content/api/models/zoo/__init__.md b/docs/_content/api/models/zoo/__init__.md deleted file mode 100644 index dee807f8..00000000 --- a/docs/_content/api/models/zoo/__init__.md +++ /dev/null @@ -1,3 +0,0 @@ -# Model Zoo - -Models from the literature and contributions are contained in the Model Zoo. \ No newline at end of file diff --git a/docs/_content/api/models/zoo/constructive.md b/docs/_content/api/models/zoo/constructive.md deleted file mode 100644 index 4a1b1993..00000000 --- a/docs/_content/api/models/zoo/constructive.md +++ /dev/null @@ -1,215 +0,0 @@ -# Constructive Methods - -These can be classified into Auto-Regressive (AR) and Non-Auto-Regressive (NAR) policies. These constructive methods also include ad-hoc RL algorithms for constructive policies. - -# AutoRegressive - -## Attention Model (AM) - -```{eval-rst} -.. automodule:: rl4co.models.zoo.am.model - :members: - :undoc-members: -``` - -```{eval-rst} -.. automodule:: rl4co.models.zoo.am.policy - :members: - :undoc-members: -``` - -## Attention Model - PPO (AM-PPO) - -```{eval-rst} -.. automodule:: rl4co.models.zoo.amppo.model - :members: - :undoc-members: -``` - - - -## Heterogeneous Attention Model (HAM) - -```{eval-rst} -.. automodule:: rl4co.models.zoo.ham.model - :members: - :undoc-members: -``` - -```{eval-rst} -.. automodule:: rl4co.models.zoo.ham.policy - :members: - :undoc-members: -``` - -```{eval-rst} -.. automodule:: rl4co.models.zoo.ham.encoder - :members: - :undoc-members: -``` - -```{eval-rst} -.. automodule:: rl4co.models.zoo.ham.attention - :members: - :undoc-members: -``` - - -## Matrix Encoding Network (MatNet) - -```{eval-rst} -.. automodule:: rl4co.models.zoo.matnet.model - :members: - :undoc-members: -``` - -```{eval-rst} -.. automodule:: rl4co.models.zoo.matnet.policy - :members: - :undoc-members: -``` - -```{eval-rst} -.. automodule:: rl4co.models.zoo.matnet.encoder - :members: - :undoc-members: -``` - -```{eval-rst} -.. automodule:: rl4co.models.zoo.matnet.decoder - :members: - :undoc-members: -``` - - -## Multi-Decoder Attention Model (MDAM) - -```{eval-rst} -.. automodule:: rl4co.models.zoo.mdam.model - :members: - :undoc-members: -``` - -```{eval-rst} -.. automodule:: rl4co.models.zoo.mdam.policy - :members: - :undoc-members: -``` - -```{eval-rst} -.. automodule:: rl4co.models.zoo.mdam.encoder - :members: - :undoc-members: -``` - -```{eval-rst} -.. automodule:: rl4co.models.zoo.mdam.decoder - :members: - :undoc-members: -``` - -## POMO - -```{eval-rst} -.. automodule:: rl4co.models.zoo.pomo.model - :members: - :undoc-members: -``` - -## Pointer Network (PtrNet) - -```{eval-rst} -.. automodule:: rl4co.models.zoo.ptrnet.model - :members: - :undoc-members: -``` - -```{eval-rst} -.. automodule:: rl4co.models.zoo.ptrnet.policy - :members: - :undoc-members: -``` - -```{eval-rst} -.. automodule:: rl4co.models.zoo.ptrnet.encoder - :members: - :undoc-members: -``` - -```{eval-rst} -.. automodule:: rl4co.models.zoo.ptrnet.decoder - :members: - :undoc-members: -``` - -```{eval-rst} -.. automodule:: rl4co.models.zoo.ptrnet.critic - :members: - :undoc-members: -``` - -## SymNCO - -```{eval-rst} -.. automodule:: rl4co.models.zoo.symnco.model - :members: - :undoc-members: -``` - -```{eval-rst} -.. automodule:: rl4co.models.zoo.symnco.policy - :members: - :undoc-members: -``` - -```{eval-rst} -.. automodule:: rl4co.models.zoo.symnco.losses - :members: - :undoc-members: -``` - ---- - -# NonAutoregressive - - -## DeepACO - -```{eval-rst} -.. automodule:: rl4co.models.zoo.deepaco.antsystem - :members: - :undoc-members: -``` - -```{eval-rst} -.. automodule:: rl4co.models.zoo.deepaco.model - :members: - :undoc-members: -``` - -```{eval-rst} -.. automodule:: rl4co.models.zoo.deepaco.policy - :members: - :undoc-members: -``` - -```{eval-rst} -.. automodule:: rl4co.models.zoo.deepaco.decoder - :members: - :undoc-members: -``` - - -## NAR-GNN - -```{eval-rst} -.. automodule:: rl4co.models.zoo.nargnn.policy - :members: - :undoc-members: -``` - -```{eval-rst} -.. automodule:: rl4co.models.zoo.nargnn.encoder - :members: - :undoc-members: -``` \ No newline at end of file diff --git a/docs/_content/api/models/zoo/improvement.md b/docs/_content/api/models/zoo/improvement.md deleted file mode 100644 index eda6ca2c..00000000 --- a/docs/_content/api/models/zoo/improvement.md +++ /dev/null @@ -1,5 +0,0 @@ -# Improvement Methods - -These methods are trained to improve existing solutions iteratively, akin to local search algorithms. They focus on refining existing solutions rather than generating them from scratch. - -_coming soon!_ \ No newline at end of file diff --git a/docs/_content/api/models/zoo/transductive.md b/docs/_content/api/models/zoo/transductive.md deleted file mode 100644 index b4e0bbbb..00000000 --- a/docs/_content/api/models/zoo/transductive.md +++ /dev/null @@ -1,31 +0,0 @@ -# Transductive Methods - -These methods update policy parameters during online testing to improve the solutions of a specific instance. - -## Active Search (AS) - -```{eval-rst} -.. automodule:: rl4co.models.zoo.active_search.search - :members: - :undoc-members: -``` - -## Efficent Active Search (EAS) - -```{eval-rst} -.. automodule:: rl4co.models.zoo.eas.search - :members: - :undoc-members: -``` - -```{eval-rst} -.. automodule:: rl4co.models.zoo.eas.decoder - :members: - :undoc-members: -``` - -```{eval-rst} -.. automodule:: rl4co.models.zoo.eas.nn - :members: - :undoc-members: -``` \ No newline at end of file diff --git a/docs/_content/api/tasks.md b/docs/_content/api/tasks.md deleted file mode 100644 index 53bb82a0..00000000 --- a/docs/_content/api/tasks.md +++ /dev/null @@ -1,17 +0,0 @@ -# Tasks: Train and Evaluate - -## Train - -```{eval-rst} -.. automodule:: rl4co.tasks.train - :members: - :undoc-members: -``` - -## Evaluate - -```{eval-rst} -.. automodule:: rl4co.tasks.eval - :members: - :undoc-members: -``` \ No newline at end of file diff --git a/docs/_content/general/contribute.md b/docs/_content/general/contribute.md deleted file mode 100644 index 95ae1f54..00000000 --- a/docs/_content/general/contribute.md +++ /dev/null @@ -1,14 +0,0 @@ -# Contributing to RL4CO - -[![Slack](https://img.shields.io/badge/slack-chat-611f69.svg?logo=slack)](https://join.slack.com/t/rl4co/shared_invite/zt-1ytz2c1v4-0IkQ8NQH4TRXIX8PrRmDhQ) - -Have a suggestion, request, or found a bug? Feel free to [open an issue](https://github.com/ai4co/rl4co/issues) or [submit a pull request](https://github.com/ai4co/rl4co/pulls). -If you would like to contribute, please check out our contribution guidelines [here](.github/CONTRIBUTING.md). We welcome and look forward to all contributions to RL4CO! - -We are also on [Slack](https://join.slack.com/t/rl4co/shared_invite/zt-1ytz2c1v4-0IkQ8NQH4TRXIX8PrRmDhQ) if you have any questions or would like to discuss RL4CO with us. We are open to collaborations and would love to hear from you 🚀 - - -## Contributors - - - \ No newline at end of file diff --git a/docs/_content/general/faq.md b/docs/_content/general/faq.md deleted file mode 100644 index e16ceaca..00000000 --- a/docs/_content/general/faq.md +++ /dev/null @@ -1,4 +0,0 @@ -# FAQ - -You can submit your questions via GitHub Issues. If asked more than a few times, a question will have its answer added here. If you are looking for collaborations, we would be happy to hear from you on [Slack](https://join.slack.com/t/rl4co/shared_invite/zt-1ytz2c1v4-0IkQ8NQH4TRXIX8PrRmDhQ) 🚀 - diff --git a/docs/_content/start/hydra.md b/docs/_content/start/hydra.md deleted file mode 100644 index 9126fae2..00000000 --- a/docs/_content/start/hydra.md +++ /dev/null @@ -1,43 +0,0 @@ -# Training with Hydra Configuration - -You may find Hydra configurations under [configs/](configs/) divided into categories (model, env, train, experiment, etc.). - -## Usage - -Train model with default configuration (AM on TSP environment): -```bash -python run.py -``` - -> [!TIP] -> You may check out [this notebook](examples/advanced/1-hydra-config.ipynb) to get started with Hydra! - - -### Change experiment - -Train model with chosen experiment configuration from [configs/experiment/](configs/experiment/) -```bash -python run.py experiment=routing/am env=tsp env.generator_params.num_loc=50 model.optimizer_kwargs.lr=2e-4 -``` -Here you may change the environment, e.g. with `env=cvrp` by command line or by modifying the corresponding experiment e.g. [configs/experiment/routing/am.yaml](configs/experiment/routing/am.yaml). - - - -### Disable logging - -```bash -python run.py experiment=test/am logger=none '~callbacks.learning_rate_monitor' -``` -Note that `~` is used to disable a callback that would need a logger. - - -### Create a sweep over hyperparameters - -We can use -m for multirun: - -```bash -python run.py -m experiment=routing/am model.optimizer_kwargs.lr=1e-3,1e-4,1e-5 -``` -``` - - diff --git a/docs/_content/start/installation.md b/docs/_content/start/installation.md deleted file mode 100644 index bd31455b..00000000 --- a/docs/_content/start/installation.md +++ /dev/null @@ -1,22 +0,0 @@ -# Installation - -Open In Colab - -RL4CO is now available for installation on `pip`! -```bash -pip install rl4co -``` - -## Local install and development -If you want to develop RL4CO or access the latest builds, we recommend you to install it locally with `pip` in editable mode: - -```bash -git clone https://github.com/ai4co/rl4co && cd rl4co -pip install -e . -``` - -> Note: `conda` is also a good candidate for hassle-free installation of PyTorch: check out the [PyTorch website](https://pytorch.org/get-started/locally/) for more details. - - - -To get started, we recommend checking out our [quickstart notebook](https://github.com/ai4co/rl4co/blob/main/examples/1-quickstart.ipynb) or the [minimalistic example](#minimalistic-example). \ No newline at end of file diff --git a/docs/_theme/rl4co/__init__.py b/docs/_theme/rl4co/__init__.py deleted file mode 100644 index 31492d0e..00000000 --- a/docs/_theme/rl4co/__init__.py +++ /dev/null @@ -1,19 +0,0 @@ -"""Pytorch Lightning Sphinx theme. - -From https://github.com/shiftlab/lightning_sphinx_theme. -""" -from os import path - -__version__ = "0.0.31" -__version_full__ = __version__ - - -def get_html_theme_path(): - """Return list of HTML theme paths.""" - cur_dir = path.abspath(path.dirname(path.dirname(__file__))) - return cur_dir - - -# See http://www.sphinx-doc.org/en/stable/theming.html#distribute-your-theme-as-a-python-package -def setup(app): - app.add_html_theme("ncobench_theme", path.abspath(path.dirname(__file__))) diff --git a/docs/_theme/rl4co/breadcrumbs.html b/docs/_theme/rl4co/breadcrumbs.html deleted file mode 100644 index e60a62e1..00000000 --- a/docs/_theme/rl4co/breadcrumbs.html +++ /dev/null @@ -1,90 +0,0 @@ -{# Support for Sphinx 1.3+ page_source_suffix, but don't break old builds. #} - -{% if page_source_suffix %} -{% set suffix = page_source_suffix %} -{% else %} -{% set suffix = source_suffix %} -{% endif %} - -{% if meta is defined and meta is not none %} -{% set check_meta = True %} -{% else %} -{% set check_meta = False %} -{% endif %} - -{% if check_meta and 'github_url' in meta %} -{% set display_github = True %} -{% endif %} - -{% if check_meta and 'bitbucket_url' in meta %} -{% set display_bitbucket = True %} -{% endif %} - -{% if check_meta and 'gitlab_url' in meta %} -{% set display_gitlab = True %} -{% endif %} - -
- - - - {% if (theme_prev_next_buttons_location == 'top' or theme_prev_next_buttons_location == 'both') and (next or prev) %} - - {% endif %} -
diff --git a/docs/_theme/rl4co/cookie_banner.html b/docs/_theme/rl4co/cookie_banner.html deleted file mode 100644 index a2497a02..00000000 --- a/docs/_theme/rl4co/cookie_banner.html +++ /dev/null @@ -1,6 +0,0 @@ - diff --git a/docs/_theme/rl4co/extensions/lightning.py b/docs/_theme/rl4co/extensions/lightning.py deleted file mode 100644 index 8cba7fda..00000000 --- a/docs/_theme/rl4co/extensions/lightning.py +++ /dev/null @@ -1,179 +0,0 @@ -# Copyright The PyTorch Lightning team. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -from docutils import nodes -from docutils.statemachine import StringList -from pt_lightning_sphinx_theme.extensions.pytorch_tutorials import ( - CustomCalloutItemDirective, - CustomCardItemDirective, - DisplayItemDirective, - LikeButtonWithTitle, - ReactGreeter, - SlackButton, - TwoColumns, - cardnode, -) -from sphinx.util.docutils import SphinxDirective - - -class tutoriallistnode(nodes.General, nodes.Element): - """A placeholder node that we can use during the first parse to later - replace with the card list.""" - - pass - - -def visit_cardnode(self, node): - """Hook to make ``cardnode`` behave the same as a ``paragraph`` node (e.g. - insert ``

`` tags).""" - self.visit_paragraph(node) - - -def depart_cardnode(self, node): - """Hook to make ``cardnode`` behave the same as a ``paragraph`` node (e.g. - insert ``

`` tags).""" - self.depart_paragraph(node) - - -def purge_cards(app, env, docname): - """Hook to purge the cards from the env for the given docname. - - This will be called for each changed doc when rebuilding, so will - reset the card from that doc. - """ - if not hasattr(env, "all_cardnodes"): - return - - env.all_cardnodes = [node for node in env.all_cardnodes if node["docname"] != docname] - - -def merge_cards(app, env, docnames, other): - """Hook to merge cards from multiple environments (e.g. when multi- - threading).""" - if not hasattr(env, "all_cardnodes"): - env.all_cardnodes = [] - if hasattr(other, "all_cardnodes"): - env.all_cardnodes.extend(other.all_cardnodes) - - -TUTORIAL_LIST_START = """ -.. raw:: html - -
- - - -
- -
- -
-
- -.. Tutorial cards below this line - -""" - -TUTORIAL_LIST_END = """ - -.. End of tutorial card section - -.. raw:: html - -
- - - -
- -
-
-
-""" - - -class TutorialListDirective(SphinxDirective): - """Our custom directive which inserts the header and footer markup for the - tutorial block with a placeholder node (``tutoriallistnode``) which can be - modified inplace later with the list of cards.""" - - def run(self): - start_list = StringList(TUTORIAL_LIST_START.split("\n")) - start_node = nodes.paragraph() - self.state.nested_parse(start_list, self.content_offset, start_node) - - end_list = StringList(TUTORIAL_LIST_END.split("\n")) - end_node = nodes.paragraph() - self.state.nested_parse(end_list, self.content_offset, end_node) - - return start_node.children + [tutoriallistnode("")] + end_node.children - - -def process_card_nodes(app, doctree, fromdocname): - """This hook does two things. - - 1. Find any ``cardnode`` nodes in the document and remove them (we don't want them to render on the page). - 2. Find any ``tutoriallistnode`` nodes in the document and inplace edit them to have the list of ``cardnode`` nodes - from the environment. - """ - for card in doctree.traverse(cardnode): - card.parent.remove(card) - - for node in doctree.traverse(tutoriallistnode): - content = [] - - for card in app.builder.env.all_cardnodes: - content.append(card["node"]) - - node.replace_self(content) - - -def setup(app): - """Set-up the extension. - - Add out custom nodes and directives, then attach our hooks to the - required events. - """ - app.add_node(tutoriallistnode) - app.add_node( - cardnode, - html=(visit_cardnode, depart_cardnode), - latex=(visit_cardnode, depart_cardnode), - text=(visit_cardnode, depart_cardnode), - ) - - app.add_directive("customcarditem", CustomCardItemDirective) - app.add_directive("displayitem", DisplayItemDirective) - app.add_directive("join_slack", SlackButton) - app.add_directive("like_button_with_title", LikeButtonWithTitle) - app.add_directive("react_greeter", ReactGreeter) - app.add_directive("twocolumns", TwoColumns) - app.add_directive("customcalloutitem", CustomCalloutItemDirective) - app.add_directive("tutoriallist", TutorialListDirective) - - app.connect("env-purge-doc", purge_cards) - app.connect("env-merge-info", merge_cards) - app.connect("doctree-resolved", process_card_nodes) - - return { - "parallel_read_safe": True, - "parallel_write_safe": True, - } diff --git a/docs/_theme/rl4co/extensions/pytorch_tutorials.py b/docs/_theme/rl4co/extensions/pytorch_tutorials.py deleted file mode 100644 index 12b0e73d..00000000 --- a/docs/_theme/rl4co/extensions/pytorch_tutorials.py +++ /dev/null @@ -1,523 +0,0 @@ -"""Adapted from PyTorch Tutorials: https://github.com/pytorch/tutorials. - -BSD 3-Clause License - -Copyright (c) 2017, Pytorch contributors -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -* Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -* Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -* Neither the name of the copyright holder nor the names of its - contributors may be used to endorse or promote products derived from - this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -""" - -from docutils import nodes -from docutils.parsers.rst import Directive, directives -from docutils.statemachine import StringList -from pt_lightning_sphinx_theme.extensions.react import get_react_component_rst -from sphinx.util.docutils import SphinxDirective - -try: - FileNotFoundError -except NameError: - FileNotFoundError = IOError - - -class cardnode(nodes.General, nodes.TextElement): - pass - - -class CustomCardItemDirective(SphinxDirective): - option_spec = { - "header": directives.unchanged, - "image": directives.unchanged, - "card_description": directives.unchanged, - "tags": directives.unchanged, - "beta": directives.flag, - } - - def run(self): - try: - if "header" in self.options: - header = self.options["header"] - else: - raise ValueError("header not doc found") - - if "image" in self.options: - image = "" - else: - image = "" - - # TODO: This probably only works when the tutorial list directive is in index.html - link = self.env.docname + ".html" - - if "card_description" in self.options: - card_description = self.options["card_description"] - else: - card_description = "" - - if "tags" in self.options: - tags = self.options["tags"] - else: - tags = "" - - if "beta" in self.options: - beta = "Beta" - else: - beta = "" - - except FileNotFoundError as e: - print(e) - return [] - except ValueError as e: - print(e) - raise - return [] - - card_rst = CARD_TEMPLATE.format( - header=header, - image=image, - link=link, - card_description=card_description, - tags=tags, - beta=beta, - ) - card_list = StringList(card_rst.split("\n")) - node = cardnode() - self.state.nested_parse(card_list, self.content_offset, node) - - if not hasattr(self.env, "all_cardnodes"): - self.env.all_cardnodes = [] - self.env.all_cardnodes.append({"docname": self.env.docname, "node": node}) - return [node] - - -CARD_TEMPLATE = """ -.. raw:: html - - -""" - - -class CustomCalloutItemDirective(Directive): - option_spec = { - "header": directives.unchanged, - "description": directives.unchanged, - "button_link": directives.unchanged, - "button_text": directives.unchanged, - "col_css": directives.unchanged, - "card_style": directives.unchanged, - "image_center": directives.unchanged, - } - - def run(self): - try: - if "description" in self.options: - description = self.options["description"] - else: - description = "" - - if "header" in self.options: - header = self.options["header"] - else: - raise ValueError("header not doc found") - - if "button_link" in self.options: - button_link = self.options["button_link"] - else: - button_link = "" - - if "button_text" in self.options: - button_text = self.options["button_text"] - else: - button_text = "" - - if "col_css" in self.options: - col_css = self.options["col_css"] - else: - col_css = "col-md-6" - - if "card_style" in self.options: - card_style = self.options["card_style"] - else: - card_style = "text-container" - - if "image_center" in self.options: - image_center = "" - else: - image_center = "" - - except FileNotFoundError as e: - print(e) - return [] - except ValueError as e: - print(e) - raise - return [] - - callout_rst = CALLOUT_TEMPLATE.format( - description=description, - image_center=image_center, - header=header, - button_link=button_link, - button_text=button_text, - col_css=col_css, - card_style=card_style, - ) - callout_list = StringList(callout_rst.split("\n")) - callout = nodes.paragraph() - self.state.nested_parse(callout_list, self.content_offset, callout) - return [callout] - - -CALLOUT_TEMPLATE = """ -.. raw:: html - - -""" - - -class DisplayItemDirective(Directive): - option_spec = { - "header": directives.unchanged, - "description": directives.unchanged, - "col_css": directives.unchanged, - "card_style": directives.unchanged, - "image_center": directives.unchanged, - "image_right": directives.unchanged, - "image_height": directives.unchanged, - "button_link": directives.unchanged, - "height": directives.unchanged, - "tag": directives.unchanged, - } - - def run(self): - try: - if "description" in self.options: - description = self.options["description"] - else: - description = "" - - if "tag" in self.options: - tag = "
" + self.options["tag"] + "
" - else: - tag = "" - - if "height" in self.options: - height = self.options["height"] - else: - height = "" - - if "header" in self.options: - header = self.options["header"] - else: - raise ValueError("header not doc found") - - if "col_css" in self.options: - col_css = self.options["col_css"] - else: - col_css = "col-md-6" - - if "card_style" in self.options: - card_style = self.options["card_style"] - else: - card_style = "display-card" - - if "image_height" in self.options: - image_height = self.options["image_height"] - else: - image_height = "125px" - - image_class = "" - if "image_center" in self.options: - image = ( - "" - ) - image_class = "image-center" - - elif "image_right" in self.options: - image = ( - "" - ) - image_class = "image-right" - else: - image = "" - - if "button_link" in self.options: - button_link = self.options["button_link"] - button_open_html = f"" - button_close_html = "" - card_style = f"{card_style} display-card-hover" - else: - button_link = "" - button_open_html = "" - button_close_html = "" - - except FileNotFoundError as e: - print(e) - return [] - except ValueError as e: - print(e) - raise - return [] - - callout_rst = DISPLAY_ITEM_TEMPLATE.format( - description=description, - image=image, - height=height, - image_class=image_class, - header=header, - col_css=col_css, - card_style=card_style, - button_open_html=button_open_html, - button_close_html=button_close_html, - tag=tag, - ) - callout_list = StringList(callout_rst.split("\n")) - callout = nodes.paragraph() - self.state.nested_parse(callout_list, self.content_offset, callout) - return [callout] - - -DISPLAY_ITEM_TEMPLATE = """ -.. raw:: html - -
- {button_open_html} -
-
{image}
-

{header}

-

{description}

-
- {button_close_html} - {tag} -
-""" - - -class LikeButtonWithTitle(Directive): - option_spec = { - "padding": directives.unchanged, - "title": directives.unchanged, - "width": directives.unchanged, - "margin": directives.unchanged, - } - - def run(self): - try: - # button width - width = "155" - if "width" in self.options: - width = self.options["width"] - - # margin - margin = "40" - if "margin" in self.options: - margin = self.options["margin"] - - # title on button - title = "Join our community" - if "title" in self.options: - title = self.options["title"] - - # button on left, center or right of screen - padding = "30" - if "padding" in self.options: - _ = self.options["padding"] - - except FileNotFoundError as e: - print(e) - return [] - except ValueError as e: - print(e) - raise - # return [] - callout_rst = get_react_component_rst( - "LikeButtonWithTitle", - width=width, - margin=margin, - title=title, - padding=padding, - ) - callout_list = StringList(callout_rst.split("\n")) - callout = nodes.paragraph() - self.state.nested_parse(callout_list, self.content_offset, callout) - return [callout] - - -class ReactGreeter(Directive): - def run(self): - callout_rst = get_react_component_rst("ReactGreeter") - callout_list = StringList(callout_rst.split("\n")) - callout = nodes.paragraph() - self.state.nested_parse(callout_list, self.content_offset, callout) - return [callout] - - -class SlackButton(Directive): - option_spec = { - "align": directives.unchanged, - "title": directives.unchanged, - "width": directives.unchanged, - "margin": directives.unchanged, - } - - def run(self): - try: - # button width - width = "155" - if "width" in self.options: - width = self.options["width"] - - # margin - margin = "40" - if "margin" in self.options: - margin = self.options["margin"] - - # title on button - title = "Join our community" - if "title" in self.options: - title = self.options["title"] - - # button on left, center or right of screen - align = "left" - if "align" in self.options: - align = self.options["align"] - - align = f"slack-align-{align}" - - except FileNotFoundError as e: - print(e) - return [] - except ValueError as e: - print(e) - raise - return [] - callout_rst = SLACK_TEMPLATE.format( - align=align, title=title, margin=margin, width=width - ) - callout_list = StringList(callout_rst.split("\n")) - callout = nodes.paragraph() - self.state.nested_parse(callout_list, self.content_offset, callout) - return [callout] - - -SLACK_TEMPLATE = """ -.. raw:: html - - -""" # noqa: E501 - - -class TwoColumns(Directive): - has_content = True - option_spec = { - "left": directives.unchanged, - "right": directives.unchanged, - } - - def run(self): - try: - left = "" - if "left" in self.options: - left = self.options["left"] - - right = "" - if "right" in self.options: - right = self.options["right"] - - except FileNotFoundError as e: - print(e) - return [] - except ValueError as e: - print(e) - raise - return [] - callout_rst = TWO_COLUMN_TEMPLATE.format(left=left, right=right) - callout_list = StringList(callout_rst.split("\n")) - callout = nodes.paragraph() - self.state.nested_parse(callout_list, self.content_offset, callout) - return [callout] - - -TWO_COLUMN_TEMPLATE = """ -.. raw:: html - -
-
- -{left} - -.. raw:: html - -
-
- -{right} - -.. raw:: html - -
-
-""" diff --git a/docs/_theme/rl4co/extensions/react.py b/docs/_theme/rl4co/extensions/react.py deleted file mode 100644 index 9e286e12..00000000 --- a/docs/_theme/rl4co/extensions/react.py +++ /dev/null @@ -1,7 +0,0 @@ -def get_react_component_rst(class_name, **props): - data_props = " ".join([f'data-{key}="{value}"' for key, value in props.items()]) - return f""" -.. raw:: html - -
- """ diff --git a/docs/_theme/rl4co/fonts.html b/docs/_theme/rl4co/fonts.html deleted file mode 100644 index f47dff04..00000000 --- a/docs/_theme/rl4co/fonts.html +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - diff --git a/docs/_theme/rl4co/footer.html b/docs/_theme/rl4co/footer.html deleted file mode 100644 index ee3f0584..00000000 --- a/docs/_theme/rl4co/footer.html +++ /dev/null @@ -1,74 +0,0 @@ -
- {% if (theme_prev_next_buttons_location == 'bottom' or theme_prev_next_buttons_location == 'both') and (next or prev) %} - - {% endif %} - - {% if theme_pytorch_project == 'tutorials' %} - -
-
-
Rate this Tutorial
-
- - - - - -
-
-
- - {% else %} - -
- - {% endif %} - -
-

- {%- if show_copyright %} - {%- if hasdoc('copyright') %} - {% trans path=pathto('copyright'), copyright=copyright|e %}© Copyright {{ copyright }}.{% endtrans %} - {%- else %} - {% trans copyright=copyright|e %}© Copyright {{ copyright }}.{% endtrans %} - {%- endif %} - {%- endif %} - - {%- if build_id and build_url %} - {% trans build_url=build_url, build_id=build_id %} - - Build - {{ build_id }}. - - {% endtrans %} - {%- elif commit %} - {% trans commit=commit %} - - Revision {{ commit }}. - - {% endtrans %} - {%- elif last_updated %} - {% trans last_updated=last_updated|e %}Last updated on {{ last_updated }}.{% endtrans %} - {%- endif %} - -

-
- - {%- if show_sphinx %} - {% trans %} -
- Built with Sphinx using a theme provided by Read the Docs. -
- {% endtrans %} - {%- endif %} - - {%- block extrafooter %} {% endblock %} - -
diff --git a/docs/_theme/rl4co/layout.html b/docs/_theme/rl4co/layout.html deleted file mode 100644 index 1ff94343..00000000 --- a/docs/_theme/rl4co/layout.html +++ /dev/null @@ -1,591 +0,0 @@ -{# TEMPLATE VAR SETTINGS #} -{%- set url_root = pathto('', 1) %} -{%- if url_root == '#' %}{% set url_root = '' %}{% endif %} -{%- if not embedded and docstitle %} - {%- set titlesuffix = " — "|safe + docstitle|e %} -{%- else %} - {%- set titlesuffix = "" %} -{%- endif %} -{%- set lang_attr = 'en' if language == None else (language | replace('_', '-')) %} -{% import 'theme_variables.jinja' as theme_variables %} - - - - - - - - - - - {{ metatags }} - - - {% block htmltitle %} - {{ title|striptags|e }}{{ titlesuffix }} - {% endblock %} - - {# FAVICON #} - {% if favicon %} - - {% endif %} - {# CANONICAL URL #} - {% if theme_canonical_url %} - - {% endif %} - - {# CSS #} - - {# OPENSEARCH #} - {% if not embedded %} - {% if use_opensearch %} - - {% endif %} - - {% endif %} - - - - {%- for css in css_files %} - {%- if css|attr("rel") %} - - {%- else %} - - {%- endif %} - {%- endfor %} - {%- for cssfile in extra_css_files %} - - {%- endfor %} - - {%- block linktags %} - {%- if hasdoc('about') %} - - {%- endif %} - {%- if hasdoc('genindex') %} - - {%- endif %} - {%- if hasdoc('search') %} - - {%- endif %} - {%- if hasdoc('copyright') %} - - {%- endif %} - {%- if next %} - - {%- endif %} - {%- if prev %} - - {%- endif %} - {%- endblock %} - - {%- block extrahead %} - - {% if theme_analytics_id %} - - - {% endif %} - - {% endblock %} - - {# Keep modernizr in head - http://modernizr.com/docs/#installing #} - - - {% include "fonts.html" %} - - - - - - - - -
-
-
- - - - - -
-
-
- - - - {% block extrabody %} {% endblock %} - - {# SIDE NAV, TOGGLES ON MOBILE #} - - - - - -
-
-
- {% include "breadcrumbs.html" %} -
- -
- Shortcuts -
-
- -
-
- - {% if theme_pytorch_project == 'tutorials' %} - - - - {% endif %} - - {%- block content %} - {% if theme_style_external_links|tobool %} - - -
-
-
- {{ toc }} -
-
-
-
-
- - {% include "versions.html" %} - - {% if not embedded %} - - {% if sphinx_version >= "1.8.0" %} - - {%- for scriptfile in script_files %} - {{ js_tag(scriptfile) }} - {%- endfor %} - {% else %} - - {%- for scriptfile in script_files %} - - {%- endfor %} - {% endif %} - - {% endif %} - - - - - - - - - {%- block footer %} {% endblock %} - - - - - - - - - - - - - - {% include "cookie_banner.html" %} - - - - - -
-
-
-
- - -
-
-
- - -
- - - - - - - - - - - - diff --git a/docs/_theme/rl4co/search.html b/docs/_theme/rl4co/search.html deleted file mode 100644 index 2a14048d..00000000 --- a/docs/_theme/rl4co/search.html +++ /dev/null @@ -1,46 +0,0 @@ -{# - basic/search.html - ~~~~~~~~~~~~~~~~~ - - Template for the search page. - - :copyright: Copyright 2007-2013 by the Sphinx team, see AUTHORS. - :license: BSD, see LICENSE for details. -#} -{%- extends "layout.html" %} -{% set title = _('Search') %} -{% set script_files = script_files + ['_static/searchtools.js'] %} -{% set script_files = script_files + ['_static/language_data.js'] %} -{% block footer %} - - {{ super() }} -{% endblock %} -{% block body %} - - - {% if search_performed %} -

{{ _('Search Results') }}

- {% if not search_results %} -

{{ _('Your search did not match any documents. Please make sure that all words are spelled correctly and that you\'ve selected enough categories.') }}

- {% endif %} - {% endif %} -
- {% if search_results %} -
    - {% for href, caption, context in search_results %} -
  • - {{ caption }} -

    {{ context|e }}

    -
  • - {% endfor %} -
- {% endif %} -
-{% endblock %} diff --git a/docs/_theme/rl4co/searchbox.html b/docs/_theme/rl4co/searchbox.html deleted file mode 100644 index 54c6e5aa..00000000 --- a/docs/_theme/rl4co/searchbox.html +++ /dev/null @@ -1,16 +0,0 @@ -{%- if builder != 'singlehtml' %} - -{% if theme_pytorch_project == 'tutorials' %} - {% set search_project = 'Tutorials' %} -{% else %} - {% set search_project = 'Docs' %} -{% endif %} - -
-
- - - -
-
-{%- endif %} diff --git a/docs/_theme/rl4co/static/css/theme.css b/docs/_theme/rl4co/static/css/theme.css deleted file mode 100644 index 81b3be18..00000000 --- a/docs/_theme/rl4co/static/css/theme.css +++ /dev/null @@ -1,16268 +0,0 @@ -/*! - * Bootstrap v4.6.1 (https://getbootstrap.com/) - * Copyright 2011-2021 The Bootstrap Authors - * Copyright 2011-2021 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - */ -:root { - --blue: #007bff; - --indigo: #6610f2; - --purple: #6f42c1; - --pink: #e83e8c; - --red: #dc3545; - --orange: #fd7e14; - --yellow: #ffc107; - --green: #28a745; - --teal: #20c997; - --cyan: #17a2b8; - --white: #fff; - --gray: #6c757d; - --gray-dark: #343a40; - --primary: #007bff; - --secondary: #6c757d; - --success: #28a745; - --info: #17a2b8; - --warning: #ffc107; - --danger: #dc3545; - --light: #f8f9fa; - --dark: #343a40; - --breakpoint-xs: 0; - --breakpoint-sm: 576px; - --breakpoint-md: 768px; - --breakpoint-lg: 992px; - --breakpoint-xl: 1200px; - --font-family-sans-serif: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - --font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace -} - -*, -*::before, -*::after { - -webkit-box-sizing: border-box; - box-sizing: border-box -} - -html { - font-family: sans-serif; - line-height: 1.15; - -webkit-text-size-adjust: 100%; - -webkit-tap-highlight-color: rgba(0, 0, 0, 0) -} - -article, -aside, -figcaption, -figure, -footer, -header, -hgroup, -main, -nav, -section { - display: block -} - -body { - margin: 0; - font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - font-size: 1rem; - font-weight: 400; - line-height: 1.5; - color: #212529; - text-align: left; - background-color: #fff -} - -[tabindex="-1"]:focus:not(:focus-visible) { - outline: 0 !important -} - -hr { - -webkit-box-sizing: content-box; - box-sizing: content-box; - height: 0; - overflow: visible -} - -h1, -h2, -h3, -h4, -h5, -h6 { - margin-top: 0; - margin-bottom: .5rem -} - -p { - margin-top: 0; - margin-bottom: 1rem -} - -abbr[title], -abbr[data-original-title] { - text-decoration: underline; - -webkit-text-decoration: underline dotted; - text-decoration: underline dotted; - cursor: help; - border-bottom: 0; - -webkit-text-decoration-skip-ink: none; - text-decoration-skip-ink: none -} - -address { - margin-bottom: 1rem; - font-style: normal; - line-height: inherit -} - -ol, -ul, -dl { - margin-top: 0; - margin-bottom: 1rem -} - -ol ol, -ul ul, -ol ul, -ul ol { - margin-bottom: 0 -} - -dt { - font-weight: 700 -} - -dd { - margin-bottom: .5rem; - margin-left: 0 -} - -blockquote { - margin: 0 0 1rem -} - -b, -strong { - font-weight: bolder -} - -small { - font-size: 80% -} - -sub, -sup { - position: relative; - font-size: 75%; - line-height: 0; - vertical-align: baseline -} - -sub { - bottom: -0.25em -} - -sup { - top: -0.5em -} - -a { - color: #007bff; - text-decoration: none; - background-color: rgba(0, 0, 0, 0) -} - -a:hover { - color: #0056b3; - text-decoration: underline -} - -a:not([href]):not([class]) { - color: inherit; - text-decoration: none -} - -a:not([href]):not([class]):hover { - color: inherit; - text-decoration: none -} - -pre, -code, -kbd, -samp { - font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; - font-size: 1em -} - -pre { - margin-top: 0; - margin-bottom: 1rem; - overflow: auto; - -ms-overflow-style: scrollbar -} - -figure { - margin: 0 0 1rem -} - -img { - vertical-align: middle; - border-style: none -} - -svg { - overflow: hidden; - vertical-align: middle -} - -table { - border-collapse: collapse -} - -caption { - padding-top: .75rem; - padding-bottom: .75rem; - color: #6c757d; - text-align: left; - caption-side: bottom -} - -th { - text-align: inherit; - text-align: -webkit-match-parent -} - -label { - display: inline-block; - margin-bottom: .5rem -} - -button { - border-radius: 0 -} - -button:focus:not(:focus-visible) { - outline: 0 -} - -input, -button, -select, -optgroup, -textarea { - margin: 0; - font-family: inherit; - font-size: inherit; - line-height: inherit -} - -button, -input { - overflow: visible -} - -button, -select { - text-transform: none -} - -[role=button] { - cursor: pointer -} - -select { - word-wrap: normal -} - -button, -[type=button], -[type=reset], -[type=submit] { - -webkit-appearance: button -} - -button:not(:disabled), -[type=button]:not(:disabled), -[type=reset]:not(:disabled), -[type=submit]:not(:disabled) { - cursor: pointer -} - -button::-moz-focus-inner, -[type=button]::-moz-focus-inner, -[type=reset]::-moz-focus-inner, -[type=submit]::-moz-focus-inner { - padding: 0; - border-style: none -} - -input[type=radio], -input[type=checkbox] { - -webkit-box-sizing: border-box; - box-sizing: border-box; - padding: 0 -} - -textarea { - overflow: auto; - resize: vertical -} - -fieldset { - min-width: 0; - padding: 0; - margin: 0; - border: 0 -} - -legend { - display: block; - width: 100%; - max-width: 100%; - padding: 0; - margin-bottom: .5rem; - font-size: 1.5rem; - line-height: inherit; - color: inherit; - white-space: normal -} - -progress { - vertical-align: baseline -} - -[type=number]::-webkit-inner-spin-button, -[type=number]::-webkit-outer-spin-button { - height: auto -} - -[type=search] { - outline-offset: -2px; - -webkit-appearance: none -} - -[type=search]::-webkit-search-decoration { - -webkit-appearance: none -} - -::-webkit-file-upload-button { - font: inherit; - -webkit-appearance: button -} - -output { - display: inline-block -} - -summary { - display: list-item; - cursor: pointer -} - -template { - display: none -} - -[hidden] { - display: none !important -} - -h1, -h2, -h3, -h4, -h5, -h6, -.h1, -.h2, -.h3, -.h4, -.h5, -.h6 { - margin-bottom: .5rem; - font-weight: 500; - line-height: 1.2 -} - -h1, -.h1 { - font-size: 2.5rem -} - -h2, -.h2 { - font-size: 2rem -} - -h3, -.h3 { - font-size: 1.75rem -} - -h4, -.h4 { - font-size: 1.5rem -} - -h5, -.h5 { - font-size: 1.25rem -} - -h6, -.h6 { - font-size: 1rem -} - -.lead { - font-size: 1.25rem; - font-weight: 300 -} - -.display-1 { - font-size: 6rem; - font-weight: 300; - line-height: 1.2 -} - -.display-2 { - font-size: 5.5rem; - font-weight: 300; - line-height: 1.2 -} - -.display-3 { - font-size: 4.5rem; - font-weight: 300; - line-height: 1.2 -} - -.display-4 { - font-size: 3.5rem; - font-weight: 300; - line-height: 1.2 -} - -hr { - margin-top: 1rem; - margin-bottom: 1rem; - border: 0; - border-top: 1px solid rgba(0, 0, 0, .1) -} - -small, -.small { - font-size: 80%; - font-weight: 400 -} - -mark, -.mark { - padding: .2em; - background-color: #fcf8e3 -} - -.list-unstyled { - padding-left: 0; - list-style: none -} - -.list-inline { - padding-left: 0; - list-style: none -} - -.list-inline-item { - display: inline-block -} - -.list-inline-item:not(:last-child) { - margin-right: .5rem -} - -.initialism { - font-size: 90%; - text-transform: uppercase -} - -.blockquote { - margin-bottom: 1rem; - font-size: 1.25rem -} - -.blockquote-footer { - display: block; - font-size: 80%; - color: #6c757d -} - -.blockquote-footer::before { - content: "— " -} - -.img-fluid { - max-width: 100%; - height: auto -} - -.img-thumbnail { - padding: .25rem; - background-color: #fff; - border: 1px solid #dee2e6; - border-radius: .25rem; - max-width: 100%; - height: auto -} - -.figure { - display: inline-block -} - -.figure-img { - margin-bottom: .5rem; - line-height: 1 -} - -.figure-caption { - font-size: 90%; - color: #6c757d -} - -code { - font-size: 87.5%; - color: #e83e8c; - word-wrap: break-word -} - -a>code { - color: inherit -} - -kbd { - padding: .2rem .4rem; - font-size: 87.5%; - color: #fff; - background-color: #212529; - border-radius: .2rem -} - -kbd kbd { - padding: 0; - font-size: 100%; - font-weight: 700 -} - -pre { - display: block; - font-size: 87.5%; - color: #212529 -} - -pre code { - font-size: inherit; - color: inherit; - word-break: normal -} - -.pre-scrollable { - max-height: 340px; - overflow-y: scroll -} - -.container, -.container-fluid, -.container-xl, -.container-lg, -.container-md, -.container-sm { - width: 100%; - padding-right: 15px; - padding-left: 15px; - margin-right: auto; - margin-left: auto -} - -@media(min-width: 576px) { - - .container-sm, - .container { - max-width: 540px - } -} - -@media(min-width: 768px) { - - .container-md, - .container-sm, - .container { - max-width: 720px - } -} - -@media(min-width: 992px) { - - .container-lg, - .container-md, - .container-sm, - .container { - max-width: 960px - } -} - -@media(min-width: 1200px) { - - .container-xl, - .container-lg, - .container-md, - .container-sm, - .container { - max-width: 1140px - } -} - -.row { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -ms-flex-wrap: wrap; - flex-wrap: wrap; - margin-right: -15px; - margin-left: -15px -} - -.no-gutters { - margin-right: 0; - margin-left: 0 -} - -.no-gutters>.col, -.no-gutters>[class*=col-] { - padding-right: 0; - padding-left: 0 -} - -.col-xl, -.col-xl-auto, -.col-xl-12, -.col-xl-11, -.col-xl-10, -.col-xl-9, -.col-xl-8, -.col-xl-7, -.col-xl-6, -.col-xl-5, -.col-xl-4, -.col-xl-3, -.col-xl-2, -.col-xl-1, -.col-lg, -.col-lg-auto, -.col-lg-12, -.col-lg-11, -.col-lg-10, -.col-lg-9, -.col-lg-8, -.col-lg-7, -.col-lg-6, -.col-lg-5, -.col-lg-4, -.col-lg-3, -.col-lg-2, -.col-lg-1, -.col-md, -.col-md-auto, -.col-md-12, -.col-md-11, -.col-md-10, -.col-md-9, -.col-md-8, -.col-md-7, -.col-md-6, -.col-md-5, -.col-md-4, -.col-md-3, -.col-md-2, -.col-md-1, -.col-sm, -.col-sm-auto, -.col-sm-12, -.col-sm-11, -.col-sm-10, -.col-sm-9, -.col-sm-8, -.col-sm-7, -.col-sm-6, -.col-sm-5, -.col-sm-4, -.col-sm-3, -.col-sm-2, -.col-sm-1, -.col, -.col-auto, -.col-12, -.col-11, -.col-10, -.col-9, -.col-8, -.col-7, -.col-6, -.col-5, -.col-4, -.col-3, -.col-2, -.col-1 { - position: relative; - width: 100%; - padding-right: 15px; - padding-left: 15px -} - -.col { - -ms-flex-preferred-size: 0; - flex-basis: 0; - -webkit-box-flex: 1; - -ms-flex-positive: 1; - flex-grow: 1; - max-width: 100% -} - -.row-cols-1>* { - -webkit-box-flex: 0; - -ms-flex: 0 0 100%; - flex: 0 0 100%; - max-width: 100% -} - -.row-cols-2>* { - -webkit-box-flex: 0; - -ms-flex: 0 0 50%; - flex: 0 0 50%; - max-width: 50% -} - -.row-cols-3>* { - -webkit-box-flex: 0; - -ms-flex: 0 0 33.3333333333%; - flex: 0 0 33.3333333333%; - max-width: 33.3333333333% -} - -.row-cols-4>* { - -webkit-box-flex: 0; - -ms-flex: 0 0 25%; - flex: 0 0 25%; - max-width: 25% -} - -.row-cols-5>* { - -webkit-box-flex: 0; - -ms-flex: 0 0 20%; - flex: 0 0 20%; - max-width: 20% -} - -.row-cols-6>* { - -webkit-box-flex: 0; - -ms-flex: 0 0 16.6666666667%; - flex: 0 0 16.6666666667%; - max-width: 16.6666666667% -} - -.col-auto { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: auto; - max-width: 100% -} - -.col-1 { - -webkit-box-flex: 0; - -ms-flex: 0 0 8.33333333%; - flex: 0 0 8.33333333%; - max-width: 8.33333333% -} - -.col-2 { - -webkit-box-flex: 0; - -ms-flex: 0 0 16.66666667%; - flex: 0 0 16.66666667%; - max-width: 16.66666667% -} - -.col-3 { - -webkit-box-flex: 0; - -ms-flex: 0 0 25%; - flex: 0 0 25%; - max-width: 25% -} - -.col-4 { - -webkit-box-flex: 0; - -ms-flex: 0 0 33.33333333%; - flex: 0 0 33.33333333%; - max-width: 33.33333333% -} - -.col-5 { - -webkit-box-flex: 0; - -ms-flex: 0 0 41.66666667%; - flex: 0 0 41.66666667%; - max-width: 41.66666667% -} - -.col-6 { - -webkit-box-flex: 0; - -ms-flex: 0 0 50%; - flex: 0 0 50%; - max-width: 50% -} - -.col-7 { - -webkit-box-flex: 0; - -ms-flex: 0 0 58.33333333%; - flex: 0 0 58.33333333%; - max-width: 58.33333333% -} - -.col-8 { - -webkit-box-flex: 0; - -ms-flex: 0 0 66.66666667%; - flex: 0 0 66.66666667%; - max-width: 66.66666667% -} - -.col-9 { - -webkit-box-flex: 0; - -ms-flex: 0 0 75%; - flex: 0 0 75%; - max-width: 75% -} - -.col-10 { - -webkit-box-flex: 0; - -ms-flex: 0 0 83.33333333%; - flex: 0 0 83.33333333%; - max-width: 83.33333333% -} - -.col-11 { - -webkit-box-flex: 0; - -ms-flex: 0 0 91.66666667%; - flex: 0 0 91.66666667%; - max-width: 91.66666667% -} - -.col-12 { - -webkit-box-flex: 0; - -ms-flex: 0 0 100%; - flex: 0 0 100%; - max-width: 100% -} - -.order-first { - -webkit-box-ordinal-group: 0; - -ms-flex-order: -1; - order: -1 -} - -.order-last { - -webkit-box-ordinal-group: 14; - -ms-flex-order: 13; - order: 13 -} - -.order-0 { - -webkit-box-ordinal-group: 1; - -ms-flex-order: 0; - order: 0 -} - -.order-1 { - -webkit-box-ordinal-group: 2; - -ms-flex-order: 1; - order: 1 -} - -.order-2 { - -webkit-box-ordinal-group: 3; - -ms-flex-order: 2; - order: 2 -} - -.order-3 { - -webkit-box-ordinal-group: 4; - -ms-flex-order: 3; - order: 3 -} - -.order-4 { - -webkit-box-ordinal-group: 5; - -ms-flex-order: 4; - order: 4 -} - -.order-5 { - -webkit-box-ordinal-group: 6; - -ms-flex-order: 5; - order: 5 -} - -.order-6 { - -webkit-box-ordinal-group: 7; - -ms-flex-order: 6; - order: 6 -} - -.order-7 { - -webkit-box-ordinal-group: 8; - -ms-flex-order: 7; - order: 7 -} - -.order-8 { - -webkit-box-ordinal-group: 9; - -ms-flex-order: 8; - order: 8 -} - -.order-9 { - -webkit-box-ordinal-group: 10; - -ms-flex-order: 9; - order: 9 -} - -.order-10 { - -webkit-box-ordinal-group: 11; - -ms-flex-order: 10; - order: 10 -} - -.order-11 { - -webkit-box-ordinal-group: 12; - -ms-flex-order: 11; - order: 11 -} - -.order-12 { - -webkit-box-ordinal-group: 13; - -ms-flex-order: 12; - order: 12 -} - -.offset-1 { - margin-left: 8.33333333% -} - -.offset-2 { - margin-left: 16.66666667% -} - -.offset-3 { - margin-left: 25% -} - -.offset-4 { - margin-left: 33.33333333% -} - -.offset-5 { - margin-left: 41.66666667% -} - -.offset-6 { - margin-left: 50% -} - -.offset-7 { - margin-left: 58.33333333% -} - -.offset-8 { - margin-left: 66.66666667% -} - -.offset-9 { - margin-left: 75% -} - -.offset-10 { - margin-left: 83.33333333% -} - -.offset-11 { - margin-left: 91.66666667% -} - -@media(min-width: 576px) { - .col-sm { - -ms-flex-preferred-size: 0; - flex-basis: 0; - -webkit-box-flex: 1; - -ms-flex-positive: 1; - flex-grow: 1; - max-width: 100% - } - - .row-cols-sm-1>* { - -webkit-box-flex: 0; - -ms-flex: 0 0 100%; - flex: 0 0 100%; - max-width: 100% - } - - .row-cols-sm-2>* { - -webkit-box-flex: 0; - -ms-flex: 0 0 50%; - flex: 0 0 50%; - max-width: 50% - } - - .row-cols-sm-3>* { - -webkit-box-flex: 0; - -ms-flex: 0 0 33.3333333333%; - flex: 0 0 33.3333333333%; - max-width: 33.3333333333% - } - - .row-cols-sm-4>* { - -webkit-box-flex: 0; - -ms-flex: 0 0 25%; - flex: 0 0 25%; - max-width: 25% - } - - .row-cols-sm-5>* { - -webkit-box-flex: 0; - -ms-flex: 0 0 20%; - flex: 0 0 20%; - max-width: 20% - } - - .row-cols-sm-6>* { - -webkit-box-flex: 0; - -ms-flex: 0 0 16.6666666667%; - flex: 0 0 16.6666666667%; - max-width: 16.6666666667% - } - - .col-sm-auto { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: auto; - max-width: 100% - } - - .col-sm-1 { - -webkit-box-flex: 0; - -ms-flex: 0 0 8.33333333%; - flex: 0 0 8.33333333%; - max-width: 8.33333333% - } - - .col-sm-2 { - -webkit-box-flex: 0; - -ms-flex: 0 0 16.66666667%; - flex: 0 0 16.66666667%; - max-width: 16.66666667% - } - - .col-sm-3 { - -webkit-box-flex: 0; - -ms-flex: 0 0 25%; - flex: 0 0 25%; - max-width: 25% - } - - .col-sm-4 { - -webkit-box-flex: 0; - -ms-flex: 0 0 33.33333333%; - flex: 0 0 33.33333333%; - max-width: 33.33333333% - } - - .col-sm-5 { - -webkit-box-flex: 0; - -ms-flex: 0 0 41.66666667%; - flex: 0 0 41.66666667%; - max-width: 41.66666667% - } - - .col-sm-6 { - -webkit-box-flex: 0; - -ms-flex: 0 0 50%; - flex: 0 0 50%; - max-width: 50% - } - - .col-sm-7 { - -webkit-box-flex: 0; - -ms-flex: 0 0 58.33333333%; - flex: 0 0 58.33333333%; - max-width: 58.33333333% - } - - .col-sm-8 { - -webkit-box-flex: 0; - -ms-flex: 0 0 66.66666667%; - flex: 0 0 66.66666667%; - max-width: 66.66666667% - } - - .col-sm-9 { - -webkit-box-flex: 0; - -ms-flex: 0 0 75%; - flex: 0 0 75%; - max-width: 75% - } - - .col-sm-10 { - -webkit-box-flex: 0; - -ms-flex: 0 0 83.33333333%; - flex: 0 0 83.33333333%; - max-width: 83.33333333% - } - - .col-sm-11 { - -webkit-box-flex: 0; - -ms-flex: 0 0 91.66666667%; - flex: 0 0 91.66666667%; - max-width: 91.66666667% - } - - .col-sm-12 { - -webkit-box-flex: 0; - -ms-flex: 0 0 100%; - flex: 0 0 100%; - max-width: 100% - } - - .order-sm-first { - -webkit-box-ordinal-group: 0; - -ms-flex-order: -1; - order: -1 - } - - .order-sm-last { - -webkit-box-ordinal-group: 14; - -ms-flex-order: 13; - order: 13 - } - - .order-sm-0 { - -webkit-box-ordinal-group: 1; - -ms-flex-order: 0; - order: 0 - } - - .order-sm-1 { - -webkit-box-ordinal-group: 2; - -ms-flex-order: 1; - order: 1 - } - - .order-sm-2 { - -webkit-box-ordinal-group: 3; - -ms-flex-order: 2; - order: 2 - } - - .order-sm-3 { - -webkit-box-ordinal-group: 4; - -ms-flex-order: 3; - order: 3 - } - - .order-sm-4 { - -webkit-box-ordinal-group: 5; - -ms-flex-order: 4; - order: 4 - } - - .order-sm-5 { - -webkit-box-ordinal-group: 6; - -ms-flex-order: 5; - order: 5 - } - - .order-sm-6 { - -webkit-box-ordinal-group: 7; - -ms-flex-order: 6; - order: 6 - } - - .order-sm-7 { - -webkit-box-ordinal-group: 8; - -ms-flex-order: 7; - order: 7 - } - - .order-sm-8 { - -webkit-box-ordinal-group: 9; - -ms-flex-order: 8; - order: 8 - } - - .order-sm-9 { - -webkit-box-ordinal-group: 10; - -ms-flex-order: 9; - order: 9 - } - - .order-sm-10 { - -webkit-box-ordinal-group: 11; - -ms-flex-order: 10; - order: 10 - } - - .order-sm-11 { - -webkit-box-ordinal-group: 12; - -ms-flex-order: 11; - order: 11 - } - - .order-sm-12 { - -webkit-box-ordinal-group: 13; - -ms-flex-order: 12; - order: 12 - } - - .offset-sm-0 { - margin-left: 0 - } - - .offset-sm-1 { - margin-left: 8.33333333% - } - - .offset-sm-2 { - margin-left: 16.66666667% - } - - .offset-sm-3 { - margin-left: 25% - } - - .offset-sm-4 { - margin-left: 33.33333333% - } - - .offset-sm-5 { - margin-left: 41.66666667% - } - - .offset-sm-6 { - margin-left: 50% - } - - .offset-sm-7 { - margin-left: 58.33333333% - } - - .offset-sm-8 { - margin-left: 66.66666667% - } - - .offset-sm-9 { - margin-left: 75% - } - - .offset-sm-10 { - margin-left: 83.33333333% - } - - .offset-sm-11 { - margin-left: 91.66666667% - } -} - -@media(min-width: 768px) { - .col-md { - -ms-flex-preferred-size: 0; - flex-basis: 0; - -webkit-box-flex: 1; - -ms-flex-positive: 1; - flex-grow: 1; - max-width: 100% - } - - .row-cols-md-1>* { - -webkit-box-flex: 0; - -ms-flex: 0 0 100%; - flex: 0 0 100%; - max-width: 100% - } - - .row-cols-md-2>* { - -webkit-box-flex: 0; - -ms-flex: 0 0 50%; - flex: 0 0 50%; - max-width: 50% - } - - .row-cols-md-3>* { - -webkit-box-flex: 0; - -ms-flex: 0 0 33.3333333333%; - flex: 0 0 33.3333333333%; - max-width: 33.3333333333% - } - - .row-cols-md-4>* { - -webkit-box-flex: 0; - -ms-flex: 0 0 25%; - flex: 0 0 25%; - max-width: 25% - } - - .row-cols-md-5>* { - -webkit-box-flex: 0; - -ms-flex: 0 0 20%; - flex: 0 0 20%; - max-width: 20% - } - - .row-cols-md-6>* { - -webkit-box-flex: 0; - -ms-flex: 0 0 16.6666666667%; - flex: 0 0 16.6666666667%; - max-width: 16.6666666667% - } - - .col-md-auto { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: auto; - max-width: 100% - } - - .col-md-1 { - -webkit-box-flex: 0; - -ms-flex: 0 0 8.33333333%; - flex: 0 0 8.33333333%; - max-width: 8.33333333% - } - - .col-md-2 { - -webkit-box-flex: 0; - -ms-flex: 0 0 16.66666667%; - flex: 0 0 16.66666667%; - max-width: 16.66666667% - } - - .col-md-3 { - -webkit-box-flex: 0; - -ms-flex: 0 0 25%; - flex: 0 0 25%; - max-width: 25% - } - - .col-md-4 { - -webkit-box-flex: 0; - -ms-flex: 0 0 33.33333333%; - flex: 0 0 33.33333333%; - max-width: 33.33333333% - } - - .col-md-5 { - -webkit-box-flex: 0; - -ms-flex: 0 0 41.66666667%; - flex: 0 0 41.66666667%; - max-width: 41.66666667% - } - - .col-md-6 { - -webkit-box-flex: 0; - -ms-flex: 0 0 50%; - flex: 0 0 50%; - max-width: 50% - } - - .col-md-7 { - -webkit-box-flex: 0; - -ms-flex: 0 0 58.33333333%; - flex: 0 0 58.33333333%; - max-width: 58.33333333% - } - - .col-md-8 { - -webkit-box-flex: 0; - -ms-flex: 0 0 66.66666667%; - flex: 0 0 66.66666667%; - max-width: 66.66666667% - } - - .col-md-9 { - -webkit-box-flex: 0; - -ms-flex: 0 0 75%; - flex: 0 0 75%; - max-width: 75% - } - - .col-md-10 { - -webkit-box-flex: 0; - -ms-flex: 0 0 83.33333333%; - flex: 0 0 83.33333333%; - max-width: 83.33333333% - } - - .col-md-11 { - -webkit-box-flex: 0; - -ms-flex: 0 0 91.66666667%; - flex: 0 0 91.66666667%; - max-width: 91.66666667% - } - - .col-md-12 { - -webkit-box-flex: 0; - -ms-flex: 0 0 100%; - flex: 0 0 100%; - max-width: 100% - } - - .order-md-first { - -webkit-box-ordinal-group: 0; - -ms-flex-order: -1; - order: -1 - } - - .order-md-last { - -webkit-box-ordinal-group: 14; - -ms-flex-order: 13; - order: 13 - } - - .order-md-0 { - -webkit-box-ordinal-group: 1; - -ms-flex-order: 0; - order: 0 - } - - .order-md-1 { - -webkit-box-ordinal-group: 2; - -ms-flex-order: 1; - order: 1 - } - - .order-md-2 { - -webkit-box-ordinal-group: 3; - -ms-flex-order: 2; - order: 2 - } - - .order-md-3 { - -webkit-box-ordinal-group: 4; - -ms-flex-order: 3; - order: 3 - } - - .order-md-4 { - -webkit-box-ordinal-group: 5; - -ms-flex-order: 4; - order: 4 - } - - .order-md-5 { - -webkit-box-ordinal-group: 6; - -ms-flex-order: 5; - order: 5 - } - - .order-md-6 { - -webkit-box-ordinal-group: 7; - -ms-flex-order: 6; - order: 6 - } - - .order-md-7 { - -webkit-box-ordinal-group: 8; - -ms-flex-order: 7; - order: 7 - } - - .order-md-8 { - -webkit-box-ordinal-group: 9; - -ms-flex-order: 8; - order: 8 - } - - .order-md-9 { - -webkit-box-ordinal-group: 10; - -ms-flex-order: 9; - order: 9 - } - - .order-md-10 { - -webkit-box-ordinal-group: 11; - -ms-flex-order: 10; - order: 10 - } - - .order-md-11 { - -webkit-box-ordinal-group: 12; - -ms-flex-order: 11; - order: 11 - } - - .order-md-12 { - -webkit-box-ordinal-group: 13; - -ms-flex-order: 12; - order: 12 - } - - .offset-md-0 { - margin-left: 0 - } - - .offset-md-1 { - margin-left: 8.33333333% - } - - .offset-md-2 { - margin-left: 16.66666667% - } - - .offset-md-3 { - margin-left: 25% - } - - .offset-md-4 { - margin-left: 33.33333333% - } - - .offset-md-5 { - margin-left: 41.66666667% - } - - .offset-md-6 { - margin-left: 50% - } - - .offset-md-7 { - margin-left: 58.33333333% - } - - .offset-md-8 { - margin-left: 66.66666667% - } - - .offset-md-9 { - margin-left: 75% - } - - .offset-md-10 { - margin-left: 83.33333333% - } - - .offset-md-11 { - margin-left: 91.66666667% - } -} - -@media(min-width: 992px) { - .col-lg { - -ms-flex-preferred-size: 0; - flex-basis: 0; - -webkit-box-flex: 1; - -ms-flex-positive: 1; - flex-grow: 1; - max-width: 100% - } - - .row-cols-lg-1>* { - -webkit-box-flex: 0; - -ms-flex: 0 0 100%; - flex: 0 0 100%; - max-width: 100% - } - - .row-cols-lg-2>* { - -webkit-box-flex: 0; - -ms-flex: 0 0 50%; - flex: 0 0 50%; - max-width: 50% - } - - .row-cols-lg-3>* { - -webkit-box-flex: 0; - -ms-flex: 0 0 33.3333333333%; - flex: 0 0 33.3333333333%; - max-width: 33.3333333333% - } - - .row-cols-lg-4>* { - -webkit-box-flex: 0; - -ms-flex: 0 0 25%; - flex: 0 0 25%; - max-width: 25% - } - - .row-cols-lg-5>* { - -webkit-box-flex: 0; - -ms-flex: 0 0 20%; - flex: 0 0 20%; - max-width: 20% - } - - .row-cols-lg-6>* { - -webkit-box-flex: 0; - -ms-flex: 0 0 16.6666666667%; - flex: 0 0 16.6666666667%; - max-width: 16.6666666667% - } - - .col-lg-auto { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: auto; - max-width: 100% - } - - .col-lg-1 { - -webkit-box-flex: 0; - -ms-flex: 0 0 8.33333333%; - flex: 0 0 8.33333333%; - max-width: 8.33333333% - } - - .col-lg-2 { - -webkit-box-flex: 0; - -ms-flex: 0 0 16.66666667%; - flex: 0 0 16.66666667%; - max-width: 16.66666667% - } - - .col-lg-3 { - -webkit-box-flex: 0; - -ms-flex: 0 0 25%; - flex: 0 0 25%; - max-width: 25% - } - - .col-lg-4 { - -webkit-box-flex: 0; - -ms-flex: 0 0 33.33333333%; - flex: 0 0 33.33333333%; - max-width: 33.33333333% - } - - .col-lg-5 { - -webkit-box-flex: 0; - -ms-flex: 0 0 41.66666667%; - flex: 0 0 41.66666667%; - max-width: 41.66666667% - } - - .col-lg-6 { - -webkit-box-flex: 0; - -ms-flex: 0 0 50%; - flex: 0 0 50%; - max-width: 50% - } - - .col-lg-7 { - -webkit-box-flex: 0; - -ms-flex: 0 0 58.33333333%; - flex: 0 0 58.33333333%; - max-width: 58.33333333% - } - - .col-lg-8 { - -webkit-box-flex: 0; - -ms-flex: 0 0 66.66666667%; - flex: 0 0 66.66666667%; - max-width: 66.66666667% - } - - .col-lg-9 { - -webkit-box-flex: 0; - -ms-flex: 0 0 75%; - flex: 0 0 75%; - max-width: 75% - } - - .col-lg-10 { - -webkit-box-flex: 0; - -ms-flex: 0 0 83.33333333%; - flex: 0 0 83.33333333%; - max-width: 83.33333333% - } - - .col-lg-11 { - -webkit-box-flex: 0; - -ms-flex: 0 0 91.66666667%; - flex: 0 0 91.66666667%; - max-width: 91.66666667% - } - - .col-lg-12 { - -webkit-box-flex: 0; - -ms-flex: 0 0 100%; - flex: 0 0 100%; - max-width: 100% - } - - .order-lg-first { - -webkit-box-ordinal-group: 0; - -ms-flex-order: -1; - order: -1 - } - - .order-lg-last { - -webkit-box-ordinal-group: 14; - -ms-flex-order: 13; - order: 13 - } - - .order-lg-0 { - -webkit-box-ordinal-group: 1; - -ms-flex-order: 0; - order: 0 - } - - .order-lg-1 { - -webkit-box-ordinal-group: 2; - -ms-flex-order: 1; - order: 1 - } - - .order-lg-2 { - -webkit-box-ordinal-group: 3; - -ms-flex-order: 2; - order: 2 - } - - .order-lg-3 { - -webkit-box-ordinal-group: 4; - -ms-flex-order: 3; - order: 3 - } - - .order-lg-4 { - -webkit-box-ordinal-group: 5; - -ms-flex-order: 4; - order: 4 - } - - .order-lg-5 { - -webkit-box-ordinal-group: 6; - -ms-flex-order: 5; - order: 5 - } - - .order-lg-6 { - -webkit-box-ordinal-group: 7; - -ms-flex-order: 6; - order: 6 - } - - .order-lg-7 { - -webkit-box-ordinal-group: 8; - -ms-flex-order: 7; - order: 7 - } - - .order-lg-8 { - -webkit-box-ordinal-group: 9; - -ms-flex-order: 8; - order: 8 - } - - .order-lg-9 { - -webkit-box-ordinal-group: 10; - -ms-flex-order: 9; - order: 9 - } - - .order-lg-10 { - -webkit-box-ordinal-group: 11; - -ms-flex-order: 10; - order: 10 - } - - .order-lg-11 { - -webkit-box-ordinal-group: 12; - -ms-flex-order: 11; - order: 11 - } - - .order-lg-12 { - -webkit-box-ordinal-group: 13; - -ms-flex-order: 12; - order: 12 - } - - .offset-lg-0 { - margin-left: 0 - } - - .offset-lg-1 { - margin-left: 8.33333333% - } - - .offset-lg-2 { - margin-left: 16.66666667% - } - - .offset-lg-3 { - margin-left: 25% - } - - .offset-lg-4 { - margin-left: 33.33333333% - } - - .offset-lg-5 { - margin-left: 41.66666667% - } - - .offset-lg-6 { - margin-left: 50% - } - - .offset-lg-7 { - margin-left: 58.33333333% - } - - .offset-lg-8 { - margin-left: 66.66666667% - } - - .offset-lg-9 { - margin-left: 75% - } - - .offset-lg-10 { - margin-left: 83.33333333% - } - - .offset-lg-11 { - margin-left: 91.66666667% - } -} - -@media(min-width: 1200px) { - .col-xl { - -ms-flex-preferred-size: 0; - flex-basis: 0; - -webkit-box-flex: 1; - -ms-flex-positive: 1; - flex-grow: 1; - max-width: 100% - } - - .row-cols-xl-1>* { - -webkit-box-flex: 0; - -ms-flex: 0 0 100%; - flex: 0 0 100%; - max-width: 100% - } - - .row-cols-xl-2>* { - -webkit-box-flex: 0; - -ms-flex: 0 0 50%; - flex: 0 0 50%; - max-width: 50% - } - - .row-cols-xl-3>* { - -webkit-box-flex: 0; - -ms-flex: 0 0 33.3333333333%; - flex: 0 0 33.3333333333%; - max-width: 33.3333333333% - } - - .row-cols-xl-4>* { - -webkit-box-flex: 0; - -ms-flex: 0 0 25%; - flex: 0 0 25%; - max-width: 25% - } - - .row-cols-xl-5>* { - -webkit-box-flex: 0; - -ms-flex: 0 0 20%; - flex: 0 0 20%; - max-width: 20% - } - - .row-cols-xl-6>* { - -webkit-box-flex: 0; - -ms-flex: 0 0 16.6666666667%; - flex: 0 0 16.6666666667%; - max-width: 16.6666666667% - } - - .col-xl-auto { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: auto; - max-width: 100% - } - - .col-xl-1 { - -webkit-box-flex: 0; - -ms-flex: 0 0 8.33333333%; - flex: 0 0 8.33333333%; - max-width: 8.33333333% - } - - .col-xl-2 { - -webkit-box-flex: 0; - -ms-flex: 0 0 16.66666667%; - flex: 0 0 16.66666667%; - max-width: 16.66666667% - } - - .col-xl-3 { - -webkit-box-flex: 0; - -ms-flex: 0 0 25%; - flex: 0 0 25%; - max-width: 25% - } - - .col-xl-4 { - -webkit-box-flex: 0; - -ms-flex: 0 0 33.33333333%; - flex: 0 0 33.33333333%; - max-width: 33.33333333% - } - - .col-xl-5 { - -webkit-box-flex: 0; - -ms-flex: 0 0 41.66666667%; - flex: 0 0 41.66666667%; - max-width: 41.66666667% - } - - .col-xl-6 { - -webkit-box-flex: 0; - -ms-flex: 0 0 50%; - flex: 0 0 50%; - max-width: 50% - } - - .col-xl-7 { - -webkit-box-flex: 0; - -ms-flex: 0 0 58.33333333%; - flex: 0 0 58.33333333%; - max-width: 58.33333333% - } - - .col-xl-8 { - -webkit-box-flex: 0; - -ms-flex: 0 0 66.66666667%; - flex: 0 0 66.66666667%; - max-width: 66.66666667% - } - - .col-xl-9 { - -webkit-box-flex: 0; - -ms-flex: 0 0 75%; - flex: 0 0 75%; - max-width: 75% - } - - .col-xl-10 { - -webkit-box-flex: 0; - -ms-flex: 0 0 83.33333333%; - flex: 0 0 83.33333333%; - max-width: 83.33333333% - } - - .col-xl-11 { - -webkit-box-flex: 0; - -ms-flex: 0 0 91.66666667%; - flex: 0 0 91.66666667%; - max-width: 91.66666667% - } - - .col-xl-12 { - -webkit-box-flex: 0; - -ms-flex: 0 0 100%; - flex: 0 0 100%; - max-width: 100% - } - - .order-xl-first { - -webkit-box-ordinal-group: 0; - -ms-flex-order: -1; - order: -1 - } - - .order-xl-last { - -webkit-box-ordinal-group: 14; - -ms-flex-order: 13; - order: 13 - } - - .order-xl-0 { - -webkit-box-ordinal-group: 1; - -ms-flex-order: 0; - order: 0 - } - - .order-xl-1 { - -webkit-box-ordinal-group: 2; - -ms-flex-order: 1; - order: 1 - } - - .order-xl-2 { - -webkit-box-ordinal-group: 3; - -ms-flex-order: 2; - order: 2 - } - - .order-xl-3 { - -webkit-box-ordinal-group: 4; - -ms-flex-order: 3; - order: 3 - } - - .order-xl-4 { - -webkit-box-ordinal-group: 5; - -ms-flex-order: 4; - order: 4 - } - - .order-xl-5 { - -webkit-box-ordinal-group: 6; - -ms-flex-order: 5; - order: 5 - } - - .order-xl-6 { - -webkit-box-ordinal-group: 7; - -ms-flex-order: 6; - order: 6 - } - - .order-xl-7 { - -webkit-box-ordinal-group: 8; - -ms-flex-order: 7; - order: 7 - } - - .order-xl-8 { - -webkit-box-ordinal-group: 9; - -ms-flex-order: 8; - order: 8 - } - - .order-xl-9 { - -webkit-box-ordinal-group: 10; - -ms-flex-order: 9; - order: 9 - } - - .order-xl-10 { - -webkit-box-ordinal-group: 11; - -ms-flex-order: 10; - order: 10 - } - - .order-xl-11 { - -webkit-box-ordinal-group: 12; - -ms-flex-order: 11; - order: 11 - } - - .order-xl-12 { - -webkit-box-ordinal-group: 13; - -ms-flex-order: 12; - order: 12 - } - - .offset-xl-0 { - margin-left: 0 - } - - .offset-xl-1 { - margin-left: 8.33333333% - } - - .offset-xl-2 { - margin-left: 16.66666667% - } - - .offset-xl-3 { - margin-left: 25% - } - - .offset-xl-4 { - margin-left: 33.33333333% - } - - .offset-xl-5 { - margin-left: 41.66666667% - } - - .offset-xl-6 { - margin-left: 50% - } - - .offset-xl-7 { - margin-left: 58.33333333% - } - - .offset-xl-8 { - margin-left: 66.66666667% - } - - .offset-xl-9 { - margin-left: 75% - } - - .offset-xl-10 { - margin-left: 83.33333333% - } - - .offset-xl-11 { - margin-left: 91.66666667% - } -} - -.table { - width: 100%; - margin-bottom: 1rem; - color: #212529 -} - -.table th, -.table td { - padding: .75rem; - vertical-align: top; - border-top: 1px solid #dee2e6 -} - -.table thead th { - vertical-align: bottom; - border-bottom: 2px solid #dee2e6 -} - -.table tbody+tbody { - border-top: 2px solid #dee2e6 -} - -.table-sm th, -.table-sm td { - padding: .3rem -} - -.table-bordered { - border: 1px solid #dee2e6 -} - -.table-bordered th, -.table-bordered td { - border: 1px solid #dee2e6 -} - -.table-bordered thead th, -.table-bordered thead td { - border-bottom-width: 2px -} - -.table-borderless th, -.table-borderless td, -.table-borderless thead th, -.table-borderless tbody+tbody { - border: 0 -} - -.table-striped tbody tr:nth-of-type(odd) { - background-color: rgba(0, 0, 0, .05) -} - -.table-hover tbody tr:hover { - color: #212529; - background-color: rgba(0, 0, 0, .075) -} - -.table-primary, -.table-primary>th, -.table-primary>td { - background-color: #b8daff -} - -.table-primary th, -.table-primary td, -.table-primary thead th, -.table-primary tbody+tbody { - border-color: #7abaff -} - -.table-hover .table-primary:hover { - background-color: #9fcdff -} - -.table-hover .table-primary:hover>td, -.table-hover .table-primary:hover>th { - background-color: #9fcdff -} - -.table-secondary, -.table-secondary>th, -.table-secondary>td { - background-color: #d6d8db -} - -.table-secondary th, -.table-secondary td, -.table-secondary thead th, -.table-secondary tbody+tbody { - border-color: #b3b7bb -} - -.table-hover .table-secondary:hover { - background-color: #c8cbcf -} - -.table-hover .table-secondary:hover>td, -.table-hover .table-secondary:hover>th { - background-color: #c8cbcf -} - -.table-success, -.table-success>th, -.table-success>td { - background-color: #c3e6cb -} - -.table-success th, -.table-success td, -.table-success thead th, -.table-success tbody+tbody { - border-color: #8fd19e -} - -.table-hover .table-success:hover { - background-color: #b1dfbb -} - -.table-hover .table-success:hover>td, -.table-hover .table-success:hover>th { - background-color: #b1dfbb -} - -.table-info, -.table-info>th, -.table-info>td { - background-color: #bee5eb -} - -.table-info th, -.table-info td, -.table-info thead th, -.table-info tbody+tbody { - border-color: #86cfda -} - -.table-hover .table-info:hover { - background-color: #abdde5 -} - -.table-hover .table-info:hover>td, -.table-hover .table-info:hover>th { - background-color: #abdde5 -} - -.table-warning, -.table-warning>th, -.table-warning>td { - background-color: #ffeeba -} - -.table-warning th, -.table-warning td, -.table-warning thead th, -.table-warning tbody+tbody { - border-color: #ffdf7e -} - -.table-hover .table-warning:hover { - background-color: #ffe8a1 -} - -.table-hover .table-warning:hover>td, -.table-hover .table-warning:hover>th { - background-color: #ffe8a1 -} - -.table-danger, -.table-danger>th, -.table-danger>td { - background-color: #f5c6cb -} - -.table-danger th, -.table-danger td, -.table-danger thead th, -.table-danger tbody+tbody { - border-color: #ed969e -} - -.table-hover .table-danger:hover { - background-color: #f1b0b7 -} - -.table-hover .table-danger:hover>td, -.table-hover .table-danger:hover>th { - background-color: #f1b0b7 -} - -.table-light, -.table-light>th, -.table-light>td { - background-color: #fdfdfe -} - -.table-light th, -.table-light td, -.table-light thead th, -.table-light tbody+tbody { - border-color: #fbfcfc -} - -.table-hover .table-light:hover { - background-color: #ececf6 -} - -.table-hover .table-light:hover>td, -.table-hover .table-light:hover>th { - background-color: #ececf6 -} - -.table-dark, -.table-dark>th, -.table-dark>td { - background-color: #c6c8ca -} - -.table-dark th, -.table-dark td, -.table-dark thead th, -.table-dark tbody+tbody { - border-color: #95999c -} - -.table-hover .table-dark:hover { - background-color: #b9bbbe -} - -.table-hover .table-dark:hover>td, -.table-hover .table-dark:hover>th { - background-color: #b9bbbe -} - -.table-active, -.table-active>th, -.table-active>td { - background-color: rgba(0, 0, 0, .075) -} - -.table-hover .table-active:hover { - background-color: rgba(0, 0, 0, .075) -} - -.table-hover .table-active:hover>td, -.table-hover .table-active:hover>th { - background-color: rgba(0, 0, 0, .075) -} - -.table .thead-dark th { - color: #fff; - background-color: #343a40; - border-color: #454d55 -} - -.table .thead-light th { - color: #495057; - background-color: #e9ecef; - border-color: #dee2e6 -} - -.table-dark { - color: #fff; - background-color: #343a40 -} - -.table-dark th, -.table-dark td, -.table-dark thead th { - border-color: #454d55 -} - -.table-dark.table-bordered { - border: 0 -} - -.table-dark.table-striped tbody tr:nth-of-type(odd) { - background-color: rgba(255, 255, 255, .05) -} - -.table-dark.table-hover tbody tr:hover { - color: #fff; - background-color: rgba(255, 255, 255, .075) -} - -@media(max-width: 575.98px) { - .table-responsive-sm { - display: block; - width: 100%; - overflow-x: auto; - -webkit-overflow-scrolling: touch - } - - .table-responsive-sm>.table-bordered { - border: 0 - } -} - -@media(max-width: 767.98px) { - .table-responsive-md { - display: block; - width: 100%; - overflow-x: auto; - -webkit-overflow-scrolling: touch - } - - .table-responsive-md>.table-bordered { - border: 0 - } -} - -@media(max-width: 991.98px) { - .table-responsive-lg { - display: block; - width: 100%; - overflow-x: auto; - -webkit-overflow-scrolling: touch - } - - .table-responsive-lg>.table-bordered { - border: 0 - } -} - -@media(max-width: 1199.98px) { - .table-responsive-xl { - display: block; - width: 100%; - overflow-x: auto; - -webkit-overflow-scrolling: touch - } - - .table-responsive-xl>.table-bordered { - border: 0 - } -} - -.table-responsive { - display: block; - width: 100%; - overflow-x: auto; - -webkit-overflow-scrolling: touch -} - -.table-responsive>.table-bordered { - border: 0 -} - -.form-control { - display: block; - width: 100%; - height: calc(1.5em + 0.75rem + 2px); - padding: .375rem .75rem; - font-size: 1rem; - font-weight: 400; - line-height: 1.5; - color: #495057; - background-color: #fff; - background-clip: padding-box; - border: 1px solid #ced4da; - border-radius: .25rem; - -webkit-transition: border-color .15s ease-in-out, -webkit-box-shadow .15s ease-in-out; - transition: border-color .15s ease-in-out, -webkit-box-shadow .15s ease-in-out; - transition: border-color .15s ease-in-out, box-shadow .15s ease-in-out; - transition: border-color .15s ease-in-out, box-shadow .15s ease-in-out, -webkit-box-shadow .15s ease-in-out -} - -@media(prefers-reduced-motion: reduce) { - .form-control { - -webkit-transition: none; - transition: none - } -} - -.form-control::-ms-expand { - background-color: rgba(0, 0, 0, 0); - border: 0 -} - -.form-control:focus { - color: #495057; - background-color: #fff; - border-color: #80bdff; - outline: 0; - -webkit-box-shadow: 0 0 0 .2rem rgba(0, 123, 255, .25); - box-shadow: 0 0 0 .2rem rgba(0, 123, 255, .25) -} - -.form-control::-webkit-input-placeholder { - color: #6c757d; - opacity: 1 -} - -.form-control::-moz-placeholder { - color: #6c757d; - opacity: 1 -} - -.form-control:-ms-input-placeholder { - color: #6c757d; - opacity: 1 -} - -.form-control::-ms-input-placeholder { - color: #6c757d; - opacity: 1 -} - -.form-control::placeholder { - color: #6c757d; - opacity: 1 -} - -.form-control:disabled, -.form-control[readonly] { - background-color: #e9ecef; - opacity: 1 -} - -input[type=date].form-control, -input[type=time].form-control, -input[type=datetime-local].form-control, -input[type=month].form-control { - -webkit-appearance: none; - -moz-appearance: none; - appearance: none -} - -select.form-control:-moz-focusring { - color: rgba(0, 0, 0, 0); - text-shadow: 0 0 0 #495057 -} - -select.form-control:focus::-ms-value { - color: #495057; - background-color: #fff -} - -.form-control-file, -.form-control-range { - display: block; - width: 100% -} - -.col-form-label { - padding-top: calc(0.375rem + 1px); - padding-bottom: calc(0.375rem + 1px); - margin-bottom: 0; - font-size: inherit; - line-height: 1.5 -} - -.col-form-label-lg { - padding-top: calc(0.5rem + 1px); - padding-bottom: calc(0.5rem + 1px); - font-size: 1.25rem; - line-height: 1.5 -} - -.col-form-label-sm { - padding-top: calc(0.25rem + 1px); - padding-bottom: calc(0.25rem + 1px); - font-size: 0.875rem; - line-height: 1.5 -} - -.form-control-plaintext { - display: block; - width: 100%; - padding: .375rem 0; - margin-bottom: 0; - font-size: 1rem; - line-height: 1.5; - color: #212529; - background-color: rgba(0, 0, 0, 0); - border: solid rgba(0, 0, 0, 0); - border-width: 1px 0 -} - -.form-control-plaintext.form-control-sm, -.form-control-plaintext.form-control-lg { - padding-right: 0; - padding-left: 0 -} - -.form-control-sm { - height: calc(1.5em + 0.5rem + 2px); - padding: .25rem .5rem; - font-size: 0.875rem; - line-height: 1.5; - border-radius: .2rem -} - -.form-control-lg { - height: calc(1.5em + 1rem + 2px); - padding: .5rem 1rem; - font-size: 1.25rem; - line-height: 1.5; - border-radius: .3rem -} - -select.form-control[size], -select.form-control[multiple] { - height: auto -} - -textarea.form-control { - height: auto -} - -.form-group { - margin-bottom: 1rem -} - -.form-text { - display: block; - margin-top: .25rem -} - -.form-row { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -ms-flex-wrap: wrap; - flex-wrap: wrap; - margin-right: -5px; - margin-left: -5px -} - -.form-row>.col, -.form-row>[class*=col-] { - padding-right: 5px; - padding-left: 5px -} - -.form-check { - position: relative; - display: block; - padding-left: 1.25rem -} - -.form-check-input { - position: absolute; - margin-top: .3rem; - margin-left: -1.25rem -} - -.form-check-input[disabled]~.form-check-label, -.form-check-input:disabled~.form-check-label { - color: #6c757d -} - -.form-check-label { - margin-bottom: 0 -} - -.form-check-inline { - display: -webkit-inline-box; - display: -ms-inline-flexbox; - display: inline-flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - padding-left: 0; - margin-right: .75rem -} - -.form-check-inline .form-check-input { - position: static; - margin-top: 0; - margin-right: .3125rem; - margin-left: 0 -} - -.valid-feedback { - display: none; - width: 100%; - margin-top: .25rem; - font-size: 80%; - color: #28a745 -} - -.valid-tooltip { - position: absolute; - top: 100%; - left: 0; - z-index: 5; - display: none; - max-width: 100%; - padding: .25rem .5rem; - margin-top: .1rem; - font-size: 0.875rem; - line-height: 1.5; - color: #fff; - background-color: rgba(40, 167, 69, .9); - border-radius: .25rem -} - -.form-row>.col>.valid-tooltip, -.form-row>[class*=col-]>.valid-tooltip { - left: 5px -} - -.was-validated :valid~.valid-feedback, -.was-validated :valid~.valid-tooltip, -.is-valid~.valid-feedback, -.is-valid~.valid-tooltip { - display: block -} - -.was-validated .form-control:valid, -.form-control.is-valid { - border-color: #28a745; - padding-right: calc(1.5em + 0.75rem) !important; - background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e"); - background-repeat: no-repeat; - background-position: right calc(0.375em + 0.1875rem) center; - background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem) -} - -.was-validated .form-control:valid:focus, -.form-control.is-valid:focus { - border-color: #28a745; - -webkit-box-shadow: 0 0 0 .2rem rgba(40, 167, 69, .25); - box-shadow: 0 0 0 .2rem rgba(40, 167, 69, .25) -} - -.was-validated select.form-control:valid, -select.form-control.is-valid { - padding-right: 3rem !important; - background-position: right 1.5rem center -} - -.was-validated textarea.form-control:valid, -textarea.form-control.is-valid { - padding-right: calc(1.5em + 0.75rem); - background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem) -} - -.was-validated .custom-select:valid, -.custom-select.is-valid { - border-color: #28a745; - padding-right: calc(0.75em + 2.3125rem) !important; - background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") right .75rem center/8px 10px no-repeat, #fff url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e") center right 1.75rem/calc(0.75em + 0.375rem) calc(0.75em + 0.375rem) no-repeat -} - -.was-validated .custom-select:valid:focus, -.custom-select.is-valid:focus { - border-color: #28a745; - -webkit-box-shadow: 0 0 0 .2rem rgba(40, 167, 69, .25); - box-shadow: 0 0 0 .2rem rgba(40, 167, 69, .25) -} - -.was-validated .form-check-input:valid~.form-check-label, -.form-check-input.is-valid~.form-check-label { - color: #28a745 -} - -.was-validated .form-check-input:valid~.valid-feedback, -.was-validated .form-check-input:valid~.valid-tooltip, -.form-check-input.is-valid~.valid-feedback, -.form-check-input.is-valid~.valid-tooltip { - display: block -} - -.was-validated .custom-control-input:valid~.custom-control-label, -.custom-control-input.is-valid~.custom-control-label { - color: #28a745 -} - -.was-validated .custom-control-input:valid~.custom-control-label::before, -.custom-control-input.is-valid~.custom-control-label::before { - border-color: #28a745 -} - -.was-validated .custom-control-input:valid:checked~.custom-control-label::before, -.custom-control-input.is-valid:checked~.custom-control-label::before { - border-color: #34ce57; - background-color: #34ce57 -} - -.was-validated .custom-control-input:valid:focus~.custom-control-label::before, -.custom-control-input.is-valid:focus~.custom-control-label::before { - -webkit-box-shadow: 0 0 0 .2rem rgba(40, 167, 69, .25); - box-shadow: 0 0 0 .2rem rgba(40, 167, 69, .25) -} - -.was-validated .custom-control-input:valid:focus:not(:checked)~.custom-control-label::before, -.custom-control-input.is-valid:focus:not(:checked)~.custom-control-label::before { - border-color: #28a745 -} - -.was-validated .custom-file-input:valid~.custom-file-label, -.custom-file-input.is-valid~.custom-file-label { - border-color: #28a745 -} - -.was-validated .custom-file-input:valid:focus~.custom-file-label, -.custom-file-input.is-valid:focus~.custom-file-label { - border-color: #28a745; - -webkit-box-shadow: 0 0 0 .2rem rgba(40, 167, 69, .25); - box-shadow: 0 0 0 .2rem rgba(40, 167, 69, .25) -} - -.invalid-feedback { - display: none; - width: 100%; - margin-top: .25rem; - font-size: 80%; - color: #dc3545 -} - -.invalid-tooltip { - position: absolute; - top: 100%; - left: 0; - z-index: 5; - display: none; - max-width: 100%; - padding: .25rem .5rem; - margin-top: .1rem; - font-size: 0.875rem; - line-height: 1.5; - color: #fff; - background-color: rgba(220, 53, 69, .9); - border-radius: .25rem -} - -.form-row>.col>.invalid-tooltip, -.form-row>[class*=col-]>.invalid-tooltip { - left: 5px -} - -.was-validated :invalid~.invalid-feedback, -.was-validated :invalid~.invalid-tooltip, -.is-invalid~.invalid-feedback, -.is-invalid~.invalid-tooltip { - display: block -} - -.was-validated .form-control:invalid, -.form-control.is-invalid { - border-color: #dc3545; - padding-right: calc(1.5em + 0.75rem) !important; - background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e"); - background-repeat: no-repeat; - background-position: right calc(0.375em + 0.1875rem) center; - background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem) -} - -.was-validated .form-control:invalid:focus, -.form-control.is-invalid:focus { - border-color: #dc3545; - -webkit-box-shadow: 0 0 0 .2rem rgba(220, 53, 69, .25); - box-shadow: 0 0 0 .2rem rgba(220, 53, 69, .25) -} - -.was-validated select.form-control:invalid, -select.form-control.is-invalid { - padding-right: 3rem !important; - background-position: right 1.5rem center -} - -.was-validated textarea.form-control:invalid, -textarea.form-control.is-invalid { - padding-right: calc(1.5em + 0.75rem); - background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem) -} - -.was-validated .custom-select:invalid, -.custom-select.is-invalid { - border-color: #dc3545; - padding-right: calc(0.75em + 2.3125rem) !important; - background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") right .75rem center/8px 10px no-repeat, #fff url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e") center right 1.75rem/calc(0.75em + 0.375rem) calc(0.75em + 0.375rem) no-repeat -} - -.was-validated .custom-select:invalid:focus, -.custom-select.is-invalid:focus { - border-color: #dc3545; - -webkit-box-shadow: 0 0 0 .2rem rgba(220, 53, 69, .25); - box-shadow: 0 0 0 .2rem rgba(220, 53, 69, .25) -} - -.was-validated .form-check-input:invalid~.form-check-label, -.form-check-input.is-invalid~.form-check-label { - color: #dc3545 -} - -.was-validated .form-check-input:invalid~.invalid-feedback, -.was-validated .form-check-input:invalid~.invalid-tooltip, -.form-check-input.is-invalid~.invalid-feedback, -.form-check-input.is-invalid~.invalid-tooltip { - display: block -} - -.was-validated .custom-control-input:invalid~.custom-control-label, -.custom-control-input.is-invalid~.custom-control-label { - color: #dc3545 -} - -.was-validated .custom-control-input:invalid~.custom-control-label::before, -.custom-control-input.is-invalid~.custom-control-label::before { - border-color: #dc3545 -} - -.was-validated .custom-control-input:invalid:checked~.custom-control-label::before, -.custom-control-input.is-invalid:checked~.custom-control-label::before { - border-color: #e4606d; - background-color: #e4606d -} - -.was-validated .custom-control-input:invalid:focus~.custom-control-label::before, -.custom-control-input.is-invalid:focus~.custom-control-label::before { - -webkit-box-shadow: 0 0 0 .2rem rgba(220, 53, 69, .25); - box-shadow: 0 0 0 .2rem rgba(220, 53, 69, .25) -} - -.was-validated .custom-control-input:invalid:focus:not(:checked)~.custom-control-label::before, -.custom-control-input.is-invalid:focus:not(:checked)~.custom-control-label::before { - border-color: #dc3545 -} - -.was-validated .custom-file-input:invalid~.custom-file-label, -.custom-file-input.is-invalid~.custom-file-label { - border-color: #dc3545 -} - -.was-validated .custom-file-input:invalid:focus~.custom-file-label, -.custom-file-input.is-invalid:focus~.custom-file-label { - border-color: #dc3545; - -webkit-box-shadow: 0 0 0 .2rem rgba(220, 53, 69, .25); - box-shadow: 0 0 0 .2rem rgba(220, 53, 69, .25) -} - -.form-inline { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-flow: row wrap; - flex-flow: row wrap; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center -} - -.form-inline .form-check { - width: 100% -} - -@media(min-width: 576px) { - .form-inline label { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; - margin-bottom: 0 - } - - .form-inline .form-group { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-flow: row wrap; - flex-flow: row wrap; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - margin-bottom: 0 - } - - .form-inline .form-control { - display: inline-block; - width: auto; - vertical-align: middle - } - - .form-inline .form-control-plaintext { - display: inline-block - } - - .form-inline .input-group, - .form-inline .custom-select { - width: auto - } - - .form-inline .form-check { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; - width: auto; - padding-left: 0 - } - - .form-inline .form-check-input { - position: relative; - -ms-flex-negative: 0; - flex-shrink: 0; - margin-top: 0; - margin-right: .25rem; - margin-left: 0 - } - - .form-inline .custom-control { - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center - } - - .form-inline .custom-control-label { - margin-bottom: 0 - } -} - -.btn { - display: inline-block; - font-weight: 400; - color: #212529; - text-align: center; - vertical-align: middle; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - background-color: rgba(0, 0, 0, 0); - border: 1px solid rgba(0, 0, 0, 0); - padding: .375rem .75rem; - font-size: 1rem; - line-height: 1.5; - border-radius: .25rem; - -webkit-transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, -webkit-box-shadow .15s ease-in-out; - transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, -webkit-box-shadow .15s ease-in-out; - transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out; - transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out, -webkit-box-shadow .15s ease-in-out -} - -@media(prefers-reduced-motion: reduce) { - .btn { - -webkit-transition: none; - transition: none - } -} - -.btn:hover { - color: #212529; - text-decoration: none -} - -.btn:focus, -.btn.focus { - outline: 0; - -webkit-box-shadow: 0 0 0 .2rem rgba(0, 123, 255, .25); - box-shadow: 0 0 0 .2rem rgba(0, 123, 255, .25) -} - -.btn.disabled, -.btn:disabled { - opacity: .65 -} - -.btn:not(:disabled):not(.disabled) { - cursor: pointer -} - -a.btn.disabled, -fieldset:disabled a.btn { - pointer-events: none -} - -.btn-primary { - color: #fff; - background-color: #007bff; - border-color: #007bff -} - -.btn-primary:hover { - color: #fff; - background-color: #0069d9; - border-color: #0062cc -} - -.btn-primary:focus, -.btn-primary.focus { - color: #fff; - background-color: #0069d9; - border-color: #0062cc; - -webkit-box-shadow: 0 0 0 .2rem rgba(38, 143, 255, .5); - box-shadow: 0 0 0 .2rem rgba(38, 143, 255, .5) -} - -.btn-primary.disabled, -.btn-primary:disabled { - color: #fff; - background-color: #007bff; - border-color: #007bff -} - -.btn-primary:not(:disabled):not(.disabled):active, -.btn-primary:not(:disabled):not(.disabled).active, -.show>.btn-primary.dropdown-toggle { - color: #fff; - background-color: #0062cc; - border-color: #005cbf -} - -.btn-primary:not(:disabled):not(.disabled):active:focus, -.btn-primary:not(:disabled):not(.disabled).active:focus, -.show>.btn-primary.dropdown-toggle:focus { - -webkit-box-shadow: 0 0 0 .2rem rgba(38, 143, 255, .5); - box-shadow: 0 0 0 .2rem rgba(38, 143, 255, .5) -} - -.btn-secondary { - color: #fff; - background-color: #6c757d; - border-color: #6c757d -} - -.btn-secondary:hover { - color: #fff; - background-color: #5a6268; - border-color: #545b62 -} - -.btn-secondary:focus, -.btn-secondary.focus { - color: #fff; - background-color: #5a6268; - border-color: #545b62; - -webkit-box-shadow: 0 0 0 .2rem rgba(130, 138, 145, .5); - box-shadow: 0 0 0 .2rem rgba(130, 138, 145, .5) -} - -.btn-secondary.disabled, -.btn-secondary:disabled { - color: #fff; - background-color: #6c757d; - border-color: #6c757d -} - -.btn-secondary:not(:disabled):not(.disabled):active, -.btn-secondary:not(:disabled):not(.disabled).active, -.show>.btn-secondary.dropdown-toggle { - color: #fff; - background-color: #545b62; - border-color: #4e555b -} - -.btn-secondary:not(:disabled):not(.disabled):active:focus, -.btn-secondary:not(:disabled):not(.disabled).active:focus, -.show>.btn-secondary.dropdown-toggle:focus { - -webkit-box-shadow: 0 0 0 .2rem rgba(130, 138, 145, .5); - box-shadow: 0 0 0 .2rem rgba(130, 138, 145, .5) -} - -.btn-success { - color: #fff; - background-color: #28a745; - border-color: #28a745 -} - -.btn-success:hover { - color: #fff; - background-color: #218838; - border-color: #1e7e34 -} - -.btn-success:focus, -.btn-success.focus { - color: #fff; - background-color: #218838; - border-color: #1e7e34; - -webkit-box-shadow: 0 0 0 .2rem rgba(72, 180, 97, .5); - box-shadow: 0 0 0 .2rem rgba(72, 180, 97, .5) -} - -.btn-success.disabled, -.btn-success:disabled { - color: #fff; - background-color: #28a745; - border-color: #28a745 -} - -.btn-success:not(:disabled):not(.disabled):active, -.btn-success:not(:disabled):not(.disabled).active, -.show>.btn-success.dropdown-toggle { - color: #fff; - background-color: #1e7e34; - border-color: #1c7430 -} - -.btn-success:not(:disabled):not(.disabled):active:focus, -.btn-success:not(:disabled):not(.disabled).active:focus, -.show>.btn-success.dropdown-toggle:focus { - -webkit-box-shadow: 0 0 0 .2rem rgba(72, 180, 97, .5); - box-shadow: 0 0 0 .2rem rgba(72, 180, 97, .5) -} - -.btn-info { - color: #fff; - background-color: #17a2b8; - border-color: #17a2b8 -} - -.btn-info:hover { - color: #fff; - background-color: #138496; - border-color: #117a8b -} - -.btn-info:focus, -.btn-info.focus { - color: #fff; - background-color: #138496; - border-color: #117a8b; - -webkit-box-shadow: 0 0 0 .2rem rgba(58, 176, 195, .5); - box-shadow: 0 0 0 .2rem rgba(58, 176, 195, .5) -} - -.btn-info.disabled, -.btn-info:disabled { - color: #fff; - background-color: #17a2b8; - border-color: #17a2b8 -} - -.btn-info:not(:disabled):not(.disabled):active, -.btn-info:not(:disabled):not(.disabled).active, -.show>.btn-info.dropdown-toggle { - color: #fff; - background-color: #117a8b; - border-color: #10707f -} - -.btn-info:not(:disabled):not(.disabled):active:focus, -.btn-info:not(:disabled):not(.disabled).active:focus, -.show>.btn-info.dropdown-toggle:focus { - -webkit-box-shadow: 0 0 0 .2rem rgba(58, 176, 195, .5); - box-shadow: 0 0 0 .2rem rgba(58, 176, 195, .5) -} - -.btn-warning { - color: #212529; - background-color: #ffc107; - border-color: #ffc107 -} - -.btn-warning:hover { - color: #212529; - background-color: #e0a800; - border-color: #d39e00 -} - -.btn-warning:focus, -.btn-warning.focus { - color: #212529; - background-color: #e0a800; - border-color: #d39e00; - -webkit-box-shadow: 0 0 0 .2rem rgba(222, 170, 12, .5); - box-shadow: 0 0 0 .2rem rgba(222, 170, 12, .5) -} - -.btn-warning.disabled, -.btn-warning:disabled { - color: #212529; - background-color: #ffc107; - border-color: #ffc107 -} - -.btn-warning:not(:disabled):not(.disabled):active, -.btn-warning:not(:disabled):not(.disabled).active, -.show>.btn-warning.dropdown-toggle { - color: #212529; - background-color: #d39e00; - border-color: #c69500 -} - -.btn-warning:not(:disabled):not(.disabled):active:focus, -.btn-warning:not(:disabled):not(.disabled).active:focus, -.show>.btn-warning.dropdown-toggle:focus { - -webkit-box-shadow: 0 0 0 .2rem rgba(222, 170, 12, .5); - box-shadow: 0 0 0 .2rem rgba(222, 170, 12, .5) -} - -.btn-danger { - color: #fff; - background-color: #dc3545; - border-color: #dc3545 -} - -.btn-danger:hover { - color: #fff; - background-color: #c82333; - border-color: #bd2130 -} - -.btn-danger:focus, -.btn-danger.focus { - color: #fff; - background-color: #c82333; - border-color: #bd2130; - -webkit-box-shadow: 0 0 0 .2rem rgba(225, 83, 97, .5); - box-shadow: 0 0 0 .2rem rgba(225, 83, 97, .5) -} - -.btn-danger.disabled, -.btn-danger:disabled { - color: #fff; - background-color: #dc3545; - border-color: #dc3545 -} - -.btn-danger:not(:disabled):not(.disabled):active, -.btn-danger:not(:disabled):not(.disabled).active, -.show>.btn-danger.dropdown-toggle { - color: #fff; - background-color: #bd2130; - border-color: #b21f2d -} - -.btn-danger:not(:disabled):not(.disabled):active:focus, -.btn-danger:not(:disabled):not(.disabled).active:focus, -.show>.btn-danger.dropdown-toggle:focus { - -webkit-box-shadow: 0 0 0 .2rem rgba(225, 83, 97, .5); - box-shadow: 0 0 0 .2rem rgba(225, 83, 97, .5) -} - -.btn-light { - color: #212529; - background-color: #f8f9fa; - border-color: #f8f9fa -} - -.btn-light:hover { - color: #212529; - background-color: #e2e6ea; - border-color: #dae0e5 -} - -.btn-light:focus, -.btn-light.focus { - color: #212529; - background-color: #e2e6ea; - border-color: #dae0e5; - -webkit-box-shadow: 0 0 0 .2rem rgba(216, 217, 219, .5); - box-shadow: 0 0 0 .2rem rgba(216, 217, 219, .5) -} - -.btn-light.disabled, -.btn-light:disabled { - color: #212529; - background-color: #f8f9fa; - border-color: #f8f9fa -} - -.btn-light:not(:disabled):not(.disabled):active, -.btn-light:not(:disabled):not(.disabled).active, -.show>.btn-light.dropdown-toggle { - color: #212529; - background-color: #dae0e5; - border-color: #d3d9df -} - -.btn-light:not(:disabled):not(.disabled):active:focus, -.btn-light:not(:disabled):not(.disabled).active:focus, -.show>.btn-light.dropdown-toggle:focus { - -webkit-box-shadow: 0 0 0 .2rem rgba(216, 217, 219, .5); - box-shadow: 0 0 0 .2rem rgba(216, 217, 219, .5) -} - -.btn-dark { - color: #fff; - background-color: #343a40; - border-color: #343a40 -} - -.btn-dark:hover { - color: #fff; - background-color: #23272b; - border-color: #1d2124 -} - -.btn-dark:focus, -.btn-dark.focus { - color: #fff; - background-color: #23272b; - border-color: #1d2124; - -webkit-box-shadow: 0 0 0 .2rem rgba(82, 88, 93, .5); - box-shadow: 0 0 0 .2rem rgba(82, 88, 93, .5) -} - -.btn-dark.disabled, -.btn-dark:disabled { - color: #fff; - background-color: #343a40; - border-color: #343a40 -} - -.btn-dark:not(:disabled):not(.disabled):active, -.btn-dark:not(:disabled):not(.disabled).active, -.show>.btn-dark.dropdown-toggle { - color: #fff; - background-color: #1d2124; - border-color: #171a1d -} - -.btn-dark:not(:disabled):not(.disabled):active:focus, -.btn-dark:not(:disabled):not(.disabled).active:focus, -.show>.btn-dark.dropdown-toggle:focus { - -webkit-box-shadow: 0 0 0 .2rem rgba(82, 88, 93, .5); - box-shadow: 0 0 0 .2rem rgba(82, 88, 93, .5) -} - -.btn-outline-primary { - color: #007bff; - border-color: #007bff -} - -.btn-outline-primary:hover { - color: #fff; - background-color: #007bff; - border-color: #007bff -} - -.btn-outline-primary:focus, -.btn-outline-primary.focus { - -webkit-box-shadow: 0 0 0 .2rem rgba(0, 123, 255, .5); - box-shadow: 0 0 0 .2rem rgba(0, 123, 255, .5) -} - -.btn-outline-primary.disabled, -.btn-outline-primary:disabled { - color: #007bff; - background-color: rgba(0, 0, 0, 0) -} - -.btn-outline-primary:not(:disabled):not(.disabled):active, -.btn-outline-primary:not(:disabled):not(.disabled).active, -.show>.btn-outline-primary.dropdown-toggle { - color: #fff; - background-color: #007bff; - border-color: #007bff -} - -.btn-outline-primary:not(:disabled):not(.disabled):active:focus, -.btn-outline-primary:not(:disabled):not(.disabled).active:focus, -.show>.btn-outline-primary.dropdown-toggle:focus { - -webkit-box-shadow: 0 0 0 .2rem rgba(0, 123, 255, .5); - box-shadow: 0 0 0 .2rem rgba(0, 123, 255, .5) -} - -.btn-outline-secondary { - color: #6c757d; - border-color: #6c757d -} - -.btn-outline-secondary:hover { - color: #fff; - background-color: #6c757d; - border-color: #6c757d -} - -.btn-outline-secondary:focus, -.btn-outline-secondary.focus { - -webkit-box-shadow: 0 0 0 .2rem rgba(108, 117, 125, .5); - box-shadow: 0 0 0 .2rem rgba(108, 117, 125, .5) -} - -.btn-outline-secondary.disabled, -.btn-outline-secondary:disabled { - color: #6c757d; - background-color: rgba(0, 0, 0, 0) -} - -.btn-outline-secondary:not(:disabled):not(.disabled):active, -.btn-outline-secondary:not(:disabled):not(.disabled).active, -.show>.btn-outline-secondary.dropdown-toggle { - color: #fff; - background-color: #6c757d; - border-color: #6c757d -} - -.btn-outline-secondary:not(:disabled):not(.disabled):active:focus, -.btn-outline-secondary:not(:disabled):not(.disabled).active:focus, -.show>.btn-outline-secondary.dropdown-toggle:focus { - -webkit-box-shadow: 0 0 0 .2rem rgba(108, 117, 125, .5); - box-shadow: 0 0 0 .2rem rgba(108, 117, 125, .5) -} - -.btn-outline-success { - color: #28a745; - border-color: #28a745 -} - -.btn-outline-success:hover { - color: #fff; - background-color: #28a745; - border-color: #28a745 -} - -.btn-outline-success:focus, -.btn-outline-success.focus { - -webkit-box-shadow: 0 0 0 .2rem rgba(40, 167, 69, .5); - box-shadow: 0 0 0 .2rem rgba(40, 167, 69, .5) -} - -.btn-outline-success.disabled, -.btn-outline-success:disabled { - color: #28a745; - background-color: rgba(0, 0, 0, 0) -} - -.btn-outline-success:not(:disabled):not(.disabled):active, -.btn-outline-success:not(:disabled):not(.disabled).active, -.show>.btn-outline-success.dropdown-toggle { - color: #fff; - background-color: #28a745; - border-color: #28a745 -} - -.btn-outline-success:not(:disabled):not(.disabled):active:focus, -.btn-outline-success:not(:disabled):not(.disabled).active:focus, -.show>.btn-outline-success.dropdown-toggle:focus { - -webkit-box-shadow: 0 0 0 .2rem rgba(40, 167, 69, .5); - box-shadow: 0 0 0 .2rem rgba(40, 167, 69, .5) -} - -.btn-outline-info { - color: #17a2b8; - border-color: #17a2b8 -} - -.btn-outline-info:hover { - color: #fff; - background-color: #17a2b8; - border-color: #17a2b8 -} - -.btn-outline-info:focus, -.btn-outline-info.focus { - -webkit-box-shadow: 0 0 0 .2rem rgba(23, 162, 184, .5); - box-shadow: 0 0 0 .2rem rgba(23, 162, 184, .5) -} - -.btn-outline-info.disabled, -.btn-outline-info:disabled { - color: #17a2b8; - background-color: rgba(0, 0, 0, 0) -} - -.btn-outline-info:not(:disabled):not(.disabled):active, -.btn-outline-info:not(:disabled):not(.disabled).active, -.show>.btn-outline-info.dropdown-toggle { - color: #fff; - background-color: #17a2b8; - border-color: #17a2b8 -} - -.btn-outline-info:not(:disabled):not(.disabled):active:focus, -.btn-outline-info:not(:disabled):not(.disabled).active:focus, -.show>.btn-outline-info.dropdown-toggle:focus { - -webkit-box-shadow: 0 0 0 .2rem rgba(23, 162, 184, .5); - box-shadow: 0 0 0 .2rem rgba(23, 162, 184, .5) -} - -.btn-outline-warning { - color: #ffc107; - border-color: #ffc107 -} - -.btn-outline-warning:hover { - color: #212529; - background-color: #ffc107; - border-color: #ffc107 -} - -.btn-outline-warning:focus, -.btn-outline-warning.focus { - -webkit-box-shadow: 0 0 0 .2rem rgba(255, 193, 7, .5); - box-shadow: 0 0 0 .2rem rgba(255, 193, 7, .5) -} - -.btn-outline-warning.disabled, -.btn-outline-warning:disabled { - color: #ffc107; - background-color: rgba(0, 0, 0, 0) -} - -.btn-outline-warning:not(:disabled):not(.disabled):active, -.btn-outline-warning:not(:disabled):not(.disabled).active, -.show>.btn-outline-warning.dropdown-toggle { - color: #212529; - background-color: #ffc107; - border-color: #ffc107 -} - -.btn-outline-warning:not(:disabled):not(.disabled):active:focus, -.btn-outline-warning:not(:disabled):not(.disabled).active:focus, -.show>.btn-outline-warning.dropdown-toggle:focus { - -webkit-box-shadow: 0 0 0 .2rem rgba(255, 193, 7, .5); - box-shadow: 0 0 0 .2rem rgba(255, 193, 7, .5) -} - -.btn-outline-danger { - color: #dc3545; - border-color: #dc3545 -} - -.btn-outline-danger:hover { - color: #fff; - background-color: #dc3545; - border-color: #dc3545 -} - -.btn-outline-danger:focus, -.btn-outline-danger.focus { - -webkit-box-shadow: 0 0 0 .2rem rgba(220, 53, 69, .5); - box-shadow: 0 0 0 .2rem rgba(220, 53, 69, .5) -} - -.btn-outline-danger.disabled, -.btn-outline-danger:disabled { - color: #dc3545; - background-color: rgba(0, 0, 0, 0) -} - -.btn-outline-danger:not(:disabled):not(.disabled):active, -.btn-outline-danger:not(:disabled):not(.disabled).active, -.show>.btn-outline-danger.dropdown-toggle { - color: #fff; - background-color: #dc3545; - border-color: #dc3545 -} - -.btn-outline-danger:not(:disabled):not(.disabled):active:focus, -.btn-outline-danger:not(:disabled):not(.disabled).active:focus, -.show>.btn-outline-danger.dropdown-toggle:focus { - -webkit-box-shadow: 0 0 0 .2rem rgba(220, 53, 69, .5); - box-shadow: 0 0 0 .2rem rgba(220, 53, 69, .5) -} - -.btn-outline-light { - color: #f8f9fa; - border-color: #f8f9fa -} - -.btn-outline-light:hover { - color: #212529; - background-color: #f8f9fa; - border-color: #f8f9fa -} - -.btn-outline-light:focus, -.btn-outline-light.focus { - -webkit-box-shadow: 0 0 0 .2rem rgba(248, 249, 250, .5); - box-shadow: 0 0 0 .2rem rgba(248, 249, 250, .5) -} - -.btn-outline-light.disabled, -.btn-outline-light:disabled { - color: #f8f9fa; - background-color: rgba(0, 0, 0, 0) -} - -.btn-outline-light:not(:disabled):not(.disabled):active, -.btn-outline-light:not(:disabled):not(.disabled).active, -.show>.btn-outline-light.dropdown-toggle { - color: #212529; - background-color: #f8f9fa; - border-color: #f8f9fa -} - -.btn-outline-light:not(:disabled):not(.disabled):active:focus, -.btn-outline-light:not(:disabled):not(.disabled).active:focus, -.show>.btn-outline-light.dropdown-toggle:focus { - -webkit-box-shadow: 0 0 0 .2rem rgba(248, 249, 250, .5); - box-shadow: 0 0 0 .2rem rgba(248, 249, 250, .5) -} - -.btn-outline-dark { - color: #343a40; - border-color: #343a40 -} - -.btn-outline-dark:hover { - color: #fff; - background-color: #343a40; - border-color: #343a40 -} - -.btn-outline-dark:focus, -.btn-outline-dark.focus { - -webkit-box-shadow: 0 0 0 .2rem rgba(52, 58, 64, .5); - box-shadow: 0 0 0 .2rem rgba(52, 58, 64, .5) -} - -.btn-outline-dark.disabled, -.btn-outline-dark:disabled { - color: #343a40; - background-color: rgba(0, 0, 0, 0) -} - -.btn-outline-dark:not(:disabled):not(.disabled):active, -.btn-outline-dark:not(:disabled):not(.disabled).active, -.show>.btn-outline-dark.dropdown-toggle { - color: #fff; - background-color: #343a40; - border-color: #343a40 -} - -.btn-outline-dark:not(:disabled):not(.disabled):active:focus, -.btn-outline-dark:not(:disabled):not(.disabled).active:focus, -.show>.btn-outline-dark.dropdown-toggle:focus { - -webkit-box-shadow: 0 0 0 .2rem rgba(52, 58, 64, .5); - box-shadow: 0 0 0 .2rem rgba(52, 58, 64, .5) -} - -.btn-link { - font-weight: 400; - color: #007bff; - text-decoration: none -} - -.btn-link:hover { - color: #0056b3; - text-decoration: underline -} - -.btn-link:focus, -.btn-link.focus { - text-decoration: underline -} - -.btn-link:disabled, -.btn-link.disabled { - color: #6c757d; - pointer-events: none -} - -.btn-lg, -.btn-group-lg>.btn { - padding: .5rem 1rem; - font-size: 1.25rem; - line-height: 1.5; - border-radius: .3rem -} - -.btn-sm, -.btn-group-sm>.btn { - padding: .25rem .5rem; - font-size: 0.875rem; - line-height: 1.5; - border-radius: .2rem -} - -.btn-block { - display: block; - width: 100% -} - -.btn-block+.btn-block { - margin-top: .5rem -} - -input[type=submit].btn-block, -input[type=reset].btn-block, -input[type=button].btn-block { - width: 100% -} - -.fade { - -webkit-transition: opacity .15s linear; - transition: opacity .15s linear -} - -@media(prefers-reduced-motion: reduce) { - .fade { - -webkit-transition: none; - transition: none - } -} - -.fade:not(.show) { - opacity: 0 -} - -.collapse:not(.show) { - display: none -} - -.collapsing { - position: relative; - height: 0; - overflow: hidden; - -webkit-transition: height .35s ease; - transition: height .35s ease -} - -@media(prefers-reduced-motion: reduce) { - .collapsing { - -webkit-transition: none; - transition: none - } -} - -.dropup, -.dropright, -.dropdown, -.dropleft { - position: relative -} - -.dropdown-toggle { - white-space: nowrap -} - -.dropdown-toggle::after { - display: inline-block; - margin-left: .255em; - vertical-align: .255em; - content: ""; - border-top: .3em solid; - border-right: .3em solid rgba(0, 0, 0, 0); - border-bottom: 0; - border-left: .3em solid rgba(0, 0, 0, 0) -} - -.dropdown-toggle:empty::after { - margin-left: 0 -} - -.dropdown-menu { - position: absolute; - top: 100%; - left: 0; - z-index: 1000; - display: none; - float: left; - min-width: 10rem; - padding: .5rem 0; - margin: .125rem 0 0; - font-size: 1rem; - color: #212529; - text-align: left; - list-style: none; - background-color: #fff; - background-clip: padding-box; - border: 1px solid rgba(0, 0, 0, .15); - border-radius: .25rem -} - -.dropdown-menu-left { - right: auto; - left: 0 -} - -.dropdown-menu-right { - right: 0; - left: auto -} - -@media(min-width: 576px) { - .dropdown-menu-sm-left { - right: auto; - left: 0 - } - - .dropdown-menu-sm-right { - right: 0; - left: auto - } -} - -@media(min-width: 768px) { - .dropdown-menu-md-left { - right: auto; - left: 0 - } - - .dropdown-menu-md-right { - right: 0; - left: auto - } -} - -@media(min-width: 992px) { - .dropdown-menu-lg-left { - right: auto; - left: 0 - } - - .dropdown-menu-lg-right { - right: 0; - left: auto - } -} - -@media(min-width: 1200px) { - .dropdown-menu-xl-left { - right: auto; - left: 0 - } - - .dropdown-menu-xl-right { - right: 0; - left: auto - } -} - -.dropup .dropdown-menu { - top: auto; - bottom: 100%; - margin-top: 0; - margin-bottom: .125rem -} - -.dropup .dropdown-toggle::after { - display: inline-block; - margin-left: .255em; - vertical-align: .255em; - content: ""; - border-top: 0; - border-right: .3em solid rgba(0, 0, 0, 0); - border-bottom: .3em solid; - border-left: .3em solid rgba(0, 0, 0, 0) -} - -.dropup .dropdown-toggle:empty::after { - margin-left: 0 -} - -.dropright .dropdown-menu { - top: 0; - right: auto; - left: 100%; - margin-top: 0; - margin-left: .125rem -} - -.dropright .dropdown-toggle::after { - display: inline-block; - margin-left: .255em; - vertical-align: .255em; - content: ""; - border-top: .3em solid rgba(0, 0, 0, 0); - border-right: 0; - border-bottom: .3em solid rgba(0, 0, 0, 0); - border-left: .3em solid -} - -.dropright .dropdown-toggle:empty::after { - margin-left: 0 -} - -.dropright .dropdown-toggle::after { - vertical-align: 0 -} - -.dropleft .dropdown-menu { - top: 0; - right: 100%; - left: auto; - margin-top: 0; - margin-right: .125rem -} - -.dropleft .dropdown-toggle::after { - display: inline-block; - margin-left: .255em; - vertical-align: .255em; - content: "" -} - -.dropleft .dropdown-toggle::after { - display: none -} - -.dropleft .dropdown-toggle::before { - display: inline-block; - margin-right: .255em; - vertical-align: .255em; - content: ""; - border-top: .3em solid rgba(0, 0, 0, 0); - border-right: .3em solid; - border-bottom: .3em solid rgba(0, 0, 0, 0) -} - -.dropleft .dropdown-toggle:empty::after { - margin-left: 0 -} - -.dropleft .dropdown-toggle::before { - vertical-align: 0 -} - -.dropdown-menu[x-placement^=top], -.dropdown-menu[x-placement^=right], -.dropdown-menu[x-placement^=bottom], -.dropdown-menu[x-placement^=left] { - right: auto; - bottom: auto -} - -.dropdown-divider { - height: 0; - margin: .5rem 0; - overflow: hidden; - border-top: 1px solid #e9ecef -} - -.dropdown-item { - display: block; - width: 100%; - padding: .25rem 1.5rem; - clear: both; - font-weight: 400; - color: #212529; - text-align: inherit; - white-space: nowrap; - background-color: rgba(0, 0, 0, 0); - border: 0 -} - -.dropdown-item:hover, -.dropdown-item:focus { - color: #16181b; - text-decoration: none; - background-color: #e9ecef -} - -.dropdown-item.active, -.dropdown-item:active { - color: #fff; - text-decoration: none; - background-color: #007bff -} - -.dropdown-item.disabled, -.dropdown-item:disabled { - color: #adb5bd; - pointer-events: none; - background-color: rgba(0, 0, 0, 0) -} - -.dropdown-menu.show { - display: block -} - -.dropdown-header { - display: block; - padding: .5rem 1.5rem; - margin-bottom: 0; - font-size: 0.875rem; - color: #6c757d; - white-space: nowrap -} - -.dropdown-item-text { - display: block; - padding: .25rem 1.5rem; - color: #212529 -} - -.btn-group, -.btn-group-vertical { - position: relative; - display: -webkit-inline-box; - display: -ms-inline-flexbox; - display: inline-flex; - vertical-align: middle -} - -.btn-group>.btn, -.btn-group-vertical>.btn { - position: relative; - -webkit-box-flex: 1; - -ms-flex: 1 1 auto; - flex: 1 1 auto -} - -.btn-group>.btn:hover, -.btn-group-vertical>.btn:hover { - z-index: 1 -} - -.btn-group>.btn:focus, -.btn-group>.btn:active, -.btn-group>.btn.active, -.btn-group-vertical>.btn:focus, -.btn-group-vertical>.btn:active, -.btn-group-vertical>.btn.active { - z-index: 1 -} - -.btn-toolbar { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -ms-flex-wrap: wrap; - flex-wrap: wrap; - -webkit-box-pack: start; - -ms-flex-pack: start; - justify-content: flex-start -} - -.btn-toolbar .input-group { - width: auto -} - -.btn-group>.btn:not(:first-child), -.btn-group>.btn-group:not(:first-child) { - margin-left: -1px -} - -.btn-group>.btn:not(:last-child):not(.dropdown-toggle), -.btn-group>.btn-group:not(:last-child)>.btn { - border-top-right-radius: 0; - border-bottom-right-radius: 0 -} - -.btn-group>.btn:not(:first-child), -.btn-group>.btn-group:not(:first-child)>.btn { - border-top-left-radius: 0; - border-bottom-left-radius: 0 -} - -.dropdown-toggle-split { - padding-right: .5625rem; - padding-left: .5625rem -} - -.dropdown-toggle-split::after, -.dropup .dropdown-toggle-split::after, -.dropright .dropdown-toggle-split::after { - margin-left: 0 -} - -.dropleft .dropdown-toggle-split::before { - margin-right: 0 -} - -.btn-sm+.dropdown-toggle-split, -.btn-group-sm>.btn+.dropdown-toggle-split { - padding-right: .375rem; - padding-left: .375rem -} - -.btn-lg+.dropdown-toggle-split, -.btn-group-lg>.btn+.dropdown-toggle-split { - padding-right: .75rem; - padding-left: .75rem -} - -.btn-group-vertical { - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-align: start; - -ms-flex-align: start; - align-items: flex-start; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center -} - -.btn-group-vertical>.btn, -.btn-group-vertical>.btn-group { - width: 100% -} - -.btn-group-vertical>.btn:not(:first-child), -.btn-group-vertical>.btn-group:not(:first-child) { - margin-top: -1px -} - -.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle), -.btn-group-vertical>.btn-group:not(:last-child)>.btn { - border-bottom-right-radius: 0; - border-bottom-left-radius: 0 -} - -.btn-group-vertical>.btn:not(:first-child), -.btn-group-vertical>.btn-group:not(:first-child)>.btn { - border-top-left-radius: 0; - border-top-right-radius: 0 -} - -.btn-group-toggle>.btn, -.btn-group-toggle>.btn-group>.btn { - margin-bottom: 0 -} - -.btn-group-toggle>.btn input[type=radio], -.btn-group-toggle>.btn input[type=checkbox], -.btn-group-toggle>.btn-group>.btn input[type=radio], -.btn-group-toggle>.btn-group>.btn input[type=checkbox] { - position: absolute; - clip: rect(0, 0, 0, 0); - pointer-events: none -} - -.input-group { - position: relative; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -ms-flex-wrap: wrap; - flex-wrap: wrap; - -webkit-box-align: stretch; - -ms-flex-align: stretch; - align-items: stretch; - width: 100% -} - -.input-group>.form-control, -.input-group>.form-control-plaintext, -.input-group>.custom-select, -.input-group>.custom-file { - position: relative; - -webkit-box-flex: 1; - -ms-flex: 1 1 auto; - flex: 1 1 auto; - width: 1%; - min-width: 0; - margin-bottom: 0 -} - -.input-group>.form-control+.form-control, -.input-group>.form-control+.custom-select, -.input-group>.form-control+.custom-file, -.input-group>.form-control-plaintext+.form-control, -.input-group>.form-control-plaintext+.custom-select, -.input-group>.form-control-plaintext+.custom-file, -.input-group>.custom-select+.form-control, -.input-group>.custom-select+.custom-select, -.input-group>.custom-select+.custom-file, -.input-group>.custom-file+.form-control, -.input-group>.custom-file+.custom-select, -.input-group>.custom-file+.custom-file { - margin-left: -1px -} - -.input-group>.form-control:focus, -.input-group>.custom-select:focus, -.input-group>.custom-file .custom-file-input:focus~.custom-file-label { - z-index: 3 -} - -.input-group>.custom-file .custom-file-input:focus { - z-index: 4 -} - -.input-group>.form-control:not(:first-child), -.input-group>.custom-select:not(:first-child) { - border-top-left-radius: 0; - border-bottom-left-radius: 0 -} - -.input-group>.custom-file { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center -} - -.input-group>.custom-file:not(:last-child) .custom-file-label, -.input-group>.custom-file:not(:last-child) .custom-file-label::after { - border-top-right-radius: 0; - border-bottom-right-radius: 0 -} - -.input-group>.custom-file:not(:first-child) .custom-file-label { - border-top-left-radius: 0; - border-bottom-left-radius: 0 -} - -.input-group:not(.has-validation)>.form-control:not(:last-child), -.input-group:not(.has-validation)>.custom-select:not(:last-child), -.input-group:not(.has-validation)>.custom-file:not(:last-child) .custom-file-label, -.input-group:not(.has-validation)>.custom-file:not(:last-child) .custom-file-label::after { - border-top-right-radius: 0; - border-bottom-right-radius: 0 -} - -.input-group.has-validation>.form-control:nth-last-child(n+3), -.input-group.has-validation>.custom-select:nth-last-child(n+3), -.input-group.has-validation>.custom-file:nth-last-child(n+3) .custom-file-label, -.input-group.has-validation>.custom-file:nth-last-child(n+3) .custom-file-label::after { - border-top-right-radius: 0; - border-bottom-right-radius: 0 -} - -.input-group-prepend, -.input-group-append { - display: -webkit-box; - display: -ms-flexbox; - display: flex -} - -.input-group-prepend .btn, -.input-group-append .btn { - position: relative; - z-index: 2 -} - -.input-group-prepend .btn:focus, -.input-group-append .btn:focus { - z-index: 3 -} - -.input-group-prepend .btn+.btn, -.input-group-prepend .btn+.input-group-text, -.input-group-prepend .input-group-text+.input-group-text, -.input-group-prepend .input-group-text+.btn, -.input-group-append .btn+.btn, -.input-group-append .btn+.input-group-text, -.input-group-append .input-group-text+.input-group-text, -.input-group-append .input-group-text+.btn { - margin-left: -1px -} - -.input-group-prepend { - margin-right: -1px -} - -.input-group-append { - margin-left: -1px -} - -.input-group-text { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - padding: .375rem .75rem; - margin-bottom: 0; - font-size: 1rem; - font-weight: 400; - line-height: 1.5; - color: #495057; - text-align: center; - white-space: nowrap; - background-color: #e9ecef; - border: 1px solid #ced4da; - border-radius: .25rem -} - -.input-group-text input[type=radio], -.input-group-text input[type=checkbox] { - margin-top: 0 -} - -.input-group-lg>.form-control:not(textarea), -.input-group-lg>.custom-select { - height: calc(1.5em + 1rem + 2px) -} - -.input-group-lg>.form-control, -.input-group-lg>.custom-select, -.input-group-lg>.input-group-prepend>.input-group-text, -.input-group-lg>.input-group-append>.input-group-text, -.input-group-lg>.input-group-prepend>.btn, -.input-group-lg>.input-group-append>.btn { - padding: .5rem 1rem; - font-size: 1.25rem; - line-height: 1.5; - border-radius: .3rem -} - -.input-group-sm>.form-control:not(textarea), -.input-group-sm>.custom-select { - height: calc(1.5em + 0.5rem + 2px) -} - -.input-group-sm>.form-control, -.input-group-sm>.custom-select, -.input-group-sm>.input-group-prepend>.input-group-text, -.input-group-sm>.input-group-append>.input-group-text, -.input-group-sm>.input-group-prepend>.btn, -.input-group-sm>.input-group-append>.btn { - padding: .25rem .5rem; - font-size: 0.875rem; - line-height: 1.5; - border-radius: .2rem -} - -.input-group-lg>.custom-select, -.input-group-sm>.custom-select { - padding-right: 1.75rem -} - -.input-group>.input-group-prepend>.btn, -.input-group>.input-group-prepend>.input-group-text, -.input-group:not(.has-validation)>.input-group-append:not(:last-child)>.btn, -.input-group:not(.has-validation)>.input-group-append:not(:last-child)>.input-group-text, -.input-group.has-validation>.input-group-append:nth-last-child(n+3)>.btn, -.input-group.has-validation>.input-group-append:nth-last-child(n+3)>.input-group-text, -.input-group>.input-group-append:last-child>.btn:not(:last-child):not(.dropdown-toggle), -.input-group>.input-group-append:last-child>.input-group-text:not(:last-child) { - border-top-right-radius: 0; - border-bottom-right-radius: 0 -} - -.input-group>.input-group-append>.btn, -.input-group>.input-group-append>.input-group-text, -.input-group>.input-group-prepend:not(:first-child)>.btn, -.input-group>.input-group-prepend:not(:first-child)>.input-group-text, -.input-group>.input-group-prepend:first-child>.btn:not(:first-child), -.input-group>.input-group-prepend:first-child>.input-group-text:not(:first-child) { - border-top-left-radius: 0; - border-bottom-left-radius: 0 -} - -.custom-control { - position: relative; - z-index: 1; - display: block; - min-height: 1.5rem; - padding-left: 1.5rem; - -webkit-print-color-adjust: exact; - color-adjust: exact -} - -.custom-control-inline { - display: -webkit-inline-box; - display: -ms-inline-flexbox; - display: inline-flex; - margin-right: 1rem -} - -.custom-control-input { - position: absolute; - left: 0; - z-index: -1; - width: 1rem; - height: 1.25rem; - opacity: 0 -} - -.custom-control-input:checked~.custom-control-label::before { - color: #fff; - border-color: #007bff; - background-color: #007bff -} - -.custom-control-input:focus~.custom-control-label::before { - -webkit-box-shadow: 0 0 0 .2rem rgba(0, 123, 255, .25); - box-shadow: 0 0 0 .2rem rgba(0, 123, 255, .25) -} - -.custom-control-input:focus:not(:checked)~.custom-control-label::before { - border-color: #80bdff -} - -.custom-control-input:not(:disabled):active~.custom-control-label::before { - color: #fff; - background-color: #b3d7ff; - border-color: #b3d7ff -} - -.custom-control-input[disabled]~.custom-control-label, -.custom-control-input:disabled~.custom-control-label { - color: #6c757d -} - -.custom-control-input[disabled]~.custom-control-label::before, -.custom-control-input:disabled~.custom-control-label::before { - background-color: #e9ecef -} - -.custom-control-label { - position: relative; - margin-bottom: 0; - vertical-align: top -} - -.custom-control-label::before { - position: absolute; - top: .25rem; - left: -1.5rem; - display: block; - width: 1rem; - height: 1rem; - pointer-events: none; - content: ""; - background-color: #fff; - border: #adb5bd solid 1px -} - -.custom-control-label::after { - position: absolute; - top: .25rem; - left: -1.5rem; - display: block; - width: 1rem; - height: 1rem; - content: ""; - background: 50%/50% 50% no-repeat -} - -.custom-checkbox .custom-control-label::before { - border-radius: .25rem -} - -.custom-checkbox .custom-control-input:checked~.custom-control-label::after { - background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3e%3c/svg%3e") -} - -.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::before { - border-color: #007bff; - background-color: #007bff -} - -.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::after { - background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='4' viewBox='0 0 4 4'%3e%3cpath stroke='%23fff' d='M0 2h4'/%3e%3c/svg%3e") -} - -.custom-checkbox .custom-control-input:disabled:checked~.custom-control-label::before { - background-color: rgba(0, 123, 255, .5) -} - -.custom-checkbox .custom-control-input:disabled:indeterminate~.custom-control-label::before { - background-color: rgba(0, 123, 255, .5) -} - -.custom-radio .custom-control-label::before { - border-radius: 50% -} - -.custom-radio .custom-control-input:checked~.custom-control-label::after { - background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e") -} - -.custom-radio .custom-control-input:disabled:checked~.custom-control-label::before { - background-color: rgba(0, 123, 255, .5) -} - -.custom-switch { - padding-left: 2.25rem -} - -.custom-switch .custom-control-label::before { - left: -2.25rem; - width: 1.75rem; - pointer-events: all; - border-radius: .5rem -} - -.custom-switch .custom-control-label::after { - top: calc(0.25rem + 2px); - left: calc(-2.25rem + 2px); - width: calc(1rem - 4px); - height: calc(1rem - 4px); - background-color: #adb5bd; - border-radius: .5rem; - -webkit-transition: background-color .15s ease-in-out, border-color .15s ease-in-out, -webkit-transform .15s ease-in-out, -webkit-box-shadow .15s ease-in-out; - transition: background-color .15s ease-in-out, border-color .15s ease-in-out, -webkit-transform .15s ease-in-out, -webkit-box-shadow .15s ease-in-out; - transition: transform .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out; - transition: transform .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out, -webkit-transform .15s ease-in-out, -webkit-box-shadow .15s ease-in-out -} - -@media(prefers-reduced-motion: reduce) { - .custom-switch .custom-control-label::after { - -webkit-transition: none; - transition: none - } -} - -.custom-switch .custom-control-input:checked~.custom-control-label::after { - background-color: #fff; - -webkit-transform: translateX(0.75rem); - transform: translateX(0.75rem) -} - -.custom-switch .custom-control-input:disabled:checked~.custom-control-label::before { - background-color: rgba(0, 123, 255, .5) -} - -.custom-select { - display: inline-block; - width: 100%; - height: calc(1.5em + 0.75rem + 2px); - padding: .375rem 1.75rem .375rem .75rem; - font-size: 1rem; - font-weight: 400; - line-height: 1.5; - color: #495057; - vertical-align: middle; - background: #fff url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") right .75rem center/8px 10px no-repeat; - border: 1px solid #ced4da; - border-radius: .25rem; - -webkit-appearance: none; - -moz-appearance: none; - appearance: none -} - -.custom-select:focus { - border-color: #80bdff; - outline: 0; - -webkit-box-shadow: 0 0 0 .2rem rgba(0, 123, 255, .25); - box-shadow: 0 0 0 .2rem rgba(0, 123, 255, .25) -} - -.custom-select:focus::-ms-value { - color: #495057; - background-color: #fff -} - -.custom-select[multiple], -.custom-select[size]:not([size="1"]) { - height: auto; - padding-right: .75rem; - background-image: none -} - -.custom-select:disabled { - color: #6c757d; - background-color: #e9ecef -} - -.custom-select::-ms-expand { - display: none -} - -.custom-select:-moz-focusring { - color: rgba(0, 0, 0, 0); - text-shadow: 0 0 0 #495057 -} - -.custom-select-sm { - height: calc(1.5em + 0.5rem + 2px); - padding-top: .25rem; - padding-bottom: .25rem; - padding-left: .5rem; - font-size: 0.875rem -} - -.custom-select-lg { - height: calc(1.5em + 1rem + 2px); - padding-top: .5rem; - padding-bottom: .5rem; - padding-left: 1rem; - font-size: 1.25rem -} - -.custom-file { - position: relative; - display: inline-block; - width: 100%; - height: calc(1.5em + 0.75rem + 2px); - margin-bottom: 0 -} - -.custom-file-input { - position: relative; - z-index: 2; - width: 100%; - height: calc(1.5em + 0.75rem + 2px); - margin: 0; - overflow: hidden; - opacity: 0 -} - -.custom-file-input:focus~.custom-file-label { - border-color: #80bdff; - -webkit-box-shadow: 0 0 0 .2rem rgba(0, 123, 255, .25); - box-shadow: 0 0 0 .2rem rgba(0, 123, 255, .25) -} - -.custom-file-input[disabled]~.custom-file-label, -.custom-file-input:disabled~.custom-file-label { - background-color: #e9ecef -} - -.custom-file-input:lang(en)~.custom-file-label::after { - content: "Browse" -} - -.custom-file-input~.custom-file-label[data-browse]::after { - content: attr(data-browse) -} - -.custom-file-label { - position: absolute; - top: 0; - right: 0; - left: 0; - z-index: 1; - height: calc(1.5em + 0.75rem + 2px); - padding: .375rem .75rem; - overflow: hidden; - font-weight: 400; - line-height: 1.5; - color: #495057; - background-color: #fff; - border: 1px solid #ced4da; - border-radius: .25rem -} - -.custom-file-label::after { - position: absolute; - top: 0; - right: 0; - bottom: 0; - z-index: 3; - display: block; - height: calc(1.5em + 0.75rem); - padding: .375rem .75rem; - line-height: 1.5; - color: #495057; - content: "Browse"; - background-color: #e9ecef; - border-left: inherit; - border-radius: 0 .25rem .25rem 0 -} - -.custom-range { - width: 100%; - height: 1.4rem; - padding: 0; - background-color: rgba(0, 0, 0, 0); - -webkit-appearance: none; - -moz-appearance: none; - appearance: none -} - -.custom-range:focus { - outline: 0 -} - -.custom-range:focus::-webkit-slider-thumb { - -webkit-box-shadow: 0 0 0 1px #fff, 0 0 0 .2rem rgba(0, 123, 255, .25); - box-shadow: 0 0 0 1px #fff, 0 0 0 .2rem rgba(0, 123, 255, .25) -} - -.custom-range:focus::-moz-range-thumb { - box-shadow: 0 0 0 1px #fff, 0 0 0 .2rem rgba(0, 123, 255, .25) -} - -.custom-range:focus::-ms-thumb { - box-shadow: 0 0 0 1px #fff, 0 0 0 .2rem rgba(0, 123, 255, .25) -} - -.custom-range::-moz-focus-outer { - border: 0 -} - -.custom-range::-webkit-slider-thumb { - width: 1rem; - height: 1rem; - margin-top: -0.25rem; - background-color: #007bff; - border: 0; - border-radius: 1rem; - -webkit-transition: background-color .15s ease-in-out, border-color .15s ease-in-out, -webkit-box-shadow .15s ease-in-out; - transition: background-color .15s ease-in-out, border-color .15s ease-in-out, -webkit-box-shadow .15s ease-in-out; - transition: background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out; - transition: background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out, -webkit-box-shadow .15s ease-in-out; - -webkit-appearance: none; - appearance: none -} - -@media(prefers-reduced-motion: reduce) { - .custom-range::-webkit-slider-thumb { - -webkit-transition: none; - transition: none - } -} - -.custom-range::-webkit-slider-thumb:active { - background-color: #b3d7ff -} - -.custom-range::-webkit-slider-runnable-track { - width: 100%; - height: .5rem; - color: rgba(0, 0, 0, 0); - cursor: pointer; - background-color: #dee2e6; - border-color: rgba(0, 0, 0, 0); - border-radius: 1rem -} - -.custom-range::-moz-range-thumb { - width: 1rem; - height: 1rem; - background-color: #007bff; - border: 0; - border-radius: 1rem; - -moz-transition: background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out; - transition: background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out; - -moz-appearance: none; - appearance: none -} - -@media(prefers-reduced-motion: reduce) { - .custom-range::-moz-range-thumb { - -moz-transition: none; - transition: none - } -} - -.custom-range::-moz-range-thumb:active { - background-color: #b3d7ff -} - -.custom-range::-moz-range-track { - width: 100%; - height: .5rem; - color: rgba(0, 0, 0, 0); - cursor: pointer; - background-color: #dee2e6; - border-color: rgba(0, 0, 0, 0); - border-radius: 1rem -} - -.custom-range::-ms-thumb { - width: 1rem; - height: 1rem; - margin-top: 0; - margin-right: .2rem; - margin-left: .2rem; - background-color: #007bff; - border: 0; - border-radius: 1rem; - -ms-transition: background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out; - transition: background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out; - appearance: none -} - -@media(prefers-reduced-motion: reduce) { - .custom-range::-ms-thumb { - -ms-transition: none; - transition: none - } -} - -.custom-range::-ms-thumb:active { - background-color: #b3d7ff -} - -.custom-range::-ms-track { - width: 100%; - height: .5rem; - color: rgba(0, 0, 0, 0); - cursor: pointer; - background-color: rgba(0, 0, 0, 0); - border-color: rgba(0, 0, 0, 0); - border-width: .5rem -} - -.custom-range::-ms-fill-lower { - background-color: #dee2e6; - border-radius: 1rem -} - -.custom-range::-ms-fill-upper { - margin-right: 15px; - background-color: #dee2e6; - border-radius: 1rem -} - -.custom-range:disabled::-webkit-slider-thumb { - background-color: #adb5bd -} - -.custom-range:disabled::-webkit-slider-runnable-track { - cursor: default -} - -.custom-range:disabled::-moz-range-thumb { - background-color: #adb5bd -} - -.custom-range:disabled::-moz-range-track { - cursor: default -} - -.custom-range:disabled::-ms-thumb { - background-color: #adb5bd -} - -.custom-control-label::before, -.custom-file-label, -.custom-select { - -webkit-transition: background-color .15s ease-in-out, border-color .15s ease-in-out, -webkit-box-shadow .15s ease-in-out; - transition: background-color .15s ease-in-out, border-color .15s ease-in-out, -webkit-box-shadow .15s ease-in-out; - transition: background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out; - transition: background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out, -webkit-box-shadow .15s ease-in-out -} - -@media(prefers-reduced-motion: reduce) { - - .custom-control-label::before, - .custom-file-label, - .custom-select { - -webkit-transition: none; - transition: none - } -} - -.nav { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -ms-flex-wrap: wrap; - flex-wrap: wrap; - padding-left: 0; - margin-bottom: 0; - list-style: none -} - -.nav-link { - display: block; - padding: .5rem 1rem -} - -.nav-link:hover, -.nav-link:focus { - text-decoration: none -} - -.nav-link.disabled { - color: #6c757d; - pointer-events: none; - cursor: default -} - -.nav-tabs { - border-bottom: 1px solid #dee2e6 -} - -.nav-tabs .nav-link { - margin-bottom: -1px; - border: 1px solid rgba(0, 0, 0, 0); - border-top-left-radius: .25rem; - border-top-right-radius: .25rem -} - -.nav-tabs .nav-link:hover, -.nav-tabs .nav-link:focus { - border-color: #e9ecef #e9ecef #dee2e6 -} - -.nav-tabs .nav-link.disabled { - color: #6c757d; - background-color: rgba(0, 0, 0, 0); - border-color: rgba(0, 0, 0, 0) -} - -.nav-tabs .nav-link.active, -.nav-tabs .nav-item.show .nav-link { - color: #495057; - background-color: #fff; - border-color: #dee2e6 #dee2e6 #fff -} - -.nav-tabs .dropdown-menu { - margin-top: -1px; - border-top-left-radius: 0; - border-top-right-radius: 0 -} - -.nav-pills .nav-link { - border-radius: .25rem -} - -.nav-pills .nav-link.active, -.nav-pills .show>.nav-link { - color: #fff; - background-color: #007bff -} - -.nav-fill>.nav-link, -.nav-fill .nav-item { - -webkit-box-flex: 1; - -ms-flex: 1 1 auto; - flex: 1 1 auto; - text-align: center -} - -.nav-justified>.nav-link, -.nav-justified .nav-item { - -ms-flex-preferred-size: 0; - flex-basis: 0; - -webkit-box-flex: 1; - -ms-flex-positive: 1; - flex-grow: 1; - text-align: center -} - -.tab-content>.tab-pane { - display: none -} - -.tab-content>.active { - display: block -} - -.navbar { - position: relative; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -ms-flex-wrap: wrap; - flex-wrap: wrap; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-pack: justify; - -ms-flex-pack: justify; - justify-content: space-between; - padding: .5rem 1rem -} - -.navbar .container, -.navbar .container-fluid, -.navbar .container-sm, -.navbar .container-md, -.navbar .container-lg, -.navbar .container-xl { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -ms-flex-wrap: wrap; - flex-wrap: wrap; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-pack: justify; - -ms-flex-pack: justify; - justify-content: space-between -} - -.navbar-brand { - display: inline-block; - padding-top: .3125rem; - padding-bottom: .3125rem; - margin-right: 1rem; - font-size: 1.25rem; - line-height: inherit; - white-space: nowrap -} - -.navbar-brand:hover, -.navbar-brand:focus { - text-decoration: none -} - -.navbar-nav { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - padding-left: 0; - margin-bottom: 0; - list-style: none -} - -.navbar-nav .nav-link { - padding-right: 0; - padding-left: 0 -} - -.navbar-nav .dropdown-menu { - position: static; - float: none -} - -.navbar-text { - display: inline-block; - padding-top: .5rem; - padding-bottom: .5rem -} - -.navbar-collapse { - -ms-flex-preferred-size: 100%; - flex-basis: 100%; - -webkit-box-flex: 1; - -ms-flex-positive: 1; - flex-grow: 1; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center -} - -.navbar-toggler { - padding: .25rem .75rem; - font-size: 1.25rem; - line-height: 1; - background-color: rgba(0, 0, 0, 0); - border: 1px solid rgba(0, 0, 0, 0); - border-radius: .25rem -} - -.navbar-toggler:hover, -.navbar-toggler:focus { - text-decoration: none -} - -.navbar-toggler-icon { - display: inline-block; - width: 1.5em; - height: 1.5em; - vertical-align: middle; - content: ""; - background: 50%/100% 100% no-repeat -} - -.navbar-nav-scroll { - max-height: 75vh; - overflow-y: auto -} - -@media(max-width: 575.98px) { - - .navbar-expand-sm>.container, - .navbar-expand-sm>.container-fluid, - .navbar-expand-sm>.container-sm, - .navbar-expand-sm>.container-md, - .navbar-expand-sm>.container-lg, - .navbar-expand-sm>.container-xl { - padding-right: 0; - padding-left: 0 - } -} - -@media(min-width: 576px) { - .navbar-expand-sm { - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-flow: row nowrap; - flex-flow: row nowrap; - -webkit-box-pack: start; - -ms-flex-pack: start; - justify-content: flex-start - } - - .navbar-expand-sm .navbar-nav { - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-direction: row; - flex-direction: row - } - - .navbar-expand-sm .navbar-nav .dropdown-menu { - position: absolute - } - - .navbar-expand-sm .navbar-nav .nav-link { - padding-right: .5rem; - padding-left: .5rem - } - - .navbar-expand-sm>.container, - .navbar-expand-sm>.container-fluid, - .navbar-expand-sm>.container-sm, - .navbar-expand-sm>.container-md, - .navbar-expand-sm>.container-lg, - .navbar-expand-sm>.container-xl { - -ms-flex-wrap: nowrap; - flex-wrap: nowrap - } - - .navbar-expand-sm .navbar-nav-scroll { - overflow: visible - } - - .navbar-expand-sm .navbar-collapse { - display: -webkit-box !important; - display: -ms-flexbox !important; - display: flex !important; - -ms-flex-preferred-size: auto; - flex-basis: auto - } - - .navbar-expand-sm .navbar-toggler { - display: none - } -} - -@media(max-width: 767.98px) { - - .navbar-expand-md>.container, - .navbar-expand-md>.container-fluid, - .navbar-expand-md>.container-sm, - .navbar-expand-md>.container-md, - .navbar-expand-md>.container-lg, - .navbar-expand-md>.container-xl { - padding-right: 0; - padding-left: 0 - } -} - -@media(min-width: 768px) { - .navbar-expand-md { - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-flow: row nowrap; - flex-flow: row nowrap; - -webkit-box-pack: start; - -ms-flex-pack: start; - justify-content: flex-start - } - - .navbar-expand-md .navbar-nav { - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-direction: row; - flex-direction: row - } - - .navbar-expand-md .navbar-nav .dropdown-menu { - position: absolute - } - - .navbar-expand-md .navbar-nav .nav-link { - padding-right: .5rem; - padding-left: .5rem - } - - .navbar-expand-md>.container, - .navbar-expand-md>.container-fluid, - .navbar-expand-md>.container-sm, - .navbar-expand-md>.container-md, - .navbar-expand-md>.container-lg, - .navbar-expand-md>.container-xl { - -ms-flex-wrap: nowrap; - flex-wrap: nowrap - } - - .navbar-expand-md .navbar-nav-scroll { - overflow: visible - } - - .navbar-expand-md .navbar-collapse { - display: -webkit-box !important; - display: -ms-flexbox !important; - display: flex !important; - -ms-flex-preferred-size: auto; - flex-basis: auto - } - - .navbar-expand-md .navbar-toggler { - display: none - } -} - -@media(max-width: 991.98px) { - - .navbar-expand-lg>.container, - .navbar-expand-lg>.container-fluid, - .navbar-expand-lg>.container-sm, - .navbar-expand-lg>.container-md, - .navbar-expand-lg>.container-lg, - .navbar-expand-lg>.container-xl { - padding-right: 0; - padding-left: 0 - } -} - -@media(min-width: 992px) { - .navbar-expand-lg { - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-flow: row nowrap; - flex-flow: row nowrap; - -webkit-box-pack: start; - -ms-flex-pack: start; - justify-content: flex-start - } - - .navbar-expand-lg .navbar-nav { - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-direction: row; - flex-direction: row - } - - .navbar-expand-lg .navbar-nav .dropdown-menu { - position: absolute - } - - .navbar-expand-lg .navbar-nav .nav-link { - padding-right: .5rem; - padding-left: .5rem - } - - .navbar-expand-lg>.container, - .navbar-expand-lg>.container-fluid, - .navbar-expand-lg>.container-sm, - .navbar-expand-lg>.container-md, - .navbar-expand-lg>.container-lg, - .navbar-expand-lg>.container-xl { - -ms-flex-wrap: nowrap; - flex-wrap: nowrap - } - - .navbar-expand-lg .navbar-nav-scroll { - overflow: visible - } - - .navbar-expand-lg .navbar-collapse { - display: -webkit-box !important; - display: -ms-flexbox !important; - display: flex !important; - -ms-flex-preferred-size: auto; - flex-basis: auto - } - - .navbar-expand-lg .navbar-toggler { - display: none - } -} - -@media(max-width: 1199.98px) { - - .navbar-expand-xl>.container, - .navbar-expand-xl>.container-fluid, - .navbar-expand-xl>.container-sm, - .navbar-expand-xl>.container-md, - .navbar-expand-xl>.container-lg, - .navbar-expand-xl>.container-xl { - padding-right: 0; - padding-left: 0 - } -} - -@media(min-width: 1200px) { - .navbar-expand-xl { - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-flow: row nowrap; - flex-flow: row nowrap; - -webkit-box-pack: start; - -ms-flex-pack: start; - justify-content: flex-start - } - - .navbar-expand-xl .navbar-nav { - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-direction: row; - flex-direction: row - } - - .navbar-expand-xl .navbar-nav .dropdown-menu { - position: absolute - } - - .navbar-expand-xl .navbar-nav .nav-link { - padding-right: .5rem; - padding-left: .5rem - } - - .navbar-expand-xl>.container, - .navbar-expand-xl>.container-fluid, - .navbar-expand-xl>.container-sm, - .navbar-expand-xl>.container-md, - .navbar-expand-xl>.container-lg, - .navbar-expand-xl>.container-xl { - -ms-flex-wrap: nowrap; - flex-wrap: nowrap - } - - .navbar-expand-xl .navbar-nav-scroll { - overflow: visible - } - - .navbar-expand-xl .navbar-collapse { - display: -webkit-box !important; - display: -ms-flexbox !important; - display: flex !important; - -ms-flex-preferred-size: auto; - flex-basis: auto - } - - .navbar-expand-xl .navbar-toggler { - display: none - } -} - -.navbar-expand { - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-flow: row nowrap; - flex-flow: row nowrap; - -webkit-box-pack: start; - -ms-flex-pack: start; - justify-content: flex-start -} - -.navbar-expand>.container, -.navbar-expand>.container-fluid, -.navbar-expand>.container-sm, -.navbar-expand>.container-md, -.navbar-expand>.container-lg, -.navbar-expand>.container-xl { - padding-right: 0; - padding-left: 0 -} - -.navbar-expand .navbar-nav { - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-direction: row; - flex-direction: row -} - -.navbar-expand .navbar-nav .dropdown-menu { - position: absolute -} - -.navbar-expand .navbar-nav .nav-link { - padding-right: .5rem; - padding-left: .5rem -} - -.navbar-expand>.container, -.navbar-expand>.container-fluid, -.navbar-expand>.container-sm, -.navbar-expand>.container-md, -.navbar-expand>.container-lg, -.navbar-expand>.container-xl { - -ms-flex-wrap: nowrap; - flex-wrap: nowrap -} - -.navbar-expand .navbar-nav-scroll { - overflow: visible -} - -.navbar-expand .navbar-collapse { - display: -webkit-box !important; - display: -ms-flexbox !important; - display: flex !important; - -ms-flex-preferred-size: auto; - flex-basis: auto -} - -.navbar-expand .navbar-toggler { - display: none -} - -.navbar-light .navbar-brand { - color: rgba(0, 0, 0, .9) -} - -.navbar-light .navbar-brand:hover, -.navbar-light .navbar-brand:focus { - color: rgba(0, 0, 0, .9) -} - -.navbar-light .navbar-nav .nav-link { - color: rgba(0, 0, 0, .5) -} - -.navbar-light .navbar-nav .nav-link:hover, -.navbar-light .navbar-nav .nav-link:focus { - color: rgba(0, 0, 0, .7) -} - -.navbar-light .navbar-nav .nav-link.disabled { - color: rgba(0, 0, 0, .3) -} - -.navbar-light .navbar-nav .show>.nav-link, -.navbar-light .navbar-nav .active>.nav-link, -.navbar-light .navbar-nav .nav-link.show, -.navbar-light .navbar-nav .nav-link.active { - color: rgba(0, 0, 0, .9) -} - -.navbar-light .navbar-toggler { - color: rgba(0, 0, 0, .5); - border-color: rgba(0, 0, 0, .1) -} - -.navbar-light .navbar-toggler-icon { - background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%280, 0, 0, 0.5%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e") -} - -.navbar-light .navbar-text { - color: rgba(0, 0, 0, .5) -} - -.navbar-light .navbar-text a { - color: rgba(0, 0, 0, .9) -} - -.navbar-light .navbar-text a:hover, -.navbar-light .navbar-text a:focus { - color: rgba(0, 0, 0, .9) -} - -.navbar-dark .navbar-brand { - color: #fff -} - -.navbar-dark .navbar-brand:hover, -.navbar-dark .navbar-brand:focus { - color: #fff -} - -.navbar-dark .navbar-nav .nav-link { - color: rgba(255, 255, 255, .5) -} - -.navbar-dark .navbar-nav .nav-link:hover, -.navbar-dark .navbar-nav .nav-link:focus { - color: rgba(255, 255, 255, .75) -} - -.navbar-dark .navbar-nav .nav-link.disabled { - color: rgba(255, 255, 255, .25) -} - -.navbar-dark .navbar-nav .show>.nav-link, -.navbar-dark .navbar-nav .active>.nav-link, -.navbar-dark .navbar-nav .nav-link.show, -.navbar-dark .navbar-nav .nav-link.active { - color: #fff -} - -.navbar-dark .navbar-toggler { - color: rgba(255, 255, 255, .5); - border-color: rgba(255, 255, 255, .1) -} - -.navbar-dark .navbar-toggler-icon { - background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.5%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e") -} - -.navbar-dark .navbar-text { - color: rgba(255, 255, 255, .5) -} - -.navbar-dark .navbar-text a { - color: #fff -} - -.navbar-dark .navbar-text a:hover, -.navbar-dark .navbar-text a:focus { - color: #fff -} - -.card { - position: relative; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - min-width: 0; - word-wrap: break-word; - background-color: #fff; - background-clip: border-box; - border: 1px solid rgba(0, 0, 0, .125); - border-radius: .25rem -} - -.card>hr { - margin-right: 0; - margin-left: 0 -} - -.card>.list-group { - border-top: inherit; - border-bottom: inherit -} - -.card>.list-group:first-child { - border-top-width: 0; - border-top-left-radius: calc(0.25rem - 1px); - border-top-right-radius: calc(0.25rem - 1px) -} - -.card>.list-group:last-child { - border-bottom-width: 0; - border-bottom-right-radius: calc(0.25rem - 1px); - border-bottom-left-radius: calc(0.25rem - 1px) -} - -.card>.card-header+.list-group, -.card>.list-group+.card-footer { - border-top: 0 -} - -.card-body { - -webkit-box-flex: 1; - -ms-flex: 1 1 auto; - flex: 1 1 auto; - min-height: 1px; - padding: 1.25rem -} - -.card-title { - margin-bottom: .75rem -} - -.card-subtitle { - margin-top: -0.375rem; - margin-bottom: 0 -} - -.card-text:last-child { - margin-bottom: 0 -} - -.card-link:hover { - text-decoration: none -} - -.card-link+.card-link { - margin-left: 1.25rem -} - -.card-header { - padding: .75rem 1.25rem; - margin-bottom: 0; - background-color: rgba(0, 0, 0, .03); - border-bottom: 1px solid rgba(0, 0, 0, .125) -} - -.card-header:first-child { - border-radius: calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0 -} - -.card-footer { - padding: .75rem 1.25rem; - background-color: rgba(0, 0, 0, .03); - border-top: 1px solid rgba(0, 0, 0, .125) -} - -.card-footer:last-child { - border-radius: 0 0 calc(0.25rem - 1px) calc(0.25rem - 1px) -} - -.card-header-tabs { - margin-right: -0.625rem; - margin-bottom: -0.75rem; - margin-left: -0.625rem; - border-bottom: 0 -} - -.card-header-pills { - margin-right: -0.625rem; - margin-left: -0.625rem -} - -.card-img-overlay { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - padding: 1.25rem; - border-radius: calc(0.25rem - 1px) -} - -.card-img, -.card-img-top, -.card-img-bottom { - -ms-flex-negative: 0; - flex-shrink: 0; - width: 100% -} - -.card-img, -.card-img-top { - border-top-left-radius: calc(0.25rem - 1px); - border-top-right-radius: calc(0.25rem - 1px) -} - -.card-img, -.card-img-bottom { - border-bottom-right-radius: calc(0.25rem - 1px); - border-bottom-left-radius: calc(0.25rem - 1px) -} - -.card-deck .card { - margin-bottom: 15px -} - -@media(min-width: 576px) { - .card-deck { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-flow: row wrap; - flex-flow: row wrap; - margin-right: -15px; - margin-left: -15px - } - - .card-deck .card { - -webkit-box-flex: 1; - -ms-flex: 1 0 0%; - flex: 1 0 0%; - margin-right: 15px; - margin-bottom: 0; - margin-left: 15px - } -} - -.card-group>.card { - margin-bottom: 15px -} - -@media(min-width: 576px) { - .card-group { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-flow: row wrap; - flex-flow: row wrap - } - - .card-group>.card { - -webkit-box-flex: 1; - -ms-flex: 1 0 0%; - flex: 1 0 0%; - margin-bottom: 0 - } - - .card-group>.card+.card { - margin-left: 0; - border-left: 0 - } - - .card-group>.card:not(:last-child) { - border-top-right-radius: 0; - border-bottom-right-radius: 0 - } - - .card-group>.card:not(:last-child) .card-img-top, - .card-group>.card:not(:last-child) .card-header { - border-top-right-radius: 0 - } - - .card-group>.card:not(:last-child) .card-img-bottom, - .card-group>.card:not(:last-child) .card-footer { - border-bottom-right-radius: 0 - } - - .card-group>.card:not(:first-child) { - border-top-left-radius: 0; - border-bottom-left-radius: 0 - } - - .card-group>.card:not(:first-child) .card-img-top, - .card-group>.card:not(:first-child) .card-header { - border-top-left-radius: 0 - } - - .card-group>.card:not(:first-child) .card-img-bottom, - .card-group>.card:not(:first-child) .card-footer { - border-bottom-left-radius: 0 - } -} - -.card-columns .card { - margin-bottom: .75rem -} - -@media(min-width: 576px) { - .card-columns { - -webkit-column-count: 3; - -moz-column-count: 3; - column-count: 3; - -webkit-column-gap: 1.25rem; - -moz-column-gap: 1.25rem; - column-gap: 1.25rem; - orphans: 1; - widows: 1 - } - - .card-columns .card { - display: inline-block; - width: 100% - } -} - -.accordion { - overflow-anchor: none -} - -.accordion>.card { - overflow: hidden -} - -.accordion>.card:not(:last-of-type) { - border-bottom: 0; - border-bottom-right-radius: 0; - border-bottom-left-radius: 0 -} - -.accordion>.card:not(:first-of-type) { - border-top-left-radius: 0; - border-top-right-radius: 0 -} - -.accordion>.card>.card-header { - border-radius: 0; - margin-bottom: -1px -} - -.breadcrumb { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -ms-flex-wrap: wrap; - flex-wrap: wrap; - padding: .75rem 1rem; - margin-bottom: 1rem; - list-style: none; - background-color: #e9ecef; - border-radius: .25rem -} - -.breadcrumb-item+.breadcrumb-item { - padding-left: .5rem -} - -.breadcrumb-item+.breadcrumb-item::before { - float: left; - padding-right: .5rem; - color: #6c757d; - content: "/" -} - -.breadcrumb-item+.breadcrumb-item:hover::before { - text-decoration: underline -} - -.breadcrumb-item+.breadcrumb-item:hover::before { - text-decoration: none -} - -.breadcrumb-item.active { - color: #6c757d -} - -.pagination { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - padding-left: 0; - list-style: none; - border-radius: .25rem -} - -.page-link { - position: relative; - display: block; - padding: .5rem .75rem; - margin-left: -1px; - line-height: 1.25; - color: #007bff; - background-color: #fff; - border: 1px solid #dee2e6 -} - -.page-link:hover { - z-index: 2; - color: #0056b3; - text-decoration: none; - background-color: #e9ecef; - border-color: #dee2e6 -} - -.page-link:focus { - z-index: 3; - outline: 0; - -webkit-box-shadow: 0 0 0 .2rem rgba(0, 123, 255, .25); - box-shadow: 0 0 0 .2rem rgba(0, 123, 255, .25) -} - -.page-item:first-child .page-link { - margin-left: 0; - border-top-left-radius: .25rem; - border-bottom-left-radius: .25rem -} - -.page-item:last-child .page-link { - border-top-right-radius: .25rem; - border-bottom-right-radius: .25rem -} - -.page-item.active .page-link { - z-index: 3; - color: #fff; - background-color: #007bff; - border-color: #007bff -} - -.page-item.disabled .page-link { - color: #6c757d; - pointer-events: none; - cursor: auto; - background-color: #fff; - border-color: #dee2e6 -} - -.pagination-lg .page-link { - padding: .75rem 1.5rem; - font-size: 1.25rem; - line-height: 1.5 -} - -.pagination-lg .page-item:first-child .page-link { - border-top-left-radius: .3rem; - border-bottom-left-radius: .3rem -} - -.pagination-lg .page-item:last-child .page-link { - border-top-right-radius: .3rem; - border-bottom-right-radius: .3rem -} - -.pagination-sm .page-link { - padding: .25rem .5rem; - font-size: 0.875rem; - line-height: 1.5 -} - -.pagination-sm .page-item:first-child .page-link { - border-top-left-radius: .2rem; - border-bottom-left-radius: .2rem -} - -.pagination-sm .page-item:last-child .page-link { - border-top-right-radius: .2rem; - border-bottom-right-radius: .2rem -} - -.badge { - display: inline-block; - padding: .25em .4em; - font-size: 75%; - font-weight: 700; - line-height: 1; - text-align: center; - white-space: nowrap; - vertical-align: baseline; - border-radius: .25rem; - -webkit-transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, -webkit-box-shadow .15s ease-in-out; - transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, -webkit-box-shadow .15s ease-in-out; - transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out; - transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out, -webkit-box-shadow .15s ease-in-out -} - -@media(prefers-reduced-motion: reduce) { - .badge { - -webkit-transition: none; - transition: none - } -} - -a.badge:hover, -a.badge:focus { - text-decoration: none -} - -.badge:empty { - display: none -} - -.btn .badge { - position: relative; - top: -1px -} - -.badge-pill { - padding-right: .6em; - padding-left: .6em; - border-radius: 10rem -} - -.badge-primary { - color: #fff; - background-color: #007bff -} - -a.badge-primary:hover, -a.badge-primary:focus { - color: #fff; - background-color: #0062cc -} - -a.badge-primary:focus, -a.badge-primary.focus { - outline: 0; - -webkit-box-shadow: 0 0 0 .2rem rgba(0, 123, 255, .5); - box-shadow: 0 0 0 .2rem rgba(0, 123, 255, .5) -} - -.badge-secondary { - color: #fff; - background-color: #6c757d -} - -a.badge-secondary:hover, -a.badge-secondary:focus { - color: #fff; - background-color: #545b62 -} - -a.badge-secondary:focus, -a.badge-secondary.focus { - outline: 0; - -webkit-box-shadow: 0 0 0 .2rem rgba(108, 117, 125, .5); - box-shadow: 0 0 0 .2rem rgba(108, 117, 125, .5) -} - -.badge-success { - color: #fff; - background-color: #28a745 -} - -a.badge-success:hover, -a.badge-success:focus { - color: #fff; - background-color: #1e7e34 -} - -a.badge-success:focus, -a.badge-success.focus { - outline: 0; - -webkit-box-shadow: 0 0 0 .2rem rgba(40, 167, 69, .5); - box-shadow: 0 0 0 .2rem rgba(40, 167, 69, .5) -} - -.badge-info { - color: #fff; - background-color: #17a2b8 -} - -a.badge-info:hover, -a.badge-info:focus { - color: #fff; - background-color: #117a8b -} - -a.badge-info:focus, -a.badge-info.focus { - outline: 0; - -webkit-box-shadow: 0 0 0 .2rem rgba(23, 162, 184, .5); - box-shadow: 0 0 0 .2rem rgba(23, 162, 184, .5) -} - -.badge-warning { - color: #212529; - background-color: #ffc107 -} - -a.badge-warning:hover, -a.badge-warning:focus { - color: #212529; - background-color: #d39e00 -} - -a.badge-warning:focus, -a.badge-warning.focus { - outline: 0; - -webkit-box-shadow: 0 0 0 .2rem rgba(255, 193, 7, .5); - box-shadow: 0 0 0 .2rem rgba(255, 193, 7, .5) -} - -.badge-danger { - color: #fff; - background-color: #dc3545 -} - -a.badge-danger:hover, -a.badge-danger:focus { - color: #fff; - background-color: #bd2130 -} - -a.badge-danger:focus, -a.badge-danger.focus { - outline: 0; - -webkit-box-shadow: 0 0 0 .2rem rgba(220, 53, 69, .5); - box-shadow: 0 0 0 .2rem rgba(220, 53, 69, .5) -} - -.badge-light { - color: #212529; - background-color: #f8f9fa -} - -a.badge-light:hover, -a.badge-light:focus { - color: #212529; - background-color: #dae0e5 -} - -a.badge-light:focus, -a.badge-light.focus { - outline: 0; - -webkit-box-shadow: 0 0 0 .2rem rgba(248, 249, 250, .5); - box-shadow: 0 0 0 .2rem rgba(248, 249, 250, .5) -} - -.badge-dark { - color: #fff; - background-color: #343a40 -} - -a.badge-dark:hover, -a.badge-dark:focus { - color: #fff; - background-color: #1d2124 -} - -a.badge-dark:focus, -a.badge-dark.focus { - outline: 0; - -webkit-box-shadow: 0 0 0 .2rem rgba(52, 58, 64, .5); - box-shadow: 0 0 0 .2rem rgba(52, 58, 64, .5) -} - -.jumbotron { - padding: 2rem 1rem; - margin-bottom: 2rem; - background-color: #e9ecef; - border-radius: .3rem -} - -@media(min-width: 576px) { - .jumbotron { - padding: 4rem 2rem - } -} - -.jumbotron-fluid { - padding-right: 0; - padding-left: 0; - border-radius: 0 -} - -.alert { - position: relative; - padding: .75rem 1.25rem; - margin-bottom: 1rem; - border: 1px solid rgba(0, 0, 0, 0); - border-radius: .25rem -} - -.alert-heading { - color: inherit -} - -.alert-link { - font-weight: 700 -} - -.alert-dismissible { - padding-right: 4rem -} - -.alert-dismissible .close { - position: absolute; - top: 0; - right: 0; - z-index: 2; - padding: .75rem 1.25rem; - color: inherit -} - -.alert-primary { - color: #004085; - background-color: #cce5ff; - border-color: #b8daff -} - -.alert-primary hr { - border-top-color: #9fcdff -} - -.alert-primary .alert-link { - color: #002752 -} - -.alert-secondary { - color: #383d41; - background-color: #e2e3e5; - border-color: #d6d8db -} - -.alert-secondary hr { - border-top-color: #c8cbcf -} - -.alert-secondary .alert-link { - color: #202326 -} - -.alert-success { - color: #155724; - background-color: #d4edda; - border-color: #c3e6cb -} - -.alert-success hr { - border-top-color: #b1dfbb -} - -.alert-success .alert-link { - color: #0b2e13 -} - -.alert-info { - color: #0c5460; - background-color: #d1ecf1; - border-color: #bee5eb -} - -.alert-info hr { - border-top-color: #abdde5 -} - -.alert-info .alert-link { - color: #062c33 -} - -.alert-warning { - color: #856404; - background-color: #fff3cd; - border-color: #ffeeba -} - -.alert-warning hr { - border-top-color: #ffe8a1 -} - -.alert-warning .alert-link { - color: #533f03 -} - -.alert-danger { - color: #721c24; - background-color: #f8d7da; - border-color: #f5c6cb -} - -.alert-danger hr { - border-top-color: #f1b0b7 -} - -.alert-danger .alert-link { - color: #491217 -} - -.alert-light { - color: #818182; - background-color: #fefefe; - border-color: #fdfdfe -} - -.alert-light hr { - border-top-color: #ececf6 -} - -.alert-light .alert-link { - color: #686868 -} - -.alert-dark { - color: #1b1e21; - background-color: #d6d8d9; - border-color: #c6c8ca -} - -.alert-dark hr { - border-top-color: #b9bbbe -} - -.alert-dark .alert-link { - color: #040505 -} - -@-webkit-keyframes progress-bar-stripes { - from { - background-position: 1rem 0 - } - - to { - background-position: 0 0 - } -} - -@keyframes progress-bar-stripes { - from { - background-position: 1rem 0 - } - - to { - background-position: 0 0 - } -} - -.progress { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - height: 1rem; - overflow: hidden; - line-height: 0; - font-size: 0.75rem; - background-color: #e9ecef; - border-radius: .25rem -} - -.progress-bar { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; - overflow: hidden; - color: #fff; - text-align: center; - white-space: nowrap; - background-color: #007bff; - -webkit-transition: width .6s ease; - transition: width .6s ease -} - -@media(prefers-reduced-motion: reduce) { - .progress-bar { - -webkit-transition: none; - transition: none - } -} - -.progress-bar-striped { - background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-size: 1rem 1rem -} - -.progress-bar-animated { - -webkit-animation: 1s linear infinite progress-bar-stripes; - animation: 1s linear infinite progress-bar-stripes -} - -@media(prefers-reduced-motion: reduce) { - .progress-bar-animated { - -webkit-animation: none; - animation: none - } -} - -.media { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: start; - -ms-flex-align: start; - align-items: flex-start -} - -.media-body { - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1 -} - -.list-group { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - padding-left: 0; - margin-bottom: 0; - border-radius: .25rem -} - -.list-group-item-action { - width: 100%; - color: #495057; - text-align: inherit -} - -.list-group-item-action:hover, -.list-group-item-action:focus { - z-index: 1; - color: #495057; - text-decoration: none; - background-color: #f8f9fa -} - -.list-group-item-action:active { - color: #212529; - background-color: #e9ecef -} - -.list-group-item { - position: relative; - display: block; - padding: .75rem 1.25rem; - background-color: #fff; - border: 1px solid rgba(0, 0, 0, .125) -} - -.list-group-item:first-child { - border-top-left-radius: inherit; - border-top-right-radius: inherit -} - -.list-group-item:last-child { - border-bottom-right-radius: inherit; - border-bottom-left-radius: inherit -} - -.list-group-item.disabled, -.list-group-item:disabled { - color: #6c757d; - pointer-events: none; - background-color: #fff -} - -.list-group-item.active { - z-index: 2; - color: #fff; - background-color: #007bff; - border-color: #007bff -} - -.list-group-item+.list-group-item { - border-top-width: 0 -} - -.list-group-item+.list-group-item.active { - margin-top: -1px; - border-top-width: 1px -} - -.list-group-horizontal { - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-direction: row; - flex-direction: row -} - -.list-group-horizontal>.list-group-item:first-child { - border-bottom-left-radius: .25rem; - border-top-right-radius: 0 -} - -.list-group-horizontal>.list-group-item:last-child { - border-top-right-radius: .25rem; - border-bottom-left-radius: 0 -} - -.list-group-horizontal>.list-group-item.active { - margin-top: 0 -} - -.list-group-horizontal>.list-group-item+.list-group-item { - border-top-width: 1px; - border-left-width: 0 -} - -.list-group-horizontal>.list-group-item+.list-group-item.active { - margin-left: -1px; - border-left-width: 1px -} - -@media(min-width: 576px) { - .list-group-horizontal-sm { - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-direction: row; - flex-direction: row - } - - .list-group-horizontal-sm>.list-group-item:first-child { - border-bottom-left-radius: .25rem; - border-top-right-radius: 0 - } - - .list-group-horizontal-sm>.list-group-item:last-child { - border-top-right-radius: .25rem; - border-bottom-left-radius: 0 - } - - .list-group-horizontal-sm>.list-group-item.active { - margin-top: 0 - } - - .list-group-horizontal-sm>.list-group-item+.list-group-item { - border-top-width: 1px; - border-left-width: 0 - } - - .list-group-horizontal-sm>.list-group-item+.list-group-item.active { - margin-left: -1px; - border-left-width: 1px - } -} - -@media(min-width: 768px) { - .list-group-horizontal-md { - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-direction: row; - flex-direction: row - } - - .list-group-horizontal-md>.list-group-item:first-child { - border-bottom-left-radius: .25rem; - border-top-right-radius: 0 - } - - .list-group-horizontal-md>.list-group-item:last-child { - border-top-right-radius: .25rem; - border-bottom-left-radius: 0 - } - - .list-group-horizontal-md>.list-group-item.active { - margin-top: 0 - } - - .list-group-horizontal-md>.list-group-item+.list-group-item { - border-top-width: 1px; - border-left-width: 0 - } - - .list-group-horizontal-md>.list-group-item+.list-group-item.active { - margin-left: -1px; - border-left-width: 1px - } -} - -@media(min-width: 992px) { - .list-group-horizontal-lg { - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-direction: row; - flex-direction: row - } - - .list-group-horizontal-lg>.list-group-item:first-child { - border-bottom-left-radius: .25rem; - border-top-right-radius: 0 - } - - .list-group-horizontal-lg>.list-group-item:last-child { - border-top-right-radius: .25rem; - border-bottom-left-radius: 0 - } - - .list-group-horizontal-lg>.list-group-item.active { - margin-top: 0 - } - - .list-group-horizontal-lg>.list-group-item+.list-group-item { - border-top-width: 1px; - border-left-width: 0 - } - - .list-group-horizontal-lg>.list-group-item+.list-group-item.active { - margin-left: -1px; - border-left-width: 1px - } -} - -@media(min-width: 1200px) { - .list-group-horizontal-xl { - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-direction: row; - flex-direction: row - } - - .list-group-horizontal-xl>.list-group-item:first-child { - border-bottom-left-radius: .25rem; - border-top-right-radius: 0 - } - - .list-group-horizontal-xl>.list-group-item:last-child { - border-top-right-radius: .25rem; - border-bottom-left-radius: 0 - } - - .list-group-horizontal-xl>.list-group-item.active { - margin-top: 0 - } - - .list-group-horizontal-xl>.list-group-item+.list-group-item { - border-top-width: 1px; - border-left-width: 0 - } - - .list-group-horizontal-xl>.list-group-item+.list-group-item.active { - margin-left: -1px; - border-left-width: 1px - } -} - -.list-group-flush { - border-radius: 0 -} - -.list-group-flush>.list-group-item { - border-width: 0 0 1px -} - -.list-group-flush>.list-group-item:last-child { - border-bottom-width: 0 -} - -.list-group-item-primary { - color: #004085; - background-color: #b8daff -} - -.list-group-item-primary.list-group-item-action:hover, -.list-group-item-primary.list-group-item-action:focus { - color: #004085; - background-color: #9fcdff -} - -.list-group-item-primary.list-group-item-action.active { - color: #fff; - background-color: #004085; - border-color: #004085 -} - -.list-group-item-secondary { - color: #383d41; - background-color: #d6d8db -} - -.list-group-item-secondary.list-group-item-action:hover, -.list-group-item-secondary.list-group-item-action:focus { - color: #383d41; - background-color: #c8cbcf -} - -.list-group-item-secondary.list-group-item-action.active { - color: #fff; - background-color: #383d41; - border-color: #383d41 -} - -.list-group-item-success { - color: #155724; - background-color: #c3e6cb -} - -.list-group-item-success.list-group-item-action:hover, -.list-group-item-success.list-group-item-action:focus { - color: #155724; - background-color: #b1dfbb -} - -.list-group-item-success.list-group-item-action.active { - color: #fff; - background-color: #155724; - border-color: #155724 -} - -.list-group-item-info { - color: #0c5460; - background-color: #bee5eb -} - -.list-group-item-info.list-group-item-action:hover, -.list-group-item-info.list-group-item-action:focus { - color: #0c5460; - background-color: #abdde5 -} - -.list-group-item-info.list-group-item-action.active { - color: #fff; - background-color: #0c5460; - border-color: #0c5460 -} - -.list-group-item-warning { - color: #856404; - background-color: #ffeeba -} - -.list-group-item-warning.list-group-item-action:hover, -.list-group-item-warning.list-group-item-action:focus { - color: #856404; - background-color: #ffe8a1 -} - -.list-group-item-warning.list-group-item-action.active { - color: #fff; - background-color: #856404; - border-color: #856404 -} - -.list-group-item-danger { - color: #721c24; - background-color: #f5c6cb -} - -.list-group-item-danger.list-group-item-action:hover, -.list-group-item-danger.list-group-item-action:focus { - color: #721c24; - background-color: #f1b0b7 -} - -.list-group-item-danger.list-group-item-action.active { - color: #fff; - background-color: #721c24; - border-color: #721c24 -} - -.list-group-item-light { - color: #818182; - background-color: #fdfdfe -} - -.list-group-item-light.list-group-item-action:hover, -.list-group-item-light.list-group-item-action:focus { - color: #818182; - background-color: #ececf6 -} - -.list-group-item-light.list-group-item-action.active { - color: #fff; - background-color: #818182; - border-color: #818182 -} - -.list-group-item-dark { - color: #1b1e21; - background-color: #c6c8ca -} - -.list-group-item-dark.list-group-item-action:hover, -.list-group-item-dark.list-group-item-action:focus { - color: #1b1e21; - background-color: #b9bbbe -} - -.list-group-item-dark.list-group-item-action.active { - color: #fff; - background-color: #1b1e21; - border-color: #1b1e21 -} - -.close { - float: right; - font-size: 1.5rem; - font-weight: 700; - line-height: 1; - color: #000; - text-shadow: 0 1px 0 #fff; - opacity: .5 -} - -.close:hover { - color: #000; - text-decoration: none -} - -.close:not(:disabled):not(.disabled):hover, -.close:not(:disabled):not(.disabled):focus { - opacity: .75 -} - -button.close { - padding: 0; - background-color: rgba(0, 0, 0, 0); - border: 0 -} - -a.close.disabled { - pointer-events: none -} - -.toast { - -ms-flex-preferred-size: 350px; - flex-basis: 350px; - max-width: 350px; - font-size: 0.875rem; - background-color: rgba(255, 255, 255, .85); - background-clip: padding-box; - border: 1px solid rgba(0, 0, 0, .1); - -webkit-box-shadow: 0 .25rem .75rem rgba(0, 0, 0, .1); - box-shadow: 0 .25rem .75rem rgba(0, 0, 0, .1); - opacity: 0; - border-radius: .25rem -} - -.toast:not(:last-child) { - margin-bottom: .75rem -} - -.toast.showing { - opacity: 1 -} - -.toast.show { - display: block; - opacity: 1 -} - -.toast.hide { - display: none -} - -.toast-header { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - padding: .25rem .75rem; - color: #6c757d; - background-color: rgba(255, 255, 255, .85); - background-clip: padding-box; - border-bottom: 1px solid rgba(0, 0, 0, .05); - border-top-left-radius: calc(0.25rem - 1px); - border-top-right-radius: calc(0.25rem - 1px) -} - -.toast-body { - padding: .75rem -} - -.modal-open { - overflow: hidden -} - -.modal-open .modal { - overflow-x: hidden; - overflow-y: auto -} - -.modal { - position: fixed; - top: 0; - left: 0; - z-index: 1050; - display: none; - width: 100%; - height: 100%; - overflow: hidden; - outline: 0 -} - -.modal-dialog { - position: relative; - width: auto; - margin: .5rem; - pointer-events: none -} - -.modal.fade .modal-dialog { - -webkit-transition: -webkit-transform .3s ease-out; - transition: -webkit-transform .3s ease-out; - transition: transform .3s ease-out; - transition: transform .3s ease-out, -webkit-transform .3s ease-out; - -webkit-transform: translate(0, -50px); - transform: translate(0, -50px) -} - -@media(prefers-reduced-motion: reduce) { - .modal.fade .modal-dialog { - -webkit-transition: none; - transition: none - } -} - -.modal.show .modal-dialog { - -webkit-transform: none; - transform: none -} - -.modal.modal-static .modal-dialog { - -webkit-transform: scale(1.02); - transform: scale(1.02) -} - -.modal-dialog-scrollable { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - max-height: calc(100% - 1rem) -} - -.modal-dialog-scrollable .modal-content { - max-height: calc(100vh - 1rem); - overflow: hidden -} - -.modal-dialog-scrollable .modal-header, -.modal-dialog-scrollable .modal-footer { - -ms-flex-negative: 0; - flex-shrink: 0 -} - -.modal-dialog-scrollable .modal-body { - overflow-y: auto -} - -.modal-dialog-centered { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - min-height: calc(100% - 1rem) -} - -.modal-dialog-centered::before { - display: block; - height: calc(100vh - 1rem); - height: -webkit-min-content; - height: -moz-min-content; - height: min-content; - content: "" -} - -.modal-dialog-centered.modal-dialog-scrollable { - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; - height: 100% -} - -.modal-dialog-centered.modal-dialog-scrollable .modal-content { - max-height: none -} - -.modal-dialog-centered.modal-dialog-scrollable::before { - content: none -} - -.modal-content { - position: relative; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - width: 100%; - pointer-events: auto; - background-color: #fff; - background-clip: padding-box; - border: 1px solid rgba(0, 0, 0, .2); - border-radius: .3rem; - outline: 0 -} - -.modal-backdrop { - position: fixed; - top: 0; - left: 0; - z-index: 1040; - width: 100vw; - height: 100vh; - background-color: #000 -} - -.modal-backdrop.fade { - opacity: 0 -} - -.modal-backdrop.show { - opacity: .5 -} - -.modal-header { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: start; - -ms-flex-align: start; - align-items: flex-start; - -webkit-box-pack: justify; - -ms-flex-pack: justify; - justify-content: space-between; - padding: 1rem 1rem; - border-bottom: 1px solid #dee2e6; - border-top-left-radius: calc(0.3rem - 1px); - border-top-right-radius: calc(0.3rem - 1px) -} - -.modal-header .close { - padding: 1rem 1rem; - margin: -1rem -1rem -1rem auto -} - -.modal-title { - margin-bottom: 0; - line-height: 1.5 -} - -.modal-body { - position: relative; - -webkit-box-flex: 1; - -ms-flex: 1 1 auto; - flex: 1 1 auto; - padding: 1rem -} - -.modal-footer { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -ms-flex-wrap: wrap; - flex-wrap: wrap; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-pack: end; - -ms-flex-pack: end; - justify-content: flex-end; - padding: .75rem; - border-top: 1px solid #dee2e6; - border-bottom-right-radius: calc(0.3rem - 1px); - border-bottom-left-radius: calc(0.3rem - 1px) -} - -.modal-footer>* { - margin: .25rem -} - -.modal-scrollbar-measure { - position: absolute; - top: -9999px; - width: 50px; - height: 50px; - overflow: scroll -} - -@media(min-width: 576px) { - .modal-dialog { - max-width: 500px; - margin: 1.75rem auto - } - - .modal-dialog-scrollable { - max-height: calc(100% - 3.5rem) - } - - .modal-dialog-scrollable .modal-content { - max-height: calc(100vh - 3.5rem) - } - - .modal-dialog-centered { - min-height: calc(100% - 3.5rem) - } - - .modal-dialog-centered::before { - height: calc(100vh - 3.5rem); - height: -webkit-min-content; - height: -moz-min-content; - height: min-content - } - - .modal-sm { - max-width: 300px - } -} - -@media(min-width: 992px) { - - .modal-lg, - .modal-xl { - max-width: 800px - } -} - -@media(min-width: 1200px) { - .modal-xl { - max-width: 1140px - } -} - -.tooltip { - position: absolute; - z-index: 1070; - display: block; - margin: 0; - font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - font-style: normal; - font-weight: 400; - line-height: 1.5; - text-align: left; - text-align: start; - text-decoration: none; - text-shadow: none; - text-transform: none; - letter-spacing: normal; - word-break: normal; - word-spacing: normal; - white-space: normal; - line-break: auto; - font-size: 0.875rem; - word-wrap: break-word; - opacity: 0 -} - -.tooltip.show { - opacity: .9 -} - -.tooltip .arrow { - position: absolute; - display: block; - width: .8rem; - height: .4rem -} - -.tooltip .arrow::before { - position: absolute; - content: ""; - border-color: rgba(0, 0, 0, 0); - border-style: solid -} - -.bs-tooltip-top, -.bs-tooltip-auto[x-placement^=top] { - padding: .4rem 0 -} - -.bs-tooltip-top .arrow, -.bs-tooltip-auto[x-placement^=top] .arrow { - bottom: 0 -} - -.bs-tooltip-top .arrow::before, -.bs-tooltip-auto[x-placement^=top] .arrow::before { - top: 0; - border-width: .4rem .4rem 0; - border-top-color: #000 -} - -.bs-tooltip-right, -.bs-tooltip-auto[x-placement^=right] { - padding: 0 .4rem -} - -.bs-tooltip-right .arrow, -.bs-tooltip-auto[x-placement^=right] .arrow { - left: 0; - width: .4rem; - height: .8rem -} - -.bs-tooltip-right .arrow::before, -.bs-tooltip-auto[x-placement^=right] .arrow::before { - right: 0; - border-width: .4rem .4rem .4rem 0; - border-right-color: #000 -} - -.bs-tooltip-bottom, -.bs-tooltip-auto[x-placement^=bottom] { - padding: .4rem 0 -} - -.bs-tooltip-bottom .arrow, -.bs-tooltip-auto[x-placement^=bottom] .arrow { - top: 0 -} - -.bs-tooltip-bottom .arrow::before, -.bs-tooltip-auto[x-placement^=bottom] .arrow::before { - bottom: 0; - border-width: 0 .4rem .4rem; - border-bottom-color: #000 -} - -.bs-tooltip-left, -.bs-tooltip-auto[x-placement^=left] { - padding: 0 .4rem -} - -.bs-tooltip-left .arrow, -.bs-tooltip-auto[x-placement^=left] .arrow { - right: 0; - width: .4rem; - height: .8rem -} - -.bs-tooltip-left .arrow::before, -.bs-tooltip-auto[x-placement^=left] .arrow::before { - left: 0; - border-width: .4rem 0 .4rem .4rem; - border-left-color: #000 -} - -.tooltip-inner { - max-width: 200px; - padding: .25rem .5rem; - color: #fff; - text-align: center; - background-color: #000; - border-radius: .25rem -} - -.popover { - position: absolute; - top: 0; - left: 0; - z-index: 1060; - display: block; - max-width: 276px; - font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - font-style: normal; - font-weight: 400; - line-height: 1.5; - text-align: left; - text-align: start; - text-decoration: none; - text-shadow: none; - text-transform: none; - letter-spacing: normal; - word-break: normal; - word-spacing: normal; - white-space: normal; - line-break: auto; - font-size: 0.875rem; - word-wrap: break-word; - background-color: #fff; - background-clip: padding-box; - border: 1px solid rgba(0, 0, 0, .2); - border-radius: .3rem -} - -.popover .arrow { - position: absolute; - display: block; - width: 1rem; - height: .5rem; - margin: 0 .3rem -} - -.popover .arrow::before, -.popover .arrow::after { - position: absolute; - display: block; - content: ""; - border-color: rgba(0, 0, 0, 0); - border-style: solid -} - -.bs-popover-top, -.bs-popover-auto[x-placement^=top] { - margin-bottom: .5rem -} - -.bs-popover-top>.arrow, -.bs-popover-auto[x-placement^=top]>.arrow { - bottom: calc(-0.5rem - 1px) -} - -.bs-popover-top>.arrow::before, -.bs-popover-auto[x-placement^=top]>.arrow::before { - bottom: 0; - border-width: .5rem .5rem 0; - border-top-color: rgba(0, 0, 0, .25) -} - -.bs-popover-top>.arrow::after, -.bs-popover-auto[x-placement^=top]>.arrow::after { - bottom: 1px; - border-width: .5rem .5rem 0; - border-top-color: #fff -} - -.bs-popover-right, -.bs-popover-auto[x-placement^=right] { - margin-left: .5rem -} - -.bs-popover-right>.arrow, -.bs-popover-auto[x-placement^=right]>.arrow { - left: calc(-0.5rem - 1px); - width: .5rem; - height: 1rem; - margin: .3rem 0 -} - -.bs-popover-right>.arrow::before, -.bs-popover-auto[x-placement^=right]>.arrow::before { - left: 0; - border-width: .5rem .5rem .5rem 0; - border-right-color: rgba(0, 0, 0, .25) -} - -.bs-popover-right>.arrow::after, -.bs-popover-auto[x-placement^=right]>.arrow::after { - left: 1px; - border-width: .5rem .5rem .5rem 0; - border-right-color: #fff -} - -.bs-popover-bottom, -.bs-popover-auto[x-placement^=bottom] { - margin-top: .5rem -} - -.bs-popover-bottom>.arrow, -.bs-popover-auto[x-placement^=bottom]>.arrow { - top: calc(-0.5rem - 1px) -} - -.bs-popover-bottom>.arrow::before, -.bs-popover-auto[x-placement^=bottom]>.arrow::before { - top: 0; - border-width: 0 .5rem .5rem .5rem; - border-bottom-color: rgba(0, 0, 0, .25) -} - -.bs-popover-bottom>.arrow::after, -.bs-popover-auto[x-placement^=bottom]>.arrow::after { - top: 1px; - border-width: 0 .5rem .5rem .5rem; - border-bottom-color: #fff -} - -.bs-popover-bottom .popover-header::before, -.bs-popover-auto[x-placement^=bottom] .popover-header::before { - position: absolute; - top: 0; - left: 50%; - display: block; - width: 1rem; - margin-left: -0.5rem; - content: ""; - border-bottom: 1px solid #f7f7f7 -} - -.bs-popover-left, -.bs-popover-auto[x-placement^=left] { - margin-right: .5rem -} - -.bs-popover-left>.arrow, -.bs-popover-auto[x-placement^=left]>.arrow { - right: calc(-0.5rem - 1px); - width: .5rem; - height: 1rem; - margin: .3rem 0 -} - -.bs-popover-left>.arrow::before, -.bs-popover-auto[x-placement^=left]>.arrow::before { - right: 0; - border-width: .5rem 0 .5rem .5rem; - border-left-color: rgba(0, 0, 0, .25) -} - -.bs-popover-left>.arrow::after, -.bs-popover-auto[x-placement^=left]>.arrow::after { - right: 1px; - border-width: .5rem 0 .5rem .5rem; - border-left-color: #fff -} - -.popover-header { - padding: .5rem .75rem; - margin-bottom: 0; - font-size: 1rem; - background-color: #f7f7f7; - border-bottom: 1px solid #ebebeb; - border-top-left-radius: calc(0.3rem - 1px); - border-top-right-radius: calc(0.3rem - 1px) -} - -.popover-header:empty { - display: none -} - -.popover-body { - padding: .5rem .75rem; - color: #212529 -} - -.carousel { - position: relative -} - -.carousel.pointer-event { - -ms-touch-action: pan-y; - touch-action: pan-y -} - -.carousel-inner { - position: relative; - width: 100%; - overflow: hidden -} - -.carousel-inner::after { - display: block; - clear: both; - content: "" -} - -.carousel-item { - position: relative; - display: none; - float: left; - width: 100%; - margin-right: -100%; - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -webkit-transition: -webkit-transform .6s ease-in-out; - transition: -webkit-transform .6s ease-in-out; - transition: transform .6s ease-in-out; - transition: transform .6s ease-in-out, -webkit-transform .6s ease-in-out -} - -@media(prefers-reduced-motion: reduce) { - .carousel-item { - -webkit-transition: none; - transition: none - } -} - -.carousel-item.active, -.carousel-item-next, -.carousel-item-prev { - display: block -} - -.carousel-item-next:not(.carousel-item-left), -.active.carousel-item-right { - -webkit-transform: translateX(100%); - transform: translateX(100%) -} - -.carousel-item-prev:not(.carousel-item-right), -.active.carousel-item-left { - -webkit-transform: translateX(-100%); - transform: translateX(-100%) -} - -.carousel-fade .carousel-item { - opacity: 0; - -webkit-transition-property: opacity; - transition-property: opacity; - -webkit-transform: none; - transform: none -} - -.carousel-fade .carousel-item.active, -.carousel-fade .carousel-item-next.carousel-item-left, -.carousel-fade .carousel-item-prev.carousel-item-right { - z-index: 1; - opacity: 1 -} - -.carousel-fade .active.carousel-item-left, -.carousel-fade .active.carousel-item-right { - z-index: 0; - opacity: 0; - -webkit-transition: opacity 0s .6s; - transition: opacity 0s .6s -} - -@media(prefers-reduced-motion: reduce) { - - .carousel-fade .active.carousel-item-left, - .carousel-fade .active.carousel-item-right { - -webkit-transition: none; - transition: none - } -} - -.carousel-control-prev, -.carousel-control-next { - position: absolute; - top: 0; - bottom: 0; - z-index: 1; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; - width: 15%; - padding: 0; - color: #fff; - text-align: center; - background: none; - border: 0; - opacity: .5; - -webkit-transition: opacity .15s ease; - transition: opacity .15s ease -} - -@media(prefers-reduced-motion: reduce) { - - .carousel-control-prev, - .carousel-control-next { - -webkit-transition: none; - transition: none - } -} - -.carousel-control-prev:hover, -.carousel-control-prev:focus, -.carousel-control-next:hover, -.carousel-control-next:focus { - color: #fff; - text-decoration: none; - outline: 0; - opacity: .9 -} - -.carousel-control-prev { - left: 0 -} - -.carousel-control-next { - right: 0 -} - -.carousel-control-prev-icon, -.carousel-control-next-icon { - display: inline-block; - width: 20px; - height: 20px; - background: 50%/100% 100% no-repeat -} - -.carousel-control-prev-icon { - background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath d='M5.25 0l-4 4 4 4 1.5-1.5L4.25 4l2.5-2.5L5.25 0z'/%3e%3c/svg%3e") -} - -.carousel-control-next-icon { - background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath d='M2.75 0l-1.5 1.5L3.75 4l-2.5 2.5L2.75 8l4-4-4-4z'/%3e%3c/svg%3e") -} - -.carousel-indicators { - position: absolute; - right: 0; - bottom: 0; - left: 0; - z-index: 15; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; - padding-left: 0; - margin-right: 15%; - margin-left: 15%; - list-style: none -} - -.carousel-indicators li { - -webkit-box-sizing: content-box; - box-sizing: content-box; - -webkit-box-flex: 0; - -ms-flex: 0 1 auto; - flex: 0 1 auto; - width: 30px; - height: 3px; - margin-right: 3px; - margin-left: 3px; - text-indent: -999px; - cursor: pointer; - background-color: #fff; - background-clip: padding-box; - border-top: 10px solid rgba(0, 0, 0, 0); - border-bottom: 10px solid rgba(0, 0, 0, 0); - opacity: .5; - -webkit-transition: opacity .6s ease; - transition: opacity .6s ease -} - -@media(prefers-reduced-motion: reduce) { - .carousel-indicators li { - -webkit-transition: none; - transition: none - } -} - -.carousel-indicators .active { - opacity: 1 -} - -.carousel-caption { - position: absolute; - right: 15%; - bottom: 20px; - left: 15%; - z-index: 10; - padding-top: 20px; - padding-bottom: 20px; - color: #fff; - text-align: center -} - -@-webkit-keyframes spinner-border { - to { - -webkit-transform: rotate(360deg); - transform: rotate(360deg) - } -} - -@keyframes spinner-border { - to { - -webkit-transform: rotate(360deg); - transform: rotate(360deg) - } -} - -.spinner-border { - display: inline-block; - width: 2rem; - height: 2rem; - vertical-align: -0.125em; - border: .25em solid currentColor; - border-right-color: rgba(0, 0, 0, 0); - border-radius: 50%; - -webkit-animation: .75s linear infinite spinner-border; - animation: .75s linear infinite spinner-border -} - -.spinner-border-sm { - width: 1rem; - height: 1rem; - border-width: .2em -} - -@-webkit-keyframes spinner-grow { - 0% { - -webkit-transform: scale(0); - transform: scale(0) - } - - 50% { - opacity: 1; - -webkit-transform: none; - transform: none - } -} - -@keyframes spinner-grow { - 0% { - -webkit-transform: scale(0); - transform: scale(0) - } - - 50% { - opacity: 1; - -webkit-transform: none; - transform: none - } -} - -.spinner-grow { - display: inline-block; - width: 2rem; - height: 2rem; - vertical-align: -0.125em; - background-color: currentColor; - border-radius: 50%; - opacity: 0; - -webkit-animation: .75s linear infinite spinner-grow; - animation: .75s linear infinite spinner-grow -} - -.spinner-grow-sm { - width: 1rem; - height: 1rem -} - -@media(prefers-reduced-motion: reduce) { - - .spinner-border, - .spinner-grow { - -webkit-animation-duration: 1.5s; - animation-duration: 1.5s - } -} - -.align-baseline { - vertical-align: baseline !important -} - -.align-top { - vertical-align: top !important -} - -.align-middle { - vertical-align: middle !important -} - -.align-bottom { - vertical-align: bottom !important -} - -.align-text-bottom { - vertical-align: text-bottom !important -} - -.align-text-top { - vertical-align: text-top !important -} - -.bg-primary { - background-color: #007bff !important -} - -a.bg-primary:hover, -a.bg-primary:focus, -button.bg-primary:hover, -button.bg-primary:focus { - background-color: #0062cc !important -} - -.bg-secondary { - background-color: #6c757d !important -} - -a.bg-secondary:hover, -a.bg-secondary:focus, -button.bg-secondary:hover, -button.bg-secondary:focus { - background-color: #545b62 !important -} - -.bg-success { - background-color: #28a745 !important -} - -a.bg-success:hover, -a.bg-success:focus, -button.bg-success:hover, -button.bg-success:focus { - background-color: #1e7e34 !important -} - -.bg-info { - background-color: #17a2b8 !important -} - -a.bg-info:hover, -a.bg-info:focus, -button.bg-info:hover, -button.bg-info:focus { - background-color: #117a8b !important -} - -.bg-warning { - background-color: #ffc107 !important -} - -a.bg-warning:hover, -a.bg-warning:focus, -button.bg-warning:hover, -button.bg-warning:focus { - background-color: #d39e00 !important -} - -.bg-danger { - background-color: #dc3545 !important -} - -a.bg-danger:hover, -a.bg-danger:focus, -button.bg-danger:hover, -button.bg-danger:focus { - background-color: #bd2130 !important -} - -.bg-light { - background-color: #f8f9fa !important -} - -a.bg-light:hover, -a.bg-light:focus, -button.bg-light:hover, -button.bg-light:focus { - background-color: #dae0e5 !important -} - -.bg-dark { - background-color: #343a40 !important -} - -a.bg-dark:hover, -a.bg-dark:focus, -button.bg-dark:hover, -button.bg-dark:focus { - background-color: #1d2124 !important -} - -.bg-white { - background-color: #fff !important -} - -.bg-transparent { - background-color: rgba(0, 0, 0, 0) !important -} - -.border { - border: 1px solid #dee2e6 !important -} - -.border-top { - border-top: 1px solid #dee2e6 !important -} - -.border-right { - border-right: 1px solid #dee2e6 !important -} - -.border-bottom { - border-bottom: 1px solid #dee2e6 !important -} - -.border-left { - border-left: 1px solid #dee2e6 !important -} - -.border-0 { - border: 0 !important -} - -.border-top-0 { - border-top: 0 !important -} - -.border-right-0 { - border-right: 0 !important -} - -.border-bottom-0 { - border-bottom: 0 !important -} - -.border-left-0 { - border-left: 0 !important -} - -.border-primary { - border-color: #007bff !important -} - -.border-secondary { - border-color: #6c757d !important -} - -.border-success { - border-color: #28a745 !important -} - -.border-info { - border-color: #17a2b8 !important -} - -.border-warning { - border-color: #ffc107 !important -} - -.border-danger { - border-color: #dc3545 !important -} - -.border-light { - border-color: #f8f9fa !important -} - -.border-dark { - border-color: #343a40 !important -} - -.border-white { - border-color: #fff !important -} - -.rounded-sm { - border-radius: .2rem !important -} - -.rounded { - border-radius: .25rem !important -} - -.rounded-top { - border-top-left-radius: .25rem !important; - border-top-right-radius: .25rem !important -} - -.rounded-right { - border-top-right-radius: .25rem !important; - border-bottom-right-radius: .25rem !important -} - -.rounded-bottom { - border-bottom-right-radius: .25rem !important; - border-bottom-left-radius: .25rem !important -} - -.rounded-left { - border-top-left-radius: .25rem !important; - border-bottom-left-radius: .25rem !important -} - -.rounded-lg { - border-radius: .3rem !important -} - -.rounded-circle { - border-radius: 50% !important -} - -.rounded-pill { - border-radius: 50rem !important -} - -.rounded-0 { - border-radius: 0 !important -} - -.clearfix::after { - display: block; - clear: both; - content: "" -} - -.d-none { - display: none !important -} - -.d-inline { - display: inline !important -} - -.d-inline-block { - display: inline-block !important -} - -.d-block { - display: block !important -} - -.d-table { - display: table !important -} - -.d-table-row { - display: table-row !important -} - -.d-table-cell { - display: table-cell !important -} - -.d-flex { - display: -webkit-box !important; - display: -ms-flexbox !important; - display: flex !important -} - -.d-inline-flex { - display: -webkit-inline-box !important; - display: -ms-inline-flexbox !important; - display: inline-flex !important -} - -@media(min-width: 576px) { - .d-sm-none { - display: none !important - } - - .d-sm-inline { - display: inline !important - } - - .d-sm-inline-block { - display: inline-block !important - } - - .d-sm-block { - display: block !important - } - - .d-sm-table { - display: table !important - } - - .d-sm-table-row { - display: table-row !important - } - - .d-sm-table-cell { - display: table-cell !important - } - - .d-sm-flex { - display: -webkit-box !important; - display: -ms-flexbox !important; - display: flex !important - } - - .d-sm-inline-flex { - display: -webkit-inline-box !important; - display: -ms-inline-flexbox !important; - display: inline-flex !important - } -} - -@media(min-width: 768px) { - .d-md-none { - display: none !important - } - - .d-md-inline { - display: inline !important - } - - .d-md-inline-block { - display: inline-block !important - } - - .d-md-block { - display: block !important - } - - .d-md-table { - display: table !important - } - - .d-md-table-row { - display: table-row !important - } - - .d-md-table-cell { - display: table-cell !important - } - - .d-md-flex { - display: -webkit-box !important; - display: -ms-flexbox !important; - display: flex !important - } - - .d-md-inline-flex { - display: -webkit-inline-box !important; - display: -ms-inline-flexbox !important; - display: inline-flex !important - } -} - -@media(min-width: 992px) { - .d-lg-none { - display: none !important - } - - .d-lg-inline { - display: inline !important - } - - .d-lg-inline-block { - display: inline-block !important - } - - .d-lg-block { - display: block !important - } - - .d-lg-table { - display: table !important - } - - .d-lg-table-row { - display: table-row !important - } - - .d-lg-table-cell { - display: table-cell !important - } - - .d-lg-flex { - display: -webkit-box !important; - display: -ms-flexbox !important; - display: flex !important - } - - .d-lg-inline-flex { - display: -webkit-inline-box !important; - display: -ms-inline-flexbox !important; - display: inline-flex !important - } -} - -@media(min-width: 1200px) { - .d-xl-none { - display: none !important - } - - .d-xl-inline { - display: inline !important - } - - .d-xl-inline-block { - display: inline-block !important - } - - .d-xl-block { - display: block !important - } - - .d-xl-table { - display: table !important - } - - .d-xl-table-row { - display: table-row !important - } - - .d-xl-table-cell { - display: table-cell !important - } - - .d-xl-flex { - display: -webkit-box !important; - display: -ms-flexbox !important; - display: flex !important - } - - .d-xl-inline-flex { - display: -webkit-inline-box !important; - display: -ms-inline-flexbox !important; - display: inline-flex !important - } -} - -@media print { - .d-print-none { - display: none !important - } - - .d-print-inline { - display: inline !important - } - - .d-print-inline-block { - display: inline-block !important - } - - .d-print-block { - display: block !important - } - - .d-print-table { - display: table !important - } - - .d-print-table-row { - display: table-row !important - } - - .d-print-table-cell { - display: table-cell !important - } - - .d-print-flex { - display: -webkit-box !important; - display: -ms-flexbox !important; - display: flex !important - } - - .d-print-inline-flex { - display: -webkit-inline-box !important; - display: -ms-inline-flexbox !important; - display: inline-flex !important - } -} - -.embed-responsive { - position: relative; - display: block; - width: 100%; - padding: 0; - overflow: hidden -} - -.embed-responsive::before { - display: block; - content: "" -} - -.embed-responsive .embed-responsive-item, -.embed-responsive iframe, -.embed-responsive embed, -.embed-responsive object, -.embed-responsive video { - position: absolute; - top: 0; - bottom: 0; - left: 0; - width: 100%; - height: 100%; - border: 0 -} - -.embed-responsive-21by9::before { - padding-top: 42.85714286% -} - -.embed-responsive-16by9::before { - padding-top: 56.25% -} - -.embed-responsive-4by3::before { - padding-top: 75% -} - -.embed-responsive-1by1::before { - padding-top: 100% -} - -.flex-row { - -webkit-box-orient: horizontal !important; - -webkit-box-direction: normal !important; - -ms-flex-direction: row !important; - flex-direction: row !important -} - -.flex-column { - -webkit-box-orient: vertical !important; - -webkit-box-direction: normal !important; - -ms-flex-direction: column !important; - flex-direction: column !important -} - -.flex-row-reverse { - -webkit-box-orient: horizontal !important; - -webkit-box-direction: reverse !important; - -ms-flex-direction: row-reverse !important; - flex-direction: row-reverse !important -} - -.flex-column-reverse { - -webkit-box-orient: vertical !important; - -webkit-box-direction: reverse !important; - -ms-flex-direction: column-reverse !important; - flex-direction: column-reverse !important -} - -.flex-wrap { - -ms-flex-wrap: wrap !important; - flex-wrap: wrap !important -} - -.flex-nowrap { - -ms-flex-wrap: nowrap !important; - flex-wrap: nowrap !important -} - -.flex-wrap-reverse { - -ms-flex-wrap: wrap-reverse !important; - flex-wrap: wrap-reverse !important -} - -.flex-fill { - -webkit-box-flex: 1 !important; - -ms-flex: 1 1 auto !important; - flex: 1 1 auto !important -} - -.flex-grow-0 { - -webkit-box-flex: 0 !important; - -ms-flex-positive: 0 !important; - flex-grow: 0 !important -} - -.flex-grow-1 { - -webkit-box-flex: 1 !important; - -ms-flex-positive: 1 !important; - flex-grow: 1 !important -} - -.flex-shrink-0 { - -ms-flex-negative: 0 !important; - flex-shrink: 0 !important -} - -.flex-shrink-1 { - -ms-flex-negative: 1 !important; - flex-shrink: 1 !important -} - -.justify-content-start { - -webkit-box-pack: start !important; - -ms-flex-pack: start !important; - justify-content: flex-start !important -} - -.justify-content-end { - -webkit-box-pack: end !important; - -ms-flex-pack: end !important; - justify-content: flex-end !important -} - -.justify-content-center { - -webkit-box-pack: center !important; - -ms-flex-pack: center !important; - justify-content: center !important -} - -.justify-content-between { - -webkit-box-pack: justify !important; - -ms-flex-pack: justify !important; - justify-content: space-between !important -} - -.justify-content-around { - -ms-flex-pack: distribute !important; - justify-content: space-around !important -} - -.align-items-start { - -webkit-box-align: start !important; - -ms-flex-align: start !important; - align-items: flex-start !important -} - -.align-items-end { - -webkit-box-align: end !important; - -ms-flex-align: end !important; - align-items: flex-end !important -} - -.align-items-center { - -webkit-box-align: center !important; - -ms-flex-align: center !important; - align-items: center !important -} - -.align-items-baseline { - -webkit-box-align: baseline !important; - -ms-flex-align: baseline !important; - align-items: baseline !important -} - -.align-items-stretch { - -webkit-box-align: stretch !important; - -ms-flex-align: stretch !important; - align-items: stretch !important -} - -.align-content-start { - -ms-flex-line-pack: start !important; - align-content: flex-start !important -} - -.align-content-end { - -ms-flex-line-pack: end !important; - align-content: flex-end !important -} - -.align-content-center { - -ms-flex-line-pack: center !important; - align-content: center !important -} - -.align-content-between { - -ms-flex-line-pack: justify !important; - align-content: space-between !important -} - -.align-content-around { - -ms-flex-line-pack: distribute !important; - align-content: space-around !important -} - -.align-content-stretch { - -ms-flex-line-pack: stretch !important; - align-content: stretch !important -} - -.align-self-auto { - -ms-flex-item-align: auto !important; - align-self: auto !important -} - -.align-self-start { - -ms-flex-item-align: start !important; - align-self: flex-start !important -} - -.align-self-end { - -ms-flex-item-align: end !important; - align-self: flex-end !important -} - -.align-self-center { - -ms-flex-item-align: center !important; - align-self: center !important -} - -.align-self-baseline { - -ms-flex-item-align: baseline !important; - align-self: baseline !important -} - -.align-self-stretch { - -ms-flex-item-align: stretch !important; - align-self: stretch !important -} - -@media(min-width: 576px) { - .flex-sm-row { - -webkit-box-orient: horizontal !important; - -webkit-box-direction: normal !important; - -ms-flex-direction: row !important; - flex-direction: row !important - } - - .flex-sm-column { - -webkit-box-orient: vertical !important; - -webkit-box-direction: normal !important; - -ms-flex-direction: column !important; - flex-direction: column !important - } - - .flex-sm-row-reverse { - -webkit-box-orient: horizontal !important; - -webkit-box-direction: reverse !important; - -ms-flex-direction: row-reverse !important; - flex-direction: row-reverse !important - } - - .flex-sm-column-reverse { - -webkit-box-orient: vertical !important; - -webkit-box-direction: reverse !important; - -ms-flex-direction: column-reverse !important; - flex-direction: column-reverse !important - } - - .flex-sm-wrap { - -ms-flex-wrap: wrap !important; - flex-wrap: wrap !important - } - - .flex-sm-nowrap { - -ms-flex-wrap: nowrap !important; - flex-wrap: nowrap !important - } - - .flex-sm-wrap-reverse { - -ms-flex-wrap: wrap-reverse !important; - flex-wrap: wrap-reverse !important - } - - .flex-sm-fill { - -webkit-box-flex: 1 !important; - -ms-flex: 1 1 auto !important; - flex: 1 1 auto !important - } - - .flex-sm-grow-0 { - -webkit-box-flex: 0 !important; - -ms-flex-positive: 0 !important; - flex-grow: 0 !important - } - - .flex-sm-grow-1 { - -webkit-box-flex: 1 !important; - -ms-flex-positive: 1 !important; - flex-grow: 1 !important - } - - .flex-sm-shrink-0 { - -ms-flex-negative: 0 !important; - flex-shrink: 0 !important - } - - .flex-sm-shrink-1 { - -ms-flex-negative: 1 !important; - flex-shrink: 1 !important - } - - .justify-content-sm-start { - -webkit-box-pack: start !important; - -ms-flex-pack: start !important; - justify-content: flex-start !important - } - - .justify-content-sm-end { - -webkit-box-pack: end !important; - -ms-flex-pack: end !important; - justify-content: flex-end !important - } - - .justify-content-sm-center { - -webkit-box-pack: center !important; - -ms-flex-pack: center !important; - justify-content: center !important - } - - .justify-content-sm-between { - -webkit-box-pack: justify !important; - -ms-flex-pack: justify !important; - justify-content: space-between !important - } - - .justify-content-sm-around { - -ms-flex-pack: distribute !important; - justify-content: space-around !important - } - - .align-items-sm-start { - -webkit-box-align: start !important; - -ms-flex-align: start !important; - align-items: flex-start !important - } - - .align-items-sm-end { - -webkit-box-align: end !important; - -ms-flex-align: end !important; - align-items: flex-end !important - } - - .align-items-sm-center { - -webkit-box-align: center !important; - -ms-flex-align: center !important; - align-items: center !important - } - - .align-items-sm-baseline { - -webkit-box-align: baseline !important; - -ms-flex-align: baseline !important; - align-items: baseline !important - } - - .align-items-sm-stretch { - -webkit-box-align: stretch !important; - -ms-flex-align: stretch !important; - align-items: stretch !important - } - - .align-content-sm-start { - -ms-flex-line-pack: start !important; - align-content: flex-start !important - } - - .align-content-sm-end { - -ms-flex-line-pack: end !important; - align-content: flex-end !important - } - - .align-content-sm-center { - -ms-flex-line-pack: center !important; - align-content: center !important - } - - .align-content-sm-between { - -ms-flex-line-pack: justify !important; - align-content: space-between !important - } - - .align-content-sm-around { - -ms-flex-line-pack: distribute !important; - align-content: space-around !important - } - - .align-content-sm-stretch { - -ms-flex-line-pack: stretch !important; - align-content: stretch !important - } - - .align-self-sm-auto { - -ms-flex-item-align: auto !important; - align-self: auto !important - } - - .align-self-sm-start { - -ms-flex-item-align: start !important; - align-self: flex-start !important - } - - .align-self-sm-end { - -ms-flex-item-align: end !important; - align-self: flex-end !important - } - - .align-self-sm-center { - -ms-flex-item-align: center !important; - align-self: center !important - } - - .align-self-sm-baseline { - -ms-flex-item-align: baseline !important; - align-self: baseline !important - } - - .align-self-sm-stretch { - -ms-flex-item-align: stretch !important; - align-self: stretch !important - } -} - -@media(min-width: 768px) { - .flex-md-row { - -webkit-box-orient: horizontal !important; - -webkit-box-direction: normal !important; - -ms-flex-direction: row !important; - flex-direction: row !important - } - - .flex-md-column { - -webkit-box-orient: vertical !important; - -webkit-box-direction: normal !important; - -ms-flex-direction: column !important; - flex-direction: column !important - } - - .flex-md-row-reverse { - -webkit-box-orient: horizontal !important; - -webkit-box-direction: reverse !important; - -ms-flex-direction: row-reverse !important; - flex-direction: row-reverse !important - } - - .flex-md-column-reverse { - -webkit-box-orient: vertical !important; - -webkit-box-direction: reverse !important; - -ms-flex-direction: column-reverse !important; - flex-direction: column-reverse !important - } - - .flex-md-wrap { - -ms-flex-wrap: wrap !important; - flex-wrap: wrap !important - } - - .flex-md-nowrap { - -ms-flex-wrap: nowrap !important; - flex-wrap: nowrap !important - } - - .flex-md-wrap-reverse { - -ms-flex-wrap: wrap-reverse !important; - flex-wrap: wrap-reverse !important - } - - .flex-md-fill { - -webkit-box-flex: 1 !important; - -ms-flex: 1 1 auto !important; - flex: 1 1 auto !important - } - - .flex-md-grow-0 { - -webkit-box-flex: 0 !important; - -ms-flex-positive: 0 !important; - flex-grow: 0 !important - } - - .flex-md-grow-1 { - -webkit-box-flex: 1 !important; - -ms-flex-positive: 1 !important; - flex-grow: 1 !important - } - - .flex-md-shrink-0 { - -ms-flex-negative: 0 !important; - flex-shrink: 0 !important - } - - .flex-md-shrink-1 { - -ms-flex-negative: 1 !important; - flex-shrink: 1 !important - } - - .justify-content-md-start { - -webkit-box-pack: start !important; - -ms-flex-pack: start !important; - justify-content: flex-start !important - } - - .justify-content-md-end { - -webkit-box-pack: end !important; - -ms-flex-pack: end !important; - justify-content: flex-end !important - } - - .justify-content-md-center { - -webkit-box-pack: center !important; - -ms-flex-pack: center !important; - justify-content: center !important - } - - .justify-content-md-between { - -webkit-box-pack: justify !important; - -ms-flex-pack: justify !important; - justify-content: space-between !important - } - - .justify-content-md-around { - -ms-flex-pack: distribute !important; - justify-content: space-around !important - } - - .align-items-md-start { - -webkit-box-align: start !important; - -ms-flex-align: start !important; - align-items: flex-start !important - } - - .align-items-md-end { - -webkit-box-align: end !important; - -ms-flex-align: end !important; - align-items: flex-end !important - } - - .align-items-md-center { - -webkit-box-align: center !important; - -ms-flex-align: center !important; - align-items: center !important - } - - .align-items-md-baseline { - -webkit-box-align: baseline !important; - -ms-flex-align: baseline !important; - align-items: baseline !important - } - - .align-items-md-stretch { - -webkit-box-align: stretch !important; - -ms-flex-align: stretch !important; - align-items: stretch !important - } - - .align-content-md-start { - -ms-flex-line-pack: start !important; - align-content: flex-start !important - } - - .align-content-md-end { - -ms-flex-line-pack: end !important; - align-content: flex-end !important - } - - .align-content-md-center { - -ms-flex-line-pack: center !important; - align-content: center !important - } - - .align-content-md-between { - -ms-flex-line-pack: justify !important; - align-content: space-between !important - } - - .align-content-md-around { - -ms-flex-line-pack: distribute !important; - align-content: space-around !important - } - - .align-content-md-stretch { - -ms-flex-line-pack: stretch !important; - align-content: stretch !important - } - - .align-self-md-auto { - -ms-flex-item-align: auto !important; - align-self: auto !important - } - - .align-self-md-start { - -ms-flex-item-align: start !important; - align-self: flex-start !important - } - - .align-self-md-end { - -ms-flex-item-align: end !important; - align-self: flex-end !important - } - - .align-self-md-center { - -ms-flex-item-align: center !important; - align-self: center !important - } - - .align-self-md-baseline { - -ms-flex-item-align: baseline !important; - align-self: baseline !important - } - - .align-self-md-stretch { - -ms-flex-item-align: stretch !important; - align-self: stretch !important - } -} - -@media(min-width: 992px) { - .flex-lg-row { - -webkit-box-orient: horizontal !important; - -webkit-box-direction: normal !important; - -ms-flex-direction: row !important; - flex-direction: row !important - } - - .flex-lg-column { - -webkit-box-orient: vertical !important; - -webkit-box-direction: normal !important; - -ms-flex-direction: column !important; - flex-direction: column !important - } - - .flex-lg-row-reverse { - -webkit-box-orient: horizontal !important; - -webkit-box-direction: reverse !important; - -ms-flex-direction: row-reverse !important; - flex-direction: row-reverse !important - } - - .flex-lg-column-reverse { - -webkit-box-orient: vertical !important; - -webkit-box-direction: reverse !important; - -ms-flex-direction: column-reverse !important; - flex-direction: column-reverse !important - } - - .flex-lg-wrap { - -ms-flex-wrap: wrap !important; - flex-wrap: wrap !important - } - - .flex-lg-nowrap { - -ms-flex-wrap: nowrap !important; - flex-wrap: nowrap !important - } - - .flex-lg-wrap-reverse { - -ms-flex-wrap: wrap-reverse !important; - flex-wrap: wrap-reverse !important - } - - .flex-lg-fill { - -webkit-box-flex: 1 !important; - -ms-flex: 1 1 auto !important; - flex: 1 1 auto !important - } - - .flex-lg-grow-0 { - -webkit-box-flex: 0 !important; - -ms-flex-positive: 0 !important; - flex-grow: 0 !important - } - - .flex-lg-grow-1 { - -webkit-box-flex: 1 !important; - -ms-flex-positive: 1 !important; - flex-grow: 1 !important - } - - .flex-lg-shrink-0 { - -ms-flex-negative: 0 !important; - flex-shrink: 0 !important - } - - .flex-lg-shrink-1 { - -ms-flex-negative: 1 !important; - flex-shrink: 1 !important - } - - .justify-content-lg-start { - -webkit-box-pack: start !important; - -ms-flex-pack: start !important; - justify-content: flex-start !important - } - - .justify-content-lg-end { - -webkit-box-pack: end !important; - -ms-flex-pack: end !important; - justify-content: flex-end !important - } - - .justify-content-lg-center { - -webkit-box-pack: center !important; - -ms-flex-pack: center !important; - justify-content: center !important - } - - .justify-content-lg-between { - -webkit-box-pack: justify !important; - -ms-flex-pack: justify !important; - justify-content: space-between !important - } - - .justify-content-lg-around { - -ms-flex-pack: distribute !important; - justify-content: space-around !important - } - - .align-items-lg-start { - -webkit-box-align: start !important; - -ms-flex-align: start !important; - align-items: flex-start !important - } - - .align-items-lg-end { - -webkit-box-align: end !important; - -ms-flex-align: end !important; - align-items: flex-end !important - } - - .align-items-lg-center { - -webkit-box-align: center !important; - -ms-flex-align: center !important; - align-items: center !important - } - - .align-items-lg-baseline { - -webkit-box-align: baseline !important; - -ms-flex-align: baseline !important; - align-items: baseline !important - } - - .align-items-lg-stretch { - -webkit-box-align: stretch !important; - -ms-flex-align: stretch !important; - align-items: stretch !important - } - - .align-content-lg-start { - -ms-flex-line-pack: start !important; - align-content: flex-start !important - } - - .align-content-lg-end { - -ms-flex-line-pack: end !important; - align-content: flex-end !important - } - - .align-content-lg-center { - -ms-flex-line-pack: center !important; - align-content: center !important - } - - .align-content-lg-between { - -ms-flex-line-pack: justify !important; - align-content: space-between !important - } - - .align-content-lg-around { - -ms-flex-line-pack: distribute !important; - align-content: space-around !important - } - - .align-content-lg-stretch { - -ms-flex-line-pack: stretch !important; - align-content: stretch !important - } - - .align-self-lg-auto { - -ms-flex-item-align: auto !important; - align-self: auto !important - } - - .align-self-lg-start { - -ms-flex-item-align: start !important; - align-self: flex-start !important - } - - .align-self-lg-end { - -ms-flex-item-align: end !important; - align-self: flex-end !important - } - - .align-self-lg-center { - -ms-flex-item-align: center !important; - align-self: center !important - } - - .align-self-lg-baseline { - -ms-flex-item-align: baseline !important; - align-self: baseline !important - } - - .align-self-lg-stretch { - -ms-flex-item-align: stretch !important; - align-self: stretch !important - } -} - -@media(min-width: 1200px) { - .flex-xl-row { - -webkit-box-orient: horizontal !important; - -webkit-box-direction: normal !important; - -ms-flex-direction: row !important; - flex-direction: row !important - } - - .flex-xl-column { - -webkit-box-orient: vertical !important; - -webkit-box-direction: normal !important; - -ms-flex-direction: column !important; - flex-direction: column !important - } - - .flex-xl-row-reverse { - -webkit-box-orient: horizontal !important; - -webkit-box-direction: reverse !important; - -ms-flex-direction: row-reverse !important; - flex-direction: row-reverse !important - } - - .flex-xl-column-reverse { - -webkit-box-orient: vertical !important; - -webkit-box-direction: reverse !important; - -ms-flex-direction: column-reverse !important; - flex-direction: column-reverse !important - } - - .flex-xl-wrap { - -ms-flex-wrap: wrap !important; - flex-wrap: wrap !important - } - - .flex-xl-nowrap { - -ms-flex-wrap: nowrap !important; - flex-wrap: nowrap !important - } - - .flex-xl-wrap-reverse { - -ms-flex-wrap: wrap-reverse !important; - flex-wrap: wrap-reverse !important - } - - .flex-xl-fill { - -webkit-box-flex: 1 !important; - -ms-flex: 1 1 auto !important; - flex: 1 1 auto !important - } - - .flex-xl-grow-0 { - -webkit-box-flex: 0 !important; - -ms-flex-positive: 0 !important; - flex-grow: 0 !important - } - - .flex-xl-grow-1 { - -webkit-box-flex: 1 !important; - -ms-flex-positive: 1 !important; - flex-grow: 1 !important - } - - .flex-xl-shrink-0 { - -ms-flex-negative: 0 !important; - flex-shrink: 0 !important - } - - .flex-xl-shrink-1 { - -ms-flex-negative: 1 !important; - flex-shrink: 1 !important - } - - .justify-content-xl-start { - -webkit-box-pack: start !important; - -ms-flex-pack: start !important; - justify-content: flex-start !important - } - - .justify-content-xl-end { - -webkit-box-pack: end !important; - -ms-flex-pack: end !important; - justify-content: flex-end !important - } - - .justify-content-xl-center { - -webkit-box-pack: center !important; - -ms-flex-pack: center !important; - justify-content: center !important - } - - .justify-content-xl-between { - -webkit-box-pack: justify !important; - -ms-flex-pack: justify !important; - justify-content: space-between !important - } - - .justify-content-xl-around { - -ms-flex-pack: distribute !important; - justify-content: space-around !important - } - - .align-items-xl-start { - -webkit-box-align: start !important; - -ms-flex-align: start !important; - align-items: flex-start !important - } - - .align-items-xl-end { - -webkit-box-align: end !important; - -ms-flex-align: end !important; - align-items: flex-end !important - } - - .align-items-xl-center { - -webkit-box-align: center !important; - -ms-flex-align: center !important; - align-items: center !important - } - - .align-items-xl-baseline { - -webkit-box-align: baseline !important; - -ms-flex-align: baseline !important; - align-items: baseline !important - } - - .align-items-xl-stretch { - -webkit-box-align: stretch !important; - -ms-flex-align: stretch !important; - align-items: stretch !important - } - - .align-content-xl-start { - -ms-flex-line-pack: start !important; - align-content: flex-start !important - } - - .align-content-xl-end { - -ms-flex-line-pack: end !important; - align-content: flex-end !important - } - - .align-content-xl-center { - -ms-flex-line-pack: center !important; - align-content: center !important - } - - .align-content-xl-between { - -ms-flex-line-pack: justify !important; - align-content: space-between !important - } - - .align-content-xl-around { - -ms-flex-line-pack: distribute !important; - align-content: space-around !important - } - - .align-content-xl-stretch { - -ms-flex-line-pack: stretch !important; - align-content: stretch !important - } - - .align-self-xl-auto { - -ms-flex-item-align: auto !important; - align-self: auto !important - } - - .align-self-xl-start { - -ms-flex-item-align: start !important; - align-self: flex-start !important - } - - .align-self-xl-end { - -ms-flex-item-align: end !important; - align-self: flex-end !important - } - - .align-self-xl-center { - -ms-flex-item-align: center !important; - align-self: center !important - } - - .align-self-xl-baseline { - -ms-flex-item-align: baseline !important; - align-self: baseline !important - } - - .align-self-xl-stretch { - -ms-flex-item-align: stretch !important; - align-self: stretch !important - } -} - -.float-left { - float: left !important -} - -.float-right { - float: right !important -} - -.float-none { - float: none !important -} - -@media(min-width: 576px) { - .float-sm-left { - float: left !important - } - - .float-sm-right { - float: right !important - } - - .float-sm-none { - float: none !important - } -} - -@media(min-width: 768px) { - .float-md-left { - float: left !important - } - - .float-md-right { - float: right !important - } - - .float-md-none { - float: none !important - } -} - -@media(min-width: 992px) { - .float-lg-left { - float: left !important - } - - .float-lg-right { - float: right !important - } - - .float-lg-none { - float: none !important - } -} - -@media(min-width: 1200px) { - .float-xl-left { - float: left !important - } - - .float-xl-right { - float: right !important - } - - .float-xl-none { - float: none !important - } -} - -.user-select-all { - -webkit-user-select: all !important; - -moz-user-select: all !important; - -ms-user-select: all !important; - user-select: all !important -} - -.user-select-auto { - -webkit-user-select: auto !important; - -moz-user-select: auto !important; - -ms-user-select: auto !important; - user-select: auto !important -} - -.user-select-none { - -webkit-user-select: none !important; - -moz-user-select: none !important; - -ms-user-select: none !important; - user-select: none !important -} - -.overflow-auto { - overflow: auto !important -} - -.overflow-hidden { - overflow: hidden !important -} - -.position-static { - position: static !important -} - -.position-relative { - position: relative !important -} - -.position-absolute { - position: absolute !important -} - -.position-fixed { - position: fixed !important -} - -.position-sticky { - position: sticky !important -} - -.fixed-top { - position: fixed; - top: 0; - right: 0; - left: 0; - z-index: 1030 -} - -.fixed-bottom { - position: fixed; - right: 0; - bottom: 0; - left: 0; - z-index: 1030 -} - -@supports(position: sticky) { - .sticky-top { - position: sticky; - top: 0; - z-index: 1020 - } -} - -.sr-only { - position: absolute; - width: 1px; - height: 1px; - padding: 0; - margin: -1px; - overflow: hidden; - clip: rect(0, 0, 0, 0); - white-space: nowrap; - border: 0 -} - -.sr-only-focusable:active, -.sr-only-focusable:focus { - position: static; - width: auto; - height: auto; - overflow: visible; - clip: auto; - white-space: normal -} - -.shadow-sm { - -webkit-box-shadow: 0 .125rem .25rem rgba(0, 0, 0, .075) !important; - box-shadow: 0 .125rem .25rem rgba(0, 0, 0, .075) !important -} - -.shadow { - -webkit-box-shadow: 0 .5rem 1rem rgba(0, 0, 0, .15) !important; - box-shadow: 0 .5rem 1rem rgba(0, 0, 0, .15) !important -} - -.shadow-lg { - -webkit-box-shadow: 0 1rem 3rem rgba(0, 0, 0, .175) !important; - box-shadow: 0 1rem 3rem rgba(0, 0, 0, .175) !important -} - -.shadow-none { - -webkit-box-shadow: none !important; - box-shadow: none !important -} - -.w-25 { - width: 25% !important -} - -.w-50 { - width: 50% !important -} - -.w-75 { - width: 75% !important -} - -.w-100 { - width: 100% !important -} - -.w-auto { - width: auto !important -} - -.h-25 { - height: 25% !important -} - -.h-50 { - height: 50% !important -} - -.h-75 { - height: 75% !important -} - -.h-100 { - height: 100% !important -} - -.h-auto { - height: auto !important -} - -.mw-100 { - max-width: 100% !important -} - -.mh-100 { - max-height: 100% !important -} - -.min-vw-100 { - min-width: 100vw !important -} - -.min-vh-100 { - min-height: 100vh !important -} - -.vw-100 { - width: 100vw !important -} - -.vh-100 { - height: 100vh !important -} - -.m-0 { - margin: 0 !important -} - -.mt-0, -.my-0 { - margin-top: 0 !important -} - -.mr-0, -.mx-0 { - margin-right: 0 !important -} - -.mb-0, -.my-0 { - margin-bottom: 0 !important -} - -.ml-0, -.mx-0 { - margin-left: 0 !important -} - -.m-1 { - margin: .25rem !important -} - -.mt-1, -.my-1 { - margin-top: .25rem !important -} - -.mr-1, -.mx-1 { - margin-right: .25rem !important -} - -.mb-1, -.my-1 { - margin-bottom: .25rem !important -} - -.ml-1, -.mx-1 { - margin-left: .25rem !important -} - -.m-2 { - margin: .5rem !important -} - -.mt-2, -.my-2 { - margin-top: .5rem !important -} - -.mr-2, -.mx-2 { - margin-right: .5rem !important -} - -.mb-2, -.my-2 { - margin-bottom: .5rem !important -} - -.ml-2, -.mx-2 { - margin-left: .5rem !important -} - -.m-3 { - margin: 1rem !important -} - -.mt-3, -.my-3 { - margin-top: 1rem !important -} - -.mr-3, -.mx-3 { - margin-right: 1rem !important -} - -.mb-3, -.my-3 { - margin-bottom: 1rem !important -} - -.ml-3, -.mx-3 { - margin-left: 1rem !important -} - -.m-4 { - margin: 1.5rem !important -} - -.mt-4, -.my-4 { - margin-top: 1.5rem !important -} - -.mr-4, -.mx-4 { - margin-right: 1.5rem !important -} - -.mb-4, -.my-4 { - margin-bottom: 1.5rem !important -} - -.ml-4, -.mx-4 { - margin-left: 1.5rem !important -} - -.m-5 { - margin: 3rem !important -} - -.mt-5, -.my-5 { - margin-top: 3rem !important -} - -.mr-5, -.mx-5 { - margin-right: 3rem !important -} - -.mb-5, -.my-5 { - margin-bottom: 3rem !important -} - -.ml-5, -.mx-5 { - margin-left: 3rem !important -} - -.p-0 { - padding: 0 !important -} - -.pt-0, -.py-0 { - padding-top: 0 !important -} - -.pr-0, -.px-0 { - padding-right: 0 !important -} - -.pb-0, -.py-0 { - padding-bottom: 0 !important -} - -.pl-0, -.px-0 { - padding-left: 0 !important -} - -.p-1 { - padding: .25rem !important -} - -.pt-1, -.py-1 { - padding-top: .25rem !important -} - -.pr-1, -.px-1 { - padding-right: .25rem !important -} - -.pb-1, -.py-1 { - padding-bottom: .25rem !important -} - -.pl-1, -.px-1 { - padding-left: .25rem !important -} - -.p-2 { - padding: .5rem !important -} - -.pt-2, -.py-2 { - padding-top: .5rem !important -} - -.pr-2, -.px-2 { - padding-right: .5rem !important -} - -.pb-2, -.py-2 { - padding-bottom: .5rem !important -} - -.pl-2, -.px-2 { - padding-left: .5rem !important -} - -.p-3 { - padding: 1rem !important -} - -.pt-3, -.py-3 { - padding-top: 1rem !important -} - -.pr-3, -.px-3 { - padding-right: 1rem !important -} - -.pb-3, -.py-3 { - padding-bottom: 1rem !important -} - -.pl-3, -.px-3 { - padding-left: 1rem !important -} - -.p-4 { - padding: 1.5rem !important -} - -.pt-4, -.py-4 { - padding-top: 1.5rem !important -} - -.pr-4, -.px-4 { - padding-right: 1.5rem !important -} - -.pb-4, -.py-4 { - padding-bottom: 1.5rem !important -} - -.pl-4, -.px-4 { - padding-left: 1.5rem !important -} - -.p-5 { - padding: 3rem !important -} - -.pt-5, -.py-5 { - padding-top: 3rem !important -} - -.pr-5, -.px-5 { - padding-right: 3rem !important -} - -.pb-5, -.py-5 { - padding-bottom: 3rem !important -} - -.pl-5, -.px-5 { - padding-left: 3rem !important -} - -.m-n1 { - margin: -0.25rem !important -} - -.mt-n1, -.my-n1 { - margin-top: -0.25rem !important -} - -.mr-n1, -.mx-n1 { - margin-right: -0.25rem !important -} - -.mb-n1, -.my-n1 { - margin-bottom: -0.25rem !important -} - -.ml-n1, -.mx-n1 { - margin-left: -0.25rem !important -} - -.m-n2 { - margin: -0.5rem !important -} - -.mt-n2, -.my-n2 { - margin-top: -0.5rem !important -} - -.mr-n2, -.mx-n2 { - margin-right: -0.5rem !important -} - -.mb-n2, -.my-n2 { - margin-bottom: -0.5rem !important -} - -.ml-n2, -.mx-n2 { - margin-left: -0.5rem !important -} - -.m-n3 { - margin: -1rem !important -} - -.mt-n3, -.my-n3 { - margin-top: -1rem !important -} - -.mr-n3, -.mx-n3 { - margin-right: -1rem !important -} - -.mb-n3, -.my-n3 { - margin-bottom: -1rem !important -} - -.ml-n3, -.mx-n3 { - margin-left: -1rem !important -} - -.m-n4 { - margin: -1.5rem !important -} - -.mt-n4, -.my-n4 { - margin-top: -1.5rem !important -} - -.mr-n4, -.mx-n4 { - margin-right: -1.5rem !important -} - -.mb-n4, -.my-n4 { - margin-bottom: -1.5rem !important -} - -.ml-n4, -.mx-n4 { - margin-left: -1.5rem !important -} - -.m-n5 { - margin: -3rem !important -} - -.mt-n5, -.my-n5 { - margin-top: -3rem !important -} - -.mr-n5, -.mx-n5 { - margin-right: -3rem !important -} - -.mb-n5, -.my-n5 { - margin-bottom: -3rem !important -} - -.ml-n5, -.mx-n5 { - margin-left: -3rem !important -} - -.m-auto { - margin: auto !important -} - -.mt-auto, -.my-auto { - margin-top: auto !important -} - -.mr-auto, -.mx-auto { - margin-right: auto !important -} - -.mb-auto, -.my-auto { - margin-bottom: auto !important -} - -.ml-auto, -.mx-auto { - margin-left: auto !important -} - -@media(min-width: 576px) { - .m-sm-0 { - margin: 0 !important - } - - .mt-sm-0, - .my-sm-0 { - margin-top: 0 !important - } - - .mr-sm-0, - .mx-sm-0 { - margin-right: 0 !important - } - - .mb-sm-0, - .my-sm-0 { - margin-bottom: 0 !important - } - - .ml-sm-0, - .mx-sm-0 { - margin-left: 0 !important - } - - .m-sm-1 { - margin: .25rem !important - } - - .mt-sm-1, - .my-sm-1 { - margin-top: .25rem !important - } - - .mr-sm-1, - .mx-sm-1 { - margin-right: .25rem !important - } - - .mb-sm-1, - .my-sm-1 { - margin-bottom: .25rem !important - } - - .ml-sm-1, - .mx-sm-1 { - margin-left: .25rem !important - } - - .m-sm-2 { - margin: .5rem !important - } - - .mt-sm-2, - .my-sm-2 { - margin-top: .5rem !important - } - - .mr-sm-2, - .mx-sm-2 { - margin-right: .5rem !important - } - - .mb-sm-2, - .my-sm-2 { - margin-bottom: .5rem !important - } - - .ml-sm-2, - .mx-sm-2 { - margin-left: .5rem !important - } - - .m-sm-3 { - margin: 1rem !important - } - - .mt-sm-3, - .my-sm-3 { - margin-top: 1rem !important - } - - .mr-sm-3, - .mx-sm-3 { - margin-right: 1rem !important - } - - .mb-sm-3, - .my-sm-3 { - margin-bottom: 1rem !important - } - - .ml-sm-3, - .mx-sm-3 { - margin-left: 1rem !important - } - - .m-sm-4 { - margin: 1.5rem !important - } - - .mt-sm-4, - .my-sm-4 { - margin-top: 1.5rem !important - } - - .mr-sm-4, - .mx-sm-4 { - margin-right: 1.5rem !important - } - - .mb-sm-4, - .my-sm-4 { - margin-bottom: 1.5rem !important - } - - .ml-sm-4, - .mx-sm-4 { - margin-left: 1.5rem !important - } - - .m-sm-5 { - margin: 3rem !important - } - - .mt-sm-5, - .my-sm-5 { - margin-top: 3rem !important - } - - .mr-sm-5, - .mx-sm-5 { - margin-right: 3rem !important - } - - .mb-sm-5, - .my-sm-5 { - margin-bottom: 3rem !important - } - - .ml-sm-5, - .mx-sm-5 { - margin-left: 3rem !important - } - - .p-sm-0 { - padding: 0 !important - } - - .pt-sm-0, - .py-sm-0 { - padding-top: 0 !important - } - - .pr-sm-0, - .px-sm-0 { - padding-right: 0 !important - } - - .pb-sm-0, - .py-sm-0 { - padding-bottom: 0 !important - } - - .pl-sm-0, - .px-sm-0 { - padding-left: 0 !important - } - - .p-sm-1 { - padding: .25rem !important - } - - .pt-sm-1, - .py-sm-1 { - padding-top: .25rem !important - } - - .pr-sm-1, - .px-sm-1 { - padding-right: .25rem !important - } - - .pb-sm-1, - .py-sm-1 { - padding-bottom: .25rem !important - } - - .pl-sm-1, - .px-sm-1 { - padding-left: .25rem !important - } - - .p-sm-2 { - padding: .5rem !important - } - - .pt-sm-2, - .py-sm-2 { - padding-top: .5rem !important - } - - .pr-sm-2, - .px-sm-2 { - padding-right: .5rem !important - } - - .pb-sm-2, - .py-sm-2 { - padding-bottom: .5rem !important - } - - .pl-sm-2, - .px-sm-2 { - padding-left: .5rem !important - } - - .p-sm-3 { - padding: 1rem !important - } - - .pt-sm-3, - .py-sm-3 { - padding-top: 1rem !important - } - - .pr-sm-3, - .px-sm-3 { - padding-right: 1rem !important - } - - .pb-sm-3, - .py-sm-3 { - padding-bottom: 1rem !important - } - - .pl-sm-3, - .px-sm-3 { - padding-left: 1rem !important - } - - .p-sm-4 { - padding: 1.5rem !important - } - - .pt-sm-4, - .py-sm-4 { - padding-top: 1.5rem !important - } - - .pr-sm-4, - .px-sm-4 { - padding-right: 1.5rem !important - } - - .pb-sm-4, - .py-sm-4 { - padding-bottom: 1.5rem !important - } - - .pl-sm-4, - .px-sm-4 { - padding-left: 1.5rem !important - } - - .p-sm-5 { - padding: 3rem !important - } - - .pt-sm-5, - .py-sm-5 { - padding-top: 3rem !important - } - - .pr-sm-5, - .px-sm-5 { - padding-right: 3rem !important - } - - .pb-sm-5, - .py-sm-5 { - padding-bottom: 3rem !important - } - - .pl-sm-5, - .px-sm-5 { - padding-left: 3rem !important - } - - .m-sm-n1 { - margin: -0.25rem !important - } - - .mt-sm-n1, - .my-sm-n1 { - margin-top: -0.25rem !important - } - - .mr-sm-n1, - .mx-sm-n1 { - margin-right: -0.25rem !important - } - - .mb-sm-n1, - .my-sm-n1 { - margin-bottom: -0.25rem !important - } - - .ml-sm-n1, - .mx-sm-n1 { - margin-left: -0.25rem !important - } - - .m-sm-n2 { - margin: -0.5rem !important - } - - .mt-sm-n2, - .my-sm-n2 { - margin-top: -0.5rem !important - } - - .mr-sm-n2, - .mx-sm-n2 { - margin-right: -0.5rem !important - } - - .mb-sm-n2, - .my-sm-n2 { - margin-bottom: -0.5rem !important - } - - .ml-sm-n2, - .mx-sm-n2 { - margin-left: -0.5rem !important - } - - .m-sm-n3 { - margin: -1rem !important - } - - .mt-sm-n3, - .my-sm-n3 { - margin-top: -1rem !important - } - - .mr-sm-n3, - .mx-sm-n3 { - margin-right: -1rem !important - } - - .mb-sm-n3, - .my-sm-n3 { - margin-bottom: -1rem !important - } - - .ml-sm-n3, - .mx-sm-n3 { - margin-left: -1rem !important - } - - .m-sm-n4 { - margin: -1.5rem !important - } - - .mt-sm-n4, - .my-sm-n4 { - margin-top: -1.5rem !important - } - - .mr-sm-n4, - .mx-sm-n4 { - margin-right: -1.5rem !important - } - - .mb-sm-n4, - .my-sm-n4 { - margin-bottom: -1.5rem !important - } - - .ml-sm-n4, - .mx-sm-n4 { - margin-left: -1.5rem !important - } - - .m-sm-n5 { - margin: -3rem !important - } - - .mt-sm-n5, - .my-sm-n5 { - margin-top: -3rem !important - } - - .mr-sm-n5, - .mx-sm-n5 { - margin-right: -3rem !important - } - - .mb-sm-n5, - .my-sm-n5 { - margin-bottom: -3rem !important - } - - .ml-sm-n5, - .mx-sm-n5 { - margin-left: -3rem !important - } - - .m-sm-auto { - margin: auto !important - } - - .mt-sm-auto, - .my-sm-auto { - margin-top: auto !important - } - - .mr-sm-auto, - .mx-sm-auto { - margin-right: auto !important - } - - .mb-sm-auto, - .my-sm-auto { - margin-bottom: auto !important - } - - .ml-sm-auto, - .mx-sm-auto { - margin-left: auto !important - } -} - -@media(min-width: 768px) { - .m-md-0 { - margin: 0 !important - } - - .mt-md-0, - .my-md-0 { - margin-top: 0 !important - } - - .mr-md-0, - .mx-md-0 { - margin-right: 0 !important - } - - .mb-md-0, - .my-md-0 { - margin-bottom: 0 !important - } - - .ml-md-0, - .mx-md-0 { - margin-left: 0 !important - } - - .m-md-1 { - margin: .25rem !important - } - - .mt-md-1, - .my-md-1 { - margin-top: .25rem !important - } - - .mr-md-1, - .mx-md-1 { - margin-right: .25rem !important - } - - .mb-md-1, - .my-md-1 { - margin-bottom: .25rem !important - } - - .ml-md-1, - .mx-md-1 { - margin-left: .25rem !important - } - - .m-md-2 { - margin: .5rem !important - } - - .mt-md-2, - .my-md-2 { - margin-top: .5rem !important - } - - .mr-md-2, - .mx-md-2 { - margin-right: .5rem !important - } - - .mb-md-2, - .my-md-2 { - margin-bottom: .5rem !important - } - - .ml-md-2, - .mx-md-2 { - margin-left: .5rem !important - } - - .m-md-3 { - margin: 1rem !important - } - - .mt-md-3, - .my-md-3 { - margin-top: 1rem !important - } - - .mr-md-3, - .mx-md-3 { - margin-right: 1rem !important - } - - .mb-md-3, - .my-md-3 { - margin-bottom: 1rem !important - } - - .ml-md-3, - .mx-md-3 { - margin-left: 1rem !important - } - - .m-md-4 { - margin: 1.5rem !important - } - - .mt-md-4, - .my-md-4 { - margin-top: 1.5rem !important - } - - .mr-md-4, - .mx-md-4 { - margin-right: 1.5rem !important - } - - .mb-md-4, - .my-md-4 { - margin-bottom: 1.5rem !important - } - - .ml-md-4, - .mx-md-4 { - margin-left: 1.5rem !important - } - - .m-md-5 { - margin: 3rem !important - } - - .mt-md-5, - .my-md-5 { - margin-top: 3rem !important - } - - .mr-md-5, - .mx-md-5 { - margin-right: 3rem !important - } - - .mb-md-5, - .my-md-5 { - margin-bottom: 3rem !important - } - - .ml-md-5, - .mx-md-5 { - margin-left: 3rem !important - } - - .p-md-0 { - padding: 0 !important - } - - .pt-md-0, - .py-md-0 { - padding-top: 0 !important - } - - .pr-md-0, - .px-md-0 { - padding-right: 0 !important - } - - .pb-md-0, - .py-md-0 { - padding-bottom: 0 !important - } - - .pl-md-0, - .px-md-0 { - padding-left: 0 !important - } - - .p-md-1 { - padding: .25rem !important - } - - .pt-md-1, - .py-md-1 { - padding-top: .25rem !important - } - - .pr-md-1, - .px-md-1 { - padding-right: .25rem !important - } - - .pb-md-1, - .py-md-1 { - padding-bottom: .25rem !important - } - - .pl-md-1, - .px-md-1 { - padding-left: .25rem !important - } - - .p-md-2 { - padding: .5rem !important - } - - .pt-md-2, - .py-md-2 { - padding-top: .5rem !important - } - - .pr-md-2, - .px-md-2 { - padding-right: .5rem !important - } - - .pb-md-2, - .py-md-2 { - padding-bottom: .5rem !important - } - - .pl-md-2, - .px-md-2 { - padding-left: .5rem !important - } - - .p-md-3 { - padding: 1rem !important - } - - .pt-md-3, - .py-md-3 { - padding-top: 1rem !important - } - - .pr-md-3, - .px-md-3 { - padding-right: 1rem !important - } - - .pb-md-3, - .py-md-3 { - padding-bottom: 1rem !important - } - - .pl-md-3, - .px-md-3 { - padding-left: 1rem !important - } - - .p-md-4 { - padding: 1.5rem !important - } - - .pt-md-4, - .py-md-4 { - padding-top: 1.5rem !important - } - - .pr-md-4, - .px-md-4 { - padding-right: 1.5rem !important - } - - .pb-md-4, - .py-md-4 { - padding-bottom: 1.5rem !important - } - - .pl-md-4, - .px-md-4 { - padding-left: 1.5rem !important - } - - .p-md-5 { - padding: 3rem !important - } - - .pt-md-5, - .py-md-5 { - padding-top: 3rem !important - } - - .pr-md-5, - .px-md-5 { - padding-right: 3rem !important - } - - .pb-md-5, - .py-md-5 { - padding-bottom: 3rem !important - } - - .pl-md-5, - .px-md-5 { - padding-left: 3rem !important - } - - .m-md-n1 { - margin: -0.25rem !important - } - - .mt-md-n1, - .my-md-n1 { - margin-top: -0.25rem !important - } - - .mr-md-n1, - .mx-md-n1 { - margin-right: -0.25rem !important - } - - .mb-md-n1, - .my-md-n1 { - margin-bottom: -0.25rem !important - } - - .ml-md-n1, - .mx-md-n1 { - margin-left: -0.25rem !important - } - - .m-md-n2 { - margin: -0.5rem !important - } - - .mt-md-n2, - .my-md-n2 { - margin-top: -0.5rem !important - } - - .mr-md-n2, - .mx-md-n2 { - margin-right: -0.5rem !important - } - - .mb-md-n2, - .my-md-n2 { - margin-bottom: -0.5rem !important - } - - .ml-md-n2, - .mx-md-n2 { - margin-left: -0.5rem !important - } - - .m-md-n3 { - margin: -1rem !important - } - - .mt-md-n3, - .my-md-n3 { - margin-top: -1rem !important - } - - .mr-md-n3, - .mx-md-n3 { - margin-right: -1rem !important - } - - .mb-md-n3, - .my-md-n3 { - margin-bottom: -1rem !important - } - - .ml-md-n3, - .mx-md-n3 { - margin-left: -1rem !important - } - - .m-md-n4 { - margin: -1.5rem !important - } - - .mt-md-n4, - .my-md-n4 { - margin-top: -1.5rem !important - } - - .mr-md-n4, - .mx-md-n4 { - margin-right: -1.5rem !important - } - - .mb-md-n4, - .my-md-n4 { - margin-bottom: -1.5rem !important - } - - .ml-md-n4, - .mx-md-n4 { - margin-left: -1.5rem !important - } - - .m-md-n5 { - margin: -3rem !important - } - - .mt-md-n5, - .my-md-n5 { - margin-top: -3rem !important - } - - .mr-md-n5, - .mx-md-n5 { - margin-right: -3rem !important - } - - .mb-md-n5, - .my-md-n5 { - margin-bottom: -3rem !important - } - - .ml-md-n5, - .mx-md-n5 { - margin-left: -3rem !important - } - - .m-md-auto { - margin: auto !important - } - - .mt-md-auto, - .my-md-auto { - margin-top: auto !important - } - - .mr-md-auto, - .mx-md-auto { - margin-right: auto !important - } - - .mb-md-auto, - .my-md-auto { - margin-bottom: auto !important - } - - .ml-md-auto, - .mx-md-auto { - margin-left: auto !important - } -} - -@media(min-width: 992px) { - .m-lg-0 { - margin: 0 !important - } - - .mt-lg-0, - .my-lg-0 { - margin-top: 0 !important - } - - .mr-lg-0, - .mx-lg-0 { - margin-right: 0 !important - } - - .mb-lg-0, - .my-lg-0 { - margin-bottom: 0 !important - } - - .ml-lg-0, - .mx-lg-0 { - margin-left: 0 !important - } - - .m-lg-1 { - margin: .25rem !important - } - - .mt-lg-1, - .my-lg-1 { - margin-top: .25rem !important - } - - .mr-lg-1, - .mx-lg-1 { - margin-right: .25rem !important - } - - .mb-lg-1, - .my-lg-1 { - margin-bottom: .25rem !important - } - - .ml-lg-1, - .mx-lg-1 { - margin-left: .25rem !important - } - - .m-lg-2 { - margin: .5rem !important - } - - .mt-lg-2, - .my-lg-2 { - margin-top: .5rem !important - } - - .mr-lg-2, - .mx-lg-2 { - margin-right: .5rem !important - } - - .mb-lg-2, - .my-lg-2 { - margin-bottom: .5rem !important - } - - .ml-lg-2, - .mx-lg-2 { - margin-left: .5rem !important - } - - .m-lg-3 { - margin: 1rem !important - } - - .mt-lg-3, - .my-lg-3 { - margin-top: 1rem !important - } - - .mr-lg-3, - .mx-lg-3 { - margin-right: 1rem !important - } - - .mb-lg-3, - .my-lg-3 { - margin-bottom: 1rem !important - } - - .ml-lg-3, - .mx-lg-3 { - margin-left: 1rem !important - } - - .m-lg-4 { - margin: 1.5rem !important - } - - .mt-lg-4, - .my-lg-4 { - margin-top: 1.5rem !important - } - - .mr-lg-4, - .mx-lg-4 { - margin-right: 1.5rem !important - } - - .mb-lg-4, - .my-lg-4 { - margin-bottom: 1.5rem !important - } - - .ml-lg-4, - .mx-lg-4 { - margin-left: 1.5rem !important - } - - .m-lg-5 { - margin: 3rem !important - } - - .mt-lg-5, - .my-lg-5 { - margin-top: 3rem !important - } - - .mr-lg-5, - .mx-lg-5 { - margin-right: 3rem !important - } - - .mb-lg-5, - .my-lg-5 { - margin-bottom: 3rem !important - } - - .ml-lg-5, - .mx-lg-5 { - margin-left: 3rem !important - } - - .p-lg-0 { - padding: 0 !important - } - - .pt-lg-0, - .py-lg-0 { - padding-top: 0 !important - } - - .pr-lg-0, - .px-lg-0 { - padding-right: 0 !important - } - - .pb-lg-0, - .py-lg-0 { - padding-bottom: 0 !important - } - - .pl-lg-0, - .px-lg-0 { - padding-left: 0 !important - } - - .p-lg-1 { - padding: .25rem !important - } - - .pt-lg-1, - .py-lg-1 { - padding-top: .25rem !important - } - - .pr-lg-1, - .px-lg-1 { - padding-right: .25rem !important - } - - .pb-lg-1, - .py-lg-1 { - padding-bottom: .25rem !important - } - - .pl-lg-1, - .px-lg-1 { - padding-left: .25rem !important - } - - .p-lg-2 { - padding: .5rem !important - } - - .pt-lg-2, - .py-lg-2 { - padding-top: .5rem !important - } - - .pr-lg-2, - .px-lg-2 { - padding-right: .5rem !important - } - - .pb-lg-2, - .py-lg-2 { - padding-bottom: .5rem !important - } - - .pl-lg-2, - .px-lg-2 { - padding-left: .5rem !important - } - - .p-lg-3 { - padding: 1rem !important - } - - .pt-lg-3, - .py-lg-3 { - padding-top: 1rem !important - } - - .pr-lg-3, - .px-lg-3 { - padding-right: 1rem !important - } - - .pb-lg-3, - .py-lg-3 { - padding-bottom: 1rem !important - } - - .pl-lg-3, - .px-lg-3 { - padding-left: 1rem !important - } - - .p-lg-4 { - padding: 1.5rem !important - } - - .pt-lg-4, - .py-lg-4 { - padding-top: 1.5rem !important - } - - .pr-lg-4, - .px-lg-4 { - padding-right: 1.5rem !important - } - - .pb-lg-4, - .py-lg-4 { - padding-bottom: 1.5rem !important - } - - .pl-lg-4, - .px-lg-4 { - padding-left: 1.5rem !important - } - - .p-lg-5 { - padding: 3rem !important - } - - .pt-lg-5, - .py-lg-5 { - padding-top: 3rem !important - } - - .pr-lg-5, - .px-lg-5 { - padding-right: 3rem !important - } - - .pb-lg-5, - .py-lg-5 { - padding-bottom: 3rem !important - } - - .pl-lg-5, - .px-lg-5 { - padding-left: 3rem !important - } - - .m-lg-n1 { - margin: -0.25rem !important - } - - .mt-lg-n1, - .my-lg-n1 { - margin-top: -0.25rem !important - } - - .mr-lg-n1, - .mx-lg-n1 { - margin-right: -0.25rem !important - } - - .mb-lg-n1, - .my-lg-n1 { - margin-bottom: -0.25rem !important - } - - .ml-lg-n1, - .mx-lg-n1 { - margin-left: -0.25rem !important - } - - .m-lg-n2 { - margin: -0.5rem !important - } - - .mt-lg-n2, - .my-lg-n2 { - margin-top: -0.5rem !important - } - - .mr-lg-n2, - .mx-lg-n2 { - margin-right: -0.5rem !important - } - - .mb-lg-n2, - .my-lg-n2 { - margin-bottom: -0.5rem !important - } - - .ml-lg-n2, - .mx-lg-n2 { - margin-left: -0.5rem !important - } - - .m-lg-n3 { - margin: -1rem !important - } - - .mt-lg-n3, - .my-lg-n3 { - margin-top: -1rem !important - } - - .mr-lg-n3, - .mx-lg-n3 { - margin-right: -1rem !important - } - - .mb-lg-n3, - .my-lg-n3 { - margin-bottom: -1rem !important - } - - .ml-lg-n3, - .mx-lg-n3 { - margin-left: -1rem !important - } - - .m-lg-n4 { - margin: -1.5rem !important - } - - .mt-lg-n4, - .my-lg-n4 { - margin-top: -1.5rem !important - } - - .mr-lg-n4, - .mx-lg-n4 { - margin-right: -1.5rem !important - } - - .mb-lg-n4, - .my-lg-n4 { - margin-bottom: -1.5rem !important - } - - .ml-lg-n4, - .mx-lg-n4 { - margin-left: -1.5rem !important - } - - .m-lg-n5 { - margin: -3rem !important - } - - .mt-lg-n5, - .my-lg-n5 { - margin-top: -3rem !important - } - - .mr-lg-n5, - .mx-lg-n5 { - margin-right: -3rem !important - } - - .mb-lg-n5, - .my-lg-n5 { - margin-bottom: -3rem !important - } - - .ml-lg-n5, - .mx-lg-n5 { - margin-left: -3rem !important - } - - .m-lg-auto { - margin: auto !important - } - - .mt-lg-auto, - .my-lg-auto { - margin-top: auto !important - } - - .mr-lg-auto, - .mx-lg-auto { - margin-right: auto !important - } - - .mb-lg-auto, - .my-lg-auto { - margin-bottom: auto !important - } - - .ml-lg-auto, - .mx-lg-auto { - margin-left: auto !important - } -} - -@media(min-width: 1200px) { - .m-xl-0 { - margin: 0 !important - } - - .mt-xl-0, - .my-xl-0 { - margin-top: 0 !important - } - - .mr-xl-0, - .mx-xl-0 { - margin-right: 0 !important - } - - .mb-xl-0, - .my-xl-0 { - margin-bottom: 0 !important - } - - .ml-xl-0, - .mx-xl-0 { - margin-left: 0 !important - } - - .m-xl-1 { - margin: .25rem !important - } - - .mt-xl-1, - .my-xl-1 { - margin-top: .25rem !important - } - - .mr-xl-1, - .mx-xl-1 { - margin-right: .25rem !important - } - - .mb-xl-1, - .my-xl-1 { - margin-bottom: .25rem !important - } - - .ml-xl-1, - .mx-xl-1 { - margin-left: .25rem !important - } - - .m-xl-2 { - margin: .5rem !important - } - - .mt-xl-2, - .my-xl-2 { - margin-top: .5rem !important - } - - .mr-xl-2, - .mx-xl-2 { - margin-right: .5rem !important - } - - .mb-xl-2, - .my-xl-2 { - margin-bottom: .5rem !important - } - - .ml-xl-2, - .mx-xl-2 { - margin-left: .5rem !important - } - - .m-xl-3 { - margin: 1rem !important - } - - .mt-xl-3, - .my-xl-3 { - margin-top: 1rem !important - } - - .mr-xl-3, - .mx-xl-3 { - margin-right: 1rem !important - } - - .mb-xl-3, - .my-xl-3 { - margin-bottom: 1rem !important - } - - .ml-xl-3, - .mx-xl-3 { - margin-left: 1rem !important - } - - .m-xl-4 { - margin: 1.5rem !important - } - - .mt-xl-4, - .my-xl-4 { - margin-top: 1.5rem !important - } - - .mr-xl-4, - .mx-xl-4 { - margin-right: 1.5rem !important - } - - .mb-xl-4, - .my-xl-4 { - margin-bottom: 1.5rem !important - } - - .ml-xl-4, - .mx-xl-4 { - margin-left: 1.5rem !important - } - - .m-xl-5 { - margin: 3rem !important - } - - .mt-xl-5, - .my-xl-5 { - margin-top: 3rem !important - } - - .mr-xl-5, - .mx-xl-5 { - margin-right: 3rem !important - } - - .mb-xl-5, - .my-xl-5 { - margin-bottom: 3rem !important - } - - .ml-xl-5, - .mx-xl-5 { - margin-left: 3rem !important - } - - .p-xl-0 { - padding: 0 !important - } - - .pt-xl-0, - .py-xl-0 { - padding-top: 0 !important - } - - .pr-xl-0, - .px-xl-0 { - padding-right: 0 !important - } - - .pb-xl-0, - .py-xl-0 { - padding-bottom: 0 !important - } - - .pl-xl-0, - .px-xl-0 { - padding-left: 0 !important - } - - .p-xl-1 { - padding: .25rem !important - } - - .pt-xl-1, - .py-xl-1 { - padding-top: .25rem !important - } - - .pr-xl-1, - .px-xl-1 { - padding-right: .25rem !important - } - - .pb-xl-1, - .py-xl-1 { - padding-bottom: .25rem !important - } - - .pl-xl-1, - .px-xl-1 { - padding-left: .25rem !important - } - - .p-xl-2 { - padding: .5rem !important - } - - .pt-xl-2, - .py-xl-2 { - padding-top: .5rem !important - } - - .pr-xl-2, - .px-xl-2 { - padding-right: .5rem !important - } - - .pb-xl-2, - .py-xl-2 { - padding-bottom: .5rem !important - } - - .pl-xl-2, - .px-xl-2 { - padding-left: .5rem !important - } - - .p-xl-3 { - padding: 1rem !important - } - - .pt-xl-3, - .py-xl-3 { - padding-top: 1rem !important - } - - .pr-xl-3, - .px-xl-3 { - padding-right: 1rem !important - } - - .pb-xl-3, - .py-xl-3 { - padding-bottom: 1rem !important - } - - .pl-xl-3, - .px-xl-3 { - padding-left: 1rem !important - } - - .p-xl-4 { - padding: 1.5rem !important - } - - .pt-xl-4, - .py-xl-4 { - padding-top: 1.5rem !important - } - - .pr-xl-4, - .px-xl-4 { - padding-right: 1.5rem !important - } - - .pb-xl-4, - .py-xl-4 { - padding-bottom: 1.5rem !important - } - - .pl-xl-4, - .px-xl-4 { - padding-left: 1.5rem !important - } - - .p-xl-5 { - padding: 3rem !important - } - - .pt-xl-5, - .py-xl-5 { - padding-top: 3rem !important - } - - .pr-xl-5, - .px-xl-5 { - padding-right: 3rem !important - } - - .pb-xl-5, - .py-xl-5 { - padding-bottom: 3rem !important - } - - .pl-xl-5, - .px-xl-5 { - padding-left: 3rem !important - } - - .m-xl-n1 { - margin: -0.25rem !important - } - - .mt-xl-n1, - .my-xl-n1 { - margin-top: -0.25rem !important - } - - .mr-xl-n1, - .mx-xl-n1 { - margin-right: -0.25rem !important - } - - .mb-xl-n1, - .my-xl-n1 { - margin-bottom: -0.25rem !important - } - - .ml-xl-n1, - .mx-xl-n1 { - margin-left: -0.25rem !important - } - - .m-xl-n2 { - margin: -0.5rem !important - } - - .mt-xl-n2, - .my-xl-n2 { - margin-top: -0.5rem !important - } - - .mr-xl-n2, - .mx-xl-n2 { - margin-right: -0.5rem !important - } - - .mb-xl-n2, - .my-xl-n2 { - margin-bottom: -0.5rem !important - } - - .ml-xl-n2, - .mx-xl-n2 { - margin-left: -0.5rem !important - } - - .m-xl-n3 { - margin: -1rem !important - } - - .mt-xl-n3, - .my-xl-n3 { - margin-top: -1rem !important - } - - .mr-xl-n3, - .mx-xl-n3 { - margin-right: -1rem !important - } - - .mb-xl-n3, - .my-xl-n3 { - margin-bottom: -1rem !important - } - - .ml-xl-n3, - .mx-xl-n3 { - margin-left: -1rem !important - } - - .m-xl-n4 { - margin: -1.5rem !important - } - - .mt-xl-n4, - .my-xl-n4 { - margin-top: -1.5rem !important - } - - .mr-xl-n4, - .mx-xl-n4 { - margin-right: -1.5rem !important - } - - .mb-xl-n4, - .my-xl-n4 { - margin-bottom: -1.5rem !important - } - - .ml-xl-n4, - .mx-xl-n4 { - margin-left: -1.5rem !important - } - - .m-xl-n5 { - margin: -3rem !important - } - - .mt-xl-n5, - .my-xl-n5 { - margin-top: -3rem !important - } - - .mr-xl-n5, - .mx-xl-n5 { - margin-right: -3rem !important - } - - .mb-xl-n5, - .my-xl-n5 { - margin-bottom: -3rem !important - } - - .ml-xl-n5, - .mx-xl-n5 { - margin-left: -3rem !important - } - - .m-xl-auto { - margin: auto !important - } - - .mt-xl-auto, - .my-xl-auto { - margin-top: auto !important - } - - .mr-xl-auto, - .mx-xl-auto { - margin-right: auto !important - } - - .mb-xl-auto, - .my-xl-auto { - margin-bottom: auto !important - } - - .ml-xl-auto, - .mx-xl-auto { - margin-left: auto !important - } -} - -.stretched-link::after { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: 1; - pointer-events: auto; - content: ""; - background-color: rgba(0, 0, 0, 0) -} - -.text-monospace { - font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace !important -} - -.text-justify { - text-align: justify !important -} - -.text-wrap { - white-space: normal !important -} - -.text-nowrap { - white-space: nowrap !important -} - -.text-truncate { - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap -} - -.text-left { - text-align: left !important -} - -.text-right { - text-align: right !important -} - -.text-center { - text-align: center !important -} - -@media(min-width: 576px) { - .text-sm-left { - text-align: left !important - } - - .text-sm-right { - text-align: right !important - } - - .text-sm-center { - text-align: center !important - } -} - -@media(min-width: 768px) { - .text-md-left { - text-align: left !important - } - - .text-md-right { - text-align: right !important - } - - .text-md-center { - text-align: center !important - } -} - -@media(min-width: 992px) { - .text-lg-left { - text-align: left !important - } - - .text-lg-right { - text-align: right !important - } - - .text-lg-center { - text-align: center !important - } -} - -@media(min-width: 1200px) { - .text-xl-left { - text-align: left !important - } - - .text-xl-right { - text-align: right !important - } - - .text-xl-center { - text-align: center !important - } -} - -.text-lowercase { - text-transform: lowercase !important -} - -.text-uppercase { - text-transform: uppercase !important -} - -.text-capitalize { - text-transform: capitalize !important -} - -.font-weight-light { - font-weight: 300 !important -} - -.font-weight-lighter { - font-weight: lighter !important -} - -.font-weight-normal { - font-weight: 400 !important -} - -.font-weight-bold { - font-weight: 700 !important -} - -.font-weight-bolder { - font-weight: bolder !important -} - -.font-italic { - font-style: italic !important -} - -.text-white { - color: #fff !important -} - -.text-primary { - color: #007bff !important -} - -a.text-primary:hover, -a.text-primary:focus { - color: #0056b3 !important -} - -.text-secondary { - color: #6c757d !important -} - -a.text-secondary:hover, -a.text-secondary:focus { - color: #494f54 !important -} - -.text-success { - color: #28a745 !important -} - -a.text-success:hover, -a.text-success:focus { - color: #19692c !important -} - -.text-info { - color: #17a2b8 !important -} - -a.text-info:hover, -a.text-info:focus { - color: #0f6674 !important -} - -.text-warning { - color: #ffc107 !important -} - -a.text-warning:hover, -a.text-warning:focus { - color: #ba8b00 !important -} - -.text-danger { - color: #dc3545 !important -} - -a.text-danger:hover, -a.text-danger:focus { - color: #a71d2a !important -} - -.text-light { - color: #f8f9fa !important -} - -a.text-light:hover, -a.text-light:focus { - color: #cbd3da !important -} - -.text-dark { - color: #343a40 !important -} - -a.text-dark:hover, -a.text-dark:focus { - color: #121416 !important -} - -.text-body { - color: #212529 !important -} - -.text-muted { - color: #6c757d !important -} - -.text-black-50 { - color: rgba(0, 0, 0, .5) !important -} - -.text-white-50 { - color: rgba(255, 255, 255, .5) !important -} - -.text-hide { - font: 0/0 a; - color: rgba(0, 0, 0, 0); - text-shadow: none; - background-color: rgba(0, 0, 0, 0); - border: 0 -} - -.text-decoration-none { - text-decoration: none !important -} - -.text-break { - word-break: break-word !important; - word-wrap: break-word !important -} - -.text-reset { - color: inherit !important -} - -.visible { - visibility: visible !important -} - -.invisible { - visibility: hidden !important -} - -@media print { - - *, - *::before, - *::after { - text-shadow: none !important; - -webkit-box-shadow: none !important; - box-shadow: none !important - } - - a:not(.btn) { - text-decoration: underline - } - - abbr[title]::after { - content: " (" attr(title) ")" - } - - pre { - white-space: pre-wrap !important - } - - pre, - blockquote { - border: 1px solid #adb5bd; - page-break-inside: avoid - } - - tr, - img { - page-break-inside: avoid - } - - p, - h2, - h3 { - orphans: 3; - widows: 3 - } - - h2, - h3 { - page-break-after: avoid - } - - @page { - size: a3 - } - - body { - min-width: 992px !important - } - - .container { - min-width: 992px !important - } - - .navbar { - display: none - } - - .badge { - border: 1px solid #000 - } - - .table { - border-collapse: collapse !important - } - - .table td, - .table th { - background-color: #fff !important - } - - .table-bordered th, - .table-bordered td { - border: 1px solid #dee2e6 !important - } - - .table-dark { - color: inherit - } - - .table-dark th, - .table-dark td, - .table-dark thead th, - .table-dark tbody+tbody { - border-color: #dee2e6 - } - - .table .thead-dark th { - color: inherit; - border-color: #dee2e6 - } -} - -.highlight table td { - padding: 5px -} - -.highlight table pre { - margin: 0 -} - -.highlight .cm { - color: #998; - font-style: italic -} - -.highlight .cp { - color: #999; - font-weight: bold -} - -.highlight .c1 { - color: #998; - font-style: italic -} - -.highlight .cs { - color: #999; - font-weight: bold; - font-style: italic -} - -.highlight .c, -.highlight .cd { - color: #998; - font-style: italic -} - -.highlight .err { - color: #a61717; - background-color: #e3d2d2 -} - -.highlight .gd { - color: #000; - background-color: #fdd -} - -.highlight .ge { - color: #000; - font-style: italic -} - -.highlight .gr { - color: #a00 -} - -.highlight .gh { - color: #999 -} - -.highlight .gi { - color: #000; - background-color: #dfd -} - -.highlight .go { - color: #888 -} - -.highlight .gp { - color: #555 -} - -.highlight .gs { - font-weight: bold -} - -.highlight .gu { - color: #aaa -} - -.highlight .gt { - color: #a00 -} - -.highlight .kc { - color: #000; - font-weight: bold -} - -.highlight .kd { - color: #000; - font-weight: bold -} - -.highlight .kn { - color: #000; - font-weight: bold -} - -.highlight .kp { - color: #000; - font-weight: bold -} - -.highlight .kr { - color: #000; - font-weight: bold -} - -.highlight .kt { - color: #458; - font-weight: bold -} - -.highlight .k, -.highlight .kv { - color: #000; - font-weight: bold -} - -.highlight .mf { - color: #099 -} - -.highlight .mh { - color: #099 -} - -.highlight .il { - color: #099 -} - -.highlight .mi { - color: #099 -} - -.highlight .mo { - color: #099 -} - -.highlight .m, -.highlight .mb, -.highlight .mx { - color: #099 -} - -.highlight .sb { - color: #d14 -} - -.highlight .sc { - color: #d14 -} - -.highlight .sd { - color: #d14 -} - -.highlight .s2 { - color: #d14 -} - -.highlight .se { - color: #d14 -} - -.highlight .sh { - color: #d14 -} - -.highlight .si { - color: #d14 -} - -.highlight .sx { - color: #d14 -} - -.highlight .sr { - color: #009926 -} - -.highlight .s1 { - color: #d14 -} - -.highlight .ss { - color: #990073 -} - -.highlight .s { - color: #d14 -} - -.highlight .na { - color: teal -} - -.highlight .bp { - color: #525252 -} - -.highlight .nb { - color: #0086b3 -} - -.highlight .nc { - color: #458; - font-weight: bold -} - -.highlight .no { - color: teal -} - -.highlight .nd { - color: #3c5d5d; - font-weight: bold -} - -.highlight .ni { - color: purple -} - -.highlight .ne { - color: #900; - font-weight: bold -} - -.highlight .nf { - color: #900; - font-weight: bold -} - -.highlight .nl { - color: #900; - font-weight: bold -} - -.highlight .nn { - color: #555 -} - -.highlight .nt { - color: navy -} - -.highlight .vc { - color: teal -} - -.highlight .vg { - color: teal -} - -.highlight .vi { - color: teal -} - -.highlight .nv { - color: teal -} - -.highlight .ow { - color: #000; - font-weight: bold -} - -.highlight .o { - color: #000; - font-weight: bold -} - -.highlight .n { - color: #000; - font-weight: bold -} - -.highlight .p { - color: #000; - font-weight: bold -} - -.highlight .w { - color: #bbb -} - -.highlight { - background-color: #f8f8f8 -} - -@font-face { - font-family: FreightSans; - font-weight: 700; - font-style: normal; - src: url("../fonts/FreightSans/freight-sans-bold.woff2") format("woff2"), url("../fonts/FreightSans/freight-sans-bold.woff") format("woff") -} - -@font-face { - font-family: FreightSans; - font-weight: 700; - font-style: italic; - src: url("../fonts/FreightSans/freight-sans-bold-italic.woff2") format("woff2"), url("../fonts/FreightSans/freight-sans-bold-italic.woff") format("woff") -} - -@font-face { - font-family: FreightSans; - font-weight: 500; - font-style: normal; - src: url("../fonts/FreightSans/freight-sans-medium.woff2") format("woff2"), url("../fonts/FreightSans/freight-sans-medium.woff") format("woff") -} - -@font-face { - font-family: FreightSans; - font-weight: 500; - font-style: italic; - src: url("../fonts/FreightSans/freight-sans-medium-italic.woff2") format("woff2"), url("../fonts/FreightSans/freight-sans-medium-italic.woff") format("woff") -} - -@font-face { - font-family: FreightSans; - font-weight: 100; - font-style: normal; - src: url("../fonts/FreightSans/freight-sans-light.woff2") format("woff2"), url("../fonts/FreightSans/freight-sans-light.woff") format("woff") -} - -@font-face { - font-family: FreightSans; - font-weight: 100; - font-style: italic; - src: url("../fonts/FreightSans/freight-sans-light-italic.woff2") format("woff2"), url("../fonts/FreightSans/freight-sans-light-italic.woff") format("woff") -} - -@font-face { - font-family: FreightSans; - font-weight: 400; - font-style: italic; - src: url("../fonts/FreightSans/freight-sans-book-italic.woff2") format("woff2"), url("../fonts/FreightSans/freight-sans-book-italic.woff") format("woff") -} - -@font-face { - font-family: FreightSans; - font-weight: 400; - font-style: normal; - src: url("../fonts/FreightSans/freight-sans-book.woff2") format("woff2"), url("../fonts/FreightSans/freight-sans-book.woff") format("woff") -} - -@font-face { - font-family: IBMPlexMono; - font-weight: 600; - font-style: normal; - src: url("../fonts/IBMPlexMono/IBMPlexMono-SemiBold.woff2") format("woff2"), url("../fonts/IBMPlexMono/IBMPlexMono-SemiBold.woff") format("woff") -} - -/* @font-face { - font-family: IBMPlexMono; - font-weight: 600; - font-style: normal; - unicode-range: u+0020-007f; - src: local("IBMPlexMono"), url("../fonts/IBMPlexMono/IBMPlexMono-SemiBold.woff2") format("woff2"), url("../fonts/IBMPlexMono/IBMPlexMono-SemiBold.woff") format("woff") -} */ - -@font-face { - font-family: IBMPlexMono; - font-weight: 500; - font-style: normal; - unicode-range: u+0020-007f; - src: local("IBMPlexMono"), url("../fonts/IBMPlexMono/IBMPlexMono-Medium.woff2") format("woff2"), url("../fonts/IBMPlexMono/IBMPlexMono-Medium.woff") format("woff") -} - -@font-face { - font-family: IBMPlexMono; - font-weight: 400; - font-style: normal; - unicode-range: u+0020-007f; - src: local("IBMPlexMono"), url("../fonts/IBMPlexMono/IBMPlexMono-Regular.woff2") format("woff2"), url("../fonts/IBMPlexMono/IBMPlexMono-Regular.woff") format("woff") -} - -@font-face { - font-family: IBMPlexMono; - font-weight: 300; - font-style: normal; - unicode-range: u+0020-007f; - src: local("IBMPlexMono"), url("../fonts/IBMPlexMono/IBMPlexMono-Light.woff2") format("woff2"), url("../fonts/IBMPlexMono/IBMPlexMono-Light.woff") format("woff") -} - -@font-face { - font-family: UCity; - font-weight: 600; - font-style: normal; - src: local("UCity"), url("../fonts/UCity/UCity-Semibold.woff2") format("woff2") -} - -@font-face { - font-family: UCity; - font-weight: 400; - font-style: normal; - src: local("UCity"), url("../fonts/UCity/UCity-Regular.woff2") format("woff2") -} - -@font-face { - font-family: UCity; - font-weight: 300; - font-style: normal; - src: local("UCity"), url("../fonts/UCity/UCity-Light.woff2") format("woff2") -} - -html { - position: relative; - min-height: 100%; - font-size: 12px -} - -@media screen and (min-width: 768px) { - html { - font-size: 16px - } -} - -* { - -webkit-box-sizing: border-box; - box-sizing: border-box -} - -body { - font-family: FreightSans, Helvetica Neue, Helvetica, Arial, sans-serif -} - -a:link, -a:visited, -a:hover { - text-decoration: none; - color: #de3412 -} - -a.with-right-arrow, -.btn.with-right-arrow { - padding-right: 1.375rem; - position: relative; - background-image: url("../images/chevron-right-orange.svg"); - background-size: 6px 13px; - background-position: center right 5px; - background-repeat: no-repeat -} - -@media screen and (min-width: 768px) { - - a.with-right-arrow, - .btn.with-right-arrow { - background-size: 8px 14px; - background-position: center right 12px; - padding-right: 2rem - } -} - -::-webkit-input-placeholder { - color: #de3412 -} - -::-moz-placeholder { - color: #de3412 -} - -:-ms-input-placeholder { - color: #de3412 -} - -:-moz-placeholder { - color: #de3412 -} - -.email-subscribe-form input.email { - color: #de3412; - border: none; - border-bottom: 1px solid #939393; - width: 100%; - background-color: rgba(0, 0, 0, 0); - outline: none; - font-size: 1.125rem; - letter-spacing: .25px; - line-height: 2.25rem -} - -.email-subscribe-form input[type=submit] { - position: absolute; - right: 0; - top: 10px; - height: 15px; - width: 15px; - background-image: url("../images/arrow-right-with-tail.svg"); - background-color: rgba(0, 0, 0, 0); - background-repeat: no-repeat; - background-size: 15px 15px; - background-position: center center; - -webkit-appearance: none; - -moz-appearance: none; - appearance: none; - border: 0 -} - -.email-subscribe-form-fields-wrapper { - position: relative -} - -.anchorjs-link { - color: #6c6c6d !important -} - -@media screen and (min-width: 768px) { - .anchorjs-link:hover { - color: inherit; - text-decoration: none !important - } -} - -.pytorch-article #table-of-contents { - display: none -} - -.badge { - font-weight: inherit; - border-radius: 3px -} - -.badge-primary { - background-color: #de3412 -} - -.badge-secondary { - background-color: #979797 -} - -code, -kbd, -pre, -samp { - font-family: "Inconsolata", "IBMPlexMono", "SFMono-Regular", "Menlo", "Monaco", "Consolas", "Liberation Mono", "Courier New", "monospace" -} - -code span, -kbd span, -pre span, -samp span { - font-family: "Inconsolata", "IBMPlexMono", "SFMono-Regular", "Menlo", "Monaco", "Consolas", "Liberation Mono", "Courier New", "monospace" -} - -pre { - padding: 1.125rem; - background-color: #f3f4f7 -} - -pre code { - font-size: .875rem -} - -pre.highlight { - background-color: #f3f4f7; - line-height: 1.3125rem -} - -code.highlighter-rouge { - color: #6c6c6d; - background-color: #f3f4f7; - padding: 2px 6px -} - -a:link code.highlighter-rouge, -a:visited code.highlighter-rouge, -a:hover code.highlighter-rouge { - color: #fe6162 -} - -a:link.has-code, -a:visited.has-code, -a:hover.has-code { - color: #fe6162 -} - -p code, -h1 code, -h2 code, -h3 code, -h4 code, -h5 code, -h6 code { - font-size: 78.5% -} - -pre { - white-space: pre-wrap; - white-space: -moz-pre-wrap; - white-space: -pre-wrap; - white-space: -o-pre-wrap; - word-wrap: break-word -} - -.header-holder { - height: 68px; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - left: 0; - margin-left: auto; - margin-right: auto; - position: fixed; - right: 0; - top: 0; - width: 100%; - z-index: 9999; - background-color: #fff; - border-bottom: 1px solid #e2e2e2 -} - -@media screen and (min-width: 1100px) { - .header-holder { - height: 90px - } -} - -.header-container { - position: relative; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center -} - -.header-container:before, -.header-container:after { - content: ""; - display: table -} - -.header-container:after { - clear: both -} - -.header-container { - *zoom: 1 -} - -@media screen and (min-width: 1100px) { - .header-container { - display: block - } -} - -.header-logo { - height: 32px; - width: calc(100% - 25px); - background-image: url("../images/logo_light.svg"), url("../images/logo.png"); - background-repeat: no-repeat; - background-size: contain; - display: block; - float: left; - z-index: 10 -} - -@media screen and (min-width: 1100px) { - .header-logo { - background-size: contain; - position: absolute; - height: 43px; - width: 25%; - top: 4px; - float: none - } -} - -@media screen and (min-width: 1600px) { - .header-logo { - width: 350px - } -} - -.main-menu-open-button { - background-image: url("../images/icon-menu-dots.svg"); - background-position: center center; - background-size: 25px 7px; - background-repeat: no-repeat; - width: 25px; - height: 17px; - position: absolute; - right: 0; - top: 8px -} - -@media screen and (min-width: 1100px) { - .main-menu-open-button { - display: none - } -} - -.header-holder .main-menu { - display: none -} - -@media screen and (min-width: 1100px) { - .header-holder .main-menu { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-pack: end; - -ms-flex-pack: end; - justify-content: flex-end - } -} - -.header-holder .main-menu ul { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - margin: 0 -} - -.header-holder .main-menu ul li { - display: inline-block; - margin-right: 40px; - position: relative -} - -.header-holder .main-menu ul li.active:after { - content: "•"; - bottom: -24px; - color: #de3412; - font-size: 1.375rem; - left: 0; - position: absolute; - right: 0; - text-align: center -} - -.header-holder .main-menu ul li.active a { - color: #de3412 -} - -.header-holder .main-menu ul li.docs-active:after { - content: "•"; - bottom: -24px; - color: #de3412; - font-size: 1.375rem; - left: -24px; - position: absolute; - right: 0; - text-align: center -} - -.header-holder .main-menu ul li:last-of-type { - margin-right: 0 -} - -.header-holder .main-menu ul li a { - color: #1c1c1c; - font-family: UCity; - font-size: 14px; - font-weight: 600; - line-height: 1.25rem; - letter-spacing: 0px; - text-align: left; - text-decoration: none -} - -@media screen and (min-width: 1100px) { - .header-holder .main-menu ul li a:hover { - color: #de3412 - } -} - -.mobile-main-menu { - display: none -} - -.mobile-main-menu.open { - background-color: #262626; - display: block; - height: 100%; - left: 0; - margin-left: auto; - margin-right: auto; - min-height: 100%; - position: fixed; - right: 0; - top: 0; - width: 100%; - z-index: 99999 -} - -.mobile-main-menu .container-fluid, -.mobile-main-menu .container-sm, -.mobile-main-menu .container-md, -.mobile-main-menu .container-lg, -.mobile-main-menu .container-xl { - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - height: 68px; - position: relative -} - -.mobile-main-menu .container-fluid:before, -.mobile-main-menu .container-sm:before, -.mobile-main-menu .container-md:before, -.mobile-main-menu .container-lg:before, -.mobile-main-menu .container-xl:before, -.mobile-main-menu .container-fluid:after, -.mobile-main-menu .container-sm:after, -.mobile-main-menu .container-md:after, -.mobile-main-menu .container-lg:after, -.mobile-main-menu .container-xl:after { - content: ""; - display: table -} - -.mobile-main-menu .container-fluid:after, -.mobile-main-menu .container-sm:after, -.mobile-main-menu .container-md:after, -.mobile-main-menu .container-lg:after, -.mobile-main-menu .container-xl:after { - clear: both -} - -.mobile-main-menu .container-fluid, -.mobile-main-menu .container-sm, -.mobile-main-menu .container-md, -.mobile-main-menu .container-lg, -.mobile-main-menu .container-xl { - *zoom: 1 -} - -.mobile-main-menu.open ul { - list-style-type: none; - padding: 0 -} - -.mobile-main-menu.open ul li a, -.mobile-main-menu.open .resources-mobile-menu-title { - font-size: 2rem; - color: #fff; - letter-spacing: 0; - line-height: 4rem; - text-decoration: none -} - -.mobile-main-menu.open ul li.active a { - color: #de3412 -} - -.main-menu-close-button { - background-image: url("../images/icon-close.svg"); - background-position: center center; - background-repeat: no-repeat; - background-size: 24px 24px; - height: 24px; - position: absolute; - right: 0; - width: 24px; - top: 1px -} - -.mobile-main-menu-header-container { - position: relative -} - -.mobile-main-menu-links-container { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - padding-left: 2.8125rem; - height: calc(100% - 68px); - overflow-y: scroll -} - -.mobile-main-menu-links-container .main-menu { - height: 100% -} - -.mobile-main-menu-links-container ul.resources-mobile-menu-items li { - padding-left: 15px -} - -.site-footer { - padding: 2.5rem 0; - width: 100%; - background: #000; - background-size: 100%; - margin-left: 0; - margin-right: 0; - position: relative; - z-index: 201 -} - -@media screen and (min-width: 768px) { - .site-footer { - padding: 5rem 0 - } -} - -.site-footer p { - color: #fff -} - -.site-footer ul { - list-style-type: none; - padding-left: 0; - margin-bottom: 0 -} - -.site-footer ul li { - font-size: 1.125rem; - line-height: 2rem; - color: #a0a0a1; - padding-bottom: .375rem -} - -.site-footer ul li.list-title { - padding-bottom: .75rem; - color: #fff -} - -.site-footer a:link, -.site-footer a:visited { - color: inherit -} - -@media screen and (min-width: 768px) { - .site-footer a:hover { - color: #de3412 - } -} - -.docs-tutorials-resources { - background-color: #262626; - color: #fff; - padding-top: 2.5rem; - padding-bottom: 2.5rem; - position: relative; - z-index: 201 -} - -@media screen and (min-width: 768px) { - .docs-tutorials-resources { - padding-top: 5rem; - padding-bottom: 5rem - } -} - -.docs-tutorials-resources p { - color: #929292; - font-size: 1.125rem -} - -.docs-tutorials-resources h2 { - font-size: 1.5rem; - letter-spacing: -0.25px; - text-transform: none; - margin-bottom: .25rem -} - -@media screen and (min-width: 768px) { - .docs-tutorials-resources h2 { - margin-bottom: 1.25rem - } -} - -.docs-tutorials-resources .col-md-4 { - margin-bottom: 2rem; - text-align: center -} - -@media screen and (min-width: 768px) { - .docs-tutorials-resources .col-md-4 { - margin-bottom: 0 - } -} - -.docs-tutorials-resources .with-right-arrow { - margin-left: 12px -} - -.docs-tutorials-resources .with-right-arrow:hover { - background-image: url("../images/chevron-right-white.svg") -} - -.docs-tutorials-resources p { - font-size: 1rem; - line-height: 1.5rem; - letter-spacing: .22px; - color: #939393; - margin-bottom: 0 -} - -@media screen and (min-width: 768px) { - .docs-tutorials-resources p { - margin-bottom: 1.25rem - } -} - -.docs-tutorials-resources a { - font-size: 1.125rem; - color: #de3412 -} - -.docs-tutorials-resources a:hover { - color: #fff -} - -.footer-container { - position: relative -} - -@media screen and (min-width: 768px) { - .footer-logo-wrapper { - position: absolute; - top: 0; - left: 30px - } -} - -.footer-logo { - background-image: url("../images/logo-icon.svg"); - background-position: center; - background-repeat: no-repeat; - background-size: 20px 24px; - display: block; - height: 24px; - margin-bottom: 2.8125rem; - width: 20px -} - -@media screen and (min-width: 768px) { - .footer-logo { - background-size: 29px 36px; - height: 36px; - margin-bottom: 0; - margin-bottom: 0; - width: 29px - } -} - -.footer-links-wrapper { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -ms-flex-wrap: wrap; - flex-wrap: wrap -} - -@media screen and (min-width: 768px) { - .footer-links-wrapper { - -ms-flex-wrap: initial; - flex-wrap: initial; - -webkit-box-pack: end; - -ms-flex-pack: end; - justify-content: flex-end - } -} - -.footer-links-col { - margin-bottom: 3.75rem; - width: 50% -} - -@media screen and (min-width: 768px) { - .footer-links-col { - margin-bottom: 0; - width: 14%; - margin-right: 23px - } - - .footer-links-col.follow-us-col { - width: 18%; - margin-right: 0 - } -} - -@media(min-width: 768px)and (max-width: 1239px) { - .footer-links-col { - width: 18%; - margin-right: 30px - } -} - -.footer-social-icons { - margin: 8.5625rem 0 2.5rem 0 -} - -.footer-social-icons a { - height: 32px; - width: 32px; - display: inline-block; - background-color: #cccdd1; - border-radius: 50%; - margin-right: 5px -} - -.footer-social-icons a.facebook { - background-image: url("../images/logo-facebook-dark.svg"); - background-position: center center; - background-size: 9px 18px; - background-repeat: no-repeat -} - -.footer-social-icons a.twitter { - background-image: url("../images/logo-twitter-dark.svg"); - background-position: center center; - background-size: 17px 17px; - background-repeat: no-repeat -} - -.footer-social-icons a.youtube { - background-image: url("../images/logo-youtube-dark.svg"); - background-position: center center; - background-repeat: no-repeat -} - -.site-footer .mc-field-group { - margin-top: -2px -} - -article.pytorch-article { - max-width: 920px; - margin: 0 auto -} - -article.pytorch-article h2, -article.pytorch-article h3, -article.pytorch-article h4, -article.pytorch-article h5, -article.pytorch-article h6 { - margin: 1.375rem 0; - color: #262626 -} - -article.pytorch-article h2 { - font-size: 1.625rem; - letter-spacing: 1.33px; - line-height: 2rem; - text-transform: none -} - -article.pytorch-article h3 { - font-weight: 600; - font-size: 1.25rem; - line-height: 1.5rem; - text-transform: none -} - -article.pytorch-article h4, -article.pytorch-article h5, -article.pytorch-article h6 { - font-size: 1.125rem; - letter-spacing: -0.19px; - line-height: 1.875rem -} - -article.pytorch-article p { - margin-bottom: 1.125rem -} - -article.pytorch-article p, -article.pytorch-article ul li, -article.pytorch-article ol li, -article.pytorch-article dl dt, -article.pytorch-article dl dd, -article.pytorch-article blockquote { - font-size: 1rem; - line-height: 1.375rem; - color: #262626; - letter-spacing: .01px; - font-weight: 500 -} - -article.pytorch-article table { - margin-bottom: 2.5rem; - width: 100% -} - -article.pytorch-article table thead { - border-bottom: 1px solid #cacaca -} - -article.pytorch-article table th { - padding: .625rem; - color: #262626 -} - -article.pytorch-article table td { - padding: .3125rem -} - -article.pytorch-article table tr th:first-of-type, -article.pytorch-article table tr td:first-of-type { - padding-left: 0 -} - -article.pytorch-article table.docutils.field-list th.field-name { - padding: .3125rem; - padding-left: 0 -} - -article.pytorch-article table.docutils.field-list td.field-body { - padding: .3125rem -} - -article.pytorch-article table.docutils.field-list td.field-body p:last-of-type { - margin-bottom: 0 -} - -article.pytorch-article ul, -article.pytorch-article ol { - margin: 1.5rem 0 3.125rem 0 -} - -@media screen and (min-width: 768px) { - - article.pytorch-article ul, - article.pytorch-article ol { - padding-left: 6.25rem - } -} - -article.pytorch-article ul li, -article.pytorch-article ol li { - margin-bottom: .625rem -} - -article.pytorch-article dl { - margin-bottom: 1.5rem -} - -article.pytorch-article dl dt { - margin-bottom: .75rem -} - -article.pytorch-article pre { - margin-bottom: 2.5rem -} - -article.pytorch-article hr { - margin-top: 4.6875rem; - margin-bottom: 4.6875rem -} - -article.pytorch-article blockquote { - margin: 0 auto; - margin-bottom: 2.5rem; - width: 65% -} - -article.pytorch-article .hidden { - display: none -} - -article.pytorch-article img { - width: auto -} - -article.pytorch-article .full-img { - width: 100% -} - -article.pytorch-article a>img { - width: auto -} - -html { - height: 100% -} - -@media screen and (min-width: 768px) { - html { - font-size: 16px - } -} - -body { - background: #fff; - height: 100%; - margin: 0 -} - -body.no-scroll { - height: 100%; - overflow: hidden -} - -p { - margin-top: 0; - margin-bottom: 1.125rem -} - -p a:link, -p a:visited, -p a:hover { - color: #de3412; - text-decoration: none -} - -@media screen and (min-width: 768px) { - p a:hover { - text-decoration: underline - } -} - -p a:link, -p a:visited, -p a:hover { - color: #de3412 -} - -.wy-breadcrumbs li a { - color: #de3412 -} - -ul.pytorch-breadcrumbs { - padding-left: 0; - list-style-type: none -} - -ul.pytorch-breadcrumbs li { - display: inline-block; - font-size: .875rem -} - -ul.pytorch-breadcrumbs a { - color: #de3412; - text-decoration: none -} - -.table-of-contents-link-wrapper { - display: block; - margin-top: 0; - padding: 1.25rem 1.875rem; - background-color: #f3f4f7; - position: relative; - color: #262626; - font-size: 1.25rem -} - -.table-of-contents-link-wrapper.is-open .toggle-table-of-contents { - -webkit-transform: rotate(180deg); - transform: rotate(180deg) -} - -@media screen and (min-width: 1100px) { - .table-of-contents-link-wrapper { - display: none - } -} - -.toggle-table-of-contents { - background-image: url("../images/chevron-down-grey.svg"); - background-position: center center; - background-repeat: no-repeat; - background-size: 18px 18px; - height: 100%; - position: absolute; - right: 21px; - width: 30px; - top: 0 -} - -.tutorials-header .header-logo { - background-image: url("../images/logo.png"); - height: 38px; - top: -10px -} - -.tutorials-header .main-menu ul li a { - color: #262626 -} - -.tutorials-header .main-menu-open-button { - background-image: url("../images/icon-menu-dots-dark.svg") -} - -.rst-content footer .rating-hr.hr-top { - margin-bottom: -0.0625rem -} - -.rst-content footer .rating-hr.hr-bottom { - margin-top: -0.0625rem -} - -.rst-content footer .rating-container { - display: -webkit-inline-box; - display: -ms-inline-flexbox; - display: inline-flex; - font-size: 1.125rem -} - -.rst-content footer .rating-container .rating-prompt, -.rst-content footer .rating-container .was-helpful-thank-you { - padding: .625rem 1.25rem .625rem 1.25rem -} - -.rst-content footer .rating-container .was-helpful-thank-you { - display: none -} - -.rst-content footer .rating-container .rating-prompt.yes-link, -.rst-content footer .rating-container .rating-prompt.no-link { - color: #de3412; - cursor: pointer -} - -.rst-content footer .rating-container .rating-prompt.yes-link:hover, -.rst-content footer .rating-container .rating-prompt.no-link:hover { - background-color: #de3412; - color: #fff -} - -.rst-content footer .rating-container .stars-outer { - display: inline-block; - position: relative; - font-family: FontAwesome; - padding: .625rem 1.25rem .625rem 1.25rem -} - -.rst-content footer .rating-container .stars-outer i { - cursor: pointer -} - -.rst-content footer .rating-container .stars-outer .star-fill { - color: #de3412 -} - -.rst-content footer div[role=contentinfo] { - padding-top: 2.5rem -} - -.rst-content footer div[role=contentinfo] p { - margin-bottom: 0 -} - -h1 { - font-size: 2rem; - letter-spacing: 1.78px; - line-height: 2.5rem; - text-transform: uppercase; - margin: 1.375rem 0 -} - -span.pre { - color: #6c6c6d; - background-color: #f3f4f7; - padding: 2px 6px -} - -pre { - background-color: #f3f4f7; - padding: 1.375rem -} - -.highlight .c1 { - color: #6c6c6d -} - -.headerlink { - display: none !important -} - -a:link.has-code, -a:hover.has-code, -a:visited.has-code { - color: #fe6162 -} - -a:link.has-code span, -a:hover.has-code span, -a:visited.has-code span { - color: #fe6162 -} - -article.pytorch-article ul, -article.pytorch-article ol { - padding-left: 1.875rem; - margin: 0 -} - -article.pytorch-article ul li, -article.pytorch-article ol li { - margin: 0; - line-height: 1.75rem -} - -article.pytorch-article ul p, -article.pytorch-article ol p { - line-height: 1.75rem; - margin-bottom: 0 -} - -article.pytorch-article ul ul, -article.pytorch-article ul ol, -article.pytorch-article ol ul, -article.pytorch-article ol ol { - margin: 0 -} - -article.pytorch-article h1, -article.pytorch-article h2, -article.pytorch-article h3, -article.pytorch-article h4, -article.pytorch-article h5, -article.pytorch-article h6 { - font-weight: normal -} - -article.pytorch-article h1 a, -article.pytorch-article h2 a, -article.pytorch-article h3 a, -article.pytorch-article h4 a, -article.pytorch-article h5 a, -article.pytorch-article h6 a { - color: #262626 -} - -article.pytorch-article p.caption { - margin-top: 1.25rem -} - -article.pytorch-article .section:first-of-type h1:first-of-type { - margin-top: 0 -} - -.left-menu-link { - background-color: green -} - -.left-menu-link:hover { - background-color: #de3412 -} - -article.pytorch-article .sphx-glr-thumbcontainer { - margin: 0; - border: 1px solid #d6d7d8; - border-radius: 0; - width: 45%; - text-align: center; - margin-bottom: 5% -} - -@media screen and (max-width: 1100px) { - article.pytorch-article .sphx-glr-thumbcontainer:nth-child(odd) { - margin-left: 0; - margin-right: 2.5% - } - - article.pytorch-article .sphx-glr-thumbcontainer:nth-child(even) { - margin-right: 0; - margin-left: 2.5% - } - - article.pytorch-article .sphx-glr-thumbcontainer .figure { - width: 40% - } -} - -@media screen and (min-width: 1101px) { - article.pytorch-article .sphx-glr-thumbcontainer { - margin-right: 3%; - margin-bottom: 3%; - width: 30% - } -} - -article.pytorch-article .sphx-glr-thumbcontainer .caption-text a { - color: #1c1c1c; - text-decoration: none; - font-family: UCity; - font-size: .875rem; - font-style: normal; - font-weight: 600; - line-height: 1.25rem; - letter-spacing: 0px; - text-align: left -} - -article.pytorch-article .sphx-glr-thumbcontainer:hover { - -webkit-box-shadow: none; - box-shadow: none; - border-bottom-color: #fff -} - -article.pytorch-article .sphx-glr-thumbcontainer:hover .figure:before { - bottom: 100% -} - -article.pytorch-article .sphx-glr-thumbcontainer .figure { - width: 80% -} - -article.pytorch-article .sphx-glr-thumbcontainer .figure:before { - content: ""; - display: block; - position: absolute; - top: 0; - bottom: 35%; - left: 0; - right: 0; - background: #8a94b3; - opacity: .1 -} - -article.pytorch-article .sphx-glr-thumbcontainer .figure a.reference.internal { - text-align: left -} - -@media screen and (min-width: 768px) { - article.pytorch-article .sphx-glr-thumbcontainer:after { - content: ""; - display: block; - width: 0; - height: 1px; - position: absolute; - bottom: -1px; - left: 5px; - background-color: #de3412; - -webkit-transition: width .25s ease-in-out; - transition: width .25s ease-in-out - } - - article.pytorch-article .sphx-glr-thumbcontainer:hover:after { - width: calc(100% - 5px) - } -} - -@media screen and (min-width: 768px) { - article.pytorch-article .sphx-glr-thumbcontainer:after { - background-color: #de3412 - } -} - -article.pytorch-article .section :not(dt)>code { - color: #262626; - border-top: solid 2px #fff; - background-color: #fff; - border-bottom: solid 2px #fff; - padding: 0px 3px; - -webkit-box-decoration-break: clone; - box-decoration-break: clone -} - -article.pytorch-article .section :not(dt)>code .pre { - outline: 0px; - padding: 0px -} - -article.pytorch-article .function dt, -article.pytorch-article .class dt, -article.pytorch-article .attribute dt, -article.pytorch-article .class .attribute dt, -article.pytorch-article .method dt { - position: relative; - background: #f3f4f7; - padding: .5rem; - border-left: 3px solid #de3412; - word-wrap: break-word; - padding-right: 100px -} - -article.pytorch-article .function dt em.property, -article.pytorch-article .class dt em.property, -article.pytorch-article .attribute dt em.property, -article.pytorch-article .method dt em.property { - font-family: inherit -} - -article.pytorch-article .function dt em, -article.pytorch-article .class dt em, -article.pytorch-article .attribute dt em, -article.pytorch-article .class .attribute dt em, -article.pytorch-article .method dt em, -article.pytorch-article .function dt .sig-paren, -article.pytorch-article .class dt .sig-paren, -article.pytorch-article .attribute dt .sig-paren, -article.pytorch-article .method dt .sig-paren { - font-family: "Inconsolata", "IBMPlexMono", "SFMono-Regular", "Menlo", "Monaco", "Consolas", "Liberation Mono", "Courier New", "monospace"; - font-size: 87.5% -} - -article.pytorch-article .function dt a, -article.pytorch-article .class dt a, -article.pytorch-article .attribute dt a, -article.pytorch-article .class .attribute dt a, -article.pytorch-article .method dt a { - position: absolute; - right: 30px; - padding-right: 0; - top: 50%; - -webkit-transform: perspective(1px) translateY(-50%); - transform: perspective(1px) translateY(-50%) -} - -article.pytorch-article .function dt:hover .viewcode-link, -article.pytorch-article .class dt:hover .viewcode-link, -article.pytorch-article .attribute dt:hover .viewcode-link, -article.pytorch-article .method dt:hover .viewcode-link { - color: #de3412 -} - -article.pytorch-article .function .anchorjs-link, -article.pytorch-article .class .anchorjs-link, -article.pytorch-article .attribute .anchorjs-link, -article.pytorch-article .method .anchorjs-link { - display: inline; - position: absolute; - right: 8px; - font-size: 1.5625rem !important; - padding-left: 0 -} - -article.pytorch-article .function dt>code, -article.pytorch-article .class dt>code, -article.pytorch-article .attribute dt>code, -article.pytorch-article .class .attribute dt>code, -article.pytorch-article .method dt>code { - color: #262626; - border-top: solid 2px #f3f4f7; - background-color: #f3f4f7; - border-bottom: solid 2px #f3f4f7; - -webkit-box-decoration-break: clone; - box-decoration-break: clone -} - -article.pytorch-article .function .viewcode-link, -article.pytorch-article .class .viewcode-link, -article.pytorch-article .attribute .viewcode-link, -article.pytorch-article .method .viewcode-link { - font-size: .875rem; - color: #979797; - letter-spacing: 0; - line-height: 1.5rem; - text-transform: uppercase -} - -article.pytorch-article .function dd, -article.pytorch-article .class dd, -article.pytorch-article .attribute dd, -article.pytorch-article .class .attribute dd, -article.pytorch-article .method dd { - padding-left: 3.75rem -} - -article.pytorch-article .function dd p, -article.pytorch-article .class dd p, -article.pytorch-article .attribute dd p, -article.pytorch-article .class .attribute dd p, -article.pytorch-article .method dd p { - color: #262626 -} - -article.pytorch-article .function table tbody tr th.field-name, -article.pytorch-article .class table tbody tr th.field-name, -article.pytorch-article .attribute table tbody tr th.field-name, -article.pytorch-article .method table tbody tr th.field-name { - white-space: nowrap; - color: #262626; - width: 20% -} - -@media screen and (min-width: 768px) { - - article.pytorch-article .function table tbody tr th.field-name, - article.pytorch-article .class table tbody tr th.field-name, - article.pytorch-article .attribute table tbody tr th.field-name, - article.pytorch-article .method table tbody tr th.field-name { - width: 15% - } -} - -article.pytorch-article .function table tbody tr td.field-body, -article.pytorch-article .class table tbody tr td.field-body, -article.pytorch-article .attribute table tbody tr td.field-body, -article.pytorch-article .method table tbody tr td.field-body { - padding: .625rem; - width: 80%; - color: #262626 -} - -@media screen and (min-width: 768px) { - - article.pytorch-article .function table tbody tr td.field-body, - article.pytorch-article .class table tbody tr td.field-body, - article.pytorch-article .attribute table tbody tr td.field-body, - article.pytorch-article .method table tbody tr td.field-body { - width: 85% - } -} - -@media screen and (min-width: 1600px) { - - article.pytorch-article .function table tbody tr td.field-body, - article.pytorch-article .class table tbody tr td.field-body, - article.pytorch-article .attribute table tbody tr td.field-body, - article.pytorch-article .method table tbody tr td.field-body { - padding-left: 1.25rem - } -} - -article.pytorch-article .function table tbody tr td.field-body p, -article.pytorch-article .class table tbody tr td.field-body p, -article.pytorch-article .attribute table tbody tr td.field-body p, -article.pytorch-article .method table tbody tr td.field-body p { - padding-left: 0px -} - -article.pytorch-article .function table tbody tr td.field-body p:last-of-type, -article.pytorch-article .class table tbody tr td.field-body p:last-of-type, -article.pytorch-article .attribute table tbody tr td.field-body p:last-of-type, -article.pytorch-article .method table tbody tr td.field-body p:last-of-type { - margin-bottom: 0 -} - -article.pytorch-article .function table tbody tr td.field-body ol, -article.pytorch-article .class table tbody tr td.field-body ol, -article.pytorch-article .attribute table tbody tr td.field-body ol, -article.pytorch-article .method table tbody tr td.field-body ol, -article.pytorch-article .function table tbody tr td.field-body ul, -article.pytorch-article .class table tbody tr td.field-body ul, -article.pytorch-article .attribute table tbody tr td.field-body ul, -article.pytorch-article .method table tbody tr td.field-body ul { - padding-left: 1rem; - padding-bottom: 0 -} - -article.pytorch-article .function table.docutils.field-list, -article.pytorch-article .class table.docutils.field-list, -article.pytorch-article .attribute table.docutils.field-list, -article.pytorch-article .method table.docutils.field-list { - margin-bottom: .75rem -} - -article.pytorch-article .attribute .has-code { - float: none -} - -article.pytorch-article .class dt { - border-left: none; - border-top: 3px solid #de3412; - padding-left: 4em -} - -article.pytorch-article .class dt em.property { - position: absolute; - left: .5rem -} - -article.pytorch-article .class dd .docutils dt { - padding-left: .5rem -} - -article.pytorch-article .class em.property { - text-transform: uppercase; - font-style: normal; - color: #de3412; - font-size: 1rem; - letter-spacing: 0; - padding-right: .75rem -} - -article.pytorch-article .class dl dt em.property { - position: static; - left: 0; - padding-right: 0 -} - -article.pytorch-article .class .method dt, -article.pytorch-article .class .staticmethod dt { - border-left: 3px solid #de3412; - border-top: none -} - -article.pytorch-article .class .method dt, -article.pytorch-article .class .staticmethod dt { - padding-left: .5rem -} - -article.pytorch-article .class .attribute dt { - border-top: none -} - -article.pytorch-article .class .attribute dt em.property { - position: relative; - left: 0 -} - -article.pytorch-article table { - table-layout: fixed -} - -article.pytorch-article .note, -article.pytorch-article .warning, -article.pytorch-article .tip, -article.pytorch-article .seealso, -article.pytorch-article .hint, -article.pytorch-article .important, -article.pytorch-article .caution, -article.pytorch-article .danger, -article.pytorch-article .attention, -article.pytorch-article .error { - background: #f3f4f7; - margin-top: 1.875rem; - margin-bottom: 1.125rem -} - -article.pytorch-article .note .admonition-title, -article.pytorch-article .warning .admonition-title, -article.pytorch-article .tip .admonition-title, -article.pytorch-article .seealso .admonition-title, -article.pytorch-article .hint .admonition-title, -article.pytorch-article .important .admonition-title, -article.pytorch-article .caution .admonition-title, -article.pytorch-article .danger .admonition-title, -article.pytorch-article .attention .admonition-title, -article.pytorch-article .error .admonition-title { - color: #fff; - letter-spacing: 1px; - text-transform: uppercase; - margin-bottom: 1.125rem; - padding: 3px 0 3px 1.375rem; - position: relative; - font-size: .875rem -} - -article.pytorch-article .note .admonition-title:before, -article.pytorch-article .warning .admonition-title:before, -article.pytorch-article .tip .admonition-title:before, -article.pytorch-article .seealso .admonition-title:before, -article.pytorch-article .hint .admonition-title:before, -article.pytorch-article .important .admonition-title:before, -article.pytorch-article .caution .admonition-title:before, -article.pytorch-article .danger .admonition-title:before, -article.pytorch-article .attention .admonition-title:before, -article.pytorch-article .error .admonition-title:before { - content: "•"; - position: absolute; - left: 9px; - color: #fff; - top: 2px -} - -article.pytorch-article .note p:nth-child(n+2), -article.pytorch-article .warning p:nth-child(n+2), -article.pytorch-article .tip p:nth-child(n+2), -article.pytorch-article .seealso p:nth-child(n+2), -article.pytorch-article .hint p:nth-child(n+2), -article.pytorch-article .important p:nth-child(n+2), -article.pytorch-article .caution p:nth-child(n+2), -article.pytorch-article .danger p:nth-child(n+2), -article.pytorch-article .attention p:nth-child(n+2), -article.pytorch-article .error p:nth-child(n+2) { - padding: 0 1.375rem -} - -article.pytorch-article .note table, -article.pytorch-article .warning table, -article.pytorch-article .tip table, -article.pytorch-article .seealso table, -article.pytorch-article .hint table, -article.pytorch-article .important table, -article.pytorch-article .caution table, -article.pytorch-article .danger table, -article.pytorch-article .attention table, -article.pytorch-article .error table { - margin: 0 2rem; - width: auto -} - -article.pytorch-article .note .pre, -article.pytorch-article .note pre, -article.pytorch-article .warning .pre, -article.pytorch-article .warning pre, -article.pytorch-article .tip .pre, -article.pytorch-article .tip pre, -article.pytorch-article .seealso .pre, -article.pytorch-article .seealso pre, -article.pytorch-article .hint .pre, -article.pytorch-article .hint pre, -article.pytorch-article .important .pre, -article.pytorch-article .important pre, -article.pytorch-article .caution .pre, -article.pytorch-article .caution pre, -article.pytorch-article .danger .pre, -article.pytorch-article .danger pre, -article.pytorch-article .attention .pre, -article.pytorch-article .attention pre, -article.pytorch-article .error .pre, -article.pytorch-article .error pre { - background: #fff; - outline: 1px solid #e9e9e9 -} - -article.pytorch-article .note :not(dt)>code, -article.pytorch-article .warning :not(dt)>code, -article.pytorch-article .tip :not(dt)>code, -article.pytorch-article .seealso :not(dt)>code, -article.pytorch-article .hint :not(dt)>code, -article.pytorch-article .important :not(dt)>code, -article.pytorch-article .caution :not(dt)>code, -article.pytorch-article .danger :not(dt)>code, -article.pytorch-article .attention :not(dt)>code, -article.pytorch-article .error :not(dt)>code { - border-top: solid 2px #fff; - background-color: #fff; - border-bottom: solid 2px #fff; - padding: 0px 3px; - -webkit-box-decoration-break: clone; - box-decoration-break: clone; - outline: 1px solid #e9e9e9 -} - -article.pytorch-article .note :not(dt)>code .pre, -article.pytorch-article .warning :not(dt)>code .pre, -article.pytorch-article .tip :not(dt)>code .pre, -article.pytorch-article .seealso :not(dt)>code .pre, -article.pytorch-article .hint :not(dt)>code .pre, -article.pytorch-article .important :not(dt)>code .pre, -article.pytorch-article .caution :not(dt)>code .pre, -article.pytorch-article .danger :not(dt)>code .pre, -article.pytorch-article .attention :not(dt)>code .pre, -article.pytorch-article .error :not(dt)>code .pre { - outline: 0px; - padding: 0px -} - -article.pytorch-article .note pre, -article.pytorch-article .warning pre, -article.pytorch-article .tip pre, -article.pytorch-article .seealso pre, -article.pytorch-article .hint pre, -article.pytorch-article .important pre, -article.pytorch-article .caution pre, -article.pytorch-article .danger pre, -article.pytorch-article .attention pre, -article.pytorch-article .error pre { - margin-bottom: 0 -} - -article.pytorch-article .note .highlight, -article.pytorch-article .warning .highlight, -article.pytorch-article .tip .highlight, -article.pytorch-article .seealso .highlight, -article.pytorch-article .hint .highlight, -article.pytorch-article .important .highlight, -article.pytorch-article .caution .highlight, -article.pytorch-article .danger .highlight, -article.pytorch-article .attention .highlight, -article.pytorch-article .error .highlight { - margin: 0 2rem 1.125rem 2rem -} - -article.pytorch-article .note ul, -article.pytorch-article .note ol, -article.pytorch-article .warning ul, -article.pytorch-article .warning ol, -article.pytorch-article .tip ul, -article.pytorch-article .tip ol, -article.pytorch-article .seealso ul, -article.pytorch-article .seealso ol, -article.pytorch-article .hint ul, -article.pytorch-article .hint ol, -article.pytorch-article .important ul, -article.pytorch-article .important ol, -article.pytorch-article .caution ul, -article.pytorch-article .caution ol, -article.pytorch-article .danger ul, -article.pytorch-article .danger ol, -article.pytorch-article .attention ul, -article.pytorch-article .attention ol, -article.pytorch-article .error ul, -article.pytorch-article .error ol { - padding-left: 3.25rem -} - -article.pytorch-article .note ul li, -article.pytorch-article .note ol li, -article.pytorch-article .warning ul li, -article.pytorch-article .warning ol li, -article.pytorch-article .tip ul li, -article.pytorch-article .tip ol li, -article.pytorch-article .seealso ul li, -article.pytorch-article .seealso ol li, -article.pytorch-article .hint ul li, -article.pytorch-article .hint ol li, -article.pytorch-article .important ul li, -article.pytorch-article .important ol li, -article.pytorch-article .caution ul li, -article.pytorch-article .caution ol li, -article.pytorch-article .danger ul li, -article.pytorch-article .danger ol li, -article.pytorch-article .attention ul li, -article.pytorch-article .attention ol li, -article.pytorch-article .error ul li, -article.pytorch-article .error ol li { - color: #262626 -} - -article.pytorch-article .note p, -article.pytorch-article .warning p, -article.pytorch-article .tip p, -article.pytorch-article .seealso p, -article.pytorch-article .hint p, -article.pytorch-article .important p, -article.pytorch-article .caution p, -article.pytorch-article .danger p, -article.pytorch-article .attention p, -article.pytorch-article .error p { - margin-top: 1.125rem -} - -article.pytorch-article .note .admonition-title { - background: #54c7ec -} - -article.pytorch-article .warning .admonition-title { - background: #e94f3b -} - -article.pytorch-article .tip .admonition-title { - background: #6bcebb -} - -article.pytorch-article .seealso .admonition-title { - background: #6bcebb -} - -article.pytorch-article .hint .admonition-title { - background: #a2cdde -} - -article.pytorch-article .important .admonition-title { - background: #5890ff -} - -article.pytorch-article .caution .admonition-title { - background: #f7923a -} - -article.pytorch-article .danger .admonition-title { - background: #db2c49 -} - -article.pytorch-article .attention .admonition-title { - background: #f5a623 -} - -article.pytorch-article .error .admonition-title { - background: #cc2f90 -} - -article.pytorch-article .sphx-glr-download-link-note.admonition.note, -article.pytorch-article .reference.download.internal, -article.pytorch-article .sphx-glr-signature { - display: none -} - -article.pytorch-article .admonition>p:last-of-type { - margin-bottom: 0; - padding-bottom: 1.125rem !important -} - -.pytorch-article div.sphx-glr-download a { - background-color: #f3f4f7; - background-image: url("../images/arrow-down-orange.svg"); - background-repeat: no-repeat; - background-position: left 10px center; - background-size: 15px 15px; - border-radius: 0; - border: none; - display: block; - text-align: left; - padding: .9375rem 3.125rem; - position: relative; - margin: 1.25rem auto -} - -@media screen and (min-width: 768px) { - .pytorch-article div.sphx-glr-download a:after { - content: ""; - display: block; - width: 0; - height: 1px; - position: absolute; - bottom: -1px; - left: 5px; - background-color: #de3412; - -webkit-transition: width .25s ease-in-out; - transition: width .25s ease-in-out - } - - .pytorch-article div.sphx-glr-download a:hover:after { - width: calc(100% - 5px) - } -} - -@media screen and (min-width: 768px) { - .pytorch-article div.sphx-glr-download a:after { - background-color: #de3412 - } -} - -@media screen and (min-width: 768px) { - .pytorch-article div.sphx-glr-download a { - background-position: left 20px center - } -} - -.pytorch-article div.sphx-glr-download a:hover { - -webkit-box-shadow: none; - box-shadow: none; - text-decoration: none; - background-image: url("../images/arrow-down-orange.svg"); - background-color: #f3f4f7 -} - -.pytorch-article div.sphx-glr-download a span.pre { - background-color: rgba(0, 0, 0, 0); - font-size: 1.125rem; - padding: 0; - color: #262626 -} - -.pytorch-article div.sphx-glr-download a code, -.pytorch-article div.sphx-glr-download a kbd, -.pytorch-article div.sphx-glr-download a pre, -.pytorch-article div.sphx-glr-download a samp, -.pytorch-article div.sphx-glr-download a span.pre { - font-family: FreightSans, Helvetica Neue, Helvetica, Arial, sans-serif -} - -.pytorch-article p.sphx-glr-script-out { - margin-bottom: 1.125rem -} - -.pytorch-article div.sphx-glr-script-out { - margin-bottom: 2.5rem -} - -.pytorch-article div.sphx-glr-script-out .highlight { - margin-left: 0; - margin-top: 0 -} - -.pytorch-article div.sphx-glr-script-out .highlight pre { - background-color: #fdede9; - padding: 1.5625rem; - color: #837b79 -} - -.pytorch-article div.sphx-glr-script-out+p { - margin-top: unset -} - -article.pytorch-article .wy-table-responsive table { - border: none; - border-color: #fff !important; - table-layout: fixed -} - -article.pytorch-article .wy-table-responsive table thead tr { - border-bottom: 2px solid #6c6c6d -} - -article.pytorch-article .wy-table-responsive table thead th { - line-height: 1.75rem; - padding-left: .9375rem; - padding-right: .9375rem -} - -article.pytorch-article .wy-table-responsive table tbody .row-odd { - background-color: #f3f4f7 -} - -article.pytorch-article .wy-table-responsive table tbody td { - color: #6c6c6d; - white-space: normal; - padding: .9375rem; - font-size: 1rem; - line-height: 1.375rem -} - -article.pytorch-article .wy-table-responsive table tbody td .pre { - background: #fff; - color: #de3412; - font-size: 87.5% -} - -article.pytorch-article .wy-table-responsive table tbody td code { - font-size: 87.5% -} - -a[rel~=prev], -a[rel~=next] { - padding: .375rem 0 0 0 -} - -img.next-page, -img.previous-page { - width: 8px; - height: 10px; - position: relative; - top: -1px -} - -img.previous-page { - -webkit-transform: scaleX(-1); - transform: scaleX(-1) -} - -.rst-footer-buttons { - margin-top: 1.875rem; - margin-bottom: 1.875rem -} - -.rst-footer-buttons .btn:focus, -.rst-footer-buttons .btn.focus { - -webkit-box-shadow: none; - box-shadow: none -} - -article.pytorch-article blockquote { - margin-left: 3.75rem; - color: #6c6c6d -} - -article.pytorch-article .caption { - color: #6c6c6d; - letter-spacing: .25px; - line-height: 2.125rem -} - -article.pytorch-article .math { - color: #262626; - width: auto; - text-align: center -} - -article.pytorch-article .math img { - width: auto -} - -.pytorch-breadcrumbs-wrapper { - width: 100% -} - -@media screen and (min-width: 1101px) { - .pytorch-breadcrumbs-wrapper { - float: left; - margin-left: 3%; - width: 73% - } -} - -@media screen and (min-width: 1600px) { - .pytorch-breadcrumbs-wrapper { - width: 850px; - margin-left: 1.875rem - } -} - -.pytorch-breadcrumbs-wrapper .pytorch-breadcrumbs-aside { - float: right -} - -.pytorch-breadcrumbs-wrapper .pytorch-breadcrumbs-aside .fa.fa-github { - margin-top: 5px; - display: block -} - -.pytorch-article .container { - padding-left: 0; - padding-right: 0; - max-width: none -} - -a:link, -a:visited, -a:hover { - color: #de3412 -} - -::-webkit-input-placeholder { - color: #de3412 -} - -::-moz-placeholder { - color: #de3412 -} - -:-ms-input-placeholder { - color: #de3412 -} - -:-moz-placeholder { - color: #de3412 -} - -@media screen and (min-width: 768px) { - .site-footer a:hover { - color: #de3412 - } -} - -.docs-tutorials-resources a { - color: #de3412 -} - -.header-holder { - position: relative; - z-index: 201 -} - -.header-holder .main-menu ul li.active:after { - color: #de3412 -} - -.header-holder .main-menu ul li.active a { - color: #de3412 -} - -@media screen and (min-width: 1100px) { - .header-holder .main-menu ul li a:hover { - color: #de3412 - } -} - -.mobile-main-menu.open ul li.active a { - color: #de3412 -} - -.version { - padding-bottom: 1rem -} - -.pytorch-call-to-action-links { - padding-top: 0; - display: -webkit-box; - display: -ms-flexbox; - display: flex -} - -@media screen and (min-width: 768px) { - .pytorch-call-to-action-links { - padding-top: 2.5rem - } -} - -@media(min-width: 768px)and (max-width: 1239px) { - .pytorch-call-to-action-links { - padding-top: 0 - } -} - -@media(min-width: 1100px)and (max-width: 1239px) { - .pytorch-call-to-action-links { - padding-top: 2.5rem - } -} - -.pytorch-call-to-action-links #tutorial-type { - display: none -} - -.pytorch-call-to-action-links .call-to-action-img, -.pytorch-call-to-action-links .call-to-action-notebook-img { - height: 1.375rem; - width: 1.375rem; - margin-right: 10px -} - -.pytorch-call-to-action-links .call-to-action-notebook-img { - height: 1rem -} - -.pytorch-call-to-action-links a { - padding-right: 1.25rem; - color: #000; - cursor: pointer -} - -.pytorch-call-to-action-links a:hover { - color: #de3412 -} - -.pytorch-call-to-action-links a .call-to-action-desktop-view { - display: none -} - -@media screen and (min-width: 768px) { - .pytorch-call-to-action-links a .call-to-action-desktop-view { - display: block - } -} - -.pytorch-call-to-action-links a .call-to-action-mobile-view { - display: block -} - -@media screen and (min-width: 768px) { - .pytorch-call-to-action-links a .call-to-action-mobile-view { - display: none - } -} - -.pytorch-call-to-action-links a #google-colab-link, -.pytorch-call-to-action-links a #download-notebook-link, -.pytorch-call-to-action-links a #github-view-link { - padding-bottom: .625rem; - border-bottom: 1px solid #f3f4f7; - padding-right: 2.5rem; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center -} - -.pytorch-call-to-action-links a #google-colab-link:hover, -.pytorch-call-to-action-links a #download-notebook-link:hover, -.pytorch-call-to-action-links a #github-view-link:hover { - border-bottom-color: #de3412; - color: #de3412 -} - -.slack-container { - display: -webkit-box; - display: -ms-flexbox; - display: flex -} - -.slack-container .slack-button { - border: 1px solid rgba(0, 0, 0, 0); - background: linear-gradient(206.91deg, #de3412 16.83%, #3EABB3 144.59%); - border-radius: 6px; - height: 30px; - width: 210px; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; - font-size: 14px -} - -.slack-container a { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - height: 100%; - text-decoration: none -} - -.slack-container .icon { - height: 100%; - color: #fff; - margin-left: 10px; - padding-top: 2px -} - -.slack-container .button-title { - margin: auto; - margin-left: 5px; - margin-right: 5px; - color: #fff -} - -.slack-align-left { - -webkit-box-pack: start; - -ms-flex-pack: start; - justify-content: flex-start -} - -.slack-align-center { - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center -} - -.slack-align-right { - -webkit-box-pack: end; - -ms-flex-pack: end; - justify-content: flex-end -} - -#tutorial-cards-container #tutorial-cards { - width: 100% -} - -#tutorial-cards-container .tutorials-nav { - padding-left: 0; - padding-right: 0; - padding-bottom: 0 -} - -#tutorial-cards-container .tutorials-hr { - margin-top: 1rem; - margin-bottom: 1rem -} - -#tutorial-cards-container .card.tutorials-card { - border: 1px solid #cfcfcf; - border-radius: 5px; - height: 98px; - margin-bottom: 1.25rem; - margin-bottom: 1.875rem; - cursor: pointer -} - -@media screen and (min-width: 1240px) { - #tutorial-cards-container .card.tutorials-card { - height: 200px - } -} - -@media(min-width: 768px)and (max-width: 1239px) { - #tutorial-cards-container .card.tutorials-card { - height: 200px - } -} - -#tutorial-cards-container .card.tutorials-card .tutorials-image { - position: absolute; - top: 0px; - right: 0px; - height: 96px; - width: 96px; - opacity: .7 -} - -#tutorial-cards-container .card.tutorials-card .tutorials-image img { - height: 100%; - width: 100% -} - -@media screen and (min-width: 768px) { - #tutorial-cards-container .card.tutorials-card .tutorials-image { - height: 198px; - width: 198px - } -} - -@media(min-width: 768px)and (max-width: 1239px) { - #tutorial-cards-container .card.tutorials-card .tutorials-image { - height: 198px; - width: 198px - } -} - -#tutorial-cards-container .card.tutorials-card .tutorials-image:before { - content: ""; - position: absolute; - top: 0; - left: 0; - bottom: 0; - right: 0; - z-index: 1; - opacity: .075 -} - -#tutorial-cards-container .card.tutorials-card .card-title-container { - display: -webkit-inline-box; - display: -ms-inline-flexbox; - display: inline-flex -} - -#tutorial-cards-container .card.tutorials-card .card-title-container h4 { - margin-bottom: 1.125rem; - margin-top: 0; - font-size: 1.5rem -} - -#tutorial-cards-container .card.tutorials-card p.card-summary, -#tutorial-cards-container .card.tutorials-card .card-title-container, -#tutorial-cards-container .card.tutorials-card p.tags { - white-space: nowrap; - overflow-y: hidden; - overflow-x: scroll -} - -@media screen and (min-width: 768px) { - - #tutorial-cards-container .card.tutorials-card p.card-summary, - #tutorial-cards-container .card.tutorials-card .card-title-container, - #tutorial-cards-container .card.tutorials-card p.tags { - overflow: hidden - } -} - -@media(min-width: 768px)and (max-width: 1239px) { - - #tutorial-cards-container .card.tutorials-card p.card-summary, - #tutorial-cards-container .card.tutorials-card .card-title-container, - #tutorial-cards-container .card.tutorials-card p.tags { - overflow: hidden - } -} - -#tutorial-cards-container .card.tutorials-card p.card-summary, -#tutorial-cards-container .card.tutorials-card p.tags { - color: #6c6c6d; - font-weight: 400; - margin-bottom: 0; - line-height: 1.5rem; - font-size: .9375rem -} - -#tutorial-cards-container .card.tutorials-card p.card-summary { - height: 1.5rem -} - -@media screen and (min-width: 768px) { - #tutorial-cards-container .card.tutorials-card p.card-summary { - white-space: normal; - height: 4.5rem - } -} - -@media(min-width: 768px)and (max-width: 1239px) { - #tutorial-cards-container .card.tutorials-card p.card-summary { - white-space: normal; - height: 4.5rem - } -} - -#tutorial-cards-container .card.tutorials-card p.card-summary, -#tutorial-cards-container .card.tutorials-card .card-title-container { - width: calc(100% - 96px) -} - -@media screen and (min-width: 768px) { - - #tutorial-cards-container .card.tutorials-card p.card-summary, - #tutorial-cards-container .card.tutorials-card .card-title-container { - width: calc(100% - 200px) - } -} - -@media(min-width: 768px)and (max-width: 1239px) { - - #tutorial-cards-container .card.tutorials-card p.card-summary, - #tutorial-cards-container .card.tutorials-card .card-title-container { - width: calc(100% - 200px) - } -} - -#tutorial-cards-container .card.tutorials-card p.tags { - position: absolute; - bottom: .75rem; - width: calc(100% - 96px - 1.25rem - 1.25rem) -} - -@media screen and (min-width: 768px) { - #tutorial-cards-container .card.tutorials-card p.tags { - width: calc(100% - 200px - 1.25rem - 1.25rem) - } -} - -@media(min-width: 768px)and (max-width: 1239px) { - #tutorial-cards-container .card.tutorials-card p.tags { - width: calc(100% - 200px - 1.25rem - 1.25rem) - } -} - -#tutorial-cards-container .card.tutorials-card h4 { - color: #262626; - margin-bottom: 1.125rem -} - -#tutorial-cards-container .card.tutorials-card a { - height: 100% -} - -@media screen and (min-width: 768px) { - #tutorial-cards-container .card.tutorials-card a { - min-height: 190px - } -} - -@media(min-width: 768px)and (max-width: 1239px) { - #tutorial-cards-container .card.tutorials-card a { - min-height: 234px - } -} - -@media screen and (min-width: 768px) { - #tutorial-cards-container .card.tutorials-card:after { - content: ""; - display: block; - width: 0; - height: 1px; - position: absolute; - bottom: -1px; - left: 5px; - background-color: #de3412; - -webkit-transition: width .25s ease-in-out; - transition: width .25s ease-in-out - } - - #tutorial-cards-container .card.tutorials-card:hover:after { - width: calc(100% - 5px) - } -} - -#tutorial-cards-container .card.tutorials-card:hover { - background-color: #fff; - border: 1px solid #e2e2e2 -} - -#tutorial-cards-container .card.tutorials-card:hover p.card-summary { - color: #262626 -} - -#tutorial-cards-container .card.tutorials-card:hover .tutorials-image { - opacity: unset -} - -#tutorial-cards-container .tutorial-tags-container { - width: 100% -} - -#tutorial-cards-container .tutorial-tags-container.active { - width: 0 -} - -#tutorial-cards-container .tutorial-filter-menu ul { - list-style-type: none; - padding-left: 1.25rem -} - -#tutorial-cards-container .tutorial-filter-menu ul li { - padding-right: 1.25rem; - word-break: break-all -} - -#tutorial-cards-container .tutorial-filter-menu ul li a { - color: #979797 -} - -#tutorial-cards-container .tutorial-filter-menu ul li a:hover { - color: #de3412 -} - -#tutorial-cards-container .tutorial-filter { - cursor: pointer -} - -#tutorial-cards-container .filter-btn { - color: #979797; - border: 1px solid #979797; - border-radius: 3px; - display: inline-block; - text-align: center; - white-space: nowrap; - vertical-align: middle; - padding: .375rem .75rem; - font-size: 1rem; - line-height: 1.5; - margin-bottom: 5px -} - -#tutorial-cards-container .filter-btn:hover { - border: 1px solid #de3412; - color: #de3412 -} - -#tutorial-cards-container .filter-btn.selected { - background-color: #de3412; - border: 1px solid #de3412; - color: #fff -} - -#tutorial-cards-container .all-tag-selected { - background-color: #979797; - color: #fff -} - -#tutorial-cards-container .all-tag-selected:hover { - border-color: #979797; - color: #fff -} - -#tutorial-cards-container .pagination .page { - border: 1px solid #dee2e6; - padding: .5rem .75rem -} - -#tutorial-cards-container .pagination .active .page { - background-color: #dee2e6 -} - -article.pytorch-article .display-card-container .col-md-2 { - padding: 5px -} - -article.pytorch-article .display-card-container .col-md-3 { - padding: 5px -} - -article.pytorch-article .display-card-container .col-md-4 { - padding: 5px -} - -article.pytorch-article .display-card-container .col-md-6 { - padding: 5px -} - -article.pytorch-article .display-card-container .col-md-12 { - padding: 5px -} - -article.pytorch-article .display-card-container h3 { - margin: 5px 0 10px 0 -} - -@media screen and (min-width: 768px) { - article.pytorch-article .display-card-container .display-card-hover:after { - content: ""; - display: block; - width: 0; - height: 2px; - position: absolute; - top: calc(100% - 12px); - left: 15px; - background-color: #de3412; - -webkit-transition: width .25s ease-in-out; - transition: width .25s ease-in-out - } - - article.pytorch-article .display-card-container .display-card-hover:hover:after { - width: calc(100% - 30px) - } -} - -article.pytorch-article .display-card-container .card-tag { - position: absolute; - bottom: 17px; - left: 15px; - padding: 2px 3px 2px 3px; - border: 1px solid #de3412; - color: #de3412; - border-radius: 4px; - font-size: 10px; - font-weight: 500; - text-transform: uppercase -} - -article.pytorch-article .display-card-container .display-card { - padding-bottom: 10px; - border: 1px solid #cfcfcf; - border-radius: 5px; - padding: 10px -} - -article.pytorch-article .display-card-container .display-card .body-paragraph { - color: #666; - font-weight: 400; - font-size: .875rem; - line-height: 1.25rem -} - -article.pytorch-article .display-card-container .display-card .image-center { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - margin: auto -} - -article.pytorch-article .display-card-container .display-card .image-center img { - height: 125px; - margin: auto; - width: 100%; - -o-object-fit: contain; - object-fit: contain -} - -article.pytorch-article .display-card-container .display-card .image-right { - float: right; - height: 100% -} - -article.pytorch-article .display-card-container .display-card .image-right img { - height: 100%; - width: auto; - -o-object-fit: contain; - object-fit: contain -} - -article.pytorch-article .tutorials-callout-container { - padding-bottom: 50px -} - -article.pytorch-article .tutorials-callout-container .col-md-6 { - padding: 5px -} - -article.pytorch-article .tutorials-callout-container .text-container { - padding-bottom: 10px; - border: 1px solid #cfcfcf; - border-radius: 5px; - padding: 10px -} - -@media screen and (min-width: 768px) { - article.pytorch-article .tutorials-callout-container .text-container:after { - content: ""; - display: block; - width: 0; - height: 2px; - position: absolute; - top: calc(100% - 12px); - left: 15px; - background-color: #de3412; - -webkit-transition: width .25s ease-in-out; - transition: width .25s ease-in-out - } - - article.pytorch-article .tutorials-callout-container .text-container:hover:after { - width: calc(100% - 30px) - } -} - -@media screen and (min-width: 768px) { - article.pytorch-article .tutorials-callout-container .text-container { - height: 160px - } -} - -article.pytorch-article .tutorials-callout-container .text-container .body-paragraph { - color: #666; - font-weight: 400; - font-size: .875rem; - line-height: 1.25rem -} - -article.pytorch-article .tutorials-callout-container .text-container-small { - padding-bottom: 10px; - border: 1px solid #cfcfcf; - border-radius: 5px; - padding: 10px; - margin-bottom: 10px -} - -@media screen and (min-width: 768px) { - article.pytorch-article .tutorials-callout-container .text-container-small:after { - content: ""; - display: block; - width: 0; - height: 2px; - position: absolute; - top: calc(100% - 22px); - left: 15px; - background-color: #de3412; - -webkit-transition: width .25s ease-in-out; - transition: width .25s ease-in-out - } - - article.pytorch-article .tutorials-callout-container .text-container-small:hover:after { - width: calc(100% - 30px) - } -} - -@media screen and (min-width: 768px) { - article.pytorch-article .tutorials-callout-container .text-container-small { - height: 130px - } -} - -article.pytorch-article .tutorials-callout-container .text-container-small .body-paragraph { - color: #666; - font-weight: 400; - font-size: .875rem; - line-height: 1.25rem -} - -article.pytorch-article .tutorials-callout-container .btn.callout-button { - font-size: 1.125rem; - border-radius: 0; - border: none; - background-color: #f3f4f7; - color: #6c6c6d; - font-weight: 400; - position: relative; - letter-spacing: .25px -} - -@media screen and (min-width: 768px) { - article.pytorch-article .tutorials-callout-container .btn.callout-button:after { - content: ""; - display: block; - width: 0; - height: 1px; - position: absolute; - bottom: -1px; - left: 5px; - background-color: #de3412; - -webkit-transition: width .25s ease-in-out; - transition: width .25s ease-in-out - } - - article.pytorch-article .tutorials-callout-container .btn.callout-button:hover:after { - width: calc(100% - 5px) - } -} - -article.pytorch-article .tutorials-callout-container .btn.callout-button a { - color: inherit -} - -.center-wrapper { - max-width: 560px; - height: auto; - margin: 1.5rem auto -} - -.video-wrapper { - position: relative; - padding-bottom: 56.25% -} - -.video-wrapper iframe { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100% -} - -.sbs-code { - display: grid; - grid-template-columns: repeat(2, 1fr); - grid-column-gap: 10px; - grid-template-rows: auto; - grid-template-areas: "sbs-hdr1 sbs-hdr2" "sbs-blk1 sbs-blk2"; - margin-bottom: 1.5rem -} - -.sbs-code.container p { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-pack: left; - -ms-flex-pack: left; - justify-content: left; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - font-style: italic; - color: navy; - margin-bottom: 0rem -} - -.sbs-hdr1 { - grid-area: sbs-hdr1 -} - -.sbs-hdr2 { - grid-area: sbs-hdr2 -} - -.sbs-blk1 { - grid-area: sbs-blk1 -} - -.sbs-blk2 { - grid-area: sbs-blk2 -} - -div.sbs-code :is(.highlight, pre) { - height: 100%; - margin-bottom: 0rem -} - -dl.footnote.brackets { - display: grid; - grid-template-columns: -webkit-max-content auto; - grid-template-columns: max-content auto -} - -.footnote.brackets dt { - grid-column-start: 1; - margin-right: 1rem -} - -.footnote.brackets dd { - grid-column-start: 2 -} - -a.footnote-reference { - vertical-align: super; - font-size: 80%; - line-height: 0rem -} - -.pytorch-container { - margin: 0 auto; - padding: 0 1.875rem; - width: auto; - position: relative -} - -@media screen and (min-width: 1100px) { - .pytorch-container { - padding: 0 - } -} - -@media screen and (min-width: 1101px) { - .pytorch-container { - margin-left: 25% - } -} - -@media screen and (min-width: 1600px) { - .pytorch-container { - margin-left: 350px - } -} - -.pytorch-container:before, -.pytorch-container:after { - content: ""; - display: table -} - -.pytorch-container:after { - clear: both -} - -.pytorch-container { - *zoom: 1 -} - -.pytorch-content-wrap { - background-color: #fff; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - position: relative; - padding-top: 0 -} - -.pytorch-content-wrap:before, -.pytorch-content-wrap:after { - content: ""; - display: table -} - -.pytorch-content-wrap:after { - clear: both -} - -.pytorch-content-wrap { - *zoom: 1 -} - -@media screen and (min-width: 1101px) { - .pytorch-content-wrap { - padding-top: 45px; - float: left; - width: 100%; - display: block - } -} - -@media screen and (min-width: 1600px) { - .pytorch-content-wrap { - width: 100% - } -} - -.pytorch-content { - background: #fff; - width: 100%; - max-width: 700px; - position: relative -} - -.pytorch-content-left { - min-height: 100vh; - margin-top: 2.5rem; - width: 100% -} - -@media screen and (min-width: 1101px) { - .pytorch-content-left { - margin-top: 0; - margin-left: 20px; - width: 73%; - float: left - } -} - -@media screen and (min-width: 1600px) { - .pytorch-content-left { - width: 73%; - margin-left: 30px - } -} - -.pytorch-content-left .main-content { - padding-top: .9375rem -} - -.pytorch-content-left .main-content ul.simple { - padding-bottom: 1.25rem -} - -.pytorch-content-left .main-content .note:nth-child(1), -.pytorch-content-left .main-content .warning:nth-child(1) { - margin-top: 0 -} - -.pytorch-content-right { - display: none; - position: relative; - overflow-x: hidden; - overflow-y: hidden -} - -@media screen and (min-width: 1101px) { - .pytorch-content-right { - display: block; - margin-left: 0; - width: 25%; - float: left; - height: 100%; - padding-right: 5px - } -} - -@media screen and (min-width: 1600px) { - .pytorch-content-right { - width: 24%; - padding-right: 5px - } -} - -@media screen and (min-width: 1101px) { - .pytorch-side-scroll { - position: relative; - overflow-x: hidden; - overflow-y: scroll; - height: 100% - } -} - -.pytorch-menu-vertical { - padding: 1.25rem 1.875rem 2.5rem 1.875rem -} - -@media screen and (min-width: 1101px) { - .pytorch-menu-vertical { - display: block; - padding-top: 0; - padding-right: 13.5%; - padding-bottom: 5.625rem - } -} - -@media screen and (min-width: 1600px) { - .pytorch-menu-vertical { - padding-left: 0; - padding-right: 1.5625rem - } -} - -.pytorch-left-menu { - display: none; - background-color: #fff; - color: #262626; - overflow: scroll; - border-right: 1px solid #e2e2e2; - height: 100% -} - -@media screen and (min-width: 1101px) { - .pytorch-left-menu { - display: block; - overflow-x: hidden; - overflow-y: hidden; - padding-bottom: 110px; - padding: 0 1.875rem 0 0; - width: 22%; - z-index: 200; - float: left - } - - .pytorch-left-menu.make-fixed { - position: fixed; - top: 0; - bottom: 0; - left: 0; - float: none - } -} - -@media screen and (min-width: 1600px) { - .pytorch-left-menu { - padding: 0 0 0 1.875rem; - width: 350px - } -} - -.expand-menu, -.hide-menu { - color: #6c6c6d; - padding-left: 10px; - cursor: none; - float: right; - pointer-events: none -} - -.menu-item-decorator { - color: #848484 -} - -.collapse { - display: none -} - -.left-nav-top-caption { - padding-top: 1rem -} - -.pytorch-left-menu p.caption { - display: block; - margin-bottom: 0px; - text-transform: none; - white-space: normal; - border-radius: 6px; - padding: .5rem; - color: #1c1c1c; - font-family: UCity; - font-size: .875rem; - font-style: normal; - font-weight: 600; - line-height: 1.25rem; - letter-spacing: 0px; - text-align: left -} - -.pytorch-left-menu p.caption:hover { - background-color: #efeeff; - color: #f05f42 -} - -.pytorch-left-menu-search { - margin-bottom: 2.5rem -} - -@media screen and (min-width: 1101px) { - .pytorch-left-menu-search { - margin: 1.25rem .625rem 1.875rem 0 - } -} - -.pytorch-left-menu-search ::-webkit-input-placeholder { - color: #262626 -} - -.pytorch-left-menu-search ::-moz-placeholder { - color: #262626 -} - -.pytorch-left-menu-search :-ms-input-placeholder { - color: #262626 -} - -.pytorch-left-menu-search ::-ms-input-placeholder { - color: #262626 -} - -.pytorch-left-menu-search ::placeholder { - color: #262626 -} - -.pytorch-left-menu-search input[type=text] { - border-radius: 0; - padding: .5rem .75rem; - border-color: #fff; - color: #262626; - border-style: solid; - font-size: 1rem; - width: 100%; - background-color: #f3f4f7; - background-image: url("../images/search-icon.svg"); - background-repeat: no-repeat; - background-size: 18px 18px; - background-position: 12px 10px; - padding-left: 40px; - background-color: #f6f8fb -} - -.pytorch-left-menu-search input[type=text]:focus { - outline: 0 -} - -@media screen and (min-width: 1101px) { - .pytorch-left-menu .pytorch-side-scroll { - width: 120% - } -} - -@media screen and (min-width: 1600px) { - .pytorch-left-menu .pytorch-side-scroll { - width: 340px - } -} - -.pytorch-right-menu { - min-height: 100px; - overflow-x: hidden; - overflow-y: hidden; - left: 0; - z-index: 200; - padding-top: 0; - position: relative -} - -@media screen and (min-width: 1101px) { - .pytorch-right-menu { - width: 100% - } - - .pytorch-right-menu.scrolling-fixed { - position: fixed; - top: 45px; - left: 81.1%; - width: 19%; - padding-right: 10px - } - - .pytorch-right-menu.scrolling-absolute { - position: absolute; - left: 0 - } -} - -@media screen and (min-width: 1600px) { - .pytorch-right-menu { - left: 0; - width: 100% - } - - .pytorch-right-menu.scrolling-fixed { - position: fixed; - top: 45px; - left: 80% - } - - .pytorch-right-menu.scrolling-absolute { - position: absolute; - left: 0 - } -} - -.pytorch-left-menu ul, -.pytorch-right-menu ul { - list-style-type: none; - padding-left: 0; - margin-bottom: 2.5rem -} - -.pytorch-left-menu>ul, -.pytorch-right-menu>ul { - margin-bottom: 2.5rem -} - -.pytorch-left-menu a:link, -.pytorch-left-menu a:visited, -.pytorch-left-menu a:hover, -.pytorch-right-menu a:link, -.pytorch-right-menu a:visited, -.pytorch-right-menu a:hover { - color: #6c6c6d; - font-size: .875rem; - line-height: 1rem; - padding: 0; - text-decoration: none -} - -.pytorch-left-menu a:link.reference.internal, -.pytorch-left-menu a:visited.reference.internal, -.pytorch-left-menu a:hover.reference.internal, -.pytorch-right-menu a:link.reference.internal, -.pytorch-right-menu a:visited.reference.internal, -.pytorch-right-menu a:hover.reference.internal { - min-height: 25px; - height: auto; - padding: 5px; - border-radius: 6px; - position: relative; - width: 100% -} - -.pytorch-left-menu a:link.reference.internal:hover, -.pytorch-left-menu a:visited.reference.internal:hover, -.pytorch-left-menu a:hover.reference.internal:hover, -.pytorch-right-menu a:link.reference.internal:hover, -.pytorch-right-menu a:visited.reference.internal:hover, -.pytorch-right-menu a:hover.reference.internal:hover { - background-color: #efeeff; - color: #f05f42 -} - -.pytorch-left-menu a:link.reference.external, -.pytorch-left-menu a:visited.reference.external, -.pytorch-left-menu a:hover.reference.external, -.pytorch-right-menu a:link.reference.external, -.pytorch-right-menu a:visited.reference.external, -.pytorch-right-menu a:hover.reference.external { - min-height: 25px; - height: auto; - padding: 5px; - border-radius: 6px; - position: relative; - width: 100% -} - -.pytorch-left-menu a:link.reference.external:hover, -.pytorch-left-menu a:visited.reference.external:hover, -.pytorch-left-menu a:hover.reference.external:hover, -.pytorch-right-menu a:link.reference.external:hover, -.pytorch-right-menu a:visited.reference.external:hover, -.pytorch-right-menu a:hover.reference.external:hover { - background-color: #efeeff; - color: #f05f42 -} - -.pytorch-left-menu li code, -.pytorch-right-menu li code { - border: none; - background: inherit; - color: inherit; - padding-left: 0; - padding-right: 0 -} - -.pytorch-left-menu li span.toctree-expand, -.pytorch-right-menu li span.toctree-expand { - display: block; - float: left; - margin-left: -1.2em; - font-size: .8em; - line-height: 1.6em -} - -.pytorch-left-menu li.on a, -.pytorch-left-menu li.current>a, -.pytorch-right-menu li.on a, -.pytorch-right-menu li.current>a { - position: relative; - border: none -} - -.pytorch-left-menu li.on a span.toctree-expand, -.pytorch-left-menu li.current>a span.toctree-expand, -.pytorch-right-menu li.on a span.toctree-expand, -.pytorch-right-menu li.current>a span.toctree-expand { - display: block; - font-size: .8em; - line-height: 1.6em -} - -.pytorch-left-menu li.toctree-l1.current>a, -.pytorch-right-menu li.toctree-l1.current>a { - color: #de3412 -} - -.pytorch-left-menu li.toctree-l1.current>a:before, -.pytorch-right-menu li.toctree-l1.current>a:before { - content: ""; - display: block; - width: 2px; - height: 100%; - background: #de3412; - left: -5px; - top: 0; - position: absolute -} - -.pytorch-left-menu li.toctree-l1.current li.toctree-l2>ul, -.pytorch-left-menu li.toctree-l2.current li.toctree-l3>ul, -.pytorch-right-menu li.toctree-l1.current li.toctree-l2>ul, -.pytorch-right-menu li.toctree-l2.current li.toctree-l3>ul { - display: none -} - -.pytorch-left-menu li.toctree-l1.current li.toctree-l2.current>ul, -.pytorch-left-menu li.toctree-l2.current li.toctree-l3.current>ul, -.pytorch-right-menu li.toctree-l1.current li.toctree-l2.current>ul, -.pytorch-right-menu li.toctree-l2.current li.toctree-l3.current>ul { - display: block -} - -.pytorch-left-menu li.toctree-l2.current li.toctree-l3>a, -.pytorch-right-menu li.toctree-l2.current li.toctree-l3>a { - display: block -} - -.pytorch-left-menu li.toctree-l3, -.pytorch-right-menu li.toctree-l3 { - font-size: .9em -} - -.pytorch-left-menu li.toctree-l3.current li.toctree-l4>a, -.pytorch-right-menu li.toctree-l3.current li.toctree-l4>a { - display: block -} - -.pytorch-left-menu li.toctree-l4, -.pytorch-right-menu li.toctree-l4 { - font-size: .9em -} - -.pytorch-left-menu li.current ul, -.pytorch-right-menu li.current ul { - display: block -} - -.pytorch-left-menu li ul, -.pytorch-right-menu li ul { - margin-bottom: 0; - display: none -} - -.pytorch-left-menu li ul li a, -.pytorch-right-menu li ul li a { - margin-bottom: 0 -} - -.pytorch-left-menu a, -.pytorch-right-menu a { - display: inline-block; - position: relative -} - -.pytorch-left-menu a:hover, -.pytorch-right-menu a:hover { - cursor: pointer -} - -.pytorch-left-menu a:active, -.pytorch-right-menu a:active { - cursor: pointer -} - -.pytorch-left-menu ul { - padding-left: 0; - margin-left: 5px -} - -.pytorch-right-menu a:link, -.pytorch-right-menu a:visited, -.pytorch-right-menu a:hover { - color: #6c6c6d -} - -.pytorch-right-menu a:link span.pre, -.pytorch-right-menu a:visited span.pre, -.pytorch-right-menu a:hover span.pre { - color: #6c6c6d -} - -.pytorch-right-menu a.reference.internal.expanded:before { - content: "-"; - font-family: monospace; - position: absolute; - left: -12px -} - -.pytorch-right-menu a.reference.internal.not-expanded:before { - content: "+"; - font-family: monospace; - position: absolute; - left: -12px -} - -.pytorch-right-menu li.active>a { - color: #de3412 -} - -.pytorch-right-menu li.active>a span.pre, -.pytorch-right-menu li.active>a:before { - color: #de3412 -} - -.pytorch-right-menu li.active>a:after { - content: "•"; - color: #de3412; - display: inline-block; - font-size: 1.375rem; - left: -17px; - position: absolute; - top: 1px -} - -.pytorch-right-menu .pytorch-side-scroll>ul>li>ul>li { - margin-bottom: 0 -} - -.pytorch-right-menu ul ul { - padding-left: 0 -} - -.pytorch-right-menu ul ul li { - padding-left: 0px -} - -.pytorch-right-menu ul ul li a.reference.internal { - padding-left: 0 -} - -.pytorch-right-menu ul ul li ul { - display: none; - padding-left: 10px -} - -.pytorch-right-menu ul ul li li a.reference.internal { - padding-left: 0 -} - -.pytorch-right-menu li ul { - display: block -} - -.pytorch-right-menu .pytorch-side-scroll { - padding-top: 20px; -} - -@media screen and (min-width: 1101px) { - .pytorch-right-menu .pytorch-side-scroll { - width: 100% - } -} - -@media screen and (min-width: 1600px) { - .pytorch-right-menu .pytorch-side-scroll { - width: 100% - } -} - -.pytorch-right-menu .pytorch-side-scroll>ul { - padding-left: 20px; - padding-right: 0; - margin-bottom: 0 -} - -@media screen and (min-width: 1600px) { - .pytorch-right-menu .pytorch-side-scroll>ul { - padding-left: 25px - } -} - -.pytorch-right-menu .pytorch-side-scroll>ul>li>a.reference.internal { - color: #262626; - font-weight: 500 -} - -.pytorch-right-menu .pytorch-side-scroll ul li { - position: relative -} - -#pytorch-right-menu .side-scroll-highlight { - color: #de3412 -} - -.header-container { - max-width: none; - margin-top: 4px -} - -@media screen and (min-width: 1101px) { - .header-container { - margin-top: 0 - } -} - -@media screen and (min-width: 1600px) { - .header-container { - margin-top: 0 - } -} - -.container-fluid.header-holder, -.header-holder.container-sm, -.header-holder.container-md, -.header-holder.container-lg, -.header-holder.container-xl { - padding-right: 0; - padding-left: 0 -} - -.header-holder .container { - max-width: none; - padding-right: 1.875rem; - padding-left: 1.875rem -} - -@media screen and (min-width: 1101px) { - .header-holder .container { - padding-right: 1.875rem; - padding-left: 1.875rem - } -} - -.header-holder .main-menu { - -webkit-box-pack: unset; - -ms-flex-pack: unset; - justify-content: unset; - position: relative -} - -@media screen and (min-width: 1101px) { - .header-holder .main-menu ul { - padding-left: 0; - margin-left: 26% - } -} - -@media screen and (min-width: 1600px) { - .header-holder .main-menu ul { - padding-left: 38px; - margin-left: 310px - } -} - -.pytorch-page-level-bar { - display: none; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - background-color: #fff; - border-bottom: 1px solid #e2e2e2; - width: 100%; - z-index: 201 -} - -@media screen and (min-width: 1101px) { - .pytorch-page-level-bar { - left: 0; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - height: 45px; - padding-left: 0; - width: 100%; - position: absolute; - z-index: 1 - } - - .pytorch-page-level-bar.left-menu-is-fixed { - position: fixed; - top: 0; - left: 25%; - padding-left: 0; - right: 0; - width: 75% - } -} - -@media screen and (min-width: 1600px) { - .pytorch-page-level-bar { - left: 0; - right: 0; - width: auto; - z-index: 1 - } - - .pytorch-page-level-bar.left-menu-is-fixed { - left: 350px; - right: 0; - width: auto - } -} - -.pytorch-page-level-bar ul, -.pytorch-page-level-bar li { - margin: 0 -} - -.pytorch-shortcuts-wrapper { - display: none -} - -@media screen and (min-width: 1101px) { - .pytorch-shortcuts-wrapper { - font-size: .875rem; - float: left; - margin-left: 2% - } -} - -@media screen and (min-width: 1600px) { - .pytorch-shortcuts-wrapper { - margin-left: 1.875rem - } -} - -.cookie-banner-wrapper { - display: none -} - -.cookie-banner-wrapper .container { - padding-left: 1.875rem; - padding-right: 1.875rem; - max-width: 1240px -} - -.cookie-banner-wrapper.is-visible { - display: block; - position: fixed; - bottom: 0; - background-color: #f3f4f7; - min-height: 100px; - width: 100%; - z-index: 401; - border-top: 3px solid #ededee -} - -.cookie-banner-wrapper .gdpr-notice { - color: #6c6c6d; - margin-top: 1.5625rem; - text-align: left; - max-width: 1440px -} - -@media screen and (min-width: 768px) { - .cookie-banner-wrapper .gdpr-notice { - width: 77% - } -} - -@media(min-width: 768px)and (max-width: 1239px) { - .cookie-banner-wrapper .gdpr-notice { - width: inherit - } -} - -.cookie-banner-wrapper .gdpr-notice .cookie-policy-link { - color: #343434 -} - -.cookie-banner-wrapper .close-button { - -webkit-appearance: none; - -moz-appearance: none; - appearance: none; - background: rgba(0, 0, 0, 0); - border: 1px solid #f3f4f7; - height: 1.3125rem; - position: absolute; - bottom: 42px; - right: 0; - top: 0; - cursor: pointer; - outline: none -} - -@media screen and (min-width: 768px) { - .cookie-banner-wrapper .close-button { - right: 20%; - top: inherit - } -} - -@media(min-width: 768px)and (max-width: 1239px) { - .cookie-banner-wrapper .close-button { - right: 0; - top: 0 - } -} - -.main-menu ul li .resources-dropdown a { - cursor: pointer -} - -.main-menu ul li .dropdown-menu { - border-radius: 0; - padding: 0 -} - -.main-menu ul li .dropdown-menu .dropdown-item { - color: #6c6c6d; - border-bottom: 1px solid #e2e2e2 -} - -.main-menu ul li .dropdown-menu .dropdown-item:last-of-type { - border-bottom-color: rgba(0, 0, 0, 0) -} - -.main-menu ul li .dropdown-menu .dropdown-item:hover { - background-color: #de3412 -} - -.main-menu ul li .dropdown-menu .dropdown-item p { - font-size: 1rem; - color: #979797 -} - -.main-menu ul li .dropdown-menu a.dropdown-item:hover { - color: #fff -} - -.main-menu ul li .dropdown-menu a.dropdown-item:hover p { - color: #fff -} - -.resources-dropdown-menu { - display: none; - position: absolute; - z-index: 1000; - display: none; - float: left; - min-width: 10rem; - padding: .5rem 0; - font-size: 1rem; - color: #212529; - text-align: left; - list-style: none; - background-color: #fff; - background-clip: padding-box; - border: 1px solid rgba(0, 0, 0, .15); - border-radius: .25rem -} - -.resources-dropdown:hover .resources-dropdown-menu { - display: block -} - -.main-menu ul li .resources-dropdown-menu { - border-radius: 0; - padding: 0 -} - -.main-menu ul li.active:hover .resources-dropdown-menu { - display: block -} - -.main-menu ul li .resources-dropdown-menu .dropdown-item { - color: #6c6c6d; - border-bottom: 1px solid #e2e2e2 -} - -.resources-dropdown .with-down-orange-arrow { - padding-right: 2rem; - position: relative; - background: url("../images/chevron-down-orange.svg"); - background-size: 10px 15px; - background-position: top 0px right 12px; - background-repeat: no-repeat -} - -.with-down-arrow { - padding-right: 2rem; - position: relative; - background-image: url("../images/chevron-down-black.svg"); - background-size: 14px 18px; - background-position: top 7px right 10px; - background-repeat: no-repeat -} - -.with-down-arrow:hover { - background-image: url("../images/chevron-down-orange.svg"); - background-repeat: no-repeat -} - -.header-holder .main-menu ul li a.nav-dropdown-item { - display: block; - width: 100%; - clear: both; - font-weight: 400; - color: #979797; - text-align: left; - padding: 5px; - background-color: rgba(0, 0, 0, 0); - border-bottom: 1px solid #e2e2e2 -} - -.header-holder .main-menu ul li a.nav-dropdown-item:last-of-type { - border-bottom-color: rgba(0, 0, 0, 0) -} - -.header-holder .main-menu ul li a.nav-dropdown-item:hover { - background-color: #efeeff; - color: #de3412 -} - -.header-holder .main-menu ul li a.nav-dropdown-item .dropdown-title { - font-family: UCity; - font-size: .75rem; - font-weight: 400; - line-height: 1.375rem; - color: #6c6c6d -} - -.header-holder .main-menu ul li a.nav-dropdown-item:hover .dropdown-title { - background-color: hover_background; - color: #de3412 -} - -/*# sourceMappingURL=theme.css.map */ - -/* Customize CSS */ -#mainpage-title { - font-size: 2rem; - letter-spacing: 1.78px; - line-height: 2.5rem; - text-transform: uppercase; - margin: 1.375rem 0; -} - -#rl4co h1 { - font-size: 0; - line-height: 0; -} \ No newline at end of file diff --git a/docs/_theme/rl4co/static/fonts/FreightSans/freight-sans-bold-italic.woff b/docs/_theme/rl4co/static/fonts/FreightSans/freight-sans-bold-italic.woff deleted file mode 100644 index e317248423c75c8291b49bf7ef10e792167a1623..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 39560 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 diff --git a/docs/_theme/rl4co/static/fonts/FreightSans/freight-sans-book-italic.woff b/docs/_theme/rl4co/static/fonts/FreightSans/freight-sans-book-italic.woff deleted file mode 100644 index a50e5038a40569ac50f2cee39a0751cb26037eca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33944 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 V37Pl+`?OL900001TdUiQ003jn30(jH diff --git a/docs/_theme/rl4co/static/fonts/FreightSans/freight-sans-book.woff2 b/docs/_theme/rl4co/static/fonts/FreightSans/freight-sans-book.woff2 deleted file mode 100644 index 2688739f1f0bbaeb667259838a5ef06ecf9a5c1e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25120 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 T)@X9ci+<3aS@reXfBhT)8I@;R diff --git a/docs/_theme/rl4co/static/fonts/FreightSans/freight-sans-light-italic.woff b/docs/_theme/rl4co/static/fonts/FreightSans/freight-sans-light-italic.woff deleted file mode 100644 index beda58d4e2189693806b79b00cc3c29575a308fc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29304 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 ?{)rYg%aN&w}ky;bH8!>#J4RhUvTAPlljI0=S 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 Lkf!TzE&u=kDziPT diff --git a/docs/_theme/rl4co/static/fonts/FreightSans/freight-sans-light.woff b/docs/_theme/rl4co/static/fonts/FreightSans/freight-sans-light.woff deleted file mode 100644 index 226a0bf83583627ed9d9575063e22d874b84e790..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26908 zcmZU4V{j&2xa}KfVodBzY-eIjY}>YN+qP}nwr$&XZoYGWojSW}ZLC@ky1Tk+Kf9}) zrG>S|Lgze|GNnZDM$hUKqWsc_J8nhe`*yL5ET0127cCjKTrVS z2ALF=k(LJlfFS_@s5Ah8si2?AP)b-{ksknnDfrR;=zt{_6nmegRamC003~jKf2H#?1=~z<>@;)-~#~g6F(Z7{{XWDd23{2Z27}|{Ag-_{29tO z&=wo(+W*)h*8FIGV*d{ij4fP^ez+C@K++8Wh|kc~`=@PUsA~WKXfyq2SpEaNO8KnG z5BbAc{H*bQKm^ARCSzjh;PS&o{P-6I06=PFH$-17to46%x+_0%fARrZBjN&(S?ap{ z#MS?~HUR#A0R9E4W~FOs_{06&7vN$50K#G2?h4Ds+TH;GF#3rB^z_4D7jO)e+SnQX z*qZ$01E~Dr(Qo@jSey;@esVVb{lkI(hc#dI@}Cjt2Y|(^gvbBJ+4rR%-vGe!Y}mKU z8cu{bR1ZGFVBUn#dc3Lk)7Lv{hrqvIzCBn$pcQSVMR8RVnbLReTtz zBEn~S9Z#gLrfxQNx-5sUUlm(VO|*U;e}CI!Mdt!R=EAP$cHT@xcSXxB{CTP``-M`CW`ndhC zO9-fRRJu_F6NJX`iUlO%<{i;7ELP_=1Ak(d-mJu8hT5)y(29lEr{WS49 z<|Ku%48y;hNQn@M{XNc<=LS@y`x1#t4kAY4oWugio#2tmB2FpoMHfrP5V!0K#gYgV z%_T;0pBFg~$kQF<1tzJcRob7d)ZHaa_dj*-kmfVCND7UB>qv@&kQA#~hn56Z8i5^! zTpd}noUw!Rh+_#a$*#4F&`whVOF`*0*DApy8`P1z0@+qVoD}qtn{)`8c10KTNT2o) zFNO)Igwbj-g%SJn|B74m3+91vz4-k3qTn82df&mezFd_e=zeb?aI1ilItURa>;xMg;X0+y0f)oY)#w{ za-wtO=qDWo>F6H0fqKQdW+IVFBHZmj*cB3RUT0uMLw`9 zB9R%cdkkT4W@Mg=7&HLMPNvfkqtTx_gz4t1!dH$fPx+DzD#zd+vw>X|sUl7vaV+44 zUKMkDU*u!=ToX;dB6*H+PqpUR4tvdmZypD=&i%MZ;gJPf7A*Sax+FQ)DUK|7igZ5R>yFT)y2cmiEt6SBPah*I6`@q z7@F%Jp*zEv=dCixQiM^CH+R`KY1FT@$PF)SQ=tg^To6tugoEs)+a@o{HhTF#8Q2Nf zW*$o1fzQ7mbg-r7muf_~N9F!=L8YA^e}yCAnDxF$g)00#I^hs22gZV7b zo~FbJqN%#aIkMRA8W~}*kG+3CzcgbKhq~e)Y(8ut{u%WYaHNSB-QtyXlNeK<*ieW= zlFEkRL^h--yZ^csG52p>J7}+Ms!83r; z>q(JHAOw9%Sa15Wg7E3D3}ecCdWw8@@m5K@+FY+t;618)^s+Prko$XbI$9cQX zK9C`%`zND|Zlo!*vMTTAt0j*mhPma&jpag(XB@i+%FD7fc_oe^=H-UAQi$Bhl84W~ z`$R6*+m9kRtIx8gtixVg?KJS7F^@#@T+){xn%7Q8{x>7$-HiVZ>!2reFQ+Xv;dS}H zGVFV8-1qb{cI{$qKBfrSR%sH}*%fLwMHW0mqB^!lT>HsdB!q&BS&u2&r=y1^&)GN9+F|GB5>CYo zk(DC0PCFj`*P;MJcy_~J5Bt4gHdKOyRjRb;KA#|vyWn-^y=cbP4MHDw zyn2P@_)as*n7pztJg>B(D=lwI8XCYOF{ti;XSte_<2ctQk%4y;c<#q7qo zor~&DOqP-`c|;ntF2cv% z)LdqQSf4z(v8sJQr)@(&)`Y1v<3WM@eTv+CJSNrLq8ODeZ_KVXmG;VLX$w{a2ljw; ze&s{N^w7%5_5SXU{e!IG<^derUmWas0`V%`GSIKZ2Ay)+q@(JmsE8fwC?Zs?BI>Dj`Q=P!7S~q9h z(tVuC-YHq}S410DtbJ1q1m9Hybj{N-*FSJYO=pYIySS4AN4X3_q1(oZ%@NmYs{u*s zc=YGl?8WFI%PEB7nTbULPot^2r*u`PKZdW@f_6zFu0mt~5(K8woJbq7$fqJGg=JB* z8&*9JO9fO4uX9p%*#YUs2;;8^z=w5=p|J@SX>1k(Pf0Yrd02tme56* zY2o$ttBlwnn#qK--)bY}e_PO|%YOIx(D^qG9txMxhuMAZ6;Rm;{ zZF5*HRTtn&X@4?~L^a4jrL24lCqIn5aO!X-Cz3DQj8Y-mP#42qUL<86Drk`pcV1fS z*0jjW*@KxhD@7Rsdq=tMR6z)=BAK8ETMLL3fHV&sH6a|UiAo{-j-tn+9#CjNny-l^ zGsd~R=zQsN#$`dYuT3@SN7dtQLd2ToB{zU2vP>&nk^>%lekANUJsjwj`o1_ zoBXW*c*5)Q0CtDJGx;S-hx9L=m~Gqdq>@DK+u%dx58V$S?*f=T^)ILt0Wd2BAdiZ! z<1774TMsb|?mr~E)d5k{p`tHXx#P5-l!wV*mL6pW-4qGV5GzTRiArXwAKSeiuig-g zD^gSiK~A;G(z0lc3%z`5S`SX-?(35b)-}PB7u$kM>-|{`076 zg$d0zB4YO+-T=eNBCY@Srj9YwV*IiQL*B<4jIl8Yl&vBn;W4N*1%d+MgpT@VS{D0K zVT3j68udy~pj>?L2wW1N#TRlfn#bhIc9{0x{_mdO708=+kJ@C)-nBT;4?wx9} zb6ztj6-!Z|>6akAIh(&Pz#|FO=~C%PH^HL?uv<6UI9)LxqgC-TvLDGQt%CByLoUZp zhzy+nwqeRCciAXH2<|iKOOUCpQiM-qVkxZTj^(5 z%P5sFFQVw8NDW>)E_bG`EmOzR{XV=o_e^52Q&y_;+Xy_5WSwY*JanNF8~hGN zoSqCf+(<7*9*WXEoTegh-p293Jx*xDV2*|ZHYEy%^DGba7Z7P*dUp${(L~#m~ zZvrp~G=Mh~=E-GE|Hs_OM+XC32ppjWigS&au@7Oy$2msaWV%#2R|1dMA7n> z@+73fcky@h2kqPSbM)mwyVueuP=l<-i2GuY3~?BB|OzNUh8ApBillt z0EiGv$a0Sb34X6%m5;A)Vq~U&e0X|raqNL_O zd2w}NW$EpnnUR%&g^7*6xv{mOrKzpn+0oU(#mUY7`SJDP54n zEHvB%^yI0z`StD2XBA-L$yDmK9*1X*=1Y~^ExPkZmFvxyD~CH}z*xW-m53~Dd zv>0X9+xjNw=9ky0e@*WKP8rdQCewM6cV9yFa*8nV!2x}<;Xg&?PXj3f0|2A|-T-C* z4?qwg1P}p;0h9nZ00n>qK<1}c0k{I^{Z#7zz!3j?uQX-brPTQlHeumGdlx$z$T+ zsJEX=WfUKaEpt9KpO!x+is{<~pJe%z5^1alJQtjwM@BUGL#SC8J&ZZNe?fz%&n9q~ z0S>vW$>A|1IegU`ioa$*pn~2%@a{R#8<^%F7TABC5`Z41+lu>NV@$SeKj*3n~m2r#?E&5Ga|l@GV#irTY{#2Ef6f;+x`}h88513NlB^uB0}yB z9Cc8XZ=85p>(#8QKhg20nDm8M=~r@v!G(h-`90T6G)4uB_@q}p0Erln4aIi2G5S@& z`znGo)FCRyu^-e3J`}s$lfxoi|IL{$X=#nq_o9m3>)eeY&i*nIw1$qT$Dv2=^GkqV zNbxlYbGnlX{6Ow~nm57c@HW~z6SCoIMSwH8(GiYb3DV7LedBICtX-*fDxBZhy3DL( zj(qZ6YpQD)Bnub1pHIIxefs@N%=e9xs*1@34)mWJtJ`;8<5@^~2O4)B>3nys+JBE2 z2mti`4S;u9Tl9o>`F+@W^E`PmwN;m%*?H8pY7r+{Cz^B-M)D4u2$G%K>-Vv6J%@X`YxlGJbu$5Wssv=S3QzFO0I!*$Sl>Ppc;>D(qUy}Im4@H(PRs~r zSLJXsGI;Mi4-Mb#XUPfL_(z^MgK|Z}TzjJ78=Lm0PTkdCU-`I!RQOW^PuSWRi@Fpd ziGTn%R~+)0z!C#^@dJbEogU>i`DjV}AsOqY$b?gVIj5H8BHYyrE<=`b>Vx($`r(3~yojRrQ$Ia6G)Iq9E+^f?6ITQbCzuC-M0XBf z)b{wUZ|OT4_o7`~$Qne`cnn;-tUB)~vt20LOnn@?G`2giPb<`@_%mf}ws|w9eU&^+*l9ba~Yi;@!zr?Lg zEHBjPSYC>Y?>v#i@Fpp-9c6|07oeuAKo%~xJYC+Gz!+(qY!Rn48LajaB{{TaI`7zz zQ`eT{=x$2eJ50~wZk;>tlHu9Vyeo``PGr5%isv_1rJt%*yynUHABb#@TD}6h;11H$ z58@b*NSb2M+FUf#AT} zGa!NwZB(q1|JkU(P-#F+6Xw(o54hU_N!yiRYq>y!u-*8LG~yyixDMX7T=4Ue#r)lw zNhN{Mr-AR63Ee4>MV@>S-D!2d@_hQ~xEc1RqOUhTPp`rqzFdpHM^7Gfzy z2+?i`Tl4Ft7n13K#Yc3J@d^77WC0#BI?0bU3;5XJmv+q9Y89S#zq88yc}az6mX*!) z#h(s=Wn1^;R5&FbP>YLyk3ykoDv6)RpECkbdhK94BFn_V*h3Q`EEi7iSbCRZoYqbX z1kb(Qj+cs^x9|4bxwVQqL@(ptj=wICK)Ns7Z1(50sXeZin>p(as!Pfca zdF7U;dXWo_X3J5t7rp<5sP%#K7erP}wmHQF^^$fXd)%P^WZ5H@;xEjo5s)5J;uWKL z5ADA)+0)ZXhjZ^oX}|pvH?pxrO5}-iHb7pW+VGlwSoD zd*Mob0%y2kW~sdf-{s!HcTiOIPh0Nbg5sPIp@9DOuI3Yl34uV{13DyV93=`W(y@3l$>(wb_eGYiEeD(x8|7k5aGs84^3T& z53rqq66Yz33zQ|Uu^><}IE&91l!7o)lrwTrVo_A|;~R`9-Alt1`ls_W+x+khV!;?H zw8;Q37tuWa+bI!*yl5FFcHcX@8k4XVeD3Pvp0oMEO}OX zEs@GFHFq~$JCBR`bwc=~-VN=d80|vINPcYfh`UB^x5x5IpGg9}NVbVxrYS5U!w^D5 zHkCE^%r?J*2sl2`NtkI5;Zh?fK%6IQ<9i{AbOhMEXO ze9BX#&Yp_~iuzIXzj^1;CI-0@Bc=-%hsKJFBy47w?ZdEx4$CBIYC^ zQj-oPCra)mKdjK3fhJnN(w(DQGLQ+(AXpK=h+KsM&)Ei(oSxX;nA3{8@43tjt#w6? z(s&#(Z_;rUzK=}iWJ+?EJ@K|yx@UxLYNSo4FTQKy+LV+pcEID3VY7ca5Uf0J!$V*9 zrL*F>C+No2fr+z<8xca^>}Uch^w74}m1VJp9Sv;3K+z?KU;$AX)%K7}08{ZM239`- z*TGShQqYr&4G|J5%}<6jl9xd_!kqET<;(BTnaD4D;|yd(~M-q-L%{M7g?t(v zx!qy*SU}G!y+7?S)m_dCVy!YNkjSwT^_WI2WCknhp}>+Zqa`znniN4=SP^0YSOW)& zjfAdE;WLPB5fB^=vzaeJe+1XD{=}yrvQKZ*Le2vM>Nfre)`aa@(_Ayb#M}Jptw4g@6sb zoZ95*a(=k^V{T1mer)s$#5?^al9;yRJ2|_V8}a($?Q4q*g3@0@Ian_KJu zFbOD~hLYqW>ut`fi$B_EL5RMNU0IxRGCoy!mB&jwM`!z&-83-i@>gGnX?k_m z&2h2z+rMM^?e+Tw_~p(gI^pfMyG3ozrb2_D@1=h{s$-IuRaa}w@}>+U>n2d$mW zoA)`Hqf$G=ku}1=Bbx!-qBsn-fSVe~KXZV4$k)H~NLrXVnZVZ0@EwbTua3d&SkkO# zaEM2g6@Uy2h%R!%#)4ETqEO(0FgzGStSoy@OaW>b0&dfaHib5<-nkSl{p zv#JP81ZhLL8M}&+C&JU>GdSX?iqG~rDajYkl}eU z)Wl>O%opVR7UBjuIF*7z846H)`7$tZ0YGpFKAa=`+^7QKHA;m^DPlDItZ_o%VW$QO zenkD%UPseo#n)Mq4EHf|9=r?`n~a*{$-bPnu`dXglx+Q-EI6aWn&(DI(ZqSDs-sz) zaa{e(RV6rZXId_0W@4r~SHw;-<+nKXJUefzJFye^IWX>-Ys~j?sE{Xuqp$%B=F2p= zSB~Xq(+~=GPBBmJTSI+K1_IAgt1D(kpugVj53svRV>reFkUXEA>x zb`L~jpg+OCaY3Fb`+3QqIr@16j2fHghu0O=&j39mwrL}Lz@$F*)@->vXA&j6TW zzf6ZL|EX&^E0us3Fx;c06X?+BfDy4i&W|l0Gs#jvApE^p@o; zWzXym8i?~SlV!@)V`U20TihmE@Mk>9lIC2S;lnd3RfogYKi0^5QV_j1w6zS$aBFnd zr@3E>TVuDm;xtaQDr;>u41cYc7U8qB@&dV<^0^vF%8)BeG;_-oOBbnd0O*K@a zdgYzaJ==U{NF}30=KJk{+?p*X;v&{YTvW^#XpVb;NdfaxHRC8cWofGrcM^*3%%0!# zw2LOg3hhjnB^oeKIoD*TwmRTD(pFY%BUbD6@jZLLGvQL$ zElAh|qrysto}+^1Oay}KriXHW^?LNa&6Y5A&}#vJW(It*1EwwTF>%-tAhmk5Oxcu& z3P8f?sI;EhVL2Ou)4W~v=jSBlk1FmZK9&yB@mjtL&6Bm6t!=fIKY|J~^Od=uM~fD_ z-)Af5adR7mlQvTuUC%qmjD@T6tShwY+)g`MmpAX^-){dkd{m~>zJK*}Id-r7J={xL zjrX=2E_$}UG*R#{Z)Vc^qy2f=_1?DLeLsPx#8dt8F`WDJ;k=U{M_g&MF|mvNnQ8x$ zjDWoX4F+GcOw=z&cv4u=UXTunPT2s6try8Cs9hq`2ZK?E5Gu&Q=lNcW2m8a3&9mG6 zx~JE(Gei1SLRt#BOKSxK1+N-IKq-)TD0m*r0eK z9XP74z5Sm!6XAG)rG84ZI>1{QkW0Rdfeiv11bl@pxpF{qoHlH}pZeg0{FDzCG3eOG zAYn{>_f|E9{rA4Z<9hcUvnJ!^6^M1VToj14*6SQ?qIBuyS2owvpFkT(^~Og!-hrg2?JO&twRv$BkLK$J(Q-m| zmBLq5$B5<1^C2>H(nLvA|SUBc{)yI$_tV$>yey^M9LT;bPnB zZh4#)AEInU*k;)skIn65xsE<)8^_cD|3C>WI3SUEt^BOZT14MbF`)c#pZ>%KfnLxc z5RewUvTztc>*w0`{zf~9d264q{Du;jDc(zkUw(NA|qL3~~|%T!7ZibUZ!)QT|1 z=su+J?}4M~WNj3C`lX=To^7H=iHJlt{@PK*xbJGZV5174WDAJuQn_n^Tksy z0%&5tADaVnD5HCl_=m65ovzN^ zb_c_+EH5sS@b;A-uU!r=*NABT{`E%1DBSH!=>towFvIpC;B6wlbN~?GD)U9^aWe6O z)VM{hdu;XqUyYuFEA{?@c(NUbV1c*TNrK&woO2P(PH3Bu7Jq%D!0lNTHrsvVr4Hf) zZQniU0V(ESSIDs7$v>&qr=y*lB2LM}TxjDfQKXD)1^n)i#7v?#t69lW>x@I>;qM;} zQVK8>aiZwOqMpzS(Su|A$h@Mgp@olKnCg)YO`NU+?J1o+s3GUF#jVkVKxp`+kwPe9kBKIFHl zR<3_78n<;8FVm?)a+Xzt;5q^)OD*O7>WQUDMun{_!lK(#vLs;~;XfGmVAT+r)>tK^ z#ZGHnVXezDBg)OZ*5O|V0OB4QPo54whV}M1xU*tETiA+jqOc~@Z;f>J zy7dnX_qvJ3arSaG*+mKd;=7jlTX@{gbZ%=Gq!p8}-T~S|57K}(OSBCa#D@BY;=j6)i=X?GY!^@wJpLthE@g{rIs5I!z8lGjI!! zv*sDIEAd*7dzc2{Vn-tS7s1$7G~;!WyfFjh?|5y#p8nr|iW&iWV%E+jUUFIg7KgoV zsSa$xJAI-45ZoNdH?Wo%NTV|nqJB%dn(e(anl!N?Q!s0EfwVOAQ5>0Xn9GsFdUkG6 zVf`ZwcXeGg>q(2TKpZUte?-V+o1hHJYz8!ny2Y-dvqanxe2U}J<4pPirSN7)o!)3m ziKd?}LMI9*I(M%)T@3!IJ|CSWZF)+A>lg#e1i`Zlk9Y%V-snoc6~ubEDhC`l8sLg9 z5E-Uo^-c;$1oy}77ifUep{^PN0m{d&;)Mx@aLk}25VH3wuRiK9nXb#R>sTRvv1S{y z(FL;>hml7apo4qd8-PcUBlbpmv5WhHiLHG=cz3-I7wV&Gu;-S#o7$f|M|VEec&9ns z;=n_k(Vk~4FgUAAaQ)N%nb7V?H19)Oold63=%U!po%I$AIzaA+2FGpm%`NJqaaUj z%_%{YD+Bu1u+Faib{m`R;B^e$i2Nyg0Sus=}5xu%R4p7cVQ@M!W59q1B1x z#sSY3b*m4BT6Nf-PlY@mlRaK~Wr@^A`36DL51bxF{&-#A&%-y2s>Q5gewuT5i{jwz z2ApH@pvA29pp~KfyYlg?am<_?QRar@U^p!oNbJ5eEkQIzyRBoNIAcg%+FuN$M+dGdM% zLZ8C5T{0K~uMmRRw+cfN;Dl`lS2139!t{YhIjfMYzDV<{;mqm$TG z?P*+)r`y?BxUM?Bhj93a`{KD}+jlfy8_M2VD#~h?4z<5NO$NXRsygsnU-du0Fh3R& z;*9W4NX=lSfMptBPbOUEXH!C-`ipJIFn*2`GeUCR=ha30>9?btAe4EuR5+2E2C=UG!jpQlj_ON%?0o43LuPdxh29ldpVE z)IHJywV(li7#Y^vTtComDcIJD9`7T)S=wwNjCbEw^pQ|1>iUOL21}vf`xpM4eVF~a zN#|C1>n&h)v_A82XswF|Pu$k)I?ZSN<%Jwxa#XmgA5h{{Y7_wu$cOWi{${>}iQ)nT zqwVa_LyQK?^JXN5Cz4MSzKKXP)fmGzHk~w+zsnd)g5l6*dHaHj;=>2yvibg7Q`1Vy-u4u1 zpQh_Gh%KBw-GuDhsHps!+dhn^U|XcFH+)I2K?kL7AiyVlO47bS(HkU#3?9mw(!Sh~ zLzf?$sgBBEmp@bW46BupauZYW7)3uX=}tE`O$AYM=nkxZGjleWCRU1^C*8w6pt@Cm z&7a5nsJ*@$i*mtw3g<6_ncKHH9vPm(i&3J&bLYp2J2k9D_i>-rVy{-~?6ostzU(;r}ejvT_| zbbrrQiLqJ-80Hw_F>cM|HPO5G26`c>v386MAo(x&pFl7Cp|%lK(^2ZzI5bAKj&^Wb zx;*zd%C9=UZq<>7xq0rPJ)!I_UPa-4i~gu)nJmu~2}I`k(2)aimJ~e!f&Ciw;Xv!@ zmZ+z#{J=lyw2BAOzq1lBkR4lcWK?GrzK24%!DeLtqXdD}icb=;`tyMtZ4q(HnO}d@WG|2Nj#@7@j=U5@dMqcwW3> zs?T;{R%B=;F9TuDBsMfYq2q783=F0y>6MY&^{VTP-7JR3Uzi99@|hnUZuGY+U2{!! z(OIUK-Wk^l_PlU{!#qGOn}S`!xPPSM2e?8s@oM5=Yu`h1tA!i5^g#QU=14Cg$K4}5 zJ6qv5^!t6VhLrH&#oZ>bM*;!oUn0{ufo?AhK#>5bV>lOzhH(hMBks$Je)4nQE=!F- zH~cgNl%TLUs&zewePr`xi~Y3bGaczp7FSJ=rOuZ)x9pxTX>Tb-fHHhY9X(zaP84pq z@i!2Yx}ahjy^`%d^*#9FiKZyR-y&P`@DtO#QuL=8?LIMUxnJzPwMFjd zgUD&dcqjevZRenOkjdl5fo4Ee9aQpVeF@-^6$g->cbgbO+h5fm=A%)$Y5` zm%*mu*>~^nq*`B+x~mz?&Z?<;3Yn!0(rD7OEC<%aQeeA1P3 zGw={YrgpgL$#8z##(i}`V7st&P1eYW! zAWU+0K0BGNmi2qcL>W`T5efKWZcxUkKA794;LFpD_JCa8?==!n9ZKbIqW_DLu~RNd z^vdxmG$YL&k;=Hv&Ourx$^eJ0)#`H{pJ8U&rc?qznlv^>QDRd&{r;e*D>}iF9zc*}MqGqTl}! zngSj$c8Yygu3OX2j5$l9iIRWNjv)qplew|1rVXkpMV}F9?gTV=RH^x_UnqEH7Q?^B zUa7F&DXOD+g>wzFqGnmCR}IzY11t!_Wnlx5j*3k&Zh%~nmF^V+M(0*7<)X-?Gl$NYewlo)t-pB_u!}f0o_AwNq5-3*#U5hV8Ra*WFCMkm}Qhk>7ioaJcCUI_G_! z3f~H1(@EBvK}0yA3{Faf=G;62iH41n#7Sz%gC6C@tcB9_IQppKbBGb49@Z+Th{y!! zhhyvZ0o&*my&_(a_wk}QvcI4APj1ni90XGxH>V^6;13slPY>W65l8 zow=~omczB6aBS$qA?&R%<2{G;o zt>T+UjD?`(fs}-3cxtW>%D5^p1@0_vhwn)=fL#fmpBj$Yb9St0bu-X8A&cmz1GCIA z9st`%<=X^3raP<6{vJm;NUUsW5wbFi;&T1D+Xna&c`B)OWAIM`Um;EXmB zWcBq+QApQ9p$>qaqL(Kj4FetR=Mx7L%ZE`YC}QZzB3`dguBW6CnY>1SjgA64!A!Ni z`1&3U=it=DGyj%(Ju7B4-(w}n*3-GgLwg+y-HxlIOP?+K;^sq4ttHk?qGgsPu5Qwy z-kP82o%j70@A7&e?V2$RmlJ2k8LKe_=!An)5&m$RRKaa|`;9R`Ec?s7NsW?$X@lI} zjp{ehJ0m5=Zh~l%(#K8&JCIm0=IMj;H;3a?PLp$cVzgSKbRs+n$i(&S*O&84-Ir8X z(YK@zqKD&^zK^F#Mtl~>RBH7go25h9-4Lf>YI%ofu~wBwg@=Ijta1Xg1J?X>H05T6 z(VHQ0^6si{tLz^`cepEZBb1T@m~on-55dNk1;~tPnt^)46{E5sE7+FuefuH_s}4?f z#nnp7{?Ej zk$y)?Rk#|q%?PA`*-gcmgkbU5__gcr5Lb~;DK`zhZ<`5X%J6TfeX=lwQQ@n+V9-4g zJW-ttF9jBk#g7;d@-D0*maarO%B1894KE>z{$9e5M@>rOKe-gD!77rIA5sO9xK;2I zX$Uz(tuKJP7u2_+imI9ey^s^a@hn!(_pQA zS^K2b@SJwk*Q;fIo^d{_r_n@Rzn^(%q^y*$GoDH*!N$W&UB_LtZ4-GfoV^{ZPN%h) z&N91+Y%Opd^5wuvnrdd~$dXB#MF^jF6E%{De!Ue?u8Ye&98MIoYV;}(%a-+V>4|2g zIyQMhloHbus2W&172z*2Xibv!fwLAUGnmyLMTs@v+2=>$VQ!%%hzN=H^S9Bs3$xRe zwtb{Z2}!ZRCp<&s2%(COt}|me>cN8Yw%dm44nzMA`xLJ3dVZt7r8mD`JiXH7 zAo;4crlhP}HUkA$ z#9uU+VnPqMH>>>%QuF|c84f4Aw7#2aKVk%}4q5K~4+Yz>RkQ&QRcS+k#d>WbBQDL) z?Qe&JnY&d^TSyf^K+J32H%`H>s1DyWyuZr4!H4bO37MbU;>ZYQWlD0Pol<&GFcQIV9{Qc!~mKaVs z{;wQCvP~V+d`SxRa6-gIh6RkBNpTW1s{L&Kh4yd`DxP z45jO3-S7=DOUfy%_Svps^i;WWI}I#uFUHxZUbNEF$&m1e6r5LaaR}GjO)M#wTkpQ1 zqO0^djH;6Jl+Hadq^4>#i$5}14SIhmi5@OYG0U9FLJrHFX>Vr^0Rp9P_}F=XrN_fV zc-IHHtGF?Hv9@jH_0i*0y7SSxhy3R=*LI_OKl9bQcQ3FfkLw_gDc0eYcYfz3|5bH% zVjSc2)~6CZ-kH2Thw;|o_RPB|^{N;W3R$yxehU0BVdMrGiCc^_Z;P5Mv%Wbud3$}M zo8$$b{W_w5r=giIp^^2bO0wMVu;Ifw;91+1vx%w6TV=X`8``;0#(WpM;^X`)X~zR| z5R7sailB)Rn&>?)y}Wd4+$rPKsG3?ecytS+6FN%LLt)6Uj~q!*v`{>Z+>Z-W)<-Nf z){0+7dF`Nvol+TZa`MNl(CHfQRcY=8^Ub$sb!(O9N}DTACVS=A(ivI@@^J54*6sUw zZ2F`cPJ_)B>fId8`WM(d`StFnm|nG3ge(8}>|jL`=<^t!=oh14P8iD^7h6dWfw9i} z`rFLHB`eEmMgqZH>7i5zpKSa#1DCSEMz+F)a;AZ@*EDZTQ&;rs-0pAXGyff>B%VdM zs)7_R`-nec`dLi-qq9c1&Tk~T@0+V7YdiLqtvJH!vkb9Ls5CwJo$GB!3=d#ct27u* z<_(%V4Aq+NMN;Z7H&SaYz-^;*9JQ@DqS1T~Jq&!PTcvjE%#$n>mBXrkrF3&MAw0CB&S*Nkdl+H}7h@)TI@I#5t`}a=&k%p-)92RraUDbMMqtOW zDMuI%gp9J~;irP&P-*Dq$UhqBU^qYb)SXsO$#CbZGHPYQHQ4jBfw5EfoK-@{FRqp3 z%_5+z$WwS@ptu%ox3wk6Z^VPtzi`~fnsD8izjE1R88M_w5y;U|DTBzb_0|0<^d^lr zrRMdZF2f*OQ^6#H2`;ozF-un8oq-@?6GpMd+j?dwPV=>GU$9ZgGI*CuvwK*D|NfZM zPMut_N?wZsKKCL&#J#+2v*+_V-1+0tNs4OildOLun`UsG%4rIP-LUR%)YQ!O@0SbP z3P`4pwJwMQRhCcuj;s_X(6;}dIX!!Kdpj&W{k?b+Y18yo?gpUDtap8-5vm5Cmy&^$ zHif{b#d#7eZKR4UHv$IPQZi%Jm_dt0e8+%_xiN}Ika#lHg`^;b6RuMo*&CrS(51IB z@V&;MQZ;oLbKx5iw1(SU_oW62H@o>GYcwm3dYj8a`|28~#@p5W;nz-QjqansO8AY0 z=F=v@_WCd=%&{Ucjy}e+eXs6H&x^(74V15nGDF+v$X?mZ`tue+<%_Xr?Txytq|td2 zYLoJAI+=ofi>ST4G+E>^G|zR`#~>_cCyDNxu<(vV-wzLADJ3bVu3@|qE6Byk5YWD= zaBFDE($X=?@uuYAB1X2t^^whTXCKY8AxL%>K41BWNoW;1>yR2}x5%`nr-DZcF}Ea! z`8JG{U$MBYG~)7;&q=I`N-T-&@ff;ZUc;k7Fhyp~doPy)$TsIR)x zLarw~Ku=2Q%i^}YKM4~X|C66e@hci!Eo7ijtai}A?(h8vF_B90LPnwgqD5gwf0W`` zp-zu&p)XQq|CWtYR$YGZ65iI6px*1<0NOen<*?fxgy~m)^z4T}L?S${yTYr^r1W+7 z<6Os;`O?*9{Z|lM6I(M^kEKi6(ld?sS-9o)SDv#gEso?dW$=%IXTlK=uy-^Uiw(r( zTe9u^9{gp;XY4PWNDA#`TXwj2z&p7KGLdMdCyWjf^moYSuYdRRJAq4?FY?15iRPc{ z)}QX?>LXKNPEsuvhUUiiDU!X~A3hvj{YJG`vncnN$>iFf(<1s&bBKE982$%;#JBCm zw|0S@MYck-PzaU2Q@du3D7#9`)?kwxB=FQfbM?vh8d3)w9Y0WGT2_7L-OdWF%tW|Z z=Z`PPgxW^A!@EqCyZEl_=Ksi_hAAClNV&EpYH|5nnJL2Ajrl4W!BZ1f-#pt>hGZoW zw;RT3PP50WwU^0v{{B}s%7#ya^b(|+(XDw}WdFUorN4=wRYnYZz!zu2Yehl-M2t~N zLKO|XRfZ85v-r~6Um8}hLctPI`C%3!Ru(Fv%TZo3b3|M~zl!d{I+nK2DcEMVBrQ+l zXH0a+#=C^nD#R>bD4VCD3cDl@vQh>Yr|iXz4Ur~w?gMoL9%~G)72-ub-s$Xd?o5+r zXRsA7ZKqD7>E!Xb%%Jhju@QQn+(ZTN00!kW6CyFO`F7kn8k zApK+~MP(^!B|LG>MKpu#XLUD`%BziMuYIdpgZH;yk3!d;9Mq8}Fy>*P<_W2`GOFkV zMZtWfd@@%?GpjnA<@R=~@x1GO)6x7{O6_(6>P6eQ>&q9SO8c<~q@1Sfb|}1kxk}M+ zgb-;T@1VI)t!|Xak-5T54BA(;NQ8fQ491Z~o-B8n*t|Gp*oY(4C`1ueC?SN|s2sx1h9thBVQ~ zHX_RfuHST2YImSQ4a(=s*PNJcKQb(J{>}F`l_gGX~-jsgF3G2I> zUqxL+djkG7R$2OCw0|LD|8MtUHFoZ3=cG~jXi3O#e~bo_nkuE@P7~tzm>sCfF2aTb zp$gkSZ6Yx&uTGHnLPsMo^7pSgC`le6`I$^0JjC?Mkcs3nt1v+cng17HD4*BCk0lq_ z2cK}cwQy#Jw(8Vc2D`6291B);uf6uNhH<-h&!2hCWxm=?EvvR(yW)mhe{j>-bzJAf z$n5EpW?NfIE}78SGNUO_vv~H@%l-Vdo!|IY0j`A>>U`XTto|xB3nOcUSr{1FqJ=bT zjdDb-`$AmoR|5QE{t1$c{VF2HC2^1r*7B%PQd^WIDe{;xnX4vqav1?*MF(ar@{=u5 zGB!7A^`sa~XyUMt-#ChA!?L-Psx5-8Os6I3=LpIlrK8{FEoEv(KmyC{SSV_bHDg%19!k=d!6+q)2-wK&d2H)!7#@j z(|lb>d(sN^hYfSE46}?n)pkvKBCS7@>IOdM){sh&*Ud~in1Radnsji4CF@BRXK=D2 zAFTk>j4esVxMUY)LB!mNT0W--ho6xTk`qSf3{>~ttY@y;^~86L>uzb^)YobMjh+7-o=IKA$=q0tWF~7SxhWJm;fNul$@i0J_v_JkP*~e=n~lXy)=s1 z{?sm!qdHlKaSr`ao=Cb{DieLG>=nl@7J{7 zcT#o=m^qNGf?6X)Ps(Pvs98;LA{wy9&2GkEB$J6wD~blapr+=SZRW89_oR|@#X{?w z_w9fE#QytkefXA}9(ni-d4&5NUGVmAlmow`TlY#&@7&w-j0#UT*a0(=c0i2Q(-;^4 zW!iH$-KQ+K(>IkG&Pg{b8|?Ha%7jgH0Y~SxDjR1g8|TyM9Bpk?c28CA#PjLMF6Ax# zL55dcp%*KUkbxv?RCWm%fdz?xSavx;%(`8y@yP;*237@buooW<<7l!WdyzAAFR;|q zp=Q|7h0BUyPWZexM|N-^mdqA67K?#Xgb`=AOU-ELMc5FpDzDfEVnn}89kt*N)Z?fH zwxzkcu6d`Q;OgjiXKm7LX;rSdfVL*L`Kzn-AARL`g|iKO)qLz&Gu3+XcPQ`ZuK~R9 zfR}0_6SXA0I?RSQxmiOivH^xnbZp>;PLE5k!CGY0IyksVAHmQXb|v_%eF>ifzvinl zg;?!p`ug>DNeAmU;`&Xvej}`3XVTU$fW<=1xdoNgXtDT2#$1)vnEoTI8N0`vlk3Ac zlc@mSG_dg{ID(F6IH4n`q8$t=a}ht>Ptw&=Vd$1=s#+?Y6}j3^U(gTqeS}ETzpbHc zL%NP?Dc5vVWBH8g%L*r}bk)J=3UyQ!_)23ywkI02$Xh+o)u>3Kz5(%39|dA+sK>*G zYB;O_G>@dydim0ZEG&sYy%s-9uVJPV3_mFrkt56!WaAM)XgU(1>INjAh$vOy&4~Z&1|;*m>^9ic-DElHi90 zi``qm=4lbRDi^CXU1}#8HU_D|%osz9jZ^(iHw(k3EI?2y*m8d9v@Oy7mn|IE8hPlZ zmJ6^Iy*vE5HoAb;v!3(nvDkBd*^<_UmARv4$FF|SbpbY{^RE@xuvj_rChK<=-UAtE zA-1zSp0fr!p0mShvYcYl&z9ct%%0M_p69NiSQ!}jMP*EDCkrZK}c zGjv%8Y4og4>l$X!r1x9D$c&rxYi1M2+1IoWUNe~(q;{5<9=xVjFmItl)_UkqOIZ2* zxb)@fS0`)f)kP<-zko&gib>n>>lY=jkMc0v)CWeEY{sy$Ka5chfTjqbDUQq8*pO!| zRNG^%%*aaNBtzn6=)P<}JB?FPU1S*o`L+|`czDd56XCJpFCl*1S2L;|q9&mh~ofYB$$KyOGInSt8 zEcwJU~|V;e69Ip!in z5Wr4G3hy55AsEthZnJ0MKH1<kQ+2~*kI{fj}FS@ut z^7dpe`anP_{2evX!`PJmdHcX;?R34eg}%ytqV|gqe9UGARFkW;c}!SQRE5q)vS}QH z*LjHdn)HV8QXFysc(28fHBd~8NpErH<`w%ZtJFTrpc?CCbu#BSV?fBJLyhNPtbBx- z1Gm4n_Nraq|E_7>Ei*TD8V)GRI~m6hTxwb~)ZF$Tu+htsy_j1-{$O78!mpbKVE?*l z0AjLcAS*s>Dgbg#+GK!%aW`OdO>#Z}is8ZD&?G$5{wLrW1_wHrX>ce^GC!XJL=})j z;BbCD9Imf}!+jPU)TwqkrQ>9?CbEY?qqaV2^EtMFti$+?pImotsIYh18STwg#hopZ zYz!V5O6=>-0ud;x0#RgrJiP^~Kn$F{f{fBHeLY))DENYORmfKq3^Ku&+;9Kcv3Ksw zdSpbvIp&-yNJ5unK9+sboy7SCTHBm#&@l<8HM3#*X$$D~7FQQi(pTG)a|k$`VZhaE z=L`;+Vqi?wY2XQYR?%aK$F=5toIm(PSGz_Xr-?=w49+6}=SP}t64d6#nbL=e=eD>RrF(U3frL# z(OyyAR4$?gJ%(mOSWwK$>PUNCso_otLt06HR7?-ug@R2L6-~htT~n)kOh;9zJLIdW z`BFi^k{ecwIQ4^mI>h20`D7_cSW-PgNQGXYLP{*WH6-P!^EPuLtkllJ+H4RuZzN&0 zAo*GIz#Fhw@z6qm00C&HRtr{`8rooRs^gE6Lr*HH=uC}0L0a@ngR@VRx4H(WpU^GJ zdTw4D*PR@K!p$4_G&u)l;PW;nZ*b-T*gq!X!yGx&v_fj?0hZ*5VD%J)eGLVu(6J{k%qiQgXHY6)t z(nl!_wTw_su(=9ApEy^c1f^Go$qIo?lNCy}$qGICY@eU4H@{}e z0_S1&@c(t#W5DR=g8eWv-M%c%sIq*hZSoR}t)Mr{%L)xmUhOSC3$MA-4H1I^7D3^x6Zk-vJ zozbWG8VnpA%1Yp0sCZb$@K6DmxG57RB4MdK+FPwkWq)KCF2FMHEmZ|{sU1se zdc*3g@K8LJV!K2UW`YxXZ#KpFs;0$wx3&3x(4mneV!A>wZ4OWC8AOae6I$$P)(;NNXk zp6);0N@q|4FImqX&cpyYA+oB-3{x>YnWkcRwW%11Y=Z_8$Rj`UX z|128#Zn7hRm^6 zpR;Fgpv^ouf5W52yauOm@GDX_bZVYb7SP=VX?A(9#mYPw9MZtWStuqKAZ&u?+OePn zjm5qOjNwN`(b1b-P*OFD)l`a-8}V5pI-bhT^%d9RY)jAx7=5ygN;aO9qv*oGKJRuF z>4(n6t`$Zn$N0Lnj&wSD?uzD}4_7ueR#s2#oHMohiLLGT#`ABz<+64DhAGphH25pV z#w%`Ee)W3Rt-fXc&N)?&Zi>vGJie)*sx{UyZpz|un|Fsw+dHpZRNG!Zy0X5ZV?jsb z*qJp;H}1LR^zmd*JDZCEvfIz@fpHZ{_|SsRiK6&MLw|5GhAP3!t*m0BdT=rZ3h{EB zT$W`mL8VtMK4r4|0;Oe$8<#`QV@*ebMiP&4v;3{T7;BrA_l5YiE+V^oY4 zTIXtWF=8kqmEWFYI!1&x^V4uThTf^{>pz}0B4Y>+LPK#-mKg^nfP)e?4>cVJC8_Bk z6$}H_HDMJ4iM)bZb#_A8APy?e4+n$OK`@DNE*zw0gFMdo_FOnfO$gzBk+ORSaZpL3 z#UPFz{azxG&&e19%ghVdW|A7qZ zty2|oT{<`RjB`~OL%j{^M-AcLacU3+G2c)JV%+X4Ga<6aiAmw~Pcddjy?$P-Y95|h zI4`c{uRkmJmc;A*46jkrL>?Vcib>J1925FL2g+fLhBv3<6tjx;pa|=SAhZq04c*kT2`jLK2IPfdo8V-@%&wJWUBjyeMeabe$mG=i=7=tH6)9S_fy zM6JuI6MHP>0xK%W0VmuRU^=BiOo;i#>iDUIr?8003vWJFuoM;r@Ebf=dKP z=4#N8U0N1v(5ierTCe_)p*`A|?c^<&>UCwwAwE;7jrw%vf8Tz0@P`kt+Utq;T)X4P zE_JAnV(ZJHa+>Pp#!BRpPjSGrWT|nHlqo2t&7d+UNwA5lMm-~t5cfN=5(9YIo)RF zfG~R=XM&oMPTUxse2TX^JYIHB7QvBmTob$Z*2v?U(ApYtWK$=zuzot?;3nNJWuIbK zhc}U-Yb=B{Uj22Gs7gkdL>15`QQ_)}SX>Z$wqSL|Y;XS?)2Psn8gU}kUsNA=q`6e| zvXs4)zP_@rUtjqM>kFo@uefAzeg6OM`jUx?5!Yx-I?m@_C3By3+BzLZ{s8yr3~z5deW^b@14lCg;?`>OKF> zEzhW-M?{b_nf3y$%+g*XVv4hzodzS^nI-V}F{_sy%!3K^yz*c%@m}OKTPMyfJpH~l zq6z%%{qW!$JSX$FIhx9YX`NlER2Y`vsS{$*so&q($(#aqx@280cLs+{oMQ7G2lHTN zIzk>yFAU3r#l&{a&VICWaK_^x%>0>SaQZ9Por%kj?|$x+ zu9x;nKQ3!}xc$(J^vO3r??^l|eR|V1<8!7i9yg=zVP*d#_xyFo=~oWC^&kJT$@5rLYv4^HfHu^_OqFMV`RZ?4bgLIr0^-5TiZDLxoe6Nx&-!y@(yt^yxM zh$XWcRv$9ghYc%|9lO#IPr(i;1;D#0jkaD`UusIXF^E8n+GQe8?O@-OWV6G(JOoQ2j>`-nT z1im-lFM5C%@{t#+GOZ&tWF5Y<)*-_g9I^|iYLts|ZfSfZYRN$MnO51Dk^VET`TIjy zK&P$S!PZ>}E8mi~az9FbPqa6vO8)#v+Wrk$w+rNbuBr%fReNDD|CWxET&#aJaB;j1 zAs_^K-y!p;sLqFVGFt^1(6M@Wo-HF|O~_yi@MIC$!9U2?upX&=62ti!cn{TlT`1Wv zl^fPNWf>9cPT~#4%<8?SJnASTwG&LA2BnyG%(|qMyyV@XlF#(Wj2Z81-632>@}^Ll zj9SBgsH-P#QbMY5N-P_2TbAUfV%(1qlgZj7(hBX4zL>Z3Xac!Hd|KdbqSL54oECM? zOd04f$sU)A#ixuGC&{g1&Zs&V+Bur2$vYfYLewD=wG=aVP1MogW_zNkC)kCTS1(x9 zv8L;C<#RY%*m3=w%R8q}%$w7@rfu;)1{V) zeC^OCl+Njcn|v&nch>YK-B;?2>VFnSoF>(i?Qpu8k`yJ^`M`*hdB||7TxKes4JChv zW;dq6nTz*-$OvcN2yo^P!DTPtlHC~_b-Md}z)cG0bdZyF=twZDnLu8H+o9zF*AIo< zhr-Df?JZMx ztFZ7m2P;F^t#{4`` z*I>4xk8j{r^9xOQk)=@Gs=APbNW#Jz(<~-aNUaDoV8c#XLI+d3OZe)e1-|nBJyr%5zrp?s*7OM{A)&Q|}Cdhpd0n@7^48xbZE!)I zgBl{EF~d-#MZyDSoPVm$nKVV^N-X_}^j2pV;X0~$wFnB#5S(jPY?sTiMG(h8Fd7VN znSKn@mKWn_AwI4)PUf>xpM=TDZoHW#CTwmGi@s$C@D4F(M-u`mRUg0Neu~%lN+;Q_wccuj| z?!0;9o|MsYsTOzTwHktD#0b<~g!jowuOh(hwMTnBDw$g%?8Z)}lf5>Tu5E+2wh~wc zsAjyeJ3XD_ULTn&o(3xr-bxlk4AvhH79;5L&#Hv@U%F=nS*WYz-UM6TjraBDSdY1} zPaA~xzcT@CxM!I@$AJu)((uoGHjy6VYuIPrvt~mKP9T^laPJA)kJxX7kI&;b!b67C zZ^Ha_G@!2m3%HQkzr2o^Q*+x`4TzX*Z^nUIIP{NELU`r;;Or^&W9kBRlllJk$HoOx zH>YLi_3~?|Szo7~H#>~;;F9N6@0Oc9@30%-rrq|Izjw&}ZdJUn`|y(O|IB%Z-A7lI ztAGb?55t2`ounrfMm1!ljb#RWNCve}*(<8m$#w%y5!RWlsnPC3@KkmVywO!F=a(np z8ivI2!%>R&Am-O_>lscNjM-ty7u65|HW7m{bthsL1uM{C#M^@O*gdStH3M$SM#dGL zkp%Xv{Rj-hBD+U2x1R0I{}cFz?dx#(C}|}f{5*a!!Mly&-I?`lqJZ|KwW9Z$ox})l zs!!T&qaCTrP{E*1GbnGJ({wykeXOZ-cCqhxb?A7ZkN&9pwWis#n_jD~IaciJoKxgS z+1-hDE!j-WVBeLHPHlFsu{avVn^uF!mbtu0guScX&swX&PK&l$)W(qlwQ&R_S#O~# z!%K(X)H+>OrynP8aZTeX7j$fedQ_3T;dQa*hZd*#qaagAoGWAf^8VzcvR;7=LecJ2 zBnv30b#e7B(`=m1MEYw{Sw`;`>9c8*b0}!8IM+P%TyPTYbc5%jc&=n?{yciOvP`7E zR%+Ax@U?qRoq3<{)%(F;0DG@gyWa;YmVzkW913hc$-wTTY&4;5frej}S&eCeD<5R} zUD;U}VHsZ5co0V40MsE?3;W};Xk<1l%1xX!7z+fW$@$R5yx-s#+%B)*>v#B*#zDRC zZN1@k;qKB8Uwmk_0v=>8%G=WuFYD1@TF6JdZhL8oW|DHKmMcX zf@Wn^>*aa*OIno`@#$kf|A5IOjuX1redD~C(Pm9ZCR;Qr69MlWmz*~wm_ohAY`fE2 z>W#3VpuleXo%wEZNJ~aFBa8kKNU`2*8|ebvYXb$E`})7f8tRR9$#m2PUy?jWpFNt_ zf0a5G&Tf~)qk1XZF4=H8u;{_*z$P0$tG)JiR!wbHt1Pvf)?qhRRMp`W^>~=uru<K^o1s+q!o-OKler`Crwp`m&kS&2PoPaPm$19e@lWzk0!O7f zjc984J{k_l$?B7)>*_?mh(GC{g?#8^_X)sz)?n|$cJ013zGxx`F(9Yn9JYFQ zG86-qR~Vl+qgp9IGi(H28$uZz|>{x?wP{C7uazs zIqi~wvkurqc<}y$Y<1=8>dNhy(3Y|ztlS1fM~S+-MX+3S2Lt8k+G5|4uLKtEbQiFN z+sa_!6>;#Om<26cOe`0QL*msc_mb=dH$kOBs3sDtZET^cWC5J{3Ja)d#E8!o9_TBznqy>F5DmNo8>m z?hHLxj|<4Da3qZGVEpUQV@TpAja)L|hmj7TN7tPhLo<@tNs-e30jo!@MF0Q*0RR91 z0{}wOh->g)4?Oh%9|!;d0002d`_{w&0002j(Te~7X8rI6@CM%i000O80ssI20001Z z+GAj3U|@gw_XLpC|DX0hhwTFcPy_|M0RXBN2cQ6W+HI51YZE~f$GP_42>!TvQ+f~& zMS3X3)(Rpb(yrgxBoIm$K7421yf-`hzO!l%li;J);6K)<9>1}n=Dj1mh^PjN_8(ld z6=tlwcceO~s*bm<+K9*wZdl_OQgKXEGgjSeFn^N#B)3R~O!Rb)WJrn3`uVKoc#+h} z6ZHxur;UPs1XoX?sqb^Vji!7j&pH2wf_(u^tA#b0LP)!eucPU3fBOuY_5pUf=V4 z_XJ5x+zN5NqE8`j`Yo=d8L!D4Qmmh~U!q2;B+cGu{Jx)nvw-u)3*UzUtd@7rctL$l zHtn;B^nExE&yn@jcrggQFrMiV_Sf|N1nhUzTGxj`=s}TQtWY<|M?K7V--qL{FGhVY z2B8;xXgN;km}k$E(8|!#ja@8y_2=9p4nb8~j%M zlLVLqj0ExoCJBlNx(SvEE)hH@#3ZCA6d_b3G(}iII7@hi2!}|H$TrbMqL0Ls#5ak* zl3iN9n!m`zscyxERxwHYb09&guCQYy);Ub_*~tJal?=uIakz7U<5>J*6k5*P!=G-$Q?e0gu51Lj^-8!#zd} zMs7xvjG2sWjN42UOct4{n65F4FlRB}Vv%8S%hJbkkClPdDXTBma@Ky<3vAqMPT0!W z7TKP$^RT;MFJ(W){+WZ7!!$=B$1uljPFhY~&MM9w&YPUSV23VDE&?ucE*369E_E)e zT&}rlxK_BHaAR^y0>Tcr4Q?CU<=mIKAM;mZk1poj5 z000620RRF3761SN00C_P0001Z+O1T}Zc@BT)xL8J$tZ1SnXll!38YF&bis zSUaYG^hU}>E>`PjICA9NKQIoBF+RS)U+^1@ah=WP84zO3&An%xv)}9NeF4Os7=my@ zYk+eRQ0ySd-2ev=b8adQ;@EkhID~@pNpTnn=a=FLQh~VQQ+OG;rT8><10NKxArbhk zIO@C#4r84`KJ;4gS-cH>Rvbe<+)#WDCj3V6c|^nS6<Mjtm_+M zk*wnH#5V@`M-Yif8Mon~ixc$VqJ=~BVepRcRb=_(krtH07E(N|P{TzVm*I0)qHTv3 zJ~G_hBd&|qI^X-0`P6=n8h5+=_Rv6+ItDxR(B?Xh>C3LkwaN9E--h_C(EfnBuK2R2 zhWitK?~2D7?VETq%EMp}Rr)vBl&sSz;5xRsZnF;i7`%`tL(6#{GOWSF5o@#g4D+i} zuS02>=M_pk`YDU_A+=h}vMt^wtDdZReTum;Zz*LhgQD=cT1+b~PTbL|c4j8q$HKNx znJ4$M$vm>c+cJ;oiA<(-jog)yTki|MmVqOQ_mpQIxnA5ysZk$gmiE!#I&6K#7>j+( zn~NlEuFRc{VOK7X`9G)Qkwo*SIIq*EPaE6AX4KcV>s_vgL=EZpnskAc*y-xX+Y$>` zI%E)UAgxPgzRq7?I;unu_WXc5Pj1%sNJDb5UVWKd+glC3HL0ele~KN-TAHUJe_7#Y z$fd2gPwtD@;IrDaD(~jf4DTCL|B2FwjXRp_o^m>vka3+h$Chwld$*}pHg0cj?a`T< z@^dTlXKLzdxA_0?|5-GDi>H5IG9GtCPNscdZ?(#`D>+{i*%ounv5q2j3Zq&IGu_jb z|4B`5+n?aKif24=8Q!c8$Hlu|}t`cY1Q1~8C8c<@p|B~=&JK4_`Zu3Fx9OMMQ_{ndMaEb@q<1}-b$8KtPL@oDu$TJ@Egr|I>j+Z>= z1!wT_gFU?A6|eF0g>P(SJ^>c6ka`+8L?er6B1khK7PEw+Ch3wPnUckME^wJE+~FdZxXWfvN;WsS zB{`DI4#|^zDUd=bvij;w&&R?djrP3uNrh)v3$JMMrs*`3QiVB3MBn40`m%^KW~o-xXH4eUiytGCzHsTL mLi$e8gJK9S34~=42nvFy7=n=y0X7081BWmRgIWLtAO((e z2Ze78f*3z{WnyLq8+X(faOVp!ZU?N%fBO@U3&zsBDc2LQ_v}kf9U>jkv2YdrP4rS8-rFG_dKRFhpSpVaYKad!Wlz zcC%&bl4i{{=%q|<6pk{(5$5ebIO7dUj*pTLMM6PrV{q^ukR?6H; z86(1wJV%%*e(}4aFcs$41KrTY{d0+h<&ZDvw)e4uR{m46SW6_5_ko=0TDjGl90W1N;&6SAm@p|SV+K=?j z%ND)iLWNNBon4l=DArZEt!^bHlvw@y&8AqLQFCy;y&f zu6jVxXscRv0RLZm)A}pr-=m3H%GQiiJ0tT=oFzc-dHqJJGBRC27I4SK2|oN2uX?Gp zxumUZd_3KkP4wFg2LuBgKJ|YM#m~E?ZF;~10*gYp3Fk2YeEp@Ww1k9!;_xHDgnWGX za1=UGP={4`{9!97a>sh8>nZ5uj?3wPN|r54vL)}z_AC9j_V(ZEnl2sD2511u@UQ@! z02FGP#xmxCX@Gy(mId%Xq}S6AGGI6ncC%UOi6>QeMc1oq@c~gy%Tc(yRoGQJ>2nx6 zqje_8fZ)+5Gh#s6p|}X8iN;Ms!@wvVCnvp8`#$06=#M$|rNmC#_w1w@-agR@m?S+X zTIVh}ggCk+>1}ZP1UN=R8;|I4|M0<|nxtccSE;&0=iQIJ`%L8w?f-A8z3saLKzvXn zxlwYG{y%icI`-+QqJo#Cq|Kpnh_Ur??LM}tC{t7UxTu{wSMF;UmH%A(v;|U~6Rt*eJn;A` zeH*;x0;9qtFUisY(fE=^ZK_T7tG%jL*0@6ddh*Y*_z@0qVuhwj^RoDd#>-8i@qrEo zG=b@0IETT%GgLh(**3{X7-e=(?mhK3th^cT`Pv%7R>Cz6RzySw8DtO<38AF#-l^&^ zrf}^s4lyEBsK8Ozk{YF(h<1P6+mp1uF~&v4owGs~Gx>MbeF1?!K%W*5&8{G5{1ALI)w!))ZZ7i1e))88Q)BTQjodAaa{C^1Ma7 z^ASZ7pc2_KaURRLb~-Z|Amv89;Rp@}w@oz0=-7-4?${GR={Oib?Kn&$_kotoAh~)z zJw(N785k6RrdLmqH=QT?n$b0!Lzm#|go6P94EIS|RR{k-uLgDX6J)hm9LTEJ!Jjh1R zVW`iQm_$Ur3sABRfh&{{<{uOB^udY>@th!H&zDI#XzQE})>=FrW5K+UWnzUTPpnHe ziEZVUFt=Lea5&*&OCTl3=84e-ERIvV-Zu>~2taE}EP->{GWL?;Ni>Z!Fv@@}&Xt!| zZNjhdJu zdk7M(z>DMqtcSn0HkuUjm9d(XhE@@^747a?Iw(9e6vd(Zp8`&hcnGUg{NfQ7IK7DFv9yyfMhD}fso zPvB1ALEuT{Mc_@~6TSp~1pWj81c7r1+B%pjgdh~cARHo`NW%2tqX?o2IYG9Z&*Dl> zA*YyAA}BLZL3#5EUL|XOE=X7ii(oO-Hm~bnv%%14&;-q}1X`dK+MpdeXeYD_=!PEX zg=Jfo8&<$dwu)c(uun+EIRG4lLvR?5z_Bf-@%nzHHB`>x^b)ahZdrBRHm#`g$hoJhK|x% zw9BCzdY~7UZCPGcz)H4?g4>+#`kzs;P(Dd4RDq*38A5|hx+33Z*}I9&rQ zd=9@SS`?vQRA$~JLM~xBMrP1fSpNelSvZ5WkWi~>j%hBXjSZT@x6TWx72Pgu2O%{; zn-|L@S;Z1#CbnjCYvrc|J>dl99J>)9+p1v67~?&;i84_M{A?|lRoXWM{pZ=u89d|A zFvi}_(@u5gzb9EQHSa z=-AzKKPZF_KD3k4OW}1;lM7Xvo@S{h85N1Yr4aSzCKT-TVILPqCOS;Vz@r{c!4mF~ zdF zg=Ka#nf4?$P9%nSlDCDiyU^0 zQ5@@FmFY28lbWAf;(LW%d#WIQ zTd++#We@_#@qf8DvdbKkF(SlVf)7zFjHCxV>??AZ(|NsDDBpp#kC}z<`02rSbc{71 zA+ksytIVK_sHlOok7Rbe{hx~gfF3Uvv*ogyAw5zbz|LMf4b1FONOIm{Vq_Cl% zGULYr9!7hVYfEJg4^Eu78h*@k zF&jkgivggr;>6?E_idvhVJwD=&!G)u1szK*9<+zoD&Q_V?g;gi+m#QiW=`P!0R=jP z3agHNe^+dR$~a4A^OxP7SU-#2!FUvPK;sIMl|YWonRD|L0BCnI7p~mkP%qjURK_WxX!;2q(CZNbR{*etY|Um3NsF5k z3J^iAP#D%xcI44}@#e$#G6FnGDr3olh!dvBJi+KlLBWa(*{KCc;0D7J5g)|-m3YF| zQv?Dn7^zU~gdr1-jtKNbO7~|NZYc`%MPncdLn)GX=+uioo!`=yTSe!L zzUkL33~lu{xovi`w#!~g_8FZ0ayh|2aV_V#Q;g2>n`!PFSrdhJ_AGZ`sqe0Pi2F!9 zfbs~5$55WV2WEcC|M)l*bH+@Cous)GWPCI|NmAJU&Vi+nBkIVN3OFfJ!bO=%e5T-i zea(Ed>lI;{)#9wPQwn{iBVWLS{yf5Y~SXz#!5psk{_DqtilSG+Q&Ws(n zw`X1pS5;9RfN4)j8wy?z2MB^)9DttRn-P}Wc|47Sl^9bKD&uS$`jj5L$%)#+Lr zoQs`3QFIXUs18MM~ZZQv@;eUp2A%ty+-$m9Bs`0LZtQ z22fz08Q9MOz$1Ed0X7(?0G>Y2wjMy=Oxm-zn4JB2ccq+S5eiX+Vw53)IxNDrts0g7 zeK#$5b}6iiye|k)%tJonZM6{3Uyc8GIy7VK*!!0J{`cAWXPRfHpPhPk{P!cj@A-Z6 z?+bnpd!TvnQS_YL)M&yq$yBTv0e~bh_DCN8Z9#)p>y0bQs`jC2%UC(B*6NLBtKI4L z`h($UJekhsXXh7}SJyYUkM0)B$4{O?Sn#Ne6ct@fk^TrQ>gv{fk8An zBbdozbGSUdAS5&_JR%aXxVpB!y=Q2AY-0DWJ^Q96_aB&dAK0&P6?%vv==3dVK%EQGH+H z^`9@_y~nhl?qlIQ3z{2RTHBU%b))lxmCNzx*W&=dbO1oV=s=cPf<#MHf?KC4WJ@XI z*-|PtCD(`*zm3@$gdwu}IWS_`x9b>4b3VnPZFKI3cH;0tm{px0kr;eYhY=~$KW00{ z>6nE!+xcM3h}BotMPy90CR+5N{Z+S4kzCRKtG7;xrYN-R+I5~G@~jSsOv)VBF0nav zh$T~YBdMBG1dWK~>vL*rX)QIG8K_M})G;_ofZm`LfplrFfJ|8*gAvcK`(-=|Yn0Yb zd53?DB&N!8mP%LYnps-c;HfAPJ={Qol5oxf-O{zZ1BZ$km`_W%?|oh_QkYD}P( zx)Y?)q_Rtl=OHP3kO`|i%ZxPAi^N26J&AH3TrZ1^?{GD^+ zpr^WQvw7LkmNfVy9%o^j_dEJu27C;TW1H#UWQE7BiHx;4KF3yiUwL??qM&jWM>!0l zuq0&_&W~PKxuPw%!kI4-DVzmjU6_r}W8edk|15H8&#cG!((GM^wAUl}k>iL(=SQzA zXJuTvolmgIAVe>_!u`6RDF7my6T4fQlMI^<=yGs%aUhEp7W zgU9ZVrI?9K83+2hH-SmBeIFP%)c}S@=}2OV`Afd2lF~@%(2E5*Y}|2?@F4v>MX2uw z1dr#|26HGOOYfSe!T^PTi2MD5%zHc>(A|UwhL}oQjl9*q*u*FkUNuy_sRaf%anFTX zCC9{QgrAP7=W2O}Fp}6(vP}TPADUongC$@%A$+Bscq{b_g-XQS`O|xI;UA>;a zJ;wJ*Xugc4vNXn{f?Qeue#=aUUbUz|L1P0+MiIoDo$WeB~Vk2-qYxlB3hToRtAKkw|(6j9T162CU=K6M3~p%<&IWU}MuNuRDqOw-R)Ve!($z8e=zw;M*tj8WFpZi>L?N;? zyTd8>`L$&oJ}E@T=5gH~|9u)4vqWQabSUP)+)-;2Znb=4s!^&$Dj#Dlt4H=HEik+Y zXAp*TiNZyLaiJJS3vR-bFHjNAn~QVi;q2s$*#^yKfsNecc@Zr=GbQ6PCvaIC11P!1 z;cnm(Z4Os_dkK}3K zY5GsXc$qc2X~9Ho5JR#H3O+MLPh}|pzE>)(SM2q=8iu?XlbDYmFMQC|l2;P7h${e$ zE1Vn*$ZkR%K-3GbhS3YpLpWkM88!McRoK|y;&F@#UD#5uzf>@h%Co&8@y z3I-_WB?&jrrNN=ig-^<1^Nl724anGX0S*w8=~CHc5S(9 zp_0iijKzW)I=^M>A4T*O1z;pWpuZwBL8fo7J?SEwm}x zC0~1O>TkQEO)I`%(ora*!WkX*^uA59-_i%QyAr=@8?7FOY|II+9xC_Vxn=`PnkPoh zOWh%AhbV$v=*LkZBvW5GWWSO-AtnySCc8Eq4KqcOjVuI9SEU4mHx0ATmAe?Aq?*bj z5E|)7UVhnKeA^R;w}Y51goX`ltikZ~g5;a*uTc@W9ptqkqX<&8uLaO@| zC={N1cMLTnDW+V+bYoOX_83p{)sLYtuSf!mUJ@ZGAzxIUGb`~j#oQ#TT4|4O`bA)% zvgzu-+#GT_m~Q2kY_!@|tv?jXgRc?EwrcO%_uonrqodr+UEhDb`|tSobHU&H*RTJW zzCXC`y2~B!-`sWkzK|a2t*thIH}kvc87$Lj@N_@znUM4hd>8tsfs@C^5(|LfCYs^& z;nP2HGR?;i)sf%ZZA#JfL!d+^`ze3$F=W!`tPqK`UaQL&ZB zUmI_lSSuN{I+B7W=->)-z?oUGFv*?*us^-*(aWcA7UABexI&PP5vH00Tb!Vj_NW(z z#ri^PLu&E{)mhY{AL4dIDmGg*4=uc0#(+EJqS8ejwO4D8>PJHn)v+c#a1pB04bnHHD|vCzVjlC1mJnZ)Xz7sEXnW_5H%ZjZ802EL*F>Fgwd{DEx@W4C0Aj&X zlU?@L`^G9*d71wg`R`Cf01_|N{U883QpH*=dSQY<)29B$q)ey!J9N?)Q`ZJ4hn9@c zbJ?Sp&O&XAeHCLhswh?ojJXl$)tZWO^m)NPKh?b;mexh#*(>Ta-1{L(69%Wkk@*1qr-ACQ0+Ad*jLg7FxW|z1 zMNAwL>e6s8!9C!HXZd3nT;==v@Y?gbcg{Tw>0FPi`s^f4b`snRB2+`d(vfS(6l7}h zFKtwifw3RILHC6r)4s<#2c?lBP7TDZ6}xt&dT3XwO({3^_C!)BM|!RtdKSBG6FU2b z9TD}Ck(T_CjcVC?v^Aj**$)ash#HY9n&w#5V@1W1(91l^!1A)?bCf1$4QipVUIS=93|a>iX~Y2M`s|_rjz0STInR!lU*2YSv~?3mQmjIcMk5- zyP~^=(LWC=(2U2y$Xp-M4uaxXfvLdD4QCeZ)%kR5VTZwUH1suS+!Q!^(MF&2InXWu zHj0zT&}tlRRv80mwk-6f#Mcy7*!{;9h&xTIo83Jtn@tU?$GW@Lj+5$An|nXR=2THr z@23U98Yvh}Pd@sor!qQJt0y)|jXPDe{YhCtcK?aV54X?jip)Q@(o(rNo|o9PtHf@Z z*Rl4#FwXjbG96>_+lSNmX0LeU)QRAV_`%-d*mIqsRjbc01(vvs?TJRrzKkw%5?6=w z>UKt_R#rv|@S(u!7#dia#545=>O{UK)_Am0d2-1}R%5WT!lXyE5mA}I!N6VI4;wY{0XnlhX+{G^l}Y?t@QX-y1}`SDfEei zuV%3bUIA0nifP4(emc_2Xl0&S@Z1`a=mws&5|rchd1AUxaY;-@>EEzC>~0`kR(ReQT!rCPyv%2M(EH zl_ksPiveIMMypjgL=bd;X^Af=t@5E#V+~2#49kjvmKw$kt6vv~!mhCr#?KrYu~ej( z(M){^QL?KWJj%nD>xqUoy<|BsiPqts{nuB=gcJC<&cx#?#b^lAo=>rj z@NT|xdhPVl1^TF}$3Rbgj-v%*Z-h&b;bufAfeyM+*AWITn~;}NzL)U?otIG!x~pT>w|eyTHuQVfyS0%4V5VH~Qv50oL_DfycJbA^ zcntLxc`537S$B5bz5iLLH*Ch};;D7`P-tpSoF*@3q^-!)9md6=(3Vnc z3xX${vyBE#DU_9@uCq$=E(pmK+}+z;ln>*3AjtDL}@!(-RTXiB%~tR{K7% zN$J}g|*W;S4R!S`@d*svCw&GPUMyF+V#E4=lcqciWjM8Jj_9G0& z0r3W!0I#iq-`+5H7b<_Kp3f9d=fVZ#q4cCxX_p&M#AQXr~WfsBy zJ#{8W1d*f4;ZdnHTj}6e7n862ofCi3xRflD4P`U$Sw58SvsdS>>omNeN^fG7HndOg zN@Hf6IC$$wP`3>n_e$}g(jghc1yiLN4Y8m&d-oEiD+8@-K?}%*FjgTNtJxq?Tn2cx zRX?*mS%1C@c(o$}=OIPeN7dHS03wAD`{V7^n8>0Q!S~UFNj247mrN0iFk4ADV2w zJi300+V7Dk*Zk(ubK7R54@xLmSDGC4;oH4?bZBqofw@xS1Y{V;%t%cm;=6Peb9%V6 z=5X8k1p#?TdkRKVx0;vxk{yj{c>-syF-qeq%Q(iv8)FseS%2@~uCpV;_~C_jIN-`^ z8fl5OHS)uTAn1k|tuGwYST7&El@QhWVr$_xU!rYS;CA5VG;`X$>bwI3e(cEYmGzDL z7j`fpuRbVj-~I6aKHI_GAvyW+L#_}K3{V?Nm4l<9k+1nAKS>Llul6OMt7Qs!QQKrp zTVpJ66SCd1kr>&8Y(_>L6+Uc_o(Y`_H3MD)gw>5#jfZZ0mtjiTJ9|0IXaAwZ_)(5! z>riZ8YyqTgzLACiQa!8u>?FPpP@(2X3N^aG6(fBM8EGe@0evEj9e4U(Hk15M6Ry_k z->N6;T%D~TL|Nb-VLcK`S&v)?}js5rV)A7Gc|>tOAMh@9z1zt6t@tG9`*Ha7qT z9chFUhBjXun^?NvMsM|rW^yiG|E+aoB7>q%&L%euoP062c>3u?aUNBjTt{A{F2aHLfBsxG>o$$SYbKci{A)E)fH%r2-CqAsc63?A3pI zy@y0F$aEvbT>+X=&_x4%NFZ4#a;5`alP8aWWuBL(roR1dTwhGMCb&SF5l&F=*vo zRzg)=%HB#_iFY|!ts+#qRcL?}Y}M%A##-r60ab5#E@e=KwWL>Z3+vwJ{QyC7bY1;H z;bykC^y1}4uL8Qp)v6^o=aOz7z5Og@^QPo2qzA8Pbp0-wxSwLYcdw7n7N*CKvY$$j zpuC2*%0687Gh0)i_br8pj>_0}=wr#8Z}YNh6+pS`B2zC8UfdoVzVc$>;HB-+d$C{V zT>!W~U#GlB13J6b)1j)EN`#u6e{k#R`qcWvZgMj!ilqceFZ!W_0s*34rP~%Btw%>G zoP0dRFD->#MS?(*sSf!IX)?jc-;Lm|OD&_9hSi4$>%ILq6M)gf7lKQ#ydv8?gyoOW z+=(*r&T@=Cxs;F|nj!FqD+b$}qBLM=*!!CSHdkPQjya2sl|$hmI-gOX0=`cJZ~KD@ zekxR1nOJ264Nww=RKZ7kBoqOH(jBm63JS^uW`l(Yxciim9oIP3e<_&Ao2QBlSi6_2 zA%ReDMXU-HrbM~qTLqCYNR>SPA#Yc8mYF>Rg0t zeH8aBTzQxAE;G-g+WmDitVdY5V>xb3>+=XT@ww7@%>%Dt#X)cEahr1bHv4j(w z{FFYn^d_QVw;5gXS==}mWD9bLlzT1ZmICgeQg4PICdtvu5z0YR(;fXJK>#>H;v8WcPWHi?F2|8nbu{r^_w=7`qKR{$p|k; z7>zau4CCFIY>T3{A5y~I(ruT~?mFz!Brb>Bt?1;`EuWL04wn{JxUrIu&{XrQMW#GE zybHxn$LPckhO_fZTsxc#)lS!V5fbbnZ*t=OnZe$rpCKUQI&iel4tV7lb^PM>Us^|? zdK)<1tr!i8gBqD=7oj2b*bXWl1^E&6KeQc}3|``4pZkp0{{^pfHC-=&N?n0#4xD(g zjjgkZsmMzMXCDERH>LN*otocXXh=ir5T}F&M0G!?%yuJ~TrSa=8!U@M9SQMfq($iG z-&3z>Z%yE?ap(arix>&8O4%`K^~5ZKYkY#AdumEddb%??D#C?YR8&<^Kyr(V^>ay2 zk4Z~+^^X-Ii7GRK?2^cctP(*;mN+6RA3_ok2dHT1tmzbVc7pIy#HdqIQltb0rb3ec z{=}RbAt!td2p z**i1$UaET0X>Jzb%J&=9(;J`I1v+};QD~1$jQ<~ymBKuBVPGfMLl@6-P0DQ>YN%-$ z%gpu2#64*=J4cd2JL(=)dpS{5D+-VS01dZtn*3KciC$8 z>ZK!8srl5(3JGMg;sL`zkYzm{9hxE{uu*iPkE_@%;mrxvy)l5Oqxkh?WrCOh5~p}` zP=eoO@#YR5sH1!yKs5|ZMee3?O=p0nyiT4v#m}bK&Q;cC#8CocvASzk{3-1zStVf5 zPB0e~8$|3mmp>$T91Esg)9i-Il5&}C1G#yv1DR>ro0t2Jz@)O0vzNEcEOv6v@@K<` zBf%ucSr88=!PGP+jhW=1t{HALH($@JWpNtHok?rn{}n_3ZS5blIrzSZA%{z}NzJAM6S740Jj zN{hx88}3DC0b@%zmbhI2YA;hJTo%{gXIJBw5<#WOA7UdJzmWu>;Rd$1d7+QeX!ndw#aSG7xPHrdA0f9XdMb?hh4-E$j>U9j7HUV_Z*7ZrrPzKkTbvu! zR@Z3B0_>fPaw1BC7XVJ|36~UxfKbE!p0%oq1`^eSVtg5endjBZ@a@o?(m#HN8N0Ky zVc`+aV!m6Q^0Umr5wcnr=Z^;?&UwelP7a>@gw^Or%~11Gcq|@ zZ4!3->wJ{&MA-1~UqzFUg#CBI8vh_mL5K?Qu^`SOQN9L@kgz+){2G)E80s*D2zh}M zQ}5gZH4s9Qogu@lxxFYLPBb4Cx7hM9C7-5Yn@i%DhQzRtkQ*nm&8bC(cjiK%1^tRl zP@LfyLr6DN)JOM|U_8n+`vIjeKQruFVyT2%e8$6;S}Ol{PALp#*;Pj4)}b97iTv3?Kqm?BPMYD#Jo? zF4e37u>SrBt0^f*0xOa){uz$4lW1I*@B>$0ZXQ@%$8m`L2qB{V!X zC#uYW3kbE3%t?UF$#7@kY%coTf1Hd*(05b5s9Hgog%Rr0RaAB3tcqYje{~k6)U#6! zmS=`w3z^&CdBrBB1ic!{G0-`#hzUf&8% zz#-|*3=bR@9_d-Or>WAv+p0{@*Zb31Xl_)5EsV;*B8V1Pr(jq>hHmR#X(9 znAcK@U@#h^ejh5WDTDyx;3Iyvgh+h`FILMyME*{5LL=p3hsLfGlQGq`TqH@~Bj6j* zvHCJje!W1x2i3v3@q`x6Z0FEl2f*4)J#uC{>P>?(tadA(P`yd|c_c{Lpx{S3fxFqR zIBcgNL6`mgy1p~h3_B?vO=}C&jBypr3X=n>-vFZ?L{+~>J{tqs%L&MEPxj?Zc5Y2Y zP(ol_5S={3$FnSA#MgBlQyhX!Lands)bv7-cOc%kL`{`9pCW;He-@M;%EgCu9Wb_$ zoon7lcTZPZB-nT!!tJLkar?6sLj=H-?RActoL=OsRze%wWyfm=eE?^!7!H`Ns4@9^y5#&tA^TS-WX{x;A79s6Dgr=3Gy9g5iE6~B zUMY!8PnI?)3>O)B*F%*wV-IRxGZQ)99rp5UUGv(9U%^`=N3M5FFMqnIHi^GA;^IGf z_}tOZ*6Ra$g5ZvmuMK|1?Ej7T=N-cZbGQc9N^S9|%ZDw3N%?5t?HI3E9+Z@%_re##!+Ub&yo2Kui z1lzn0;4hxC>6G)MagI7u3IhtC^~BP?yXbMsf+k-FS*=-&tkB4;x4<-h+P}(-wyLrY zP7Do}p&=NJx?`N9z0k3`TaAcfyTZ-pQZBA96m`GigEgm{ZHk?X?zYq%qljrvC?0Ci zq2Di3%-mrIcx>TD{6yRZOG$DPF+rJ^A72Ofb|CgNnEF79_K!XBDuCSMfIj~L^vwub znx8BDsC~&0U`9`dNHt|6)dZknq>EeVcw(3qdmt}o|xx0cJ$F#*ppDumkmrc2DXl0zrJSsH{rvQl+2Ra`Y+aWTpB!H z{H6{Vk1qiB^Hj|Lz;SMHmhNYyiH@E*@;lJv598j4THxmp8u7OyL6{7tVHxv}DYPWK zFWrZUnvP5w+2l>$j=caz1$7{}S3)5h4CdyBzP6%!qwzSC11VKZDGdiwvz;BJK`gs9_E4mY&0fCT2H@gUu9AX_a?-4AlL zq4LS?v$=)52tKH53_m#2n%ux6Bb18mx`~tsfg*?g_dVMb-8>ub*(^pteDrbs-0$@_%fihES{$P2b zIW-%nIAgV2U{}eA0}2o6C1#MSyUmB!KmHEnF86XP&*I7}fudga5$5bq`1kLekOP*U zrAJW;IJ3}W5E}F$8<){$d$`Q_%27TisVvqz50rMu#XfTFW;`%*fP5jBkZ@nd$MEGm zyJ*E?Rn0Yt+!Ar!g6r~&nW`RZ&DM>XEq=6X8FylBDMa$0Q8l_*+WIJ~W)WM6pxirP zw)JNd^9xahi5oY%fV<(s-bs4S)?*7iOJ(TD2iG>e|7f*Xuq7y(n1+9tPMeNq8Q;aq z<%jq0-Jb0IM{n1+`55|ierx8o337Q`DUwoMNfh-=!d*xZcOS-%J-#7ol*oT3)MTzh z7n9D}yvQ?B>9xlQDs)pKx2V$2D%P{BV zFN$G5SC*t16&IG1;2Z_{1A0!Ve-hh6LBv) z9mUn?IEN4!C#tgc))(B$eM~pj_v&e|C+Z>KFuQZuNE69;=F`WJ?p`NT6 z1eElTNeV|1X);)Z3E=eD)W#wA{b6Vg`xWeT$-KGO^f)VAW&!^*viKo&%q z4v+^{)U0WctBtYUJ4CTv(H9Ae$|*p zs8q8gQ*$dOx1}6xXkktn#1%_cLcudm+Hv>hFYYeXT8t>c7N+HeTeHD2Dy}wbP z`gJ7c8ed)X{gJw6{3M<3yaxH2(G|#H&QF8SfR$92Z<_o}@0;F!`~PxX!M+Lf?eFw% z!A&7|r}tBq;a>v9B}`+4>cmtwaU&z46QK%a18}Y(KPu-8Q>>csR7lO(V1{l9s2|VBR-y_tOP}q5`Yf|L8Wyl z5ZkVuGKV0~Sze8V<2`!+LmrzD(#R6x2inN`OQ@rY{dXjjS)n%p)vzAz53t#)v+0%0 zF}i^hN(7fzdg?aKU{}whmx^PWPSPBrGRSM4j7NDYGis#|E~;HiYCkIwNsirZ4IVG3 zV#HDamzwRj0`rVCtV8(#@@{pE7ROASEzoqGTyPo|ub?R28X$sTSicF_MAaP69MNmqV+~Gqg2$2giM+TP4Tu)Q z?Q$AY%tv_9J1d$aStIBlWJIB%tlAnbik2Ac9vm0b98ex;3Fj*9Lh2(B^@LeQ_C0sN zzVu0?TS(XFz-eCw23ge@Mg%E20*{q(L{K(h+bT?SQYm5?-7hP}A+AD46yesR7AW3y z+=<|YU@^rN_G5c`o!dFJiDavk0+n(PP_JFEL=Dy5IR(s01kpU=DbY&{lgu_+{l-+n zszo3mQ1WzyWGXCLlr{|85Ng&F->FD)zx*6p129cE*$P3Rdyp|39w407y?S2tw2E^~1LxR}`%bpMixlj(sET@=(+Nw>*0* zT_nyZ=S=zsiK1Sl&j0@2b-lA!IinylJs5~j_w|6P(o?f6%|gh(u3X+@mDzh0GBk;i z89<_oc#e%c^Na9hwWk?dHCd?~|;Z3tfU7`DeICuoK zSQ3P!KEXB;-D5q7GEI;RA`g3ggKz22;J<(I!yRHm(&K;wCcJJL9F|?E5eM6FPJo2t zFKspPcOdo%Q?daOgyg5-97)o5K$s3L@A_Fl1wH`HHMB_N8e6tNiq!C3V71T+I7k&? z5(gBoM02!{Ne46m)AVeXMEc8=0%A3__|TyB!*FzKkvam&rcY8SW`d;7MJ0m*nj%AZ z-oGQUg46(TP~MWiJ%@MC~O>Vh>TO zz1dc6AU9B0YrODlf$ogu!d*4e$-i6~!9jGOVFI9uNf;NHC_&FMs?maVwqN(ImyAF% zCx^9MGms{6?hY9CeWF_wjd$%c6%gKwfl3hkQWp?kQy~c?tR=95a$AsNv4af}GLSli zeSlybDs&NKn~#YYY4K(Ld5P_&R6ziUCAXCA32T6w2c^tU=y+vn4aw&Fb*!;1<2zMoE6tsS^{s7P zJ-P$;v@K38auQdHjDM)6A5z98Mx32`^@5~8Nu2G8NX7$y z0;NfDYbczyX#wkn3Clq6ka~Fu(1OdF2j-CY=}Rt~O5EWNNoFhf*tl#)waa>5BG@pI zznYF4S$PGw*f1D3yTz`mGMqS&^jFJ~&4ZecOKOEUbSgQDImGH9oM7Z$JwsslK04}9 z90z+-$`L-Mq#&aDlmfLdJKnP>3Qpr2SSa0k>H(HSIodZvXM7+C+~8nG8N@%$fi+#s zSZ`7a(8I>@W}sXpK5R4*6{ysU9{mEuLMTWF;X-HxGV+KskifCBM6{xCqE}=eRTvqtWv_cb< zV|Dxos}7K^ihz)+ooU7d{Gp7B2HtPs%C*J5(50|)ib6^K<;)$Vrit-_ktz$)0g?#T zXoKrs0BQda?joCC?+lgc^UZbr^LOX(|1oS7%ojBCM&z*)uC`b%2DH8|X>45I|hw-ZjcVD8l7Y7 z`B=@@d-$v#*!yclKxZSi=7r3-nJgg1T%^)JurJnE6W|XiN#R(lkw^>bL;!<~$Xi4d zg|N;JZ1kb|Abpq4SZjMJqlDQ9sm*zCuV9P8YYQE-GNgG)A8Z+#jSnFrkk#RV9y8wz zFs7skA#fi?5!pmdiAj92A|>WCK09Mx_&TWj&{uaa+7r~N-HBL5%we&RW4c#=g&ynU zMTO0SXpk9c&~++-3C@!-(Xwc6*;(|g3`pyR7%OD@*oU&W+=Pib*kX(6Z$860vYE?` z+#;?kT9-$nr}~XKL-EV2Yd<#9MOl565FwF`bD%eV?hvAcm90ba?pmOvBEb~IIv5j1 z`B6y5T^ATLYVUxe(ey{{uNuyr(t0HQHqGpgeFm8)B*Y+XsrskUNBIauTg%lP$vR6Z;|Bnk~*D1;-7XoT-jXXZEZ z4*k9SFX{|E9(y5GutJ^?QSy0m z7-_N)6uy)Dm>Dofdvvn9f2|YmhXdO1IJS4M4l2IDo^=HON`e@@qk;!^js9<0^fq3d zUriHgn^i__a$wK#zkQvM^>a$Pi!Nel&4wsrKZD@Bs1FAhLITvU6B>f4x_=@BYB+sH z&V_`hC^JjbnnD|blP#GBIfBg#mS8XR8!26FK~Tr+%#5lrHPo=WqNzfZsK$)wYD6vK z$XzR=)POpcF@w;I0!@i_HS^kn&r_RFy3M%8R4!WvaL^Fr%QI9NS?Oi}^+<&V^;x0- z%q1-uEgT6x-Kjcfp$H1MC*U@aVUvOCE7ihwX2rxgGHkI%t5~`Mz!BD7Or}_ElL77# z5$kH{^Beo^ox4#=HY<#OWW7-o^aOL53@$fq(KG(6d7h#TPWt! zkwPs&X&2;K0YWh);gEqLVhI=pN3|coB4s%*k3j*DVX|>k@XMdRV-149^o^(Weko+S zFZ0gD45|>3;D}9(H8^3kA3Figkpa@RA-F+`182bL4#$392G!bW0GB6|NVFZq*CXj2 zPNHpY_#Jfn3hQJusN2EEMq~)v$qk|Kq@$G8z&lDa#h7LxD!OR08513aXv~>zFn)D{ zrPX$9X(422?5G@pIbet&q8$y-@(o%Q6t*WZD-Y9v2%~rrSI}-3x53?o5U45X9U|ay zoD;y;c@}B+3c9_{`4u?okmR8$1P3hOw@j9+X5ZgJ>^w9ERcm)f1isbT6Wi_kw(;%K zw!3$~gLhYN)2a~V%+ZdopB{MS&h0-M1`(LkJ#&$X0vI~xdQnE(K0lpGbb(cHe9s=- zutOkAMK<1cB_>yJ=9Ka$6w1hP+D1KbJ3UD%ECD;_#RSgMJEuPAtkDBWCSP8lz0OdF z4g_7of_vJu^-kGEDzI6ndK(z_%fM>gTIBlzXivdHaN*s`AP?#WvfB}aaH0sUI*?_C zeTzyY>6Fi4b`Tsgea0WRCf|ceud`Vt{3d8gQSw~<#|$?#ATY1Rng=AF+ zl4XT4jSG_!B31I=R65&%hk`Po1TWt9gMUAIN%ZHde^EN znyta`{Nlna?@Tbkai0{tSvJXdN&!q64PD9_9kqHj)-~BWb}89aH$g{=lNWTAu$-8x zvd)PTfR^eZ<*_ibYnO_n=Kj9vNHPMUJDdkbl#P>N?WNV<(K>dx?7rI75z+E^vgoV~ z^LN7A8oS?Z=OV_Wn}glk_vws`)W+xwX-d9ZT<0735p|}IbcRN{M(XidgJTcyc$`gb z)*6j0k0alsj#143xoF+m?jCIprO_fJ3p>+bwj|yi#y=3-*V=pM^I_q2{Ozg88u49H z`fY3bV0fFoRtl@`Fb!nG=Eu{-XMcD0+hN(Q+No+xiztif9SIT%XJJY8&O*niiW9Fy+(_J&J zSVs4Eql-tzN~BOO2f$?+SN^&`xOuf1-^sm(ns??E*TwR*^oW4-Brts^WAbiv%?`mC zCS>|~TD9+RHP|0drtR^kHRTRHa1VP=+nwu6xt*O@z>Libw@OgY3@T--hg+|%Z;=@{ z>8#t$_RhDv_uaq-ZMvP{wste3TTXbtdv;#=r`=w*cjtc&j>W)@q0NF_)9&RVdpqNc z&fy{U0K}6JG11}6+K0;b_8F7&+h_i(ZlA&1-(A*JMrI#U(haiYG}p#s;c}S%&PR3E zDXIHn_R-GtGYi$7NipHP3}-v)cWs^yYT4Jb7P8-juOd7Ox-j z-oJajqf@R&6Rs56fpQckL;b3c?APUB->c4vtHK3SUT`&ufPQWboMl!5%^kTbD+g6T zs0?0VJ%@PK8MC_G@*E5Dm`S*x>(6nA7H$XRc;AxldpO(nW-uw^jn~8|l%c7N&TZH} z?XjH5&sP$a#vj?8Xr*f?FF2qzvw&i4V?=*RmxbZ9)gDjGYNJYW1Cm{KpQm{i$4r2A zq;zY@`0xF03YV&P(G!4#f{bt~F1 z3{m$hB5zXda>U8OG`7@534j#$nO)PSn1y@uXF%E-EE4s9a2$oGP{*%-1}d<@ZvbivG!vp)`2cF8R*^3?RSF6c9C!_&|rx< zc#fgGAiKr!Xv=6lHY>eCt^ui(@Ek>B6gnL`{rQC|jnC5T10mxfO>~#Q3W??4ChC34 zOW0u^D7e)di&^J-wq1f!*^;(8;R<$IN`Dhq_&`E5SB*j3)Z`{J1ol9c$0I1O8PRS75BQ2Q%*gJ--)& z?K&0ppN14o!nY#GN~@z znkx1SpW-E$C0cz(ig%qHEMTNp>sdM=Cs3*MU4jWSEBmnHA)d)6po#f!1^l#Jx?LJM z&}Ok%5k5_{(cCIiRovL$fz033j_)tyi5X3wONHArLPZzl<+Z%8RC&&PFm7Yf?HGVm zCm;mlu-GYLF>ZORS0OZgDq`B3ExoXG;{D=U2)C+qqNWaxC^uw6BX(pkaU3FiTmtl| z;!)f<$ZRm{^a$Pm6r*W5C%y<9G>xs2KU zU`eSaKZO|`a9S+17_ly>RtX@L6@zFxmEQ}Bg)MvGpU{Nnj(mP@j5<23sGiSiwlu@fpBSocyvTm3uT4?N9*!Jym3EeqhznqqS6=TM?W=6AQv*+Qy za^!G|Mj{*g=AWavzxQ`)r%trBeVFL4_QbC=9pMr!{KA&P`}S2dW1e6oo+bjI#r^*+ ze1>cw|) z^4+}jS$lHmc-t27Xn?x^n`5Vt5jC4VxkDq%7%y{@eZ5r}VJy;5S`{m!ZFDyv0r&Lx{8W5E2ZP3cS ztlHpF0ebs=Ik}QwTO`_)8X#N#dTkr$wB~iGkgapdFKipItVvPBb*ch_xh~UOgQYw+ zQ``?}4rrt~-#b%sUI_=M;n*?=CGcX1*qEmHqQ~OU?XJRJm4$QzN);(X3G$3SBb3rb|Q~e|L#_rg@jd1Kcp_;a-AU!))=A#=$vmmdY#xCtB4a9i!FU z8IqZO%cSw#&orTR5{FpEgYXBgqFG!)PflSj`0(ZgxP;vYkx*Pt%$aV1pVw|Eg2x-A zLFbZ+OfB<<>t~sJm!5lW0QU~}t4u+65~(EPlKc84Yo2>;fA1I)E~g+JanvT|nUau3 zAj&?Oc1T4f2QDMpuGzH*5@q}t%EVA`rnn`*x>O(A1`Kiuwe5G!s9Id7V;R57@QO9@ z-q)l}UC4r*WV*jImBHQ<)f3;Aq&rjc?SZ7{f*%#7gcMGW3xHUmW&O+wZ&ryzOeH#) zB&AX9k+>FILTr{WG}a_$y^B>58C5Nild5uKRWxRNVmdw}FUMwaBlBpLRAfd8Q&Ui> z66asl%H{QDi;!(exS*+h@F`Y@C&wI|DDrnQokdejo_Nl?(ITG{d-sh9v{5Lhn_5p* zwO3{3voEq9F)+K*iDi5W-eg9)EU>$M37gjjEKwefBH=irtSF4K_HaA?%|xrrw4&|1 zfVz;k&ui4XuYc(lND`VbM0CY`le}6!@e29G`(ZmA#TD^+?vLiV^Wb@%c-QC0Uw}YC zf`tebCS1gaYuG2dUHL17UX6r(NIuFd#7E+>vMqL)$&yFV{hZVN?%P;@3#&+lZX@?qr zSYm*S20G`0t1h|hiucrRy5_o_2KlDN9k<*z*hin$8fu7PMi_3SRYnYn={PyRXiV}%$HLt+%hVG^dnhFO@0MOfNn zuLBO!*k`}97TFqBPBbH51e^lS0c5}>;3~)RqvH&%EfdI|0RkIJX7KM-%ss8bAx~@2cC(8) zkZCD6pAFb00mJ27aO|`s3^yxb2!ekD;8l_!wGLbg((9x+AhS-I4YKQG+(2%ftSiW` zld}hffP4}-t)CbvH(doN0s(-8&q(02E+M6XS>=jHrt-tDQ2bv}#c!ZObdcJ>tf~=E T^;oYa-GVc%0S9p2zT08|&6ZP< diff --git a/docs/_theme/rl4co/static/fonts/FreightSans/freight-sans-medium-italic.woff b/docs/_theme/rl4co/static/fonts/FreightSans/freight-sans-medium-italic.woff deleted file mode 100644 index a42115d63b39e9dc66c33d6294a81e0115569003..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19420 zcmZsBV{|6I6K-v{Tidp|wQak7YumPMZf%=eyWQHh-M($_?|;wzcqiw{Imyg3Nj@br z6AwiR2}LzEMGz3#Ef6@6|D^PP-TzlaB_xPJK=8OhK*%FOK&U&fEJ7tDl@wJ$KtxbL zKwu|8KnN%m*^O=#Rhd{pKtR?0bE5GdjIhDQ3{CBf9YH{_3qe4@0zp8)S;O+6wgBeF zX8-A*{sYT@;5=l9vIP7$`5%}1zcKm$07C_x2(WYY1OX8m_>ZgfAGe|p182(4*z-Ss zpmP7&K>c4_D1q1;+nN72R|5iq`3M4{Ui)_0Wb5eQ;`-m7iT|_t^&g0Td_gcgK~0U! zj6n8}zjzVvft-donOTO+AcLUi5ns$70lWP_^hML!2yzJ1zY!ontd0;3|09Bc{yP`gwap@j~0YF_!-FZ&+PwH|4%MJK>pj_f4wIt!$>3IpfEP{{Ojip5M5W#1UwB^ z3NT&N9HbL#2F_N&P*_~J$Dw$fRGww9%6s_0=ON29$?kUY5jB!u+dqTLveO$kH(5uJ zEKJ%O!zMV}Brdd(BK9 z|F`i>boORP(i0H$8@fkNp{iuG6hk^*<+HHaG^2ebiZ1$3rtkw~5J&;e8;HpVW^B<$tCZp*= zR~*s0V9c6qKB!y?pe1T)Hqo!ws3zJKh+KwCxFmXIcULb97bd0s2Wp}ywJl7Z82+5PtF%{G-Izy zkMrfA)Iz$fwSf{-k#PJ+mvR)SB(BMXsffcaJA*TqVw$)X8=PwD>pG0ac}GmXDBcIN z4$_i1#OqTes4@`ZuQv6BE6r@1b_#;GZ3V)@b7<*ETK-pYa+l=A`7)BSe|KX zFxmoULD??WL^QnyPI%t6-q$fbc@eqKLpV&Qr@i(;nrNh=L|yk}0)2=fMbzhge5I32 zelK-enK^=xO;_G#u5NB5#^V+o@@a;%vH{N6y#~$+7PNlkPfdvnVf3H8OJi(;PDwRF z7gQ?a^;eAMzcaNeBqL<;y&E#D!pvFe$!7BZu#6Fu-9*+Uuk*q}THo^6RlT%4n5(ua zE?G{6H}w~?YkJe-+LA7Wjz6|z6y<)=kX2EYiH-bgsrCPNO^nD+j3QSUuD3~D)D>s# zGGp6Hf^H0uvO#&REqVVO?MB@9e0}(J!WJr7i!=ZM-b+RPq|zj_&qlWXzV4KbMtwpR zK}h0i#0#yJZW|D1P--`X{M`6T3vr;UgsODV_mn>LtLf`A^(*gRCGrdgIG>WERWdql zaQ%iexpFFiY~hl!_@cc_z0H_qu~MW|@3KMC1*|&BQ{`WUJ8>v`7hbHG9wm7QJ-+KE zPHOCHVI1m;_|Rw2if0*sO1E`-dCAJLFBW`SYR$WLD1$d8^zn|&QPXLYA}rzaH;M)* zh8Mzo0&nYPFJFb^aYmGvoGXt7yT%|&#(TJyH_H>nzLnBgqAy*ZBGNyi-fyhqEu_D! z$dS{Z#2|p**Q>>)(KE@ia)VczYcBQQxr4-f95Xm3Wy)qf4A%~Jk$`jK0UCg0KGXxZV3Re|qY`QTema5?(?Lsim%F`Nm#>h?nwDfFZV4QQO; zi$%)$WFk|djG+)@VOVpI4cgLq(?z#l&I?(aetFzia=Q&A8H6XhD3|gcsxdDp40Joj# z&WShf=;rF>PQWpC=vMO3wBTgIC2On>aL!;o3zePmn#Y4zZs0L|XhDV7g$ybGufE2Z zF!DmTve9}{a0Y;vdo*#Se_SBQDIW%07YoR``p3?MSjYHb2eIe(i=IblZkv7Fo={;r zSa9UA%x%pYkBR)oKR88nfz-1<2?K(lPzmFdjd*NRTl+jpsRD5*_ozwUR@xKa4sI>9 zjz38?JvgyX1-$4;R(DP8yi0UL+tx7ctE9@bRH#ig;*kx0oFuju1&DxUO-Nr=;#Rsp0(dAJ+dTM?w_UFA5@1nn_R}IodEzSS>78M9;u*B_pF9tG)VJU0za9 z2sc?f`W5+gXk4_ec_2<=R#8Y%G5Hu6yZH}`RW^z95G6=@iLP(z-AWYHxdp_S6wL{5 z1TC~{nTEFYji;T7+2aUbkzx>k$J3bErQkrP?)Tm>aELoZ3M%(E!|lH%=~7ucm+Par z(mT-KPClkp#X&R3%?IP z4&JTZoF0As?uVDJpH=3uHTB-u16qqY+J*GCfR29pF`5sD+h&e#&0QppWByJ`?!B*H zjCrAi*}c}#C1)t%9fWDab7%$xiDVJO+{|(73~8L%&MWk<&Cbh62MC(2F8>lSU_z9G zqgAlSMglNh)lQ9+vra_&xmBN$(pDlp82?6$UJB-~t`i8JDI6lO`QmIx4w1^J6gBO?EZP3ub*dh#p%^1ND{wWU}WbvaiZXO^MT=VwS5d5 z)y)$|k=t2~-s59XaIm{@)C;OcPxkD@q|)*|1|D&hULI3T9j|(rgBMaM0?0vb)TYNLS$yeo&iFYTq;~fu zO6(4o_Mvk?F6s<&-5yGA!tEb?O3mo)6n(46cIU($!hhFbSO)my)KUi+EZzEU>w z2w8#@V)@`i%7>v0QcP=0&HNk+o5YI=Gh_zIA8>0*6~So`fzPbhJ_UNa+^yp`PMn<_J;;s5rd-j>+-`4V=jyq)|rAfXSzLSGfMpJxi0VvbLo*-Dy zvhgFf%DL*7*Wft6vS_=ZJUeYVh-}H6_+fj;I9vadSv%3J{sGkLB|`+8Gk29Q@zKGN zM!O`65!2UKpX>kasEmRy8USY^EYt}09#77s>e`KQip+jeb^Qa+bn(+2e~7!s}CT+!aa^>Q@ue>{nL6 z+$}xSQp-TH|WMh{JAL zE>pKVXq&y_&;kcenB>qiXybaX@xEr~P9aWIv{0%cx~8(+;S*+&roAWEOq!u`pjlv+ z_dz~LFLZ?O(BHzso6V)nWEPjAgyDCB`v#4z6DdE1(-$RErLTNxBbxJ1vyF6}n=%Wv z=SgZ&6j;XRg1gE%bhg z)ShbwP)sMX?8{i1SUBUa zVUb`N<>VUaAWYBVjz33_t3ONVaqQHGu1GJNeVb(&7S&J`=sJ`j#hZA{0Nmrz%5;;> zy3STR#A4?I1Aj>4yCRG8dDCEpF#yhHKHeCkgUc`W(lKE9TbupDU96k1f?7Cn z=yq-wM4N#EGoC#ZdUppD+Bp*$)FAsmFZO)`Zfe5V{e}a#dw3~mppZw3(!R>N&+0ZN zo7jdb5KTHo>tUR$inoG%kFxnQPe;zCTZwQ@mUCHN7AILkr_QY(5DEa|Q6xD}6%&pg zMIg#YkIuFiJC4e1!OgShK0&VF<6aEzW`cQrV(lQ&fxZ>TQfb6Xb{@+ zJ!?|JsFsKxUgqgmE>$tZJtjoTLp^$GjE#!v`?Lg!R!6#2wB3H^f*mdPe5u`SubZfv zD0Xv!@f!4YWb~V1N}g*3zcIq$8jS_K?sGo_WP~il-*9-)i_r>Ix)XG>-PvY0&v@K( zCQ%>jjSJs^qjjLZ^SOap6YhQuhV|%i>q!bFvbNCV>vxt}x&`utxd8R-n}37MWl#_D z=4yqAZVd!Hrq4t~ZQZvm0-TMwGu`Z6bG)2|9~{oTj7?MzqCe2Iwa2kxQp3p|D{T+z zBq~~4h2)PD{f-g$GVZBpu56y|_n?mdoLOM3M^>wcpEq7)I+Yv-RF}YIs8Ir=UojS@ zSgP+q^PC5L)51b#^O+;TnwSINy_#wHF>wW<^X%%TeXpu*wQf_6^I3np+ZZsycC1)sVLH zr(n3=IsTYcmKR0LSU>@g*dfc~#9-n{HLi}EAJ;ODkLOU!vejLF>}D(Do^0j>0JFbK zIb*+>t>koWo4{9VM|?{V{h5A}neE}6ehc<^)@4_Gm)&F5OzfUO)2z@tVY{qbuJQJ7 z?U42%-WBW>%4CiDiM-zJ2(x~FyM*w7NX=vbVguUUvRO5o|pdgR^k+MJ}}|@7GmN9Za3Y?p z4hHNV@Wyqy&?*r^Cq*}!IT4Zkci&F!slDMR2bQ0*k3lf-o>akFj>gYjo?CqDk)ydR zk#S4@Pw8eLfkRAn#Jd>Grh_)c;Pq_er2B2GXe6!Q>f`{Ex2hRyk6E>+3T1^|<%TT| zekEH=*=kiyHi4J1K?%f(PYlvU7GCDFnpd>07c`GxZ6Lpp=ID$TSf>yf=bh8F2|DPk zS@v$eZv)X|?HQxsnb!`skT!wb&-G}1o{3le!1{gMwv}F4LSG~dvx2vQJ#tlVC|X|? z*PkGJhlH_!&+6g(OV?Je?7f!DKnZubkfeF5z0 z{C#%#=;zUsGdzS4y8||twk$3T`h)YD-%gU6KZx?pPOf_8K_X5Cn%O;YZ+U|>V|BK2m3ZcUj8EOjwnwk;9=t6>8$ICad z_VYP_DOZTe6B_EYX8yAN37W3`dpM2P4tj&N5$=*8yzS+c2Gy9Njt$*S6WF;(RadpK z6TifO=3UIHe~^I}>29PR|7sdx@ea`Vv|{L*aI0(8+eU#yG2=p`a>MocXd@1KG$`g6 z0@xQ8vJBOEmW$gX0j?d5Qs^=&yj#O*S?mE`?s`@ITPRI8@5@`5yw@3?AJ9vP5N20|T zSvbJGD{>|tbMfk*t$RbFkbirk{o+`w?x^!vjMZrypC0vr0_GuFLT5>stw-C2;k5sv z)oh0B+O1KgEpgm*FjdTPR|%vYb*%zF8@<_Z%1Bd)#dvS$MTKYzxh@W3%^LwuaE z^iYvT^$VereTRYfv;20007PH;-y<=0L12NYM*05zx^nM=AIm4)#Bz+ghHTi zxz}jQeWe9ap29!9Du2QWj^>*QOE=@!yfeK&e$Icq?{77kPP+h>&pY>CMC&|!X)fQq z;1K_v{l-HLM}(kwpI_*_>PwUGMAcP`6V={bmn2G8H4=UV+<9Iiv=1r=6-WDkT=}CZ zD5VCk9adK%m_7!`+V>}4JGp08TNFr-aW`)0lHJKC;5F{A$7-FylRm$f6vCNPrQ({%rR{x)Jrg{b=_uR5)1mX)Ya_tLuh zcJ*cYO?YJ}#kS4yU(Vaa$jB(%NP+@N0tzJ&^Z{Ggm)OGeH;4rDC`hc_G<}Wj6;7_+ z7JrW~5G+_^h_u+`04-T%k+sSB0WMl*lD5kF0ykS{gSX5311el%l(Nj?1T$S@g|p55 z1&Kppma)$MhA`h?N3hTT8#G9Gkfg|XA2msNfu%99?Tnm!k~{YB?UjJ?0ehK5s8NrVX~>QQV(Bp%#S5w($7P0G#AH^ftrlhHIn$u zE|N#;DU4|D+Qq95a^9$o-QyW4E;b=vUO`TNZf1IR6B9Ed{hF@Y=8`djZ4uj3fSa>y zOYM`HCa(vqinszT5J(y=i|+PoD^%%gTQN@lE6g0VlLS_$-ukGWtIc5-7Cs?5KBixD zSH;rK&gS;N8~S~Viq~Q!UTH8Z1gu2hi;pC(dj(* zhzU~0dxAKvVpL6`(GVXaB2?ln()6I^4*i4-cV?$xlBu;A1k5nLm<)xCqh~;buh(9j zPCv=jo?@alw(82HfSb4{?5#R?qo|O2l2YfjXS=%);Xr!9>xSaZ&Q!9g-&a|XgeZN^ z_HVb0yTi|E4i(Rwc^w#%-uT`+rs4ajhyR^}VW2L=eXP-9B}IV}Ept+E5^Zt?c{qTT zMr2Nv@G(~mx3VOk5|=q8B1|LOYEXvCu4QSEtm~{Khw$V4_!lGs+W@g>&pzyNEZY!u zN-T>oi|RDX3_|l-re%=0K~rd+xrUZ$nzf8mV>~z&-alfO0yH?9LylXoF-jp6JuZV_?wVM{j4qb-EH`SxL=A|do|X^OKgg(KnElc@!PIFD zvp@89HyVH-4ehD$x|Y(Fq)v~Qm_i=8P>pi@3rmHjZ0W&^!<0ZZOQCrKFd#3ui7L-t zGVY?wwRJRM&(PrNUWlX7K}~2ag#)P5tNf0MiRO$riwC5B=llUIO7l!KD~JMSy`jVp5dpxfMC~dFo(l!p zV=Wd)o1@N6Br=7rgkLcDCTb6zJ5ky*Y>s$4+kMGyA54KQg>YRB;sA7e_>dvK{q~9| zbCXUjlCA@NCkWL$Y=HcTT+Reb1Cydb8;TvN9(2}Qe@*jK}McPyYX`HOI_9=O1 zIe+?uam8cU_hwR>DwS${jqFr|<3Fr*JsQo+zR$(p+Pz8Q&EZWF9KzMBC#^qjrJqlJ zUDY1v9#7C8@LwU{s)n4-v4;|W0UUL>=%cxfMmOwqGvF4rUjJNY=uQ|O^SyTQ*(~{+ z#_k{lIP$6T9d;yc*=_^+&rG#*ZQ;r1Q#rhI?9@=HNKw}QphQdiyIJ8W8JEP=FH(k5Oi;Ih? zD*|H*gDa@Viwg^h|JRzj>CnU=AkBm!AxJHL|5j7OP#d6N1nB)8sgUkriPE-r&h{Do z{1TwteFW~ZEq!UME-w33DJ*-*nJ#zfp|zN8Nd1WuLc7(Dh%5HXsz>Uf!2#xBH|>1NK3^u|H_fQ zk>&V^^6}Rj36E?-2R}|G z)6Ea@YBwn^(Jz>{3~U6kvpswtiJi-rv^k-8c81#%n;BVIOiqbM0TrmzS$dxWtBiv$-fXEW_7>j_TxD_~LZwcn~x{!X`R zujs*DDJ{4_e|FKYo{_Jf8-C#uBn)GOP*@bC@KEIlj3SF>NI-%rv+TgOQG&t%X2ncx zvLjFZBUxcD0{Q@sJA7gox)EFx5{=#rrvV69{GcP~@O&aOC%f~9!h2wZ|E~G%MkHCm zF=U|li#_(4IuN6l)x-P;F8f>_lsopSbk<044xPJuntuY--A!9|D8957?c_|SxWbU2W_I?z^0O!Zhr77`Z>}M|5(U6X} z;$(2^1N8wARU<%Q;XwtYv#5Q+4c-`(r~xHM0h)%`a9eBZU& z7d4S4q8T1%uWDaVoO~p8%nvWF|JeH_Lv|bU3nD|+9>EtP$rpN>JW(8;2)##`;eI6u zBU#_y%p>jXL7^h=Q0~X-5uEn>yzzY@yk2~7;B2=L(n$#qcS@Jb(*9TH!xGBy;lQoL z5XjrnYr!DGhr&hM%Tr8@9_969AEXBJ8!tiy^X_-3kpj#|5g#QSQ`-ZF57KF>lq4Rb znjS{IK9Z~Jle-6Y`Z{(OgkFxIqnft0JH7sNe}q3 zUhTrRe6L`czji#lh~sT)$_=k-k#U#6z6J-jULWK_oGgjk3&}_h&#q?#&i*(FlD#DV zBuah5p&UL>VC@ZZJY+57If90njMUl&r(ms%F=6qnK#hVlMlB}2AJEukl#-j>NvAK9 zC(;xh-5fpQQm?v|4q5hDHl81qf6q7+U3FLDv>4?_{;uTf);h0M5KyUgL4PCoA~6u= z?Lh?9?sHif5@D1J^|e4`>IBzij8PYe3P7ft<2?D*DwT6FF`D>a!i#ivY;FK|YY??h%oc0mxkr7W^ji{_(8n?}6(-I%R}!PE{%$LwqlL zve*6VoAs&T^(Xa#52tIOJY=BqOWH}jI@dFylm%%zRS3k(ad57GED9}NiSMyU2@E$A z4F32&$169S2uTtTR{qRG=Iz=q7H_Ttqv4u@-~TN>@wDYvH0)K`NCJ$-5)=&Syh4mO z40HjtTN==uTa-Dbj2ksmO!E+;iN*K0jT!a*UVwPu@6SNL(ZL9v)dJTMeYi3p%9Q2d z7TT@Py}F@F^~5N&Y3+(94B1Co@NrlsnCT3%g8XITsx!NS}SMrAV*`^m!EYj4LawdGjo18b!Y=3`JHn(IGwb%jA z1KkMu8?Jx&B}5!`Mh%;)V97|8ef!c6b=-SwNU#AkMM3-WX$sa;yMaieGJowH-k&2> zbp=4}0q%i_mz<*`&fYfgSn`iB(A3Q!5SYFSEv? zY-aYjhqKgQX_SN}fCbZHrV^SI*uRT|ACwQV&SW^NkYmlBVb9r#3mEn1HluVLX8d8u zJ6R|SI7sgnN);G-^H>$jMXebX=9#5)FPcpgj?so^&6<^!jZew6csCaWY+BHecd(d= z1vI>a4D*A(SThf3r$rddD&>v9-1lL7-clcqt;?+}!G2ePt zV+^JGHD3Fs)M}fF#vWV>FZ%g4W`YVmyl|2HRb*_}4j`AjD9-Wx7C&d$6tV{EO+v6W zOKro4ff|%~VIrTdN4x7n0uA{S=$wz;S*d@`W>wD(2cX$neEA4I%vrVVP`7O6piP^Y zHVM;a26|S*3L*XZVzk+izATvSIi7+leU(hK#41qKQ@yFxvvX07E*a!}u3(3a&JtD) zc6H~C{FG#7C{?3HUN1wN7L$whtW?cMW_eL#Z-ssut#zNvOy0+8y9rCo;b>y?RZ)nG z8=HG)ibadMuyF)y5A?|t^?KHwo30hEAH?fqGkm7rXrLa`Hv6`Ax+b11KJK6QMG7_l zVMnZw>EI<0IjA!<_1+C!!CnV)ChIqS{w|t7+&nnD?51SbvX1!px`G1AS;yzm3Q@EX z%Ic-&XQd}Gx~z3%8JB(s0C`7^o3s7DZ}0=0_nXmYGUx`TeJ_pAG(m}Ep>HsRX#B1d z1&OWXCXd)Pm$2(Y#V#uny&B85NU;&C#Aw#`EJEDnLlMS9mmy$B00_k0XD;R& z{$=i(=50|f;^eH;%85%QK;OR9nS|nJm8|4X0(3Z_Pcknbq&M#6f z{Evf^w(gMj7Fgz3Nf#UF5sIU1_Na&9)x+>Hsg=OKrHgsE+bscYRQxgaZ`iP)-ahnV zzjcldp_n2Z>>T}|&C>TXC;e_M{Z58X3C3FzalB&ZlE1(E&jzI42fkjv&}PG&&R`^G z7H<-3@A2BkqLr23-5~$_aO35SXNHO`+}uyXotXX;!M)^p>2#0d|LXp>hm@Su#l|6? zx!8K)K6BsuSw(KoerO@$Nr^0(S_t!^LL|nG{ppSskTAsm_9_kJQdW(UVa5?(fHGu? z2uL}{u-w0Fy$h+*-Eyqp^pRe`<{Z@1vaB!# z9~6)~V6vX4_7ESbjAy$>4*d+WymtQcm7T%EaC##I)A5gjor?gfg#SDlD#FeMj)<+( zJSd`pn0~}RClxiBKqTLxTJa$pi#wo+`9v84VUyBHYqz9o?`PTpxT@xE_ZS z_gB!v+-a=ZjR0|rj712dR2<@tm%1FTEmrv&u4TB}gyaf@GdSgc~`V-z?^#*-ZC~+&#?GZ*( z)%uNhUrr+{4P3Ev$}&lpiQ$am-T)KF50tQLCKQ{ZOC+mpArvI;M#3NGC+6fhPGcW` z<(NP%(iI)4)op5On~dm^*_4^h)DWum&ZYThTPw$xT5(B;qKT>B;$2V~1D!DHnE*i) zZFPg0-}(hQ+R0;Rb|R%mi4Z;pgz4Ip)PMD;S!;CGHS4nZmwkU;w%(o6l>Db=MjNkr z(GVlIo`1vHdHqjXp7v`~UAso_Ge7qL1t%+`62g5oK##-{%ZzAEHM4rEa!y%0muY)R zVm{}jbD{Q*rhp6yPk?CV@W?KSFT(+z_1M2NbCNE@ zCjv#Wsvl?%vu|B5%!14YsA3z$VV{Wzq|=WmNE&NF6J*mns?wJ$7e|iLscgtA&Tlwp0%f^)RQg$XMJ3;q&*boXL`MBI! z|0k?nN>f-{J5Niwk)>6S@r%}SH^1jf?{VA5{dQuKlOaY|8=rh5;$wq+vXbpCvj$9MDyh5JZw=T&Cgop?DOSCX;*hCC16$<*(o<>_wQa)M>K?&eV5H1 z{ou30bR36@rry}bACbfW>$l|2<1R-UU#KX6Z^KRa+gC~3E#4whb=mUsL0!uB&=H3J zNc5UIjf#lz(9WChlDhb?jUs&9X#ze&GLjvC&*41fQdg=b3nKtsC@&QO53F-z!N z9a(PeLER0Gznn*Dje9|8^^8WNu8abOp*t+qFmv*sAh8CLRd!F@>lBG3bHH$h{%^iS z1aTIl|Nc|hIJqur4HdCn)gH+*?Xx#9W0Zx+uPg^-SBAZ(@wW_wE)uaoUZr3TskIPi z;mV2P4G{$WkqIDNnYa4*CJ*Crpz5&4kj*(C%vY+jfXaEW=dQ0Sh_N9F)vN(XKrbL` z$d~Ah#6nws^(mMel7J&CKK(v@UB|TMG!U_L_=V3msLaq?N~n;3W>yhIHTVlny_?WK z{0oTRBiU8iwL44BomKpt30onamJcaZKQ%W!o6+et2_bb{P1>hOorXlQeql0#-F=6M zcZ7&HbY&8Hc8ET?A{%ASG+Z^3o#6(JJQ;y>ZlD2g&D1I2OWqvTDu5#g?MLLxl&ja8 zUP;PnCaCs=Q$zUS|2X_Jqd#*aTpJ%@%G~wDrw3n>;%kgA14S}|>r2kTwhP~IB`F8_ zDaMo;JB(m14Fx&`aop|FW3TT9INQjKj3l$c#ifPErp&x%&CSIw2cC~(wD;O%&b?5V z&Ax`*@i=_N+~yP)Gd0DOf+I^=Sj$*cb$Gho$Eh-eVMQO$F2+ami7ah&jl)^JW2z)8 z5u%fYhB~~+B=Mu`o7O^T6?Qn7;;T_psN&eF%3NXhuxOFX7~Kw_A_%Iu@~bW7!b40^ zm($-oA6u%tcAz*2EpWXbtTsUt^pv|)T68*fVO$#SHgbHCA5}-B;TDTqUW9QZN zbZH!5XdY)ls!BZhHw6c!;US*{pm9Z``8NbQ-6_!Q4-#15%CS=AN{?m@az9&xiNilf zhXCaEJqoDsOjm59&`OHo@q7jzMoVzLXj|7qbDLY4PgTq!Zq~j@(*#AN>I>LZDRED< zZuy4seV|iApeK#i1`jddCLFWQ#?BQV?pU}{wB$?XgQm^J6JRjujX%89h%A{w7m#R) zWBOHdb&}j|4P(51!9WOd^OtycVRw)+2#PUkNg*w-5>=q<(j5Z1Ciu`{dF3AS&sJNW zoL%h1XOwwzPX3;j9+hVgfuXB=B%^CmNk%R-nlHOa;tkSEo-_@$gWz1n3o&J3`3qP^2BDSXr*nEY$+(h?3G^{y)aY!pfhB3o*Yaky3>y6nK zLm1lUhQx~F69k=kt^2SNU4uPffzQXeH%XmYxeZ5B9hbKvgHnt4>WcV z4sEnluvOD!wO#3cxD&$>iw{r#@Pgx>#)Upu8%PX(fN?|V{6SL7_EJ}=%8I6_Q0~@^ zWW4KSkV{Q_zr|Ux^2P_k*eaTL=*xegd|A_<8sk2F;z&pviP$~wH#fn^tRM0X>g|ov z5>C>7@467i4kQpPz{pD&uAuMK0=}O zl&n_<;}MpU$0O4I-`|(ue+$Q>Rk7*`LXtWk1RM`_S3c7Dq6}P8DA|}e%eSxBYiF5m z4bm)DcOyMkl#y=*a=n~a&vSU`J-kiJ zJ;L6bRh4y5Go$H6H4(tQ#YEL6A*y((i_2?^e}g`20xm=>c@jmFj6XFaxkur|@sISo zjsO+5aYV^{Pb+N6O1k~;p)hR@`)t^xhbV86W6N4{i&O3DMCbK+US;?ypg?OSYO7ts&a z&KReS8HQZ?HtF}AnRl|67dQQoTyYl@SGxdCVaB_LXF~oz{&d)5naE z$}f`oT!msC`>{&&>4!;KY;UohDu5-6xx%f>_<0hYO(o)It~Neqt*O`wu&%hWY`( z=_!~qOcK`3FG9w~f97aF>fYWxxTQz;|6$QZ!5@z{T_eyB3d9%jX%!#4hKp{z_t?{+75x z{P%Vjz}e*TU)WVO%{{MvLfIgIfV2;0fc0q(06b+!MrMzPhga$3L1f6gF0>XEH722= zs$WDKsNU_YFhJ0Kw>B{rtY2s*tyelZ4IXrs8LaD{i0{X6B1y>Wc zS#-l5+z);tvd*(>?47CfLu$w>$KG@GgLkvL(tR1$Lfqq_&Ysusg(bX}A z@zhR%SUPnHVL>6=@4F-gP)nj8&#%F+y6U8)5tWs)?HrXb2jsgfqbvB)$Nm6M$AMXQ z_V{(B)_unV;m7^+w$&%?j&MR$K=5qFOvji`DH#hsTHI7O*x!DW-EO3Pp#@Yhf zVha@9LlkyzBWV6LU=?j-?eqw3ItMU|4FGK_EC4pUr`00LL4X26i@RtEhF~75x;y{q z@oj`h69cz{MT(To2@Y$0GYeKSdg5o!@i2;%+`-7tAeW2k`0b=Pwcb5u-A=xO&9Bp- zaNlN1t3kKJNlQB_(-#)K_s3JweEV*;K)CT>7+Uf#M1&-PHQ>9dtFw-iL~W>Og+KUv z1pg%%Nj<;nfWIpGaa3d*xb707r-2_Ym`+>yswt>(6Kk|P^d1L%f`r!^{091cy2#7I z#lSa*!mqc-=uV>FB1)O^;l%$8!_lLe+w+GkYhGo-$!prGDX|aeR=}jx%b9~-_32;^ z1ZqyHMQTi`@fTwgXTYRYh(J_TesJ(Fnx7cue8K=of-wXXPy@sxzJTzC*@E*=L$x&L{hRY7okku zsJKJP*R2RVQQ}n>XI2&@8q~wqq1m3bWe@ptH#8gAc{el~=zswa4~`UsrMgZIwPs^e zUYxv&XE|7mQ*)k{yAHvrp-$vS7||OpWUJ{tkPY2_diHXJN&h#jnKJkj!c}rkm&=Ky z3$MQQ1!6mP%!g8=o7lr4^R-~ck%*z@n~L_eovfa#x_Cve#Fir$vfVDL34%ud1Gwj1pfmW60#!EU&=w;>d-Ey~;EQdsL0bG8o887C3 zoqb<^d$@n^o!(HTBM}vuukIzYnRZqN_wYOKIB!SzH@3WI^Q*0G6aV?y*lFK|ynbqg z8}IT$wLwf*Z>c3k8$2dcv0YQA^TrwBGIa2U+C4oPZ7FfaTS>bZ+)rpUeoVQh!Jc5= z%*;(_uJ83-Z3T=MzG&&mdwS|UT|`D_c6CKt=YA)B({ zjNj(beL=G=E9JoVKim?Ol*Qn5eP3gLjlt-W$L(H>8m%!AL$O}VyrB%e(I8014h3<8 zMD*pE+#N~ZAaHspnr)z&!(-gduijGu0fe7pzKN7KN1|&glveNW>`s!_XI;nD_S`Y{ zHUg*Qllm?6LrqNAM(h>oX>{4Cj+4Lyns@nJZ-cOJgU@6})X&DHl9urJQ0d zmlB{~Q?F@Ky3+*Tr^R<8uH@Em2s^ckH%9a?AoBmlA4olsC!7`B(X7k!c<pGF#iAb|PB zkkK6{m)Z)ov!@WQj30XwN;jW1V-CgEqSSf>tz1jHp*T&C6X39rkuOQU8@+enT~t(8 z)7i>n?iQi;9f_~s(Bas}J?NE`clkbE$K7e?=W-xptgSTE^v9oK3{&b}fxPTXWYXh1{9l4796Z)!cM5aLoGPaU@zRLmWv(S-PZw2t>E5R}N)}RApGZJ! z)7P^C4iF&0Hz>|t?df5qpzXe%AHri^mMGl3yd~yc-}Zb!aDR1Ny8Qg0*)FYLC|Ow^ z`QwZq1ILFe#z@LlPV7KmVLVkIG)LU9#;w^`UAA9pTpXsvX5+CB$3Ue7(2;zRO~)E&73M%On{sb%7$3NfA;L`9nthphCgjB^m(HGj{D8|Jf zY!N{LB~^~rGXZjkJ~9DdAv@K~M58U^dx)8vY}f8k8he;y^N92d*1SuU%u*#w&tF{3 z47UlNQX*z%CJkpNF8A-7c>Q1ARmP&WY146^W4A@eKa|RCT9q?_ z`YTGhl+WX9Tqe_5Njr%-7Rl(fUe(Ue&%KazY=Mim1WSYpe0_r66xDEKRi0Fg+|Of6Z9;<`&uY#`kex@UmG_1! zMskkP*R|H-^^1?XeXLJ(|7%jaz#mBpw&MxUQj+e1l zJzm#;^(R*8x#_(}eCQhLx+?43MJxW|cxDeT&YtS9q)gn{!Y#qYjLpGIC$?NXaI5_q zDSA3|VxiN1HfW?=F=59mC^bB%(^~|;8n!8@Y%jxc2F$%VYGs-+CyBPTdk+k*+05yjkSS^ z*2=){lwK@jj&Lo8aXR=g_z|To3o4hi7U@)dptU%G!YB8L zUpf2;?tM@J;qkwbI;`)>>BD}inx)~h>A~uRfKcFO-RwK&_w-kmg+Ui~zt7wnx%jV; zjst)TsTU0mrI{5K$(bJ?$rmNb8u~w$RWtIIJz`|L9I%%|Ej?W}T_wwqVAfvUsZn3dv{k&a-bRg90+ zaScz{qgZWPPS|nNe299ZPH~m5Eg8h!B+M{0+lR55Y?2Xgr%X`bN1^f2?Y_GBP9X)7 z+SF?Q>p|BFsvRXL&*5emHJnabpWn-@V2)Lkz_Nd3N(=Kbslvi{fc8%em?x-RvZB-v~vBbiAu_hWGR2{4BN%rBgTE$%I7p)#OS@|n69rPh84tV zLb6<=`#HoMMj2nz{yesG=x;V?&%S#zdiVr(aXSt=<2c2;CBqRM<8paNBj`m62Q=5v zWgMqPnME4ilth5nB24$;X+|jpkJ{nWYnkQM2qUAsl3O&FubmLWw$GJzUUGJa#`OLr z`A+?)*IqNtpqa0ujc&*@nvn?_m$%f5^>~9G&7i(trE`zdU3m0MKJlRZ!bL^2Fo+NW zZyz?pkMF#5E_ZPcDMVyYA%#ilJk=c|om9e4%GHT-?sOM=go*&OEJC8A6g01%yrSre ztwfZ|S%XmfKr|2!%mqt=-NBSSZ!g$O_DaYXY7b2~wsXPx>ilNASPMJBI@v|m z!|t#_mSSl(!^7O=jl7L_@GgFpC-?wQ@(KQy&+$dR#8-q*a8W9%MZIVhCq+zL5^-@` z42f}(5g!XG3+l*2mi$8j2!fZ2$e=Q)k{_r>{-mhM_{^4bTY9 zIB^JCP#;FNB9FjP)NODadgVOz;nrKwL_vHxWKa>+(K>9e7}i4xY=BbO2%De`@TbkN z1p$YcEek!B`$b-<1`aCiQah&ae8<2pT z=nWu;;VvZM9*n?!NWlXbg@-T(k6;`g!xMN46YvZs;W?z?1x&$9cm=N^Lk_)xY19hd zdyxd`crm~HMyCAoe^X?TjSS(19VC-~i6e_~rWDFiS0F1Pg1Sl$Q8ltgPEr(HY;Y&; zJcb?oYsY?mSVkm4NY&GK&i!%k zx#ymH?!E6#%LpBEN4}3U;WTY$@HWok3g(PBj|DBSk&B3$N{yCj+}g*mbE1M-LX5$5IJCEvq>Uhk71;3|HMYjPiwi{wwp>$riNxP>L$#xm}p z7)>7|i=>+I>u6wGyQZ=h+R`1eYxY^B?Q8RhJRqmSwE32B+FXm?KaYX(6IwhAB@8eT z&hfH3ztiD+p@gzoCf*%LzZs^bN{FRey_4vXpNcgza>d%+w020+$c7TitUGW252R0p zZ~L9*?Gnn;XVsk7`mS^j1LdqtG-H6Nw2u-*ZRDuE^rPC!}=jpliG}hixHY*aJ>-kZ5%laqtFSC7C&7AZ+u3-_$$#;{yC1RJbj5~VX)%PBa zE6Libe~2d9{M{kDWKWwNZFc4R#v77*+W%hECVt<{eXI2X$=>lDB!5@C9{AnNC(R)1 zIU^l=i>C|ZMO?-l=COclSj6>YF68Z0<0^aBP(f8$jjW@g-L`z357|NoEHDr8COstg zwLQSu)S9PZMyf=X$qTp$r$yXh`Mj(HmgVoHmb8^e?b;9YACljVT4&Oz%hqHeUzcQfl{# zvQ_CdR8Tdqb!?y}ze(1~crV#j@&!~r=vN9i!a_e_oKjh|79jkpHhB@ETdkM?P zqHcwbRq?)t3aVJg25Q(u9b0JNA)08RjSjkq*0Nzh-;mr(=52o+s2e*)()Ap_o!(E+ z)^3;`BQ=i=k%ZQd6an;w+8Y;N2yh^U~ z<_2ogn`E8bA{%sX)ANvQ>f1sa9dy~j`s@@MpN0B;I^u~$UW&e-Qe!r8CZaN0|9$Dq z`e-?><5ueHd`}#*ABt}PsUQ0o7VfFV^yEoK{)8VNr#tj<8rA%m-L52GvZ(NmVm?>( zO(Q(NVd+|N>aMzh*HA$f57d2(b?FV%u!%ah(7?9wACk?l{~lU=(?-X*U9v}S+|}$G zlJPrK`GNMcqjSdDnffoc^s0Q($~#U1(f^;`EBR{54^g~V9{gW@3IBooUwsXq3|G?K z*xljyB9j>VxVp+)*ki_nZ7R?C-$eYMSF)l7bc|QZVMks zRpNJ0ylu%cncaD_$<43+o_6=;d(u17pGtp*Bm(;K1O0~5kCc5U-A%OfzB#1tsODi! ztH$4z@2eXq8%m$h%Q)!aWXzQdCFf#PPf5-2nAv3C3fUX)3vb0HT`jcH!LI&&dWK}W z`^QH=p4X4r>RWL=&qT|oodnUtWZCE|MtJ&^XM?bq*6Cy;am9Gn1*UW3(L~~0Qi*bpf7FxM;cG3+MJ*$vw20U!)%JH zqb_Qaj+*qzZKElj)!W&cAF7ETQoB-ZFw>~9INLKXb*3{>+fiQcsz1z*Z%)bM|7YmE zzT$sH#%|)4a7G(W!|60 z-$#`d|M`Bs|A?MQ{|kE>SLvm$bBv+Q>}%loxkK*Pe=A9Ef{CopA<>)bJO4^==Pz)? z=&wBYP41I$7d?#SUTYLQ!4W5@vEK=Ac!IZsQ=<1R&&euL)WWu!X85`L{+FI=*zx>~9lKimD)hA)cxvHu&t@39YwGTr-`a(Ho@Uthw8DX> i?aujQ=(u&hpzqI~p4;ck@C%mzBmDYb*-G0;0000+1zP+7 diff --git a/docs/_theme/rl4co/static/fonts/FreightSans/freight-sans-medium-italic.woff2 b/docs/_theme/rl4co/static/fonts/FreightSans/freight-sans-medium-italic.woff2 deleted file mode 100644 index 16a7713a451ad09b4351a550b1d54345ea7c08bc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16000 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 diff --git a/docs/_theme/rl4co/static/fonts/FreightSans/freight-sans-medium.woff b/docs/_theme/rl4co/static/fonts/FreightSans/freight-sans-medium.woff deleted file mode 100644 index 5ea34539c6f54063a4a89213bfffebb244888eae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32072 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 diff --git a/docs/_theme/rl4co/static/fonts/IBMPlexMono/IBMPlexMono-Light.woff b/docs/_theme/rl4co/static/fonts/IBMPlexMono/IBMPlexMono-Light.woff deleted file mode 100644 index cf37a5c50bdb70f837f65c6233c0be5e4fc8bfa1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50680 zcmY&;V{|25*X@bjQO8Ngwr$(CZ9D1MPCB-2yJPi9yP0K&6;a#tX-pO zjqNTkCI$cje3zkT0P^<*q<#6@{vY!n`~Mbk5mB*kLBKa>{f*x^W;l}K3i8U|+&KUM z8Uz49kl@hhiij(#3IPD%4&OF6007g$XcuTDuT0PMeP8wMr}YhkNNbA}V_U;-4J9Zv)Obtx{fO7b64eK}95Ok5YExyTbPUPDr{00ex zFIa(vt&7JuX8{0!DFFZo3VJ6eI5zgi-@2+U006S^8x=ZVppdqP9^dUY8hrZ^{0E3g zFgZIzThnhY;Csxj-(!qeo7X^fuy=L=09v2F>-q@*;39$@OH(>HnST2Y{nwZ8`2zWU zf+gwgkwrSr2pgn;Bno^p^TUcqasVSF&{)$bLV0`Fm1x;M1b>Pr^X*gJ4|Lw?3li)L zx%-V10_kYlByV;#gtl38?W#m!L+oFnZ0`NgQn9L9xzV(u+sW&a_xv|*lCTFf9=gX^;!WkNhB)_#d-^G~i*o1V45aaEpROenKH5=lfk{=C(vd1>s&fUu|A( zbf%@bLxCCKi!s32yHt6==&IMGl^~^Ow6Vp2gT6;*<8jpLZkz*YyDCwOC0!zr8F#$T z&h#GuGZ%l6MSQi37&CwKt7A91r#mfG{wvJhq#HiRAIlHMS{K2BOMWXefQhRcP|U9~ zLOAoNd4Samr@z6rzxlCNX8i%Nb=|mQNONJ`^K?}&VkzRl>frehj(ijS2hDp3)kuma z@@Ob{neIm^z^|UgJiDkR>@R)I|wb;zwocqE2)lZp9y7yWVgCHXUo#v=E|WnCmRion{5Pi z+_QIGP?6=MBpC^FAzn!SCZ9tv(#S;y8LhW+&o~>k{z1MolEYQQpm}4&Gd5C0{uS5Mc{h00VTnvo&8aC~n^5;IWs4!abbH|h0xMh3v23t2?F~0l(28ApF_ah(2_E<3T zjOC2K@33AXUGVWO9*ccXA`_dN*Z8z#y2eDZ8}p=q#nBw8nv&Uyd5eR_rPW?kT`oD~v-FR`6h_$lm0gLGcS2Ma!5my>#+-AfF{-qz zbY|z#OoYb3r17)lTWmGGk%!^tQ(vifP}{*g`R^D^N!7MVRz({5V!pGby?7kZvdCY% zfGA4NEY>M5rY+V*LQX*v3MX7tBch=xf`42BZ+AozA@Ho9$p5mWp^;E zbm=Zg7Yg+Y9#KOj%l$`7nzU4m3VArVB#}KbsGZQ}(KvMrfg6 z*wm3_a88fMC!7ZD_s@GFgn+acO{8yyRsj-p~tIqK-jXlpIsFYB1I82o0s@R`!7VfkonE$s>M zS@YqGVcl`qRbw0G7HVWQ=#r$|N%_-db0QUX;wOd0^6< z)GXiQeRXP|J^XVXYZAyf=i>WDL{r$GNIjVHa$CSeL!68p!%}uPHRsH(Fl-^Mk2khd z&XAojE`(J~BX`R>c|R^=AAW+siU6#4ePC6O@ST5ilvY%V!Z(#G;4K$rJ}4&Bv~20( zjH_PGtoC+jHw*02>=+jR%R#5Oac+Z+~ZG9XUEzWhCqWKOr@zz*(|V?cCA*p0L}$ zo8CJJCePL^sc|5w|9UQnx{I9a+1c$l9`4;8?oGgySC_bWshI0I_4(v}Wo4hqoStFD zc$y+Vw{PFnj?;Q^FS?moAAWlQ;O`6j{8@W}#$U*BUUiO+bB1!ig}K~K@`;qc!@5{0 z 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 E0I?7Y`Tzg` diff --git a/docs/_theme/rl4co/static/fonts/IBMPlexMono/IBMPlexMono-Medium.woff b/docs/_theme/rl4co/static/fonts/IBMPlexMono/IBMPlexMono-Medium.woff deleted file mode 100644 index fc65a679c2263361a257094d35efba5431eac4da..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51872 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 z 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

4^Ms(tkTAT$IaHvmd`A%eqxxdw1CI0a{az9 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 I0hlKM0JgZhVgLXD diff --git a/docs/_theme/rl4co/static/fonts/IBMPlexMono/IBMPlexMono-Regular.woff b/docs/_theme/rl4co/static/fonts/IBMPlexMono/IBMPlexMono-Regular.woff deleted file mode 100644 index 7d63d89f24bcc0c0f5dc3cda086fee67da266ebf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50664 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%0D2G&3Y8fz)sfMJYF&mh7!l>Kv<9rdEn*UI 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 QGqXAKIiCL_%0K=90Nq5|6#xJL diff --git a/docs/_theme/rl4co/static/fonts/IBMPlexMono/IBMPlexMono-Regular.woff2 b/docs/_theme/rl4co/static/fonts/IBMPlexMono/IBMPlexMono-Regular.woff2 deleted file mode 100644 index d0d7ded90791221663847f6258089ab9bb76c23a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 35536 zcmV)AK*YayPew8T0RR910E*B65dZ)H0lLTl0E%q@0ssI200000000000000000000 z0000QfdU(f3>=d>24Db`W(YtDf^!iN3Wdceg!xSYHUcCAnotXkDgXo^1(9tBxDO12 zG+P&qkphLs?jAx-S-K4YtY*4Qh5qW)Fb`|s*PA7S(!zC?3bsuv-rY)+4@7Eb|NsC0 z|BhrKhyGucj>8^<4Q*dBtT?t9@k#dwZ?k~T7 zE0eW!J#GGPkR-US_(ZZ8@Nv7lz80iEi$n=z%6x16_7<^tB$p%>@dU|UClng> zXQ=npSH#ZOWM=jwiAZRev}uU22x(9XhXSL<>K?gt4p-Gr0L6!zI(xccV@* z`(lBlkTxVNQrq#i{1*T~CR~zeA2@w*-j+%-Zic{*`?Y;Ld&mh4G3(}`&@N+=?1hh5 z3d3w=m{l8^G?MW>X8zl~SJS2mP(ZhU;?#dt)BaNn;gDp@=TT-gmR4l1W%BlZX0T1_)aKs%D|xn%=+vNgv+-maT8g0xMSR zB*(HQW5o){j-1t(oU9}}bL==nz?L}~3d1s2L{Jm9yIr?M$5d|7Ra9@$t^fa~R;IY` z;iG!iYnsCAClTibi7$W07NoWy~!IQ-tV%BDK` z!&%CqTzSVr-fOF<1~N6Z#C^b|2&@INYt;GwKdo7km%Ft)suK6j2!q98WSIQqFDJ>C z(rA|BC&awWnydqd??Q9n`TmD4o6BLK8-a2^-5N@J^p#@!(2cc$=i^k(`u7NuhjpKe zO9fo(yccV=Y!ga1y~XO@FHHsmW2VFx#b&XVmFh-t40vHgM+tZGn*Xlf_SO6MR3-a# zwq`IFF+(AR6k=S0y4;; zgCtk)eVyO0$nNX;rMyOR35jt53pbS+OQT}R<}AoaS6@|zF~D_80<1-*wJ1ZAhbWTp zH=hROE6tR@nfjZHf_Y<>NAhOVFwA4ZG@Hk6PRLYqaf+p<$b-`GT!rdK)xtwYKz4o$DimV9hHYzK|AcDt74t8(BPL-wBI9gW8~-6J1T@(ZLCs=G>q$0 zGL+y@HkEZNN7N_je#T;GM2u+=hE_Uyl^aMC8#eyzr~mSqYxOD(W&iC`TEEH%2unN&l*F{}SP##`6R;MZhNt4ScnKbh8ElNB zu^E1g=U`RSq%0ZPS!`NSQ8yfGf?0|G?Cva-4hjY~J_)7e)*4@Cb{XS-Q+9TVOg(zd zCd_9Pro6lgs@a^M440Vl%l5bZe%Evov*akU!#?Lf;*<+4U!$Jxc;u&hzJ}>7*a~~?n}~R0Dh`fjJ5h20)S953czC1xEgekie+x!@P#A<)da$uY(91HV$3ZPX^oH! z7F?mTwdMN8>K6h8uTUKT|51%OkpdjzC|v;BVn*~C!5E9o(?YcEbEYA#@Ft$)1>V9n z-o`t4m+h5=x*i#sLE3Z<9{KAP;KTm!Md3q3H2sx4 zvJE?SZ@uJB-3X%s*KNJ!E`gXa5l>ZSEo0fnT)bfG%YI)rHP+yvt$+20?@f|+;{*C} ztT$Qun!mvhy(!WazJ;HAQ>DlJ0`Gd$q(A7NpN9Oxm#zE|$YF;uYsLpZBynn_4ddH` zY>$PJw+Z5~QyZ_zw#qD^*=B+= z&+d#QdaGV)q>9@)ZLX(U@SC}fOf`0FCsbU{!KB9T{Wbtj0JwZ?7C}lNy+RbdNfOAY zqhP!JfVPH3ih|k_my$#NM<>}SqJScEdTw8BHFI{{_z4pyO`dJ`)op~Y1r;B=@HY*X z2d_hK!{|axGE)Hn0Kj-@Ia^M$TOl5T@suRn=q+a@LRv2&0T>I8QkR!1M=J7iW;Hd2 z0S6W#W=O>~ESwArs$?0%3o=o8noSe-U%hh@lgb}<4`9iT&u2gIF26G3R zt#+r|>ksx1bS_bZ5I*NbDNThUu|z79E0ij=1^^+g13&%pyN=**qoe}~;EKS(7&2^x z6qW*1^ZA1eKs8kWNCPT62rfJNFc|Z4S&fU)D(h_x*K!@9rT>?|%b2Mm1@ez`MEv=$Jjc4jPj)5)T|jmpZr>1LZgy~PBxPW@a)9#Nj_ z43-pTXui7sAS3@Oj8c_qnNJNI&t?vc<}kl&BSYADjsSFr;C0WSqKgdb1(k*de;h)6 z`VAO_pezu8ua(z;Au|?`<`Rwlv%%cHmMpfwiI%R1qP?KOHEv_kalBM)Lb@Ee46DIo zG)Zq_4jfxrxu(#K&|7Y=0b8q4eVYUDFC}dV#cQY`-3pyLJO(Y>EONVqdR{kh+DlQc zG&cf%wT2_$U;=m?8NTc64*LWEoO0{}I1T2%KcUPGj&FVFTAU@(CF474xw2(tdW;8KI z7rj`~cG@FEzR)PN3lq_ygb$gSnsHmC$dPMbKEsak$AAZH7AXq&KBmezD^z5+jC_HQ zlMQW8eOhxiA2OZMS~hH1v6iMFCHVmUcCqK+lFQ=c5wjDRn)FkZ0p_!TAvUpvV~h>* zKKE0W%3#6}O1MOh@QA{Q8zDq>gach^4ty>J*J@y$iIiMa>Q?hQ4a8!zzvZQRFZ0_(* z(kVK3MJ^&wqt_<>@QE>szp3q6+$@z2>#%rK-1s=+WF1={VlV$-jolyjT>TtCmWVzT zKsPq8+j`Lr-Ok%{M=q@Wq5pP8w{#!S>CQKFvnUf;hWA#FU{fA5f=GePc+!=85f{vh5C5NpPX4$Iemjc% zem){h^YZ~ZPep37U+`QuvoMGg2fZkfqf4I(^00-@ z-rfGDYm0Mrm0(qvpv>1?lDp5K7qYQI$KZE7q^wd!EiX0=xB1-gs% z{_8VbX{f?erhj%J-ILfqXEL;MfBJ-(<*o)<{j-|T77I0{A}zTLml*0Bt^EEyyQao2ShnMOK7a@l%D9k9 zTejnReh|LaPJ^wjW5PslSyy2}UHhtv>BbqRndZ63fNN3F;^HMG%Su<2uc_KtKh&_P zakzO)%gCg8eUAL8nki7Xem1;ka<9GLxxh2%Ug=w1xwd*;&HCESOaR2FR5c$UCZlUQP0vkw-Q)* zJ_8;jF;AK!kB3n#N zy`Bl23KU}|NUBRF{c`FWr2WF5UOijt=jqC{?|ALeG&e6UG_!CoJ-VesKBOS6b0cbI zg6hDOG!iP-Z)yDIh5WB@a?&16We>(~;yA?wd}t^@)RraRH%{V0q6Qn+OWt`uuZq8j zSICWp%GV&xq_j{BCiZ!ZuYvq7hX($D-p@=(=s^bhu5_U-l=Q8j({Z(Q3MIf~Cu)%? zKr)#Sq`jH5CP1VN6Yxjy$xwi~Ec~=E&Ic@C8`M|e@W~I3`3P+J2UvFuzn7PQZ}wT! ze=CB12T3FlVmuNBRTF~4qfm={YD%Gao0BbwB~ldZX^F3A{YNn_ZY7(j%HfdpVj*id z8VXvcX&?&@BFpaSLE5Ym-!{!J@=zbE>ps-91=Nb^Rw)r!36q!4Ye=#D`5g(BRHuxg ziar)^Y<*A|;{9!1W(aNEitubVa!b=Mw^<{7-@K_D0l|Su= ztULT8U#hwExkTsE8u)WrHp1T!*9ir_{d3tlS`U8zYGaI`i*fcR!6pCd3B9{4w-?st zftbTo`;zU`K=j4i&pFjzDL1nrb1eSrjLA()%?tAuiQaIgZ}2}!sns*Q$0@EngFHZ< zC_r192JZ*JU;jV;8j{{EBUSVlu}(45nhD!3#-SwscU9!4wKwE&lNKaqv$5+n+FcUo z^h#wXRph`F_`EMQ$B&GQyE{=k?VOV~m>Y-n{Pa$`wV$}!GP1WPqNQ!+EI!Kd_04^E zOlrq?rez#u`e_pg!*!swf$xaCjD?lJ{o8{<@v>~b`lhh1J3T!C#-~$W>w^43P2-;S`p*A8 zLPf11>m2w4rn&`MYZ@xD!jc5cQD8x7??)Aw4muz<5QNoe)rI)=-^52q@S0dPAI7LK zX|63G`idv`oo(4UV7cxe3=`EpfX0w^;wnEBFM?OQVD8jsBLF^p97<^`MhtVP13|1o zcxZ}aPT>ThYLk`^6Z#Ra!uGVwM69}rR&9FXtRKa#!rt3plZ*fW9Sf?f{Ih4 z!$Bsq@fb3u86nmTDq6)Qi$Y)_iw5UR+sFlKRA4HTftx{P2_d+K4h}NW4WKgCkLjqr zQ!hKc_-rH^ZrlYG8!@=+$;0nM-+X{!JozbUT}&v~T2a)8FOLi?z~yoxAVGb5XW7Jk z!HW-tlmO2iF=Ot<$yR)4rfcX){LXR@N~R&we(x znVK8B`#_$616)Or!K`MlsA`ZRfKvpn2H9oaVBP>l(TkJEg5y`pksdZDf7&sxu`~=j z+vZOc-<^MUSn*!tJ?Ogw@eAl{Y0v$U%J^#W^ymw9O(>r3o3zGOs`%r>0mf=Ct_gDJ zOd2!7)#%|))>{RER#PBoZ_FjrudL7zE#9j$weUi!6{W25_N~gyoDRxyD(&)I zNtWgu_Z)2@o=B9z_iF#lr1EATVpcM3=+$Z8wLn(hVsI7TDatiw@3(n*r^Q0) zzpo8nfWGXUX1O`3-q@2W{Br`K@oakM9>q`J=}@2LQ2m%AS=mv37n83UUbnOTqSjr~ zLe%#{OlH|seq^NW_4jRQWLrjzvaEpxa(ms|Vk%X_IX=^#MS_DXa}7O*63oZ2eYeQaD#Tc?E!M9xWZN5>3UO z+74FeEzRIyYwFr8X}o}ODMcM8xIvmYmu1;E?5HWF3ZHFuehq7)DE~myp!OoaA!Fnn zDD{6)de4d5dPe0lk$O_1sz@L0QZD#9ActnvIaKHX3L)e&V>a`EeC`EXD8m+~+zJ)Q z2VG7HRMV#gRCLO5@la~TMA%@51|ElxGsZcd-ewTr)wKDtAWs1;9>xb+H$Es#6q=<;6@4N@dea6n)SM^xS!*~? zls|Gta#>gN+uVtP&-wL)dc_xbHLOjQj63D_t=ux)^1_yPqwqq}J8$icMVNwiK5+PC zJm_;eZTece;<4n?!CC+QqcOc}K7*p`kwf@KG$5+sedu~(=rET`ZNXO9#yVS6G81`~ zfF-KQE)2^mh5}ZniO25Mw@t%I;52%LnJD1!V}%duV8d zS6wTC`}8Q(C$w9--&r!yh)_Zy{X`kTmx620n1~Y%z1d46ns%a;lR+9!-8Qk8T{_46 z5^ee5Ip%+$0Egb5G}w)ZaCwnJa!T1E86Ok&uc1U4_N;A{&F%{DD91tA?wkt@3>5T+ zzJ}_01?Sy=abY;7az{UM+v48(lc`{bMd%6A>KA?{J{0H=;xp=Qu=zNuWSC!}PRuY|uCa+IS zEy+N&jT%^fI(=R5Sg}VHj=hAsCt{aPtF1-s#bj0J72^qf7$pn)(N&>Kdu+r$C0lNFJ2F&CQ2y=StH*BTjbCgRRpUv( zsvcqg_#5E&X>6X8^so0f8K#8D_(FpU2)0i3Yzd@(0e1l{P(D321zgkjG~>{K1cxvi z$*7vBr2P-|-0#8u@u?Wd+9*it9jH?fP_L}894n4*%FA7g`o2PuqOls^sa2~&Tnk06 ze1bTK_SH)!MyO(~5R(D}8Tw&ioPNmf%QqNALkBOKn8IDnzN|ij6)eCN&TkLTa-XpK zq@F=DeOJ$i9@&=mEaUT(0pvN&g#hK@HRE&aPU2O8)qOI^C#nvD7Sl1J72`zM!jPV1 zT3TRE&(LGaen#|CAg(Qq52ojtD5+lB0~5reKc>+vlChh5IjmNINvcSV8I_M(vhWcW z4E~s4?kz0CBG!6hnNDehBj8l^?XqfgF1`iKxmUV8zWBg0A)(J4D0lfPW}!kQSdXH; zE8fG9&gorH8`A^Y<8C#dU(|b|l^ZIdf$9{SbyG}_D!ll5%7?nx)81%^KwffB_iG?~ zm7>^~5+(4J(urc~NHazi$+t5Qm>9&DG7nMnBIO)T9r`}X;fs0#wU#@WJv3(`E3VXM zu$a9Yj@l^?HJD-cse?n_Zgw$uJA4K>r`?RMw+J3}MeL|Z^JwiE69f8UEH}<<+s4c0 z1{uz&On%3cRiH=iAvrnK-A^P;!#-yB$rz{ucR)|<#O=@$O6{z(81QJD8ZrRTTvVk!PRSTQ5 zBd!S*T|br#D7a?~DnYSjm&i1Ct4m}DOYz84$`nbIo>%rK)E+Ka_P)u;0KYmd4$PT6 zLOOiOawp&MB+c8EO1)9@v)F4(tF9|}U-Sv4v}@=1rJjt+ZpA!9#Y@nGX4FNrH#!3e z+WV$}KR(cGC{SE`5csBy-|wC>w5+1tBqc=#?%smhank;|0qK?GWsmfO<<|^p`+rDQ$3!+SP>SxA-k8 z%Cj4z=82bTC3AR6%xA2m40E9vAy`JuG~Zhr*`{rgIBQ7xEnJ39!`YgS1~X^J5#vLV zCvB!|>A^hPVd9S_!#&uj^B-F{ogbw@z@1xKj?EaZW%4H=x_6Aor@5YsV1V&#Mt*}OcL)&+rel%nBifDrg8xGvL4 z1yR-qPaY81WCD9;un{}al!IO^50M7mJKZXc8~vEyK0z1JM-0U{LU_{w_NdIA zp|rx zpw@*uYw%6@NmWLi8TO3?wdpgUT|#N>O@=EnyvhoL0U~i1N5h-qH-;)?8H2C@7KnF8 zOc5Ac7b9SU2;IWf6Z;CyKj>B!C8Y=r*f3+xY?U4_s_z~d^y&1XFJI_!Eob5m57g|z zh+>SJz=oT?CdP`ySg($a($8kIu^2&MLySyPPtC&vsd2}jK5;|I-M5is11%63Wdajf zzfZ_=1~;J6ROw0!0ksJlp~%Sh@CkVXmPSYJ0@xe%^WDYS4S^9~IMaac*^e;NRJAj= z4ipssp~?qw-O?_2Eb=c~mDD-hXz@T}3Ph&L;)LYAIw;zxXwzm^_4Jj~T4gkIra-{d zQqf&82dA-8QUHTZ!(yh2i&EqnkUIhPHFYJa$TlCH98J(d`B9KyzK=ciE#0BO1F040 ztoAR&$S0uFBM_L)KS^F#CPgE1k3UC&ep8Jak|EhAVJi0&d_y~h1(2Nosc=MlWi3G9 zn3mQfMZ^~;W=TC14`l{56J{aFqFxhj-q0_ahn&>8Ez;5fk5VcSA)@V{AHq5- zEL)p}hpj`cO)7TkfXtyC4L*mhRaLzDLhB0YiGJ0JF$?u}N}yk{Jf=`+MpQG-wW`5_ zCrxpKF?zp4$4P;HP+qx*)b>&SS+I7@a{aPAkeIL$V24yjX_ax`8#J4sprRTjLc3Tu4DTm1<;vzX3`W}Jk2V4$t+=Hzt|X3||julX%`B9`M(5=1^7 zRezz0=52&VsD>NGO31mf#*Z!i25B^1;i-QhA9jiZ*`)OuX0?H>7F`CnhH$TbpSltL zD(UXkOUpXA$F|C&BzbrBFE=+kA-5z5BSbEpSE1gyk>aEvQJN#z?HCCW_GUKD%ck7O z58Z-=JI&<2XHL*>LW4~qo0C%tLapLiCf~{*&^L}omC(dU`Q+dxM$=tJP`EPc2Rw6B zp<1{IS|>0ZvNlI1rWE9Th4OoQQAoIkxruc6O$^bV9ClIdLGGitAGLeo*jMeoxA$}I z_wBw#yAlER1vBxha7VIE&MD)TxiPE7*1^U!QYEfDdYrclXP4+v^DkiIv0bc3%3j{B z6JOGVV|rybbC~6%mgT80j++pj+(l3x%`dlKd8H+=cSGZ`?2_5}NDJx{B^)E29hV+K zC@w0$7$mNAUWS*_)CqQ*zA$AErYU1HAiQFEVZZNf@`Y2cs?svPsLBhy72<-FF=u1J zQ-2QQKs9*tAq~~lblVYg}RHzM89dhD@jgEqz8dc6P<)e&vF|vQrNa=+eBox zHkQ^5Ap%M)+YqVNpb4s@JyEf2R+tGwYZ^BB&iqYq_0b)%>LW4ZmfH_;Iuc_TIVU_F zYlBj=`aA*KLr>DSM}w79rjMrg6BE0$No+dGI<A7w(BLg%nNm4qBoT_OKvoI=mXSiY!+^rw+mJ&+p0KYTS?44 zRK_u&L6sbdo-wfqU2V5YTw&iZK1nd98rRpbrFNfrkY~>i?-w5A(L6?f_+Vf11ospi zzsr|FZtsewd6uO{8Rxj*{n@<-&yS|3Cpn(;X%sw$G4gEDzAKrJkWdPgVX};PUo^-x zK+qm+qB?nz2w8oL@&q&?Sw(UHg2wI*Yny1TlE;I5GeLb~3G!K}ElxxOHKCqCGT217 z9oG0X7bT3}_GOiKU?rjTVwybvRggIH7Y?Mbq_BH=L(7IF|L05xFkyylh0W{G>uSss znsUS+^Y|)8cK*`%lwZ>e>k92DIt@)oWV_XI&L*8IogUAaJFwk>=6M^vb@OM;uw)?D zw4xCh4fja!pClUG7)~Skgx8o5jeEO_nI%tPKBwclq%lDw@L6Z33@dWc^Pp6pOh)wO zX`E@f#$pxn{}I5~ZO3D;nR(5pVO=scm=3o&7bGAO@DA)j{=kV9(TJ;ITTsP?a|V zUS4w5dX(bTbWo2H zR2k_hD!Cz<72djk|EiMf;feRt+A0bR1~oBGevr?jzzU1ToO!}7?PC+zy;AAKX}UVk zeN?EQFsV`Dq5uEc8X$$WWQ}WF!#M_84uCI}$(T5DX`G44#>Tk+Ze%!{eOcF?yBnCy z!^#pWn&8$ADl9V%b58ow@*~4j`Z=66q zkr0(|f*MX2nm0Ce3=BQJ2R!Dh?D+>ofezQyyx^S}s=U)PJ-_A&d>vhY>{?%b^ZR#V z-*;Fyd>r;!fkQ=yK=jZd@R(MJHb~JYN13b>0P32It;o!`R~ZV_n`xx3%qej$l{EM2 zY%52@h-EJR5v8ol$&P!q z@nZ~(9eyjPW~RTGXpCWLs+bz?z*psY6qz!EQOXDo$UOMV)S4$c>Y+TLif`Br&cK1V zKJ$^+;OnXOEGxD;CP=Rct_nuOwSON&+4Q%qFVF+Ow|NW&5>Q&n$&mb$Zb%{K=?_^@ zHMYIMj=eRLWv4J>pGwUQGABCEX=*4s@!xo0sjEw3LyK&VuFh*H_)Ekb_{JK73G5Qj zzx=nk>$d4E8nxU`v#CuDu6_mQgN{d%bAKW)|K@1(?<66mA!YEziu}>Hp2{-2LaP0Y z8ZnymnRtB~n99Ju*GW`4!VH0mFWK;Ep-S*IH=TP*u;^K%8ard^=-$0kM`v)MWPHMp zT2gOU#5l}X!NjArH67i3Xwv9(o;I18uuDtot%`WqjNVzLO@G9!)! zSKA{E)+iAD!$yKwu7pPZ(<{Q9z6lSJF{A-i*naVY=O1bRE-m+UjUlZ@z2IE&FTqQy zhVbBDO3Y&olXC)Tay4V-*3Fh6t7)wBtu9Ev_fp2hDhs)Jh4?uxC%(5Mm#So)y-rsM zFeQa9b5UUwB531BISUtM4z}Rrw+W($OuZ+sSC%F4)53^R@`KJ6{b? zSd8v$n#LsLc@n2t)IRpsmyOki=db*FU1`}Kgm&-DuXF_MXO-;8Xx^q#{_^T~Vumg0 z1S`j9d3Xww6;kA^(qheF43N4cg}u>t(~E!#No1szx5KaTUgzGmI>>M6|QbF1l9hqO;8r?Usd_-!F|8louI- zFovLAa@~3bJ;G6A%EE|i!G*g^3U>z^f~SjKI64U#3Py%H6<+&5;YxJL%KU+%C%#)w zFWl=IL^}r^y+yZ?&VZO-x0U)1BOB1J4J?)5?K#H7_-GtRo2g_3zM(8UR-6VN`+wx6{u2zN{j)&A+y+o&*8&_$`pMTBLP}C$U3uQiX(inUZ>0n z5@~Y9B9NQ^|8LwJbu5!*PFP1$Wl|t5{s{V8&ziw>7RB(?O%Sp*v1R>#{r|?*8Uop1 z0TjV<6JU1e$|m=_4XkIA-_$@g{Y4kUccHz1w1{FugO+?0u}vwRL`zN%5&1cvEXo37 zRg?bu|BZ3?Cz8%&hJqopS)W~2qX|ixJ~clJo10IQf+U~Z!k(*ZDRAvTh~dr5b}nB~6gpRYs#7h}XW}32MZ`2%%1_ zR_lP^j%Fl|TG(^-EpCT0*T88^gz8jFb`A;o`C)OsmDf8R`?-Dx%hnLk$q)l~^oCz_ zon~awFNUcS)5zuPzb#jhFNxAw8fI`*x8K(Ef+k%7rV8aF&IgR?1)ZyUCoS~4sxa4` za<+!4qH;#A{+y;`MhdlxBi}YpF;!*Dt8lApI#So=dEJaWDUv2oC3*NAS}|tzPgyc; zRdchpT9$xq|6sx-IW=W)fobl_nUctgOoJg)I>jJ_yci#FQ!nOu@8@WCD$f>kUjYApAXfSZNnAx$Df_0 zvnBC|QJqhtx{XZTuCn(a$9A9E?w$#2>L^krppA30x#Kj_tc%$36s*INu0{tIs`Ms{ zS!Y(`NEMG_qH$>^3a(^M8sE!XonMg^aoL<3MFEsyRABA~K~-R){!!=TKVB#EFt~q~ zW>$RgqH0Ywgxfw(OnVkU`(Ce)XR+PMtmo~w=;F^A^aj>@dx9R$;fnPLrkVyYn!C%q z$6R{lAu8~xkQ%o&Is8u!Ouk34^LTb4@4;lwE2}Qj6RG1fqZJJ-*vXz`HnAte&IXo( zbxt;!Lx8rP<+#%1YHC4_G-o3Rxuwi0EXCY1JzQ$D+q^pNk0{eNd`kM}3~}a?j8xg3 z)Bq)`ky$`j3()1ghPkoFQy9`hC}?Agg|rrmwJfkxZ#_AV_6Rj?abtVZ@rZ@?aH|CAl)RB@_viaUlo zf}bSSTl)T~yP|{751v(?eW-cJ1%sXu-dRIQe4mPGOK;CsFG`rxqh6SHTR(YJpS>of z6@%8lNIl_1Bk%szDV{e!b>$mk+q!kyWP6I{k#bZV^_Wh0n9I(@A<99J}Ws}zWwQNpe3az?*e4)<-&XCw>K+eu2$%q1#Z*y zyaQteK3%R28xjnUd~}q57pw<6X{k9=J)aw-e?j*$eJ z3+~BczS^91lE@qd>a$X^>VeP~kG@;9D7HTz&9E~XN)XJq_8aqfA9w+i_-WeND&=t2 z784!=Q&yC+s0xJ$cH{O4~$0*iyYmCKCr>$5gG|1y2beKw|W@=2u2UM#G z6zgAqnkcl9EMe9N_l413=c;v4L$@W1Prr_8{nQ(E=eRM6Ew2!2z4RW7#S%xZd^sCF zB1pfu!OY0X;g`A%7n_w>*j8dn`f2C|rud$cA&fILRgfXA)8?z+U0J{a&t+y+A6RlC z;OSxBF=B=0lS&Qt0MR*O??ZRP;X@4#hYpk7W7D&X(gFfY!8ojSK?;FsWDWOuE5JDD++*Bz*EXm6wdPQn8l`Xf3dU=sjJFNBQiF&F$YI8Y%-pgFT zX0&K5G9SQ8*PGB8Nu{gohkrby;GZ)YxfLz zFwwmBQ>0vo*w@P=lFnKj3O|LO7d?lb61k0`BRz`f>Vt@9h=V&M}mbj$n zMBY&>c!T)0F^?L*`zdq8Yph*F132O7_%g_{DGtbF6V2ycsY19$9`NRvAxo?_smvKM zs=ePsN2syH$6XiiU}nI+git%WQOz5dT6rMGCxU28QYp@c(vrX`c@>DR5ZT`hgUq-; zZ!jS0W+K(yP+J*PC7;~I>r;onIsA{LTX-JA{__k_Z8LzQW24ag@d?F8C!klU@UYK^ zN^P8(2(`#t_l@mqeJQ~wl3f4_O(bgN-2^I?e#e_6?SJWgxmNr&H-o!RoX7Ng4c01@ zIl?S~lCLtS0MG+~ryp1XQSeY1@1jm00D9 zpGZ?52XODJe()WQKdd^^{dPKL#;lAFb3bbSP|X>z>P-IVM)EJ$HJk=nkUZ>3ki6q8 zZ)|3fwbTQ$^5Oi;foJKo7IH+zwd@O&FY8Kqa#ddP=h8pFzZadnCJAdlBY5}jOFDTd zS!&YRBzD&1qNiEvjJ}))Y&QErPUfr4?hgu;EWjyIi2`351Ku$L-suBhid2#Sr%a^? z`Y=nmG|KF7mQ^p%n=yLaFBY>vfA%ch^c;zw@^2OyZT=%0uaAZjGlu%dHfMl|{&;eW^?FLYbMk~Wm(fm5dbZQsR8#A1a%OANo#?r%WvitoDI|j)nmU9@>pqaz|oR-&^v{Q6Qiahs0vBu_0m=5C!I&EgOBI?3;RQdQdnVU8#s|Tit!5Yc@c*gu28{{JK(dCSDxO;!Ey|EE?&*Re>J^CwRoWmMOHOW zsf!Wb645n;$I6kabRkodm~t{bVOmj{YFU<}P4AwAi4v7Unqi`>p)73XUcMcoCu?{1 zuE7fu6o5KpO#hD zmzGvlmn|%O0zH1ZNHENmbB6_srYN9Rd27X31$cU&&x+1ZS`Q?bXrfRT^=4gqBCur> zzg@oM-^GGG+;r}cU~%R~iIOkO5GeVQjqB@AX+RAb`x)?1=K(#22Ur|<%L_1QW{Q2fRyqP}a#(_^oD> z;oeRAF6C`49Qk6bq_zDaVZX2HtsBIO^+tomW64(tfGu?Tu4~Hnt!DpJ)@=+*qNJo- ztP>{)1Cq7e0#59^nn-xf#NEC$Vvar!Lj9x`h9_~S9*Rf!x#!uD8K1brY#ykioTlh_ z;6-U9ZT=K0FH{@+7g5sU2xX*r;*&`U8Lvj%16LAa7eqxYTYfMcC=9Qd-yD4RwY|X> zdId9P*wVr(Ho0DappSr2ll)6&Pr@^QNmi@uI=61SDTUjsxhG_6!k(`S`&P?WYhaB^ zt}3PGXXn5VXI;{F5_48Du0=ICrN3U3KPBdth=7jC-sAGfk$Ul*?rlpA2%*3IA@I7u?7GR~{zp!48zp`AGb$ zq$t3d%sL&vK5%+-Zb2Mj&HOZebEoEb73m|D832kNsiq~xioEO7)J)OLr1CI;Gg&-c?vN< zoC5b>Y5vyw1;U_9igs)(zj^f?&*#HhfkQv9;sL98vO^%c?v?xf;vHLCh6=X7%CPfE zan3Qp?EO9ej2|%4^K5;6W3~PdbhIUVgrxk4S=!`ta?^MM4a{4ae)+e}^<_VNm8w!K ze(!c8zP%#3hn`?()Pk8~hWc+bGtbkqT|)4Ox9#OHvNWzb*Ot%t88+oFijECtWes0R zbd;j(Ock>Rm5w+V%jue!a=9$VN7pQ8WGUIHCr;+aqX3^AKJAx-@5x@RbYqL%cofZK`CCU z2Gt&yLYoW}iK?Q&y-y-e&#ydX01X&E&S^A~xTTfdwK9(MPZn){UZ*BOtyGvj23xL$ z`hnFvn#THHX3E~dzGJ|&g=v}sz1ct5CN?Uju8*>A2sm*g^}lt$VU#o zoEz^O_b5r@e?jpig(DG)yK9Ca95N%U{6f`)XakE{Y4ABHV0bcgM-;y38TU*BvSfC6VW};o2K*kp@Rx4*J4=vK)X6Z(w8X-$UKEmR?vYale_zHu=e ziBQ5ca(4d)iL;q+EkV|)Ol)B@+j=msa(&WtTll)fGkxFkTPHtpD4wnlLup!S?4Wp! zdqu&L)YV4Xx47B#lzZvRYBQ%)lHxaCR$h6F_T!tCh~PHzj469ZMr_H9$RQ8=0CHoU z&It`8+0N8i%^$0`VwDYDr^=2^Tu*U(eJy(Nug`>8^3l8Y?bpyg|CSnGc}qi?xRCMh zq9!GYF8q>9%l(pDV%~k5+lsU}tuO+QC`TTxY81SDbbd6HdB%{%JIgBTii#@h%66`O zx>GRB<#UGxJAG>&4<^Rs$3xpC*t(SFsF)ei@_bKxL8q?lk3G;D0U_xub40s&VRODa zU)-Xt!p){fdsa<4FDg5K0hSGRCjFQW;y`=p_LPTQN;Mut2RhcxVj0dgHGkV={LjBE zWH<@dn@3NKA+2$(h#}_u4P$6KdflS&hJNxtMZy=I$%O)-KUA3}+tOmdb%<;QOu4*( zDYD@@3@x%P%Cyja@JdbBypxf7dc9X&16zR_Z#_Lye{x<|&6SeoQ$-*dESg#bN@AOT z4t{?cF3Q64ku<59Jkj2kx=~qO!GqB2L#$gvH-A4ju@D1dR7RngXQPVMq;f?b*(-yP zv>Z@nhb;;OcBo7`ow(8h!iOucw{m~5DPFi=8ule%;hLPty%Wp~vF;NsBAvmV z2h1$jhmmVQsV?0&f#S=xRafX$+{7Qyxg|Vfo2$441qTK7paTYs=%4@jEUrVrcbW!n zJG#$?EQ>>DAA0FnECD6BLQVilK(@d6uBI38tYkp>*cYJNV-}&b!jD}zQQwKMdqE?{c(|<`|1M1Y* z;05sO)39t@NEXmP(*@+1ldMSrx&S&ivg$)h7U>S z`(#+~IiDI+P~GeA52E4I?%34d!c2YA)ikz(?S{++vy3kV?7)qu~w#%5bLd z%yu;No5Gl%(I1~mr-fHE^+TstfX|LEu@vT;Ed@^NlUo3b%E)9;SbgIS0u+2a|6tDc zwY5#-##1mF9&F0>8_IeAG<5lR`Ngz{!AQEU;Gd)`zGA?Zd%X(1Y(QW;w3Gp5+r=u5 z@JmB4ri4GtpN*v-T9M%O*O$IBpbhuR0>FfVrAz6Ib8F*k?DqJYwdc}R3E}qLoD$A% zdw9azpFaZtAjv|G9L+{QwitAV0>t_P4WIAU%#NBt%5|O^WKkJJ29-5985teW3oq|3 zsi?24tf(*X`!vp8CgzKmW$%pg_Kf!Fb6OE`xK4VR_1)TwnpWon^NLj~%t=dwh6Xlf zo==NCNQgaO}==>zNqIS}8@hdenpga40LLChv`?7L2TaDIghlG{g< zu&xdW8P`|TK{k~vJ_k}7%JoHkZSh>SSS`_Kw7=ljxLX!~3(O|NW*h zr1jrcq}BMqJb70PW~T<5DR&ZN2}O!?$T@DfI=Gy{QeyutM#hk0&Zxb0X6rU+>|-Pe?_T@m2BA8X+ipTQ+7d6O+ZuvNuldMP&@?uTW0I zs#W(J<&DqVK+5pAeEb1CTit^^BC^UrWK?r2hG@XQ9*y_cC#1ZS7Y|OUps?p&8Ft0s zhrq+|tHV6`k!;&KK`%l04G*nXctvyOH-QqJ&->va0`xlagJ$U)FHF*pf!_kgOXc`5 zTbmjU#G%S7`dL3e7bXV@C(0)>X6IJzJQJ$lwbT^8X7!%|hV9R-@bVhbS$N0-z zYdybfSnw?GE^urteE|>pt9aKcB6LAMu>bRMiPhn>SR5|v>@y8|LuhNP{pc6beO%-! z6$it}U|=}xZ~Gi5_|E&Eu#0-ti(b61gJ%d(hP%Ue4QF2N_CTBkHF>i863ASos%N2dS$}Ec8v-A%1S(Huxz4ZZl<#%$s zQ{TbGC|RGpFNqJT2jKRvdH89>O-Yab z%|y;ycxUDB9BtpW$s#`2_?3M*1zi!S3m^u$6lD8BrB@K1rj)#{lq1WzEiLXj!6VU) z7bsOxG_0OOSsLjJ+&X7%Oj6WSPI*~qRMh16cG!vm!<>jJhp6adN(04F&Hu|Q7 z!iS_nkpTh)=aa|(S4gEhNEniXj(fCI7=H0-K1&VgO#mYqTEkv|&5Kw<(p3I&kEBpL3aMJH%% zy%f3!@k97f5DD(0H{!$ajdbX!{V<1-3=OasAPJ_p!?}F5tdL3csvpomf}$%$+r*J{Kf7vVSc+u%)HI!@vh7^X6Z-Kj3gVN?FTJRO^oVjEd|@KaGDIP9T!;D4Z-MaetRK z?8KFvq2Lb8*1t*Yo7p*l%8^we1+-FHGk>%=|IhUNwQhKLA(gd_n**x$66AO+UQXyO zwfx#SGnKg=e+s*klnQ2rTq(??bbde|6Aht3fqY=-Or5N^@`Nio>4)9`N z5cXmMlAX>k?_VYU^VhFV*J2W;^ey-nQ%YLwbp4t*T29fKRwvAto_cR3I9Z7a&?>Cf zFB_~1EeWHX45lTfD4!c+lq7|ABdsDpi8**le=8p*DH|1TWrZ6G~kiaETe|8dQq;sx-`X zIU|XRJ+LKCX&WgZh>g7*)Cam`!)zR)Fr{U)45==HnTrLnWKbAKNHayeCT-@;Nj&1) zOnMz5{De3mNbbY91hdPK%E}Hdr@$fXVO;$9m0MHWkNcEYL?jmFeZqm6`h*1}h|M8^ z3(jVl{SG@iOq@dVMj(exf)YT%X!Ng3&M4UaO+d?5h@nX?%!BA{8hZsxF7;*VVMdF# z%(F(H1*i|hMU^UpGBMpDG@9$_WOPJ!} z1I9EC+emIEc*G8HvMK}CXL;6?X&Ehg*q14lSFkj8dK;9NT*%NsTU!FYX$MKR4j<0; zVQOf2^!hhJ*RN1>ZO*K#PK>yfF)1Qy!8c)cA{B)+1Yf3AhS=;B6$@AN-&pKyTcco4a{Bc6$tjwdBbXCvn467`ynY=m~ zB6m#)gwu6%ODwluEo?7IJv#rnCrQ+trv`i8YRfy(ekN~Y!ZMk6+83_xXj`O{Zju-D zaCw4!)s9ZGtBpflZ7}$1d*i~B9TOL6y$j1_U1_e0p6Y`19y5EJ?o`&4J(J2d5eS=P z(r0BgN~bsqP}}^+Oo=m~9Mh(JvjB7b-K!5iD^3EF7#qE~cwBVP)aequZb{>ulO0Wq zwBB93`b0;>8g=n%5)Q`DK{cVM`tE{2%-INfafM;O$I&C@KmL6+PWEr5*n>;x>EfSk zqvsPx4*N4_N5=f`Rmw}ohhvw)eEIt3iyglASl0q2HCECKlwp8v^W<#G{QkVeA496& zpD#egAhe~sHRtc-;<3;@yZWuw9_7A-KEJbKq4z-nXL~x+$$hi_1VTX-(H8-Q47bs9 z6!2sUJvcD>5FrdsyRV*{a5Z{1y|=2X8{^IaY4f{mn+b`LzSWsX*nAPc7I5xf;j*-4 z&9+kC6i1!Wmr`Q`qM>&q$Pw>}<=NbKw#9aoXP0-xrqg0;>?V6nY_Hy46nj6m$lkj& zwm7!QLN$#mzn7H4+n=Pk?X6}zytz2IBDq1aYnFZ^P&z04Z>DcX&YD$C){)y;#= zi4Nr&M+W-@9xwVw*kWUt{6$-X)rKt-bsnf0vBR#F6M6i0@F#p8A8k$oUFd1Evgu~% zxn7_yl-8KPdbZdAaga1p`bC{XP0-KmLUxceQks9w<4_HBp{GNYL!FJD>jmoK4TMl= zo=i5`5KZ)DihwOP*p$eD=UU7*NOqi&cV(Cy+B=XWi>M4!-(b21iXp8Qy#kvsoLUAY z@8Rq(1mMAkz8Dm3nE&6{VgtlgX~&6{i8{CXW>wElD37n_K)tH;pW2$RxafLHVFk-YEWHuMtE1#U+i1eCZ!lmbD_G7Fh+QR? zXJ}=j2CZnbLdB5DHK&QObEpQ|3R^L(!35qQ_tV;oBDSNklChOCD_PDGhBrB-TrH#;jyHB$ak>sY@ws9&!-|kLL=7JO1BnDSLY_vP^?zE-J^dTd7N3s&c|_ zZh}1&u7SdrMN9extbp99CBtrYV|c43u=U0@*IetGYh81Vx{smm1HaO*_?3Reukszw zQkJtsWU|Ln$bDWfLQ+ZeC3q6y`aUwxia>mf{Tt-FD9LIyzRfNBe-C*>%0m`SQb{D2 zPTo(Gjrj5gJW8CLYhq4(=@9=g?lZMRgGw8@S0N{cLJ_L|~ z5Da7?2L&hv<+(&vAgbUm`!x3VWhMRNOg1I`a)%bY{y)}w{ylR>O8-X_{n&5hu}E*b ze_#EtLyTzK^HLsSc~9PMi?0ZBbDWWP-wFUSr8}J8m^T6dN9?*VTj%UgAbN;L#q32< z6%KD_xHrpixRlE|?^EWEdQDKPlpDK&hrJy)&CuHvjsPh9XZ+@#@JMaV44xeEDw0IK zu{6*lNi%_6eE?06SrRgI2cp~k#LQe||g6ro`yNVzGZL2P@6F5h_%E%`A5laI- z!sQ3Wre_7_bMU=3mHQ43B*qbjQJAOTiq|0JB`7#!HMFFcx+7T8fE@8E9&J!iqRj9- zc!cB4i7|!v;6%KGR64J+Qj3WwWrKneo&GnlWEiWVMa^DSAqK!%C1N<*yR3+o{@qkv z99m@g3>@()l0?l|9XNysN61Vb7H!cE@Rtq}ttyCI@V52?c-2eN^#+p$uY&v#GxqEQ zXCO8J&N`z%AzCU27QqZQSXOWv*ABSLNDB)EC(y9dTNw0Ye$GCo>oEVing| zV}UiW^>Hs^mKr9|UWI2TF*p{n1_m_a4PHrkmC+$KHtQ?X7O{lYHp{kJmyJa;^X#cS z#-bx;TGr3QY8>FzSOf!_@dn@0g%%7Q>$a0(U1?z8ah@Yf-CDI`BF83%UEJ_J z2SstHq9o<4YqO&#jqEdZInG!FBNS(DU-N2AxA9=duI?OITQb7P&E|puW^uCk%7kUY zD5xZ4OJ)y>R3@|5&?yBARbm`iBW7Ck{2CCKshI4as8Dc(TZ)!2VG)ebcs+q(TRVVD zYfGy(!fbBH0292#RdpO-FG&bqbCaPnJ`8Jn?r2B?v&vFAF$9*@+o+B(xzqF3`fj%KpYb1NZlz^_v( zJmdLH8hPRU5P7D@3tz}*ardmwxV}!-6h%xuK%R*Kn)%`C?g&OQXpUh;wQl0PzY z_iPEh*n~$vcDOV=q6vG0ti`+za_F|Zi_w1cAO*-sm3Y+ddY-eGaWbPW_8u{~{l*x- zi-!{K2{sj<~{WSf#&hEM~ zbJ(C{$Vk7g64qGhmIucFU>CMJR-an=4>bmk|CfH!LRN}w`h2;@rVa*FCYtN%JZCtS z%5JTdB>2q%|35|O-(O#*+pzXsaO>Z9q5K&D>+iSG7z#5ApwEdp@vHo#vWZjXsOxsP z{6JzLSOjhOm&DE*dFp7|R-bg4__RxPjGwvqV>HLCYeY8I0F1tfJk`}hnh|otj?}vP zfyjWcC}}76)Xr*SR|JA|EO!yX9iO{~OBj`BhR^^>hz&C`!-hgTfN_(VJ`ur_>s`u+)14oTIe0?Gi6~Ne<%|ko0>8sU2=< zZkPp3&TQs5^)+8$t$*v15l2D#8pZ1hCkp8F3s#(Nef>Kg&U|^`3%Y}?9g$96F&)Rx z&w4receMD=vwSkQz?5kk1_Msf#fmyuT{(%a1WBA;5p}T#F>Cgi&U%GROLBl`Jgd(f zPX9K8Dp%P;B`AT5XgTH^0AYL6>7vWs{5JsI_HX#D^BdphD>nR$ia!DF-`!LTuLlw& zhb7g+HQBaJ5*l_fSMyig#yP541d(<;7)+Y7ZL-pTLbd~-J)alUCw(x$%SKH3p5HDM zJ6Bpb)I0LUfJi^4=72_19Wr0!jAGs95W&`9Nl6VWa^yT;x(f3^OaR*dwu?|~S!*{Z zr5Q|=F7hJ&WUX&7l*aT|uwYSba27_Z;T7fWJc-f&9Fc*+ZV@k$agyur(V9f5)u1`k zxZ19fAcN56z%*;XuqWfQ*U`O(0>rZdUF`{#;Bf))05pw`gSBrm?EL!>Q*7lp!wj4? zrl@+RbQui#4?65AXAV`1SJ>{xmU=5}I01n`G;ekjT_6Cb0=IP?ns-kp8vc4d=qfrk z2sDCxl3>KQ;q`)p`B!nb857=$-K!|OB`PY{OGbQ{Q`2t1IqU-1sBe(K)H|k_QIXt> zj7;oLcN{K(17ql|0t0filwP3!2-hWe$SRPEul4Dk$0vM6+;ZCy{rWNp7}5!0yxv0; z)&?l*Dzi{I->6|}8^m=$`P)+iaclzUd%(BmH%s5hE`i55whE6?e{9TbUM46l(=NnrR4;a5{)8RJh0vdv zBY3~e63iB=I^Qf9bH}vFe^2lQ3}Q>wMv<5llL4g5RPlDn*s0SJAW$!n9U0t6LhF($ z@+qg7_`Pp4QE2Lx0ygN>KEY}&pMH}ne2vqg?*Zt`4npijk00G&8k}tqZpScxuh}en zG5o=iFF>UG6NfK+AMCn=vfJ)kkv0n#TP{1+of?Fi!S0R}zL*aNlv=bxjVD-72&8VM zY?e5iaWMLG5-LqsgehrLPPja?386;I6zrLiIt%S>%rO~nTG?DtpzWK+s6#>d9E6_K zp(<#(<+trcIMy4n+-eA6ovbfR-zk+$4hHItM$%7_Y(jJ)IJ`^{YqO)K?)!pXe#v$9 zljAI$Y1iUGq?LKX!pd=oQn!h6O9 z8vuLxffgSkF}#(C986WHHq{qifpV{^T^SLLN*WQ<+qLJ4Yd>3zvCPj>aCT1a34lKi zFjE$N+p`oZ#RGUg>rwe4ql51ZR(U31X#@j9|b9t@q3$%CnlE5nfSzS)3+ z2&6KztS>F&ioXC!NAZ!2CC0lH0P@aT26=Dafg2hw>dj;b*`p2!v%ir1s*!i}A)Q{p zZFj1_Xmv6;<=TqGw^XaPs?+D)X;EhR=N32xi@}Anottj;uD9|#6*vn5I5$?V!O+*s{TRJ7`>}9@ zMpFjNwHtNgLlyUWP3*I~eH!1(&Al@B_RMdX-8~>cy*p$VK&Jc(egI(~xBGmw?D96~ zdjV0KXd~(sCXWT92cYuy?#7~KZ5ngpJp7W&&Kh-tQTj6Fu=G~LBiRJGd4Zq<`-4MS z-@|Cgj6@hlAm++xE5Qj(m=yF-^q0_|5ZZHf286f4Goa|c?^pugSnR*6C8KS*Es=ZJ zHyXr~rau!qrt5?KAPGkO$9k4eSLlEAaa$}_0+T=66txK$XKUsIq|DbC`izL9(|LCA zhd8!IzXWj?$7%_o{0ran=FpMOH^Qu2OVCaa%ww0vEo`aAy|3+xzz5d&;P3Lxz7Db& zs>fP4g>`M7zgZ)F2#BExJ_sBTjkk$R8yh_OqE&m8bCS~k`7}-QgAhGdJ-Fa{j6ukn zcAjA2-6;HynMLbzU85Wzr$*4|ARgl&A5(tBb&ikWSiHT6V|wnslV?5mu5Yz=Z+O%0 z;D)XKW5MN^S#+IWoA_B(5;o8R<6XCxS~qR+>9J4GaEKv3pXYmr>e*I*@>HEYq^q}d z_L+VqfA#5GF&6TRBbuxy3M`55WuEZl7m(3!U={w)1%OC)Nb+enGp3yNszbP@AI|fr zv`T+oIDK(%5U-_1&P%6(NW}#B1$ZMD5Zj*uaLaAfANAvUyOS`s_pgV=(Pu{dfN}e7 z_!Vb-d$vzOJTB^!Pw}!J^~VYI=A~6h`g~}5#dN;DNL}M&E`uJ>T7KI+om)J#c!c!} z*%)Na@ib@us*gDv~CxG>ZRPz`I3;o@^6k5_{J~! zgJawGmhC65Ch1ItbSzkLAXc?B9h2Qzk-$x*$Qu9&I8JI^LZ!I_q5yz!G{5u|8S!fd zJ2!D2voW)=g!L9!`fB!fzc>yglb|X@#xCNDl+U^=5bmWp1lgeN~Ad z4f^;M047ZYh~$s9K=3T@W%8Q~(oUz>zhCLm8kzce(Hv#h4E9nhu*8l=00r`|o{XzF zOB4YJD`cge6B)i*wo5IFYoepQ-U#sB;V%kIbl} zs#c0w=ApHeR^@x+6HMg?(=ad(vJj+($CKuN3f^!OO%BrA9Cswc0X2HsNs)Sd0Da(O zhh(7kQaDh59Zi2XVE9|GU154TJU zjOKP3BKI8(u`H`zl))fze<&sHOtY8iOVNX_oII!pk zMWu+A0Mhml28!y}YE%vp%l5ktqvk&FlA6^QflQQh@Z)wTT@U|8diT2TZ4onhv zh}zFKMDvit2uf|p)u};Jo1m4@Q(tu6+Av$y!WOfp7I(5?_ z0J;!5n;u6?eTNp(KuS&-QqB6N_x5o~UBUiJiC$mC;vO!b~M z>20(h3*bflaFq`R3A%387l0GJNXXE1|Kr0eH*I+w>qOQ_2tFuy;ipO@Otv?YzvMB+ z&c-y((pvo>13{PQrcibCSrufr7ghq47;$4_TXV% zCRcF52HUJ--JZU5ZUPl$17b?HPCWF~m0eSzpjO>U=z+%?UNt6WC7Kl#7+P2zKEsF( zQ&JRc`Xc7>mAw$!GonX&Jnhdu)q6iDZ_hoKZrDwa!Yl7cZlH_n^Rq(7!YkKpGo*#x zPg$!i=s$wPZqdRG3Fh;-$>8r?3>l&o8!QjS1HuSUXlv{Dl7t zvfI$>o*`dbQ#1kZ#ZK4lb~eqWR-owK;-*xSC3Mri(R@Zw1`hn{86Kfp4Eux1K=S<+ zbY^&fy0EzX)%X-(;NdP{P|u?aXBE`Y2#ri|pABJ^{o(pR{ho$^5InGV#m&lE1zv!qQw z^W&#S_*&jhQnd!9>Q3Lohc}{sR%^|q(JdrPhZ6hz;I|QfKt4aZi{tbX`QQi1cQmK? zBF^vNv#bK7MdF=Pcps^o(uC%A(&Sd4kRd}ph`>gQl9s1uw2LQKw1jYlXCM=l1`O=E zDSHLh z2Q%m!uEe+Lrb*ldn*+r9ha3~P27SDKerBo4A))=#*%MVvxJp!#lzKEz$4^VDW?d3q zK>ct}Py&N)Tc0_lIrO(GR;XuC=nf#L19Nhp6@Hj|z?+|*@miKMAjo}iwP=Md9SxjP z&rN7O>$BO7Q}B#?q|nzbQV~anV#_^;X&##0evlhLV&)2(!$odDykI`s4lUmeskJQ@ zgqo2%P_!Vxi|(%c_~w)b4|fyk8uxA$0T%8Llmh>q) z=2`ML$Wsz0jv^N`cvQz!sqPo%qGiz56{k$DBXf#v*TjpA94a^c~R$zrC5} zW5+o`93&1-mwAAde;xMT_SbE()S?{Yclcp^8IM3Ql{pw19mD#tagX@2gf{PLBT2=w zW9wTE3+FS)l=_p*<_3l7mY!rKwY5rzB|_vgX?=@dJ^<((i_D88De!s-^T=r=Zm*|x z9_U=M5?;WC%a5y$k-?TaQ#3VCiK89~^fLN+p4`~+c)wfOFc9fExaroWFXPOh`)f=u zD4vk>*IAS~npp|#k1z>=5%IIQ`38ll+k~fEgZs%TThzP(q^>JVRcU%EL!+8l*4f~e zKf>;BR8ckQX1H+S#=0Ojxt2?ZA|3q20;yj#xc{$Z>Lvy6FF)BZ+d*%+=AtmG8_jus z(0{^lwn-6>Uhx%w9!Fj1_PH@Ofw_Zw_;B-XhBD1Ja@pSOEFxg*86djyQTXNv?U)Mc zI0f~r;SE8}A*GDKf!VxJxy3?VyqB;xDeGOvxa?GQu_xQfNF({r2#+im3{KAwom0h9 z*3hV+B#5O^WSO~ZVu#By%(y`|(^E!<%9&hTlK|7?saS&4#d@imMrMXB6AU5TF>@T; z93?jMsrnp;KfNFd@(w2i}5ulBV1P`MJv`6NUH2QCV&ef)lk|sG+<5%<_((U#!XLfB{2MO z<*CFOFTvJ;z5#-&ZFAaIGx9WK$GSfPjNOPu07)U(DWI0^vIS9r!mv<^SDqb(^+1+S zgO3Y+Lxo`pAKfW&4@JH>wyb#K>UfRfBaH%vOvP!8vXXHK5pswHJ04O-Rp&;VfN5~< zYeUD1&m$Ru<4izfS-p}e<^Z-AG3~mzUf0rei-{eN*(R--3s?rh6cbBKQQH+fr#9h~ z3k-%|*%B;SC=Q_tJ4dlbIm`#pHbrEXYOR%re8YPMOIq zrR`(TV?cU14!&b*g07UE^4^e{4|0&*>HP)irXtTA>~^b37oyK>OrNTTEU2OG07Z2i zN4mIGioy)h!Ky)FoFA#W+bmUhPUw(h z0gwo#l$4BCi^SAfSO!heHTab#94Y3*0{}^6^*YJZpu8_W2+XZ5nQ6(E0LsWoi*iTK zMVt|3GbY7o+IlLBB1O6Bbp49M@uIs1?k%Pm$uh+4b*gOCOuos}QkHMx!fd%KQTXx? zr;3Kxb3m~@B4QmTDneNgkU}I7e6>V6OJBkPz{p(CeUT-#dd@5}8{YFQ6U+rE0%S)s^r2#+hsqHz9m$T#fuJJNgGtdHR_2 z@N$0_!d1uKMlRwrP9Jak!IAm$fArjbPL&eCq(X)&5Qw`Q8Le2gSyD|-3U|)&%%A#} zv|KaCP;KuDAwre7$%qDu*{@|v8q>%a=APva5s>@X(@Y89gV{3Y$0>1!nB)g=l3X!ISCR|Gud_@Inmlt$Pb$EJ<)-@pSg-sSHqmdfil37l# zLXuA`hF9g*-m=lQg6xcYtRW8jIa=n;fX_Z-XjdfT`GeV#R4?US_RX~kdT2(AR-3)Z z=&>H8tmH#40N6`X$6(WZlZ{wdc|B!Ia|KD~aj^(O<}ep1XVE2YpHlJ@sT+-4s)lHx zFccK|2?mCcQ*d@+Q=`R-9^2?>?59WD$U@FHwFBt72?j)k*SVKA{;NU9ZW5hS+rCE!9F~RX1VHC3Goz;_v8ksH zX%z*aqg^rhTHrSn%)fG+Z!w2OSdW8d9%PZahZ_xB0ojcb#tiO$u~EXX9hr#&)t$6v zr{aq7OnK`F;xSV^GPZ)8Bm-kk&6vM|v3Xyay2>L7R$W!X4lPg?ELoN&AgNeem zX}u-w{1Jb#y-W}LpM8=%FByI_-*?uOIcI<>s=-9Af zuZoEFC@kf26S6?iUiiwLW#OoVeM5 zHx6owg)50bwqn=U5vfOkYBF})Y@ftq0Wf9{ccs_LW}G6BfGcL^m26yC&|lRUjT|#+ zhuEwA!GC~U;e#9QcRq!Zm#0CY=1#IvXgdS-8r4_K)k>@zyrvXh-(^l3g0K@Jsm`sDl?0#REYhh~!h#h3(Pw^D}rC!*0s6>$cHa@7|lQI6cKauHCQLK%qLjt!e_ z=I4aUR)|~zadWNgbxqZ|Q|4RVR}2f*q&~0;Et&&ZG%tM>YpTF&I6S|prz1$C$&;`A zOW8(0^%gpbD6So;zI8JeHFsNq< zI7Gyp@pQC=mdkvK~FEiw>0QtXR(n12<(NnfO>a?A<(?ZL&n#W}VM!i>CTgXJe_N$;Q80;p_(DfT^&+Cz5-^2(e zwe2+AfEsw1S=PILb^B}>h&Bs-jt{fasqc-uKxQNafmgDptv*(BLZOzV1v-SugEA25 z(#f}!VP?+m*M?I9qV2xcxw!cYF~i2Z_Vrhs|cs88?aWkxG+#AMHPP5~sRXazOPJAy~HBEkjG zzMo&3)Pz~aCQoo)_VP~IX`ta6E;s4Lsw%gemhxz+GM{Uuybmvma|TN7vbMeItU9ZX zfN;Wfc2BT9i2{;~Vf`>wgC7>4M@{}unCLUFo-&{=UF6mC4L%h`J?4`ADr;GS=ZpJH zXG4A#5RYTmd#l_xQO}2>SIk#OJ{3QikzuRbpop0$MvC1Iwr4M$xN7!CCjj&}eekG6mKL);_kSDfMvSXWCPU}^$2TFhv#7K7$n z-qLm0&l;)kh(*Ttgp;!?0-{cFj3AiwC@k_ivI_|r3z{z;Txkm~@?!kvG43{8!yI_H zP2K>o9sU7vk(Z9k8t)vF9}A<_X#N%04!3Th)aY2gE+dEEo(362v+3hSaNle|g8JX;(^-+2N8E?LGxgtYjIWU`7FSA+6@m z4zO)!GS_KXI;z@ilwGqjE8UzbkC#@@aJ91J+u9esh=Gk%I4j{r*A!3Y>j_n@^H&?I zBg3Cr%Z&_w#x1)A-v5kf6Xlk$Tg#(m(A%)~{RQ?EX#DFBRd0PZGR&+A16loFcC!L| zsz=QFWi4fo7a(4ftGq?@!b;0)@*r^o`ggU1>X3i%n^AZXm@#!s8&~*hZKW$eEp}_D zLDOdN7##%44pEp_;bmc<`ZyahP(^4PiT z*z^o8S8r#&NgMcA9Oc=r?G}n%dUp9fuCgmr6vqsm;PRy}zc|hxeHH*~f(64F$5)qvc&XqWLt@@tf!9+G6@NR?8uTl z`?-D1{J|N)?5i4Udgt&)8;a3oEZ~=%=wNrmTsjg-=~ONEbp?o*FqGG*nCtedK3dJc zdN%e@UeXW1k9{|HdnSJQ&@Ahwm4Q&B9z{HS%4ZK{A2?TrqA#&)s25%(DN^W8+pF4w zwYHzXA&!dR%UZYF1A&}&eduH<5)vHpSWkjC=!L?$43#VuGhLY~J+qrq>Q!}X@^Ol^ zla2$&|F1cydK(pVC2zvlmb@?&Wy$@Po-5%Ri#P3|lW>A*vcXpPo@8hqpBFS5U*36j zeJ0y(ulEw!gS|3e*6+HCFU-yiq30EJ=jB)N1OQZdz`8ox!vt^(UsTVm9Ig+z zYpLi^PXeE6zHTmF=M(wUbeS4leptCKY+W2~7c{gKarwHQ*Q=@c+g$H$-6`XmU6N+! z*NrB4K7?H@eZKj--|U=kz1Hy6vQ|~~bc)+~t$o&2q`n+N^VK!a9{_;PYq*?N0J$w+ zFq#3D(cbTjiur0|GHhbZO34PtCx~fUORR;b8JPP9Ups#VZvXg zWGT41d5x$#=U0DS%Si!F`v}d6l@#FWjksjpn5}E;s>>Ux^>_QU_A}tF0xDY4t&fwf zDV;3zVbGm+odcKdo34~%R#%!&3?i`fqdG70##G^HlelA4q^hzCUPN~&C) zVzuB1CF*!}%mC?%D5a7Sa3XR?lM>HP1ct;wx&lfO;oM;*Sw=&J6OG$NJ3&+u3VoE1 z$@P-SvzAHY=RB^g+Y8w958U_LO;ny?TNbBDfftJm(=6KPYV=y)U)^N_IO)ZYQ%!lR{1*3BliF?J()9_ZpIy{|4?};E3 zyeg!eW#BY%?82A_FDoj}U+X%9-b}0ecT6#ze9D^uV-|JM=#i@&n}vd~$IU&EdVLZ) zaAwC#>fxdTbuU{RXb6&(5`-e$gLRsNcpxGtx7i|i-V5mQTbNZK4jqkTS;6gK(&8r6 zDN3GyFMa+CO&`nBGy;%Hl~6M9=vB`rA2tDq5ThD0OHj&l+k0axPq~-PXT>4!DW{)~ ze`b>$?$HC-4%qwBckIW2%!276)n()n_buL$p?NEdD_R_B7xV^;BM2BOl$*#}YizR8 z(hP;RSoc-yHMZMnB-`X1pmXXSUjI#xclKCFOO|ESR9fhWUo z@F^R%`;;?v+*T>;81FS8fW0ScilSW%#?wj(h^CY2v6{lv>A}NP#sFkl@YhXufndLKsm$pm+sb&bU2d%7MYukb*J7Xs0PtTVU#PgQEc5CJed!n)ch z%XKWWUK=5}qeQy~Lpfkw+z74(w|AOFQE#7b>B5wD0U1D800%<$t`UE0BE;Mgml9ZO zOvG+!IfF6PtXTwLP)GN5lcMPn;HrV4-s%u0R(kI!lxlZuIrz@~R842^Pm=kYs}ZW_>pOp)=4TvbZ2oHIQhKvw{R5P;<%xFR(qnEd&%7lDuX(Uta zSt2=|JGy`eu`$CV(3)F9b7-`uP-I~90_1?1ZarJ%lL12^0l)!46Ohk-6Z33ONjL#EJ^ z5M9J*g-0s;&f4QZh)El^({Z^fUHiTvM=y_k&k`6_wvpw+pptD5o2Su^hg?b5lptJb zB_Rq&5=I8h;UI$A`G%{wHKG9$#(YXnTqsdEf$uqIb+Y8hm#4r%hoqC0rUcg_uH>}ZuFV~+Z8p7;}inT1h z1gqk#ZT#!#)J*qIOiE4xfgw;B9MM%I3XQ3{AqCiSad-leR7*+QODUC7@=kz8XE0f8 z4wuIl2u0$WMBS6hfi@V{Z*N2{7-qq(> zEbV2lW%AxAlq$7GOIt@*uRb3P42_I?Ytp;kH{e?z%*-t;t*mWq2~a!xDjXc0@~Y{h zOP}(t>x-MaM_YZn?C0&{t6hgqUApz??TWvC0|u*V(2!vxq*=g#gE2JwS_HoFDKva9 z4wzKpw*jvT3(zenW`|Netvfqzr`=mv@y?;of)#(jJlbPjKhGlxY197_Y-SRo% zDJ&{3@s^gA`zk7{s%vWN>KhuHnp;}i+F5VqPML1fAWE{L0!=qe%XVDP55g!;(u_A(uH;!ZEroPk1nDSd>Fe>nqZ3;?ZeTe@ zagt_vQC4-+cKt9;^8#p_>5o9`&z_ih7zs99)-CinubbHR-^<@m1v3__&9FP1F1N?) z^8+9RBN0`!zZI2MxCB?;A9X@Qkjct)G>gsQ^7sOwNGy@c#xu8Voui}l!LFDLA4LQgY(RNda+xVZ2SB7nQpJcJwmeQ|DO=uUFqzd(b})`m~yS& z&-VQz*M3(E+kuwfTp-d%RqnxlHNSS35N7thj^ep;foYj~9s7v9&Gt z(ECk^UOp2&!uq|0oI>RIIpISY?@7o029HWlP}ypyzTl%B;WUJiX3^2nrT+zp+qPPl zyi8njG2=bir|lh`J{P_X+gtt@A_=XY7EfN@pC>KH*6v2` zEJv-JgMe884Hx~OAL z>vY;)YVEkC&AeKh%?;NuAEbaqT1=Q7O#}o0Ldint5Y!u6%)##2-aUbO(toqZV)e`` z1`md4&~bpeXv;tk&=C*-NXqM2=XRt};Jl1{`^j$KJ;AV0e)HHlcqTdtY-)-)PxqpV1i71pq2iR!LDrhoXoN z#s}lf|GmXYGFl@!CfTr*Dx0!TrP3vh^kAw2rmvCmgZZ^Q@}nO%N_rq`O^?gtzEi(S zhJDy>cdlkI2+0a2RMi;Q4H2^yfJjy_p{mBXZitu-0U}w!gsK|jx*=jV0*GV<6RK*A z>xPKgM!t>v{Q{T5rSZ5uxL7|MI(ftjFj8ohFvjeJQmH0I)1QQ84an8C;nipwBHC3e z<6;VJng^9r%sJ5w3lXzC#&1tS`sSJtCKcI zpeh2Mgk=pvqc=e-v257f37&Y`u|AU z|0Mt&`MskfvE35=L!zT&`yr8Aq9f5iY-{<1oNo#yRMi;Zx*--^6>}BMYyc=DLba&P zVWHI#C(IC3&@Km`T{z0sR!k)bZPvoB`k%hN;$Lj8ru~1S;P>^C{tL+6E&Wl3tWcFh zfONv5H6$F~NM-VqM+M$+nyWW(P+zn6_T}Xvfu7Dijv{03;QJ*b?@^Ah{j11UcB81m z$l6#@-?R#nSLk18!=Pf1X!+?30egd`=Y3f|8^2}qcs^bKQ>Qv@rrx4OuyU(px(X9t zl);AoevP36YCviO>@kMQ&$y1{uGPCN3HUMV_{WpQZeJ~|%*y-;hGw6TeJafIHh#A2 z#~-e3PJ132^%=l)M&7!9YsXOdcc`4`vyN3Pgf153rX7Wp4}g4rot4^H!u#|fTtHs- zxC0YmimtF{-LPdKLJL3fK`$!rR02PBY~Jq81bAZR8P_fJE&N<**z9dG5GrgM=>C4l z6n^O`D`o2?bfrvma6b0bmG&k7d&PC5r|lb$J63hd_jx+)WB8X859<#+XAo&;az<+u omRR8g=jv#6iE5Qf3Ik_2$0bg}{nRF2Ps2#MUtnm%Xxz7F03s32@c;k- diff --git a/docs/_theme/rl4co/static/fonts/IBMPlexMono/IBMPlexMono-SemiBold.woff b/docs/_theme/rl4co/static/fonts/IBMPlexMono/IBMPlexMono-SemiBold.woff deleted file mode 100644 index 1da7753cf283671f5d127c6949074d212a843c58..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 52936 zcmY&eQ

su>IP$ZQHhO+qP}n)3&F3rfr+kwr!iY|NC@r*4jC#eRd_4JY?lmj)#J{ zH~I4&$UhIDDa9ZAf0_T-|63$P#l(LEsXv^}4}x*baik;^6;uEK;2#q>8~^~L zrW#f&lTc9;1^_@Ke{3EA0IHqIKFC@@g@O5}J@_Nk{DEOihE2b^sN7E*8W#Wn`RNm; z9jf4g!o<$V5deVu3jjd;=%LMvGmuYB++7I)0MvsYKhghyfCge@?r32L0H9I+#Pc&a zkPEn04u^%2%a1QQ?T-fWe}M@gvat0s|KWH6fNUQCkfpAcow~E7nUN^~P}lmSVgCJ7UO#t8#=GHX;YzaB!{s=aYjrnDsqs8X@;d2Fs)Q>)%=T-EE~ zb1iroOc-UqHsyEztI|CxaB&O20`Sb~N}ZBf5W*bkVQJ_ttD&P-Pi8Rc$d0+HI-ht7 z4u$Mmi;1}T3n>;c6yh4m7aHsu2|r5|Tq5Eb$tN0dgBav@ z+#%2)lL61fo9|`r|8ITL!Q2qAu#bzrLr&h1G2?r9v;oU)QFi=?C1FW+=_p@fIQudesP6haH&Hs*i)@9=o-n^54YNhm} zRmkcY>lF%B3K6js!dpu`@C*zfvZlS(n0vT8D4R^p>+C(w;jyLemM)+$pxE7uz13-X(~#&{Z=UFHvWHw?rtrol8^aXJ%I%Z8zJ z)vr{jY(|z5+1N}!I*}?eJM<~y@Tu_C-pDg-H9eE6^H%+K?Jngg0|l1+pB=9{SvGsHM>-|w3Mz?4-qL1Q8AJda5Ix?~XQrrG;PWj41h&~(w9~MDVHOJv85QdH1)Fa^D?|5=D)8#0K3kEnb zJgyT%nIM-RhD+|ciB@>AXxPk&bzokf*EfKoJ z9G@jI?syjC6H%N<`UV)>#4;J5Bv7@41f?q}ME5}gD4G!vq8M(3xwX=2iDia!A1fv& z7n3n(Xwv57>*70RT*W3HH-Fs1%04T*kGtRbayLY`V5@7X+g?)2B~KGu9c!cQ_iYn* z9!JnbANj9*YFHswM_Xq?V$Ndta#(L1dd_AId+pD zt7amj**TiY61K*-+zjd%i)1*c-SW4MSqoF&(lXRIY&HQ2B zZLNYsBJ&9v);kUa4NE7o$;!#Ixwb=DhRLLgxfhYiO!=$AWnUu&<{Taiu!&L})~`6P zUkRM*JAS@_k1LT0bzu1>g|~|OjE(tjn(}>H*9SRd$7cCWu8!pV z{|d1w4aSO%diS0_c*6eRetQ2flpWVmN|e<(_ZpocJx948aMyEr3Qfm4TT|P&&mSPyy98bg z*Z2Q`9G)6#436Tk9RLuHh!KvMmz=@HoZ8D}cWp&a!oWKfuQ=p&PQ!QJo zmA2(oq1mM81-AS)ubZY8xi<)l%IYz}Ho+m#xH^VE1iDhiKR_85*(l|mq)5Bej?ujL z(e_exp+ZiqW0p6oF&!giycCc8Rc{(7u5lM|TPY_%l_*^OUfB#2amr$~Nz_xd?o!G3 z-qK>A_Mo54TqCNrlx62axzqp`t%Cb$g;pcXUsJXSIS;-T2)rhmjaXRIh!)nE@KhMN zRslD(AcRL*xbBJrast0O8-Vr&Iiy{VO!D%jwSQ*vtkYDBulOfFuuJ0%Vhx*(Z;r!Y zxq-SH?%nN@?lS1sTi{&&713shKY@d>CeJ+|Dj=IXlP`Ls%~hQ1D|YSY_tYe zf{OVI2;Uk;!ZYV`;WYr#6?f!z+2b%t?04I+Wqgw4D4LjkQ6deJGifUBA*HCOa~cVe z1TnD%Qr)~Cjti{GG+efeOG1Ljwm|WSz5wrcC`LR0cq5=NxPi=tp(80*&_|Y#>k{c- zvdj@-%On+xS3F^6jA7Vyhl-t=j_Cm@Z z6@zXe5UrGO_YiH?`twdH6Rm9W`uG-lxl8OvOY-x1UG^LHk}$neBswz_?Xeb1y6hQo z_R^Zt+vaDywK4O?jHy$@%Em+u&y4tbvRqRd?ujMWB)b#q3@aIq*Sr?I&BOPH#LH8w zjFX+uK>d1>E;9-Ti#JVZf;kQM!hEv%#r3!^_oOS>L;@zoryKuC!qt>M_aObPE!d=d zMpgfD##M>DW0vrV?%2dnOsaPlX?VlN+(Vb)QHD+sEE)(Vd3f{AT%*Wm8S>FTzbGS^ zrQl8K$(VAe?rh4&k+za#8|HlnT)CpLoEx8Y%-5)f87GjjCTw4GJ#bwPo+s1xGc71G zdwsc*z?_j`4o$BSXzNivMvb|`$egP@uw@Qi(^sARlc6RJ+deYUoXKepY1LPm%p0`7 z`mwnpnw)ES$9b2=UVmrwcw_t(`WhDJ=@(`n6B8ZXj!KP*N|uRi_WU9grzcaVH;MU3 zsd467zd)o}q1UKaslBT;Z_ypV=NUD)NDJ^;t~aP9k^dSHiZSW(0Esy08C(ZqcV2mF zh%#Xg2E`h4!a9sQ3cVx=7sZlE-niK8$7)M!XwI`_oPsbC~tq4wKHIiyyOFHbLXi=F7Z!n1NLrDCV*rHp)|5(0ML=$fu#XMG z=K9?nIamY|Q5cd1fmjprihhW!RmTzGs!vZk2$&9^awdIGu|$$;)2!4+k1{z!5N2po zXD(Y}{PcA9V)fI(Vw&&%%7^9tisN}}TNi-tD<(uZ*Q}^g{O9VQMOhw_g5UAZqu2M4 zc_ELs39z~m;+7E2gD~!}F|&3NQC6WqRROnk0l9S{`&j|~Ss}kRA$kKNUc)R3+)jUp zFlDTxC?T>EWpEK?_#S1DWvVEwbRp|_0quApFLePibs@923E<6;I7>UzXn+6<(Qqvf zDl-XgH3@_ZDN+|w*#1CBAC!bZIB~m#E|3v5G^86d*#8&kUx5hbpoZ4`h|J*Jm59xi zkbxK6vDWDI)_9yoOhJJ+mQ*mUU-W#m<8QW;;I@%Ym?4LnQAWQKc7F#UMUF_)q@V?6 z=8U3f27^xa>Ha>Vp+y1H(u`HYw9DHR6EB2lHzGpc^_w)LZZDw8(y7B8-Tg@3{>zJ9 z47FCsw^l$`W(3r6M+I&S#$CwbzQYnb!s{w10c$QWZALJ?FI;=*ZEr}7aF;0MnJOiF zgf>2IyqeyVHZ^W|_&4}>thzl7%|)Q*d@@T}+Lxs%zZsiCXPK3n!F)tEXJ$;>!iEin zN}2)Mf{?^R6Mg2pX&vy?<7f|!)x8Txcb@kgk!hvlU)d8=``#On z9BX!`&F(zydYfuj?j8v~y?hsW&I&#Ux6h`}px(l~MtR10;CWYhTe}v-E@JFd>GwxX z6vz71Y>OQ14Ow~gX5#t^^ULRTs~Ki|0{bvv@AbG#R=Ev^d1HUHh-J}NxGt34JG%z; z9UNLbR^Bi7pE#bx-s}BF{LSl0f6<=j>dOB`Ipgf6P4m?f=Y~4fYUb|9>6-4_HnZAo zc3yAI-5|SS_bBh!=6lGdZN^50L<=uM< z245eesq7wKyJ;)kQakDuWbe|(0u34sta|PoWX>^emmCJ>5{SxBKQ|rnT5OE+15zQY*^+Yy;UQBw6clB}hcCQQ(agL5j?x~hIV$-`o zcjm;?G6B$+;*(mR-9pbH^H`#U?p{VCFglH zC}A~B;WfGIg~jKdV)zy{<`&$93pRoiD#J5b%rkw_E6Hu1@1LFQv}G9f5VWS(?@o0g znw4>jwsey)O(XRZG?xxg}YRv*DiSSHt1@U?s^P*I}>@F$9`NE zhnqErI~H-@<7++!aX$cD91>m}W9IB|`i|Xl4ne&{n>Z!kavGPs2NyfW7CYsTIHtll z#>6;AT<`H`>;Yx$B4z9|Y3x944~W>Ci`yH6;~NqA_c`VnQGI2ay*c0XWI^~+Ya#9PITCg=-5tKTuf733?E$^1=zs)rvmBOIlg#I;I!0=+TE8CdW0e46|HMo!mE|1lk}U*u9|d!KA#r%kKOM zAcT0m>y#qQSyH=}>a6EwP^p3-SGAX3mrL(NBR;wol>WBD*nc(-)+ zEA?C=pvkm*XR?}&BLhMjqe2xFb6-eHL?o8_jt4#0ke3NG2m8?YMnP6oOH~T?k{A28 zQi@R=TMi1}c5X)*3>pPn>njB5na#n^DggmN0FVIapX@5w_cs8+GpDf&%FtveiSgr2 zs@YbinM|hMR%*#lGlFic9)66AIRY5Htdc5foVx7>bnWfFIJ7 zC=rM^wAXx02p(7XX@cpUu7l`30O!sk-j;CtI{-xCx^3ZXS?{N) z>8a602FoB0{+6bw0F6u3L0u3|Q?#=@@m5wm&qoa<1L7BN9*~%PN+pDR`-rCibH@J) zcUW|!a9qwwphyO9>APlc)iYKp%*UnMsGjR`GU{l>@h5>^J%llqUVwooBF)i4^%d5P zobhTEhT#=d3E}Ru0;|x24i3x@uXPtd>tt&5ZcLsXjMfLqn zz*K=Xj$J_8{7%&euW%c>jsod@9=VJn>E@oIYSDXMxd3`kx;nceoNOK-(T>q=OH?L) zm#tY}RAgUfF>qyY9bJyXcNA5&uLEx|tMj7ebNys;S?9>h#&Qd#P(-pbD$)Kt{dwFy z78zhVa{zi^{JmcAEq>A?1qperg*qv$Xjy8bASVfaW{bU;cL=zaYi z=AA{!J!#BenPo9rqNT-kfNjQvrRy8Eb-1q8T;g-}e3_(MU8#+6xLC;AjLWxj&2Adl zWZ4{;*+x2X5cO5F4DAd2(gy88ESRbj40v=7fMU;sq;KO$gRD?}&`1Du74?{d{=yPO z@N1aquH4a=GEjtKgb2ghtu6m#BZrg1RgbV_Ulf8cTAA8{g=fHXxwsk)UeNP77EN`3 zVLP#4Ut6Z=*7nSE^LV*Q#NqBtd16NXlw~CrJdY^&gD$-;62s^zAMIHg!M3u2Ef$dq zs;eTLDwj%0bJBVshKni3vpXf@Uc!>jE&SGT4BojF#J9;3@f+eidA4?I>*^`iDF5*n zJ)<{ez5pvW=5*O+VP9>{YT@4&8kVAx9*ynjFYLcgaM8Cf0_6f31@y%N4Fx)BU$EZ> zCkd_wjekf5*N$NyR^j%IO;|Na<_+Np#( zsos@C@>Xah6A<+)m*SwT_4Y80>zuCCZzW;n-0(ii6%o^wJ6nGT)q(bvd6R;OWXbA6 zHU}@*D5ms9<}UQV#~A#^b|zkW-liPZnSbnb;9gW`(DD4zRH|%=^SEP7Q*S8sIqE>1Ennm12MAB3QZQl32|zw;6|(o z0HgT7uc?eu(MJKMKh>ZiY(7{ovhH49c_@D&I`=xb*oak&-3{y1QF&!@iaq(F`~eR9 zZ?LbTE)T@0e+zvoCLBRb%dX(WCCQ(q)JA;9-!&fb({5~Tja;2$jy~lLHYPByii_Ry`6-rf>c>O8UfbIZ29&NAu}@W)RrC+|1V$-mxqq{lJaMwZ&as7Y zIB*mWl!cSS@bb{6p;59@{V(LK=ROGI*+`g`fXOQ%8Gm!&qbCL!V_+! zTi5e&*nDpf3`LUOM*M|wMLEt&m}rDI5gqIRufHjhc`vz9_$+w&9h{8}l^N)m79^Qu z_9X8Iz*sptAE_iCxun<12FX!??!_tylVlVV(G(UE*&is388w4)?BG--Hrb+PQdhlD z@>fJPQt_&)mUM_Xm|OAm9UmqpXVZf*nU_)&QC5 z$r`JezanX0|1+kRGJi8ZWIfQ!FD=e)NZsp%B^x*OtV|Up{nT7FGEr8W! zc!4n6Sksi{(m=8P;AGNe+TOpf?@)idhae>1P{3$8x%4iX!ptND1O0L^`sUTa@u0I9 z^C*~Nn_01I)#ZRuUo%fVIzM2~phL#ZfUBlMekm#Svkc@PL_uF-Rxt}rW%s&P2#|M= zt@X)cy#pse9eR!Vcf?U~G4uqTie6Sww=W3O6sg5lP@*pcbe^-QZze==>S?{Bfi4?AMJU;Xg3h{|vMJ>UTxk zY=gUI7U-@9V-negEmUoZF_LAIW}a#SrzKO`7&zyI`@L}-d3_%?*=d>E^OENk4Pl69 z3~@t|e=}4>+F&f7Y9%KohzESOlqj60+Xcx;+^ebDsH;2e4u#DgpvoC=W(w5_e&u$N zou!FV6(Yrwt%yF%3^apmn#dUj49fy6nhCfqbZLF(*qlqb$Vq2r9&6Q7V zkJ7la`)qvIxwE}9l+9>9P;Mzx*;760zdasr!q*yy86E%I{Gv zN37&XMV>7_hA_(;EX_APhKON$1-T!BmxPip-Fj0CXPiLTV=ALbkE$L5JsKJXL8@gP z8M6QCBIS6|G=gReeO^!QE3=7EG03&Jly_N|(rk4_Dl-?2q+XlSX?k0*4>fO`0blCV zD|nHxk`Xa#%^_sa2_36I!ai-uTPZROtHR0Kn>ovJ0@?A_tFl|cacsLRi(Z2+ra)V1 zWW&{5KDchmrYd0h>xA*ZCc2D9a(|laNvs9IrwaD?}$*hvr?D z1Fc(9fc_Wt%#O1rS=WkW{#;zZdBv*hs5C==Esy_*)ykp(M7f)GxG`9kT0;*4kNwY6qSG~(UI%@gyI{})Owma>%@r9HN%i|S3{9^Jnhd(usnEg zG0pGstSOv=Ns<<(x4+-S{B@v||ULAq(? zuQh5*N)dC?GE%u#rTblSR*kpeS$(BAlA zmc#GFDBZ3zCJ46MAa}YR3sIIbk7U`d^=3#nQZu^cY4PC_)3Q;og63fSoCDFuw%y+z z>~iPZ0-v)5QQfiQuR7h2l|ooH4xr*l zFJzyy0~3BlhRzcHmT<)aLlMgek3Y^@Ic~_Cjo3J&=BxJvizg8st})s>wy^Jho&1+E zEFnHzJ~TAa^RZ(xa^&9aGNM};Rdd-egO1lI7Nc#+R=$At;pNte#D`21&+!}E*X~a= zk(f;D@3I<#nN9<4joT`**-kJOT(AruP*ULRrW5V^r+h24=Vo5AfZ@S$wDhJ%hU zmqCLUGC!MLv!!RmnOHPSa#G#6WcGC=6lpBWRc(WuTq4lW=x`61e8gnM%Y@xz?J+p% zG*wiwg#t1vK^#b!>hTWfN-j}ze-Wls-|nh4Y{_;8t~N)PW7iA<%V|TH6^Qz#_*RDO zj@y2<_oXU zPeFynCr!Iw?_=}N+W~l*$Y zH!=NC;u;YJcJ4@Kv8dEnX{rSQI4&4EgGZFpb0XzZ(CAfv>b{0wxl1wRjdH;Yg_JC` zo;@9w3{z-Y7;V}{!)5BucvU4bOq<7o&?%E|t)rHM2P5xr5cgNd&vYDWYCAtr-q|4d zUAeHl3mpl#?u2)70;9}?6Paa>m;FCpzMcG~>;bJ%pfaG*8Tw1SIW*f9Z5Q(jy<++d zmW5*4cihdAsJ^}H+(9jiF!JWtj!^d8lW%EH@rx1?3Y8d_cvH|I9GhriWZ~Cn=u>zD z5#Tw~K_UYd=;+g)`*cm2v$L||87qDhOLQ$)^1SzHe|TLsmY8PUr>2Wtg-p*0$4QWo z#Bfsnf;C~WXaKu;=M*`FL?bSS-uv0b)^OUYF-p+@43M*>l(kVglFtSxCW#EgS9LwD_i_oiVdam5>y(vz_(eHng>dFFu4GO^GVk^!&lO@XoP zBkv2wHO4h9xCI+8#WZVK4Fp0-jiEuJFSgX43;0JGz0BM~_>=FyL_NM1+>X6treFKa zwVp;T-sTj33=r#vd!}FPwzIbnpHspHWh4Mu zqES02oxP7);fB}s`CPSowR0k?jGRG#OP?Xk*S&ysZpd7^Z=-7`J+~RQ!OQw8ERBaJQMV|%IFsrFLwr_l>k3L;$EkRc_T_P~&4s@@yEskos96_q znMY$;ekr@aQO+1~LFs7r0e?Qf8_R5# zbzmJ>c~H_T#8_rMdTlt$8jgsp9JsS4C)@^353I)I@|u@17Tj>Wwb=_t$&om&%xQqU z#vTfrlm>G@#hcPJYuLjx3s#s#q@!CB2SHQ%MHX0V-HQwRPwf{;kl>)MQ+uJyzqdyp zZk#|OIk5YrvNB12Nqm|MgXefRe*xb_2+I!GnP(>I=Nda4O7;+(Gz|>U#YuL?$<0woFrZo-=$F5(1UoCf6Fh(Qj z=<-V+7^poz24N0*o(UJYY)F16Uw-NHY%6l|Y2)wslS`0ikFApd)+um}oJKJv%7xTfKNc1o~iV_vu>C>HZ z>fMya&d6B6r(w!!)FsPeQa8x&ZF=5j%J}8JC*K2_WT*X3r+Io*F}2i3Q5VR6&iyuK z_rD|YY~z*P2Q#b6(gEyxYzyRw#K}s6wsfjVdSMb{0vO$b@w!6(UVG8O1p1n~2|A&X zju^G0N`-NMMq_<(1J1`MQQ;vru(WYoEBW96)Q%k$C_y3PEB-<*K;1q`_MQVFgnTEr zyQ;5uwT*Wc(k(nPOK-PVS5BRs?AaK#$!OmzNqX07ZlV6X4jgP*7Z1gt7;?clr){k` zB)dhgmpj2mLJa5GQ>X;yKi_O4h=}E_(`Xc3P`uuE5A~m!KYpVre0%?k;-Q z0n28^4-F+Tdt);01|}qrTfIX9`zpH#`Wqa2`sr_!>cM*<_bq5Aeb&Dn}gRwR!)*o#jyI2qcu2V+Ft_cWUXNM#b=G_}bcz^?aD5gP3 zGN6|iEK=`#g|=(^uTR&N8Y&C_qPL=0;hWxt&c~Dg(vVu0cw}S&2Aii@b!{d|sqWIn zIor&cwm)}T+XD&m8OuBG#>%&^K0UdJ66f{1MYk}or(@=y*>A;PzW~*3FPOsGWj|Qg zDwLTur{BO>zmN#*Imxdmw38*NoOdtJjL!mJWSw$dF!KzgDn|BCK(O^E1jXaOX;E)2 z&y+@ZY+|vK&m$hUx1MYz=tCE!mt=IJ5PR_3)Wf@VI!_O8uAOaOi05}G7BKQC)5!)V zdH3OFe-MRx&zA7^1{Z&q7%S%n&XVL^<6cE|VrLzR=)ZEUZmKVuL%(`zQ7F@y?AE-0 zbL38`h^A0b#`*_Oz(p;y4CR9*vpm5+=w`Eyn+A(+*AKkBuLLUCUY*KjHf%rJ3711J zmN?jHE?_O`1G7y?m!F$W<9leK)}k-ottN@z{rF9$lDd`5=x#St%ea=|OY;=p3Rb#; z-EAN=LSJIhm>^(-DBP&m{cA7*=VTfg52}S+3l}Kf>*s=mU%W+A%X3MwwBg-k`XoGO zou{#ffhjHK?D4KGEYw5=2K8Zjr^K@ zDTO8Q-2DV)?K(#oXRjSxl9>FRt$hn0!(%oNY}Y6J)-V=ovbDdX727lttxc6&t9(u~ z`ct=V8~1#Z=fp05W%a44I|KzvPc4q`*Mlep3;p)Y)>R(wjDCPV25$DXPQZQXx=v9x z`?Yioc|c6xY*QUcQ`fdn2}AkB;r-3*i0LrwOiIKW<;YF3c7>NuGkUXfbR&gziL7`i z(}uxKmXffV-)+zLJM-Nd!Qg4wGJOwZ)gMG~-{yf2caT39X6HisCnoDbzI>5?Hjwl` zH^IADEkss8w8bD9agN#hIZH`$W}W1ffFIRqU3Qb%pUgtssJi25+~4ot!TD7DPJuN3 zJ=NA;^3?{pZl_u}8gzFsY=^A;J8;Hob)9}_KN&R_NpmuBI9J@TjzegAvS(GtVowlV zF3pWlVN&5ui_SKtO1_R<5<`xX)N2fxzD9g>dSfqb3!#LOV%1O*cG*C(XUj!>#LHIf zd&vD|$|ru@N;nh`PbfRJ*k_4!V7}E!jUtL-HoII{wBW+5EAOI3F{2BA>ZApz5;-GD zpc$h#%ou~GybDP^p?ozGfD?q7pZV9wNSHGew<}~6sRaDM($Yx2%z!e@gE*tanr?9t z9uMK4YLpC)hKaZoCyj~W%_q#^cX#W2GFWvSx&SU2Gh;w{XfRl4n#_OrqQYym8>(7T zTtv_&;u_ssquk4L9yz=>bOS+1*UK#A+l`8IZaMwfu|YRBoA`&~sA{cLuC;TQx_E&3 zSB+|=+Chv-8u&o}B}>+s+;qC2KX;7u$#@87yQHz z`84QR05;4&l7_jvyOTU?E#Xv_!5P_Bh}&( zR+f_n8eGMst25E)Vf*@E5Ppx-vI+5=yr8bv?oB?rch)t{0w2#-9>jU;B?Jf`?Wy5r zw^NySJp6=#LwAF8-nUy54PRpiO2*de21kj6k${6anFP>{CAyU6kKM=Xu_?IMyc^DI zXYaL+_l|Weg^z+8i90-Js$p)z1m*cL(wqS`=@n+ghzo7J53)bp7OvgjyYT;&`{5@b z)GG8fU|gk54=WbCOd;U1L=)7>!|vFF7=rPS3H7e;Pf(0@^;;Ako2PDb<>i;;Ay;9x zFIRN-_?#W!quM-;f-rtT;9E!!S*MONpR88N5go}W>A0`wVHa*N=MIT9EAoZ1R(FnXJ3_x}zSa%fn+?E6b!X^_ zvA@6M5Bhi*nK&PD%iOdWfOlvmbX{cP(72FR%YriOCmWt6*6Q24`holha z5iW#po%Rp#dVM!`SuyemJ%#W&KEIh3dz&syyGC7VzD~bVHzJ|7BmqQ7xqL!1SjgGB!_gLvtLL@m~dT2SsR#B_v*Yn(^W<_pGeNBwcVOj zsVeB{kfOzNyV$YM8bo*W9WD=HYkvRT%y#5US+kpwu`^IRvlSAQQ93i#mV$Zo=(S&^ zB4?>oYch({Qkl!lr|C#cBp3|u(&$U+x|Jk}i zjA=seA0v!<}wh63NWW9kGm|=oM2abtKydP}4 z-OJ&;0tQoCGO;;`nDH#^EoV-j=uyo$!zv+)*b=-P8a8m(?m_9}etSy_nD@;3*Li@s zO=49mI8wK}rev}$A&LfS9zfW8e^YqXA@purwbx-(0!Besi2Nl%)O8rmLiA{aU#G;h zth#dP>6!}r^tJ_fJ6m}uF_0~%RxxGxP%}j4F075=pC2&2Q{BxS(1Ud)Dr@4Ij#BR?LDWkz~Rq@-mR!dzXNG$&1?dQiCC49tGXTe9hdpT^hNV05bPDP8wMD1}7HqA2rHq1iBq zF>GNzeCyoQ*t$a;aV+3|ViR$dO<|z*I`!nY-h4S=Q$;s}Z&^$*D0^G2b4WAT2H@PL z-{&QXg>2~WDb#P%S`qG8o^slna*FrB>EU_tn_uJfAnYv^bOHu~0?h$It=cU;8|6YA zT>N`cK{9zhS}52dFWwQKHDBT|o3kWgB-GlV={E_1sMX&pl5_K-2fdYBx=m(zK)$pD zQCgP1Wvj^QFY}Yk?Wik&L)RO1)fZbe9Wx-n&CJ2=n^>AN4xy3IXGEJbz{<+ObtZdM zdn>7aIoUDupSnJ%UA>LU%#6BSoh_giL3?l8B7HBdd-h4gmR5mfP&322~4%dZyN%;Mo%5myAcf>UgpFFnxb4 zp3oU0FDTca!K)Qvn8GqzBJ{GVHQ1wRSI%>m4Ci1U^7S55o&`KZS4B`1V7h$bB^kK~ z#?O>ny{_Z(a$suGT1NFGU;O-;l_&*tC#K-5`zP4;JV%UYFTRaTVKiS)Z~iu3WVi3= zOOSUSUkBs#>6|4qaeK8XslUcg%#$1E&cRYHLF2rdR&GuY?ZUyv9h9AQUAqhZ&-8B> zuytBHlXUHK$=0Txnz7yd@ISop24flwT)I46@maPg^3jDVS7%>PdVlQr^h__G5v`j%ZS!eX0tNRzhPSbm^z--rhyWzc{r=k zHlLd2yDHe9-@m>!lf8EN%Bx`7CQBTq4LP;oK%hgWDyksO35hC}L=(B=nT?ZPX=ZdW_=ALZO*C~iw7S?$K zF=$M1ogO-b+GC+!H$cMN6qp6MF}wey*L!9x2eQ~-4tRjn{ny_Fnvr!GCl2cT8d!Fq zgLZ{7beqlRIzZV!hfvTRayX=dDU7zeWP@VQHUu<-kl_if;X{{}l(VtR0Zpy!Md$n;zb^b%E%Z~&LrPt zPVxJedANU)duCmzSLa?djzk3a6}IZNN5tl}4je@K#NLVQQ6=6QDWK}irRwLs%Of|5M;N#e*iJ_Ql&MOe>9ZjA`* z6|tGg|Kk)D#*3w*&)S%k5?(?kwV%(dFE?YuNTbbk*E*S22R=&YCeqcCX;Zf+`52V% zZd@8a+@!`$<3-##3B|MkGI~JtpvH?>88s3qZ}HnExuCa9HWv>nTAGtofP zU2__kCo^t#om-z!jzWmgDZV^uzhlzn6X^7>P`!4Csn7wePRm#YRoNK-g+xU)Q=UfP z`CJyEmw&(q(MvRPj!wsF32g*j7fR128ke2CYwuB8BCig!i}0=({sPKsPr4t!Eb1-Z|?y&58I} z#S~8cxgfh-IqR44F%a@z>K{oRmBoB6rYJr@u%e3Up}ZfbypL7kK2;WEDh60Ps`>7V zpqT(=|IXHK%f?Pu3-lQMtD3bi6l)Cr5T##nNyawA;O({TH#8MKVSk6;^+h>`_jo7J z-Ew`>eXWO!hH(lq1#nfGRQA6xER?N&M-S#KxT^}r6nL0Bt`cbZ?y&gDBFUoWMJ6Gj z(w93S_cIJ)a)C4i0Cx<1Li|(OzSUObY%RRy_0~|6PFi2Y45uD#*C$D3Wu{+_oIUkN zu>KZHH!Bn-PouxGId#?=Ft09l_xMzme;r|nebY|)cR1#dNKg?_oCu*cjX;8=IvM7| zIJa1FB!Q`)^jA!NB{Nl)_6Ww}pT7H(?bj;Fzy9w@17*rcb>^ONez_*&d~$_pjCfoj z@BTQMYEQJzp1fD>bFXl;orL3=xlnKi#Tjd>Ksc2d(JM-s%Wa3bc4$u&8>3x}gAa|L z+&JXN_hPYx7VoWiow{w{bC!%Jz#0NO^^P^QQZZh*h(POmHlg+#^7A901mY$1=@5*d zu_vK@O~t{fX;O@A*@cZv77QLU&iWsT&a5LsN%(zhX;oYAjf(XiZPOO;l|RPgYf&_e z<10-5l=0(x4SIIM1~A8)?IR5Ah)4ggkI*wsyy_Fpq4ZplG9a)8q@A0;s=yHvO1*MQ zQ6Wbp$74|>5?`mINrz?ymnnkl0mvZzaQ!@i-VTWTlU4j(%*xYZoTyXN#J5>5*VRu<|dK1>A27~U7LXPkUmzX zJQUtUsJ?%ZXb`L_2w38@KrR+ZZvfdb(_EBtZi`i!nJfFdfPJ)t`8M6yCHs7?ZReS%YU*SYo- zE=0wZIRqjx8paej+b$qTS{Q}B#tCCRn+0VL ziJMF=qgT8`tT=Xl^;bXRm-!U*D~#bCJk|3l0+E8kUnz7n|y&J;YRB$huuv_F=B^BzWnZ-86U8THg?VOTE3X zt$x+7lXZ$FVB%gvzh;axu0& zARv9;Wej)I1s#roKcQ0MdZIL*>x?s64xLXbaN>6*xoeS{j(zaxS|$lcQ}S8wxxSb^ z9qPkH2V>r(+PBdA*T6*ik>PsdElo9{>^s@xBhvRG+2v1{xV+RY2YjNKE@8}qNlv=E z7%sEHSWG?SbAr0*Y~@^osursayh4#U%Q0u(z=u@=FGurLQpg@x7SH7#WG#>6=QVoy zXm#&BurRVo8g`gG5t$9IrP`1Wa9fJZ5zY-i>lzS5Q-4MunJ$~&!o9dQTd6A$ts6*; zyrn_^S&eXqG2B#VrWYNF&E-`QO-_ifwXe0gpR-?ayE&(>uWS2yqnnXO!@QL3&8+OV z@AF1Fol6&qh~J!_MF&SJ+*{2T;b(8piEk6V0ph)?0<>{>BzIvNkH+F`?mL=R2X3_| zfH2ImlEDQfLEJ^Lhm`JdO8&7x|Hh!54;8uq|llFr71@^?!&u=ip4DHj77- zOgyn|+nP+wiEZ09Cbn(cwrx9aY`-x!yZdcz)vd1nqpPdBy6g76=Q-#1%t;1mvkO>Z zTL7O(!Cu{jDovS_a|jS2M~?5^7_>AP5u2M4(p@v~$aO;oj;^9LSl+ff^anhjjBoJ2 z#2ThdKE+N9Azn{@`6Aj{i{%Ie{zBQi4`K@%NIE zg7a6gAg(CPkUK;3AY&r6{uexM9=7sZ(t455C{EQ*6}mcNBIi!c!sI4UYe`FW1#aa? zH+D?>?eVg|;-_{T!6(j(6ICtbmCDP@+$wT92qH>Vqfm$GKEg>e zZ4K_i;~_>Pj?LIvfKR$)@crS;Q2cl@_Pl6f5k9n!+~mSo!YK^ZZ(z!q@z(y@StNWw zWvBPbYG%`~g{-NYk7G&c@OhGLM$|RBrKgVt1!-XLmMO;f`M2##wxBL`{dva$>kea=7`wGz4Kc zdg5YeK>W_+wTc=7bs?OmL_=V%IkTCcI+)@gLzVA+Y%sS0xw4~J^d#OzhE3)IT>jMTS-y{(fxjHD zhEp$gZ)Q73@ELES8v`##sXg+96H>J{_()6^0S-;`Ud+Z)&P*-wg@vm3GEhoz&b)-b zfZEM}btjCqBfaNIqqe1)6DYQX!I7(nr5Ze1voqXgZ*tXn>aM5;9G80*1h^q${^FCy z%=AzQFn{%W0pj07QBfja@Q5+{P7XIutluCw#`cl+vU_E`!paTQjVdU|+3K76>IO#_ zWCE#Y?@%C^jFP+&rEf;t8a8;@rAFtVv*tFwu@Qh)Ur)!sl?^Mo-h2FY+XgixJT?zk zrHjhAW~Z=?e~odq$KbD)tx{;L`Q((XBizzil~W21D4$cVQ4`94IW3gA2^tPPP!`dqiF9~a@Q$0{S62TPgjdoKhF$!3xZ~sA~MNnGd=IGpUgB zCEcg6w6X&p!l0Q2>)(0}WAF&A4e^$R ziFz?unHmSLvY4;N`^lyDu%`|CDWFwT?W!;ZXNUPt&f8-Dh2>ey>{tGo9?zwO``5bR z2K%1B-HSU_67p!#j$yvk`o&z+su1p?X@*K3E}%*(&LE#e$u6 z7VX&xigIHoWifohGRe6KgRf(`JdN2|j3rjlEScN50?~R>;*g8t@kp0QYo5J)^|Ne`2Hqf93yH<7VvX)YqSc8$bIbHMw$;Pl6(0pjY=U5?1AH!pemU({u zTpwcR1W|vxrd?%vwc-P}BRD|HCaXaTPNt*OIBeB0=yU2%`u=vu*>k<7^x*-V7I+6V z(Y4Xl+~SNOSp$H_VadZyewl1E281HA&u|XsHhCk2L3kLZM;Rud`F@OG{nCEZV}h$( zdPYp$2gh!M(rW1HzXy>Wr1K&rpcw@tbGabp#?A8iks{063!TVl(?FY4Ys8U%$sPRs zEyD|`Mn&ENv(;v3TIgL`y_CV84oAP!-hE_LP_u^4o_?9*@n#*S5kor))EqAS^{gKFIRnM{9;X(2;w)u<*GZP#07GN#7(*l7_L>PK*?7=gl zBrR$?wTbTUI|V&U z{$nj(aI&9!#j4iH{93>4-Ely*p|)5;>ncP`|A0{ji`9a5XUc7k^K4JzGxexl6(Q|T z%)hzepzlauuC)`q7Sfw$qZZ|YCKhnAU3W(GiTB>sm?>Q!Mlr`!e>0WE?{HK^NDh97 z(q`9C=WmirBCR!Vhaa2DBm-5@3o6H5Cym!QvS#&^NljJ+ zX+oSE@2C6S`*mPh;C%>UF_@`K$wCKgLPK2gZL&D?fsM?k{N1cBFw()F0 zq(%KwhU_bt!zvdO$6~RF6qb1&KC893v=|n7*rp#h_)3;(4Hu2g^u{+XRwrXNGN z>;2qcP|0>2yh8AKs^*(X3Y_e${i!XS>E%?m-TE6SDtA%>&}Yyh_J9HsJvf}|6RTMRh6 z^S4NiwV-a6(k*=g`PH)pyHaGg722yfFN+E5pt{gfwz^>e)~q&kSI-B6=qvW62Wy9? z8VD~nk4{*ib&o8%TJE;+he^X){7goC{24tUU1;?j29N^)2;9UdqG}VF>4oN53ceCm z0Z?s-kgJ0W~?r;elkzzF1)3wQKt?GNM_6%3Og} z^W9f)%4R8*S#v@k%NgNhom)<(fu3S29QS&o9u*Mn_mgVlTAlMQ$e zALcdCS8md9oH2b>wO0Nrq#733m9^oxw$%)?va|I#yAV>tZaoT733$DSP1_3WcE24N zIjZie+hR|<Ph$l($NTOJXO0^X%#vQ<8(^U7@vB z4Q+a+@_@m9h|YnxAk#zyyT)H^rq)?f*tT}u5Ez*{^KvI+KjK}5{dHMi`gVuy$eh9E zRLM|y8T#vgQDu>E&7YZPuPZPW*@g={DCUJ$@m;fUHvY75Y9!mLQnb!e!WYzLgK0bh zN9KvLAD_3l%;VEY=+FFVhfWt0nGMlMm^hoRD2hFw9=4FKYsc(OAo(&~V47d{FP&K; zD1A+B(+pa#TOB>i*xi1A(Q}(-nZRNc9y@w*HNAK-=`nVzlq+aVj%Nwm`J<2K-dkqb zVn(RN>oC*e6K3J4aAsLYwUnG(wQwvb9-fQ#v(Vwo-_lVtoryf{IA{Q`S;q33A>|Ze z94?Ep9^6}}x2bFotbjb397Y?Il~+>*hlco}kD*^&pB3+7w>)cZDEZY(-kVj4fWO$N3}eAXJU=mjY8FCkc!I;}47J zO*N)jpg`!^?_6uC3fr&GaF`fNsTom4fG@x+`p-^>`A&{0R4dh+PB9B=!S3|j0&l8T zUZCd(%vNr;$(g>xkGyDG&Tirsr&1<1)Rq8oZU_%KrWbzvB-2{|!e@Ur3B&*5m~Hu6RR#4pDG)PH@@TJ(uOY9(keIb=?h>@hP6~ zzFu4zexyv#v!r`znVO+$^>;&9Iksf?sUHabOc zBB%;z;Q-b{3Ohnx*mE^vj3)oF`lAHKRmhOblA<^Ap*J}NCL&_0h$dx*A90j~?C$6y z5C|~&PE9ae%MKZoZLR2dUVeUl6n@ozyfFlIV1_jrPzz6D!F!dVJu5`~`sZ$sL;n`f z7k@Qs-;m>IjZichUdpX|Al^>KzFx%}p-k4o!fk-Lp)fI%FFx8ll1w%X2yoKcTEy<`yGhH51yk5Mbu`DN@;z>Kd` zqpTdV7?gLHp7{J9)}A4cKq1yYigSkRzS!^;zN{nVy1-|1ZxuS6^FQd@XO zC?x+Vu_Q-=&L4&gdhxGt9zoF<>90Y4R_8(cd9|jW550I-Mo4v+$6R;kSL3yk#pFb_0`5JeoKNVyMTWqbYx_VfhL z269E&ctj(e4BUsm3s{XMD0LrdN$Ad$MBF8~%NRmUR@we~05QCmh7x`ORZ&p^Ko1hH4&|Mvcn#!tmFgP?TqUfb8Q)G(5f2d~ve8cC3XWt`` z-{qs&SJh?47f1vIvkhx%D}3s^zyG;=K16#!&3zaw(_h*Nk~%p6#lolZ-=P{PfO!r* zt6=8Ux%0_-_t8FmOZk#Kr}?ZdIN-}k28ljoh@MwI~Lh zB{_#|MaH}=0(~$~y~=m*$GXluo5+AT2X{8c?%X-ll1GX-lO>#!C8e<#{Qeth3cT_e zI#>;N%ck_nKg^S}aPuG9T1EkjC#;!=8KSLmgVTnMc6=znWRNJa*m=bt?kbt_1L28^ z)fb!jrs?@k$W7IpJ(M6QRb}0M8Vh;nugQCq1u2DGN*=?t4#{z5YcHbASB}ilKr+KS zAuJm;!^tJGLxSWHM$#C49YMt*u0wQ{FYVTUD)_O0IOOLnX5MnYnE5vOzT?EZ5AK(b z_W37<9>M>9bRqeinCUVY{*uJ&p1;8*W-`=y$h(HW6PWTeF^4HR8W{U$Bt))D4v;&Z zYP=;?u$+^vQz)xCAlnDSH-(51n14`fvu*ZOF$c%1!MmCx%D*TdP>??MqQqB3*siY{ zJW%T3jMlK5oV}p(@&@=`^ueRy%;3sN6tqM0k+4r|lQW^LfdJj>Mww*7pZ!Qt3_F?g zDiZSsk*lP{Ub-20+Dtt?dlt&JN^_>0j^WQ{hs&%nGy-K^fy>mEwF?VehDw%iQ$8ge zxD7}RJH9Qt99(Vo z3^gzYJ5|OamNEJ&6xn4j5c4HyECt-GgSF2m_sW3ORH2b_9>qZM|1(uHy|t>1ofUa1 zQgKtj2x-6s`7HFxMu(lL-v2wf9qmd}o(Uu*`!oWKTH9N=#qzbf6_GiSx!gRPW{y6m2f{i;Q|^_f(lP~=Ip1B zN2n=wDk+A>?Xs&=vDe#$?z5`{tGXVQdYR*6nHZHJTHaSbMSMO_9deg+0o(Ng@N(U1 znq6vI2KCO_N}2ku-MigR-sR!HOgivVFq3|QHclqm(WGn4^Xlem*E~2LO3;V9DHacN z>^B-*a0km$;IAuJ()Q-uXtDBaQANnpuR^#!MkV+T(Eg~J98gr8q^@|lTZBlfp{O&G z?BW}HF;`V>UE^rw*=TU>-H6Y&nz1$mgMpbDYIZ9jnOSLCwACDigEQJi#^BLf@RU7R z$-)Fahde#GT;e|z6Q3PK%ej&-#n&ojIHyJ22YPRvK)?`Kea4!KtC^vj}@QtE=%O66GHJnw`e{*CS>ikv|$!+8@a4DsxqdLq}S)COsE}Ytl|(_ zZT*#-g7EFGHRF>l@cwcym2mE5n5W}1wWm6`)hhNv?@fA$_BIk27E_xnn>xFAByJ#m1NM~=i4!9L)hRg-8<-Z`pDr9yG=%cEnNytc~dus9x!+OruZaZKN zGRL)-w7w~9Oi3N(ZJSHOBhO%XhB)`HY!fsgZG-(oC9h{tI+n&zf-FxKCOl=*G3W+P zPg1#k7fw%>IlX^k*}TNNoCu{@4-5?UbqoL&^(kKI@R1+S(mp$WV%Rl5a8q}Fao_~X zeFyOwXCO^%UEN@DK*Pa3wz;!Pnyj+X6Yav!!3^qE2TGi=ya%umbo7zqJGPz64%uw12R!!BnM|EGM_AL!Ct6=7w zltX&pXwkPSdD?BX#CO=L4v{+I0@&4fA3!^%v+kQtGIeWA#V+!DDw?3y!s_0_QhXGkyHMf0=Sp z5a>g0bFU4(c7E&&3iJEGA?(W#F>ce7Wk$QYyASV30T@>X_OA6h&tGVBXuTO~bTt)v z{0HJ5=%fnVrcB@l!;|3xRb+c0560~XPwk9AX^jjr+2jI9G%Vfvo zDg>$i2rt$-bhGm+qv~Gl?{z>wxY&`u_IV(CWrU%*K*evq_75>q zy$dSodhO@B9qcu{z*Bo7F-cmsYNY>7nQu{R6;R~NquQ}&<3iV;f^x0;~C54Z1JDbIS zfTKa3QZvTE3FJt;hsS0JYYe|!eOt&$z$-Y<7N88jf0oUq@tR@IY5^uzTMVyt{%FM% z>Fxz^BjixOtK&j-<177;NUlDFT;Hb3oq;yH&dBmt9X<~C>$!#F72pG(nM52QYwr#U z8ZUF*xexU1x^C(6r6|{3b9@yG!Z7o^tyB*@E9p&<{}Pa*X2M3F4f9Or#{NM&dKf&U znwJ^JI_Ja2$oa6+`-Y?3`(_3Qel%yDt3n=ilhEH4;M9Cs;g=M{Fh8q#$o1Q}Lw5XL zBjQa08-J1T5OokPP~(NcTG}B7EpA?_AD@w4o$h+5{IE-{EVH-8gjr(KvB*i#Rcq?% zb|#DKo@*}e{n4us$DrpVn3)YJYfaV_WF;{ zD5dQ2Wb)w=;o+y-0<0So^z@*oz2dsWfnwR3$O+GL_i-|>mGXJrG-}FzjwEU3U+QKI znh17aDXkIXdvaOGhXR_-bIL8y#m;?jU)?weh7IMSiB9_Mf%5=hI>`!hUB=-P8{;6Z;-znmJ zp^Gw;K#BJ%5NEuzikkfWZ3*7O2*HN1hbiF!_2|?Rz4|(QV^1FvvorP(QSRvcDe6Pf zAVe`2zM_|Uk%`COM=(|s47qHcQLejW0jnENfJIL=eWEcpz8s!pI58qgSIZT3gBvAc zEmBb?n=Iu-#=mLI&9(EYr7dB*C^hD_bVGvp)Mez+4dg|UvYMm~?1p^jv{c_{CRL;% zwso9-M28|S^PKU+xJ8GR^$CXB3Rfkti3+RM<{FgMdyvDwZl7T2W@fFm*9-Nz`8*DH z{3nds2>$`)B{FW70bo)P-Qc385gRw-q38w!s=lk5e_#yCXc5FnF49eXdxerGX7Ug`m)4deGh;2)JZDwtr?s`7O(E$nFEPiq}vsavBZ8 z*3O9%hG655RB(n9Eb z>y2@GYa#F)@i%Ix!V|ce>c=gRY9zBk^+g-3EaXMcjdX~Rm7#MW zkA+wqL8c@%I6)Y4C?cbT^X>(1ns#b19QPI5{EatOo$j76oF0#^nYyVAg0%HzKR;Vb zm$kjLFCsQCX)vy}{HlJSAK_LMlaeZ2+n7(;VNAX_y=wL6Wvsc{Tt9btvbx;dJZaKs zT0hFWD8|d~4PCMVYHBrUNa?QZ3d<;e&F=ON!Lo|so(QsjUcd!Et(rHiME+%9$)k?R z8)*D1jW#z(YARQC@uT=qwvO#}@02l0O4`{nd5Y#+XU4Cb^d^d94hM~pn7es87d<}W z{|`yws^_Z+{v~be{(h<&XL@?(+J_R$Ikgj-z+o@m}qP(b(pBqM9nsg+ycF$^&XC+41l)TezOnQZOBhS*Zrr z4R4b1P1x%RFALXrDDoHO51OoOZU2w1beRuNfbU>x801TgfA)zK=0lFH&xsTCqByba zZ#?KHBiApV-NNMVqYhp2UfRiM;pr!0 zpej8}HzUkB+PeD2O=2a8fVcIKjh=mO{?E|vwd7lkt3NPLJkoXjn7M4j{}OsLI9JC) zjPqndq0qydKAVfn$%|ODZ84xF&`k>nlp2>Zk4pnYi(zIIlcFwSZ&L$rXKVOnadj=Q zbTL;v*?!v&Vs?v#Fgo6@#jN!EZ{%8AlQk7U8H2 z$Wl{HuMfaVT3v8bEkms@1%)MHwrZW7Tg5exMFx{!}0qoXJND> zZbu%XtCU<~DnR3Okc{jmk3sKG;{-@f0?LWYGnj#XF3JF8i(Qe({#SUwbA+s+_OIZ= zy}g-GK3_>*w2hsR@~ovfPkDqYyOi>WO3D4Fh}D2A`xLF!h(G2EVOT_=yaV2v(eEj_ z8#8h9iTtdNmCfM4LqFh%jC-Q5pmlJQuhV?j)kOx(Oqf7SN$gRe&nc>J_z7%@7&&<< z&}kIxI9N4S4P#ew=@w5zv`e#vYQaz-R}xB#g|g7|Ov%RNu?I?I!$Yc~?4MOqeuEvt zRFmFs*N&59gRN!cQ|dUR;=?fZugR*v@eZL87-Fi1zhn5RUC?}#2m30R5g?N|6?I7l zLY6TToFrbXnWM!>arf264DoXfs~3$`KW&t_*w3J`_*KBJ;{p3H&*VTCEPnO7&xX6V zdz$T9Z>8%D1C zv5xCcBfw4u1%lV5<=$SOFX!_>;NEus%9zIq#U(EN`*eN_Tz#SsG@YUB9DJpoa?)4_)#f|eF^E1d_a<&l}I;Lxrf zdbgun4|zlROS`HN=E^K_@-rX_m5 zB4@5bQm&UE1@J+3V`}843ynK0o}>y;d;UT8?$YK}UC4{qF@N_x-8)_0Im)8aSeKN$ zCcVy#9fnAa>r(Y_R2bY_qaSIC3+wKlGoD0LX<1gQ=|H%tZe{DGXNQ-tDnje18!9c7 zoh(W5LODX}e}na?vGW=DZg5U}lrb2eXx+XEaq)nc`3xA#TywK>3+!sOS`({2Tgv_q8KIVld)xdPC-RCbcGdAdIV79Q z#Y$CVsM@g9R!FzfDH>u87YVBxGjlI~y)^(gq%=n}@47T6p#l|3C~;NGju6q709 zR-bAdD3Y)K87$3h+%Y4fi^K}0bh~9L6`7r)A9qJt%NzSIr-(jD!LZCHeMQURy&B;1 z>rfudf*Q6TTZjZyQ6ZNUn9Ww$X>ylGka=~=HN`L9c*9JEyUE1Svacsd`h+hK?FO1A z$*S1Bqe1*+1L6jMsGj$Y+3Ne>SKPqd*_gdy>{bo&sgJcy)~6r6D7TG@oag`?e|$(@ zbd;qR&{Fu6Y~xL+xUKAQVG?&=AUo_Vvr_g@+&)MO0%to`h>swUf>JyXncNC*$Elo- zVBho=aDV-LQw0ba08pSta}aPT7jf0Hkg5XqSxYW?XT8`;F5xK=B^$MM^Mw*`1M1(! z#)XW|Pa7#9)qVOnHxv8dwNWdyw=}tr8CG^mmpNW4t?`0P|K^}$z$({`IZeD5qdWFi z&m4^QU{o6zrj&H&Qto(Tfe0$k+~ML4-~;v_-Ujb}+);2J>5B%!2Y~sg1RryGfgOFC z*ks`3I|}>(gp@{IdlGj8JO~3MBmGJ~apu*n|J32$@BF$d=`n3|`gzuL@9~ysr-A?7 zD}wPW>InlM4Evs$({2hepHS&+L;;;gd-9KBx_YQce?yOj!K7kA@t|U$`k(T)8BsRp zA+ZsxQwf@{fEzeIR%3h*YtpirV9iDh_9{)+*ELg#hp1v986#6bh06!h*aiNYaMXtx{-xbG+%90#cb{(dg zC1{>e5=eL-H1)`x{{B4u?NJYK<`bk}`W9JlYVuLxgn=s9RBe2|EYd%rcf%1M!GZV`m zSdo3u%ucCtBL;9p7$h1(JJg;@s*Ir-QQ8~&NuVO4fB6&oy0?t(u(CWao7nOQ zj=^wRl0q59ncOr#FidLXgmKMDhx;)6&cb65bc08sm5~%Wq9!g2GkD8hX0*)?a)?b> ziMJLg4DfaTKR(L43nhNH^^9t^U>JN{VaL0{{C@~3e(70aho6WT$B-{jKV*cyKy|<5 zL>C4`(p3`0p1IoI?Id2F1Ye}}jbCJxT(Y&8pzgxkRGABm1cGJh9aE<8z7GQ-2W?bq zIyYXCf=B~7mHkMK>Ea$Wd89d0nkHx*3QYMP(5i?eDgBm)oO|&QHpZgpdO9{oa&oMd z&+rOv1m@i@#Tho_L?+s0X_$CfZWnzF0LOnKLXqGU$Q(MW1+Tf8&=14xJ!lDl1;!w?{j zly7#Wtm%0C_}&_|j(dZjwSfw9lcAZ0;#~nDPZJmOwP`yVUu}H%&oVy3vsUA`K8?a; zOwO2h9v17eKiyW^pX~;n{zF1hJhh_F&RA{wI8&^+20p1i46<8GkqyLQYbP;q?Fu+` zHdrs?MK-mFT37%>il4N!m*_VfQJ?u}_Bj{;c*A8$=YmQ+MLQ@&VazF^I)*7kvb>3w zm1P+z>X1nkf-7UE#dZ~agZpW#k{iSo;b8D_WyaWT!?Yr8KQMzMG+(w!UuHIV!6i!A zx~Rajrb8O6`^?@RpT3ZUM``e@e`V~Qb8nP%Y_UHzn~`6@l1B5n-0BOaQPks69DuTdJO>*biW~HPt z^S|F`{`cvp1Meh?zKcE@2UL^{H}dQq2wc|EJ5;*HtYc)t#oFNx1}zbU7Qi)`LQ9l{X)YxRe4<-78%fnyde<4PCA+T0S-a~RQrJJnHmPUEra~D0T>A+j4sT)!EtOZ~ z#N89@qR~DZ#2ouakFqhVQ2>(P&CGv(tkGDqWFZ-0mibaTWc15(y6fpw;%_|4?h~T; z^{J%K)28Q4*YT!f&vE8w>hn{Xb{N~h7N}}a$>v4vJiLi}P(|@n#mZ9TwJvqG5^xHq za3&ZwS~+Ci^jb2*c=TTfJebS8mt*J5s-UtzzZ8_p0W<>0y}C!T2fAmPsl5qQ69q`E z`LW%Uldo0kqe@DXwQjeUr>4q2;#Cy;xuPyXk3na9dS}^syL!>cyX=r}hJ4IRR`3^l z#Y5^&+3R;R4vrAp#JfiP0bfLq!Bh*|xJk;tGYOLpCvQf>yb=N>4Es;y3f+*$rmDm5 zg@+}H4mLeZagWt~FUv`DID+{5fvQAA zqr?Jl#Ep$9w_mmQWXOI;w*TnF$wmFEQn5?D2zx*lTmKaiZL%g%0WkuGfZVg1yddk# z1>J(*cQXR(M>F$+ZE<{=L=aO3seKUsv+VBOOyq!k|J;SPyKMcewO~bPh8SuGRx@fBJC%LT(6xF<(SsuoQXK4OwF6&HUQwW?%Gn4WKVT_v~Kj6#x z_1<`B&E&v(+thfW+bv-i0OF1JU35`OFx)<#J(=5eL8L7#*j%@B$jB0nR+QYx;cvB z1sB3TLpm!>Yl(qdp+k>635(s~`fse_j(|mf&_N z!C9BeIx4ANilVehstlZPc^zn@e1vDhJ30p;A-OoAvmKHEe7*>x!Ph7iVF?AjC0~_6Mu8~ zrM75;MN@Q_+0M$(t0X=YSY2Fv-aQyzT)PT2m%9e?7F=CIcr3OyHa4vZvhF*yZN8Y= zlL;tnsi5~l4LIeKJD7DlSayxWDM)Z(*9%65(%kh$=Vg#h68_D<3>aNklfc56j8Yq7 z)t_K>bK!8rO%(n6YqXE6s&L{DUs>%kRD;sMM?r{!(E71wMabilx>3aU8Oqu9Xm>U@ zutzr1c{LWik3%4S>2W+5<~n%gA5mRUA3sDNYgPz{bOAn3na2b3{A#wW9z4ttc`MlN zmzE5}DQ6KaFn>aPqq>LhPYiEBv}dkNRgdXrI}b0qhI>;P_#+4ztCA9nO*G+ynA9#Z zf_6@vS^pm^9Z}t%$l?6y6J3u4sBd_=jsb|Tz!Dp^K zbxf}u&Uatr?ivRmc}JuIJh7~i-vRHXUH|8ClLr^a)+)cm0hgKv+djreQ57qnfemeT zUg;IBMwPlt+T}lHK$b8h8CWqgXW1udituT~gJ_OdZ~tzCM#V7Yz|t$x-=c9Et9BY% zVsO}AFqhP4e5q|6A>dKlUSHJZTxaWU^_pJ>o^>ny)s(!PTxVviJi6FMcEItP54e$Y zG+5GebdB3)ja6%pdl-Y^WDxyYzts3z_qwOh?w$Va__CrvRnao1)foM6;in0Za&2W| z4s9g^-cfZwqwwvMZ!g&K+WRYeQRrVz9DXmX6f1vF(y7(CxI0_k0=T?drd3Nuifoi& zEjL#PwtKkNxxz9(hW4A56X(+aJf0v1mLNv812O^z>98}CX7+l6;!q9c!XB~yx-*L< z;ugPgjmulUv2~W=lJ#`b`RJef_xr#9Iz0mU<=QNn6&#NzR%M^wJr&|0=*`Xr$LwM8 zm3i3K(3Z*rhmkMFLyIi((&ABa>2f`S#?A?Cx;^WLrwpe#ba3>4uT(iO8PQ&t!YH680F)mboM0 z^Jaw>mnZU;lliOhu`ojgqx&#r8z%6Du6!%kvX5y1Zs2R27vOb8%O8U3lL)RyxXW6oA0$1F z$TJ7&T5l#@FNA^hz*Nf8Iaro5K}T-H(m_5f<*+!eNNgMBXAl^F%m|-xEnDy(8KR1$ z&LC`SNSQvg?lfVf6~9ay@P!9cEZu#Am7n|_xERi@!#P;)9;MP zu{T&wr$Py6E*S)emRN`VJJeG;HRm3 zs?8UD8#1~BfkIXgaf{b}3#d{mpZHVjrE}JcyEw2fR5FH!VI(lK0SQU39YTBVc;g1x z;Rw8;YVTyD&Mtx59P_}#v{zxNx5>$#;Bx$z=>Z^H-mXBlXUw}XTOO0YcVkkqXjiSX z*gkxI*P8?qy4EN?KWiMX<jfy78#a5|;@)4o%`wwkA46=UM)3Y{=6+F99N@O?`P`ga2cYNF7`Hw$^i)O;QM<+) zpE+h1#{~z+kj^PPM+UH`{{&+D9#5LSFMT!(d;^xBsDXrDz8{2ZLi6~-WLEL5F_2nZ`!s=+* zNUnt9t@cjMoIq-2dM?liG>{8=aSvnzAE+?bZx>X5IFIweahE6`#NZN-5uGoz&3WOZ z-~k>B^sVA5%vHj{1A_I5doqPr5Ce7dqeRY+mC%1COsKlvyf)XR!h%iE>j&$6p_7*6 zh9ynLUO_A1rUkW(!tQTtjLH1?07>O%iH;2_aXO+1Pt9Sbnawz9Gt2R*NB-in#*`;^OO`aN zLl#h3+1ZU7Vd(MFI<~%uV1sAl)P^5`S7})?BelJ-xFzL)?<7Axf?TH1^7r?iNV&%O zX~hAhVez=s2r)ShudTYCS_!f_&XkP2Ss!kihUHYY4MZ9V2d11p2+q6Q#M-TQ&P`=4~U=y>ttOzj2(mJ=s4-H#Ra}K-`-cqnXoU>!a=I35p zBgB3%Bw;K3?^QaYn8meVN1YE^azN9-bn{7Jn@PIhpPisdVznSmFXBqH3@z+aQL%g_%mVjI4ac8o4w|;>7(QD>pW!yWW;wV9cWGW_WIIzo?m!(ATLmT=% zS!o@q?!e=j8iat^US438{W?30lO3RCDNO|rt(~Zja-$Ty?0^dS&x2KKxe4$@*wi=Q zb7inPIyzbY>nxaNS;u`+IpJpz&v}<}1O;u^t@HVMhGa&1iK`m+K3m+a2wp-)MFLaH zHergY>(E{WH_d7q4FHxPJMEz57PVK|f<5KMn%Bi*zb-JU)OF-WhCA!E#dJtF z69+|Trq~S5s}OqnlPq$R8j*7?dO{V$=rX zSPo;|leDTUgxuPJX()c()2=LUjHltd3Fyh_#b8s5^af4WcBprwX=itV*FJ<^wlBR( z@sVYLM;DR8+tTUxim}8ez?weW_b-g(>?Y7pIWO5{+vLb28RsI!d0kw4{zO4UNS=5( zrkXC)#CVzD*4Bm&sFK{`P1@K>yGw~~o1UbCx8ZK^Bz3xO7LmX{z2_B&kCL@F))jAI_FQVc{l{sG#ii-X~k^%Lm*QgcV&IUw`rPs2+glzpdO}Ykc-!g`Jyf`o z9ww&85mI2@C<6i?>e^zhjjiHZF|dB4R=-PN*I8gHN3aRXq&-C?5IjW>`=IZ3+BhV> z;cwQxE0`^&(x6xWYCpQ%FR^|MxBafx1@@Y*v&4c{X8zxBdrcSuS-iUaW;h(4kNJXk zD9gB?_?~_a63%vBqStR;gU=n9?4OPsKaF0Z&`?EmiOg|2h3AgnU^qI6EsGko4^F7gi!Ib+?l{b-9<4BM%!~1!GD+S$=5y(3QxY z+V4I=Qcr{ycKs|ZkVoKBhI7u)dnt3Z!RhB%{~Lox8G zvHA6ZXW3pcrHXUm-#)AMmB#X6nAh&NW!Kc!?kO{}N)|!Vq6S7cz=mW>Yu4i=HJ9i! zQS_)ciB*PW1KnuV;k?h0{YR&U^zwx0669?Ve(f=g6@fpecBzsa`ydHOr4g!C zJztnfit-ZD8O(qfjah1Qo^$aa?iCULB4z8K+1S3|zW}8`TEElPINEG;+e{|%#;%s& z(qr3Gb7TO2w&kj^U}W8isY_3+tDH24yPN;5xjSrDZfIYyJ+4OxgS4tp@<>)-T!gGh zIp?L=(!_jJ8>s*Tot+0%b6}Z)Tr1d2<^CT;N1>Z5ZkVtuh6&R69xG~ti zvPCq_F5B&Hk1ZFcuH3ry%IT|v0i8j=XA{}Zhlon=IunmbYu7ie7t$CVRer=j3+ZxI zo<%Dw&!7J-Gmo5=m9rdK5@uW?pAr87v0)^Pc_SB>sc|896J=)TLeJ00KuBjF&p0+C zN(>@IEQb*ya^juTE>cGu%5!#hp6%18G3~2&O*$nSGm(L4=75!hpOZ;8l?sBu2r@g- z=HiSxqxVis08-`e{%+>Xwtt(ve%l#r?*_!h5zz~gVIU23SVfB_?vk1o^`B#~vH%UDRdU>fdMK_TR;wiD><3_m-Z~#z;rU z2=)WT0FnNYXl@P@!^2`ZVk^uU*b3wPVQDAC_7uJc3Pi0?r`>;QFbC-ZmhHU&8c-9} zOYPrE<^eOC8mV2G?muK^HY;Z#sEy2<#4`u0oXl1^kp)y_ncvSs^uHLU2rh^vBK<50 zoyp#*yl^7t;Lg`x%L6A`|0eCv4juzdqB%-T?A)z`^k)g?mV5~OU}#47ESpm9vj+pi z8KrGXg>Xh3O_Yf-QlpRP(F3kvE{E8FtlYrL5tD?!XE_eod|FDzAI=56fK}2lYjfUs-x^S! z#weoJa`fbHsl3or?1`RZmGqnw^n?@iIQYdl4f}PD|&I|GBK)rqC zx*0WQY4u@Ur1H*}GayUv(6&N?^d8dIu<&SFo5?E!HEq?Hn9~j()S|4*MiXY5mZ1kk z4B$f@v`j3~crg>7p*ha%VSc?#Wtd1&u=xCy|+O+X&fO&;a+8}<-7wr)Du@g_e9&)N2yu0J<)@aDa?Do-G4 zZB33=CtV{$fY~8z5cCl?2!(b}Mw)JY8MZs~?@4P(n;~EPtfO6n z-?gg9?z7tyF}rv&QdJeH*=eim|H$CIpWC)+(>C#o9phK5?y%X*w^zkNv8qSam>8>Y zAM|ggO=4lZN4^jR$p5g~SeZv24r~dZ>m__5l#mfFQJtWh6<0;v!=6=;XMin6^w}T+ zYqmdv_%nbL0|HG#ECY-mgzWr0$XkwNC@qX&(6p#PetS59D`Wd)8|7J>f?xnA|57&H z{dA1|f(;6l)Ng~QZpYiGZ`{7U%Sk>c1emjGp3t|Fga}5kz2*c z*N@zK1lHe+Q#)RHWnP;b0c99jFBy&y4>=>?-y|q@n?(-{&9=)PR>@<0yY9IH$P z+#JMM=^kMXtTG3vy6hKts`!v9Hz9XfLC1(BQF0wbuShhDVk6Ivz;F)TJwxJOhkCn* zq`yi-ik8c-+eSu5N5nmY!^4AW%%rr3>G_8-mu>~vORQPGg&Mi5*7G5AhE)MFxD<4L zkabxFnMiu>dXpn(F42fY!;VR&tgBPwI#>1_Hrj5#g6irWk-Cvingq9Lu=r*L_xPL= z^VGohGMZSc>T--_0A&bnJC!RQS?!6zWX|W53K<&>wd&!r3s(`MLj#^4R zm8n)JGcPuo*>ULs2GMVcpi_v%o%EYG->gu2^UX8cwsC5=O$!`92Xfpgd<<;gndfpE z@QfyPoJNmR?|J}9TZBka3wa8~jG7qkkR}+k&(ZBonWC^baeG5VvsH{bVyr1fHz;lY zRJWwn*t+Cn&z`!szs1DK@L@;j7ID25Vr-vH&S|Dt@- z#pIYrxF(J6%DYZ5jU*Q|5dOND9qn5wwvu{07+Cfxo>Ec7fDF8C9&8(n)|>&jL_Fwr zy>D#Ms`WDs%?<5DeEn;nolE1wsR4kcbuJK6X6{Q* z>9;8%*I+rdF-1f-M}w~!&QkQcon0L)g)vzZ+IdslL|B1k1P)(r(VP9YjhAeg@rO4C zDrRQ>wbXB#ShZ!#cODMc81J~l5O4vK6vm3;3t_Cn8T*tD#qW*gYFI(Wj$++6elVM=4G+9-j(|H9U+ar`iUbr9P?`%lB z4f9w*o{0xwQe@_tU=WpX_AnK|>8E|@>3V=!J$(p^3bP#OK3h7mm5rZa#6gr(C4)jz zO7JuT^mm%>EHmwuHoK=f{go=eXJ!g4RhrME{i~oqSUyw9z+zo5=bzz}GsC~@FZelc z>}er0hV>9DXYqf@^RL6th_M16YKg}7>n*4ApO&vFXfMrkZlBX$YDW}S^ccdh?n|Z6 zeV5czk3J-z+sqF&u}5C@B_> z4OgjW&Uj!baM+nm6~}WHAY+d`HoHZ==EuQYC-jPmEzgmPRzPqoT7Us3_X!~@Oe>8DqGs@F( zYKL^RuNn!zHc4m5-s~cn&oQA^HNKi7?Q}o!v8^Ik8i=PV&il=&I6ym`>8Qy(brKDY zjQUu@`JKKcsw1isH{X0hb%eE~?~GVqq&lN|>KkAG2h{nrb07fzajF|H%ZBQ*)(4fkZ ziZOcr9pmTUF|Pc_`1yB?R2IYY?+9Y@?1gcAV0g6+jkX+aQA790M+LeU9o`Mlyn^7p z&-^cr2V(bdoEqsk{fY8mjEo0h`dYwGt%RL6UJ#})$a1L^!t~LVubF9>Enq?AF`^d4 z_<;%aU-~vz6a@KQy7ic`C|Oe&<+pBs>0L^^PsGI3sql5TEBHDkRt}c`U!}Y+qx`T^ z-pR@lkB7gfvFmzMw2ym8ACF4_Q<}?b<17%zWdR$fk)7n~DM#zkyeVaxH_^}y=PumV zNsqksY`ZF;Yc0lKCBx&TfL$-=UoYohFL|_=BX^;c+eYaDu^Qh;bho*1qkZGVtQz09 z{+PbL{>Q1GWaIk)^22Nlt0e%8Kb6-$dLa>n^V&z%Alq#C?Th5*7Yu$&qvo8CowP({ zCv~v?0Hr4f=Fu5_q3POdn|6c`%}iRWe7?%k{+{9b&a%}NJH+PHOQdhke&Q2i)x1zs zZO|L4Vqcz)EqeJA&_Cp#v`GTTpReV$l@`GCoQJKnB->UBJ>@}52J0LT=^PL5Hnq*P zB!|s3jibql{hXZ@4a=^$b$3Z6^g?gfvWBj*VE9 zY5v^&dl;h@Y^Squ;kMIYhV4`nf>)#bs*R}*1sr5%VNK{F7Q$glt8|+pxA7B|$2lAnp z$s=ElY@(A3S*Z!SF}+?)}I;x5k>A zV@|P!LSu;h&R_t6V++S|FL0lBFQ93?W)pJ$_E!~BGs^}GJYYr-E{^r)c36(wvPb9! z!5*zVc9&T3rDJyioc*j=wfEdNU~S76vzPQfkGT)pe1t~b=eAfIQyW6rw%FWyi48{v zoEfQb^Tv5F%VHK)Hv>+f4z({wSRz0gb031Z-ZnFH+tS|DfA{u^rrxDXdo4VA>(dWC z^z@!fF1A=MzC;|5FTUiGi!(9a()|L>oic^Ev?%EKo-99;1*4hT6=ar2l~ssdqukD# zsn;t?KN?!asY!KqlR!ErievrwF+=&OOvU=&)+d@_1*>D^SP@c;%Kb)8PC>loDK zw=3n{8Rch`@}7+HN0ss+R*vz@P#5dM{$ig=%lCn+bl~ZMWTc+r0SXSMIv&E2+`lfBUz)Y5vP8X)F35 zeET#e-pyg_)a=^|=yRF2PAl%$&&SqTqS!id>2>m@*U6V&CtrGf=_U)~wbfl24389v?_KHeEV-Wfj9 z89vq-Y9p!w`lb>|@9wR;Vsh5(s|y8N-9$Fc7ndBl89?6=0DW(uNOi8a`cS{W8|HYX zey>@ZH3ks1uYD2uDb+QKXxoc;+i8Rhy2%IpPVrfKwGeHz96(&kHp|U8-Fp@t3)EKC zB#oN~TdH@-%1~9i!x6R4&g%WuJN`p=^rJuh+0a1I=T1r{17OYe5qUAyQPJL3`CwHn&YKr~priG-9#|70MYtVYz0h$Htc^>Xi*Q z98LtLfMLr{H_B*=i)5KqMc3ce*1PNMH=Ypx=7iqa5!|(DZ2VKp#m4@YB2(&nM7N%P z$ZWafs?=ZlSMl|>2QjwC!90?AmZ2Fl4YF2kyh}su^>d&aNo+4rOdDCu8(FO2y=m-4 zhn+exwyPnK(RSX*Po`UPBW;?}h@ZbsTLpGUhEMlEE=|WmzHpj$r1c}9Nnn&4z~Bge zKx@bg{D#orXrul>M$#sOa5s59fZwDc>}fk=v|TYkj?QWvNu<+?CrND*ZH-^g)FH%A zqi*yGaYX!~^bBEcFWHKqZp3#z{Ls#~V1)E?m{u0S@-B~)PSd9v*uvq9143R0YAdr9 zDw>fJQ6&irC4L1KRIzdOiWRHj74di?@UmMhcJdNOc5mCdd-v9DyT|Kd%VKr-wyCt( zTwIE8IF~*zE)$ytFJ7bB#SAE?d3D zU+t0HWx?`LtaG5%Qx~l$X$E@lB)sqxp|?r+6c{EmbL?u6@GN;{ITVzls&2t^IU{rG zPJ70IQRln##)!w_pq@i;SQ$9|MRM~C@_GvkAS9;_*D--5Veq3R6rwGQ`Js?e>O>)? zjecUF!te8V8myh3!M5R5P2uY1^`jN>sIPd$QWFk@qM<6O-euF-oo;7aFw)T!t=H=e zjn#{KEDoPF;SPDqWw!&Mk-}YM9DjiPR4QCb)hHWd3U!R{d^@FbnD}t|rc?0cCD>Oo zxzaLl+mV<+(%EPr9+4=ENqV*=M~w-w_Zy#?TC`}RVPaBTwq*G)elxN}bbJi?>^?GX z&*HhrVTc=_d3LAqPhkUz;})?|o`*l<3T+^cGBCjOAsqw!IPqs?42N66zIxOB@^OTA1l(Et76`!O2?YzJtJj9B~>Bv&+iTy$E|;nuGk-l+Cq(i?&S@^ zgsY;$t8@G9rs9`Kuia1Dc18k|R24*!Pv=YX;W58d&-=R%0v8A{S zbKWcK6WQS;N@XKYAV3x>b>ye`($(JDgztEDZ$rRfD6WaM4zC^S3i*8%A#r5QNNjO; zv)$X+*yNR*(f;=CWg~4xKJt&e;aGi<@Dhxb3F3D_I-p|JSmjHlgJT8pDkWSObc8$n zVC*AOO@3qcs+D5!dh*!%k&mxP{R`o$Pa{7(gDZNw@Kxxw4k1aGVz#E&E|@C@>ny?0 zp>#EmU_V|5%ejYe$XlTF9>6K?qceLaxw(?OX5f4mfRA^Rn+HH0CX5uvS#2br;>bP@ zc1K5~mdLtU&OR59W`c+GOe!mZ2!GPZ%2#O

tOoZDe8ce%>V4mauJPm<339_c?PnNgFV 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

8wA3$ns4i`zle@wL zXrh$aD$I|hlrP%LM%{-nRY-c+OQw3H0FWMyc|R173Aje|4`pUT94u25kW46r<%=pA z6JEk{L=^`K4X`3nWf?*WEUO4mMW}`q6e)QTP_W!0#SKC`tfWX;fRG4#=?KUpRKie> zO118cO>+U%Dc#oZwb~TaH=sEKYFk$|Z7cGceagu9VROp7 zHQ1uCI#V^Lx=+5W><#$6wWHMJH($2q%K7^NbuEyEHx-T6_veTZA2kTra>uu^pbYb7 zXY$rmX^SoJ^_Fi^LABOYhHvh?oZZNVL20Jgrw4=sq=8X=6~{2fW6oXQd@2dEgv8c( z3uDSZvoI_O7r`1<JuLO?g3QvfCa*4H;|e4n^=5d`yNy0S&v+fS-+$3~0gzu$F)_Fqc3(jpfLFqv)XC!iKECepq)s|K`3P*#m8C z+}I4)-($W*ZJuFJ2P_aOSiD8#>m;7+A2pgDd?GxEP;&UhvBrd5WNqyp)_I@SDrD+* z@7Z8>s5R6#{NV%%(yXCVSn22z(LIcHX>e(L=ANW z-j0~cnw*?+lJ)55Xgsuh)u~{WqMjMHFGT3Dvvx^Q3 z!i2+-U?RPAyyjEngxf_}pr({MD8CT&xaf|j2LHJhg+QONAu_OlO*zk|L)-%#aE5O) z1j!H`2z59@z}chuY#AcEOJ=@DF2h4~o9b08g}8RM+BrVWDHVSlBr zpW+_0^8z+i3fLH;QE|>Q)Ov%U()^jD+w|cUoFd`=lf(Mm{+y7Ag$d)l`35~ml=EbX zKy(Q+Q)m(sLP(fg_hNg9|5#xQwUGSNU)JV1udI)$6dE(q?sk!gn-!z33_w4IHRM71 z8kJV-Va2iiL+@Ez}R` zRpH(Acd*Uj(}{~IeW7J;z%NNVlk5vyes%*{M*bOjY->Hi^i5b&6M`M+SMTPvl~jC! zPD*F=JQm>}R2Ad=^qC!4_48HowN(p+zefL7jP$1O?_p6nr^`OX2D{SdGeUcK$C$Kw zupjQRu$;0`udlp_1=0VXM!hE}cKHIH?g;~piONnES@~a}Hz39 z9E*|-xg6*lr0Yu4OXZR-A2h zRcB9w@43eCs-?pt4Z!6DbKX-sz4HsyE)ZJNX-QphSKZb1Ifrwm!KqiAvYpU{={j=% zVzhXPninrN*z|ph86ojbmk>n{8z=pt>}*B-iu=#R6|li*9LQ(ZG%CF7=z?OcgPnOl z?&2~34@{iIq|DQ!r(LvHx)SE2r2TCMyg!XAJu#MAF5E9ZC3t#a&|S}5JjRhUD=;X& zq;X3A(62X}+V3p-`)j>Ga`)r1&nKi3rJ#yblo_Z$bt z?zlznI(3UkmT$jQ3cqhD`n*SQFsT_w;Kp`gZ3*(mVHYyCEkZUS$o{DsSR1^cU(A=o z_VfDdjK#-kvN+YvsET-qtB49y8Us&{qzWT8R_-d!^X{J7on;5l%Pwl}T$@t$F3VAT zPeC1cc@_{i`8wSxBdwucTwDck^67?R^oTr+MU~dW%-K(G&idQx8E934;_CK=9;90< zNUe9by8<1?ogIRY&U|LZ-CZ7jDTEUS5+80yEL#W)mQMl>E3f_Xd}ohEEZ93p|N?H})D7Yxzo6@8qw)-&UeB%z|r24IZ?*L8js zkE_~$OJWPd+N;ZX7df?9=YgLetj~@b5lvDQ@W0OBC>@)ZI4f2A)ns$$w)NSHzHH2v zJV>?LGe+aps%XG#Oss)+qS@JT_g-fFGuM1snVFJb{aPrz_~DaB%d+cX$J@WxwOY(- h@zZe_lV3JKRvdRg6LS4>E$I+WWfr@y|LMYoe*#6Z(kTD{ diff --git a/docs/_theme/rl4co/static/fonts/IBMPlexMono/IBMPlexMono-SemiBold.woff2 b/docs/_theme/rl4co/static/fonts/IBMPlexMono/IBMPlexMono-SemiBold.woff2 deleted file mode 100644 index 79dffdb85f745ed98906f3f28dfe833acd98e287..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 37592 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 diff --git a/docs/_theme/rl4co/static/fonts/Inconsolata/Inconsolata.woff2 b/docs/_theme/rl4co/static/fonts/Inconsolata/Inconsolata.woff2 deleted file mode 100644 index 5d7a78e09285ba6dc9b5a302a5df4b4fd41981d7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17804 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 diff --git a/docs/_theme/rl4co/static/fonts/UCity/UCity-Regular.woff2 b/docs/_theme/rl4co/static/fonts/UCity/UCity-Regular.woff2 deleted file mode 100644 index 86aafa85c992b21d5b52a56c5b844abf0b4b6eb9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24948 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 Dvb$ce diff --git a/docs/_theme/rl4co/static/fonts/UCity/UCity-Semibold.woff2 b/docs/_theme/rl4co/static/fonts/UCity/UCity-Semibold.woff2 deleted file mode 100644 index 50be9a4c052b7f26605e94e11f5a85b2bbea59e9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23504 zcmV(_K-9l?Pew8T0RR9109()i5&!@I0RjX709$AP0RR9100000000000000000000 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 - - - Group 5 - Created with Sketch. - - - - - - - - - - - - - - diff --git a/docs/_theme/rl4co/static/images/arrow-right-with-tail.svg b/docs/_theme/rl4co/static/images/arrow-right-with-tail.svg deleted file mode 100644 index 4d72c1d4..00000000 --- a/docs/_theme/rl4co/static/images/arrow-right-with-tail.svg +++ /dev/null @@ -1,19 +0,0 @@ - - - - Page 1 - Created with Sketch. - - - - - - - - - - - - - - diff --git a/docs/_theme/rl4co/static/images/chevron-down-black.svg b/docs/_theme/rl4co/static/images/chevron-down-black.svg deleted file mode 100644 index 097bc076..00000000 --- a/docs/_theme/rl4co/static/images/chevron-down-black.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - Created with Sketch. - - - - - - - - - - - - - diff --git a/docs/_theme/rl4co/static/images/chevron-down-grey.svg b/docs/_theme/rl4co/static/images/chevron-down-grey.svg deleted file mode 100644 index 82d6514f..00000000 --- a/docs/_theme/rl4co/static/images/chevron-down-grey.svg +++ /dev/null @@ -1,18 +0,0 @@ - - - - -Created with Sketch. - - - - - - - - - - - - diff --git a/docs/_theme/rl4co/static/images/chevron-down-orange.svg b/docs/_theme/rl4co/static/images/chevron-down-orange.svg deleted file mode 100644 index 08d612d7..00000000 --- a/docs/_theme/rl4co/static/images/chevron-down-orange.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - Created with Sketch. - - - - - - - - - - - - - diff --git a/docs/_theme/rl4co/static/images/chevron-down-white.svg b/docs/_theme/rl4co/static/images/chevron-down-white.svg deleted file mode 100644 index e6c94e27..00000000 --- a/docs/_theme/rl4co/static/images/chevron-down-white.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - Created with Sketch. - - - - - - - - - - - - - diff --git a/docs/_theme/rl4co/static/images/chevron-right-orange.svg b/docs/_theme/rl4co/static/images/chevron-right-orange.svg deleted file mode 100644 index 39b7ac28..00000000 --- a/docs/_theme/rl4co/static/images/chevron-right-orange.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - -Page 1 -Created with Sketch. - - - - - - - - - - diff --git a/docs/_theme/rl4co/static/images/chevron-right-white.svg b/docs/_theme/rl4co/static/images/chevron-right-white.svg deleted file mode 100644 index f4832286..00000000 --- a/docs/_theme/rl4co/static/images/chevron-right-white.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - -Page 1 -Created with Sketch. - - - - - - - - - - diff --git a/docs/_theme/rl4co/static/images/home-footer-background.jpg b/docs/_theme/rl4co/static/images/home-footer-background.jpg deleted file mode 100644 index b307bb57f48511ac8f1e76ac6bdf6cea97441b21..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 38907 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 E2S0P)JOBUy diff --git a/docs/_theme/rl4co/static/images/icon-close.svg b/docs/_theme/rl4co/static/images/icon-close.svg deleted file mode 100644 index db35a031..00000000 --- a/docs/_theme/rl4co/static/images/icon-close.svg +++ /dev/null @@ -1,21 +0,0 @@ - - - - Page 1 - Created with Sketch. - - - - - - - - - - - - - - - - diff --git a/docs/_theme/rl4co/static/images/icon-menu-dots-dark.svg b/docs/_theme/rl4co/static/images/icon-menu-dots-dark.svg deleted file mode 100644 index bbf461a0..00000000 --- a/docs/_theme/rl4co/static/images/icon-menu-dots-dark.svg +++ /dev/null @@ -1,42 +0,0 @@ - - - - Page 1 - Created with Sketch. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/docs/_theme/rl4co/static/images/icon.svg b/docs/_theme/rl4co/static/images/icon.svg deleted file mode 100644 index a3ff2eec..00000000 --- a/docs/_theme/rl4co/static/images/icon.svg +++ /dev/null @@ -1,62 +0,0 @@ - - - - - - image/svg+xml - - - - - - - - - - diff --git a/docs/_theme/rl4co/static/images/logo-facebook-dark.svg b/docs/_theme/rl4co/static/images/logo-facebook-dark.svg deleted file mode 100644 index cff17915..00000000 --- a/docs/_theme/rl4co/static/images/logo-facebook-dark.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - diff --git a/docs/_theme/rl4co/static/images/logo-icon.svg b/docs/_theme/rl4co/static/images/logo-icon.svg deleted file mode 100644 index a3ff2eec..00000000 --- a/docs/_theme/rl4co/static/images/logo-icon.svg +++ /dev/null @@ -1,62 +0,0 @@ - - - - - - image/svg+xml - - - - - - - - - - diff --git a/docs/_theme/rl4co/static/images/logo-large.svg b/docs/_theme/rl4co/static/images/logo-large.svg deleted file mode 100644 index 4a6cd73f..00000000 --- a/docs/_theme/rl4co/static/images/logo-large.svg +++ /dev/null @@ -1,61 +0,0 @@ - - - - - - image/svg+xml - - - - - - - - - diff --git a/docs/_theme/rl4co/static/images/logo-lightning-large.svg b/docs/_theme/rl4co/static/images/logo-lightning-large.svg deleted file mode 100644 index 4a6cd73f..00000000 --- a/docs/_theme/rl4co/static/images/logo-lightning-large.svg +++ /dev/null @@ -1,61 +0,0 @@ - - - - - - image/svg+xml - - - - - - - - - diff --git a/docs/_theme/rl4co/static/images/logo-lightning.svg b/docs/_theme/rl4co/static/images/logo-lightning.svg deleted file mode 100644 index 07c3e5c7..00000000 --- a/docs/_theme/rl4co/static/images/logo-lightning.svg +++ /dev/null @@ -1,70 +0,0 @@ - - - - - - - - image/svg+xml - - - - - - - - - - - - diff --git a/docs/_theme/rl4co/static/images/logo-pytorch-dark.svg b/docs/_theme/rl4co/static/images/logo-pytorch-dark.svg deleted file mode 100644 index 9b4c1a56..00000000 --- a/docs/_theme/rl4co/static/images/logo-pytorch-dark.svg +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - - - - - - - - - - - - diff --git a/docs/_theme/rl4co/static/images/logo-pytorch-icon.svg b/docs/_theme/rl4co/static/images/logo-pytorch-icon.svg deleted file mode 100644 index 575f6823..00000000 --- a/docs/_theme/rl4co/static/images/logo-pytorch-icon.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - diff --git a/docs/_theme/rl4co/static/images/logo-pytorch.svg b/docs/_theme/rl4co/static/images/logo-pytorch.svg deleted file mode 100644 index f8d44b98..00000000 --- a/docs/_theme/rl4co/static/images/logo-pytorch.svg +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - - - - - - - - - - - - - diff --git a/docs/_theme/rl4co/static/images/logo-twitter-dark.svg b/docs/_theme/rl4co/static/images/logo-twitter-dark.svg deleted file mode 100644 index 1572570f..00000000 --- a/docs/_theme/rl4co/static/images/logo-twitter-dark.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - diff --git a/docs/_theme/rl4co/static/images/logo-youtube-dark.svg b/docs/_theme/rl4co/static/images/logo-youtube-dark.svg deleted file mode 100644 index e3cfedd7..00000000 --- a/docs/_theme/rl4co/static/images/logo-youtube-dark.svg +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/docs/_theme/rl4co/static/images/logo.png b/docs/_theme/rl4co/static/images/logo.png deleted file mode 100644 index 39b45bef70795fed50c291cd3a30b42cb9d5b772..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1305146 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

  • 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

    3;ipft@g_GhA^}F-L-JF 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�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

    9mlK)L4UzNSG|nFpf|YR)TwMwKYB|h z-83Kg-IEmXXyV~C;;E?aT~|uR(4-!v$BOoPM8liz&1d#XC8~(FWk<)={wX|>KR4r4 z-^BwV002UP_QGg`Q`tLnxtp%~p5s z`iC8^@W1hmq5&4auTW6a(iZY0(AHU=|Aq}~i_t5>AjK4idBg9q7 z^J8I8!7Mi#hJdQ0RQx(mNI>{;l|kHMC0T|i2VNsq=dv10%M&N@U%%+%Z+8r;!L3-6 zx=rWU0}WqKc>NrC`NZ_xAyOACcH|g_ZXvnkU0$;OpyA~3y%0^CgHREEg@g-9^or#a zLC03<)Zm%tH-WT2qyZgxzO7|Zox|}u)N*Evm=(+Q{;dYU8@?q44&Q%>BY+QS%|q;d zdtEm-(%l~$$Jm}V%obf%>@!p%K=9FfJJCo+pwH+smY<_x5$YIEAw_alr+K{Ox&AYF z|4R4?E8}YkG@ur&j}!fvKtiOgvKe~>fi^`3^JuPmff3Se;Z5M2g(g>ZwOMC?tMzZw zXGx%~-!^^BGyvJhooHvoH!|r|6*WxU2$vM}2q~;RBis8rW1YeFxYhIpSxr{J{x08g zlOlSnH_zso45n^RE`^CTpI>;Eg@<_IzxfL98sLJ)5*_UJ$^Z2`vs}d8H+%jP9S-tC zcOm;|k@cT6SYRE!`(A=vO{e@zT;gdw_oFcpO_~G8Gs!@$GS|SdW%|&POKqAIu<&CO zoF?{fVJBEXYbG1Qqe(hdEv)N&Z5&|Q!x8j!AW|2vJ(`Q%-=QDiH1ZcGy<_qN;R`*Y zzrR1GeY-Zg!@>Y)J@32qr_#!$gDVz<&mW>=pMs&#or%$Rs*Yx`8wkbYKE2MsZOogq zOa5S0jgpT5!COa05CU)vip?`VIZvi)XJ8M7BHM#V3bi{ zGnFV#;pU4rpekORq*J`15$7@?(wJT{o6`ty>tkU84*X8r_Plxk>jyq(Z79NWGiyjr zaK}uioi8#niS&ITr_zl|4t)JKL#<-_F``t};_;|URl?4nx~@pT zR=nfevgE{QXRD%xS0UPW0Kkizd>JijTI4w_v=99U3nQOil`o*3n)zNJqpEfugnls= z4af9g?*RbRfX2?DnrXA-V>PuR;P#`cm^FTOz?M}BbwJ{k)T+hDJ)x}8b9D6qZ;$fQ z+42Uv<-g=bD~%9-RITedspZWQTetcTMF8nS_;>)~a6K+JrR2Jfqt%A27Dgo_k1$&^s^1zB?_#JS;t6oXi{ zjs7RY%c}D6YytMZOZQ>M294s)&(Gf^)o@VBcw2>>WdsK&2@tq%*@!nv!=3mqA6-aL zk$5nsbge}k%*0McI8;{4ZQi}6$OnsdkTl#q3kiOdXZ*_u5Z>J2DBYsH+-L~0`)Ule zHfP&ln%Xvcb*6@sOJ!EADsIFDS}Q5d$41BzM@U=O6Jw5OSghWBkZ=?;y?GRWKKgYM zW+Eo2E3#n|;=ZnV-!Fe7|Ik;h_w5y^{uCe=Q%ysDvz}Wdt+U1dojP#f8E?TCDuDeW zjtLbK4=(DrbMT}yNP1EJ3G{VOxUQsG!0O~sAi+z(_gy$Z_l+sQ5Snq!>o_!fOi2K? zCVpz^`VGu9%#4SfA<8+WUC4HZ=^u`_o4su4enOA_{-PZ|7}k>Us2(bOTQ`vl+6Uj1 zd6MzIx&H?wiu=+Dm+{~p`$VrH8{6jIuhY7NS%1R0u8fg#v4l`scL}4}N|WhmtMN9_ zvIsL=$dkADV+#dI(h(xhH;KnHq&3dK_OAbR$A!djMGL$;zFzr>20F;;`otq2GX;1ol?>I@ruvYnHYVev`g6LHC*Q!Svp{jy_D5s) zqa#n)>o48~rINIJhse~&Cir)27oCo5RLd&Y6|bcLF)f9$+vwRiyW+ zW%j5-%0)bsaeGIS+7N8HfpY{1R$fud#G{nNL8DUc6d)AR8#GP8Ubd-WB;FG5UKuoc zjsvX|fL8AMil;g2tj~53;sX(AabPA6N%WgL6wTXfgBB=P$dTTld%P{HK5P?32855H zL_YX=Z?f(~A{rzTLbu{e@x-c&1!4}wpLk6LnY*vmzW&ipG%=VGfw6F%6vSz*QvM2w zanWz)%^?@S{^}|dp0tl!gjvLYcS2v;r>{q?nK3CzL25U+(oX-5N})gTP%;kPdFKN^ z8#jpR;SR{?7}=Vwf44bLU4M;DEu10Xt8)b3H+Tcchvc$MgHKNYU4)=DjUpG|mj~&A zQ4C`-x9yKokTUq`YIZ10=>n$aSjscxW=@jzNiNn1F>^A=TW@HJk~^;m_M+4G(d(U) z{@Tkmz_;@QOq+{l>jx)LN!S-Z0wz8*3ZDMF^{V0DAH zu=5D!21=#qdOV-eZZpGP%wdYEi2vm|mCIv~wJ4Qkh&RAlMdu40>wDXSBmeg&leEctI(-*wY=i-`}HP z6F5vwqm+&*lTiYgjw-;~{0hHW89r@kZ&a}T7ofC1wFNED9h?4QeB@0SS^>vIE&oTW zokmG`ljE&3>I`WM0=uanLD~EXfK=9)3%|pCdJ`lsh%judDj!XEp?m)$AAnG)@V?TR zM|Gy?JMu9me;iyJA?RMbJu!F38$)9FzSSC~ud6vNz-Vd`1eL(8hev_H6&cLCj9?5n ze+y%l1vAYOld>Pta5U+9{!tQOUplsiiOQSYZPjqqa_jAQFe|X^E8vh5zC9W-&gNP6 zp_~>2rjq?4g||z8JDy~>YX2|)6e|wK8%MvgOw>fCus5`{2&RVDVkzrm(XmoYSWu{@%%wI%TA!6|iFu*8MSx2!v&}7Nm78XV)P0a}N69Ep;%ygaJL^YUQNH$ zLFpEdzC^r{6tN#)zPcyhzecW_b-UJP#-TW4%H}U0B<@#c;;AfA>&nLzpT^qF$iV51 zL|Vi8F&6qL(2elrD5&7l>Q*IN8d(x1l7&7md*Z%w#c{Tr%9~GIyfSLLr4~#ga#mF3 z4>M?fdVPD(jYx*$l6IN{7Nf-?zQ45~r;I@!DJs~f*&%T~!1!k&pS^)G7V88x7qaCa z?x7oVf=WeZ)~RWjDFN!-F0-u*8Xyav93PdA4%9DhiqeIn;RduZ*<=x}g!Ktb@PcN? zu>d)p<;1H3*RUUKnTb`49Pem@7AE#{6co7R=X&bF0Oq;tB=>9Jr}`i=%=ESMMV1EJ zkAv3X09dy%2}OfqK-ZqF%wRroM`7<41IFcEx^#Bnv^LS{koDW2{OuV4ame`1Ci>_i z4)H2J0pX~Vi`&jf90`!K->Ywg)L;teCF2yoSLEAQ@IQAi7UGANHTmp3$?~s18z7LI z0PTD5i5efwY~c%L$3KOtg4CMsRyI>HJ4!})#)K1>T$VvRWZbY`JZEL}R(xDLfUUQ$^#IIB~jb7 z(u<4X+xYjpBqPG3p~W}v*tB8FDV}E4a|Rj7a2VrnNeqj3;==>y9|8GWVax!-Ll14B zfA2!CEuk2ma2s9eK!U~Mnj45p@(<_p$MZ#^3txo(h>y-i2hPjg^*R7^jRB@myllv( zI_OIt6n<%iyv#M_sp}MM)7OqD$zjK6od@6933VtpCtsGKw5JF$GrLW zSTz~E_?5tjsi<@vpVCu1<42N9%JA9&np<@H2s%O9*#mOttPJ-aCixY6Vu>`VZg14R ztraQLN5~UX7u+>>?5nXkFOZ#u*R-9!hdObbwKfVG-fTs7TFyFoB0>1Cl9YxW=ZHnV zzg`8~2T;xnM70%VjHQz>fTK%zf-A4fAmHG^DvMng(BiPFe|~f>h<{~W)^h0#bP9~K z%J1iGu~=z3W&0&g0pc1CTQUH4 z%=hT&I^U(?#o$-L!eAy6h(uGKajK-(Y4X7#tg*TvfT%TnLz`es3{l~&W1P=$@dzbg zNDLr=_^H@E_6i38-5?cBvPFrx`(AbYzUVA~4_Uk8*tgV8lNr?!;ret1^Hju`zKH=P zT`2C|0)<6}@c$RL^BPQ!3aY9tbe{k)zeP~S(kgPA?sB^MTX7Y!a8Q>e3uBn~ee@4x z=Ihg_{$aNh9_l{|*!i6x)Q_`aaTzfhEhpu2$zI0V%XGI|__sRs~U0Ud1ei91Zb8;a671(^U6%*Jm`O>@ndZc20s zPNPe8&|az{kU=<9G}WZL*hZyj7qNhB=in>Sm&62wKY84V^%b z?j$9H8=TC1n`_lwZzc?%rMw#dgp>Js4p%$94>ofQAT&}_$KEf~WTrQgU-dxWL6+PB z{e@<1`*L%LVH)D=ebU^EoommqG^higI5{>owYAn9Jqpj289hLAZxTAX($?9bphhtA z(^>0>EQfULJ%sUr(>{CO2qbcxLfpANJFUgveLH#^0cKaOw7G&VIZMKv;oPCqvDblW z*^<#y_dS`-6Phnz5DnC>>v4~Q-@>tXFbmk_3$U%-pTfU>Nk`T$#pJS1JEFKLT4&EL zgiW6iDgL_cmscv@{3{pmQj;$*00yiay=IF-JRFEP@Hjr~S(Hp5pUa&JLI@%9hfBpr zD&1o~>+)m4%VQo=M-VD0DaixYn$sbV8B2nPm>C|QyJObu@#P{c^@FZM3Rrfn`%xQf z)ZKa{89NQmV9ANq{!IAV7Y-np$)shQFVXGxlxPE-q0O#C<=+W1UYWU9`mpoOP9OYR z)@k(^#xjhoQ_z7P=_(~DNk0ao6Ux$a@;tznQp>(iUGul(wZkPDkUX?Ry?)E3InU65 zfVwCnd$I8t!34OiOixnPLN?oYnPG=pM)eu&UmX-$KjKyltBId3aUEw0QZtpOKxRgB zWPgRl5jV&&#Ghk&Q~jx}nudr8a_PW*I{_`P$Z21RHQSXMW6;0|MH0+&3yYyNJB1Y4wX!h# zsi0~0TiD(Ig?YnvE%X6Ugzmgq)_Q`>C4#i-P#@nH4F&mt z89155JTA4a^%5dcM;C)-7-mG@pK=wk+qpTESzxgBQ{N|KV*nH!0USm&7|yAZ*TZ%R z_DH|%r;HyN%&lQ>6o~qiaPmFCQ?js5CjtOx*O|BR%COKAeH3}|;zbMJ`gk8+g9X3< z%Y@VC|INuS(vT8pj7mCD;yrS=<^KVA&_9b$&GJo&(OVcI4aq_?%SOojz5GH-*nK7D zDxNO2Zws}FYDBHavRP64O+J~|q?XF}>A<~#5%w4O^(I(99H9cJkO*4wuV};|#R#|M zncDxGQ~GrWInADuprPnsR2#*$ZsSAH3EZ#ZZr|Ivw^Th|p30SG_~@)|8@Q{G>WTOi z%)PcUR@K$@o{0_&JOIo;P)onZAP*z0;&8x0R<7*9VeS|9dx-C1XAo;KbLmz+ z&tlBhb;$7eujq^?SC?1Gc9XkpmWpEp5i179nDCm_zf-97EE{1W8aUxiystg}j?Mo3 z4hB2S)e-5Bx=Q?^6us{Bg!JnSofm#5FZsAF}ml~?|~HW+oTVe|YNW+F?uUcFgy zLOiQ5*A_yp&&gwDi$`YXSs!vnc0EOXjC2-g2c$@@VB}u724H}&({wGIz+Nl^C(Md9 z+j{dsr@9kLSD;c2%rTW>A{~r>`$qsNJkx_I2S*fRk78EU@EN`IFp$b&?eP!%I(!?B ziNgqU0CXRk$cI!#VaIKM%S3dp_bIKZUDTkh)}I|r!oWdi4epFjM)-Uk|nhBJCy zM`Wbkk`KJ_We7M80n#c_k-ICBx@?B;Dva~cfeYCp_vc_b1Qs@9r$=?hE#(nFl`&Xt zgr6}js&Yc0LSSF}sbK(b2F)rP4?}hD6xy7P0i>&aK_R88i%(Wzjs~-%u;RO|#vpevNA6tdZM@+qcxjk}prL;sPWlrxX$M&#Uac?!Wj8RE6j3 z=O@;kZ_ENFfTJyc(1PLLSUnT`qB^7?oU9Y$#p``9!&&hgrDrmq}~7+VNFKFWtc<{GFiO2OmvU)xuJJCvTDp4G3% zK4V-C{D4s~+U5Izwo3XM(B#IAXgkqv;4&%XyLYjNDU8`M$MPc@~6P?l)S(m= zLY<_8y~b>4mG}@%q#u;&v+O%!?}%w^t7w1D^l@~Tu!$KHuJYzzeWmzp>cNe*P(wv>|k7Z7O#R+&~`QNmwuE4pol)3F)u)3 zMUN07KFfOOD430ZKD_-FOf+8?}N9)$!sg6LXx4AYZtUe@eqEK{n zP7j$5g5k7Zb0w&v^ZUm6thW?da=HLHGgxCK=qWs(aQBB~)|_A!czwT31_$5n(d%z2 z#|U5wH4Ag|hV>J{`ULEH#g($$AWZo0KL@@F9H)wwyiqG@7~nA44Gey1Bnaff@R=?;FGj5E$2S{rd3Z;-S0;M@60$Ie8~aTgZefmBS$)9Y zB-{M$Z`MiHf)4(NW&1c(_*ZboJYlCt@h>0-Ri)zIwwq@XaY-e-}r$J<IZ5CYGZ&dva#NYdX#zQuzX$aDo9uA3pjE`w7`u12d^0xpGpwhflV$uA@m{dHh z+UyibXgWGAxYO}_L0WhCF-|+P9C!-)GTUqG!5WcUX&thv^2`Wx ziib<@BAc53AY{d4z}XM&u_!RmVZPW+?d*KG1d&WgX0JFwsPc$sZR(sYRB>E_OOh}!J&t<8AGG^rLo@?%W(cfJWv22K$+Jn)&mz9O^ zvejZ=)DDZlF-`ki2u#Ral^hu#8C|uPe(#%$v|@vX@I}vvUR^66I93E=6sE#t6m>URVS&`q_Tz(a)zhH^J9$-=t)#wBC(@|OH&X2)H*?mYSf za1D%uDqnH#8z%X^wY=>Ga2xM)q|n@}vm)lrE;e|?xN%@OIkc;!*{a#|^t9Nz6%1#bKrn3VhF#!K0JAw9D{~+Jr{(fefRg=4P5{H8UVF19O3G< zf`L}LE3dn5opNEa+gIp2Oc{(V^YUEVGQs`m9@fa>gGYWLHrRk($bKT1o&uE~YEHg< z0e42oL*~*pwa8B8(|{5Qr@h<3>Z4Nk%8;1x)|`1=&SR&^xNP=;s#u=@DS8cSQmMlT z1B!f`!J22OpVSq2Ve3Chu?IuI^F*ZdO1DKJpf8I6r3cH7jx%{+>=MlZ%f%)d!^D49 z;(uN-0R{RvuY|g9ES+x`w7I;-#nPYv`ri0OR}N8mMx}14i0GZ&o=3LG2m;Pt@$`c0 z_RyD0$GPrGZR`-n?+6V0cOYS4_VJUiY*NjUDJ%_Fa^A1PQigDS{d)fE8a>slUSVqO zGZVz5^-;--?)dR$F$TRQwqwDjvT6#+UIbiX9JYckNf2x`HBdq=rJD?;!HH{ooE_ddv zx1j{1VTzc$rrOm0N;e?|GjPK{T|d8P>*e5TaQ*&Bcav&M_~mKC8>;6Pp5y8F_xC1C ztQWtYYj)>Qw{-&NKtQaX&g7qtp;;hqwHqD{I6_ox^<8MC9Qow@KRE{&4hrF zPCAN+nInoDu3KX7^5I1|>{^b^M!1UElm??d@`mKb-g-vy;k-bwUrU|X5Y!{|^w~y+ zj!C8Vm!k!Vx#cD>GyRZS_BrfyH|5maXpO1(TimDe3?%|{rg?yCq{(1xpK)xLxvXxF zH(%*S5~#A-(!08x9rr3dLYH+rB<=|z1<41KoauR1o+Ba_n^P3VuQ0Re z9wus-b1mJ*&p`eE*Bj-@6pRm>QS#dI}R2bcZ%00QbGIt;;YHgoaWG-CNc=dgCvWV zM%HGZ2#^3tPOrXF(`|AVm^gp>Q{YHkxCY0IHEl!y-#f|jClGl~90}70b2WE-|0(E- zo0=TM47rB{0Q_JzSK#=R5#kw@G$-#L+cMe|yz784G}P?&*;44 z4QoGsxKPEwSAcezNQ`#(Cd=3{=! zXRk7`{{?zQa9H0JJxB84;k~7$`VU8R5APJ<&WGJ$Q&2Ph`f_s9k}v&@rTAw1D^X}~ zWaIqo1C^!dNR!tHqrw6hW3#wPze0BJOH@mvq8@ zQ=>q%3y*;Um)-fG8g|KhWrP4sy%9op%pM+N;fgBv1TL@j7gQgg26*BiGH@JUDK0L~ z`FI1v-S-H8`E|^rnl?C$1(*qFdU5S$^~N#Oq)f4~x4d;D9s?l~H>N!9xTR5^VCfQ{ z<98hsf3T+^|d2zMd0fIATE!iBv(R#C=kA|6bbyd(mpit9Gwr8B>! zQ(qaK%MKd^fbZ*Gqdahx|dASrw=7wpVS$MySpOGr3#an7&`n73vE{o4K#( zFLnT)wS45ozW&ejM_UMeu-`ED1wvC(GqJMTzE~^$Mc(}(9IE`1jEt#EIQ49>gA1nb zbaV17vFuI0kEcLgYuXWdYaE{LxX#!D#2bQ+*Yum;n>=WJgEpVqD8H|$ecYt5zGDV) z2~Yoe&pV>h(`E(h>%Izx+hj@0l2CM|?B;a97&D1<9-&w7-AOhX^^@42c!zQRcc}w~ z;^CXE@eyhxaeYq^OQ^Q4t@+;?*aI5Ia#8dqj+@)paY0r_A+aqP6vOldNFU|e*()eI zAQ=@c-T#3NVQlpEl3E}9VgqP~O~2NdAssm;QZ^3|18vz4K2zCzPOOUstN@gTmO=LE z6&eO(;1j|ph^O>oCZzS`VXqEYKFiC?wLf$={K*n<2QtZ7z3=O9B#Q8)nAVl>EH=j3 z?Wt!OlsZgxRj0!^&zsldI8nFwBHehWdnC3rTbFOthix3MAOdURLjgMNxCz1Hr`4xJ zrhk={w=Co&WoGX1saWk8i==k?_P>9QzJl!Y79yl%_Bn=B=Tb7i<2nd?qx~*od%dSQ zJ}dfIV~vEpEp9CyNC6({B|DU+wlqljOeMDmVXQvJ;do(Y=MJjm2=)6*Y$j1#U+H~- zFU=r=ps%T8W7%tqm=ywjK>`rfT>vF_%C@Tm{S>;;5zGLk8V`pKc&ay^6oY+Jywx)% zOQEic;HG>SQ)_eE?27RnTJSEd&^?hZLZxGS$`jd=u?55TU-z6=@mSR&==h>Q1SlYu zYt^QX(DJOyHI1@w9|6;-LY=?fVN7;ZPg-bf8|QPJ3pXRY4KQ^(U+mvH`2Va123f=d zHJU0eWF`l(#LaTrxB3fJC-;;)uxJ3x7v~|23s+8|Ldk>*{J4cr{2>$_?p2s~_{=7w zp59T`ONfP+SL(myUxd*@Ky2rdzUGw_xt{fJsVWk_yV$*bZ^V8va&dcQng-C%wgB3_I0_((RU@2fpiNM9dJ&qE8T0*zx5YD$bOhVC;S!?A0zn}>J3J}M@oaMC}C13!NRysf{&0Q zH{!pjb*I9=IfM6>Kv+9dKr`*aqHQBQ+XJ#x9UU4z?(~a+%3qa({(xBV`Dy%!#AlM2 zehC@&A;17yzF8Bd7F}1X`%f_cTMUPyc{V){d_=b-*a z7a6h;&ps>M22}~TaiY)RfUT5>K-^Vrq&eGXr34fNqZh zDqeP5@m_mwKHIf=hvKr|9P>d;mS~ddm{@PP#^=rL2FKHX&Kv4jHlVdt;7zOhnAbP5(J`_!7 z`2F;lO}Iar1lhMSaY;qf?wf;8fYhJ6g|q#@Po-l6Q6GOW*Kl$`x%d^siY47GEe_W- zB23`yo^PohmdaW@@o#fsUOI3sOFWB?xtFZ zXZk_Hy6s?609w%Av{hYdTkqPh&8tuo;6C9=0i>=P906d^#?`K-WX zn@!Q$D=?7L3=~pb?9DjScDZVQs)rdL*WUO0=Yt8n0AAbAzgAf-8KRKjRSZG}?buVB z-1d8oN$x`IDc9So)5)@uOOUsMexVprnB{eEU%hv?%ep4rSjKklUQQu4SEp2|`|j39 ziZ>#8hzF)E1NQb0{{Mg?CdeMrmwhqP7L39jP}f1VG|~Q6z7#~%x0Q$7gpX@wKe$Fn z@*xN9;yTcvM5C4IXxLJpAr-1wz`;js38Uo;T$*Nr-_zepFY9`qvuy=$0V%BZf(TmW_q^+ z-0t*!(%Y0_=u0>pbQ9@9yDT0Zi$Z+NKB~LP%8S=|NFoRIsFLe(S=FaH0wTBND5*zG zn0a%T*&DJPW!P;9HZ-7j5iPO5LgN3o55Az9C8PIMiW0y^`&yONLCFAkl+`))lD zIgDZ~%9IY%XPkZr5Mrfg=d0`l#jHCW5J9BUoSH%Hmhh%XTRENH_n!5SY7Onp{_w+l zikaf#Uy;8_nROxWZ4$O+NG{1xQr{I;30P|&Is8cAU<3m`emo3sCV5M2#80FBxiZ!Z z6+jPB4H;e!B4zVJ$5Wqtx##KiRT#ofadRy%SH>C6G>#J*pF)Tbw=OUEygxYQK1Nt~ zb~}J^A|25xLMir#=Kux*!88kNsllBq_J0grKzw!roZW@5R@^*AVg%h=yG)?;?05K1 zMtsY-Wevx*WCF89nlx2Fv?kqD^1wpX;haw)oAwEa|K$Q{B?XMaqtlMuk`7c8DF^UehFQKM76|aC2r>HIT4`=FaS6R?9?>Fa+w~xKyKF1Uw{2Y z&~G~LC0oZJ4kdtoR_p1h<5cGA@}3|qnu9iINsNL;P}{Z+j%|%%%%8VfrQ(K@FDWMY z79-nvUjNVt@i^4AmXN#jZM!izoVTIa(Rj`$C6pG5)9wt9P&)!o1O9s4fBC^yfx&J1 z;tQKjI~HIfj@m~*)@QTqeab!N0>}zYq03j-TyCDUY)Oq|4v>WSI~%BJ9GwVR1+Bes zIO49>Pdi?Oolu}CT+ljaYa(j5s-Peu2d0eTh&xT>v@8ndy)?o8+@RtNCaPUby_=*M z`wB55#^wGMIG`7qLm}JQ;a|2F&V-==I~0goxowk@eEwdU02p$#i2x{?Y{l5d5@q2% zn^X;RfUTW(vAFfQ(9D6bL3|$bNgRQ#VT#^Ohf*F7{#sYc1DLBbc%*Mo>9Qr4mDNfd z_N%3p4cCGbnqiU5Z><6yQN**$2Ku67Y0OHu4lF$*?FQ{>|NUZ*QC6S+vgrcM44+RJ z1bUV+A($99vL3j9cW+^8ab;~FhxjK|i*2uE8v0gAsq-r|Oppr~q1sYT)+O2c&F(m-i10 z-eK4ILSHdfnP^VjRx8xm)^hRoX%a{i*X-?TL~lvy8a*RFO`+-_Ic6CQNX43d>5UUM zRnV$BV;F?#~e7kP(bL;tK3wu6DQAjs^r6r?k0)mlN}r$Iv|sw>4=Rt1RhNj~-q|S4iw|LmC&h#;H*|D&o^S!w^>X|yE6$@6 ze?oEu6{R=Cr&h-@w&WAM`H$`1+WvkI(Q}|O=8&;WJ#|I#Y%ho(Yl&NFrnIR9UIfs< z*F;a9$ke*}x|od^Xq^pbv8n*Q?~CT@XE5F+9&Hd}7`4}BQkSB0C>K}D+H~7bD;(R> z62Y}q()mPGLN)0+9OKP*>iawPYz(0fbQ^!3ORMp-waK8IPEW!&p@`Oe_}%}t)c^iD zIuUfG7~7`gl^|zPJtcvO8lPVM&V@xt9UX9=nWzk|qwty>Y`ab(oG7Iw^H0Ch-YT7o zd^g@kAsuv?yRaz?j>oV^S$#fP{aLPQUPwfE81Nj|l096?GS`kV(vrg76@-rULnKx$ zwaT`)Dsm#?0Zn*}OEE}4Oo_wf7d{-T(RB$iz#44s!(ORTy(wzxcc<4#mR#S}f_$-t)i z(l!jo?K&p)cqwCfA3C`GEET(D0T)dGEg$gr(~Pu#{0G#HSFu)u`#ZVc13=b}ZNSTr z1rCHc)#=zHL@1~&)_@_J3Rg1iWmOkgx&c5@)Q z4O!9zoOM>F=RQQ0Qp8{@PNZb?K8(y{BknGp9p|buV1XT}Ku5NV=D5>JRM!A9la-jB z-c@Tc;S>pAOuYX1sO+A^3HlJQw(*t8dXFFV!Y>Zi=AiiQK$~Z}iIz4OK1mkXS@lVc zV-^VrndZ5~PX*Z=O<6$v_#jPPFt^w&*tkzn`!B@~vVZIMs$UYH^T4$0{neb;@LSgf zd~+6B!lp8>))$+vt2{#+;?Vd_=SoT3bhk51Y$*PKFqSrzs$-?ysqDvW#9Q{WijPBO zSrBSuATFV=ZSeF11K1bQR@@?q>=vW95}JN8ob06(#QVQU-H@hz!pFp$;k!3yH5_n5RKcpBtGmWi10skS8`)AB<8`#!%xY-#f#Zg>c*oJ?u2GT?B`{Uoo9`@O)nS>_pP-GI|1 zRVKC{A+x&pz%74e=t;fqy;HbfKM`NOxKoAXQUJsv!E>2X2v=WKM>2Ba`{8;+c!S%o zCD-bSb`c-U{(C2SL~ygz1hF1(>A*oq3%?UzebZbs(W8*fP3aDHjn`p5#bTj z_5H*Ra^&~H`fz)bkzqN9%K(n^~Bnute95!;v7@8n}b-ojCY=wtx<;on}>O~x3`)MQ?c!f=e zo5j4uF&f(A_)N4d-r4S-2wCntMC00MZ#n2L#*`e#fo|fN6>kJv)ze1PZ~1A2q`p0} zjdAa%8WFPnxGdOq1sCdFo5YtaEyy8O!(L?jjU@wLR_#pSY?Jcra=cirEn|Qs^p}gj zr8Dfcf0;Dw1C)vPHSw!>1WMPf&H9rD0^-+{h$P(1AVpD}WI`CPR}7$-vZ%LFmA`Dk zo*PWKo9l}&8M{$O%D^WBRekvIA(2I`+#dT4M*={=DUu_Zmcy)M1ZFB8>KlB1-kTiW znk&rH(A~ZDE%{oa+o=*Q`^(kdCxM&Cy`K7QxRRQafLIEN2%|_cus`(xb|OZzBRR5$ zJleI^JXY6T&)elW#nEI~iYP}NEv=TdYyR%&x;T}=`pu+6voS7BSHHZVp*5e!*X$-e zP~hY4{)HoB{WIRV^z?2$(R?oTbh;y5B9a9L*E$TpzTQCCXw5D14d1Xdch{rClRK|7 zmf=n^>9#Rf{-NLy>y^rFpx}oGm^8@Op@}H(E48f%%vPnLbOSpr_zs8hJF62741PvZ zfCCdefq}<|1>Xc;h1vdo7g6V!o{P89ia_;BahpFs3lZYIjGGyiRFQB|^lmrRxCmz4 z)lh5P-l?sD>ph-AQ5~(|urocSqV2jc;Y8EA&w*z;2~>#_E0^M2=I_OTT6%C91?Wo{ zi?|`Ts~7b(6Ev1yXwi?y8fhgZx)ewkcP4(xh zwiUSCWga4uwK(FDi;V z&4ZXN2EDG);nO$lTlCTe%*|^cg;*=A<%!0|#tM^}zfmxw8NO2gyyV}~f@BD;r^b~` z%fyYzc#Aqa%`(Q7Oa)0^O;s##>B7IBSbzB214{2n$F?sjda)9RH)e-*$K1EZ?}YRg zx);9~d}1J{)BH(`%KmP7;VFS(xUa^1n>Y&H1aKS)^*)srChF%vD#kJL9xLRx=9EskGhaLc!L?L82;`BL(H z3sVTI1hegggO2p5X5shIfftBp(d=<+0g2|NqR#vt7q^06FDz=jZ`NMtGTWGn@r-k9 zTXbD6DLh{Ixt@+Zbfr3ju&{K{l`ax(is+}JF4>y2S{kdvEnn&q+N|9!U!g5<3WziV zJKBzjJAsVxrpv6<_5W3c@GTN>eMpd((bha0rKGZd4#JN`McWM5eG~})X*=_DHq&qk zCth#9{X&yBx&ztglTX7~bZe&l^;>hXGbg4+pzObz123<)e1jtw^wmMtv52qfAk7nS z0206AOMMl-O8z75*hs|82CE{sp>;AI0D6^tT>;a3GLD;=Q+c0M(3lp0C%vF}6w|@L z*Z*0?qqBPv60mK&576jd^hLbiH&#!VPivN%X`2VHfR3rT!%*RI-r(Lp+YCKIS_ArBKs- zW1;lu8YL$U-Od}Z6@X-D0Ttcx0wRf1^T#N8XYK;Hh)=XI)k;d113^=8 zOwmTBc~ABiTn)=o=EIxwReY}(t0ubhG>MGEeMFs(Syv_V;@w@Ztv>J4BjMj4@%ANx zY3%r6htl2^-I113w&Z)Q;C=v8>stEYyt)6%AP$?;?7N&)Ssn&)?C*-zh~bN7r-b-O zz(Iqyv&+=*_g}N{mu4(^}Zy^kgSc-T*O2HC{#akGdaYW3-On&#CNuvVUSI z20=tMox}I0{?~KXr(d7L8@PZ;YE%RIc$Go@n|d&mJ^CD&75ifA=nGM52~+*0`xi(b zpjmM^Flj^~LMvTX?}iBU6%g9EU9nVqyYqH@kI{{%&&Ub&wek%n^-I=Y^T*dbByr|? z!QG2(gSM2&z{||G5-aQ-yr=73Di{Bvi4gRHBHXF}bhCCHDeX;J-tZ#6=#|B1F=-g; zHcL=`d}>vHy0`CbDZ4C%4v228mcXII%c3;?`dd#-F%0SkiIQA$sYf^h6H#44(2fb z`)OGfkDhY%>U#z)~y?eItf%+>(Y#r(p;kr=D@cp()l+7T^>hgbqmLf865scxIG z^b=$9ppvctfVtxiO8CGS<^u=<&AVWdA#`#tFY zFcK{in$K7{H&U9;E9&B^OtUsG9nrhKy$?*KuWd7pZ`$%%_%W9AJJLq$8r=J0`=X-?jjQo z*g0yyOBqF%abNoEtW5geG+gBhGk~WVz5LNZ`1Vc^kzs9}{M8znM%4BG(yWr5!a_5= zKwuiz9=mVZIbWgmWC30)Kp@EU|Z{(T8~1i&gQCt!6?*76FpTuJeVa8TnEUOZlInn zzQIsOq1k+;s57jIGQMJ3P|epLy6u@kx!SoCbRZC!p0;z1+gddbNqrBFchwr1w*QB< zua1jy+ulES9FCOIX#moaN=lAk(4Z0mQX-|GDBZqC!k|PtM*%^Q5DDoK5D*X$r5hxq zyW_WK_^LA;yq9}_=fC;DJM-?n_S$Q&z1FjyHJ-#Pjmd(@Tuuw+EkvzSnOn9~POYX& zAJ)CID(@~EjyW&bcpBYCgXCM)KnGNCr{^gxkHR@eaP;WkZ!Dalla3}J9N44Al^OY9 zv*iNE>uX;R<6M()pZ=*B904ejI4KwV%c;>vDA0?Moof!77ITD=+7Qbj zq3s&erQuT`&-80_Ww9<(PS}d)@2_@zu8luUL z9PPv;my%GQ05jUg-M=MiW2hgNK1&zt_oSHex8WXL;9jHPxR1JB#o)1V3Jpuk!K*$2 zgOmuqo)+>m`k@n;(SiP&InLqE3$sRJb63i~8avAZfAm?ZnS&AhrVB5=fT~CPl49gb zqw%y`vfGPpMzzho#0R8Hcs(8KTH|3?0^Bs)#t)eJu=FIkl7afgcn`&QBcJ#VKe(ke zVsgU&2tJ{2H5Hnx|(8+x=<3H~$Wf`Q6VtfjxnNmx5MNObh{G3$yv zvcQ?(UV;TH^8%HvGZ(?)S!_hg5s9F0^7->%Zb`9u{kGb61Bxb)Jhpsdmg^=jsx^f#% zgR`-`h$MyvnAlF2TXG<0;|Fb7H|QGBgOhOcoMIcMU;>Y9RBEDHEkdlA(V~Jj1J&2j zJlK6*5?iVFBj>%J=_7-tF1pXe`~d)#70dJEy{p=0dq25r`LYfALKAHaj!D0qW1XCS z%?z~=2{tY89WJ$~bxWI0H~{ilm~-xefjMr8zpV_CJSw*5QKd6E#}g1@F}Ma=;;L!S z)$EB%2FRm|7G+ICx;_n(InKj~uZ)$ObWqo55y6lE*~n4#Hs zaWs1GqfUo&=1ctW)D`(JBtC)JS$-XGG3G|OUXSXrMJ?Nx`RVXjjzG5OV+Nh<1)|u1 zREQh@sK>@^RmGWM6C-K?QjTPV@r@hb=J7tU0ivosUR}dteJ`S{Mgge|Yt?sKY|hJj z6()@PoS_d4*wCWefWNuaH!d-A`!J2D96DCkBq(`(b#7=LO~Bd^E}{+om<-Fgw7XGY z1Zi?zWr)EQ)z7`xM*w=1t2csj)0cd zS^PuQgTV3d&+}Y_vvC6>C#mGIG@oZc|KLD>zeexjsFI~2;InYanhUaB6M1r^kVKE1 z+I3?fljkiT%!y3S$EUp5V?C_DpTU)nk2wm{O|F9xpz-976qr9f4}l#^TQcI$?Qe>U zT=?ln{FfgU}{{ZAD zo3fvRs)D8LI8Pq0S~j(Gp!u(y@~zVE$dqGY&D0E`6_Fsbl_MWvy{H!^XZsAY_&w>c zRv2pvh6AwK)!-`tFZTcBuY zbEgC8h0O2LykODXFM$kR+N61J({a5ghe_t8o#d0>W#oL-o*gDkU}o+wao7x)nbFw( z+*O959|1h3DLH6lwyPQcrYGLNYDkcT;2#OO)8kIJ^8Jv}msVcls8Sbg za1Y2XU(}XrTl|*fi5FKOsBTtQGZ${kJR=H$D9rNqbgK`~w$q0}|H2({zC4;E!P0#4 zVG#PbyVCUSI+hmyk}B@f?5)Q*&nT0Je@+mqA?3&h?t(7iF}3|roIrI%ul0@=q{z=T zgDY(WL(6@5B`2vtyxpgOJJ*)^2D?npK)E2L`!y)nwh6b(StYYtMr#9YgYzvkQUpaa z;Q#dQbk=WBLZ_KQ#S|t|GcVA{o| zZG$J{sjK=2Q1(m82w?9G1Bn3}qb>xX)~e@f+1C^Q)KVo^lHBiF>Q4c>M|+;JgrUv* zQmE*jK-S&c4w(qci9N%h7-Vg&7{#H26o75Y`aPBQxQovmW0AoH=@C_UxVWt>q(6$r zMnHoTG`96s<*W!w480ImG$SCciKU_tHNjWvp}N%9gtNFTK<3GS*o+s6*V)~=t5 z$q|hLEwGblc!Lpe9Txu6r?Z})PYl5p?cP2lcprZX%H!CX!aVY_@e6w9|ALMZCNLG5 z%trd<4O!bVhn-_oes(h`nB{di_KQK3b8e`18I*?8ouO+DM>CAS{4TP#wl-DQ-S;O> z?CPg#U_zQMs=f`cB&Nc-03V_XIMLE|Kndu9XQ|h5tJ_J<(-9kbi{4aRnq71ZL^^F< zH7R5qi75F~i@l+z^BdthjHJC>A8<1l*@}iWm#VyqrRIh*r&(Kl+WDNUlItVCq_?b* znnxk5dU}kewwLQOdt2SfmsZwQz0%M7Sns|YFsj)c`mXb^qOXOa)n%dibaY=N?VSBuYwNZfcq@!dNm*sMYC&4{@g z>>>ux&+qH_;+KKw5Q(~*7hq?oR<5gz2>%AWByoYUWMieG>e?bRXtqxJa5+^mQtiU7 zo-O`_%xae*R=^if7$#WQ24dZPB+`*8DU3hW0DL&khi+#?XI658yJ$2r zv+s3nS@uwpXTm`1n<}n+&2vyfs(78mWTH_V(OTJG9;-UxEk}AEyeQwEY#p9FM(sNM zICHWPxQyhEGlL!s!ulJl5`LB#Y=ik*gw>W5Na5ZWc4+41f*rWkdc%a$W*@hyeeAqd z%JA5RH_FP$V&FF()^nN6*_@nA!9j`s?pHumyY98;TbZDV+6Rcw@PS)zk1JisEqMz< zBb>1yP;ztjvOKm652(W`s;KI#9bjK5svr60gvIrMuDZok=MH{z$E#@jLpJqz2XHXwHwgNyPM?mF;~C&W|5gEA<|+#Enr(h zLS@AMNkJ6{ol&RBXsmdd_Y-LbVZFQV=9WDxo_1*x zYTd@}n4);MEvYoicwy)z(Z=wXX`&+~u9{!Qcc?x;fWoGUJ69gtJ@M!J)Tf+UmG}Oi z;eWV~G6psA7Iltw8q(y9nKsa(xbzU__WqyNA8H}kaQ!%;#mcn$rNvGy0&x(JzQ2KF zt$+BSm?+c&uVe{KcupU5iYEt`E2D!EjYUaRv(N2?wTMrviq*Swq*D$tiKsNq~YJ zL_@jRtA-5ds;JRt*rWUGC+%T_pj_&gaMnaM+!S~y9EF@pw<2;DUc8KgFh#BJ(<(dHS3 zTbgI=(7Fx!J4yQR@>q*~zCc0y&S}wHF?wIOCF~Oxd!WDe%Y-^oC#}ByyF5FH^1McQ zSLx5<7VhDQ=9e7=mzJ)%Y)%*U=5O(nqlpJWDG4~g?tG54Gq~emu!*k(4zQrHb4%^G zD2Oz&(XlbHQ<||Ikz*<3jNtTYr~EY->~}G4gYs5O7ZvnjqYS9>f%Utp!ignp@HJrl zo?e~ljnY$>gt1aN+RNKKQAU1;g}l^K$7wdnN)>*u?s4WaO$i;f`)sGt+S@pWAf2=X z^6M0|ddSlzI^l~iN{QE97q`8Ow;EQTkM||{mstG8brR%E(Y!VQ$Iu7oYP$gZsqy+v z$E(X;BzEXX4;VtAI2v&|eB1PZh^paeSe|f3xWX@m*n4VNZqMF}f|dj5l|k=U+12Dl z9geDix2Rf1>Fw)x*|-B)7CA>e1M4EJ@s1GO&|p-)<1!QLv&ES@81V$)nVQtx%1#}` z85z2|Lt*Hvzffy9;yt)Q7X!HE^vl1hDF2RqM~~fv%u!SOuNryK*c7({Tb?Q2(S)I`XCxIP<3q?oMaS~$x7C7RycD3pomvhQd|?8iFbVP;)+-n zBo@ti(II01zvZ7?8S!?jH=tWutM+=n&Uw+-czINjOTY|6c~cN;TRr+DjWLi3TBLDf zldx@ZIW73~5_)!w<1oE-zM8d%XbOC{bS3k}>rJ;DYK zz_R|+A6j9zG2z`{{l0`IqCXfL;gABwO%7~^P+(e>^z1LUtw&FLuQGrt-=p?7I1hQU zH7Y?CwW^1S8aDOY#^bhyKq^w~dsE1F0YHeOM_)jqBk^5_kkmX0<*isk>puUc^p=@o zF=kapV0yFL)4(czav~g5RY#X%QFPz@XA&p~!$L&-=b2%uEnP-_KpSAJYfAO|9foDh zJ`!~~S1icNvab4k)Vd5ImVh%?)ZceRxF@jqqtZFU5ts#ein#PR?x~i2r4PtaTtYs` zt)u-4AB>fp*4Kb0gd=0mdS+6N*MPoA`b}m(oVoD~q$t*^V}@(az>qs{7h3U`v@9Jl z*0lmdkH?P|tZ_;LcjyNQ6XILkIFS#430IN?H{5uFiEu`$!<)6?^OssoeU(g&Ot z>%}Y?d3plF$BUel1#14Ge!0O{0l2A-^RDY>0^f^<<&M<4`wG>9Y>o);p~Y;??R#Cl z0-x!Z$f{ESZ_7CEwc;ro?U;sZaCbx@96F)=A*WS; zUCoJH5!)O8sTtr_8+~=uwv24_KB}>?vD6Nk7K&q^5QZmUVJbJCNy70Z&i1VwAd$#i zC%AYFG-$a73%Q$?i^BoON*&(fqI1>py@t`24<9~&0;E-tzo0M=Kz)@KW8&Tz$Sd0b zd&D_*>*C-|vFYwOf-C-__SakhL8Jww+`FRS*tdCSa)EXYJtf3p(9VhPQ~%csw?k2= z4xvvc6A%9!_y5laa9a>m9tjmJXoFXBWx5v~0gMv+IF|rCCn6-DK}BY6;n75n58@?W z(~Pwo2*6H}(nrL8v4-0-2C~W99rQVd?bH4N9mcOHeIk)_z$%9Y03<*PN`><;!o9Oq z14IBGrTrm*lL=ZPs2JhQC>)Nw<=$Q5zpKI-dPG#wdca*^i&va~me3w}p300;^62pF0)P1N;m6F zi4y!S&=w4qM(Jrv;_mAGh;@%=kghPBS{m)^FbeWE{^xqa`vPIm`T(|oVQ$r?1;4?z z>zvS00>Pf_QSU=ij+__s!Y?sUf#imi^CwII>*qTgIU$qU&`-ddZc|xo4Fev)RLNLM zYRQ!u-+?{f3R*bShVe;D{Mr4M(#VUY5hOPxhFGm`CLY4o$nb0gDD)b>T5$`;&hzRI zh;(33hW#$sHTPg4AFc9m>f1k1jq2DshI_P_7;RnTBkVqST&D{eLs z+vX+X4&@Y6Pg##e@VP68Z_bHK%tSu`WKfw-L#<_-+cO=c^nS1X&3V!CuYQMci(@x& zl^M)YKzb|+F%gsGq!bn4ZtHz0{7)%ieLy(DhlANu65wpCneLYht@gZd{5oBBgu?$A zrFu9{i2arKyiAb#1?@3GbjT-8dbD!Upr*g?0$V1!4DTc^>& z$4k`esTR3Y@$!2zIY9RaKotZO#swP!ULUK)w4m-;1=uM9s9@tqQZ3TUyeZTW+^n z-D=fLOVjPnwI5GR=b7SdOi8{WccM+^`XK^CnWwkNVJuA0jr5UjX}1)aX!+rL^-g!< zoQ^XL7fr8kZL;T9o4OH2}c{I?T8fP}$V|_~#Gz49DgEp?dtG2vya=a(OuwhVi07xB_?PEywK{ z7lmj8TNo3|a|kzNK1U<>WuaDa-qD2&DNBPbiWQ}dcuU<2QrIE|&3RNG){z9-G zW5iwc@cB>!qNJXg0Hc-w1B#%p8A>LlszVv+h>mWG;iB1?{%pP;D$~ucQL?RNG+ubq z+Z57y&Be7`?Gva;0}}Dx`C))e_0}wDatq+E03jU3xKN0nacU8&TaKi zH&b;_K`ca4GX>X|Ux{IDtKiFwpRy);gV6!f$9&dRpxaEzm5p$69IVUFl>wpfSeKH{ zvAfqs0BKt#XQQR?ouea(yf{Q6|AK*Ph4JxDI%(tn^fEZPC&CG@DK<8?XRb0V8nFe_ zTfG>FGl4UJ+e>tq-GFAeWJvP)t=I+-lPEq$GUcQN{kfP}%ipHOQdy$GLCjrL~U%~Av$bvSRqn)JWb>fPVk zc!Icd=Z;pWiOt|ab5bTmA3o@KY|=``dpGi@T>i}mR04cT`}BMTw`YJOTWi7!_sIf8 z%SM`w$kgV&&&D+u`{ZESK?z$fYjO&J`S91vLBuf3z>iQ=~B4|e?T7z5}xh4ccd`!51MFsdd2A-@!wty@Jx3iO1Y#!1QVi^b20sznNwpz zCHii5DRW*ggQ&d^q0Lo|aa-^}#4bAlVR7zz0%E@Jty z|0wz359}Ys8OeWRln|?c?V$3nxxB{v2s8N7RCi&jfOtDD`Qe@?1Oll7)8&g;=VD^X zczwl8Z~R1{AFqePMd3s zE;V7-u4CKtUn@YX3_>kj7sRIk(DNC^Ll4FLGwGHpw{tXb=gw#V*^Rfjaj~_<-XScc z;3x(4B#T`jTNJIn#YRtBeGx^pIDa>f3rjFg1cLNNOGkRhR8}`8`;%+kSu!Y>(D8AI zo^YY}?WqaJkz2C%Gwt-bS{RQ04zO36dhC6L-m<_B%x>$h?0LNXP?!B%CnXRF`+|2R z#z+#1#6Q}WZShQmJoRHt8k&E6Z@K^cZR8c$GLPhNG>d2N)K_=F*Dnv53OJ3g9*JEt zQj9s5r=^RR#jV&`0O7KxTVF-{)jSVNqlySD!;pua1PpWLcUfIHg`^;e zr^mqE^>X?@BYA(u%s%{)7&g!-s)8iE9dB<;_pUWSaN)IhHa5$>bQ7*$U`kE%6iTIq zY1^-#Iby%UL1Qe5T`yIjBeIR$V<8%de6GI#La-mQ3;2T7ZgW5h2NHH!ULy_HAv*N zjcZ&isi6XqO14I!4%|X2HCAY0RNH9Eu9VKSczEPNYlYVL*k<&8A0nk)8F49J$}46Q zT$a}JM_tAQUo7ASG(5b@nrC(S_*c5q(im=@_|K~OQ%8UQK}{TB&)kS^YUvn(t?lS~ zulDu67M8yNRhIZxnzn(PZu50KXrC5n(jU?Pbi&N|!RsO(7WSEPm^{88gVY!$LqrhLyb^p|R`QH6JTvpI* zbwl)GL|DIQey96$}4@z4EbWwb6$76jXlPc znWXTw>H;x5xS-?hpA22}_8U#j&sP_wYV6f9|S-AaJ z#Pji$XF39P!A%4UciOKO)WNX5x8JKYwl{!1h##Zzq7u!|{0L`OV+1`I?5Q~XIercF z$1{Kb3oCV77RS-<>MT_s7K`9_-lOmfp!vpMh1BcO2MHsuO;F=ez0mE!(i`a`%u2z3S4dI^Fceux3~J^{Xrm+0ODeQQ%MfXp_#e9*|E*_ z$FH?S*ue`_q$Hy^K9&+y6;E!0`_-kG>yhYvhIj>vUOl)iOPAQotJ5bFYk0WPsv4|_ zH2XYo4=*$~5w;m6l5HDng!}GaKmK1y9pQ#Ia4?Pc^&OW_1il8K9br|KM-I4{>^3WV zh~Jmjy0@u4LqTTlZG42~Ys~HtNz&*?ni0ET0_C6ZyyM!)Fe>gi z5-${{hAD6W2;E}yyM=lDr6`yzNw-0t?Tfv4<$on?@GvX6+*@w(SLdA0vj(F3K^5NX z?5f<)N`{cWTmLJbI)Q2RtpZ?pLR)~K6=K-!i2s(cutWs-1?2 z_=;wdS>!cCxpUuvo?0{3AfzKwL#mF$SoCYXX#o#IR87jP-gm$uSIG=I)w&HjrrYca z(Sq`k4ZY=;SvNwS0YYPHKnD@4+voa%j3ePb%{a~6Z89v}IW$X%jwP_WjtcazEV~OP z2m~CTKHZ9uC)mBj(m7l}+sF7fMjdpeIuV#XZ=H-<_);&n5ZEb1Hri`zR=q~@H6bl> zKZ5#?&mhF{Lir5buWw{Fr`t~%2}3FP6(phU8X>&Szr^r+{r|??*e$TxFlduIJoL6u z4p%E%#DSf1+( z2!4{c@535Z>4WB9VHhwW>m`Ku3SK@#uELU>Sg41?4f7ZEHGsm`w`KdBe`8_EvWJIpd23^-eGo3eYi<LWZ9gp* zy^fyxvlD${qDl#UC5qWCOQ)KRMxkl`oiyz+G7!Fb$GqN_5Dq&KB|<3>u8#G4|6aCx ztJ2Qb0Wu_uTRhSBIUZZ!Gt|t?%-|U-E8YDZu|Y&#^G(`jUV-k&Z$cI9piNWI=D?ZW zj`hjUs$yt2@5@0Mofu)v`SrsfB5h$A+%p@}F_rq{U1*{nQh^Ad_3Hm@Ch9JY!q&XF=1b@s8)ckyj!;N2Rj_C7& z7Z_v-M$hHv7`3GK&d81&-Py`9)U-~f25qzcafcst=Gr>nT1OiogdfP0@}%E&X z^!(eves2Z--7=Uz0&Q!PvTp=3!BhD79oHxGq%Uno((lJd%GNPd#@Cx27hoa~(3R|z zfH@J}VA6G2igDRKJ$-bE9kAyl1;jkFz0Tl*GXfM5UV717&6j~&Obt%`m+}B<5`;3y zGxR3gTXlekyCM=2f`)`ZmqD*$VL?$*$6K!y@l|m(sFD=8`UZ4^!R6qx3Kac#p*84r zXy!YAFN}hBPuq zLI00B0yQ}IJsbi4P+Kr6F@oqK+jr-0#|iLNpGCG?mPq(mS;-^kK;&#wc}Q^wK#46Pv_e6V1Qp9+*EHVNjFAJRi^xFh zmi=wRU1;8FMMFo&mC&N4Tt4U|fvufgTKZ)MJ^XB4)RV5N42oN4P}*g z)OvsYkt|XO_GzLctSi6MCRHciLV*BI|B0LPtP&aaIiZHGs>?{Z#_5Isjhoa!Am8Lu zq)_k2Gv1TfPyKiUIPSb)shVkGr~K!)f_MalQkGx_DaC*Mfn#lwU!&F*#~B_ruojhO z;ZZR+GJ!@h%eCU!Ay$Cgmoe=e5i6FyCBH^2EAkQ$Nf)!#72U8i5kHBk^%^2KUt%B@ z?_Dft+*a-7*0Q!h4+u#P69|1xEU%@-TEKA%@bB_CD7!udaiITI(!XW~)an#`;NXpw z%;r;;N7-gvL5HB@PFq&J`??v62BGr!h%d6r4+=1`_%Z8^O90xwiV+6)iHSolQd+rP zbL8QV5n8IDDki(CUHL5_F1F$(8T3j1&geA-E}-V;u0ou_D<~+?3=zox3c5A|%>2gC zb+%_%P9j>VvPm`?SblH;DD{PgDxZD`?kAe9c?H98HndMeA@UY03<#h|N7tu&$yK&0 zl+h6ZvFvy&j3`n4cvZnZar&=;OJRKqW(8- z+ADs{*M~ z2*7>~yI`HIX}Wn9U0Q{>S2FzID}7u;zC1#Z3_&zm+yd>K4zoZ&taXd$d|B> zzVT(V3@dR)J%#QfEP7vVrXVqfi&B{p@KuU?OpcVlzmv|XBj|)4Gx7pVl7{=$C0z{? zDq2_T&gVW|*a@DW+VS6iP*N~#PSIem^b%mtX*&TflGRxgPa`#c6E4JE2}44dZdl#w zn?RO3;br)W1eBU+%kBQ%TT+!q7-&<&Hb@sG{}Hwe&fm0l}o+!dn&UHFI(A5MQ%dVoaPI--_)74R<{l=v#XlKAB7%$X~Bp2qsKkv{_Ppot&oKv0XCTrxlF1yH`A@n;1-j9<1e5Uapl%Ae0pdIitX-brZ4M^-yK(D z4+)2=t0TuS8zU@WU4e!?IUh*9b;IC~#b2ifrF>sP4${k+*}R(nP_{_C|+S4SPu zR$uVfNL@sCKMcrrPkFSrBz`Ux=0gajxzhUEw(%7O`zt9uFzsBYOpgYJmLq4^#fTC< z1%Ayhox=VZ;K)2>`8afD;+7&zgXZ1yF}y`A8}LKeKm^@z)B5Oq3H#e$(?Ab{4i^3< zOX1Rvm+h6fjxI1NH?-{)pTh`b0S8@bEuHR75Y3SjFHOV*6My`m^+QBFnSbHdfqu{4 z%_o8N5^I6az)k=&fHvS+rUDadlX+fdrAr?3L`FOK*O?3uh78S2euK8^N0eA{_Hv7c-e!||Z@J0$XR&(fmI$)W4`z^xXgEE9T? z>-qjVOVD4S!jPU>yJJ;v61zqcS|fa|lQWi2vLKaP0*jcLg6!X;W~Vt_QoqX6;686n3uPP~j=qAy#Jevw|$&sW_A ze*RZ|;7H!u&cJqlRtXc{n)*E3`nK)a-g+(S4rw9Ad4Oc$0~9pn6s0z9j>C!uqThU@ zF!}<*{jo%`F4KGlc2u-&S7MHb=1iBBVFE z<*Qb6W^N6jJimDwaGc)SVq(FW{C{mxew=M7EY`O}YDQ&1 zN8Z_Tbq0%8OPgO7@W(^AvqT?zDNHk7r1VTyu2S-4pPS7S@E`{K8%%|((S=LyYX>j7 zUPQ*i{Q6CG8isYSrOhY;rQYjouY{jGNov67B>TI=0}>;WSnkSI94AJKLz;v)w3iY! z>jiM5U-*>QkaY8IIel~=m_ggqm80FYgbbGvFg#KabBA>iocJ~R}Zc+^f@0!kft zgXwQNZ3;7sbux8$UG%~UB(5wwC& zORiP`RGP5n+ZavU%?DbLuB^{!U6dZ=067%WnXY95!~E9PNA&#g2ZHK;QYK_&~6@*7%kSH3I4Jr1c7A z-)&M{FysFucR0TK1#~+hqYYGZJl7RDGQg1XP@0P*?{3j&+?oA2kZ=!CR+@Ly1IA&d z@{SH4Z#`5sREM6L&V|~PxXrw|q$(zdG=<3vY~>Z>QXP#xM15qBbJcd$(^9=C{FVS( z!*@NU`DyHm))ibk{eSQJDvL}_9XDAtPhkaMr7n7h+2vq=wN6}$gvTcWP1i{n-Yr+b%n!uuSL5zBarkIB#bABF#!YguQcrHgx(|F0HC1GtF~@9Jw5em{?F z2Itk#Q_Tj!y^F+f7XwKT0~b?)rVE1t@^S?!pXG>P(xlZ{Gfx4AZ>x;Nf5jhBjMp?3 z_*EC-f-O>86>xN4YtHYUIEOqA`(!%r?JU@gB^RuTERq9X-Km)VmLg~dmX~W+fQ!aK zAn(Hf`8Y{sgRx`g{m587H+7&2vKJ06Den$fV02cp&b-BeFA+AXF z)=!*g8c(B3C2rSx)15;CR+@6-t^5HhtYiSLYGZ#jJONciF}x+e@vy~)Ex+qD>;qMG z*2SRW!d`=}`$1#?SKdS{6>roN+iXAWuwB(q)dyf6n zzmBTFRD>(Bqf`37EL8xm4>Th!ma$XEDNzC@h3u-p(U8Kpk*yIVGm*B3}nL`~q2P7_d;B!wj5G2WR&_yZcB%&)AUs*~WICqxPUdvOIo8lA5&bcv{}pJWHs~E><1| zKGL|t!j}uIl#GF;sK*=3atLG_Oz(p~J9al6kS7xRo^3sFQHtSZ+|;VNNh#kDs0Tu5 z;4Qgtsg_R#Y-(zZf5%)6snEcUCtOYE{2mc5c#JQRdjH8@P`9|ZhWuVZe`yi+Gteo# z0Ux7ikzq_ZGKBE(*v_RnYW*7+3(guNmtf1WE_HYPF080eGX0@`nNcywA@1$n@E}t;8Dqi&+_>qay97#cQky2TW#0!2+5kD1uOf*1L{-{7e}ePtKQ}8<9UwMN z)(*HRvLzDoa6-%?hMj|ZGzIv?q)H`Db3m6eD;9~D}ZX|;$KYx*;6A^pP z9M$d#>iDw)-CPW8mM@CGOH9KLzQFh~D?!i*4_o$#M`%Fo5UW3*7+@$Qp6DrFPd!h} zhJz~lwFXMc09H11CCU)kfCh?{wfT}|9^9!WhoGyC;%9B>rZO}v0CUV$0BKzX+~`uN zAB_E&0pd6NvQ;pac>*cHZa!^#m9;NNWR2^K%5ISF9MBR5hP~VCwvKZTO6N9YOLpqw zyeQEj$H08gF<%X}SB@H; z+0VB>z;k&bY^;JjTh(8Oios<!IkQbzi><_5rrn?3cocD|#t1i0+h<1dw? zV$;k;a()RJ%OtBgKtmWDb}D?Jm-CKQGdB(j1K0+6yp~|Wyf!!?Gbl=aT;@sUiTD>@ z6U>wx%ep~9M0HmSPDU?O84&x$n}rlTT0u(D5!Vo$qNPY@C1a|N4rq$kOuH(0XTq6Wo2eWR%|f&QiJ$Tgkp}`aX59GePWHT z)hp1%>Eat{jBe3}p%2o*g8K8#6d=uk&s>{jc#$zi@csS~m z^lU+9-+^rbkiTHdZEVK;8z~EGNMBcQ+-TjF#b;(d*713VGSzSlCcvwGY~aX!Ww$_r zL`o3ReG{DTwI9!J*GREP@qhm!DY%s;Ab`--v@zZJe&4+vBZMn8f zALN6I*^?%%(AO4BjO)-r`)oUkasqV(TkO$slU}^R-?y?}}y!@L1GN0C4N= zlb5bt+FNxDVSuQ4jyD1|#LJ2>1WYLaD9~9cHHph%K$;waiqy%`2n7W<1B1EpkuSq? z9beytpJWcyeEI0a&$ogG#%%oKy_;41+inbpW<_SYPPgrpy&qNSLy6ougw7es($YzF znbhwf!T=~BuJoOC1bi$SoS27VI_p%he(i@E?Roh8Tcd**!gF?UDI9QFjx$(&K}c@? z6yqjR`<>oTj}K%5?3N0Nq_&*&kvJEjv;?XOHvX50mO3e0fXyfs9mWIQ0%qKx_rnX{ z)G85Mq zc`}S42}METt==)EYiqy>Pt{Pu9BIj3=z_|e(O2I_VGnw{#r{FlLLn-`8zq&Ws7aO_ zhS&&vBIy8n1x-2UwCvo~{{52nsX<=zBO8}Cs$1p{OHK(xSws~ha#r+Xz4Hb&J+khw z7;?G7tn4c;?LI$5h~74KlmJ(z4N%aZ?IzL%0P9di)wX@QZr)VAeVs6ds`l?1G)D!X zUz3jrc&kOcx(U=}L0Ztgm|i)1*G9fV^RQv0m`7@xKWdGI0{^Ryp>|p)mueqBO#ih9 z?a?Hx9~Lb_bs0Dth)xysif){*-$`d2#XIai?!QyChw$*{wA}IQ+4%T3eQnrE+iETo z5lg)j@|DPc`}LUT-VOlPzQ$Vc-%FB^-TG2LIl(z363vdpWiI#zYm~d@_v;6N3fg^t z!$+dM;&s@{>Ib4pa)uUM$-e~TD=aQ%-h`s>;r=;QJuvBs{q@W`FddU zD>DEd*fw$TV22@EU^W?Ucf#lATU$F2PUx3%*%mVrLt@AxDVnT+ zI$EMq+b5NmKhwmxnQII~`M&2+e=DIq=4E>o+&C1)iV`RBgEbl5E-Ajjo00}eqN!j<;6omDND3Q`g#l4JJz z)!u^-%)7rFQn!9Q(?bJ3;G%MPvbVI?CMETr&lqkMdm8z>G>r#!OllWFb@z%BU7v$Y|d!$Cddz6baur7|W@|wu72P zodfhRJh7wXty*$Ok9lvxoJ;#DU&K{|Jp@h4@fTtPS*`duQ1(xl3F$*=zRsG!E5Cs? zlIbEv=w<)EFHueH1rW4bXs;}Wj|nc2%SP}Xwo|(Y$JA;?OEhKn8gr1C)OTA=;E1fE_mQq=`BZDb(ind#x7}T; zC*RKj9xsc?o-h9Sru&H!101M02y|72&*gkjJ;?+S5G|0995S#uk6%uqZ}GQwvmmsG zhHCNo$9BG)tt3y5N2NsxTRG?Yf50gc{%P|O%5dH^c~v2TY%~JL&Z--=i?cvY1zP++ zkPA1LI=vA-5^@6;a$YWLiO=}KDvTwuE5m5g zxV;Bn$(niNV~{Z@UAT3Prtsk(5HrDRNlZN>w$B9>5P-f%lJpE7&dIln7g-w>pcR4a z*CF#D-$eyw<9hF)$o`_P1W#<<(RfysY41#NwD@S5m*d#tnJAG&oe;tfPC8eHBCr6)I!KmoH7Zp9O2in)#9 z?A5 zsOUM3@8$1;G- z2T})QPgC>y^z;`SPFgs>NjlkB>Qt_N@hbK~@E`33wtnC~>>Uq-_%rk^zA6chyw1*ha7sI!s|6Cd7GNFxho=RXgz)CO_- zXW|~bmDE>HEpeKGj)o5ru5RBp$6GTz3{Tv;_8WlC5ZO#g&`^E`3r`Vh7$7o=y;M0F zaVJrImQjl4uG`_xjvzz`ykO*0l*6SE!tXLjDwqYAcR1Doi?G9U2H;O3_h~-aCZV(f zRv`=q8aR7a9-kAv0X2_T&|t8!5mk~AfkH_hxz%!2Z*Mp1hd};= zp8n8WWH(I8HmAF6SWBL9tEfvaQL11+-#n__SMtGzmsozTgxTObA#8}k+_XK4uVbMu zeU3G3x7A24K&O(2tNhJ0ij%-qhGQn=@RSMH-V+$j1lO4`TSvuCG7u^2NTJ?U;eroP z%)k>jP7!#`4#JBo5$v^Nw~^Ao1!w zf>ASr0bY}(3n~0rw_KjzBiOm1y*$}y^FHX6e`ZMq?0~LtsA%!%-X7F{R!1Be0?J@e zVI;-uK01bXzLu2)dI3tyc;2^{sP*t3r z&Sfw29qRxDx&*jOZndU&AN6qPi86qRqq!O)U)I+2${YXyJULzQdO@sJOgX{7IYCtR zh+$Jk&g{5ehytd93h@E%9oI#-Q&YEIPIc?$4)+}XbC=K8iG`@Dy?x3WjY(Rvi#z@q zaf`#9ot=4=gKp@En?}haAA=0Di4B#@cP!uOhx-3b=Af8G*sR`1Hs~7vn)XG4U@hQ1 z99%oN+%1 z%qc!Tts0r3yNF(q8Zhmnwl1mO5wakY8rG7X*8$9-T$RKi97`>7s7A$%j6`Rd4eZOf`(adg63hs*_a$agQ`toV1WmX5hgUJ zy~N%_&&cHb#n_@}`Wt)z4G-JfE_%#9Xtal(78jQL8x(*7y6m(`m-ZbE`^Lm?Jo`A% zR`~~%rPdpk@Xr8QNRxxWmgGwLdXWZZMctO?zPaYpS>!Xjw>)qc9FKIRMbWH5<%r)l zRS*j&;wTw@wmMi#11XpC5)bq5YUQ}r0IWX`rRaQ}K;fXQjiQcd69>$WW<{aiX*y6{uw#szr!(iI%u z2p!z+#eg;L0(10Cp$A!kfvY~#0RGN#dYFo~Jx|2aqcgR<@4)gg=bD`cmTGj+)cKzE z)YA^bERWH3>Ex-n#HU!hX+N^Udd8P?rpx82f$*?4J3gtXx?%0}gZo0VC%;5p()(ET zjFcLUpt7T`&axhnwrX3S6+1GDg_6STGH^daUnr-_iwd8_sms6;$=)Rj%HyOyf9*za zx#W(mJ8=t;Z$Ag8=eRzmm=b60K;Vo;e#*D%PZAI{13ct_0?zjPN`^fvGzM^W|I)$X z0GQ!}&G&9T=btyxYT9uqyeQ43-ttX2uB-aIPm3aoQ03Us_mfcUdHwjNleMSo={BZX zPFIHRB$;;~Nm$a`*S|m$BsBW$;b(sya|zI1P=(PwbFABoh;?61cr9M8{^@mPkQ4iY zApy{3Bsv)M{z1m71C#H!V;{D5j|M6ysA#>HCfemR0-{!>hz%#_>!5V#NL6VWcJU_G z$kk+^53F_Er$NygV3Eq;xyAwEi2FX`JsiMZ){GMl;XPqJ4C-gNIdu)42(qs*T8&u0 z#X7P%0#FmJrIK~di$`iGu3koq7384jQ36Km;s!_loZ8e(bLPT$q>Gf{_G{XU-060- z9b4A4?h|LpcTePh(`hJ_KndKY&tnimf1*Qz>1UO3n@Ruepu`xG9O^dveqS&7&P8Gx`#<7G-X{sw|^^L<_k z7MucH+%M|QQW#Bj_87FTIiq9kfT1*U^I)0(xCa|?mz&o6XODLd%a^>3qFV|4o7rz) zN>zJaCIm>Vt2JFRdxq!t7R$d`l@C-8@6?xOz5C9>tR?|i0iS;QpvX%0pO$T9d!m~l zJjTwAZ)SVFKGyADa7r>yZY6vs3WQ)IG-f=WLzS1C%+Yh1%dW6Pq1Z9xrfzDE4xp)M z(Y%Iq$;cT`%QlT9m1Pt_7|J|+_vX*K)6cAy=6ghLez+d0T|dVg=M?L7+NOSe%e{Ac z#M(7lz^oo191v7^FB)5By-3d!rHFpvfJKnX$*gQNl}N^YI!DX2YkB_#t0I%z-kLpA zb*2L3(3JH14A?!AnXwcd>t@1u2ljnhqrO4c)QRB6CB|YttLp2#5xBpIxPW*2lR57j z{BP&`+Cl1lex6)Y1(rko@K!Mj8?u_k)7a8ZrQ+P1^riK_Z`Lt&G4vMVNJN<25S`dq z)bi;U7YWHK#jsYXNkK~sW`YbuRJ1)Ux;=A||IDK1kiW~;eDH}??Hu&^^XI}RZHnv| z>-bBd_tFypkM1fp?cY`^Er>n{y#Q^J=ZX_fFV(+TY{JQ1pl9-++ML%iC$fxVzzp9wCb1O}(kF(_496@F}&?^5woKjj8beH4ual-h~SnZl?}Q zyu}YzW_05|87W}qUu9owUq0>v9Hr#ecUbsCsEkN3?w*e5Dzk{syW;p6Ju0;K1Z@zo z#4{U>*lBq^7jGHiE81Z|F^q&+#kdEYQ7({)7H;a*dU#v`%XI#Gsr;D2ufq-NFYTmP zL3%i7A!jx2sh{9w(rPbM9^fy_W~Y(&+U?EZYSYfog=e91g^0AyF%>z~u!}*6ki!`Qk_l$8z1A8B0M+7$v~P1lf8kf$EqckQ@s*L^7;>znAjaMxVX)bW{Qh9+ zjVFyoqZQYNcl_VSJb}IeUNO_oZnPZ>IoD~L{W0^BIFBs0S-iqKYZU>%Q0nFpF*ddz zxYd7Nh_6?XIXR0-w~ERfVP52Ny~M-*GE|rMlOXN82-}Q#o^ys!2Gn4*!p}FAs$B`~H77jj|*=Eo72?4`q!hgzS5EMG=Ll?7W{6r7S73g=EW4)`SUV zUm{tvME30a`nyAA41Mzb{67CpnR%Xj&pr3tbI*C5*O3|PaAlRIIkiPNK$Wa`|0~JbkWxaV#Zfo>hgLyQ*}j}O{8By%L9%Df%LuUJ`LT4MR%Kt}l_x+dMPXFfwJ;MDW8 zboez4T;7dwqLzw?HtMF8I4(3M;E@}QJcd({X5Qb?S#4w$gk^i7Nql-4Yi0X3bA^bv z=uRC0LkfIeJMJ@hI(=PZ<0-c4H+-@|#>ahCp#p%RNDIA6wS{dPj>~t!(B>6on=Dvd zJ)FUp`=G-FCA?vVm=Db*yEy%ExH$00oD?|yH1_2vAPQyY6% zk;L?j4WK8x^-Yy?=7tvh{NhrDin`*~Mg6rELd;*FLk(GqYdpraU7N??58NfpwZFM zK4wpi=MnLqa5GL&Bh(D--GBOv(-WMXUsJ~o3EK39KIil~N{PA*!y%D&mCAjMHVvCI zK&$@@c}{*<9djqrvGbjOD?DiZ}Zuc9NgwV2#W6}bcT(Q)}!?Z zc^t>@0)xmznCvPTjdft8~u4`Zjb>GOxv4}mg3!z}H@8(-EceIiv zH2qg*nT2=_mk_CBbTB+TXtE!n2&K|Bs z6Zn=j~GP%JaHbZc?ZM_He)ay@s=02XtQq+rg`l4$?x0+($4Mfr7&9)F5H zBwZJtvVPAs?(OK9eAf8v?{eLo!!L8V?SJAtP>M}P4{1PIkk#5pucLERaXzd&uhQ1v zdf-s9FB>nOPmV1{DDgq`ZfzE$UzemLhogzGbOJPAcy!^DiVSRqp>p021|@E&4gZT2&DOoFWCO{EoFg(1!+K-GBh1956N>y+`Hk>NW-F;<;+20Wy5I6! zfYn=SV$Wff_@pi+R&)wJ$>K}jZFt4_n|dL|Ifih;DD1>s1v|0iC&??LDZ+rQJ!&pC z%xqiP+b{X2Gx>^AzT3-vvs4pIZxz1&>6KQ6goslT=oVPFXHk1 z1u_%<&5V!-!|jBw6NHY3&>p-YTU&icdOau%VsUw^HLPaswe~1?2*3qrk*7Yz3YTuq zYjg8J_4wDtT)(_lCU;KE_{Wn<2ND17O3Rn`mQ;CBcd*`rRK}?<{lUp<#-ES-S<5g= z<+W3Ojqo2B%RzN+2>>_7ja_KNC08+2J+AZ9jQ+L)LkM3{(ahX~=7|WUi_rAKR06(^ z!bzAa@q<{aL~)E0x$HHnoh=!E%4M`sP@ZdpH9^a8j;WJs-`aA6WOCd_XTrc|$fXJb z@pe&jl~SQNJJ^Y~MNiEOC${dRzY6mA@V0!2cmn%6Xw7x?Q<)BGv>h+X(lCv|7SKWM z;&B4;$o9{x3(OLaydC~!!|m0Gm}HV2J(P1YdjbbL6nKHd>XRf@wd|e%|08GZVd|j3 zsy7Re(08+X@&3V;w%vc(+lDjy2-~-8h z;Q9pIv9-8q|RLxUTvxt%O6AGRf6N9BHPv@LSnNd>nUOf?;Z^P9%-q*+i!POfWs88o}C zxofM2mABpL*-A$s8goj0D#>n~XqH6NAowxbPO*t(9*QqpC|kiinFCOXT5mX|kAC<7 zI;eot3-psrJ{fWYvsMCQhd6*63rB9ce%=VWm*jN8EuAMzgIJ!d8A~b%CjS^*e!sr` zK)9s7e9V-c_uEBQFrcIAj|4t|SlF{I{80#RL|_c#Qf1la#;4KXj@ zx%vMA+qXGv@cXU-n6O5z)-lOXOWrPS=D;N|bfSA_u`s)mH`Ru;#@=hl9A5xWX(V~j zW2bkUF$k+t>erLCC_tk}wl~4@oG^P5P*TXgGEyz8FNk3Q&|cX-oO;@%r@}mevh=WA z5>qoXZU2zeyQFbXkh-sOF_{y5_driO=7Q?1hj@8?CEyz#L=*}oAAZ15bR|zwzw2i@ z6_H_kN16FG^2)r@A=l+6ep#BkaJF`_Ux1GY8af`!Tey19lw zTp@l50=);7C?O8LmkcEw{ISk$mGxS+lelVr;|1TH9al3&yiQ^3C_ZayOho=?IwehL zdW_EFnA7f3r|nE4lso&8x4;oUPeRPgy6XyGkw@MSaj4f(m1GFVaY2C0-#)C161IFaiz$NE+AuOm}**;0{y4{{0Es%GNJ^x?x|%frTF{^Fx)CxXsy=)f3Xm z9>dZ2ellZ6Gb|o4Gg6Z};MHV;=6FF1y~_h&s^+FHHA$^95p8U?E*2P#IVYa-h~{a< zODxsd#dEU(F$s}>pZ=dr1BQ%|dT@QU=NtjV%)ZFQKCYwqYEl#%Z~ae;22g-mDO&UI z1n4cdn63)*Xnfz)s`?c>Q=00hN^UEr;$$tkMw&VS~=s^k}|Z z#DIWcS~Nm((9tw_%$AMt-JV2FKhzCL)>m5!B>;t=8=9r@hgY*X69mIcl*^OA8G3~e zu@ID~iWXyB{&03j)doruHT9N zvXDwl&=1+-b^&|?d}Z>cYtg6RL(IhagCiV!ZNJ=nsgC_?(21cch&MKY@g5-q$jeMy zo@nw%b9d}CKxThbd#+6_hx(-}c%P*WFJJ!VeZ=cDmRIrYyx~+|wNGrVo>Ls(eF_G^ zmO7p9))zCzGCjiTbIKc;41b4^OSa&=v}w+%4GbqjI>=hX@|WlL3vEPBKg$@d6)xYN z?-+ZRq|lbQaqCzh12>YVg>|Hw@`lsG!ttjo5r0=dOjX%&ULdN{4jX(lR>(|Y%9ee1 z79PXs+hJ)TUn?DRCtz1h@#*x$wR+PN%n~NXEKk`1n+MqPNwTBOQ!QpyJljfV>rA2P zw1bv?Uk8r9Uya12Zq2sr{2|HmYX8nVkXpU#-7Ebb(3XsmjXMW;75f<-Q+u!$2r|N- zrkT>#Bt=+>K3mTHV2-Agkeb61D8Ekl$}=x(>aEAEEax*xS20@v!&Qpo8VU zmWVbKAU@qP22cZ{ryg#KfJpJ9T&e8MEiK0`;w2>Pc-e$hfMds%o33`>pF!y;RB$V? z->B*17qu;qWDZAlhre+Kq~!9DfVZanlv*qavl~+P0VQUfp7@*KRFMq76Kj;BMdXIr z;yG@W+8x>3gSGe^v7rGUOnDm58b%dnAJj?w?@b7%%qtLe zEiEmTLa>Xf3((ddgx|L_h3i&D0|dq$G+6M5T~s2$IQbLZkj`4ykt>w&sW<)}%Bry6@iWx2wYlGaDP<7CAyW|Oj%|pXx}dBf z18XD`X#V`UR}vZDe~lDV{@Y}_E;W!(O`=H(e{?P*Cs~%`gwlRs<3-=xszf~>O0C#7 zKyc=Az8f$4piKTk|M?Yg^cJ8#e$)Jn#XI;@z|m9>R3M6I&3}-FeXx99+Dn*aYv`9- zT{JW{?o|NEZ#e^mGa;njAl4QHpX4I$FTA@CV@<1ERw*ux*1m&n0H?~_P%o>8i)x1T zj~2~e+!Qc-T~;Jp<%DrU8cN#Lz>EJ7#xm`~?(VS1*MId)61b($1ELec;PDK;1zI0& z0GjKb#$c1(bY2C0_eRIGr@e_K#dHe2PLss>08dWJLyEPj$s~jWV~!gNw}?IfOGE6N zJV11t02m3u)1YeA@x6Kcjzug`JpnkO!@-3ov|jul1h);uv9p*PV&r|I)viy`q7$65Nn(D2DjG$QR9k3xTzhWg~ecrYSF{7Md@6U40I3xs=_@m({bd^>PPc) zhmKbNDgZ$S;I!6GEE;GPIGeq=F`d^LH-nE=FZ*AL9psQo1|N+UMp3JS2C-*=N}g7; z#BNKn^LovYHWyqStrx&A)Jt)mC60?l@|>J#^`AR1n$)k5w>it7I+{r-y%u0DpJW@T z7;ykL*h$uzi@tF3+-ls}gT6v3O-nS&ZsQ6H$z%*uV`KY6)Pt{J)ledQ@uO<-M)#im z7d4F&92~46w|3oxv@9DLIyS!^#Q!N4t9rul1M*Xp|88u3LaIY=9c}DJerUQI8|QRu z!8iWfp2SqpNJc-hLhB0Dz1rbR-EQ#xHC7L_zwh&%rFDfoXL+)+DJEZ$)yVb*UX=t; zbwXaj&RlHG-01}~R2Qkv*{FWDR((*ExM-RE1bGAGCcfv(j!`eqwOX8ffxY^5#8C2j zYV18aaCtHH!qCrEzIBN#84^ccU< zy?ghvtFL=vqKE!y{f9Wlr%w@x`Ht$Uj^)pi#APB$i?U3uy5`LDOEKXS>mx(ngTFnJ z(WDKNBx}Byac=Ps@+ATCwR=qf|Defat?obB^`((lg1K@%@TNUB_$FD3)<##5e~4ysUgjELpRAl z+|QPrfuUT>u_(N;d8BEu@S0fR4A;7jn?695@h=v?vUJgkqi$~UT?tr6kw78@886-l z)lOUqe~FSV?6xuQ+$4<8V=JRPBP@ol{qX&LU(19&ov|MQ5Kyl?tO4)_eBA)F}m0DyANvP`Usv zge6|l?8#f|B!7SZ0;APn^m9?RB#{JTKtQN;19}g_be0;9arW5SGKaG$0PZGdpy^Y* zl=@B+9~8qoT59NgEg^xs3i>P;G(`TdSH1HwNQv2Sgf${FOtfy~BGuKk%|deh{S@Q@UUJvk2^to@X{H-lo!e1QC> z&!~*D8<>0HsVPR}=Q~Tz!~{to#9%jFA}?T^oTy9C{U%*1?JyUi1M30>c!hgMR}Jh& zl2Q(ozh5D&G~8&GRhEY=U8p5gmNoA%FB6l8o~#zTYIgr&gqU;sY4rZ1>T~l#)AFqP z&lCdr->}p$g3;5<6cm6)qW8X=C;y>Y7v=*It}xq_P#YEMNU?GQ>xX#M1_-?F);HM) z&p0igpxI_2%2JSv*}nbX`SW|>JPfHPRj;}2yni5Vyjx$)Qgh)IbiM_By#eXB8nLnt zpLIZ%Dler&_{Rw)P&_S~5h?9_>o~U-WS72QXamBvK2Yc*K}J|EJGsdxmij-i#cV^icF90BH8o%8 zWdg+PAEtogz#HixcI0BV#n-IC&|&IL4*^qC%bp__+Xri$7y<&2vjEwcG<}uJUjp+R zApCU*Hdy=B`GaXB4oH4Q`RoaA3#`r}HBCgeH_v2YU^_sCG+D~p#RtJ5vDThO>(fIv z!uMG$ssTijxp-h;T&vu@b=^d2;k4Fh>3tb;h=mz-w!HtJ@Qwn*b^?0DRbZ#Q2wM{4 ze|21eQAr<42|zbB`0I{P~NpvDB2v8~n(>t4f`a_hCTo1AG^}>eH_yRJn(J5bqt2XWJ`X;?XF)%pT z^5l+~+Lu)avbeh_Pu42#yU0=aw|3w)|2B|-*Q+mo`u0ob?>G!MQr6Skd@3MJmb%1C zi<>7l(Q*D`>PBLU{6fUcV}|=fuc~@+KHd?f{&;NhORu8Ude#MV`~G(Z8ng(fp`l4p z;IcSVq|OO2;?1x;(DuN#KaJ?-ZkWN4uW%MMYlYb)CiWkBQS1WCBo35j)l3@vDtvJ# z_k)KqmDR|;ha5!cu@KiTZg;*2gPUVfA#5vRP*CXs7$R0#8 zS2=fAikn)n=nHynDD+-lcOvZ zmMsUr6kCpe+l}ooKux;cT!zE?eK>8h%!5@filjmck#QW zcqKQT^u51%UO-gBj=rH*IK8vwi1S8$2ff?RlS|Sx23^I6tns5#1nm`D+szdMruwkj zw-3>e7l#)PXH*}7eIONBK4fKUI~TN`P46KnDHSWhY@WoYZ8)LRNgLc(V|nYq655JH zl)#cq*a->rr}{_<;x>Q-@k}6i_tv3UuHpqcwlvB^uw&2`VOV+y|vOMW()9Jo29{Jm|bqGp0S?rcBPsYT}p#@>uk9k7-+%o}9B)!#IgH zUOR3Ce80rSG)rgDb(#+j5`XjP3{-wH{Oi@1nXy6rPvG^X zX`?LY=0$u+L&?2&v}Gb*!fuLZ>tH}FP&aW}1Hx(hmaEvj9YZ%T27nfWvS9Sa%WIz= zX6hSlG(2K{hinr}Am~(n4?2&|%^h30(DeUrG1l!2ONx7g$&_akXEVb zW0m&kuNE2zj)%@_4QGl|`rCNT;}Vj4;Bcw$=k)USmejm6>+va`@Dw(43&PhKno6ft zJ_l=|d=NPhhQ`EQ0iD@)ma!5cfEC45#-A)b00UvAF)5wOb_3h3>aRou71!QKEIlTS zORkQ{C*t5j!<(q(5u&XWm>hzLqp(MvtHQ@upi@ULMWHnZwErr3)9-%Y(oXX=;j<0f z-$-matgGjB@@lV|;dGm@b+GRBt*_gS_qM}#5CmvSMUKIv;srtkTE+-pacF5BvUbVh z$!^>Z;^umas~=u2^f60RM>8iHzlQtyE??;X>bNMYuC0YN#E8%6LT2Zy9%VukWrr6q|0id4%$VTW8D2e01yvQ$h zlzqQLX6lA)e-M2K<7Ub&2(^6WI!Kcc#+!SOW&?LSgy0@y(7YeOdnPvP;AaiA+JerR z+O@hGU3cPXWDR?v8!vfMmo9qbY}=JPNOI>HY#FPS92#Q$PQdwIBbkrAFB|AE6Ny}m ziO;5>r{wjc3S)`yS=W9c!N|ET4NgdrcFn~j!BpXVgFQ4C+0kd=Ws3Sg0MfRs`roA;mxm56X5Kb1I}Uxrb;=Y_ z=iB-2u*JNS%XY1vA}}DoZ*@CO`yYr%fM!SV!tOZ zeII+f8(-&hn@Ag53z2*55tqxbavj_X7cI?oa0lmZmW~kD>JSI_amlUe&EIo1sb+Z{ z*9vE3;$F(FC8D9apf(DwHB z@cVP8c2k_BL<|X-tzOsuehugKt9?Md=>5kh81fxg7p17?F>2m676cGvf>MrWamn#; zGdh5Y=;l8k9#?LKiRHy`xe%(b>gsA)UJB_$um$qw;M!&tEJL=87gbA9z~uUxfzg)+ znzk>hY~Uj@VR}LjH)E^QZJUU}_&zrcbboDy|6IfJ{RY8CLAW&=_f10s0M;RV)j2@) zsPUi4|yMRRUfe;dFznlct}t!HopzVO#f~L zH^1yFk1mOs;NwCW1r@-UuPA{qWkUSdX9XT7L(D#+Y) z7U$sFfhUg-n25#gLW&r+JP3$7|u5V{eb@Ebh5I$$i+PWB(1XJd$-Px`5qc4m*ws4eWCRf zr?>$P9vXjLurg@|nv8(t^D-n8U`f;R`$)gQk~&|_?-m!G`RuDdXBMit#-q5d?{;@x zUl{kT(nY1i?W&1IWMr3&m%etcwa@XpF0NR}Grc%+RqvM8Ku(-+)!Xsda}BUDXT8Lu zdLeye3I_?29c-GHS~@*`x|VY1B7U@=IzAeB=HUq%6$$8xqvNBCyQ&f1IeMfX}*yPEO0S!CYxu9=Z9Gbh=bNwzItmUnvlyb^ns2 zGv_68^*I(ZM6a?Tz!!*v>-oaoYqJdYRb0H#d4eb(6AsH;`>ue_XY!|BWoTZg=_Y9 zX2X6q#fkm-h^pL?4=+IxK%=mwqHk@k3ZYdG-9(>@He_m5kh>Y9CW{8;*Xg(9m56DPrziln()@&7hl{@AP>(AB=j222|6i zik4$ScrpAPU)l9?Qoi{&Hiz|1VTVCEVRrhd6Urr+&jgAY4gPSfkjc4byi!*6qB5+J zLSXRQBQE_608Ba4NMn8kx{go1D*50i#Clx>Jczo2A;FhM)eMKF>0r=nf&-TMCq|Y^ zLyF()ta7Ry91UOmmo)4oa4Ig1*NU#J)W!hoX5-oiU{#M&4kVdyvb}V#u%`-~^Ghh| zIJ(9Sc2dwB>*U5x3dRR+d-9-D@f$X!!^iMFT=$Lt;i~Dx@jZCN(m;^4dqJgs^S)h09go5cT+a`fdWKkB2q$gy^O8^@j*CP|SXb82doTk?u%)FzSWHJ?VJ|6J;9I1~jA|%`tiUCYQh%yO`|+u#06zLL z9N4y%<iDLKp{*44FcE3R|V;3ighb;(o2?s8KNw^ajEv3TM1yYcZxF5G*rjz)pa zVi$WW-craR%x(}6=r4V_oB6XmLQM;R#reV=9Q-|wJg0)tG!6{$p<4&L!*k z!TbnGUD{Sr4{FdeiKWB2Ml$)$_LyH~#0lmNx`3e`3}mLlb9cFii$?u2HTY9t9u{MG z_gp8Wy6ZmboRc;f{3LZ7=X}=8{o?Svwehc)W~Wkc30wv>#oN-S;`2)QV5f)!=jxm8 zLtIYmaw9I0`x?A9U^NR=0~g<%mbe+ZMt4L`wrhN?bPhu+cC!S3`c7axQd6@jak`qR zgS&BxTJc}hQ*?#hSlDun=5E&Bi#*42CXy;m$QPf9{|0> zt9l_k7s~gBf4ZiPkjb(S?(XhBTDFZd>DOo@7(sdV3%#fB-AS3BpqiVTof+a2ShucC znH#{7bjsa(9PMM7X-wx!47Ub|ciVtI_VgTh3`dubT#S4_M!(cXvWvH>Z#N#jN(vpp zRRffR;N(9pGXJQS&?kT4dv{%u0pW2Ov()mkHFD|mQbmyKYUTL2ITw-7a>XO?ueA%( zz!RP_TO%zCMYexAMyWd!Q1$&M3AZtte?wj)vh348XsF%3>zO+x{7MIrwr} z9_pR_RI-9Fdxay>0v_K5g!5Fu*v#~_Q@--jk8PU(s z5WcGxR}72Y34Iz3GoD~g5p@z?KX><#Pvih(ME#8w#L_uZdz&@$0+2W1!H-lW$u{p> z3*@H5BlvFscqY6%n)4m1q(kpgSFI?`tn!3VpKtY7k#gvGdL1 zm+tM>)~S<7ciPY`(y9j;;{s-lWh3o;m5#;T5DKNAsH^|9T&hg2P_95HgR3SRG5I9g zd9Ok87e1S9!p0#UU`Ot!z~xgztQ_s(AS5*WLqn&}I$eqAh#lY^%c4m15!$*C2!3>o z@44vMO?wN_iwk}FIQNgNm(9xKd<$0K$DmVydhprb^}Q%P^KlP+h=aRe>0#<{&lq0k z%7QvtyafKvduO~2J4xUlXm^U{4EkBXOjr35M@;YXN=vup9eHAuDx z*1X~3^03!Ae5^kZOO_M>dqw2JD#hb5YJapshhE#*YS( z+G}9%jgOEY-**<^idV(Cijxvg{4x{Bs~|0wg8wFb?rv2dS)voHC-08C9<8&j-MHse zaaZ*k6a5MC@8V@=dw`dn+OIlB)ahIvpE~!^$GzhHil8*dWi5DL{_@Om{nQ-x+cO(y z%u`YjwFr92urjTz0Ak<;)|6OT(QPXEAJ^u$D2W4Kqh@$%x|~2K!b462FFjT>d-n}t z#I}B!C~UKLgwv`s9;fz#xKmE|SvUd!#pqwlJ(fxt9UEDCgEl`Zo_B&_d~M!?Kl1|fAo z0+`pvS5*SWOZmV=BI)W#Me`H~L%zaG%rpqA#r#vs8M$@Nha7Hd-+p2>E`YSQz;a$?}&jrDz*_ve1 z47CYUbeX^R9skN*#Gtp1e`m#(BF`B~uhc&z`GhJ-Akv!vPfok5l1OA6RTkxQ2k}e2 z{(}WXHsXMOS~;&77B7<*y^AN}_XSxNR+;IV@3x~YpSuoiV{6Yg> zD-{u!y+j}5dV-HRcrd@UDSJ8bh*z(A9#3b)Tnil{hoQl-tKQZ}v6nL960GfLRtuoW zAqKHHnLTE4$gUjN#7!S7%+a4BG1Ys^Q&rG=|5VToW~dyWzNhEXxTPpn!BYCEbsJV5 zHy89GQ7^zd;lLF z5BSyNf>g8r|EwDIHsDBcutnFAgAAps{?IH|;%i57@gT;BP7!pF-5>BfAVC5F!W#$L zA77^)nr$P42Phz0Xkn_KOMdM<&xRL)hT-I+n?K+4sxtfoLglk!M0E7`#KjwL9wI?A zO@V@x!0MljD!&yjm$*6X(X(@;WpMxuE-3u!Qwh3_bxwT40gOPOVLj}T%K|^6bK+hA z-RZ&otWS-G+yeKQO7r zBS?NXTTbA#ku|-*3D}C%ts(0s+NIf*@B8Y)Fqi%J$o{V%0{s9Ke6DrcO*ZD1-#t8H zyLc3t!BT6}>dI@X#ofFD1mT1=I4=6T4J1954b+3W^DGE_bXV?<=XW|vfeU2d*9bofZNrXA{k650JTmSxm5chzb5m8K zEx338g^+Z6=)3&zN|-CNCe2yB21@2Iq zgIUt^wJ)=QXX}`a>FD+vzn8$3l`b#yNsEfe{(7{%2W1m(j(b^yM6cLKP=>9-r@CP_J2Ab@l)WF1ZF`CEH)P zeq81f0WL=R8@(Ye0KiHL>V#PMlH|Xr1MvE>@GHE{=sY4`$$eRNfI0j5bP&^JpRevD zP#$qDl^u^}SG#X)%`=ia+tVHPJn7(mi)DqE=>)>OP`>NheXCko&HK)s3u3%S4XGe4 z+ze`4r@$pzeW6EqS?eA(D89-FzwKfgPZ`BDauFi1>}Ro_e_(XCVh16H8j&wY=Ex9MYLKwE zLy9ogfelpwa-p1Mr?A}gy%nsWUv;SZ7YhJd&_#$Ydsbo$-k6K{b}iu)S03Hcy-;Kq zH&ADOw;w6`WXIkP(HuW4Xw`g%GeFPKdah=?tIdV0eNKuCuV>DJ%~5Z~n$fD=vf#AI z!;%e%ffv<)Zb9UPhtNrW*sFU-t)EH)2-8++{#Qmbf*2f65772L4Y_!hOl)n`wlI&g zltdE4+W%>Ur-p`xJJaf;3`$N=&O8O*uZMvgIXkrQypX5Frk{!}BjY{=I)W`u>u8%ZS3%{T zCZA1_<!H%&)|it^YNAj8 z+EL*!;PAo~0j<(T)SED*Ri=h;ZhD8qwe(fahdUJY3T9;c^>CKK!rj#V;DmagCo_WS zK5x|)YK^B2n`fvj56rDh$QG9*?~j*z>9`k%^4;>>QM=#`LgE)+1=%k@kG6y7j0 z7R}El5eilw|354Mw$a$sd*lT0mRu|+bWD*E3$VfcuU&E%Sm-y^>yK*=E)fYQRzsNG zBpa`%+z!I2?`K%~kRIZ(npQ<~d)pSP(l7-4q(s{?d zt|rs18!k9HYX3p9 zyL-&#jRh|u9q1Z2`bhtfwxV@W)QLqEpGI_3>kK>Ph_Vj9Z`6_{9l*L=gd2di&YqWzN| zAbEn^%Gopy!fBVao}}aiW9bbFoV`sK!g!~?0xae@0i+|1`LxYpB5%XZGF$zIG8&&D z8DU2oUOx?zJB^JN2~0-4X!vS)W)I8*9_BLOM*zRTO8h+Ix%TEut(ocyrbFwTyQ6a} z8Iv zBONkfAg&Ff>N8laNc>YsCg*%O0;ZpW3C6`e_6$$dLo>Mf52EyPYI>COibOXjN&C7PcC@TXc|k0+jax-w(cdJ(L%3}*yI3%wPGRN zNxv{2qPwy1pps0tLv_&`Uo;n0;_X;G|1~UOqF2abH>r;8Mi%>jj-ea+I;)dQ);dhT z6$4f5xyZ%*TQgO*ZMz|*;wFQH9Vo-XM`gv78n|HJ0gYv<*agNEJFUfQY2VFau(~pX zi=Z$lVAbz8=KpF8`%WcY=#jNLASKqSvl??`=M)5RY6gvpWsl{L0M6?eE?*a-8)2)Q z!k9Y-s3XJ@1GkB%M2dlygP*(XTFf2 z?@-?sunV_mU*6e({#bFTJq7avTuG!&(5b#w_tMRV))x4cIn6Oq#Nf9b9FXxyEHKBy!@iH~)?rT~qu?zJVN?t-S3^MTZ@>aE_Mrwk0iT3C(wbK#!IPO@}4 zgm>XYo%1IGai`G!{(wG$cwF?0snsKF7Cc{djMZ2ZJU(E-YT&x*>5*-JO5%`8TOH1>H8T40--4+nj)K%9a42%=KX9J}s<|EDfI%CMW%T-QEp)f`tk4^4M! z%&wpfnDR#pAuK359e%rAkC*th(XWzKoV<_-u7q+1ACVv^>G4N~HX7Psghha|*gw~U z?xJI)$+@f}c2nl(c!X54gZ7aK_@R31lC3(2T~3HBf3-Yz?O_|9oGco#GNnIVf9*%w zMtLc@dW4a^qVlUsz5UQc($Qh=4_K((T}pkc5P|cR2m@@>V+x&cR|~DBK}kT53@#5H z*2RSU*G+qaYIfoOs%aTI*B0R<9e>LhrFb_!{od$z@;HWae-omSHuai2+FQj229OR2 zOZzj~^9C8o;vS<6uLQIH0d4p)GxIhca2c+0`W8f8n%d#aGNw;uKy$`2=L2h{qrK>d zuc3`dzUBCRQ~1X0#J6wV&*hp|JRE-62~^$i6XNEH&iAD*8I2{M)1$GW2bCLc=o`YJ z)m9VhXBVE)5me}-)T@OTd20)w8$M#|lU`Rgu13peNO9z-@Aag1*O#f1o&4%^wqmzMlp z^ital;{_()0t;)c!3!)B5oxf@=^Wvsj!_LeZ{~;~P+T#`WCItoL^8rxs$Oy2q+Qonbjjmj<+))z zCaMAtKnrx}u&&q}uRGfmYv-w8TLY{m@h6t#|pyLadmfgTlDFM=NdR0(&iwZsovqrnsH zjh&rqW#)`4J8v<_6E|wDAU%psy^-GcA#%~>SqSgp>&#eV08MnJPo{A2c3cMub6FB% z<~K;)KI^xeuQts>y{k+yy#w#3(nSOvA`3CfQId|Hg@xQ{~g^kigDpK6L&ItmDc2+nSG zSAe`&IjydKSV~Yd)Ig`XMHBXbvt}o2iR=bhNo|#!Iv82m6XfEV3_+=z64-lO1=3E+ z!U5cRyp(o}k8N9}K{e#fJv^S9XHJAKEQu-n$XgA4-LjE${o;tjM+u4EO*CFwD|9(Q z3q=9Kvjfh3DMiVJE^Gv_H>80}=3IC$GjC|{Uf*yr?I{ODQkZHdj4J`7z2?KH#oVSX+ExiZ3;E1y9UFe^jvaKXj7 z+I|}#5$zaMzLezzP%REnm83B8N) zDYWS43RgX?x<0zrC^F07g1tJ=7JfijY&=#3w+b+&=JXVYJ~H6zSvkGo^}i#y6`Dsk zM)JK<8sU6a<q{lBDQEv;5B<6$ZJCXl9PmyVC=wDmp||+d0#=4Ldi#%Hhpaz~8_J#mt-K@RVNahv zl}%{X8=E93`JNJY{P(k{MO5^OynIN4~+DZu86& z+h^GkSA*6M*s9u}_yyAd9DDSPF*A|G)Iv3X51 z38H&ao+F5&66ME`pA(vM8n*A0Ll`6*oDHj1(+#g-wg{lL`bN=Y|aMI27%N z(gJ=)ipdqwKIenHeoD@4)C|cX8tS-Ogz8SJjXl!8eg`o2W@KhM^KpFEk5{Q6HcduB zX=!P-eEfGCHa)j(4$QB|ey2L5d#tss^{IJ7%!}`q375WuXr`D*|CjD0|KX&~RPRsS zjHm%FeYjTtlaC~E!6;+E#Fn6;y{$rFeboUl98||@@w+E^7&?OfONg$%WHKiEwMz$*XS)j${lhd-aLhwL%eE9Bxo`ppZgVt7QZ{cF$C z!W0-N4lPdaFA5tLRj$8dc7=sFGs7*H%i&sp)K6q!FkPL!zM^W)ZBtSB`ThL8Cmw8& z#{Yi&fB6Av0e5h8GzfAj>mjfqlO_ffg*km6k6Kc*N>On967F_={{24-6sE&Mt9z9n zguUo=^CJliLUQ1R3z`>))z)6m*8Ban-yb~CH6J76!<+z`egg`hnVa*GbA0}X z%o$cHs?+bf;MM?Nd-QuBbqO(cG}z7>;!t#Xql2cqL=CE5G{S?<;g{T(w!mGyuA4UgjhWt6t;0Q7{bCpN@E)0EqLpjow(WA8LfSwoH!*oH;R(P7`+i9M z%O*h)re$lS1Z7Y+GjTGQxXmGXtl%NOvK_n0GO{6&ub&c1BPs^qJ8h-^prh^tEN`cCdTbA(*1r z$CXh=bZ?b=QiW~#n{vY3T)^R-c4nn|p7c}{egyQvDz80aANB_G8^FClzsxK%N!8#6 z;N$io6Ii*~q{pCiWRInxYA{zc-R~#clLWTe+UrM_DHB60O|HTs)7{xr^htpLLZFmz zpT=_G1^3&*tP|{3ybu$9lwvEP%@U{MHyVo#zgCjM)ST$XqZ(#2hg=gDE2|a4rSp*ljTgAB0b7}SN;=p*O(Uo(bmJsxk zxVFTip#@Eoxp%y|Za6ROkE4VE+};?2k_n`qpi!+TbD@Q;2-$)ktJzEfrj%2=Nu=tIg zF+@uR`Xp?D2d-5H;?nimM$?Z#hh@LLL>@~9Yo6R`Q>%CRNeZ99Y!*2!dvE@XrUc>N znh_C`;NS=fyJY8rgSPPep~kB=|t=ihqz)~H4qW-<3J~X@8HD8 zZ(dUVcz~D&qxvWa3=T&QsLK;{8Nv?ZMbXkYmgWoF7IM9sz--R5;RCaxyOrf{^@5FrY>YDRU6 zF#-CHTeWuodcm#PiTedYFe*Rsnd%ls8eh)LlMy`E>FUFk8_D5sUt45DyN`lcY^k@~E z+V{UxeOAu8PoF0GS>D%s^2RA52q2#r@u%$jLUt43CocMN=4&iHM>i`ayaE(}mD>fz z>3z!Pc>F9WM0BgPfSI_8|Jm$RO7!(UDpU(_yJ_>##p|c33LgByh;r*eAAaR@KY|)% z+qIYG;AXY;LX%6{oMu#d=30dI&lEgp3^Fx;6DrV;RM10&Evf(_o!>tJ2!qgqO7F~) z75J)r#A#~;SOZPBa*sR2$CZSjG_P!TnlZZ@(grC8Z!Pc}4G^9^-2L@bO|GdA*C!K! zhdvifi(Y$IJwi2q@v?u2U6A(sP5-wKbrR4i^DiP?-aSqHC-1((d!}wU2H@EJ71|11 ze-I9a6hN2c)^FamlE;Nai2zFzurFdF!vSZqKikLL+_nf6Af_Cvt6~rT2Y&T9(D5_F zUy_6c9+6~iUQIE_4ysiE<5O#WSu8nwRt|iUete2gjzbYL#tt^Puy6|q2n5iVI~TtD zzyQ)?CwxT<=cfk~vjdRI@NbcDj80!j5_sRNo`zc>Pao2-f2ouB<7uKk#6w(oI*EYQ zN_KIWd2+?ooY&E0fp7XI>u;;9^Kr$qfb{){8D*2uW6RDXjK`W4wlRTV$OO}Sz?Q*p z2K%hot$G!9@*204o361L<9BP~lo4K8>w9tPyL^Bzxv+FCaEZ`a9ncP5GH%;fTk zLR@M+!};NG0-`lngENbCbEM1=YP8VaQXps5os>`cxH**UPvv3PaW~QD#1or(84}oGhCHuv3Xgc)@p>W+*|~+bbDLRu^p@%pN64P?K_)q z0`FqeVuiervoIN4$5Qj|?E0tmk6bnbi@y{a(7ej{G0cQrI|g~;U5~$La2vxm{Q43= z7}^8W1C{2nJ^w&0c-LQiy_1LaHE191b#v5V;I?Q$4VBt*DP{yEjmaqheDZU3phdhY zEgSn4_aHUxb)={st&+1_YU2o>@Aneryk2Y8$o

    ;+45?v# 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

    tKN~K@kGD2y!($l(V7T20M*Ew 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

    W$3rghlk2nY+dis!gjO$B0`H~kn$ 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�fWmO6m1hOlK9HZtV}M6ccT|@Bs(?(hcM&i#wJ} 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%0AmLa7>jl$Y7`hPq*Xf(ZT){x zpxdQ6ZILZ!ESJ1Hyt=dR{WJM7VeNZ+w%p0t$1%01;GL_xR|A#4wlux8=pAJD7WOFN zt;@x@Wiakr=bU>#_ndxnZ};;#pEIvNz2h~{ z^Lw7}v;Lk3&g(DYs_{LUwAP`)1Fw%DS_JUI6g=-v;9MEF|4qQ`rvJ0OCLM9%F@%z* z?wpKci9|cus+tU%BXeS4gNpCYUk4Te4IYTS-+)|y9-1d+aAs$;%Y1e5^XD(FXj z5{NW)@~C@#5@yOS&NfVk0-L+nIUsxZvN2OO+k9WK^XSobsVbF(St9W7zX6y2Do{-n zMrRA_kAS1~n-%@@6h)n8Jiffn^NjQEhHF?F+!FX$qAzqr@3Fg+=0+((#zWn2FhcAn zGOmJ@A~846l>xYZBZ}fu40ScmcwVl88>3W5RE57VKyk*ONz`7T#>V+pF-k(W`7#8^ zzs}rcYxn~y%diwQmXciz>|kgTj1t|#d{Ny#LGdxXV)ml}Ji`okxLVh%sgOK zW<(3YRzAx5Y9-K2Pgn?SQ1>F!e0AP`tf_9zwb7Rs$M*W8aj$}Ac`9Qbqy@Oc4q~GT zGLQZ@L#}ZKvu))?5AYme_h@&e)$0Y*p73bZTub*@%g-Arp5$VsC6!m^v-HFWi-TIc z{y7a6{{UT41-_e|VByP#-=9~3o7#j-d%GiJ7nf6w(tIq5Q#UCy-PYk{A+)3L)q6|* z=(hZGE1wkSQm!^5g52MZ|My1dzu{tC8tg09_MDczPEhF!DBhE7&MC8VGR-JAy(2SY zL2rDFbZtQg$wgj16D!F4qi-{~Oe>_13A?z}%Ub>d%}LR-#!7xyBsPPGc)~!BSXO_L zOqg*HrP0X@@Cy(C7;XlbeX4JN-M{n|^HDLyBig;maaD8hSTIFa#r5@+)ZMGtEAS}G z@;G^w4%Iydhfhi6Jwmi9bcx^T;@4gejQp@t=!tThcQ;==e6e3-;g&(op4(VOZsG~% z{v`7~?G8*s#o0#SHD!?gu@lG6p67Hq&my1CXCekkSksMdE90Vz{Ji*Eaq!J!Tu^{S z6~XGl=xlxRCzH7y5y6P|mAO%-H}3pvGu{k4#%`+7xIp zt|Kfrs{C?|TrxID`6SL~@A$ftRq1G7LUj zMd5(lE;*jzdNliCKfAu!4$_?Y zZga~$r#d3?=IMc=YN=K01xym**%M)D(b-OY(BKPns0-N5L_lu+D)tRJyH8*pxPNB` zs#vzB-(IESZa+BSd(8N?t*UO(fBFPSZNFG=kvPxa0r8R^Tz8-A6dkAg8BIM7lT3Qudo}_ z8z>9rE&%{0z~8m^DQeD1#Op;Jc6^rN`R-%_<7P!CJlob+(yqX{)nm-nwdBJ_BvATq zu>T#O;oIYsiNGJwKq3-7I7352%*CP!?d6IiaYhg1im}pfaKt#?-4DuLy)2Q&tG2ArOP2|HqxG&O2+TP4K{d4s_ zlvfqW7p}2aEBJZ(`N5Og;NHJTl%B%YqTIbv1c_-|-!+Ld0%)91vNpB7UU%AhoNFM6 z*B6YcNKl7kN1*3+7oUQSeA7lXWg~x!<|*It$lcUuZP?KptN*k3F05Q-0Td%J*0PZ< zbnUp)CG?{hkO;V*B3i0eV^NmG45bvxs2I@DHJRY z>^tD}K7H2Z;`~7P_a1hYH)3et>2PpJcplO|cxt~zZtdHMKmii5N7MJhg}FhkU0wF{ zCS-SEXhCByYh=Ks=VF6io(7AJ? z^O31Szl<|PZtTD#NV&285;%m$CQhRQ3f6|f&8lNg<<(y2hf-n+SEG7lNLQBObW-^2 zSoZ4a5ODB`1aPdQquS_e&|o5FGOz~0A*JUqj;eZx{Kri^kI%yi9cS$$3!b!q8K`TZ>+S)C5S<@eSlsUk#oEMpT@ z(b=kw=fShuhn*m;7;A^u&lsWAr4N^XvOnTnFn-OQWh~l(aBupZ9Xeu8hj~2 zglHsh3xlQH+X6!eIvIWR81U2dRzr|lwR`JJNNPi_+6OdJcY zvdyEJJnZZh!T^{EUm2xcM*gPq)<^B|BfQs?1tsyNsk`VeWX0_klXLE~4I%%R19IO8 z6X_o3#Da(}@l2JZ+2T)(n0CcrciX|75=mn{S7O73+QsXQQug@5$;lv^n_K=l7Vkj9 zBaMTYgvp<|SeOH{K;cl*2gb9AycqGmcOvSo`#1&?PN!7muk%o)O~e^|*$V^4Qg%m! z;WN-!w*#xdUyfAa+eeRFYde9bE&WXD>=?0-{0NU4*t2Ex$%NsVi_Y7WgB6%I+(`ds{OPtqp?N0X#-lK#16F~u~L<=LZ{2-ykR))D#cI@x0 zl%R&&=d#6f26-sh{GMq^{(dh*`xFnq)6xTtl4izEaKTwNE&(r&1X@`fv+D**k*Euc z-5rSs(Cb5*5)PcI>S$Mt@FQ=5(*}$B@NM@xwb{9@sG~cOEe6Zm?<}7(G6oX?Evz{l z8n&dZI}ucUdrE7P`= zIY=p#mS|DnIe30W+iyO6WQ3|%G}P~}sJ}`d>{YOkKK6O!c^dL*clKo!=Jc*b%{iZ* zel9q)ZsJz3s!o4}Na&R%D*u3fj!K$S%z9BrH=ja?eMtI4ApF0$O>!m}VT~6YEcAiA zF{)MB<&cxooK1h2q6{|3Sv$9zOs-#YARIM)Z*dcxghhg3#3(sKv2#a+S&4Hl+; zUY3DhiO=a}l6>sE?cCqorfF&x^_s5wUxbZ~Ka;r~RkYnqj#aeC1HBaHEx&a3i95lL z>>YnY%3i-MD{B`$+N;~+>kBhh8sob@?%t?F{6e**cvXCFNkZ0%k zn2u@jCSP6pr0xWUB2YQv6qqEvT+qFh&rx=`+)_BJ`?n8H$NlqL=X~LluQzlZK(Y~ zJ2%H%b|0(05B5aZJ+S<2av>Z#siD(~g&91xW3sfVt>$r2a3H<Xiv0_aL;jph4*J0kDK{k}IS%;ekdA?N`rpr9`zIK3ZLt6V diff --git a/docs/_theme/rl4co/static/images/logo.svg b/docs/_theme/rl4co/static/images/logo.svg deleted file mode 100644 index 07c3e5c7..00000000 --- a/docs/_theme/rl4co/static/images/logo.svg +++ /dev/null @@ -1,70 +0,0 @@ - - - - - - - - image/svg+xml - - - - - - - - - - - - diff --git a/docs/_theme/rl4co/static/images/pytorch-colab.svg b/docs/_theme/rl4co/static/images/pytorch-colab.svg deleted file mode 100644 index 2ab15e2f..00000000 --- a/docs/_theme/rl4co/static/images/pytorch-colab.svg +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - - - - diff --git a/docs/_theme/rl4co/static/images/pytorch-download.svg b/docs/_theme/rl4co/static/images/pytorch-download.svg deleted file mode 100644 index cc37d638..00000000 --- a/docs/_theme/rl4co/static/images/pytorch-download.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - diff --git a/docs/_theme/rl4co/static/images/pytorch-github.svg b/docs/_theme/rl4co/static/images/pytorch-github.svg deleted file mode 100644 index 2c2570da..00000000 --- a/docs/_theme/rl4co/static/images/pytorch-github.svg +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - diff --git a/docs/_theme/rl4co/static/images/pytorch-x.svg b/docs/_theme/rl4co/static/images/pytorch-x.svg deleted file mode 100644 index cdb3a7ac..00000000 --- a/docs/_theme/rl4co/static/images/pytorch-x.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - diff --git a/docs/_theme/rl4co/static/images/search-icon.svg b/docs/_theme/rl4co/static/images/search-icon.svg deleted file mode 100644 index 68a193ff..00000000 --- a/docs/_theme/rl4co/static/images/search-icon.svg +++ /dev/null @@ -1,19 +0,0 @@ - - - - Created with Sketch. - - - - - - - - - - - - - - - diff --git a/docs/_theme/rl4co/static/images/view-page-source-icon.svg b/docs/_theme/rl4co/static/images/view-page-source-icon.svg deleted file mode 100644 index 4b9ef649..00000000 --- a/docs/_theme/rl4co/static/images/view-page-source-icon.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - diff --git a/docs/_theme/rl4co/static/js/modernizr.min.js b/docs/_theme/rl4co/static/js/modernizr.min.js deleted file mode 100644 index f65d4797..00000000 --- a/docs/_theme/rl4co/static/js/modernizr.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/* Modernizr 2.6.2 (Custom Build) | MIT & BSD - * Build: http://modernizr.com/download/#-fontface-backgroundsize-borderimage-borderradius-boxshadow-flexbox-hsla-multiplebgs-opacity-rgba-textshadow-cssanimations-csscolumns-generatedcontent-cssgradients-cssreflections-csstransforms-csstransforms3d-csstransitions-applicationcache-canvas-canvastext-draganddrop-hashchange-history-audio-video-indexeddb-input-inputtypes-localstorage-postmessage-sessionstorage-websockets-websqldatabase-webworkers-geolocation-inlinesvg-smil-svg-svgclippaths-touch-webgl-shiv-mq-cssclasses-addtest-prefixed-teststyles-testprop-testallprops-hasevent-prefixes-domprefixes-load - */ -;window.Modernizr=function(a,b,c){function D(a){j.cssText=a}function E(a,b){return D(n.join(a+";")+(b||""))}function F(a,b){return typeof a===b}function G(a,b){return!!~(""+a).indexOf(b)}function H(a,b){for(var d in a){var e=a[d];if(!G(e,"-")&&j[e]!==c)return b=="pfx"?e:!0}return!1}function I(a,b,d){for(var e in a){var f=b[a[e]];if(f!==c)return d===!1?a[e]:F(f,"function")?f.bind(d||b):f}return!1}function J(a,b,c){var d=a.charAt(0).toUpperCase()+a.slice(1),e=(a+" "+p.join(d+" ")+d).split(" ");return F(b,"string")||F(b,"undefined")?H(e,b):(e=(a+" "+q.join(d+" ")+d).split(" "),I(e,b,c))}function K(){e.input=function(c){for(var d=0,e=c.length;d',a,""].join(""),l.id=h,(m?l:n).innerHTML+=f,n.appendChild(l),m||(n.style.background="",n.style.overflow="hidden",k=g.style.overflow,g.style.overflow="hidden",g.appendChild(n)),i=c(l,a),m?l.parentNode.removeChild(l):(n.parentNode.removeChild(n),g.style.overflow=k),!!i},z=function(b){var c=a.matchMedia||a.msMatchMedia;if(c)return c(b).matches;var d;return y("@media "+b+" { #"+h+" { position: absolute; } }",function(b){d=(a.getComputedStyle?getComputedStyle(b,null):b.currentStyle)["position"]=="absolute"}),d},A=function(){function d(d,e){e=e||b.createElement(a[d]||"div"),d="on"+d;var f=d in e;return f||(e.setAttribute||(e=b.createElement("div")),e.setAttribute&&e.removeAttribute&&(e.setAttribute(d,""),f=F(e[d],"function"),F(e[d],"undefined")||(e[d]=c),e.removeAttribute(d))),e=null,f}var a={select:"input",change:"input",submit:"form",reset:"form",error:"img",load:"img",abort:"img"};return d}(),B={}.hasOwnProperty,C;!F(B,"undefined")&&!F(B.call,"undefined")?C=function(a,b){return B.call(a,b)}:C=function(a,b){return b in a&&F(a.constructor.prototype[b],"undefined")},Function.prototype.bind||(Function.prototype.bind=function(b){var c=this;if(typeof c!="function")throw new TypeError;var d=w.call(arguments,1),e=function(){if(this instanceof e){var a=function(){};a.prototype=c.prototype;var f=new a,g=c.apply(f,d.concat(w.call(arguments)));return Object(g)===g?g:f}return c.apply(b,d.concat(w.call(arguments)))};return e}),s.flexbox=function(){return J("flexWrap")},s.canvas=function(){var a=b.createElement("canvas");return!!a.getContext&&!!a.getContext("2d")},s.canvastext=function(){return!!e.canvas&&!!F(b.createElement("canvas").getContext("2d").fillText,"function")},s.webgl=function(){return!!a.WebGLRenderingContext},s.touch=function(){var c;return"ontouchstart"in a||a.DocumentTouch&&b instanceof DocumentTouch?c=!0:y(["@media (",n.join("touch-enabled),("),h,")","{#modernizr{top:9px;position:absolute}}"].join(""),function(a){c=a.offsetTop===9}),c},s.geolocation=function(){return"geolocation"in navigator},s.postmessage=function(){return!!a.postMessage},s.websqldatabase=function(){return!!a.openDatabase},s.indexedDB=function(){return!!J("indexedDB",a)},s.hashchange=function(){return A("hashchange",a)&&(b.documentMode===c||b.documentMode>7)},s.history=function(){return!!a.history&&!!history.pushState},s.draganddrop=function(){var a=b.createElement("div");return"draggable"in a||"ondragstart"in a&&"ondrop"in a},s.websockets=function(){return"WebSocket"in a||"MozWebSocket"in a},s.rgba=function(){return D("background-color:rgba(150,255,150,.5)"),G(j.backgroundColor,"rgba")},s.hsla=function(){return D("background-color:hsla(120,40%,100%,.5)"),G(j.backgroundColor,"rgba")||G(j.backgroundColor,"hsla")},s.multiplebgs=function(){return D("background:url(https://),url(https://),red url(https://)"),/(url\s*\(.*?){3}/.test(j.background)},s.backgroundsize=function(){return J("backgroundSize")},s.borderimage=function(){return J("borderImage")},s.borderradius=function(){return J("borderRadius")},s.boxshadow=function(){return J("boxShadow")},s.textshadow=function(){return b.createElement("div").style.textShadow===""},s.opacity=function(){return E("opacity:.55"),/^0.55$/.test(j.opacity)},s.cssanimations=function(){return J("animationName")},s.csscolumns=function(){return J("columnCount")},s.cssgradients=function(){var a="background-image:",b="gradient(linear,left top,right bottom,from(#9f9),to(white));",c="linear-gradient(left top,#9f9, white);";return D((a+"-webkit- ".split(" ").join(b+a)+n.join(c+a)).slice(0,-a.length)),G(j.backgroundImage,"gradient")},s.cssreflections=function(){return J("boxReflect")},s.csstransforms=function(){return!!J("transform")},s.csstransforms3d=function(){var a=!!J("perspective");return a&&"webkitPerspective"in g.style&&y("@media (transform-3d),(-webkit-transform-3d){#modernizr{left:9px;position:absolute;height:3px;}}",function(b,c){a=b.offsetLeft===9&&b.offsetHeight===3}),a},s.csstransitions=function(){return J("transition")},s.fontface=function(){var a;return y('@font-face {font-family:"font";src:url("https://")}',function(c,d){var e=b.getElementById("smodernizr"),f=e.sheet||e.styleSheet,g=f?f.cssRules&&f.cssRules[0]?f.cssRules[0].cssText:f.cssText||"":"";a=/src/i.test(g)&&g.indexOf(d.split(" ")[0])===0}),a},s.generatedcontent=function(){var a;return y(["#",h,"{font:0/0 a}#",h,':after{content:"',l,'";visibility:hidden;font:3px/1 a}'].join(""),function(b){a=b.offsetHeight>=3}),a},s.video=function(){var a=b.createElement("video"),c=!1;try{if(c=!!a.canPlayType)c=new Boolean(c),c.ogg=a.canPlayType('video/ogg; codecs="theora"').replace(/^no$/,""),c.h264=a.canPlayType('video/mp4; codecs="avc1.42E01E"').replace(/^no$/,""),c.webm=a.canPlayType('video/webm; codecs="vp8, vorbis"').replace(/^no$/,"")}catch(d){}return c},s.audio=function(){var a=b.createElement("audio"),c=!1;try{if(c=!!a.canPlayType)c=new Boolean(c),c.ogg=a.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),c.mp3=a.canPlayType("audio/mpeg;").replace(/^no$/,""),c.wav=a.canPlayType('audio/wav; codecs="1"').replace(/^no$/,""),c.m4a=(a.canPlayType("audio/x-m4a;")||a.canPlayType("audio/aac;")).replace(/^no$/,"")}catch(d){}return c},s.localstorage=function(){try{return localStorage.setItem(h,h),localStorage.removeItem(h),!0}catch(a){return!1}},s.sessionstorage=function(){try{return sessionStorage.setItem(h,h),sessionStorage.removeItem(h),!0}catch(a){return!1}},s.webworkers=function(){return!!a.Worker},s.applicationcache=function(){return!!a.applicationCache},s.svg=function(){return!!b.createElementNS&&!!b.createElementNS(r.svg,"svg").createSVGRect},s.inlinesvg=function(){var a=b.createElement("div");return a.innerHTML="",(a.firstChild&&a.firstChild.namespaceURI)==r.svg},s.smil=function(){return!!b.createElementNS&&/SVGAnimate/.test(m.call(b.createElementNS(r.svg,"animate")))},s.svgclippaths=function(){return!!b.createElementNS&&/SVGClipPath/.test(m.call(b.createElementNS(r.svg,"clipPath")))};for(var L in s)C(s,L)&&(x=L.toLowerCase(),e[x]=s[L](),v.push((e[x]?"":"no-")+x));return e.input||K(),e.addTest=function(a,b){if(typeof a=="object")for(var d in a)C(a,d)&&e.addTest(d,a[d]);else{a=a.toLowerCase();if(e[a]!==c)return e;b=typeof b=="function"?b():b,typeof f!="undefined"&&f&&(g.className+=" "+(b?"":"no-")+a),e[a]=b}return e},D(""),i=k=null,function(a,b){function k(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x",d.insertBefore(c.lastChild,d.firstChild)}function l(){var a=r.elements;return typeof a=="string"?a.split(" "):a}function m(a){var b=i[a[g]];return b||(b={},h++,a[g]=h,i[h]=b),b}function n(a,c,f){c||(c=b);if(j)return c.createElement(a);f||(f=m(c));var g;return f.cache[a]?g=f.cache[a].cloneNode():e.test(a)?g=(f.cache[a]=f.createElem(a)).cloneNode():g=f.createElem(a),g.canHaveChildren&&!d.test(a)?f.frag.appendChild(g):g}function o(a,c){a||(a=b);if(j)return a.createDocumentFragment();c=c||m(a);var d=c.frag.cloneNode(),e=0,f=l(),g=f.length;for(;e",f="hidden"in a,j=a.childNodes.length==1||function(){b.createElement("a");var a=b.createDocumentFragment();return typeof a.cloneNode=="undefined"||typeof a.createDocumentFragment=="undefined"||typeof a.createElement=="undefined"}()}catch(c){f=!0,j=!0}})();var r={elements:c.elements||"abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup mark meter nav output progress section summary time video",shivCSS:c.shivCSS!==!1,supportsUnknownElements:j,shivMethods:c.shivMethods!==!1,type:"default",shivDocument:q,createElement:n,createDocumentFragment:o};a.html5=r,q(b)}(this,b),e._version=d,e._prefixes=n,e._domPrefixes=q,e._cssomPrefixes=p,e.mq=z,e.hasEvent=A,e.testProp=function(a){return H([a])},e.testAllProps=J,e.testStyles=y,e.prefixed=function(a,b,c){return b?J(a,b,c):J(a,"pfx")},g.className=g.className.replace(/(^|\s)no-js(\s|$)/,"$1$2")+(f?" js "+v.join(" "):""),e}(this,this.document),function(a,b,c){function d(a){return"[object Function]"==o.call(a)}function e(a){return"string"==typeof a}function f(){}function g(a){return!a||"loaded"==a||"complete"==a||"uninitialized"==a}function h(){var a=p.shift();q=1,a?a.t?m(function(){("c"==a.t?B.injectCss:B.injectJs)(a.s,0,a.a,a.x,a.e,1)},0):(a(),h()):q=0}function i(a,c,d,e,f,i,j){function k(b){if(!o&&g(l.readyState)&&(u.r=o=1,!q&&h(),l.onload=l.onreadystatechange=null,b)){"img"!=a&&m(function(){t.removeChild(l)},50);for(var d in y[c])y[c].hasOwnProperty(d)&&y[c][d].onload()}}var j=j||B.errorTimeout,l=b.createElement(a),o=0,r=0,u={t:d,s:c,e:f,a:i,x:j};1===y[c]&&(r=1,y[c]=[]),"object"==a?l.data=c:(l.src=c,l.type=a),l.width=l.height="0",l.onerror=l.onload=l.onreadystatechange=function(){k.call(this,r)},p.splice(e,0,u),"img"!=a&&(r||2===y[c]?(t.insertBefore(l,s?null:n),m(k,j)):y[c].push(l))}function j(a,b,c,d,f){return q=0,b=b||"j",e(a)?i("c"==b?v:u,a,b,this.i++,c,d,f):(p.splice(this.i++,0,a),1==p.length&&h()),this}function k(){var a=B;return a.loader={load:j,i:0},a}var l=b.documentElement,m=a.setTimeout,n=b.getElementsByTagName("script")[0],o={}.toString,p=[],q=0,r="MozAppearance"in l.style,s=r&&!!b.createRange().compareNode,t=s?l:n.parentNode,l=a.opera&&"[object Opera]"==o.call(a.opera),l=!!b.attachEvent&&!l,u=r?"object":l?"script":"img",v=l?"script":u,w=Array.isArray||function(a){return"[object Array]"==o.call(a)},x=[],y={},z={timeout:function(a,b){return b.length&&(a.timeout=b[0]),a}},A,B;B=function(a){function b(a){var a=a.split("!"),b=x.length,c=a.pop(),d=a.length,c={url:c,origUrl:c,prefixes:a},e,f,g;for(f=0;f); - } -} - -// LikeButtonWithTitle Component - -function LikeButtonWithTitle({ title, margin, padding }) { - const [likeCount, setLikeCount] = useState(100500); - return ( - - ); -} - -mountComponent(".LikeButtonWithTitle", LikeButtonWithTitle); - - -// ReactGreeter component - -function ReactGreeter() { - const [name, setName] = useState(""); - const onSubmit = (event) => { - event.preventDefault(); - alert(`Hello, ${name}!`); - }; - return ( -

    - setName(event.target.value)} - /> - - - ); -} - -mountComponent(".ReactGreeter", ReactGreeter); diff --git a/docs/_theme/rl4co/static/js/theme.js b/docs/_theme/rl4co/static/js/theme.js deleted file mode 100644 index d75a28fe..00000000 --- a/docs/_theme/rl4co/static/js/theme.js +++ /dev/null @@ -1 +0,0 @@ -require=function s(l,a,r){function c(t,e){if(!a[t]){if(!l[t]){var n="function"==typeof require&&require;if(!e&&n)return n(t,!0);if(d)return d(t,!0);var i=new Error("Cannot find module '"+t+"'");throw i.code="MODULE_NOT_FOUND",i}var o=a[t]={exports:{}};l[t][0].call(o.exports,function(e){return c(l[t][1][e]||e)},o,o.exports,s,l,a,r)}return a[t].exports}for(var d="function"==typeof require&&require,e=0;e ul > li > a.reference.internal");for(n=0;n=e?(document.getElementById("pytorch-left-menu").classList.add("make-fixed"),document.getElementById("pytorch-page-level-bar").classList.add("left-menu-is-fixed")):(document.getElementById("pytorch-left-menu").classList.remove("make-fixed"),document.getElementById("pytorch-page-level-bar").classList.remove("left-menu-is-fixed"))},expandClosestUnexpandedParentList:function(e){var t=utilities.closest(e,"ul");if(t){var n=t.previousElementSibling;if(n&&"A"===n.tagName&&n.classList.contains("reference")){if(n.classList.contains("title-link"))return;t.style.display="block",n.classList.remove("not-expanded"),n.classList.add("expanded"),sideMenus.expandClosestUnexpandedParentList(n)}}},handleRightMenu:function(){var e=document.getElementById("pytorch-content-right"),t=document.getElementById("pytorch-right-menu"),n=t.getElementsByTagName("ul")[0],i=document.getElementById("pytorch-article"),o=i.offsetHeight,s=utilities.offset(i).top+o,l=document.getElementById("header-holder").offsetHeight;if(utilities.scrollTop()

    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%0A?YzF3whIvnO!$T{HHl!FJG;8|`}KjjUu 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 z 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

  • "),n("table.docutils.footnote").wrap("
    "),n("table.docutils.citation").wrap("
    "),n(".pytorch-menu-vertical ul").not(".simple").siblings("a").each(function(){var t=n(this);expand=n(''),expand.on("click",function(e){return i.toggleCurrent(t),e.stopPropagation(),!1}),t.prepend(expand)})},reset:function(){var e=encodeURI(window.location.hash)||"#";try{var t=$(".pytorch-menu-vertical"),n=t.find('[href="'+e+'"]');if(0===n.length){var i=$('.document [id="'+e.substring(1)+'"]').closest("div.section");0===(n=t.find('[href="#'+i.attr("id")+'"]')).length&&(n=t.find('[href="#"]'))}0this.docHeight||(this.navBar.scrollTop(n),this.winPosition=e)},onResize:function(){this.winResize=!1,this.winHeight=this.win.height(),this.docHeight=$(document).height()},hashChange:function(){this.linkScroll=!0,this.win.one("hashchange",function(){this.linkScroll=!1})},toggleCurrent:function(e){var t=e.closest("li");t.siblings("li.current").removeClass("current"),t.siblings().find("li.current").removeClass("current"),t.find("> ul li.current").removeClass("current"),t.toggleClass("current")}},"undefined"!=typeof window&&(window.SphinxRtdTheme={Navigation:t.exports.ThemeNav,StickyNav:t.exports.ThemeNav}),function(){for(var s=0,e=["ms","moz","webkit","o"],t=0;t"),$("#download-notebook-link").wrap("
    "),$("#github-view-link").wrap("")}else $(".pytorch-call-to-action-links").hide();$(document).ready(function(){var t=$(this).not("checked"),n="",i="";function o(e){$(e).toggle()}$("#pytorch-left-menu p.caption").each(function(){var e=this.innerText.replace(/[^\w\s]/gi,"").trim();$(this).find("span").addClass("checked"),1==collapsedSections.includes(e)&&t&&"expand"!==sessionStorage.getItem(e)||"collapse"==sessionStorage.getItem(e)?($(this.firstChild).after(""+n+" "),$(this.firstChild).after(""+i+""),$(this).next("ul").hide()):(0==collapsedSections.includes(e)&&t||"expand"==sessionStorage.getItem(e))&&($(this.firstChild).after(""+n+""),$(this.firstChild).after(""+i+""))}),$(".expand-menu").on("click",function(){$(this).prev(".hide-menu").toggle(),$(this).parent().next("ul").toggle();var e=$(this).parent().text().replace(/[^\w\s]/gi,"").trim();"collapse"==sessionStorage.getItem(e)&&sessionStorage.removeItem(e),sessionStorage.setItem(e,"expand"),o(this)}),$(".hide-menu").on("click",function(){$(this).next(".expand-menu").toggle(),$(this).parent().next("ul").toggle();var e=$(this).parent().text().replace(/[^\w\s]/gi,"").trim();"expand"==sessionStorage.getItem(e)&&sessionStorage.removeItem(e),sessionStorage.setItem(e,"collapse"),o(this)}),$("#pytorch-left-menu p.caption").on("click",function(){var e=$(this).text().replace(/[^\w\s]/gi,"").trim(),t=sessionStorage.getItem(e);null==t&&(sessionStorage.setItem(e,"expand"),t="expand"),"expand"==t?($(this).children(".hide-menu").toggle(),$(this).children(".expand-menu").toggle(),$(this).next("ul").toggle(),sessionStorage.setItem(e,"collapse")):($(this).children(".hide-menu").toggle(),$(this).children(".expand-menu").toggle(),$(this).next("ul").toggle(),sessionStorage.setItem(e,"expand"))})}),$(".tutorials-card-container").map(function(){return $(this).data("tags").split(",").map(function(e){return e.trim()})}).get().sort().filter(function(e,t,n){return n.indexOf(e)==t&&""!=e}).forEach(function(e){$(".tutorial-filter-menu").append("
    "+e+"
    ")}),$(".tags").each(function(){var n=$(this).text().split(",");n.forEach(function(e,t){n[t]=n[t].replaceAll("-"," ")}),$(this).html(n.join(", "))}),$(".tutorial-filter").each(function(){var e=$(this).text();$(this).html(e.replaceAll("-"," "))}),$("#tutorial-cards p").each(function(e,t){$(t).text().trim()||$(t).remove()}),$(document).on("click",".page",function(){$("html, body").animate({scrollTop:$("#dropdown-filter-tags").position().top},"slow")});var a=$("a[href='intermediate/speech_command_recognition_with_torchaudio.html']");"SyntaxError"==a.text()&&(console.log("There is an issue with the intermediate/speech_command_recognition_with_torchaudio.html menu item."),a.text("Speech Command Recognition with torchaudio")),$(".stars-outer > i").hover(function(){$(this).prevAll().addBack().toggleClass("fas star-fill")}),$(".stars-outer > i").on("click",function(){$(this).prevAll().each(function(){$(this).addBack().addClass("fas star-fill")}),$(".stars-outer > i").each(function(){$(this).unbind("mouseenter mouseleave").css({"pointer-events":"none"})})}),$("#pytorch-side-scroll-right li a").on("click",function(e){var t=$(this).attr("href");$("html, body").stop().animate({scrollTop:$(t).offset().top-100},850),e.preventDefault});var r=$("#pytorch-side-scroll-right"),c=r.outerHeight()+1,d=r.find("a"),h=d.map(function(){var e=$(this).attr("href");if(e.length)return e});$(window).scroll(function(){$(this).scrollTop();$(".section").each(function(e){var t=$(this).offset().top-$(window).scrollTop();t<=c+200&&c-200<=t&&h[e]=="#"+$(this).attr("id")&&$(".hidden:visible")&&($(d).removeClass("side-scroll-highlight"),$(d[e]).addClass("side-scroll-highlight"))})})},{jquery:"jquery"}]},{},[1,2,3,4,5,6,7,8,9,10,"pt-lightning-sphinx-theme"]); diff --git a/docs/_theme/rl4co/static/js/vendor/anchor.min.js b/docs/_theme/rl4co/static/js/vendor/anchor.min.js deleted file mode 100644 index b2f50a9f..00000000 --- a/docs/_theme/rl4co/static/js/vendor/anchor.min.js +++ /dev/null @@ -1,9 +0,0 @@ -// @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt Expat -// -// AnchorJS - v4.3.0 - 2020-10-21 -// https://www.bryanbraun.com/anchorjs/ -// Copyright (c) 2020 Bryan Braun; Licensed MIT -// -// @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt Expat -!function(A,e){"use strict";"function"==typeof define&&define.amd?define([],e):"object"==typeof module&&module.exports?module.exports=e():(A.AnchorJS=e(),A.anchors=new A.AnchorJS)}(this,function(){"use strict";return function(A){function d(A){A.icon=Object.prototype.hasOwnProperty.call(A,"icon")?A.icon:"",A.visible=Object.prototype.hasOwnProperty.call(A,"visible")?A.visible:"hover",A.placement=Object.prototype.hasOwnProperty.call(A,"placement")?A.placement:"right",A.ariaLabel=Object.prototype.hasOwnProperty.call(A,"ariaLabel")?A.ariaLabel:"Anchor",A.class=Object.prototype.hasOwnProperty.call(A,"class")?A.class:"",A.base=Object.prototype.hasOwnProperty.call(A,"base")?A.base:"",A.truncate=Object.prototype.hasOwnProperty.call(A,"truncate")?Math.floor(A.truncate):64,A.titleText=Object.prototype.hasOwnProperty.call(A,"titleText")?A.titleText:""}function f(A){var e;if("string"==typeof A||A instanceof String)e=[].slice.call(document.querySelectorAll(A));else{if(!(Array.isArray(A)||A instanceof NodeList))throw new TypeError("The selector provided to AnchorJS was invalid.");e=[].slice.call(A)}return e}this.options=A||{},this.elements=[],d(this.options),this.isTouchDevice=function(){return Boolean("ontouchstart"in window||window.TouchEvent||window.DocumentTouch&&document instanceof DocumentTouch)},this.add=function(A){var e,t,o,n,i,s,a,r,c,l,h,u,p=[];if(d(this.options),"touch"===(h=this.options.visible)&&(h=this.isTouchDevice()?"always":"hover"),0===(e=f(A=A||"h2, h3, h4, h5, h6")).length)return this;for(!function(){if(null!==document.head.querySelector("style.anchorjs"))return;var A,e=document.createElement("style");e.className="anchorjs",e.appendChild(document.createTextNode("")),void 0===(A=document.head.querySelector('[rel="stylesheet"],style'))?document.head.appendChild(e):document.head.insertBefore(e,A);e.sheet.insertRule(".anchorjs-link{opacity:0;text-decoration:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}",e.sheet.cssRules.length),e.sheet.insertRule(":hover>.anchorjs-link,.anchorjs-link:focus{opacity:1}",e.sheet.cssRules.length),e.sheet.insertRule("[data-anchorjs-icon]::after{content:attr(data-anchorjs-icon)}",e.sheet.cssRules.length),e.sheet.insertRule('@font-face{font-family:anchorjs-icons;src:url(data:n/a;base64,AAEAAAALAIAAAwAwT1MvMg8yG2cAAAE4AAAAYGNtYXDp3gC3AAABpAAAAExnYXNwAAAAEAAAA9wAAAAIZ2x5ZlQCcfwAAAH4AAABCGhlYWQHFvHyAAAAvAAAADZoaGVhBnACFwAAAPQAAAAkaG10eASAADEAAAGYAAAADGxvY2EACACEAAAB8AAAAAhtYXhwAAYAVwAAARgAAAAgbmFtZQGOH9cAAAMAAAAAunBvc3QAAwAAAAADvAAAACAAAQAAAAEAAHzE2p9fDzz1AAkEAAAAAADRecUWAAAAANQA6R8AAAAAAoACwAAAAAgAAgAAAAAAAAABAAADwP/AAAACgAAA/9MCrQABAAAAAAAAAAAAAAAAAAAAAwABAAAAAwBVAAIAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAMCQAGQAAUAAAKZAswAAACPApkCzAAAAesAMwEJAAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAAAAAAAAAAAAAQAAg//0DwP/AAEADwABAAAAAAQAAAAAAAAAAAAAAIAAAAAAAAAIAAAACgAAxAAAAAwAAAAMAAAAcAAEAAwAAABwAAwABAAAAHAAEADAAAAAIAAgAAgAAACDpy//9//8AAAAg6cv//f///+EWNwADAAEAAAAAAAAAAAAAAAAACACEAAEAAAAAAAAAAAAAAAAxAAACAAQARAKAAsAAKwBUAAABIiYnJjQ3NzY2MzIWFxYUBwcGIicmNDc3NjQnJiYjIgYHBwYUFxYUBwYGIwciJicmNDc3NjIXFhQHBwYUFxYWMzI2Nzc2NCcmNDc2MhcWFAcHBgYjARQGDAUtLXoWOR8fORYtLTgKGwoKCjgaGg0gEhIgDXoaGgkJBQwHdR85Fi0tOAobCgoKOBoaDSASEiANehoaCQkKGwotLXoWOR8BMwUFLYEuehYXFxYugC44CQkKGwo4GkoaDQ0NDXoaShoKGwoFBe8XFi6ALjgJCQobCjgaShoNDQ0NehpKGgobCgoKLYEuehYXAAAADACWAAEAAAAAAAEACAAAAAEAAAAAAAIAAwAIAAEAAAAAAAMACAAAAAEAAAAAAAQACAAAAAEAAAAAAAUAAQALAAEAAAAAAAYACAAAAAMAAQQJAAEAEAAMAAMAAQQJAAIABgAcAAMAAQQJAAMAEAAMAAMAAQQJAAQAEAAMAAMAAQQJAAUAAgAiAAMAAQQJAAYAEAAMYW5jaG9yanM0MDBAAGEAbgBjAGgAbwByAGoAcwA0ADAAMABAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAH//wAP) format("truetype")}',e.sheet.cssRules.length)}(),t=document.querySelectorAll("[id]"),o=[].map.call(t,function(A){return A.id}),i=0;i\]./()*\\\n\t\b\v\u00A0]/g,"-").replace(/-{2,}/g,"-").substring(0,this.options.truncate).replace(/^-+|-+$/gm,"").toLowerCase()},this.hasAnchorJSLink=function(A){var e=A.firstChild&&-1<(" "+A.firstChild.className+" ").indexOf(" anchorjs-link "),t=A.lastChild&&-1<(" "+A.lastChild.className+" ").indexOf(" anchorjs-link ");return e||t||!1}}}); -// @license-end diff --git a/docs/_theme/rl4co/static/js/vendor/bootstrap.min.js b/docs/_theme/rl4co/static/js/vendor/bootstrap.min.js deleted file mode 100644 index b4dda1d9..00000000 --- a/docs/_theme/rl4co/static/js/vendor/bootstrap.min.js +++ /dev/null @@ -1,7 +0,0 @@ -/*! - * Bootstrap v4.6.1 (https://getbootstrap.com/) - * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - */ -!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("jquery"),require("popper.js")):"function"==typeof define&&define.amd?define(["exports","jquery","popper.js"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).bootstrap={},t.jQuery,t.Popper)}(this,(function(t,e,n){"use strict";function i(t){return t&&"object"==typeof t&&"default"in t?t:{default:t}}var o=i(e),a=i(n);function s(t,e){for(var n=0;n=4)throw new Error("Bootstrap's JavaScript requires at least jQuery v1.9.1 but less than v4.0.0")}};d.jQueryDetection(),o.default.fn.emulateTransitionEnd=function(t){var e=this,n=!1;return o.default(this).one(d.TRANSITION_END,(function(){n=!0})),setTimeout((function(){n||d.triggerTransitionEnd(e)}),t),this},o.default.event.special[d.TRANSITION_END]={bindType:f,delegateType:f,handle:function(t){if(o.default(t.target).is(this))return t.handleObj.handler.apply(this,arguments)}};var c="bs.alert",h=o.default.fn.alert,g=function(){function t(t){this._element=t}var e=t.prototype;return e.close=function(t){var e=this._element;t&&(e=this._getRootElement(t)),this._triggerCloseEvent(e).isDefaultPrevented()||this._removeElement(e)},e.dispose=function(){o.default.removeData(this._element,c),this._element=null},e._getRootElement=function(t){var e=d.getSelectorFromElement(t),n=!1;return e&&(n=document.querySelector(e)),n||(n=o.default(t).closest(".alert")[0]),n},e._triggerCloseEvent=function(t){var e=o.default.Event("close.bs.alert");return o.default(t).trigger(e),e},e._removeElement=function(t){var e=this;if(o.default(t).removeClass("show"),o.default(t).hasClass("fade")){var n=d.getTransitionDurationFromElement(t);o.default(t).one(d.TRANSITION_END,(function(n){return e._destroyElement(t,n)})).emulateTransitionEnd(n)}else this._destroyElement(t)},e._destroyElement=function(t){o.default(t).detach().trigger("closed.bs.alert").remove()},t._jQueryInterface=function(e){return this.each((function(){var n=o.default(this),i=n.data(c);i||(i=new t(this),n.data(c,i)),"close"===e&&i[e](this)}))},t._handleDismiss=function(t){return function(e){e&&e.preventDefault(),t.close(this)}},l(t,null,[{key:"VERSION",get:function(){return"4.6.1"}}]),t}();o.default(document).on("click.bs.alert.data-api",'[data-dismiss="alert"]',g._handleDismiss(new g)),o.default.fn.alert=g._jQueryInterface,o.default.fn.alert.Constructor=g,o.default.fn.alert.noConflict=function(){return o.default.fn.alert=h,g._jQueryInterface};var m="bs.button",p=o.default.fn.button,_="active",v='[data-toggle^="button"]',y='input:not([type="hidden"])',b=".btn",E=function(){function t(t){this._element=t,this.shouldAvoidTriggerChange=!1}var e=t.prototype;return e.toggle=function(){var t=!0,e=!0,n=o.default(this._element).closest('[data-toggle="buttons"]')[0];if(n){var i=this._element.querySelector(y);if(i){if("radio"===i.type)if(i.checked&&this._element.classList.contains(_))t=!1;else{var a=n.querySelector(".active");a&&o.default(a).removeClass(_)}t&&("checkbox"!==i.type&&"radio"!==i.type||(i.checked=!this._element.classList.contains(_)),this.shouldAvoidTriggerChange||o.default(i).trigger("change")),i.focus(),e=!1}}this._element.hasAttribute("disabled")||this._element.classList.contains("disabled")||(e&&this._element.setAttribute("aria-pressed",!this._element.classList.contains(_)),t&&o.default(this._element).toggleClass(_))},e.dispose=function(){o.default.removeData(this._element,m),this._element=null},t._jQueryInterface=function(e,n){return this.each((function(){var i=o.default(this),a=i.data(m);a||(a=new t(this),i.data(m,a)),a.shouldAvoidTriggerChange=n,"toggle"===e&&a[e]()}))},l(t,null,[{key:"VERSION",get:function(){return"4.6.1"}}]),t}();o.default(document).on("click.bs.button.data-api",v,(function(t){var e=t.target,n=e;if(o.default(e).hasClass("btn")||(e=o.default(e).closest(b)[0]),!e||e.hasAttribute("disabled")||e.classList.contains("disabled"))t.preventDefault();else{var i=e.querySelector(y);if(i&&(i.hasAttribute("disabled")||i.classList.contains("disabled")))return void t.preventDefault();"INPUT"!==n.tagName&&"LABEL"===e.tagName||E._jQueryInterface.call(o.default(e),"toggle","INPUT"===n.tagName)}})).on("focus.bs.button.data-api blur.bs.button.data-api",v,(function(t){var e=o.default(t.target).closest(b)[0];o.default(e).toggleClass("focus",/^focus(in)?$/.test(t.type))})),o.default(window).on("load.bs.button.data-api",(function(){for(var t=[].slice.call(document.querySelectorAll('[data-toggle="buttons"] .btn')),e=0,n=t.length;e0,this._pointerEvent=Boolean(window.PointerEvent||window.MSPointerEvent),this._addEventListeners()}var e=t.prototype;return e.next=function(){this._isSliding||this._slide(N)},e.nextWhenVisible=function(){var t=o.default(this._element);!document.hidden&&t.is(":visible")&&"hidden"!==t.css("visibility")&&this.next()},e.prev=function(){this._isSliding||this._slide(D)},e.pause=function(t){t||(this._isPaused=!0),this._element.querySelector(".carousel-item-next, .carousel-item-prev")&&(d.triggerTransitionEnd(this._element),this.cycle(!0)),clearInterval(this._interval),this._interval=null},e.cycle=function(t){t||(this._isPaused=!1),this._interval&&(clearInterval(this._interval),this._interval=null),this._config.interval&&!this._isPaused&&(this._updateInterval(),this._interval=setInterval((document.visibilityState?this.nextWhenVisible:this.next).bind(this),this._config.interval))},e.to=function(t){var e=this;this._activeElement=this._element.querySelector(I);var n=this._getItemIndex(this._activeElement);if(!(t>this._items.length-1||t<0))if(this._isSliding)o.default(this._element).one(A,(function(){return e.to(t)}));else{if(n===t)return this.pause(),void this.cycle();var i=t>n?N:D;this._slide(i,this._items[t])}},e.dispose=function(){o.default(this._element).off(".bs.carousel"),o.default.removeData(this._element,w),this._items=null,this._config=null,this._element=null,this._interval=null,this._isPaused=null,this._isSliding=null,this._activeElement=null,this._indicatorsElement=null},e._getConfig=function(t){return t=r({},k,t),d.typeCheckConfig(T,t,O),t},e._handleSwipe=function(){var t=Math.abs(this.touchDeltaX);if(!(t<=40)){var e=t/this.touchDeltaX;this.touchDeltaX=0,e>0&&this.prev(),e<0&&this.next()}},e._addEventListeners=function(){var t=this;this._config.keyboard&&o.default(this._element).on("keydown.bs.carousel",(function(e){return t._keydown(e)})),"hover"===this._config.pause&&o.default(this._element).on("mouseenter.bs.carousel",(function(e){return t.pause(e)})).on("mouseleave.bs.carousel",(function(e){return t.cycle(e)})),this._config.touch&&this._addTouchEventListeners()},e._addTouchEventListeners=function(){var t=this;if(this._touchSupported){var e=function(e){t._pointerEvent&&j[e.originalEvent.pointerType.toUpperCase()]?t.touchStartX=e.originalEvent.clientX:t._pointerEvent||(t.touchStartX=e.originalEvent.touches[0].clientX)},n=function(e){t._pointerEvent&&j[e.originalEvent.pointerType.toUpperCase()]&&(t.touchDeltaX=e.originalEvent.clientX-t.touchStartX),t._handleSwipe(),"hover"===t._config.pause&&(t.pause(),t.touchTimeout&&clearTimeout(t.touchTimeout),t.touchTimeout=setTimeout((function(e){return t.cycle(e)}),500+t._config.interval))};o.default(this._element.querySelectorAll(".carousel-item img")).on("dragstart.bs.carousel",(function(t){return t.preventDefault()})),this._pointerEvent?(o.default(this._element).on("pointerdown.bs.carousel",(function(t){return e(t)})),o.default(this._element).on("pointerup.bs.carousel",(function(t){return n(t)})),this._element.classList.add("pointer-event")):(o.default(this._element).on("touchstart.bs.carousel",(function(t){return e(t)})),o.default(this._element).on("touchmove.bs.carousel",(function(e){return function(e){t.touchDeltaX=e.originalEvent.touches&&e.originalEvent.touches.length>1?0:e.originalEvent.touches[0].clientX-t.touchStartX}(e)})),o.default(this._element).on("touchend.bs.carousel",(function(t){return n(t)})))}},e._keydown=function(t){if(!/input|textarea/i.test(t.target.tagName))switch(t.which){case 37:t.preventDefault(),this.prev();break;case 39:t.preventDefault(),this.next()}},e._getItemIndex=function(t){return this._items=t&&t.parentNode?[].slice.call(t.parentNode.querySelectorAll(".carousel-item")):[],this._items.indexOf(t)},e._getItemByDirection=function(t,e){var n=t===N,i=t===D,o=this._getItemIndex(e),a=this._items.length-1;if((i&&0===o||n&&o===a)&&!this._config.wrap)return e;var s=(o+(t===D?-1:1))%this._items.length;return-1===s?this._items[this._items.length-1]:this._items[s]},e._triggerSlideEvent=function(t,e){var n=this._getItemIndex(t),i=this._getItemIndex(this._element.querySelector(I)),a=o.default.Event("slide.bs.carousel",{relatedTarget:t,direction:e,from:i,to:n});return o.default(this._element).trigger(a),a},e._setActiveIndicatorElement=function(t){if(this._indicatorsElement){var e=[].slice.call(this._indicatorsElement.querySelectorAll(".active"));o.default(e).removeClass(S);var n=this._indicatorsElement.children[this._getItemIndex(t)];n&&o.default(n).addClass(S)}},e._updateInterval=function(){var t=this._activeElement||this._element.querySelector(I);if(t){var e=parseInt(t.getAttribute("data-interval"),10);e?(this._config.defaultInterval=this._config.defaultInterval||this._config.interval,this._config.interval=e):this._config.interval=this._config.defaultInterval||this._config.interval}},e._slide=function(t,e){var n,i,a,s=this,l=this._element.querySelector(I),r=this._getItemIndex(l),u=e||l&&this._getItemByDirection(t,l),f=this._getItemIndex(u),c=Boolean(this._interval);if(t===N?(n="carousel-item-left",i="carousel-item-next",a="left"):(n="carousel-item-right",i="carousel-item-prev",a="right"),u&&o.default(u).hasClass(S))this._isSliding=!1;else if(!this._triggerSlideEvent(u,a).isDefaultPrevented()&&l&&u){this._isSliding=!0,c&&this.pause(),this._setActiveIndicatorElement(u),this._activeElement=u;var h=o.default.Event(A,{relatedTarget:u,direction:a,from:r,to:f});if(o.default(this._element).hasClass("slide")){o.default(u).addClass(i),d.reflow(u),o.default(l).addClass(n),o.default(u).addClass(n);var g=d.getTransitionDurationFromElement(l);o.default(l).one(d.TRANSITION_END,(function(){o.default(u).removeClass(n+" "+i).addClass(S),o.default(l).removeClass("active "+i+" "+n),s._isSliding=!1,setTimeout((function(){return o.default(s._element).trigger(h)}),0)})).emulateTransitionEnd(g)}else o.default(l).removeClass(S),o.default(u).addClass(S),this._isSliding=!1,o.default(this._element).trigger(h);c&&this.cycle()}},t._jQueryInterface=function(e){return this.each((function(){var n=o.default(this).data(w),i=r({},k,o.default(this).data());"object"==typeof e&&(i=r({},i,e));var a="string"==typeof e?e:i.slide;if(n||(n=new t(this,i),o.default(this).data(w,n)),"number"==typeof e)n.to(e);else if("string"==typeof a){if("undefined"==typeof n[a])throw new TypeError('No method named "'+a+'"');n[a]()}else i.interval&&i.ride&&(n.pause(),n.cycle())}))},t._dataApiClickHandler=function(e){var n=d.getSelectorFromElement(this);if(n){var i=o.default(n)[0];if(i&&o.default(i).hasClass("carousel")){var a=r({},o.default(i).data(),o.default(this).data()),s=this.getAttribute("data-slide-to");s&&(a.interval=!1),t._jQueryInterface.call(o.default(i),a),s&&o.default(i).data(w).to(s),e.preventDefault()}}},l(t,null,[{key:"VERSION",get:function(){return"4.6.1"}},{key:"Default",get:function(){return k}}]),t}();o.default(document).on("click.bs.carousel.data-api","[data-slide], [data-slide-to]",P._dataApiClickHandler),o.default(window).on("load.bs.carousel.data-api",(function(){for(var t=[].slice.call(document.querySelectorAll('[data-ride="carousel"]')),e=0,n=t.length;e0&&(this._selector=s,this._triggerArray.push(a))}this._parent=this._config.parent?this._getParent():null,this._config.parent||this._addAriaAndCollapsedClass(this._element,this._triggerArray),this._config.toggle&&this.toggle()}var e=t.prototype;return e.toggle=function(){o.default(this._element).hasClass(q)?this.hide():this.show()},e.show=function(){var e,n,i=this;if(!(this._isTransitioning||o.default(this._element).hasClass(q)||(this._parent&&0===(e=[].slice.call(this._parent.querySelectorAll(".show, .collapsing")).filter((function(t){return"string"==typeof i._config.parent?t.getAttribute("data-parent")===i._config.parent:t.classList.contains(F)}))).length&&(e=null),e&&(n=o.default(e).not(this._selector).data(R))&&n._isTransitioning))){var a=o.default.Event("show.bs.collapse");if(o.default(this._element).trigger(a),!a.isDefaultPrevented()){e&&(t._jQueryInterface.call(o.default(e).not(this._selector),"hide"),n||o.default(e).data(R,null));var s=this._getDimension();o.default(this._element).removeClass(F).addClass(Q),this._element.style[s]=0,this._triggerArray.length&&o.default(this._triggerArray).removeClass(B).attr("aria-expanded",!0),this.setTransitioning(!0);var l="scroll"+(s[0].toUpperCase()+s.slice(1)),r=d.getTransitionDurationFromElement(this._element);o.default(this._element).one(d.TRANSITION_END,(function(){o.default(i._element).removeClass(Q).addClass("collapse show"),i._element.style[s]="",i.setTransitioning(!1),o.default(i._element).trigger("shown.bs.collapse")})).emulateTransitionEnd(r),this._element.style[s]=this._element[l]+"px"}}},e.hide=function(){var t=this;if(!this._isTransitioning&&o.default(this._element).hasClass(q)){var e=o.default.Event("hide.bs.collapse");if(o.default(this._element).trigger(e),!e.isDefaultPrevented()){var n=this._getDimension();this._element.style[n]=this._element.getBoundingClientRect()[n]+"px",d.reflow(this._element),o.default(this._element).addClass(Q).removeClass("collapse show");var i=this._triggerArray.length;if(i>0)for(var a=0;a0},e._getOffset=function(){var t=this,e={};return"function"==typeof this._config.offset?e.fn=function(e){return e.offsets=r({},e.offsets,t._config.offset(e.offsets,t._element)),e}:e.offset=this._config.offset,e},e._getPopperConfig=function(){var t={placement:this._getPlacement(),modifiers:{offset:this._getOffset(),flip:{enabled:this._config.flip},preventOverflow:{boundariesElement:this._config.boundary}}};return"static"===this._config.display&&(t.modifiers.applyStyle={enabled:!1}),r({},t,this._config.popperConfig)},t._jQueryInterface=function(e){return this.each((function(){var n=o.default(this).data(K);if(n||(n=new t(this,"object"==typeof e?e:null),o.default(this).data(K,n)),"string"==typeof e){if("undefined"==typeof n[e])throw new TypeError('No method named "'+e+'"');n[e]()}}))},t._clearMenus=function(e){if(!e||3!==e.which&&("keyup"!==e.type||9===e.which))for(var n=[].slice.call(document.querySelectorAll(it)),i=0,a=n.length;i0&&s--,40===e.which&&sdocument.documentElement.clientHeight;n||(this._element.style.overflowY="hidden"),this._element.classList.add(ht);var i=d.getTransitionDurationFromElement(this._dialog);o.default(this._element).off(d.TRANSITION_END),o.default(this._element).one(d.TRANSITION_END,(function(){t._element.classList.remove(ht),n||o.default(t._element).one(d.TRANSITION_END,(function(){t._element.style.overflowY=""})).emulateTransitionEnd(t._element,i)})).emulateTransitionEnd(i),this._element.focus()}},e._showElement=function(t){var e=this,n=o.default(this._element).hasClass(dt),i=this._dialog?this._dialog.querySelector(".modal-body"):null;this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE||document.body.appendChild(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),o.default(this._dialog).hasClass("modal-dialog-scrollable")&&i?i.scrollTop=0:this._element.scrollTop=0,n&&d.reflow(this._element),o.default(this._element).addClass(ct),this._config.focus&&this._enforceFocus();var a=o.default.Event("shown.bs.modal",{relatedTarget:t}),s=function(){e._config.focus&&e._element.focus(),e._isTransitioning=!1,o.default(e._element).trigger(a)};if(n){var l=d.getTransitionDurationFromElement(this._dialog);o.default(this._dialog).one(d.TRANSITION_END,s).emulateTransitionEnd(l)}else s()},e._enforceFocus=function(){var t=this;o.default(document).off(pt).on(pt,(function(e){document!==e.target&&t._element!==e.target&&0===o.default(t._element).has(e.target).length&&t._element.focus()}))},e._setEscapeEvent=function(){var t=this;this._isShown?o.default(this._element).on(yt,(function(e){t._config.keyboard&&27===e.which?(e.preventDefault(),t.hide()):t._config.keyboard||27!==e.which||t._triggerBackdropTransition()})):this._isShown||o.default(this._element).off(yt)},e._setResizeEvent=function(){var t=this;this._isShown?o.default(window).on(_t,(function(e){return t.handleUpdate(e)})):o.default(window).off(_t)},e._hideModal=function(){var t=this;this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._isTransitioning=!1,this._showBackdrop((function(){o.default(document.body).removeClass(ft),t._resetAdjustments(),t._resetScrollbar(),o.default(t._element).trigger(gt)}))},e._removeBackdrop=function(){this._backdrop&&(o.default(this._backdrop).remove(),this._backdrop=null)},e._showBackdrop=function(t){var e=this,n=o.default(this._element).hasClass(dt)?dt:"";if(this._isShown&&this._config.backdrop){if(this._backdrop=document.createElement("div"),this._backdrop.className="modal-backdrop",n&&this._backdrop.classList.add(n),o.default(this._backdrop).appendTo(document.body),o.default(this._element).on(vt,(function(t){e._ignoreBackdropClick?e._ignoreBackdropClick=!1:t.target===t.currentTarget&&("static"===e._config.backdrop?e._triggerBackdropTransition():e.hide())})),n&&d.reflow(this._backdrop),o.default(this._backdrop).addClass(ct),!t)return;if(!n)return void t();var i=d.getTransitionDurationFromElement(this._backdrop);o.default(this._backdrop).one(d.TRANSITION_END,t).emulateTransitionEnd(i)}else if(!this._isShown&&this._backdrop){o.default(this._backdrop).removeClass(ct);var a=function(){e._removeBackdrop(),t&&t()};if(o.default(this._element).hasClass(dt)){var s=d.getTransitionDurationFromElement(this._backdrop);o.default(this._backdrop).one(d.TRANSITION_END,a).emulateTransitionEnd(s)}else a()}else t&&t()},e._adjustDialog=function(){var t=this._element.scrollHeight>document.documentElement.clientHeight;!this._isBodyOverflowing&&t&&(this._element.style.paddingLeft=this._scrollbarWidth+"px"),this._isBodyOverflowing&&!t&&(this._element.style.paddingRight=this._scrollbarWidth+"px")},e._resetAdjustments=function(){this._element.style.paddingLeft="",this._element.style.paddingRight=""},e._checkScrollbar=function(){var t=document.body.getBoundingClientRect();this._isBodyOverflowing=Math.round(t.left+t.right)
    ',trigger:"hover focus",title:"",delay:0,html:!1,selector:!1,placement:"top",offset:0,container:!1,fallbackPlacement:"flip",boundary:"scrollParent",customClass:"",sanitize:!0,sanitizeFn:null,whiteList:{"*":["class","dir","id","lang","role",/^aria-[\w-]*$/i],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],div:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","srcset","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},popperConfig:null},Ut={animation:"boolean",template:"string",title:"(string|element|function)",trigger:"string",delay:"(number|object)",html:"boolean",selector:"(string|boolean)",placement:"(string|function)",offset:"(number|string|function)",container:"(string|element|boolean)",fallbackPlacement:"(string|array)",boundary:"(string|element)",customClass:"(string|function)",sanitize:"boolean",sanitizeFn:"(null|function)",whiteList:"object",popperConfig:"(null|object)"},Mt={HIDE:"hide.bs.tooltip",HIDDEN:"hidden.bs.tooltip",SHOW:"show.bs.tooltip",SHOWN:"shown.bs.tooltip",INSERTED:"inserted.bs.tooltip",CLICK:"click.bs.tooltip",FOCUSIN:"focusin.bs.tooltip",FOCUSOUT:"focusout.bs.tooltip",MOUSEENTER:"mouseenter.bs.tooltip",MOUSELEAVE:"mouseleave.bs.tooltip"},Wt=function(){function t(t,e){if("undefined"==typeof a.default)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");this._isEnabled=!0,this._timeout=0,this._hoverState="",this._activeTrigger={},this._popper=null,this.element=t,this.config=this._getConfig(e),this.tip=null,this._setListeners()}var e=t.prototype;return e.enable=function(){this._isEnabled=!0},e.disable=function(){this._isEnabled=!1},e.toggleEnabled=function(){this._isEnabled=!this._isEnabled},e.toggle=function(t){if(this._isEnabled)if(t){var e=this.constructor.DATA_KEY,n=o.default(t.currentTarget).data(e);n||(n=new this.constructor(t.currentTarget,this._getDelegateConfig()),o.default(t.currentTarget).data(e,n)),n._activeTrigger.click=!n._activeTrigger.click,n._isWithActiveTrigger()?n._enter(null,n):n._leave(null,n)}else{if(o.default(this.getTipElement()).hasClass(Rt))return void this._leave(null,this);this._enter(null,this)}},e.dispose=function(){clearTimeout(this._timeout),o.default.removeData(this.element,this.constructor.DATA_KEY),o.default(this.element).off(this.constructor.EVENT_KEY),o.default(this.element).closest(".modal").off("hide.bs.modal",this._hideModalHandler),this.tip&&o.default(this.tip).remove(),this._isEnabled=null,this._timeout=null,this._hoverState=null,this._activeTrigger=null,this._popper&&this._popper.destroy(),this._popper=null,this.element=null,this.config=null,this.tip=null},e.show=function(){var t=this;if("none"===o.default(this.element).css("display"))throw new Error("Please use show on visible elements");var e=o.default.Event(this.constructor.Event.SHOW);if(this.isWithContent()&&this._isEnabled){o.default(this.element).trigger(e);var n=d.findShadowRoot(this.element),i=o.default.contains(null!==n?n:this.element.ownerDocument.documentElement,this.element);if(e.isDefaultPrevented()||!i)return;var s=this.getTipElement(),l=d.getUID(this.constructor.NAME);s.setAttribute("id",l),this.element.setAttribute("aria-describedby",l),this.setContent(),this.config.animation&&o.default(s).addClass(Lt);var r="function"==typeof this.config.placement?this.config.placement.call(this,s,this.element):this.config.placement,u=this._getAttachment(r);this.addAttachmentClass(u);var f=this._getContainer();o.default(s).data(this.constructor.DATA_KEY,this),o.default.contains(this.element.ownerDocument.documentElement,this.tip)||o.default(s).appendTo(f),o.default(this.element).trigger(this.constructor.Event.INSERTED),this._popper=new a.default(this.element,s,this._getPopperConfig(u)),o.default(s).addClass(Rt),o.default(s).addClass(this.config.customClass),"ontouchstart"in document.documentElement&&o.default(document.body).children().on("mouseover",null,o.default.noop);var c=function(){t.config.animation&&t._fixTransition();var e=t._hoverState;t._hoverState=null,o.default(t.element).trigger(t.constructor.Event.SHOWN),e===qt&&t._leave(null,t)};if(o.default(this.tip).hasClass(Lt)){var h=d.getTransitionDurationFromElement(this.tip);o.default(this.tip).one(d.TRANSITION_END,c).emulateTransitionEnd(h)}else c()}},e.hide=function(t){var e=this,n=this.getTipElement(),i=o.default.Event(this.constructor.Event.HIDE),a=function(){e._hoverState!==xt&&n.parentNode&&n.parentNode.removeChild(n),e._cleanTipClass(),e.element.removeAttribute("aria-describedby"),o.default(e.element).trigger(e.constructor.Event.HIDDEN),null!==e._popper&&e._popper.destroy(),t&&t()};if(o.default(this.element).trigger(i),!i.isDefaultPrevented()){if(o.default(n).removeClass(Rt),"ontouchstart"in document.documentElement&&o.default(document.body).children().off("mouseover",null,o.default.noop),this._activeTrigger.click=!1,this._activeTrigger.focus=!1,this._activeTrigger.hover=!1,o.default(this.tip).hasClass(Lt)){var s=d.getTransitionDurationFromElement(n);o.default(n).one(d.TRANSITION_END,a).emulateTransitionEnd(s)}else a();this._hoverState=""}},e.update=function(){null!==this._popper&&this._popper.scheduleUpdate()},e.isWithContent=function(){return Boolean(this.getTitle())},e.addAttachmentClass=function(t){o.default(this.getTipElement()).addClass("bs-tooltip-"+t)},e.getTipElement=function(){return this.tip=this.tip||o.default(this.config.template)[0],this.tip},e.setContent=function(){var t=this.getTipElement();this.setElementContent(o.default(t.querySelectorAll(".tooltip-inner")),this.getTitle()),o.default(t).removeClass("fade show")},e.setElementContent=function(t,e){"object"!=typeof e||!e.nodeType&&!e.jquery?this.config.html?(this.config.sanitize&&(e=At(e,this.config.whiteList,this.config.sanitizeFn)),t.html(e)):t.text(e):this.config.html?o.default(e).parent().is(t)||t.empty().append(e):t.text(o.default(e).text())},e.getTitle=function(){var t=this.element.getAttribute("data-original-title");return t||(t="function"==typeof this.config.title?this.config.title.call(this.element):this.config.title),t},e._getPopperConfig=function(t){var e=this;return r({},{placement:t,modifiers:{offset:this._getOffset(),flip:{behavior:this.config.fallbackPlacement},arrow:{element:".arrow"},preventOverflow:{boundariesElement:this.config.boundary}},onCreate:function(t){t.originalPlacement!==t.placement&&e._handlePopperPlacementChange(t)},onUpdate:function(t){return e._handlePopperPlacementChange(t)}},this.config.popperConfig)},e._getOffset=function(){var t=this,e={};return"function"==typeof this.config.offset?e.fn=function(e){return e.offsets=r({},e.offsets,t.config.offset(e.offsets,t.element)),e}:e.offset=this.config.offset,e},e._getContainer=function(){return!1===this.config.container?document.body:d.isElement(this.config.container)?o.default(this.config.container):o.default(document).find(this.config.container)},e._getAttachment=function(t){return Bt[t.toUpperCase()]},e._setListeners=function(){var t=this;this.config.trigger.split(" ").forEach((function(e){if("click"===e)o.default(t.element).on(t.constructor.Event.CLICK,t.config.selector,(function(e){return t.toggle(e)}));else if("manual"!==e){var n=e===Ft?t.constructor.Event.MOUSEENTER:t.constructor.Event.FOCUSIN,i=e===Ft?t.constructor.Event.MOUSELEAVE:t.constructor.Event.FOCUSOUT;o.default(t.element).on(n,t.config.selector,(function(e){return t._enter(e)})).on(i,t.config.selector,(function(e){return t._leave(e)}))}})),this._hideModalHandler=function(){t.element&&t.hide()},o.default(this.element).closest(".modal").on("hide.bs.modal",this._hideModalHandler),this.config.selector?this.config=r({},this.config,{trigger:"manual",selector:""}):this._fixTitle()},e._fixTitle=function(){var t=typeof this.element.getAttribute("data-original-title");(this.element.getAttribute("title")||"string"!==t)&&(this.element.setAttribute("data-original-title",this.element.getAttribute("title")||""),this.element.setAttribute("title",""))},e._enter=function(t,e){var n=this.constructor.DATA_KEY;(e=e||o.default(t.currentTarget).data(n))||(e=new this.constructor(t.currentTarget,this._getDelegateConfig()),o.default(t.currentTarget).data(n,e)),t&&(e._activeTrigger["focusin"===t.type?Qt:Ft]=!0),o.default(e.getTipElement()).hasClass(Rt)||e._hoverState===xt?e._hoverState=xt:(clearTimeout(e._timeout),e._hoverState=xt,e.config.delay&&e.config.delay.show?e._timeout=setTimeout((function(){e._hoverState===xt&&e.show()}),e.config.delay.show):e.show())},e._leave=function(t,e){var n=this.constructor.DATA_KEY;(e=e||o.default(t.currentTarget).data(n))||(e=new this.constructor(t.currentTarget,this._getDelegateConfig()),o.default(t.currentTarget).data(n,e)),t&&(e._activeTrigger["focusout"===t.type?Qt:Ft]=!1),e._isWithActiveTrigger()||(clearTimeout(e._timeout),e._hoverState=qt,e.config.delay&&e.config.delay.hide?e._timeout=setTimeout((function(){e._hoverState===qt&&e.hide()}),e.config.delay.hide):e.hide())},e._isWithActiveTrigger=function(){for(var t in this._activeTrigger)if(this._activeTrigger[t])return!0;return!1},e._getConfig=function(t){var e=o.default(this.element).data();return Object.keys(e).forEach((function(t){-1!==Pt.indexOf(t)&&delete e[t]})),"number"==typeof(t=r({},this.constructor.Default,e,"object"==typeof t&&t?t:{})).delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),d.typeCheckConfig(It,t,this.constructor.DefaultType),t.sanitize&&(t.template=At(t.template,t.whiteList,t.sanitizeFn)),t},e._getDelegateConfig=function(){var t={};if(this.config)for(var e in this.config)this.constructor.Default[e]!==this.config[e]&&(t[e]=this.config[e]);return t},e._cleanTipClass=function(){var t=o.default(this.getTipElement()),e=t.attr("class").match(jt);null!==e&&e.length&&t.removeClass(e.join(""))},e._handlePopperPlacementChange=function(t){this.tip=t.instance.popper,this._cleanTipClass(),this.addAttachmentClass(this._getAttachment(t.placement))},e._fixTransition=function(){var t=this.getTipElement(),e=this.config.animation;null===t.getAttribute("x-placement")&&(o.default(t).removeClass(Lt),this.config.animation=!1,this.hide(),this.show(),this.config.animation=e)},t._jQueryInterface=function(e){return this.each((function(){var n=o.default(this),i=n.data(kt),a="object"==typeof e&&e;if((i||!/dispose|hide/.test(e))&&(i||(i=new t(this,a),n.data(kt,i)),"string"==typeof e)){if("undefined"==typeof i[e])throw new TypeError('No method named "'+e+'"');i[e]()}}))},l(t,null,[{key:"VERSION",get:function(){return"4.6.1"}},{key:"Default",get:function(){return Ht}},{key:"NAME",get:function(){return It}},{key:"DATA_KEY",get:function(){return kt}},{key:"Event",get:function(){return Mt}},{key:"EVENT_KEY",get:function(){return".bs.tooltip"}},{key:"DefaultType",get:function(){return Ut}}]),t}();o.default.fn.tooltip=Wt._jQueryInterface,o.default.fn.tooltip.Constructor=Wt,o.default.fn.tooltip.noConflict=function(){return o.default.fn.tooltip=Ot,Wt._jQueryInterface};var Vt="bs.popover",zt=o.default.fn.popover,Kt=new RegExp("(^|\\s)bs-popover\\S+","g"),Xt=r({},Wt.Default,{placement:"right",trigger:"click",content:"",template:''}),Yt=r({},Wt.DefaultType,{content:"(string|element|function)"}),$t={HIDE:"hide.bs.popover",HIDDEN:"hidden.bs.popover",SHOW:"show.bs.popover",SHOWN:"shown.bs.popover",INSERTED:"inserted.bs.popover",CLICK:"click.bs.popover",FOCUSIN:"focusin.bs.popover",FOCUSOUT:"focusout.bs.popover",MOUSEENTER:"mouseenter.bs.popover",MOUSELEAVE:"mouseleave.bs.popover"},Jt=function(t){var e,n;function i(){return t.apply(this,arguments)||this}n=t,(e=i).prototype=Object.create(n.prototype),e.prototype.constructor=e,u(e,n);var a=i.prototype;return a.isWithContent=function(){return this.getTitle()||this._getContent()},a.addAttachmentClass=function(t){o.default(this.getTipElement()).addClass("bs-popover-"+t)},a.getTipElement=function(){return this.tip=this.tip||o.default(this.config.template)[0],this.tip},a.setContent=function(){var t=o.default(this.getTipElement());this.setElementContent(t.find(".popover-header"),this.getTitle());var e=this._getContent();"function"==typeof e&&(e=e.call(this.element)),this.setElementContent(t.find(".popover-body"),e),t.removeClass("fade show")},a._getContent=function(){return this.element.getAttribute("data-content")||this.config.content},a._cleanTipClass=function(){var t=o.default(this.getTipElement()),e=t.attr("class").match(Kt);null!==e&&e.length>0&&t.removeClass(e.join(""))},i._jQueryInterface=function(t){return this.each((function(){var e=o.default(this).data(Vt),n="object"==typeof t?t:null;if((e||!/dispose|hide/.test(t))&&(e||(e=new i(this,n),o.default(this).data(Vt,e)),"string"==typeof t)){if("undefined"==typeof e[t])throw new TypeError('No method named "'+t+'"');e[t]()}}))},l(i,null,[{key:"VERSION",get:function(){return"4.6.1"}},{key:"Default",get:function(){return Xt}},{key:"NAME",get:function(){return"popover"}},{key:"DATA_KEY",get:function(){return Vt}},{key:"Event",get:function(){return $t}},{key:"EVENT_KEY",get:function(){return".bs.popover"}},{key:"DefaultType",get:function(){return Yt}}]),i}(Wt);o.default.fn.popover=Jt._jQueryInterface,o.default.fn.popover.Constructor=Jt,o.default.fn.popover.noConflict=function(){return o.default.fn.popover=zt,Jt._jQueryInterface};var Gt="scrollspy",Zt="bs.scrollspy",te=o.default.fn[Gt],ee="active",ne="position",ie=".nav, .list-group",oe={offset:10,method:"auto",target:""},ae={offset:"number",method:"string",target:"(string|element)"},se=function(){function t(t,e){var n=this;this._element=t,this._scrollElement="BODY"===t.tagName?window:t,this._config=this._getConfig(e),this._selector=this._config.target+" .nav-link,"+this._config.target+" .list-group-item,"+this._config.target+" .dropdown-item",this._offsets=[],this._targets=[],this._activeTarget=null,this._scrollHeight=0,o.default(this._scrollElement).on("scroll.bs.scrollspy",(function(t){return n._process(t)})),this.refresh(),this._process()}var e=t.prototype;return e.refresh=function(){var t=this,e=this._scrollElement===this._scrollElement.window?"offset":ne,n="auto"===this._config.method?e:this._config.method,i=n===ne?this._getScrollTop():0;this._offsets=[],this._targets=[],this._scrollHeight=this._getScrollHeight(),[].slice.call(document.querySelectorAll(this._selector)).map((function(t){var e,a=d.getSelectorFromElement(t);if(a&&(e=document.querySelector(a)),e){var s=e.getBoundingClientRect();if(s.width||s.height)return[o.default(e)[n]().top+i,a]}return null})).filter((function(t){return t})).sort((function(t,e){return t[0]-e[0]})).forEach((function(e){t._offsets.push(e[0]),t._targets.push(e[1])}))},e.dispose=function(){o.default.removeData(this._element,Zt),o.default(this._scrollElement).off(".bs.scrollspy"),this._element=null,this._scrollElement=null,this._config=null,this._selector=null,this._offsets=null,this._targets=null,this._activeTarget=null,this._scrollHeight=null},e._getConfig=function(t){if("string"!=typeof(t=r({},oe,"object"==typeof t&&t?t:{})).target&&d.isElement(t.target)){var e=o.default(t.target).attr("id");e||(e=d.getUID(Gt),o.default(t.target).attr("id",e)),t.target="#"+e}return d.typeCheckConfig(Gt,t,ae),t},e._getScrollTop=function(){return this._scrollElement===window?this._scrollElement.pageYOffset:this._scrollElement.scrollTop},e._getScrollHeight=function(){return this._scrollElement.scrollHeight||Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)},e._getOffsetHeight=function(){return this._scrollElement===window?window.innerHeight:this._scrollElement.getBoundingClientRect().height},e._process=function(){var t=this._getScrollTop()+this._config.offset,e=this._getScrollHeight(),n=this._config.offset+e-this._getOffsetHeight();if(this._scrollHeight!==e&&this.refresh(),t>=n){var i=this._targets[this._targets.length-1];this._activeTarget!==i&&this._activate(i)}else{if(this._activeTarget&&t0)return this._activeTarget=null,void this._clear();for(var o=this._offsets.length;o--;)this._activeTarget!==this._targets[o]&&t>=this._offsets[o]&&("undefined"==typeof this._offsets[o+1]||t li > .active",ge=function(){function t(t){this._element=t}var e=t.prototype;return e.show=function(){var t=this;if(!(this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE&&o.default(this._element).hasClass(ue)||o.default(this._element).hasClass("disabled"))){var e,n,i=o.default(this._element).closest(".nav, .list-group")[0],a=d.getSelectorFromElement(this._element);if(i){var s="UL"===i.nodeName||"OL"===i.nodeName?he:ce;n=(n=o.default.makeArray(o.default(i).find(s)))[n.length-1]}var l=o.default.Event("hide.bs.tab",{relatedTarget:this._element}),r=o.default.Event("show.bs.tab",{relatedTarget:n});if(n&&o.default(n).trigger(l),o.default(this._element).trigger(r),!r.isDefaultPrevented()&&!l.isDefaultPrevented()){a&&(e=document.querySelector(a)),this._activate(this._element,i);var u=function(){var e=o.default.Event("hidden.bs.tab",{relatedTarget:t._element}),i=o.default.Event("shown.bs.tab",{relatedTarget:n});o.default(n).trigger(e),o.default(t._element).trigger(i)};e?this._activate(e,e.parentNode,u):u()}}},e.dispose=function(){o.default.removeData(this._element,le),this._element=null},e._activate=function(t,e,n){var i=this,a=(!e||"UL"!==e.nodeName&&"OL"!==e.nodeName?o.default(e).children(ce):o.default(e).find(he))[0],s=n&&a&&o.default(a).hasClass(fe),l=function(){return i._transitionComplete(t,a,n)};if(a&&s){var r=d.getTransitionDurationFromElement(a);o.default(a).removeClass(de).one(d.TRANSITION_END,l).emulateTransitionEnd(r)}else l()},e._transitionComplete=function(t,e,n){if(e){o.default(e).removeClass(ue);var i=o.default(e.parentNode).find("> .dropdown-menu .active")[0];i&&o.default(i).removeClass(ue),"tab"===e.getAttribute("role")&&e.setAttribute("aria-selected",!1)}o.default(t).addClass(ue),"tab"===t.getAttribute("role")&&t.setAttribute("aria-selected",!0),d.reflow(t),t.classList.contains(fe)&&t.classList.add(de);var a=t.parentNode;if(a&&"LI"===a.nodeName&&(a=a.parentNode),a&&o.default(a).hasClass("dropdown-menu")){var s=o.default(t).closest(".dropdown")[0];if(s){var l=[].slice.call(s.querySelectorAll(".dropdown-toggle"));o.default(l).addClass(ue)}t.setAttribute("aria-expanded",!0)}n&&n()},t._jQueryInterface=function(e){return this.each((function(){var n=o.default(this),i=n.data(le);if(i||(i=new t(this),n.data(le,i)),"string"==typeof e){if("undefined"==typeof i[e])throw new TypeError('No method named "'+e+'"');i[e]()}}))},l(t,null,[{key:"VERSION",get:function(){return"4.6.1"}}]),t}();o.default(document).on("click.bs.tab.data-api",'[data-toggle="tab"], [data-toggle="pill"], [data-toggle="list"]',(function(t){t.preventDefault(),ge._jQueryInterface.call(o.default(this),"show")})),o.default.fn.tab=ge._jQueryInterface,o.default.fn.tab.Constructor=ge,o.default.fn.tab.noConflict=function(){return o.default.fn.tab=re,ge._jQueryInterface};var me="bs.toast",pe=o.default.fn.toast,_e="hide",ve="show",ye="showing",be="click.dismiss.bs.toast",Ee={animation:!0,autohide:!0,delay:500},Te={animation:"boolean",autohide:"boolean",delay:"number"},we=function(){function t(t,e){this._element=t,this._config=this._getConfig(e),this._timeout=null,this._setListeners()}var e=t.prototype;return e.show=function(){var t=this,e=o.default.Event("show.bs.toast");if(o.default(this._element).trigger(e),!e.isDefaultPrevented()){this._clearTimeout(),this._config.animation&&this._element.classList.add("fade");var n=function(){t._element.classList.remove(ye),t._element.classList.add(ve),o.default(t._element).trigger("shown.bs.toast"),t._config.autohide&&(t._timeout=setTimeout((function(){t.hide()}),t._config.delay))};if(this._element.classList.remove(_e),d.reflow(this._element),this._element.classList.add(ye),this._config.animation){var i=d.getTransitionDurationFromElement(this._element);o.default(this._element).one(d.TRANSITION_END,n).emulateTransitionEnd(i)}else n()}},e.hide=function(){if(this._element.classList.contains(ve)){var t=o.default.Event("hide.bs.toast");o.default(this._element).trigger(t),t.isDefaultPrevented()||this._close()}},e.dispose=function(){this._clearTimeout(),this._element.classList.contains(ve)&&this._element.classList.remove(ve),o.default(this._element).off(be),o.default.removeData(this._element,me),this._element=null,this._config=null},e._getConfig=function(t){return t=r({},Ee,o.default(this._element).data(),"object"==typeof t&&t?t:{}),d.typeCheckConfig("toast",t,this.constructor.DefaultType),t},e._setListeners=function(){var t=this;o.default(this._element).on(be,'[data-dismiss="toast"]',(function(){return t.hide()}))},e._close=function(){var t=this,e=function(){t._element.classList.add(_e),o.default(t._element).trigger("hidden.bs.toast")};if(this._element.classList.remove(ve),this._config.animation){var n=d.getTransitionDurationFromElement(this._element);o.default(this._element).one(d.TRANSITION_END,e).emulateTransitionEnd(n)}else e()},e._clearTimeout=function(){clearTimeout(this._timeout),this._timeout=null},t._jQueryInterface=function(e){return this.each((function(){var n=o.default(this),i=n.data(me);if(i||(i=new t(this,"object"==typeof e&&e),n.data(me,i)),"string"==typeof e){if("undefined"==typeof i[e])throw new TypeError('No method named "'+e+'"');i[e](this)}}))},l(t,null,[{key:"VERSION",get:function(){return"4.6.1"}},{key:"DefaultType",get:function(){return Te}},{key:"Default",get:function(){return Ee}}]),t}();o.default.fn.toast=we._jQueryInterface,o.default.fn.toast.Constructor=we,o.default.fn.toast.noConflict=function(){return o.default.fn.toast=pe,we._jQueryInterface},t.Alert=g,t.Button=E,t.Carousel=P,t.Collapse=V,t.Dropdown=lt,t.Modal=Ct,t.Popover=Jt,t.Scrollspy=se,t.Tab=ge,t.Toast=we,t.Tooltip=Wt,t.Util=d,Object.defineProperty(t,"__esModule",{value:!0})})); -//# sourceMappingURL=bootstrap.min.js.map diff --git a/docs/_theme/rl4co/static/js/vendor/popper.min.js b/docs/_theme/rl4co/static/js/vendor/popper.min.js deleted file mode 100644 index bb1aaae3..00000000 --- a/docs/_theme/rl4co/static/js/vendor/popper.min.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (C) Federico Zivolo 2020 - Distributed under the MIT License (license terms are at http://opensource.org/licenses/MIT). - */(function(e,t){'object'==typeof exports&&'undefined'!=typeof module?module.exports=t():'function'==typeof define&&define.amd?define(t):e.Popper=t()})(this,function(){'use strict';function e(e){return e&&'[object Function]'==={}.toString.call(e)}function t(e,t){if(1!==e.nodeType)return[];var o=e.ownerDocument.defaultView,n=o.getComputedStyle(e,null);return t?n[t]:n}function o(e){return'HTML'===e.nodeName?e:e.parentNode||e.host}function n(e){if(!e)return document.body;switch(e.nodeName){case'HTML':case'BODY':return e.ownerDocument.body;case'#document':return e.body;}var i=t(e),r=i.overflow,p=i.overflowX,s=i.overflowY;return /(auto|scroll|overlay)/.test(r+s+p)?e:n(o(e))}function i(e){return e&&e.referenceNode?e.referenceNode:e}function r(e){return 11===e?re:10===e?pe:re||pe}function p(e){if(!e)return document.documentElement;for(var o=r(10)?document.body:null,n=e.offsetParent||null;n===o&&e.nextElementSibling;)n=(e=e.nextElementSibling).offsetParent;var i=n&&n.nodeName;return i&&'BODY'!==i&&'HTML'!==i?-1!==['TH','TD','TABLE'].indexOf(n.nodeName)&&'static'===t(n,'position')?p(n):n:e?e.ownerDocument.documentElement:document.documentElement}function s(e){var t=e.nodeName;return'BODY'!==t&&('HTML'===t||p(e.firstElementChild)===e)}function d(e){return null===e.parentNode?e:d(e.parentNode)}function a(e,t){if(!e||!e.nodeType||!t||!t.nodeType)return document.documentElement;var o=e.compareDocumentPosition(t)&Node.DOCUMENT_POSITION_FOLLOWING,n=o?e:t,i=o?t:e,r=document.createRange();r.setStart(n,0),r.setEnd(i,0);var l=r.commonAncestorContainer;if(e!==l&&t!==l||n.contains(i))return s(l)?l:p(l);var f=d(e);return f.host?a(f.host,t):a(e,d(t).host)}function l(e){var t=1=o.clientWidth&&n>=o.clientHeight}),l=0a[e]&&!t.escapeWithReference&&(n=Q(f[o],a[e]-('right'===e?f.width:f.height))),ae({},o,n)}};return l.forEach(function(e){var t=-1===['left','top'].indexOf(e)?'secondary':'primary';f=le({},f,m[t](e))}),e.offsets.popper=f,e},priority:['left','right','top','bottom'],padding:5,boundariesElement:'scrollParent'},keepTogether:{order:400,enabled:!0,fn:function(e){var t=e.offsets,o=t.popper,n=t.reference,i=e.placement.split('-')[0],r=Z,p=-1!==['top','bottom'].indexOf(i),s=p?'right':'bottom',d=p?'left':'top',a=p?'width':'height';return o[s]r(n[s])&&(e.offsets.popper[d]=r(n[s])),e}},arrow:{order:500,enabled:!0,fn:function(e,o){var n;if(!K(e.instance.modifiers,'arrow','keepTogether'))return e;var i=o.element;if('string'==typeof i){if(i=e.instance.popper.querySelector(i),!i)return e;}else if(!e.instance.popper.contains(i))return console.warn('WARNING: `arrow.element` must be child of its popper element!'),e;var r=e.placement.split('-')[0],p=e.offsets,s=p.popper,d=p.reference,a=-1!==['left','right'].indexOf(r),l=a?'height':'width',f=a?'Top':'Left',m=f.toLowerCase(),h=a?'left':'top',c=a?'bottom':'right',u=S(i)[l];d[c]-us[c]&&(e.offsets.popper[m]+=d[m]+u-s[c]),e.offsets.popper=g(e.offsets.popper);var b=d[m]+d[l]/2-u/2,w=t(e.instance.popper),y=parseFloat(w['margin'+f]),E=parseFloat(w['border'+f+'Width']),v=b-e.offsets.popper[m]-y-E;return v=ee(Q(s[l]-u,v),0),e.arrowElement=i,e.offsets.arrow=(n={},ae(n,m,$(v)),ae(n,h,''),n),e},element:'[x-arrow]'},flip:{order:600,enabled:!0,fn:function(e,t){if(W(e.instance.modifiers,'inner'))return e;if(e.flipped&&e.placement===e.originalPlacement)return e;var o=v(e.instance.popper,e.instance.reference,t.padding,t.boundariesElement,e.positionFixed),n=e.placement.split('-')[0],i=T(n),r=e.placement.split('-')[1]||'',p=[];switch(t.behavior){case ce.FLIP:p=[n,i];break;case ce.CLOCKWISE:p=G(n);break;case ce.COUNTERCLOCKWISE:p=G(n,!0);break;default:p=t.behavior;}return p.forEach(function(s,d){if(n!==s||p.length===d+1)return e;n=e.placement.split('-')[0],i=T(n);var a=e.offsets.popper,l=e.offsets.reference,f=Z,m='left'===n&&f(a.right)>f(l.left)||'right'===n&&f(a.left)f(l.top)||'bottom'===n&&f(a.top)f(o.right),g=f(a.top)f(o.bottom),b='left'===n&&h||'right'===n&&c||'top'===n&&g||'bottom'===n&&u,w=-1!==['top','bottom'].indexOf(n),y=!!t.flipVariations&&(w&&'start'===r&&h||w&&'end'===r&&c||!w&&'start'===r&&g||!w&&'end'===r&&u),E=!!t.flipVariationsByContent&&(w&&'start'===r&&c||w&&'end'===r&&h||!w&&'start'===r&&u||!w&&'end'===r&&g),v=y||E;(m||b||v)&&(e.flipped=!0,(m||b)&&(n=p[d+1]),v&&(r=z(r)),e.placement=n+(r?'-'+r:''),e.offsets.popper=le({},e.offsets.popper,C(e.instance.popper,e.offsets.reference,e.placement)),e=P(e.instance.modifiers,e,'flip'))}),e},behavior:'flip',padding:5,boundariesElement:'viewport',flipVariations:!1,flipVariationsByContent:!1},inner:{order:700,enabled:!1,fn:function(e){var t=e.placement,o=t.split('-')[0],n=e.offsets,i=n.popper,r=n.reference,p=-1!==['left','right'].indexOf(o),s=-1===['top','left'].indexOf(o);return i[p?'left':'top']=r[o]-(s?i[p?'width':'height']:0),e.placement=T(t),e.offsets.popper=g(i),e}},hide:{order:800,enabled:!0,fn:function(e){if(!K(e.instance.modifiers,'hide','preventOverflow'))return e;var t=e.offsets.reference,o=D(e.instance.modifiers,function(e){return'preventOverflow'===e.name}).boundaries;if(t.bottomo.right||t.top>o.bottom||t.rightwindow.devicePixelRatio||!fe),c='bottom'===o?'top':'bottom',g='right'===n?'left':'right',b=B('transform');if(d='bottom'==c?'HTML'===l.nodeName?-l.clientHeight+h.bottom:-f.height+h.bottom:h.top,s='right'==g?'HTML'===l.nodeName?-l.clientWidth+h.right:-f.width+h.right:h.left,a&&b)m[b]='translate3d('+s+'px, '+d+'px, 0)',m[c]=0,m[g]=0,m.willChange='transform';else{var w='bottom'==c?-1:1,y='right'==g?-1:1;m[c]=d*w,m[g]=s*y,m.willChange=c+', '+g}var E={"x-placement":e.placement};return e.attributes=le({},E,e.attributes),e.styles=le({},m,e.styles),e.arrowStyles=le({},e.offsets.arrow,e.arrowStyles),e},gpuAcceleration:!0,x:'bottom',y:'right'},applyStyle:{order:900,enabled:!0,fn:function(e){return V(e.instance.popper,e.styles),j(e.instance.popper,e.attributes),e.arrowElement&&Object.keys(e.arrowStyles).length&&V(e.arrowElement,e.arrowStyles),e},onLoad:function(e,t,o,n,i){var r=L(i,t,e,o.positionFixed),p=O(o.placement,r,t,e,o.modifiers.flip.boundariesElement,o.modifiers.flip.padding);return t.setAttribute('x-placement',p),V(t,{position:o.positionFixed?'fixed':'absolute'}),o},gpuAcceleration:void 0}}},ge}); -//# sourceMappingURL=popper.min.js.map diff --git a/docs/_theme/rl4co/theme.conf b/docs/_theme/rl4co/theme.conf deleted file mode 100644 index 3051f1c4..00000000 --- a/docs/_theme/rl4co/theme.conf +++ /dev/null @@ -1,19 +0,0 @@ -[theme] -inherit = basic -stylesheet = css/theme.css -pygments_style = default - -[options] -canonical_url = -analytics_id = -collapse_navigation = True -sticky_navigation = True -navigation_depth = 4 -includehidden = False -titles_only = -logo = -logo_only = -display_version = True -prev_next_buttons_location = bottom -style_external_links = False -pytorch_project = diff --git a/docs/_theme/rl4co/theme_variables.jinja b/docs/_theme/rl4co/theme_variables.jinja deleted file mode 100644 index e5afc63b..00000000 --- a/docs/_theme/rl4co/theme_variables.jinja +++ /dev/null @@ -1,18 +0,0 @@ -{%- set external_urls = { - 'github': 'https://github.com/ai4co/rl4co', - 'github_issues': 'https://github.com/ai4co/rl4co/issues', - 'contributing': 'https://rl4co.readthedocs.io/en/latest/_content/general/contribute.html', - 'docs': 'https://rl4co.readthedocs.io/en/latest/', - 'discuss': 'https://join.slack.com/t/rl4co/shared_invite/zt-1ytz2c1v4-0IkQ8NQH4TRXIX8PrRmDhQ', - 'tutorials': 'https://rl4co.readthedocs.io/en/latest/_collections/tutorials/1-training-loop-advanced.html', - 'home': 'https://rl4co.readthedocs.io/en/latest/', - 'get_started': 'https://rl4co.readthedocs.io/en/latest/_collections/1-quickstart.html', - 'features': 'https://rl4co.readthedocs.io/en/latest/', - 'blog': 'https://rl4co.readthedocs.io/en/latest/', - 'resources': 'https://rl4co.readthedocs.io/en/latest/', - 'support': 'https://rl4co.readthedocs.io/en/latest/_content/general/faq.html', - 'community': 'https://join.slack.com/t/rl4co/shared_invite/zt-1ytz2c1v4-0IkQ8NQH4TRXIX8PrRmDhQ', - 'forums': 'https://join.slack.com/t/rl4co/shared_invite/zt-1ytz2c1v4-0IkQ8NQH4TRXIX8PrRmDhQ', - 'versions': '', -} --%} diff --git a/docs/_theme/rl4co/versions.html b/docs/_theme/rl4co/versions.html deleted file mode 100644 index 4b057d32..00000000 --- a/docs/_theme/rl4co/versions.html +++ /dev/null @@ -1,36 +0,0 @@ -{% if READTHEDOCS %} -{# Add rst-badge after rst-versions for small badge style. #} -
    - - Read the Docs - v: {{ current_version }} - - -
    -
    -
    {{ _('Versions') }}
    - {% for slug, url in versions %} -
    {{ slug }}
    - {% endfor %} -
    -
    -
    {{ _('Downloads') }}
    - {% for type, url in downloads %} -
    {{ type }}
    - {% endfor %} -
    -
    -
    {{ _('On Read the Docs') }}
    -
    - {{ _('Project Home') }} -
    -
    - {{ _('Builds') }} -
    -
    -
    - {% trans %}Free document hosting provided by Read the Docs.{% endtrans %} - -
    -
    -{% endif %} diff --git a/docs/_theme/rl4co/extensions/__init__.py b/docs/algorithms/ppo.md similarity index 100% rename from docs/_theme/rl4co/extensions/__init__.py rename to docs/algorithms/ppo.md diff --git a/docs/api/train_and_eval.md b/docs/api/train_and_eval.md new file mode 100644 index 00000000..e69de29b diff --git a/docs/assets/figs/rl4co-logo.svg b/docs/assets/figs/rl4co-logo.svg new file mode 100644 index 00000000..041aa2e1 --- /dev/null +++ b/docs/assets/figs/rl4co-logo.svg @@ -0,0 +1,38 @@ + + + + + + Style 1-5 + + + diff --git a/docs/conf.py b/docs/conf.py deleted file mode 100644 index fca346f6..00000000 --- a/docs/conf.py +++ /dev/null @@ -1,121 +0,0 @@ -# Configuration file for the Sphinx documentation builder. -# -# For the full list of built-in configuration values, see the documentation: -# https://www.sphinx-doc.org/en/master/usage/configuration.html - -# -- Project information ----------------------------------------------------- -# https://www.sphinx-doc.org/en/master/usage/configuration.html#project-information -import rl4co - -project = "rl4co" -copyright = "RL4CO Contributors" -author = "Federico Berto, Chuanbo Hua, Junyoung Park, Minsu Kim, Hyeonah Kim, Jiwoo Son, Haeyeon Kim, Joungho Kim, Jinkyoo Park" - - -release = rl4co.__version__ - -# -- General configuration --------------------------------------------------- -# https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration - - -# Most taken from: https://github.com/Lightning-AI/lightning/blob/master/docs/source-pytorch/conf.py -extensions = [ - "sphinx.ext.autodoc", - "sphinx.ext.doctest", - "sphinx.ext.intersphinx", - "sphinx_toolbox.collapse", - "sphinx.ext.todo", - "sphinx.ext.coverage", - "sphinx.ext.viewcode", - "sphinx.ext.autosummary", - "sphinx.ext.napoleon", - "sphinx.ext.autosectionlabel", - "sphinxcontrib.video", - "sphinxcontrib.katex", - "myst_parser", - "nbsphinx", - "sphinx_autodoc_typehints", - "sphinx_copybutton", - "sphinx_paramlinks", - "sphinx_togglebutton", - "sphinxcontrib.collections", -] - - -# Include the folder from the main repo containing the notebooks -collections = { - "my_files": { - "driver": "copy_folder", - "source": "../examples/", - "target": "", - "ignore": ["*.ckpt"], - } -} - -templates_path = ["_templates"] -exclude_patterns = ["_build", "Thumbs.db", ".DS_Store"] - -# -- Options for HTML output ------------------------------------------------- -# https://www.sphinx-doc.org/en/master/usage/configuration.html#options-for-html-output - -# SECTION: original theme set -# html_theme = 'alabaster' -# html_static_path = ['_static'] - -# SECTION: set sphinx_rtd_theme -# html_theme = "sphinx_rtd_theme" -# html_static_path = ['_static'] -# html_theme_options = { -# 'navigation_depth': 4, -# } - -# SECTION: set rl4co theme -html_theme = "rl4co" -html_theme_path = ["_theme"] - -# SECTION: set different parser for rst and md -source_suffix = { - ".rst": "restructuredtext", - ".md": "markdown", -} - -# intersphinx_mapping = { -# "python": ("https://docs.python.org/3", None), -# "torch": ("https://pytorch.org/docs/stable/", None), -# "torchmetrics": ("https://torchmetrics.readthedocs.io/en/stable/", None), -# "tensordict": ("https://pytorch-labs.github.io/tensordict/", None), -# "torchrl": ("https://pytorch.org/rl/", None), -# "torchaudio": ("https://pytorch.org/audio/stable/", None), -# "torchtext": ("https://pytorch.org/text/stable/", None), -# "torchvision": ("https://pytorch.org/vision/stable/", None), -# "numpy": ("https://numpy.org/doc/stable/", None), -# } - - -autosummary_generate = True - -autodoc_member_order = "groupwise" - -autoclass_content = "both" - -autodoc_default_options = { - "members": True, - "methods": True, - "special-members": "__call__", - "exclude-members": "_abc_impl", - "show-inheritance": True, -} - -# Sphinx will add “permalinks” for each heading and description environment as paragraph signs that -# become visible when the mouse hovers over them. -# This value determines the text for the permalink; it defaults to "¶". Set it to None or the empty -# string to disable permalinks. -# https://www.sphinx-doc.org/en/master/usage/configuration.html#confval-html_add_permalinks -html_permalinks = True -html_permalinks_icon = "¶" - -# True to prefix each section label with the name of the document it is in, followed by a colon. -# For example, index:Introduction for a section called Introduction that appears in document index.rst. -# Useful for avoiding ambiguity when the same section heading appears in different documents. -# http://www.sphinx-doc.org/en/master/usage/extensions/autosectionlabel.html -autosectionlabel_prefix_document = True diff --git a/docs/environments/basic.md b/docs/environments/basic.md new file mode 100644 index 00000000..5e9fb0ef --- /dev/null +++ b/docs/environments/basic.md @@ -0,0 +1 @@ +::: rl4co.envs.common.base \ No newline at end of file diff --git a/docs/environments/eda.md b/docs/environments/eda.md new file mode 100644 index 00000000..e69de29b diff --git a/docs/environments/routing.md b/docs/environments/routing.md new file mode 100644 index 00000000..e69de29b diff --git a/docs/environments/scheduling.md b/docs/environments/scheduling.md new file mode 100644 index 00000000..e69de29b diff --git a/docs/index.md b/docs/index.md index 87aae5fd..19478c68 100644 --- a/docs/index.md +++ b/docs/index.md @@ -1,121 +1,221 @@ -# RL4CO -
    AI4CO Logo
    -

    - -An extensive Reinforcement Learning (RL) for Combinatorial Optimization (CO) benchmark. Our goal is to provide a unified framework for RL-based CO algorithms, and to facilitate reproducible research in this field, decoupling the science from the engineering. +
    +
    -PyTorch +PyTorch Lightning base: TorchRL -config: Hydra [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black) +config: Hydra +Black +Slack +Black +Open In Colab +PyPI +Black +Black + +
    +
    -[![License: MIT](https://img.shields.io/badge/License-MIT-red.svg)](https://opensource.org/licenses/MIT) [![PyPI](https://img.shields.io/pypi/v/rl4co?logo=pypi)](https://pypi.org/project/rl4co) -[![Test](https://github.com/ai4co/rl4co/actions/workflows/tests.yml/badge.svg)](https://github.com/ai4co/rl4co/actions/workflows/tests.yml) + - +
    +An extensive Reinforcement Learning (RL) for Combinatorial Optimization (CO) benchmark. Our goal is to provide a unified framework for RL-based CO algorithms, and to facilitate reproducible research in this field, decoupling the science from the engineering. + + RL4CO is built upon: + - [TorchRL](https://github.com/pytorch/rl): official PyTorch framework for RL algorithms and vectorized environments on GPUs - [TensorDict](https://github.com/pytorch-labs/tensordict): a library to easily handle heterogeneous data such as states, actions and rewards - [PyTorch Lightning](https://github.com/Lightning-AI/lightning): a lightweight PyTorch wrapper for high-performance AI research - [Hydra](https://github.com/facebookresearch/hydra): a framework for elegantly configuring complex applications -image +![RL4CO-Overview](https://github.com/ai4co/rl4co/assets/48984123/0e409784-05a9-4799-b7aa-6c0f76ecf27f) + +We offer flexible and efficient implementations of the following policies: + +- **Constructive**: learn to construct a solution from scratch + - _Autoregressive (AR)_: construct solutions one step at a time via a decoder + - _NonAutoregressive (NAR)_: learn to predict a heuristic, such as a heatmap, to then construct a solution +- **Improvement**: learn to improve an pre-existing solution + +![RL4CO-Policy-Overview](https://github.com/ai4co/rl4co/assets/48984123/9e1f32f9-9884-49b9-b6cd-364861cc8fe7) + +We provide several utilities and modularization. For example, we modularize reusable components such as _environment embeddings_ that can easily be swapped to [solve new problems](https://github.com/ai4co/rl4co/blob/main/examples/3-creating-new-env-model.ipynb). + +![RL4CO-Env-Embeddings](https://github.com/ai4co/rl4co/assets/48984123/c47a9301-4c9f-43fd-b21f-761abeae9717) + + + +## Getting started +Open In Colab + +RL4CO is now available for installation on `pip`! +```bash +pip install rl4co +``` + +To get started, we recommend checking out our [quickstart notebook](examples/1-quickstart.ipynb) or the [minimalistic example](#minimalistic-example) below. + +### Install from source +This command installs the bleeding edge `main` version, useful for staying up-to-date with the latest developments - for instance, if a bug has been fixed since the last official release but a new release hasn’t been rolled out yet: + +```bash +pip install -U git+https://github.com/ai4co/rl4co.git +``` + +### Local install and development +If you want to develop RL4CO we recommend you to install it locally with `pip` in editable mode: + +```bash +git clone https://github.com/ai4co/rl4co && cd rl4co +pip install -e . +``` + +We recommend using a virtual environment such as `conda` to install `rl4co` locally. + + + +## Usage + + +Train model with default configuration (AM on TSP environment): +```bash +python run.py +``` + +!!! warning "" + + You may check out [this notebook](examples/advanced/1-hydra-config.ipynb) to get started with Hydra! + +
    + Change experiment settings + +Train model with chosen experiment configuration from [configs/experiment/](configs/experiment/) +```bash +python run.py experiment=routing/am env=tsp env.num_loc=50 model.optimizer_kwargs.lr=2e-4 +``` +Here you may change the environment, e.g. with `env=cvrp` by command line or by modifying the corresponding experiment e.g. [configs/experiment/routing/am.yaml](configs/experiment/routing/am.yaml). + +
    -```{eval-rst} -.. toctree:: - :maxdepth: 3 - :caption: Getting started - _content/start/installation - _collections/1-quickstart - _content/start/hydra - _content/api/models/common/__init__ +
    + Disable logging -.. toctree:: - :maxdepth: 3 - :caption: Tutorials +```bash +python run.py experiment=routing/am logger=none '~callbacks.learning_rate_monitor' +``` +Note that `~` is used to disable a callback that would need a logger. + +
    + + +
    + Create a sweep over hyperparameters (-m for multirun) + +```bash +python run.py -m experiment=routing/am model.optimizer.lr=1e-3,1e-4,1e-5 +``` +
    - _collections/2-full-training - _collections/3-creating-new-env-model - _collections/modeling/1-decoding-strategies - _collections/modeling/2-transductive-methods - _collections/modeling/3-change-encoder - _collections/advanced/1-hydra-config -.. toctree:: - :maxdepth: 3 - :caption: RL Algorithms - _content/api/algos/base - _content/api/algos/reinforce - _content/api/algos/a2c - _content/api/algos/ppo +### Minimalistic Example +Here is a minimalistic example training the Attention Model with greedy rollout baseline on TSP in less than 30 lines of code: -.. toctree:: - :maxdepth: 3 - :caption: Environments +```python +from rl4co.envs.routing import TSPEnv, TSPGenerator +from rl4co.models import AttentionModelPolicy, POMO +from rl4co.utils import RL4COTrainer - _content/api/envs/base - _content/api/envs/eda - _content/api/envs/routing - _content/api/envs/scheduling +# Instantiate generator and environment +generator = TSPGenerator(num_loc=50, loc_distribution="uniform") +env = TSPEnv(generator) -.. toctree:: - :maxdepth: 3 - :caption: Networks +# Create policy and RL model +policy = AttentionModelPolicy(env_name=env.name, num_encoder_layers=6) +model = POMO(env, policy, batch_size=64, optimizer_kwargs={"lr": 1e-4}) - _content/api/models/nn - _content/api/models/env_embeddings +# Instantiate Trainer and fit +trainer = RL4COTrainer(max_epochs=10, accelerator="gpu", precision="16-mixed") +trainer.fit(model) +``` -.. toctree:: - :maxdepth: 3 - :caption: Base NCO Methods +Other examples can be found on the [documentation](https://rl4co.readthedocs.io/en/latest/)! - _content/api/models/common/constructive - _content/api/models/common/improvement - _content/api/models/common/transductive +### Testing -.. toctree:: - :maxdepth: 3 - :caption: Model Zoo +Run tests with `pytest` from the root directory: - _content/api/models/common/zoo/__init__ - _content/api/models/common/zoo/constructive - _content/api/models/common/zoo/improvement - _content/api/models/common/zoo/transductive +```bash +pytest tests +``` -.. toctree:: - :maxdepth: 3 - :caption: Additional API +### Known Bugs - _content/api/tasks - _content/api/decoding - _content/api/data -.. toctree:: - :maxdepth: 3 - :caption: Other +#### Bugs installing PyTorch Geometric (PyG) - _content/general/contribute - _content/general/faq +Installing `PyG` via `Conda` seems to update Torch itself. We have found that this update introduces some bugs with `torchrl`. At this moment, we recommend installing `PyG` with `Pip`: +```bash +pip install torch_geometric ``` -## Contributors +## Contributing + +Have a suggestion, request, or found a bug? Feel free to [open an issue](https://github.com/ai4co/rl4co/issues) or [submit a pull request](https://github.com/ai4co/rl4co/pulls). +If you would like to contribute, please check out our contribution guidelines [here](.github/CONTRIBUTING.md). We welcome and look forward to all contributions to RL4CO! + +We are also on [Slack](https://join.slack.com/t/rl4co/shared_invite/zt-1ytz2c1v4-0IkQ8NQH4TRXIX8PrRmDhQ) if you have any questions or would like to discuss RL4CO with us. We are open to collaborations and would love to hear from you 🚀 + +### Contributors - \ No newline at end of file + + +## Citation +If you find RL4CO valuable for your research or applied projects: + +```bibtex +@article{berto2024rl4co, + title={{RL4CO: an Extensive Reinforcement Learning for Combinatorial Optimization Benchmark}}, + author={Federico Berto and Chuanbo Hua and Junyoung Park and Laurin Luttmann and Yining Ma and Fanchen Bu and Jiarui Wang and Haoran Ye and Minsu Kim and Sanghyeok Choi and Nayeli Gast Zepeda and Andr\'e Hottung and Jianan Zhou and Jieyi Bi and Yu Hu and Fei Liu and Hyeonah Kim and Jiwoo Son and Haeyeon Kim and Davide Angioni and Wouter Kool and Zhiguang Cao and Jie Zhang and Kijung Shin and Cathy Wu and Sungsoo Ahn and Guojie Song and Changhyun Kwon and Lin Xie and Jinkyoo Park}, + year={2024}, + journal={arXiv preprint arXiv:2306.17100}, + note={\url{https://github.com/ai4co/rl4co}} +} +``` + +Note that a [previous version of RL4CO](https://openreview.net/forum?id=YXSJxi8dOV) has been accepted as an oral presentation at the [NeurIPS 2023 GLFrontiers Workshop](https://glfrontiers.github.io/). Since then, the library has greatly evolved and improved! + +--- + + +## Join us +[![Slack](https://img.shields.io/badge/slack-chat-611f69.svg?logo=slack)](https://join.slack.com/t/rl4co/shared_invite/zt-1ytz2c1v4-0IkQ8NQH4TRXIX8PrRmDhQ) + +We invite you to join our AI4CO community, an open research group in Artificial Intelligence (AI) for Combinatorial Optimization (CO)! + + +
    + AI4CO Logo +
    + + diff --git a/docs/javascripts/autolink.js b/docs/javascripts/autolink.js new file mode 100644 index 00000000..30a295a5 --- /dev/null +++ b/docs/javascripts/autolink.js @@ -0,0 +1,34 @@ +const convertLinks = ( input ) => { + + let text = input; + const linksFound = text.match( /(?:www|https?)[^\s]+/g ); + const aLink = []; + + if ( linksFound != null ) { + + for ( let i=0; i' ) + } + else if ( linkText.match( /vimeo/ ) ) { + let vimeoID = replace.split( '/' ).slice(-1)[0]; + aLink.push( '
    ' ) + } + else { + aLink.push( '' + linkText + '' ); + } + text = text.split( linksFound[i] ).map(item => { return aLink[i].includes('iframe') ? item.trim() : item } ).join( aLink[i] ); + } + return text; + + } + else { + return input; + } + } \ No newline at end of file diff --git a/docs/javascripts/katex.js b/docs/javascripts/katex.js new file mode 100644 index 00000000..841e35ad --- /dev/null +++ b/docs/javascripts/katex.js @@ -0,0 +1,10 @@ +document$.subscribe(({ body }) => { + renderMathInElement(body, { + delimiters: [ + { left: "$$", right: "$$", display: true }, + { left: "$", right: "$", display: false }, + { left: "\\(", right: "\\)", display: false }, + { left: "\\[", right: "\\]", display: true } + ], + }) +}) \ No newline at end of file diff --git a/docs/make.bat b/docs/make.bat deleted file mode 100644 index 32bb2452..00000000 --- a/docs/make.bat +++ /dev/null @@ -1,35 +0,0 @@ -@ECHO OFF - -pushd %~dp0 - -REM Command file for Sphinx documentation - -if "%SPHINXBUILD%" == "" ( - set SPHINXBUILD=sphinx-build -) -set SOURCEDIR=. -set BUILDDIR=_build - -%SPHINXBUILD% >NUL 2>NUL -if errorlevel 9009 ( - echo. - echo.The 'sphinx-build' command was not found. Make sure you have Sphinx - echo.installed, then set the SPHINXBUILD environment variable to point - echo.to the full path of the 'sphinx-build' executable. Alternatively you - echo.may add the Sphinx directory to PATH. - echo. - echo.If you don't have Sphinx installed, grab it from - echo.https://www.sphinx-doc.org/ - exit /b 1 -) - -if "%1" == "" goto help - -%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O% -goto end - -:help -%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O% - -:end -popd diff --git a/docs/networks/environment_embeddings.md b/docs/networks/environment_embeddings.md new file mode 100644 index 00000000..e69de29b diff --git a/docs/networks/neural_network_modules.md b/docs/networks/neural_network_modules.md new file mode 100644 index 00000000..e69de29b diff --git a/docs/requirements.txt b/docs/requirements.txt deleted file mode 100644 index 627184b2..00000000 --- a/docs/requirements.txt +++ /dev/null @@ -1,22 +0,0 @@ -# Install with local version. Need to run from root of repo -.[graph] - -sphinx >6.0, <7.0 -myst-parser ==2.0.0 -nbsphinx >=0.8.5, <=0.8.9 -pandoc >=1.0, <=2.3 -docutils >=0.16, <0.20 -sphinxcontrib-fulltoc >=1.0, <=1.2.0 -sphinxcontrib-mockautodoc -sphinx-autobuild -sphinx-autodoc-typehints >=1.16 -sphinx-paramlinks >=0.5.1, <=0.5.4 -sphinx-togglebutton >=0.2, <=0.3.2 -sphinx-copybutton >=0.3, <=0.5.2 -sphinx-multiproject -sphinx-toolbox ==3.4.0 -sphinx-rtd-dark-mode -sphinxcontrib-video ==0.2.0 -jinja2 >=3.0.0,<3.2.0 -sphinxcontrib.katex==0.8.6 -sphinx-collections==0.0.1 \ No newline at end of file diff --git a/docs/stylesheets/extra.css b/docs/stylesheets/extra.css new file mode 100644 index 00000000..4709217f --- /dev/null +++ b/docs/stylesheets/extra.css @@ -0,0 +1,20 @@ +:root { + --md-primary-fg-color: #B92B0F; + --md-primary-fg-color--light: #F05F42; + --md-primary-fg-color--dark: #B92B0F; + } + +[data-md-color-accent=indigo] { + --md-accent-fg-color: #B92B0F; +} + +/* Ensure code blocks wrap text */ +.codehilite pre { + white-space: pre-wrap; /* Allow text to wrap within the pre element */ + word-break: break-word; /* Break the word at the edge of the container if necessary */ +} + +/* Improve overall readability of code by adding some padding */ +.codehilite { + padding: 8px; /* Adjust padding to fit your design */ +} \ No newline at end of file diff --git a/mkdocs.yml b/mkdocs.yml new file mode 100644 index 00000000..3a4d3363 --- /dev/null +++ b/mkdocs.yml @@ -0,0 +1,153 @@ +site_name: RL4CO Documentation +site_url: https://ai4co.github.io/rl4co/ +repo_name: ai4co/rl4co +repo_url: https://github.com/ai4co/rl4co/ +edit_uri: edit/main/docs +site_description: Official documentation for RL4CO + +theme: + name: material + logo: assets/figs/rl4co-logo.svg + favicon: assets/figs/rl4co-logo.svg + primary: red + features: + - content.code.copy + - content.code.annotate + - navigation.expand + - navigation.top + - content.tabs.link + - content.tooltips + - announce.dismiss + - navigation.instant + - navigation.instant.prefetch + - navigation.instant.preview + - navigation.instant.progress + - navigation.path + - navigation.sections + - navigation.top + - navigation.tracking + - search.suggest + - search.highlight + - toc.follow + palette: + - media: "(prefers-color-scheme)" + toggle: + icon: material/brightness-auto + name: Switch to light mode + - media: "(prefers-color-scheme: light)" + scheme: default + primary: "#5023df" # Changed to match the company logo color + accent: "#55c2ac" # Changed to match the company logo color + toggle: + icon: material/weather-sunny + name: Switch to dark mode + - media: "(prefers-color-scheme: dark)" + scheme: slate + primary: "#5023df" # Changed to match the company logo color + accent: "#55be75" # Changed to match the company logo color + toggle: + icon: material/weather-night + name: Switch to system preference + +extra_css: + - stylesheets/extra.css # Our custom CSS + - https://unpkg.com/katex@0/dist/katex.min.css # Latex math rendering + +extra_javascript: + - javascripts/katex.js # Latex math rendering + - https://unpkg.com/katex@0/dist/katex.min.js # Latex math rendering + - https://unpkg.com/katex@0/dist/contrib/auto-render.min.js # Latex math rendering + +extra: + version: + default: stable + +plugins: + - mike: + alias_type: symlink + canonical_version: latest + - mkdocstrings: + handlers: + python: + paths: [.] + options: + members_order: source + separate_signature: true + filters: ["!^_"] + docstring_options: + ignore_init_summary: true + merge_init_into_class: true + show_signature_annotations: true + signature_crossrefs: true + docstring_section_style: list + heading_level: 1 + inherited_members: true + merge_init_into_class: true + show_root_heading: true + show_root_full_path: false + show_source: false + show_signature_annotations: true + show_symbol_type_heading: true + show_symbol_type_toc: true + signature_crossrefs: true + summary: true + import: + - https://docs.python.org/3/objects.inv + - mkdocs-jupyter + - search + - autorefs + +markdown_extensions: + - pymdownx.details + - pymdownx.superfences + - pymdownx.arithmatex: + generic: true + - pymdownx.highlight: + pygments_lang_class: true + - pymdownx.inlinehilite + - pymdownx.snippets + - tables + - toc: + permalink: true + title: Page contents + - admonition + - pymdownx.extra + - pymdownx.emoji: + emoji_index: !!python/name:material.extensions.emoji.twemoji + emoji_generator: !!python/name:material.extensions.emoji.to_svg + - pymdownx.tabbed: + alternate_style: true + +nav: + - Getting Started: + - Installation: getting_started/installation.md + - Quick Start: examples/1-quickstart.ipynb + - Training with Hydra: getting_started/hydra.md + - NCO Methods: getting_started/nco_methods.md + - Tutorials: + - Training a Model: tutorials/training.md + - New Environment: tutorials/new_environment.md + - Decoding Strategies: tutorials/decoding.md + - Transductive Methods: tutorials/transductive.md + - Encoder Customization: tutorials/encoder.md + - Hydra Configuration: tutorials/hydra.md + - RL Algorithms: + - Base Algorithms: algorithms/base.md + - Reinforce: algorithms/rl.md + - PPO: algorithms/ppo.md + - A2C: algorithms/a2c.md + - Environments: + - Basic Environments: environments/basic.md + - EDA Problems: environments/eda.md + - Routing Problems: environments/routing.md + - Scheduling Problems: environments/scheduling.md + - Networks: + - Neural Network Modules: networks/neural_networks.md + - Environment Embeddings: networks/environment_embeddings.md + - Base NCO Methods: + - Constructive Policies: policies/constructive.md + - Improvement Policies: policies/improvement.md + - Additional APIs: + - Train and Evaluation: api/train_and_eval.md + - Decoding Strategies: api/decoding.md + - Data: api/data.md From 51d62fa6b6a34124744a0a2bfcdf8656474178dc Mon Sep 17 00:00:00 2001 From: Federico Berto Date: Tue, 9 Jul 2024 01:00:30 +0900 Subject: [PATCH 052/102] [Docs] some magic --- docs/content/algorithms/ppo.md | 1 + docs/{ => content}/api/train_and_eval.md | 0 docs/{ => content}/environments/basic.md | 0 docs/{ => content}/environments/eda.md | 0 docs/{ => content}/environments/routing.md | 0 docs/{ => content}/environments/scheduling.md | 0 .../networks/environment_embeddings.md | 0 .../networks/neural_network_modules.md | 0 docs/{javascripts => js}/autolink.js | 0 docs/{javascripts => js}/katex.js | 0 mkdocs.yml | 85 ++++++++++++------- .../ppo.md => rl4co/models/rl/ppo/__init__.py | 0 rl4co/models/rl/ppo/ppo.py | 4 +- 13 files changed, 55 insertions(+), 35 deletions(-) create mode 100644 docs/content/algorithms/ppo.md rename docs/{ => content}/api/train_and_eval.md (100%) rename docs/{ => content}/environments/basic.md (100%) rename docs/{ => content}/environments/eda.md (100%) rename docs/{ => content}/environments/routing.md (100%) rename docs/{ => content}/environments/scheduling.md (100%) rename docs/{ => content}/networks/environment_embeddings.md (100%) rename docs/{ => content}/networks/neural_network_modules.md (100%) rename docs/{javascripts => js}/autolink.js (100%) rename docs/{javascripts => js}/katex.js (100%) rename docs/algorithms/ppo.md => rl4co/models/rl/ppo/__init__.py (100%) diff --git a/docs/content/algorithms/ppo.md b/docs/content/algorithms/ppo.md new file mode 100644 index 00000000..aa0fa388 --- /dev/null +++ b/docs/content/algorithms/ppo.md @@ -0,0 +1 @@ +::: rl4co.models.rl.ppo.ppo \ No newline at end of file diff --git a/docs/api/train_and_eval.md b/docs/content/api/train_and_eval.md similarity index 100% rename from docs/api/train_and_eval.md rename to docs/content/api/train_and_eval.md diff --git a/docs/environments/basic.md b/docs/content/environments/basic.md similarity index 100% rename from docs/environments/basic.md rename to docs/content/environments/basic.md diff --git a/docs/environments/eda.md b/docs/content/environments/eda.md similarity index 100% rename from docs/environments/eda.md rename to docs/content/environments/eda.md diff --git a/docs/environments/routing.md b/docs/content/environments/routing.md similarity index 100% rename from docs/environments/routing.md rename to docs/content/environments/routing.md diff --git a/docs/environments/scheduling.md b/docs/content/environments/scheduling.md similarity index 100% rename from docs/environments/scheduling.md rename to docs/content/environments/scheduling.md diff --git a/docs/networks/environment_embeddings.md b/docs/content/networks/environment_embeddings.md similarity index 100% rename from docs/networks/environment_embeddings.md rename to docs/content/networks/environment_embeddings.md diff --git a/docs/networks/neural_network_modules.md b/docs/content/networks/neural_network_modules.md similarity index 100% rename from docs/networks/neural_network_modules.md rename to docs/content/networks/neural_network_modules.md diff --git a/docs/javascripts/autolink.js b/docs/js/autolink.js similarity index 100% rename from docs/javascripts/autolink.js rename to docs/js/autolink.js diff --git a/docs/javascripts/katex.js b/docs/js/katex.js similarity index 100% rename from docs/javascripts/katex.js rename to docs/js/katex.js diff --git a/mkdocs.yml b/mkdocs.yml index 3a4d3363..287290bd 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -1,9 +1,10 @@ -site_name: RL4CO Documentation +site_name: RL4CO site_url: https://ai4co.github.io/rl4co/ repo_name: ai4co/rl4co repo_url: https://github.com/ai4co/rl4co/ edit_uri: edit/main/docs site_description: Official documentation for RL4CO +copyright: Copyright © 2024 AI4CO theme: name: material @@ -54,7 +55,7 @@ extra_css: - https://unpkg.com/katex@0/dist/katex.min.css # Latex math rendering extra_javascript: - - javascripts/katex.js # Latex math rendering + - js/katex.js # Latex math rendering - https://unpkg.com/katex@0/dist/katex.min.js # Latex math rendering - https://unpkg.com/katex@0/dist/contrib/auto-render.min.js # Latex math rendering @@ -63,13 +64,10 @@ extra: default: stable plugins: - - mike: - alias_type: symlink - canonical_version: latest - mkdocstrings: handlers: python: - paths: [.] + paths: [rl4co] options: members_order: source separate_signature: true @@ -81,8 +79,7 @@ plugins: signature_crossrefs: true docstring_section_style: list heading_level: 1 - inherited_members: true - merge_init_into_class: true + inherited_members: false show_root_heading: true show_root_full_path: false show_source: false @@ -91,11 +88,22 @@ plugins: show_symbol_type_toc: true signature_crossrefs: true summary: true + extensions: + - griffe_typingdoc + - griffe_inherited_docstrings import: - https://docs.python.org/3/objects.inv + - https://pytorch.org/rl/stable/objects.inv + - https://pytorch.org/tensordict/stable/objects.inv + - https://pytorch.org/docs/stable/objects.inv + - https://lightning.ai/docs/pytorch/stable/objects.inv + - mike: + alias_type: symlink + canonical_version: latest - mkdocs-jupyter - search - autorefs + - autolinks markdown_extensions: - pymdownx.details @@ -106,6 +114,7 @@ markdown_extensions: pygments_lang_class: true - pymdownx.inlinehilite - pymdownx.snippets + - pymdownx.magiclink - tables - toc: permalink: true @@ -120,34 +129,44 @@ markdown_extensions: nav: - Getting Started: - - Installation: getting_started/installation.md - - Quick Start: examples/1-quickstart.ipynb - - Training with Hydra: getting_started/hydra.md - - NCO Methods: getting_started/nco_methods.md + - Installation: content/getting_started/installation.md + - Quick Start: content/examples/1-quickstart.ipynb + - Training with Hydra: content/getting_started/hydra.md + - NCO Methods: content/getting_started/nco_methods.md - Tutorials: - - Training a Model: tutorials/training.md - - New Environment: tutorials/new_environment.md - - Decoding Strategies: tutorials/decoding.md - - Transductive Methods: tutorials/transductive.md - - Encoder Customization: tutorials/encoder.md - - Hydra Configuration: tutorials/hydra.md + - Training a Model: content/tutorials/training.md + - New Environment: content/tutorials/new_environment.md + - Decoding Strategies: content/tutorials/decoding.md + - Transductive Methods: content/tutorials/transductive.md + - Encoder Customization: content/tutorials/encoder.md + - Hydra Configuration: content/tutorials/hydra.md - RL Algorithms: - - Base Algorithms: algorithms/base.md - - Reinforce: algorithms/rl.md - - PPO: algorithms/ppo.md - - A2C: algorithms/a2c.md + - Base Algorithms: content/algorithms/base.md + - Reinforce: content/algorithms/rl.md + - PPO: content/algorithms/ppo.md + - A2C: content/algorithms/a2c.md - Environments: - - Basic Environments: environments/basic.md - - EDA Problems: environments/eda.md - - Routing Problems: environments/routing.md - - Scheduling Problems: environments/scheduling.md + - Basic Environments: content/environments/basic.md + - EDA Problems: content/environments/eda.md + - Routing Problems: content/environments/routing.md + - Scheduling Problems: content/environments/scheduling.md - Networks: - - Neural Network Modules: networks/neural_networks.md - - Environment Embeddings: networks/environment_embeddings.md + - Neural Network Modules: content/networks/neural_networks.md + - Environment Embeddings: content/networks/environment_embeddings.md - Base NCO Methods: - - Constructive Policies: policies/constructive.md - - Improvement Policies: policies/improvement.md + - Constructive Policies: content/policies/constructive.md + - Improvement Policies: content/policies/improvement.md - Additional APIs: - - Train and Evaluation: api/train_and_eval.md - - Decoding Strategies: api/decoding.md - - Data: api/data.md + - Train and Evaluation: content/api/train_and_eval.md + - Decoding Strategies: content/api/decoding.md + - Data: content/api/data.md + + +extra: + social: + - icon: fontawesome/brands/github + link: https://github.com/ai4co + - icon: fontawesome/brands/slack + link: https://bit.ly/ai4co-slack + - icon: fontawesome/solid/globe + link: https://ai4co.org \ No newline at end of file diff --git a/docs/algorithms/ppo.md b/rl4co/models/rl/ppo/__init__.py similarity index 100% rename from docs/algorithms/ppo.md rename to rl4co/models/rl/ppo/__init__.py diff --git a/rl4co/models/rl/ppo/ppo.py b/rl4co/models/rl/ppo/ppo.py index f8078036..67cf8c34 100644 --- a/rl4co/models/rl/ppo/ppo.py +++ b/rl4co/models/rl/ppo/ppo.py @@ -32,9 +32,9 @@ class PPO(RL4COLitModule): The commonly implemented definition of policy entropy is the entropy of the policy distribution, given by: - .. math:: H(\\pi(x_t)) = - \\sum_{a_t \\in A_t} \\pi(a_t|x_t) \\log \\pi(a_t|x_t) + $$H(\\pi(x_t)) = - \\sum_{a_t \\in A_t} \\pi(a_t|x_t) \\log \\pi(a_t|x_t)$$ - where :math:`x_t` represents the given state at step :math:`t`, :math:`A_t` is the set of all (admisible) actions + where $x_t$ represents the given state at step :math:`t`, :math:`A_t` is the set of all (admisible) actions at step :math:`t`, and :math:`a_t` is the action taken at step :math:`t`. If we interpret autoregressive decoding steps as transition steps of an MDP, the entropy for the entire decoding From eaac36077a94b12da5516898bba3e4a21a828560 Mon Sep 17 00:00:00 2001 From: Federico Berto Date: Tue, 9 Jul 2024 01:03:25 +0900 Subject: [PATCH 053/102] [Docs] some magic --- mkdocs.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mkdocs.yml b/mkdocs.yml index 287290bd..41c0022e 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -4,7 +4,7 @@ repo_name: ai4co/rl4co repo_url: https://github.com/ai4co/rl4co/ edit_uri: edit/main/docs site_description: Official documentation for RL4CO -copyright: Copyright © 2024 AI4CO +copyright: Made with ❤️ by AI4CO contributors theme: name: material From 283d0730018e010e20ec7adfe975622ca5cf65db Mon Sep 17 00:00:00 2001 From: Chuanbo HUA Date: Sat, 20 Jul 2024 20:31:12 +0900 Subject: [PATCH 054/102] [Refactor] Clean up the content folder --- docs/content/environments/basic.md | 1 - mkdocs.yml | 60 ++++++++++++++---------------- 2 files changed, 27 insertions(+), 34 deletions(-) delete mode 100644 docs/content/environments/basic.md diff --git a/docs/content/environments/basic.md b/docs/content/environments/basic.md deleted file mode 100644 index 5e9fb0ef..00000000 --- a/docs/content/environments/basic.md +++ /dev/null @@ -1 +0,0 @@ -::: rl4co.envs.common.base \ No newline at end of file diff --git a/mkdocs.yml b/mkdocs.yml index 41c0022e..babc46de 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -129,44 +129,38 @@ markdown_extensions: nav: - Getting Started: - - Installation: content/getting_started/installation.md - - Quick Start: content/examples/1-quickstart.ipynb - - Training with Hydra: content/getting_started/hydra.md - - NCO Methods: content/getting_started/nco_methods.md + - Installation: content/start/installation.md + - Quick Start: ../examples/1-quickstart.ipynb + - Training with Hydra: content/start/hydra.md + - NCO Methods: content/api/models/common/__init__ - Tutorials: - - Training a Model: content/tutorials/training.md - - New Environment: content/tutorials/new_environment.md - - Decoding Strategies: content/tutorials/decoding.md - - Transductive Methods: content/tutorials/transductive.md - - Encoder Customization: content/tutorials/encoder.md - - Hydra Configuration: content/tutorials/hydra.md + - Training a Model: ../examples/2-full-training.ipynb + - New Environment: ../examples/3-creating-new-env-model.ipynb + - Decoding Strategies: ../examples/modeling/1-decoding-strategies + - Transductive Methods: ../examples/modeling/2-transductive-methods + - Encoder Customization: ../examples/modeling/3-change-encoder + - Hydra Configuration: ../examples/advanced/1-hydra-config - RL Algorithms: - - Base Algorithms: content/algorithms/base.md - - Reinforce: content/algorithms/rl.md - - PPO: content/algorithms/ppo.md - - A2C: content/algorithms/a2c.md + - Base Algorithms: content/api/algos/base.md + - Reinforce: content/api/algos/reinforce.md + - PPO: content/api/algos/ppo.md + - A2C: content/api/algos/a2c.md - Environments: - - Basic Environments: content/environments/basic.md - - EDA Problems: content/environments/eda.md - - Routing Problems: content/environments/routing.md - - Scheduling Problems: content/environments/scheduling.md + - Basic Environments: content/api/envs/base.md + - EDA Problems: content/api/envs/eda.md + - Routing Problems: content/api/envs/routing.md + - Scheduling Problems: content/api/envs/scheduling.md - Networks: - - Neural Network Modules: content/networks/neural_networks.md - - Environment Embeddings: content/networks/environment_embeddings.md + - Neural Network Modules: content/api/models/nn.md + - Environment Embeddings: content/api/models/env_embeddings.md - Base NCO Methods: - - Constructive Policies: content/policies/constructive.md - - Improvement Policies: content/policies/improvement.md + - Constructive Policies: content/api/models/common/zoo/constructive.md + - Improvement Policies: content/api/models/common/zoo/improvement.md + - Transductive Models: content/api/models/common/zoo/transductive.md - Additional APIs: - - Train and Evaluation: content/api/train_and_eval.md + - Train and Evaluation: content/api/tasks.md - Decoding Strategies: content/api/decoding.md - Data: content/api/data.md - - -extra: - social: - - icon: fontawesome/brands/github - link: https://github.com/ai4co - - icon: fontawesome/brands/slack - link: https://bit.ly/ai4co-slack - - icon: fontawesome/solid/globe - link: https://ai4co.org \ No newline at end of file + - Other: + - Contributing to RL4CO: content/general/contribute.md + - FAQ: content/general/faq.md From be58f0ac11fa87beb3a1537088dd8ccb9f01a7bb Mon Sep 17 00:00:00 2001 From: Chuanbo HUA Date: Sat, 20 Jul 2024 20:31:43 +0900 Subject: [PATCH 055/102] [Minor] Sync with social links --- mkdocs.yml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/mkdocs.yml b/mkdocs.yml index babc46de..fdae23c0 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -164,3 +164,12 @@ nav: - Other: - Contributing to RL4CO: content/general/contribute.md - FAQ: content/general/faq.md + +extra: + social: + - icon: fontawesome/brands/github + link: https://github.com/ai4co + - icon: fontawesome/brands/slack + link: https://bit.ly/ai4co-slack + - icon: fontawesome/solid/globe + link: https://ai4co.org \ No newline at end of file From d684487525623b57323cc7c5967f036927554e63 Mon Sep 17 00:00:00 2001 From: Chuanbo HUA Date: Sat, 20 Jul 2024 20:32:05 +0900 Subject: [PATCH 056/102] [Feat] Follow previous RL4CO doc content structure --- docs/content/api/algos/a2c.md | 9 + docs/content/api/algos/base.md | 1 + docs/content/api/algos/ppo.md | 11 + docs/content/api/algos/reinforce.md | 17 ++ docs/content/api/data.md | 33 +++ docs/content/api/decoding.md | 7 + docs/content/api/envs/base.md | 21 ++ docs/content/api/envs/eda.md | 30 +++ docs/content/api/envs/routing.md | 139 +++++++++++ docs/content/api/envs/scheduling.md | 29 +++ docs/content/api/models/common/__init__.md | 54 +++++ .../content/api/models/common/constructive.md | 71 ++++++ docs/content/api/models/common/improvement.md | 3 + .../content/api/models/common/transductive.md | 19 ++ docs/content/api/models/env_embeddings.md | 47 ++++ docs/content/api/models/nn.md | 60 +++++ docs/content/api/models/zoo/__init__.md | 3 + docs/content/api/models/zoo/constructive.md | 215 ++++++++++++++++++ docs/content/api/models/zoo/improvement.md | 5 + docs/content/api/models/zoo/transductive.md | 31 +++ docs/content/api/tasks.md | 17 ++ docs/content/general/contribute.md | 14 ++ docs/content/general/faq.md | 4 + docs/content/start/hydra.md | 43 ++++ docs/content/start/installation.md | 22 ++ 25 files changed, 905 insertions(+) create mode 100644 docs/content/api/algos/a2c.md create mode 100644 docs/content/api/algos/base.md create mode 100644 docs/content/api/algos/ppo.md create mode 100644 docs/content/api/algos/reinforce.md create mode 100644 docs/content/api/data.md create mode 100644 docs/content/api/decoding.md create mode 100644 docs/content/api/envs/base.md create mode 100644 docs/content/api/envs/eda.md create mode 100644 docs/content/api/envs/routing.md create mode 100644 docs/content/api/envs/scheduling.md create mode 100644 docs/content/api/models/common/__init__.md create mode 100644 docs/content/api/models/common/constructive.md create mode 100644 docs/content/api/models/common/improvement.md create mode 100644 docs/content/api/models/common/transductive.md create mode 100644 docs/content/api/models/env_embeddings.md create mode 100644 docs/content/api/models/nn.md create mode 100644 docs/content/api/models/zoo/__init__.md create mode 100644 docs/content/api/models/zoo/constructive.md create mode 100644 docs/content/api/models/zoo/improvement.md create mode 100644 docs/content/api/models/zoo/transductive.md create mode 100644 docs/content/api/tasks.md create mode 100644 docs/content/general/contribute.md create mode 100644 docs/content/general/faq.md create mode 100644 docs/content/start/hydra.md create mode 100644 docs/content/start/installation.md diff --git a/docs/content/api/algos/a2c.md b/docs/content/api/algos/a2c.md new file mode 100644 index 00000000..731f48bc --- /dev/null +++ b/docs/content/api/algos/a2c.md @@ -0,0 +1,9 @@ +# A2C + +## A2C (Advantage Actor Critic) + +```{eval-rst} +.. automodule:: rl4co.models.rl.a2c.a2c + :members: + :undoc-members: +``` diff --git a/docs/content/api/algos/base.md b/docs/content/api/algos/base.md new file mode 100644 index 00000000..5702ef87 --- /dev/null +++ b/docs/content/api/algos/base.md @@ -0,0 +1 @@ +::: rl4co.models.rl.common.base \ No newline at end of file diff --git a/docs/content/api/algos/ppo.md b/docs/content/api/algos/ppo.md new file mode 100644 index 00000000..d99fd1d3 --- /dev/null +++ b/docs/content/api/algos/ppo.md @@ -0,0 +1,11 @@ +# PPO + + +## PPO (Proximal Policy Optimization) + + +```{eval-rst} +.. automodule:: rl4co.models.rl.ppo.ppo + :members: + :undoc-members: +``` \ No newline at end of file diff --git a/docs/content/api/algos/reinforce.md b/docs/content/api/algos/reinforce.md new file mode 100644 index 00000000..ea8070b1 --- /dev/null +++ b/docs/content/api/algos/reinforce.md @@ -0,0 +1,17 @@ +# Reinforce + +## REINFORCE + +```{eval-rst} +.. automodule:: rl4co.models.rl.reinforce.reinforce + :members: + :undoc-members: +``` + +## Baselines + +```{eval-rst} +.. automodule:: rl4co.models.rl.reinforce.baselines + :members: + :undoc-members: +``` \ No newline at end of file diff --git a/docs/content/api/data.md b/docs/content/api/data.md new file mode 100644 index 00000000..87690422 --- /dev/null +++ b/docs/content/api/data.md @@ -0,0 +1,33 @@ +# Data + +## Datasets + +```{eval-rst} +.. automodule:: rl4co.data.dataset + :members: + :undoc-members: +``` + +## Data Generation + +```{eval-rst} +.. automodule:: rl4co.data.generate_data + :members: + :undoc-members: +``` + +## Transforms + +```{eval-rst} +.. automodule:: rl4co.data.transforms + :members: + :undoc-members: +``` + +## Utils + +```{eval-rst} +.. automodule:: rl4co.data.utils + :members: + :undoc-members: +``` \ No newline at end of file diff --git a/docs/content/api/decoding.md b/docs/content/api/decoding.md new file mode 100644 index 00000000..1ba9470b --- /dev/null +++ b/docs/content/api/decoding.md @@ -0,0 +1,7 @@ +# Decoding Strategies + +```{eval-rst} +.. automodule:: rl4co.utils.decoding + :members: + :undoc-members: +``` diff --git a/docs/content/api/envs/base.md b/docs/content/api/envs/base.md new file mode 100644 index 00000000..30e1a190 --- /dev/null +++ b/docs/content/api/envs/base.md @@ -0,0 +1,21 @@ +# Base Environment + +## `RL4COEnvBase` + +This is the base wrapper around TorchRL's `EnvBase`, with additional functionality. + +```{eval-rst} +.. automodule:: rl4co.envs.common.base + :members: + :undoc-members: +``` + +## Utilities + +These contain utilities such as the base `Generator` class and `get_sampler`. + +```{eval-rst} +.. automodule:: rl4co.envs.common.utils + :members: + :undoc-members: +``` \ No newline at end of file diff --git a/docs/content/api/envs/eda.md b/docs/content/api/envs/eda.md new file mode 100644 index 00000000..d89568b1 --- /dev/null +++ b/docs/content/api/envs/eda.md @@ -0,0 +1,30 @@ +# EDA Problems +Environment for Electronic Design Automation (EDA) problems + +## Decap Placement Problem (DPP) + +```{eval-rst} +.. automodule:: rl4co.envs.eda.dpp.env + :members: + :undoc-members: +``` + +```{eval-rst} +.. automodule:: rl4co.envs.eda.dpp.generator + :members: + :undoc-members: +``` + +## Multi-port Decap Placement Problem (mDPP) + +```{eval-rst} +.. automodule:: rl4co.envs.eda.mdpp.env + :members: + :undoc-members: +``` + +```{eval-rst} +.. automodule:: rl4co.envs.eda.mdpp.generator + :members: + :undoc-members: +``` diff --git a/docs/content/api/envs/routing.md b/docs/content/api/envs/routing.md new file mode 100644 index 00000000..2ee370cb --- /dev/null +++ b/docs/content/api/envs/routing.md @@ -0,0 +1,139 @@ +# Routing Problems + +See also the [Multi-Task VRP](#Multi-Task-Vehicle-Routing-Problem-(MTVRP)) at the bottom of this page, that includes 16 variants! + + + +## Asymmetric Traveling Salesman Problem (ATSP) + +```{eval-rst} +.. automodule:: rl4co.envs.routing.atsp.env + :members: + :undoc-members: +``` + +```{eval-rst} +.. automodule:: rl4co.envs.routing.atsp.generator + :members: + :undoc-members: +``` + +## Capacitated Vehicle Routing Problem (CVRP) + +```{eval-rst} +.. automodule:: rl4co.envs.routing.cvrp.env + :members: + :undoc-members: +``` + +```{eval-rst} +.. automodule:: rl4co.envs.routing.cvrp.generator + :members: + :undoc-members: +``` + +## Multiple Traveling Salesman Problem (mTSP) + +```{eval-rst} +.. automodule:: rl4co.envs.routing.mtsp.env + :members: + :undoc-members: +``` + +```{eval-rst} +.. automodule:: rl4co.envs.routing.mtsp.generator + :members: + :undoc-members: +``` + + +## Orienteering Problem (OP) + +```{eval-rst} +.. automodule:: rl4co.envs.routing.op.env + :members: + :undoc-members: +``` + +```{eval-rst} +.. automodule:: rl4co.envs.routing.op.generator + :members: + :undoc-members: +``` + +## Pickup and Delivery Problem (PDP) + +```{eval-rst} +.. automodule:: rl4co.envs.routing.pdp.env + :members: + :undoc-members: +``` + +```{eval-rst} +.. automodule:: rl4co.envs.routing.pdp.generator + :members: + :undoc-members: +``` + +## Prize Collecting Traveling Salesman Problem (PCTSP) + +```{eval-rst} +.. automodule:: rl4co.envs.routing.pctsp.env + :members: + :undoc-members: +``` + +```{eval-rst} +.. automodule:: rl4co.envs.routing.pctsp.generator + :members: + :undoc-members: +``` + +## Split Delivery Vehicle Routing Problem (SDVRP) + +```{eval-rst} +.. automodule:: rl4co.envs.routing.sdvrp.env + :members: + :undoc-members: +``` +``` + +## Stochastic Prize Collecting Traveling Salesman Problem (SPCTSP) + +```{eval-rst} +.. automodule:: rl4co.envs.routing.spctsp.env + :members: + :undoc-members: +``` +``` + +## Traveling Salesman Problem (TSP) + +```{eval-rst} +.. automodule:: rl4co.envs.routing.tsp.env + :members: + :undoc-members: +``` + +```{eval-rst} +.. automodule:: rl4co.envs.routing.tsp.generator + :members: + :undoc-members: +``` + +--- + + +## Multi-Task Vehicle Routing Problem (MTVRP) + + + +```{eval-rst} +.. automodule:: rl4co.envs.routing.mtvrp.env + :members: + :undoc-members: + +.. automodule:: rl4co.envs.routing.mtvrp.generator + :members: + :undoc-members: +``` \ No newline at end of file diff --git a/docs/content/api/envs/scheduling.md b/docs/content/api/envs/scheduling.md new file mode 100644 index 00000000..46edb20d --- /dev/null +++ b/docs/content/api/envs/scheduling.md @@ -0,0 +1,29 @@ +# Scheduling Problems + +## Flexible Flow Shop Problem (FFSP) + +```{eval-rst} +.. automodule:: rl4co.envs.scheduling.ffsp.env + :members: + :undoc-members: +``` + +```{eval-rst} +.. automodule:: rl4co.envs.scheduling.ffsp.generator + :members: + :undoc-members: +``` + +## Single Machine Total Weighted Tardiness Problem (SMTWTP) + +```{eval-rst} +.. automodule:: rl4co.envs.scheduling.smtwtp.env + :members: + :undoc-members: +``` + +```{eval-rst} +.. automodule:: rl4co.envs.scheduling.smtwtp.generator + :members: + :undoc-members: +``` \ No newline at end of file diff --git a/docs/content/api/models/common/__init__.md b/docs/content/api/models/common/__init__.md new file mode 100644 index 00000000..bba01830 --- /dev/null +++ b/docs/content/api/models/common/__init__.md @@ -0,0 +1,54 @@ +# NCO Methods Overview + + +We categorize NCO approaches (which are in fact not necessarily trained with RL!) into the following: 1) constructive, 2) improvement, 3) transductive. + + + +```{eval-rst} +.. tip:: + Note that in RL4CO we distinguish the RL algorithms and the actors via the following naming: + + * **Model:** Refers to the reinforcement learning algorithm encapsulated within a `LightningModule`. This module is responsible for training the policy. + * **Policy:** Implemented as a `nn.Module`, this neural network (often referred to as the *actor*) takes an instance and outputs a sequence of actions, :math:`\pi = \pi_0, \pi_1, \dots, \pi_N`, which constitutes the solution. + + Here, :math:`\pi_i` represents the action taken at step :math:`i`, forming a sequence that leads to the optimal or near-optimal solution for the given instance. +``` + + +The following table contains the categorization that we follow in RL4CO: + + +```{eval-rst} +.. list-table:: Overview of RL Models and Policies + :widths: 5 5 5 5 25 + :header-rows: 1 + :stub-columns: 1 + + * - Category + - Model or Policy? + - Input + - Output + - Description + * - `Constructive `_ + - Policy + - Instance + - Solution + - Policies trained to generate solutions from scratch. Can be categorized into AutoRegressive (AR) and Non-Autoregressive (NAR). + * - `Improvement `_ + - Policy + - Instance, Current Solution + - Improved Solution + - Policies trained to improve existing solutions iteratively, akin to local search algorithms. They focus on refining *existing* solutions rather than generating them from scratch. + * - `Transductive `_ + - Model + - Instance, (Policy) + - Solution, (Updated Policy) + - Updates policy parameters during online testing to improve solutions of a specific instance. +``` + + + + + + diff --git a/docs/content/api/models/common/constructive.md b/docs/content/api/models/common/constructive.md new file mode 100644 index 00000000..4b3d0e82 --- /dev/null +++ b/docs/content/api/models/common/constructive.md @@ -0,0 +1,71 @@ +## Constructive Policies + +Constructive NCO policies pre-train a policy to amortize the inference. "Constructive" means that a solution is created from scratch by the model. We can also categorize constructive NCO in two sub-categories depending on the role of encoder and decoder: + +#### Autoregressive (AR) +Autoregressive approaches **use a learned decoder** that outputs log probabilities for the current solution. These approaches generate a solution step by step, similar to e.g. LLMs. They have an encoder-decoder structure. Some models may not have an encoder at all and just re-encode at each step. + +#### NonAutoregressive (NAR) +The difference between AR and NAR approaches is that NAR **only an encoder is learnable** (they just encode in one shot) and generate for example a heatmap, which can then be decoded simply by using it as a probability distribution or by using some search method on top. + +Here is a general structure of a general constructive policy with an encoder-decoder structure: + +policy + + +where _embeddings_ transfer information from feature space to embedding space. + +--- + + + +### Constructive Policy Base Classes + +```{eval-rst} +.. automodule:: rl4co.models.common.constructive.base + :members: + :undoc-members: +``` + + + +### Autoregressive Policies Base Classes + +```{eval-rst} +.. automodule:: rl4co.models.common.constructive.autoregressive.encoder + :members: + :undoc-members: +``` + +```{eval-rst} +.. automodule:: rl4co.models.common.constructive.autoregressive.decoder + :members: + :undoc-members: +``` + +```{eval-rst} +.. automodule:: rl4co.models.common.constructive.autoregressive.policy + :members: + :undoc-members: +``` + +### Nonautoregressive Policies Base Classes + + +```{eval-rst} +.. automodule:: rl4co.models.common.constructive.nonautoregressive.encoder + :members: + :undoc-members: +``` + +```{eval-rst} +.. automodule:: rl4co.models.common.constructive.nonautoregressive.decoder + :members: + :undoc-members: +``` + +```{eval-rst} +.. automodule:: rl4co.models.common.constructive.nonautoregressive.policy + :members: + :undoc-members: +``` diff --git a/docs/content/api/models/common/improvement.md b/docs/content/api/models/common/improvement.md new file mode 100644 index 00000000..80543b2a --- /dev/null +++ b/docs/content/api/models/common/improvement.md @@ -0,0 +1,3 @@ +## Improvement Policies + +These methods differ w.r.t. constructive NCO since they can obtain better solutions similarly to how local search algorithms work - they can improve the solutions over time. This is different from decoding strategies or similar in constructive methods since these policies are trained for performing improvement operations. diff --git a/docs/content/api/models/common/transductive.md b/docs/content/api/models/common/transductive.md new file mode 100644 index 00000000..6c14c036 --- /dev/null +++ b/docs/content/api/models/common/transductive.md @@ -0,0 +1,19 @@ +# Transductive Models + + +Transductive models are learning algorithms that optimize on a specific instance. They improve solutions by updating policy parameters $\theta$_, which means that we are running optimization (backprop) **at test time**. Transductive learning can be performed with different policies: for example EAS updates (a part of) AR policies parameters to obtain better solutions, but I guess there are ways (or papers out there I don't know of) that optimize at test time. + + +```{eval-rst} +.. tip:: + You may refer to the definition of `inductive vs transductive RL `_. In inductive RL, we train to generalize to new instances. In transductive RL we train (or finetune) to solve only specific ones. +``` + + +## Base Transductive Model + +```{eval-rst} +.. automodule:: rl4co.models.common.transductive.base + :members: + :undoc-members: +``` \ No newline at end of file diff --git a/docs/content/api/models/env_embeddings.md b/docs/content/api/models/env_embeddings.md new file mode 100644 index 00000000..9d70ae6b --- /dev/null +++ b/docs/content/api/models/env_embeddings.md @@ -0,0 +1,47 @@ +# Environment Embeddings + +In autoregressive policies, environment embeddings transfer data from feature space to hidden space: + +- Initial Embeddings: encode global problem features +- Context Embeddings: modify current node embedding during decoding +- Dynamic Embeddings: modify all nodes embeddings during decoding + +policy + + + + +## Context Embeddings + +The context embedding is used to modify the query embedding of the problem node of the current partial solution. Usually consists of a projection of gathered node embeddings and features to the embedding space. + + +```{eval-rst} +.. automodule:: rl4co.models.nn.env_embeddings.context + :members: + :undoc-members: +``` + +--- + +## Dynamic Embeddings + +The dynamic embedding is used to modify query, key and value vectors of the attention mechanism based on the current state of the environment (which is changing during the rollout). Generally consists of a linear layer that projects the node features to the embedding space. + +```{eval-rst} +.. automodule:: rl4co.models.nn.env_embeddings.dynamic + :members: + :undoc-members: +``` + +--- + +## Init Embeddings + +The init embedding is used to initialize the general embedding of the problem nodes without any solution information. Generally consists of a linear layer that projects the node features to the embedding space. + +```{eval-rst} +.. automodule:: rl4co.models.nn.env_embeddings.init + :members: + :undoc-members: +``` \ No newline at end of file diff --git a/docs/content/api/models/nn.md b/docs/content/api/models/nn.md new file mode 100644 index 00000000..ba5fa86b --- /dev/null +++ b/docs/content/api/models/nn.md @@ -0,0 +1,60 @@ +# Neural Network Modules + +## Critic Network + +```{eval-rst} +.. automodule:: rl4co.models.rl.common.critic + :members: + :undoc-members: +``` + +## Graph Neural Networks + +### Graph Attention Encoder + +```{eval-rst} +.. automodule:: rl4co.models.nn.graph.attnnet + :members: + :undoc-members: +``` + +### Graph Convolutional Encoder + +```{eval-rst} +.. automodule:: rl4co.models.nn.graph.gcn + :members: + :undoc-members: +``` + +### Message Passing Encoder + +```{eval-rst} +.. automodule:: rl4co.models.nn.graph.mpnn + :members: + :undoc-members: +``` + +## rl4co.models.nn.attention + +```{eval-rst} +.. automodule:: rl4co.models.nn.attention + :members: + :undoc-members: +``` + + +## rl4co.models.nn.mlp + +```{eval-rst} +.. automodule:: rl4co.models.nn.mlp + :members: + :undoc-members: +``` + +## rl4co.models.nn.ops + +```{eval-rst} +.. automodule:: rl4co.models.nn.ops + :members: + :undoc-members: +``` \ No newline at end of file diff --git a/docs/content/api/models/zoo/__init__.md b/docs/content/api/models/zoo/__init__.md new file mode 100644 index 00000000..dee807f8 --- /dev/null +++ b/docs/content/api/models/zoo/__init__.md @@ -0,0 +1,3 @@ +# Model Zoo + +Models from the literature and contributions are contained in the Model Zoo. \ No newline at end of file diff --git a/docs/content/api/models/zoo/constructive.md b/docs/content/api/models/zoo/constructive.md new file mode 100644 index 00000000..4a1b1993 --- /dev/null +++ b/docs/content/api/models/zoo/constructive.md @@ -0,0 +1,215 @@ +# Constructive Methods + +These can be classified into Auto-Regressive (AR) and Non-Auto-Regressive (NAR) policies. These constructive methods also include ad-hoc RL algorithms for constructive policies. + +# AutoRegressive + +## Attention Model (AM) + +```{eval-rst} +.. automodule:: rl4co.models.zoo.am.model + :members: + :undoc-members: +``` + +```{eval-rst} +.. automodule:: rl4co.models.zoo.am.policy + :members: + :undoc-members: +``` + +## Attention Model - PPO (AM-PPO) + +```{eval-rst} +.. automodule:: rl4co.models.zoo.amppo.model + :members: + :undoc-members: +``` + + + +## Heterogeneous Attention Model (HAM) + +```{eval-rst} +.. automodule:: rl4co.models.zoo.ham.model + :members: + :undoc-members: +``` + +```{eval-rst} +.. automodule:: rl4co.models.zoo.ham.policy + :members: + :undoc-members: +``` + +```{eval-rst} +.. automodule:: rl4co.models.zoo.ham.encoder + :members: + :undoc-members: +``` + +```{eval-rst} +.. automodule:: rl4co.models.zoo.ham.attention + :members: + :undoc-members: +``` + + +## Matrix Encoding Network (MatNet) + +```{eval-rst} +.. automodule:: rl4co.models.zoo.matnet.model + :members: + :undoc-members: +``` + +```{eval-rst} +.. automodule:: rl4co.models.zoo.matnet.policy + :members: + :undoc-members: +``` + +```{eval-rst} +.. automodule:: rl4co.models.zoo.matnet.encoder + :members: + :undoc-members: +``` + +```{eval-rst} +.. automodule:: rl4co.models.zoo.matnet.decoder + :members: + :undoc-members: +``` + + +## Multi-Decoder Attention Model (MDAM) + +```{eval-rst} +.. automodule:: rl4co.models.zoo.mdam.model + :members: + :undoc-members: +``` + +```{eval-rst} +.. automodule:: rl4co.models.zoo.mdam.policy + :members: + :undoc-members: +``` + +```{eval-rst} +.. automodule:: rl4co.models.zoo.mdam.encoder + :members: + :undoc-members: +``` + +```{eval-rst} +.. automodule:: rl4co.models.zoo.mdam.decoder + :members: + :undoc-members: +``` + +## POMO + +```{eval-rst} +.. automodule:: rl4co.models.zoo.pomo.model + :members: + :undoc-members: +``` + +## Pointer Network (PtrNet) + +```{eval-rst} +.. automodule:: rl4co.models.zoo.ptrnet.model + :members: + :undoc-members: +``` + +```{eval-rst} +.. automodule:: rl4co.models.zoo.ptrnet.policy + :members: + :undoc-members: +``` + +```{eval-rst} +.. automodule:: rl4co.models.zoo.ptrnet.encoder + :members: + :undoc-members: +``` + +```{eval-rst} +.. automodule:: rl4co.models.zoo.ptrnet.decoder + :members: + :undoc-members: +``` + +```{eval-rst} +.. automodule:: rl4co.models.zoo.ptrnet.critic + :members: + :undoc-members: +``` + +## SymNCO + +```{eval-rst} +.. automodule:: rl4co.models.zoo.symnco.model + :members: + :undoc-members: +``` + +```{eval-rst} +.. automodule:: rl4co.models.zoo.symnco.policy + :members: + :undoc-members: +``` + +```{eval-rst} +.. automodule:: rl4co.models.zoo.symnco.losses + :members: + :undoc-members: +``` + +--- + +# NonAutoregressive + + +## DeepACO + +```{eval-rst} +.. automodule:: rl4co.models.zoo.deepaco.antsystem + :members: + :undoc-members: +``` + +```{eval-rst} +.. automodule:: rl4co.models.zoo.deepaco.model + :members: + :undoc-members: +``` + +```{eval-rst} +.. automodule:: rl4co.models.zoo.deepaco.policy + :members: + :undoc-members: +``` + +```{eval-rst} +.. automodule:: rl4co.models.zoo.deepaco.decoder + :members: + :undoc-members: +``` + + +## NAR-GNN + +```{eval-rst} +.. automodule:: rl4co.models.zoo.nargnn.policy + :members: + :undoc-members: +``` + +```{eval-rst} +.. automodule:: rl4co.models.zoo.nargnn.encoder + :members: + :undoc-members: +``` \ No newline at end of file diff --git a/docs/content/api/models/zoo/improvement.md b/docs/content/api/models/zoo/improvement.md new file mode 100644 index 00000000..eda6ca2c --- /dev/null +++ b/docs/content/api/models/zoo/improvement.md @@ -0,0 +1,5 @@ +# Improvement Methods + +These methods are trained to improve existing solutions iteratively, akin to local search algorithms. They focus on refining existing solutions rather than generating them from scratch. + +_coming soon!_ \ No newline at end of file diff --git a/docs/content/api/models/zoo/transductive.md b/docs/content/api/models/zoo/transductive.md new file mode 100644 index 00000000..b4e0bbbb --- /dev/null +++ b/docs/content/api/models/zoo/transductive.md @@ -0,0 +1,31 @@ +# Transductive Methods + +These methods update policy parameters during online testing to improve the solutions of a specific instance. + +## Active Search (AS) + +```{eval-rst} +.. automodule:: rl4co.models.zoo.active_search.search + :members: + :undoc-members: +``` + +## Efficent Active Search (EAS) + +```{eval-rst} +.. automodule:: rl4co.models.zoo.eas.search + :members: + :undoc-members: +``` + +```{eval-rst} +.. automodule:: rl4co.models.zoo.eas.decoder + :members: + :undoc-members: +``` + +```{eval-rst} +.. automodule:: rl4co.models.zoo.eas.nn + :members: + :undoc-members: +``` \ No newline at end of file diff --git a/docs/content/api/tasks.md b/docs/content/api/tasks.md new file mode 100644 index 00000000..53bb82a0 --- /dev/null +++ b/docs/content/api/tasks.md @@ -0,0 +1,17 @@ +# Tasks: Train and Evaluate + +## Train + +```{eval-rst} +.. automodule:: rl4co.tasks.train + :members: + :undoc-members: +``` + +## Evaluate + +```{eval-rst} +.. automodule:: rl4co.tasks.eval + :members: + :undoc-members: +``` \ No newline at end of file diff --git a/docs/content/general/contribute.md b/docs/content/general/contribute.md new file mode 100644 index 00000000..95ae1f54 --- /dev/null +++ b/docs/content/general/contribute.md @@ -0,0 +1,14 @@ +# Contributing to RL4CO + +[![Slack](https://img.shields.io/badge/slack-chat-611f69.svg?logo=slack)](https://join.slack.com/t/rl4co/shared_invite/zt-1ytz2c1v4-0IkQ8NQH4TRXIX8PrRmDhQ) + +Have a suggestion, request, or found a bug? Feel free to [open an issue](https://github.com/ai4co/rl4co/issues) or [submit a pull request](https://github.com/ai4co/rl4co/pulls). +If you would like to contribute, please check out our contribution guidelines [here](.github/CONTRIBUTING.md). We welcome and look forward to all contributions to RL4CO! + +We are also on [Slack](https://join.slack.com/t/rl4co/shared_invite/zt-1ytz2c1v4-0IkQ8NQH4TRXIX8PrRmDhQ) if you have any questions or would like to discuss RL4CO with us. We are open to collaborations and would love to hear from you 🚀 + + +## Contributors + + + \ No newline at end of file diff --git a/docs/content/general/faq.md b/docs/content/general/faq.md new file mode 100644 index 00000000..e16ceaca --- /dev/null +++ b/docs/content/general/faq.md @@ -0,0 +1,4 @@ +# FAQ + +You can submit your questions via GitHub Issues. If asked more than a few times, a question will have its answer added here. If you are looking for collaborations, we would be happy to hear from you on [Slack](https://join.slack.com/t/rl4co/shared_invite/zt-1ytz2c1v4-0IkQ8NQH4TRXIX8PrRmDhQ) 🚀 + diff --git a/docs/content/start/hydra.md b/docs/content/start/hydra.md new file mode 100644 index 00000000..c34d570c --- /dev/null +++ b/docs/content/start/hydra.md @@ -0,0 +1,43 @@ +# Training with Hydra Configuration + +You may find Hydra configurations under [configs/](configs/) divided into categories (model, env, train, experiment, etc.). + +## Usage + +Train model with default configuration (AM on TSP environment): +```bash +python run.py +``` + +!!! tip + You may check out [this notebook](examples/advanced/1-hydra-config.ipynb) to get started with Hydra! + + +### Change experiment + +Train model with chosen experiment configuration from [configs/experiment/](configs/experiment/) +```bash +python run.py experiment=routing/am env=tsp env.generator_params.num_loc=50 model.optimizer_kwargs.lr=2e-4 +``` +Here you may change the environment, e.g. with `env=cvrp` by command line or by modifying the corresponding experiment e.g. [configs/experiment/routing/am.yaml](configs/experiment/routing/am.yaml). + + + +### Disable logging + +```bash +python run.py experiment=test/am logger=none '~callbacks.learning_rate_monitor' +``` +Note that `~` is used to disable a callback that would need a logger. + + +### Create a sweep over hyperparameters + +We can use -m for multirun: + +```bash +python run.py -m experiment=routing/am model.optimizer_kwargs.lr=1e-3,1e-4,1e-5 +``` +``` + + diff --git a/docs/content/start/installation.md b/docs/content/start/installation.md new file mode 100644 index 00000000..bd31455b --- /dev/null +++ b/docs/content/start/installation.md @@ -0,0 +1,22 @@ +# Installation + +Open In Colab + +RL4CO is now available for installation on `pip`! +```bash +pip install rl4co +``` + +## Local install and development +If you want to develop RL4CO or access the latest builds, we recommend you to install it locally with `pip` in editable mode: + +```bash +git clone https://github.com/ai4co/rl4co && cd rl4co +pip install -e . +``` + +> Note: `conda` is also a good candidate for hassle-free installation of PyTorch: check out the [PyTorch website](https://pytorch.org/get-started/locally/) for more details. + + + +To get started, we recommend checking out our [quickstart notebook](https://github.com/ai4co/rl4co/blob/main/examples/1-quickstart.ipynb) or the [minimalistic example](#minimalistic-example). \ No newline at end of file From e73aa374b220c0c8678ad84990ee1de23b8039a5 Mon Sep 17 00:00:00 2001 From: Chuanbo HUA Date: Sat, 20 Jul 2024 20:33:35 +0900 Subject: [PATCH 057/102] [Refactor] Clean up previous doc files --- docs/content/algorithms/ppo.md | 1 - docs/content/networks/environment_embeddings.md | 0 docs/content/networks/neural_network_modules.md | 0 3 files changed, 1 deletion(-) delete mode 100644 docs/content/algorithms/ppo.md delete mode 100644 docs/content/networks/environment_embeddings.md delete mode 100644 docs/content/networks/neural_network_modules.md diff --git a/docs/content/algorithms/ppo.md b/docs/content/algorithms/ppo.md deleted file mode 100644 index aa0fa388..00000000 --- a/docs/content/algorithms/ppo.md +++ /dev/null @@ -1 +0,0 @@ -::: rl4co.models.rl.ppo.ppo \ No newline at end of file diff --git a/docs/content/networks/environment_embeddings.md b/docs/content/networks/environment_embeddings.md deleted file mode 100644 index e69de29b..00000000 diff --git a/docs/content/networks/neural_network_modules.md b/docs/content/networks/neural_network_modules.md deleted file mode 100644 index e69de29b..00000000 From cca5074aeaa30d6ad51a2f7f6d57d6af0083ab7d Mon Sep 17 00:00:00 2001 From: Federico Berto Date: Sun, 21 Jul 2024 20:22:14 +0900 Subject: [PATCH 058/102] [Minor] add init for docs --- rl4co/models/rl/common/__init__.py | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 rl4co/models/rl/common/__init__.py diff --git a/rl4co/models/rl/common/__init__.py b/rl4co/models/rl/common/__init__.py new file mode 100644 index 00000000..e69de29b From 05d20ec9d19b681cd2e6ad21e8fd19654bf94811 Mon Sep 17 00:00:00 2001 From: Federico Berto Date: Sun, 21 Jul 2024 20:22:25 +0900 Subject: [PATCH 059/102] [Minor] name fix --- CITATION.cff | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CITATION.cff b/CITATION.cff index 9d896fe3..b944315c 100644 --- a/CITATION.cff +++ b/CITATION.cff @@ -29,8 +29,8 @@ preferred-citation: given-names: Minsu - family-names: Choi given-names: Sanghyeok - - family-names: Gast - given-names: Zepeda + - family-names: Gast Zepeda + given-names: Nayeli - family-names: Hottung given-names: André - family-names: Zhou From 162f8802e32a73ae15f8e3d7ff7bb11634b4bde5 Mon Sep 17 00:00:00 2001 From: Federico Berto Date: Sun, 21 Jul 2024 20:23:01 +0900 Subject: [PATCH 060/102] [Docs] add README for deployment --- docs/README.md | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 docs/README.md diff --git a/docs/README.md b/docs/README.md new file mode 100644 index 00000000..f220e049 --- /dev/null +++ b/docs/README.md @@ -0,0 +1,23 @@ +# RL4CO Documentation + +We use [MkDocs](https://www.mkdocs.org/) to generate the documentation with the [MkDocs Material theme](https://squidfunk.github.io/mkdocs-material/). + +## Development + +From root directory - install RL4CO locally: + +```bash +pip install -e ".[dev,graph,routing]" +``` + +Then, install the dependencies: + +```bash +pip install -r docs/requirements.txt +``` + +To build the documentation, run: + +```bash +mkdocs serve +``` \ No newline at end of file From 34255bf3367a9028cc4e3e2ba89343023f45d248 Mon Sep 17 00:00:00 2001 From: Federico Berto Date: Sun, 21 Jul 2024 20:23:22 +0900 Subject: [PATCH 061/102] [Minor] MkDocs testing --- mkdocs.yml | 99 ++++++++++++++++++++++++++++-------------------------- 1 file changed, 52 insertions(+), 47 deletions(-) diff --git a/mkdocs.yml b/mkdocs.yml index fdae23c0..45c64670 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -5,6 +5,54 @@ repo_url: https://github.com/ai4co/rl4co/ edit_uri: edit/main/docs site_description: Official documentation for RL4CO copyright: Made with ❤️ by AI4CO contributors +docs_dir: docs + +nav: + - Getting Started: + - Installation: content/start/installation.md + - Quick Start: ../examples/1-quickstart.ipynb + - Training with Hydra: content/start/hydra.md + - NCO Methods: content/api/models/common/__init__ + - Tutorials: + - Training a Model: ../examples/2-full-training.ipynb + - New Environment: ../examples/3-creating-new-env-model.ipynb + - Decoding Strategies: ../examples/modeling/1-decoding-strategies + - Transductive Methods: ../examples/modeling/2-transductive-methods + - Encoder Customization: ../examples/modeling/3-change-encoder + - Hydra Configuration: ../examples/advanced/1-hydra-config + - RL Algorithms: + - Base Algorithms: content/api/algos/base.md + - Reinforce: content/api/algos/reinforce.md + - PPO: content/api/algos/ppo.md + - A2C: content/api/algos/a2c.md + - Environments: + - Basic Environments: content/api/envs/base.md + - EDA Problems: content/api/envs/eda.md + - Routing Problems: content/api/envs/routing.md + - Scheduling Problems: content/api/envs/scheduling.md + - Networks: + - Neural Network Modules: content/api/models/nn.md + - Environment Embeddings: content/api/models/env_embeddings.md + - Base NCO Methods: + - Constructive Policies: content/api/models/common/zoo/constructive.md + - Improvement Policies: content/api/models/common/zoo/improvement.md + - Transductive Models: content/api/models/common/zoo/transductive.md + - Additional APIs: + - Train and Evaluation: content/api/tasks.md + - Decoding Strategies: content/api/decoding.md + - Data: content/api/data.md + - Other: + - Contributing to RL4CO: content/general/contribute.md + - FAQ: content/general/faq.md + +extra: + social: + - icon: fontawesome/brands/github + link: https://github.com/ai4co + - icon: fontawesome/brands/slack + link: https://bit.ly/ai4co-slack + - icon: fontawesome/solid/globe + link: https://ai4co.org theme: name: material @@ -29,6 +77,7 @@ theme: - navigation.tracking - search.suggest - search.highlight + - search.share - toc.follow palette: - media: "(prefers-color-scheme)" @@ -100,7 +149,9 @@ plugins: - mike: alias_type: symlink canonical_version: latest - - mkdocs-jupyter + - mkdocs-jupyter: + include_source: True + include: ["../*.ipynb"] - search - autorefs - autolinks @@ -127,49 +178,3 @@ markdown_extensions: - pymdownx.tabbed: alternate_style: true -nav: - - Getting Started: - - Installation: content/start/installation.md - - Quick Start: ../examples/1-quickstart.ipynb - - Training with Hydra: content/start/hydra.md - - NCO Methods: content/api/models/common/__init__ - - Tutorials: - - Training a Model: ../examples/2-full-training.ipynb - - New Environment: ../examples/3-creating-new-env-model.ipynb - - Decoding Strategies: ../examples/modeling/1-decoding-strategies - - Transductive Methods: ../examples/modeling/2-transductive-methods - - Encoder Customization: ../examples/modeling/3-change-encoder - - Hydra Configuration: ../examples/advanced/1-hydra-config - - RL Algorithms: - - Base Algorithms: content/api/algos/base.md - - Reinforce: content/api/algos/reinforce.md - - PPO: content/api/algos/ppo.md - - A2C: content/api/algos/a2c.md - - Environments: - - Basic Environments: content/api/envs/base.md - - EDA Problems: content/api/envs/eda.md - - Routing Problems: content/api/envs/routing.md - - Scheduling Problems: content/api/envs/scheduling.md - - Networks: - - Neural Network Modules: content/api/models/nn.md - - Environment Embeddings: content/api/models/env_embeddings.md - - Base NCO Methods: - - Constructive Policies: content/api/models/common/zoo/constructive.md - - Improvement Policies: content/api/models/common/zoo/improvement.md - - Transductive Models: content/api/models/common/zoo/transductive.md - - Additional APIs: - - Train and Evaluation: content/api/tasks.md - - Decoding Strategies: content/api/decoding.md - - Data: content/api/data.md - - Other: - - Contributing to RL4CO: content/general/contribute.md - - FAQ: content/general/faq.md - -extra: - social: - - icon: fontawesome/brands/github - link: https://github.com/ai4co - - icon: fontawesome/brands/slack - link: https://bit.ly/ai4co-slack - - icon: fontawesome/solid/globe - link: https://ai4co.org \ No newline at end of file From 6a63475f0034cee0121ef1d8f8a7b536d7801f16 Mon Sep 17 00:00:00 2001 From: Federico Berto Date: Sun, 21 Jul 2024 20:23:56 +0900 Subject: [PATCH 062/102] [Minor] index automatically parses rootdir README --- docs/index.md | 222 +------------------------------------------------- 1 file changed, 1 insertion(+), 221 deletions(-) diff --git a/docs/index.md b/docs/index.md index 19478c68..4ab0748e 100644 --- a/docs/index.md +++ b/docs/index.md @@ -1,221 +1 @@ -
    - -
    - AI4CO Logo -
    - -
    -
    - -PyTorch -Lightning -base: TorchRL -config: Hydra -Black -Slack -Black -Open In Colab -PyPI -Black -Black - -
    -
    - - - -
    - -
    - - -An extensive Reinforcement Learning (RL) for Combinatorial Optimization (CO) benchmark. Our goal is to provide a unified framework for RL-based CO algorithms, and to facilitate reproducible research in this field, decoupling the science from the engineering. - - -RL4CO is built upon: - -- [TorchRL](https://github.com/pytorch/rl): official PyTorch framework for RL algorithms and vectorized environments on GPUs -- [TensorDict](https://github.com/pytorch-labs/tensordict): a library to easily handle heterogeneous data such as states, actions and rewards -- [PyTorch Lightning](https://github.com/Lightning-AI/lightning): a lightweight PyTorch wrapper for high-performance AI research -- [Hydra](https://github.com/facebookresearch/hydra): a framework for elegantly configuring complex applications - -![RL4CO-Overview](https://github.com/ai4co/rl4co/assets/48984123/0e409784-05a9-4799-b7aa-6c0f76ecf27f) - -We offer flexible and efficient implementations of the following policies: - -- **Constructive**: learn to construct a solution from scratch - - _Autoregressive (AR)_: construct solutions one step at a time via a decoder - - _NonAutoregressive (NAR)_: learn to predict a heuristic, such as a heatmap, to then construct a solution -- **Improvement**: learn to improve an pre-existing solution - -![RL4CO-Policy-Overview](https://github.com/ai4co/rl4co/assets/48984123/9e1f32f9-9884-49b9-b6cd-364861cc8fe7) - -We provide several utilities and modularization. For example, we modularize reusable components such as _environment embeddings_ that can easily be swapped to [solve new problems](https://github.com/ai4co/rl4co/blob/main/examples/3-creating-new-env-model.ipynb). - -![RL4CO-Env-Embeddings](https://github.com/ai4co/rl4co/assets/48984123/c47a9301-4c9f-43fd-b21f-761abeae9717) - - - -## Getting started -Open In Colab - -RL4CO is now available for installation on `pip`! -```bash -pip install rl4co -``` - -To get started, we recommend checking out our [quickstart notebook](examples/1-quickstart.ipynb) or the [minimalistic example](#minimalistic-example) below. - -### Install from source -This command installs the bleeding edge `main` version, useful for staying up-to-date with the latest developments - for instance, if a bug has been fixed since the last official release but a new release hasn’t been rolled out yet: - -```bash -pip install -U git+https://github.com/ai4co/rl4co.git -``` - -### Local install and development -If you want to develop RL4CO we recommend you to install it locally with `pip` in editable mode: - -```bash -git clone https://github.com/ai4co/rl4co && cd rl4co -pip install -e . -``` - -We recommend using a virtual environment such as `conda` to install `rl4co` locally. - - - -## Usage - - -Train model with default configuration (AM on TSP environment): -```bash -python run.py -``` - -!!! warning "" - - You may check out [this notebook](examples/advanced/1-hydra-config.ipynb) to get started with Hydra! - -
    - Change experiment settings - -Train model with chosen experiment configuration from [configs/experiment/](configs/experiment/) -```bash -python run.py experiment=routing/am env=tsp env.num_loc=50 model.optimizer_kwargs.lr=2e-4 -``` -Here you may change the environment, e.g. with `env=cvrp` by command line or by modifying the corresponding experiment e.g. [configs/experiment/routing/am.yaml](configs/experiment/routing/am.yaml). - -
    - - - - -
    - Disable logging - -```bash -python run.py experiment=routing/am logger=none '~callbacks.learning_rate_monitor' -``` -Note that `~` is used to disable a callback that would need a logger. - -
    - - -
    - Create a sweep over hyperparameters (-m for multirun) - -```bash -python run.py -m experiment=routing/am model.optimizer.lr=1e-3,1e-4,1e-5 -``` -
    - - - -### Minimalistic Example - -Here is a minimalistic example training the Attention Model with greedy rollout baseline on TSP in less than 30 lines of code: - -```python -from rl4co.envs.routing import TSPEnv, TSPGenerator -from rl4co.models import AttentionModelPolicy, POMO -from rl4co.utils import RL4COTrainer - -# Instantiate generator and environment -generator = TSPGenerator(num_loc=50, loc_distribution="uniform") -env = TSPEnv(generator) - -# Create policy and RL model -policy = AttentionModelPolicy(env_name=env.name, num_encoder_layers=6) -model = POMO(env, policy, batch_size=64, optimizer_kwargs={"lr": 1e-4}) - -# Instantiate Trainer and fit -trainer = RL4COTrainer(max_epochs=10, accelerator="gpu", precision="16-mixed") -trainer.fit(model) -``` - -Other examples can be found on the [documentation](https://rl4co.readthedocs.io/en/latest/)! - - -### Testing - -Run tests with `pytest` from the root directory: - -```bash -pytest tests -``` - -### Known Bugs - - -#### Bugs installing PyTorch Geometric (PyG) - -Installing `PyG` via `Conda` seems to update Torch itself. We have found that this update introduces some bugs with `torchrl`. At this moment, we recommend installing `PyG` with `Pip`: -```bash -pip install torch_geometric -``` - - -## Contributing - -Have a suggestion, request, or found a bug? Feel free to [open an issue](https://github.com/ai4co/rl4co/issues) or [submit a pull request](https://github.com/ai4co/rl4co/pulls). -If you would like to contribute, please check out our contribution guidelines [here](.github/CONTRIBUTING.md). We welcome and look forward to all contributions to RL4CO! - -We are also on [Slack](https://join.slack.com/t/rl4co/shared_invite/zt-1ytz2c1v4-0IkQ8NQH4TRXIX8PrRmDhQ) if you have any questions or would like to discuss RL4CO with us. We are open to collaborations and would love to hear from you 🚀 - -### Contributors - - - - -## Citation -If you find RL4CO valuable for your research or applied projects: - -```bibtex -@article{berto2024rl4co, - title={{RL4CO: an Extensive Reinforcement Learning for Combinatorial Optimization Benchmark}}, - author={Federico Berto and Chuanbo Hua and Junyoung Park and Laurin Luttmann and Yining Ma and Fanchen Bu and Jiarui Wang and Haoran Ye and Minsu Kim and Sanghyeok Choi and Nayeli Gast Zepeda and Andr\'e Hottung and Jianan Zhou and Jieyi Bi and Yu Hu and Fei Liu and Hyeonah Kim and Jiwoo Son and Haeyeon Kim and Davide Angioni and Wouter Kool and Zhiguang Cao and Jie Zhang and Kijung Shin and Cathy Wu and Sungsoo Ahn and Guojie Song and Changhyun Kwon and Lin Xie and Jinkyoo Park}, - year={2024}, - journal={arXiv preprint arXiv:2306.17100}, - note={\url{https://github.com/ai4co/rl4co}} -} -``` - -Note that a [previous version of RL4CO](https://openreview.net/forum?id=YXSJxi8dOV) has been accepted as an oral presentation at the [NeurIPS 2023 GLFrontiers Workshop](https://glfrontiers.github.io/). Since then, the library has greatly evolved and improved! - ---- - - -## Join us -[![Slack](https://img.shields.io/badge/slack-chat-611f69.svg?logo=slack)](https://join.slack.com/t/rl4co/shared_invite/zt-1ytz2c1v4-0IkQ8NQH4TRXIX8PrRmDhQ) - -We invite you to join our AI4CO community, an open research group in Artificial Intelligence (AI) for Combinatorial Optimization (CO)! - - -
    - AI4CO Logo -
    - - +--8<-- "README.md" \ No newline at end of file From c53daf54f717d71c47afce19d62ed962020205f6 Mon Sep 17 00:00:00 2001 From: Federico Berto Date: Sun, 21 Jul 2024 22:11:06 +0900 Subject: [PATCH 063/102] [Docs] add hooks --- docs/hooks.py | 16 ++++++++++++++++ mkdocs.yml | 27 ++++++++++++++++----------- 2 files changed, 32 insertions(+), 11 deletions(-) create mode 100644 docs/hooks.py diff --git a/docs/hooks.py b/docs/hooks.py new file mode 100644 index 00000000..8fa3ac43 --- /dev/null +++ b/docs/hooks.py @@ -0,0 +1,16 @@ +import shutil +import logging, os + +log = logging.getLogger('mkdocs') + +def on_startup(*args, **kwargs): + log.info('Copying examples directory to docs') + shutil.copytree('examples', 'docs/examples', dirs_exist_ok=True) + log.info('Copying README.md to docs as index.md') + shutil.copyfile('README.md', 'docs/index.md') + + +def on_shutdown(*args, **kwargs): + log.info('Removing copied examples and index.md') + shutil.rmtree('docs/examples') + os.remove('docs/index.md') diff --git a/mkdocs.yml b/mkdocs.yml index 45c64670..b52f5399 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -10,16 +10,16 @@ docs_dir: docs nav: - Getting Started: - Installation: content/start/installation.md - - Quick Start: ../examples/1-quickstart.ipynb + - Quick Start: examples/1-quickstart.ipynb - Training with Hydra: content/start/hydra.md - NCO Methods: content/api/models/common/__init__ - Tutorials: - - Training a Model: ../examples/2-full-training.ipynb - - New Environment: ../examples/3-creating-new-env-model.ipynb - - Decoding Strategies: ../examples/modeling/1-decoding-strategies - - Transductive Methods: ../examples/modeling/2-transductive-methods - - Encoder Customization: ../examples/modeling/3-change-encoder - - Hydra Configuration: ../examples/advanced/1-hydra-config + - Training a Model: examples/2-full-training.ipynb + - New Environment: examples/3-creating-new-env-model.ipynb + - Decoding Strategies: examples/modeling/1-decoding-strategies + - Transductive Methods: examples/modeling/2-transductive-methods + - Encoder Customization: examples/modeling/3-change-encoder + - Hydra Configuration: examples/advanced/1-hydra-config - RL Algorithms: - Base Algorithms: content/api/algos/base.md - Reinforce: content/api/algos/reinforce.md @@ -60,25 +60,28 @@ theme: favicon: assets/figs/rl4co-logo.svg primary: red features: + - announce.dismiss - content.code.copy - content.code.annotate - - navigation.expand - - navigation.top - content.tabs.link - content.tooltips - - announce.dismiss + - navigation.expand - navigation.instant - navigation.instant.prefetch - navigation.instant.preview - navigation.instant.progress + - navigation.indexes - navigation.path - navigation.sections - navigation.top - navigation.tracking + - navigation.tabs # horizontal tabs for navigation + - navigation.tabs.sticky # tabs do not scroll out of view - search.suggest - search.highlight - search.share - toc.follow + # - toc.integrate palette: - media: "(prefers-color-scheme)" toggle: @@ -151,11 +154,13 @@ plugins: canonical_version: latest - mkdocs-jupyter: include_source: True - include: ["../*.ipynb"] - search - autorefs - autolinks +hooks: + - docs/hooks.py + markdown_extensions: - pymdownx.details - pymdownx.superfences From 38a71c589cc8aadcc506bbe4f63f4f1cc612f490 Mon Sep 17 00:00:00 2001 From: Federico Berto Date: Sun, 21 Jul 2024 22:11:34 +0900 Subject: [PATCH 064/102] [Docs] remove index.md; handled by hooks.py --- docs/index.md | 1 - 1 file changed, 1 deletion(-) delete mode 100644 docs/index.md diff --git a/docs/index.md b/docs/index.md deleted file mode 100644 index 4ab0748e..00000000 --- a/docs/index.md +++ /dev/null @@ -1 +0,0 @@ ---8<-- "README.md" \ No newline at end of file From 7def6c7db019b5f7cd6f64556e8052268b5baf1c Mon Sep 17 00:00:00 2001 From: Federico Berto Date: Sun, 21 Jul 2024 22:11:59 +0900 Subject: [PATCH 065/102] [Docs] update documentation documentation (eheh) --- docs/README.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/docs/README.md b/docs/README.md index f220e049..139bdb50 100644 --- a/docs/README.md +++ b/docs/README.md @@ -20,4 +20,8 @@ To build the documentation, run: ```bash mkdocs serve -``` \ No newline at end of file +``` + +### Hooks + +You may have noticed that we do not have an `index.md` file. This is because we are using [hooks.py](hooks.py) to copy the root `README.md` to `index.md`. We are also copying the examples folder and deleting it upon stopping the server. From 023aa5cdbd88624e310d9eea191d18941f4f11fd Mon Sep 17 00:00:00 2001 From: Federico Berto Date: Sun, 21 Jul 2024 22:45:46 +0900 Subject: [PATCH 066/102] [Docs] minor updates --- docs/content/api/envs/base.md | 3 +++ mkdocs.yml | 10 +++++++--- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/docs/content/api/envs/base.md b/docs/content/api/envs/base.md index 30e1a190..5c5fa415 100644 --- a/docs/content/api/envs/base.md +++ b/docs/content/api/envs/base.md @@ -4,6 +4,9 @@ This is the base wrapper around TorchRL's `EnvBase`, with additional functionality. +::: rl4co.envs.common.base.RL4COEnvBase + + ```{eval-rst} .. automodule:: rl4co.envs.common.base :members: diff --git a/mkdocs.yml b/mkdocs.yml index b52f5399..1191e4f5 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -117,6 +117,7 @@ extra: plugins: - mkdocstrings: + enable_inventory: true # create .inv file for auto linking handlers: python: paths: [rl4co] @@ -134,8 +135,7 @@ plugins: inherited_members: false show_root_heading: true show_root_full_path: false - show_source: false - show_signature_annotations: true + show_source: true show_symbol_type_heading: true show_symbol_type_toc: true signature_crossrefs: true @@ -149,6 +149,7 @@ plugins: - https://pytorch.org/tensordict/stable/objects.inv - https://pytorch.org/docs/stable/objects.inv - https://lightning.ai/docs/pytorch/stable/objects.inv + - mike: alias_type: symlink canonical_version: latest @@ -168,6 +169,7 @@ markdown_extensions: generic: true - pymdownx.highlight: pygments_lang_class: true + linenums: true - pymdownx.inlinehilite - pymdownx.snippets - pymdownx.magiclink @@ -182,4 +184,6 @@ markdown_extensions: emoji_generator: !!python/name:material.extensions.emoji.to_svg - pymdownx.tabbed: alternate_style: true - + - attr_list + - md_in_html + - def_list From fe012f6c2d3b192404ce589f1a7e5a37265a095f Mon Sep 17 00:00:00 2001 From: Federico Berto Date: Mon, 22 Jul 2024 00:12:31 +0900 Subject: [PATCH 067/102] [Docs] extra styles --- docs/stylesheets/extra.css | 13 ++++++++++--- docs/stylesheets/mkdocstrings.css | 23 +++++++++++++++++++++++ 2 files changed, 33 insertions(+), 3 deletions(-) create mode 100644 docs/stylesheets/mkdocstrings.css diff --git a/docs/stylesheets/extra.css b/docs/stylesheets/extra.css index 4709217f..30a7173b 100644 --- a/docs/stylesheets/extra.css +++ b/docs/stylesheets/extra.css @@ -1,13 +1,20 @@ +/* Custom colors */ :root { --md-primary-fg-color: #B92B0F; --md-primary-fg-color--light: #F05F42; --md-primary-fg-color--dark: #B92B0F; } -[data-md-color-accent=indigo] { - --md-accent-fg-color: #B92B0F; +[data-md-color-scheme="aiforco"] { + --md-primary-fg-color: #B92B0F; + --md-primary-fg-color--light: #F05F42; + --md-primary-fg-color--dark: #B92B0F; } +/* [data-md-color-accent=indigo] { + --md-accent-fg-color: #B92B0F; +} */ + /* Ensure code blocks wrap text */ .codehilite pre { white-space: pre-wrap; /* Allow text to wrap within the pre element */ @@ -17,4 +24,4 @@ /* Improve overall readability of code by adding some padding */ .codehilite { padding: 8px; /* Adjust padding to fit your design */ -} \ No newline at end of file +} diff --git a/docs/stylesheets/mkdocstrings.css b/docs/stylesheets/mkdocstrings.css new file mode 100644 index 00000000..b82fd1b8 --- /dev/null +++ b/docs/stylesheets/mkdocstrings.css @@ -0,0 +1,23 @@ +.doc-symbol-parameter::after { + content: "P"; + } + + .doc-symbol-attribute::after { + content: "A"; + } + + .doc-symbol-function::after { + content: "F"; + } + + .doc-symbol-method::after { + content: "M"; + } + + .doc-symbol-class::after { + content: "C"; + } + + .doc-symbol-module::after { + content: "M"; + } From 09d3f60d31190939d8e2b054e29d8b0a40468e4d Mon Sep 17 00:00:00 2001 From: Federico Berto Date: Mon, 22 Jul 2024 00:13:37 +0900 Subject: [PATCH 068/102] [Docs] add index, fonts, css --- mkdocs.yml | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/mkdocs.yml b/mkdocs.yml index 1191e4f5..0c332305 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -8,6 +8,7 @@ copyright: Made with ❤️ by AI4CO contributors docs_dir: docs nav: + - Home: index.md - Getting Started: - Installation: content/start/installation.md - Quick Start: examples/1-quickstart.ipynb @@ -81,7 +82,7 @@ theme: - search.highlight - search.share - toc.follow - # - toc.integrate + - toc.integrate palette: - media: "(prefers-color-scheme)" toggle: @@ -89,21 +90,25 @@ theme: name: Switch to light mode - media: "(prefers-color-scheme: light)" scheme: default - primary: "#5023df" # Changed to match the company logo color - accent: "#55c2ac" # Changed to match the company logo color + primary: custom + accent: custom toggle: icon: material/weather-sunny name: Switch to dark mode - media: "(prefers-color-scheme: dark)" scheme: slate - primary: "#5023df" # Changed to match the company logo color - accent: "#55be75" # Changed to match the company logo color + primary: custom + accent: custom toggle: icon: material/weather-night name: Switch to system preference + font: + text: Noto Sans + code: Fira Code extra_css: - stylesheets/extra.css # Our custom CSS + - stylesheets/mkdocstrings.css # mkdocstrings CSS - https://unpkg.com/katex@0/dist/katex.min.css # Latex math rendering extra_javascript: @@ -169,10 +174,10 @@ markdown_extensions: generic: true - pymdownx.highlight: pygments_lang_class: true - linenums: true - pymdownx.inlinehilite - pymdownx.snippets - pymdownx.magiclink + - pymdownx.superfences - tables - toc: permalink: true From e25f8d847c76a0707f4409377ed9ff3f9046af51 Mon Sep 17 00:00:00 2001 From: Federico Berto Date: Mon, 22 Jul 2024 00:36:01 +0900 Subject: [PATCH 069/102] [Docs] add automatic __init__ adder --- docs/hooks.py | 41 ++++++++++++++++++++++-------- rl4co/models/rl/common/__init__.py | 0 2 files changed, 30 insertions(+), 11 deletions(-) delete mode 100644 rl4co/models/rl/common/__init__.py diff --git a/docs/hooks.py b/docs/hooks.py index 8fa3ac43..0dfb1daa 100644 --- a/docs/hooks.py +++ b/docs/hooks.py @@ -1,16 +1,35 @@ +import logging +import os import shutil -import logging, os -log = logging.getLogger('mkdocs') +log = logging.getLogger("mkdocs") + +# Global variable to store the paths of created __init__.py files +created_files = [] + def on_startup(*args, **kwargs): - log.info('Copying examples directory to docs') - shutil.copytree('examples', 'docs/examples', dirs_exist_ok=True) - log.info('Copying README.md to docs as index.md') - shutil.copyfile('README.md', 'docs/index.md') - - + log.info("Copying examples directory to docs") + shutil.copytree("examples", "docs/examples", dirs_exist_ok=True) + log.info("Copying README.md to docs as index.md") + shutil.copyfile("README.md", "docs/index.md") + + log.info("Creating missing __init__.py files in rl4co package") + for subdir, dirs, files in os.walk("rl4co"): + if "__init__.py" not in files: + init_file_path = os.path.join(subdir, "__init__.py") + with open(init_file_path, "w"): + pass # empty file + created_files.append(init_file_path) + log.info(f"{len(created_files)} __init__.py files created") + + def on_shutdown(*args, **kwargs): - log.info('Removing copied examples and index.md') - shutil.rmtree('docs/examples') - os.remove('docs/index.md') + log.info("Removing copied examples and index.md") + shutil.rmtree("docs/examples") + os.remove("docs/index.md") + + log.info(f"Removing {len(created_files)} created __init__.py files") + for file_path in created_files: + if os.path.exists(file_path): + os.remove(file_path) diff --git a/rl4co/models/rl/common/__init__.py b/rl4co/models/rl/common/__init__.py deleted file mode 100644 index e69de29b..00000000 From c2c30749d3db975aee89b77df07191c899c4a66d Mon Sep 17 00:00:00 2001 From: Chuanbo HUA Date: Mon, 22 Jul 2024 15:49:48 +0900 Subject: [PATCH 070/102] [BugFix] Fixing some function based features --- docs/content/api/algos/base.md | 2 +- docs/index.md | 205 +++++++++++++++++++++++++++++++++ mkdocs.yml | 20 ++-- 3 files changed, 215 insertions(+), 12 deletions(-) create mode 100644 docs/index.md diff --git a/docs/content/api/algos/base.md b/docs/content/api/algos/base.md index 5702ef87..ae859ee7 100644 --- a/docs/content/api/algos/base.md +++ b/docs/content/api/algos/base.md @@ -1 +1 @@ -::: rl4co.models.rl.common.base \ No newline at end of file +::: models.rl.common.base \ No newline at end of file diff --git a/docs/index.md b/docs/index.md new file mode 100644 index 00000000..c8eb03d3 --- /dev/null +++ b/docs/index.md @@ -0,0 +1,205 @@ +
    + + +
    + AI4CO Logo +
    + +

    + + +PyTorch +Lightning +base: TorchRL +config: Hydra +Code style: black +Slack +License: MIT +Open In Colab +PyPI +Codecov +Test + +Documentation | +Getting Started | +Usage | +Contributing | +Paper | +Join Us + +
    + +An extensive Reinforcement Learning (RL) for Combinatorial Optimization (CO) benchmark. Our goal is to provide a unified framework for RL-based CO algorithms, and to facilitate reproducible research in this field, decoupling the science from the engineering. + +RL4CO is built upon: + +- [TorchRL](https://github.com/pytorch/rl): official PyTorch framework for RL algorithms and vectorized environments on GPUs +- [TensorDict](https://github.com/pytorch-labs/tensordict): a library to easily handle heterogeneous data such as states, actions and rewards +- [PyTorch Lightning](https://github.com/Lightning-AI/lightning): a lightweight PyTorch wrapper for high-performance AI research +- [Hydra](https://github.com/facebookresearch/hydra): a framework for elegantly configuring complex applications + +RL4CO-Overview + +We offer flexible and efficient implementations of the following policies: + +- **Constructive**: learn to construct a solution from scratch + + * _Autoregressive (AR)_: construct solutions one step at a time via a decoder + * _NonAutoregressive (NAR)_: learn to predict a heuristic, such as a heatmap, to then construct a solution + +- **Improvement**: learn to improve an pre-existing solution + +RL4CO-Policy-Overview + +We provide several utilities and modularization. For example, we modularize reusable components such as _environment embeddings_ that can easily be swapped to [solve new problems](https://github.com/ai4co/rl4co/blob/main/examples/3-creating-new-env-model.ipynb). + +RL4CO-Env-Embedding + + +## Getting started +Open In Colab + +RL4CO is now available for installation on `pip`! +```bash +pip install rl4co +``` + +To get started, we recommend checking out our [quickstart notebook](examples/1-quickstart.ipynb) or the [minimalistic example](#minimalistic-example) below. + +### Install from source +This command installs the bleeding edge `main` version, useful for staying up-to-date with the latest developments - for instance, if a bug has been fixed since the last official release but a new release hasn’t been rolled out yet: + +```bash +pip install -U git+https://github.com/ai4co/rl4co.git +``` + +### Local install and development +If you want to develop RL4CO we recommend you to install it locally with `pip` in editable mode: + +```bash +git clone https://github.com/ai4co/rl4co && cd rl4co +pip install -e . +``` + +We recommend using a virtual environment such as `conda` to install `rl4co` locally. + + + +## Usage + + +Train model with default configuration (AM on TSP environment): +```bash +python run.py +``` + +!!! tip + You may check out [this notebook](examples/advanced/1-hydra-config.ipynb) to get started with Hydra! + +??? note "Change experiment settings" + Train model with chosen experiment configuration from [configs/experiment/](configs/experiment/) + ```bash + python run.py experiment=routing/am env=tsp env.num_loc=50 model.optimizer_kwargs.lr=2e-4 + ``` + Here you may change the environment, e.g. with `env=cvrp` by command line or by modifying the corresponding experiment e.g. [configs/experiment/routing/am.yaml](configs/experiment/routing/am.yaml). + +??? note "Disable logging or callbacks" + Disable logging or callbacks by using Hydra's `~` operator: + ```bash + python run.py experiment=routing/am logger=none '~callbacks.learning_rate_monitor' + ``` + +??? note "Create a sweep over hyperparameters" + Create a sweep over hyperparameters (-m for multirun): + ```bash + python run.py -m experiment=routing/am model.optimizer.lr=1e-3,1e-4,1e-5 + ``` + + + + +### Minimalistic Example + +Here is a minimalistic example training the Attention Model with greedy rollout baseline on TSP in less than 30 lines of code: + +```python +from rl4co.envs.routing import TSPEnv, TSPGenerator +from rl4co.models import AttentionModelPolicy, POMO +from rl4co.utils import RL4COTrainer + +# Instantiate generator and environment +generator = TSPGenerator(num_loc=50, loc_distribution="uniform") +env = TSPEnv(generator) + +# Create policy and RL model +policy = AttentionModelPolicy(env_name=env.name, num_encoder_layers=6) +model = POMO(env, policy, batch_size=64, optimizer_kwargs={"lr": 1e-4}) + +# Instantiate Trainer and fit +trainer = RL4COTrainer(max_epochs=10, accelerator="gpu", precision="16-mixed") +trainer.fit(model) +``` + +Other examples can be found on the [documentation](https://rl4co.readthedocs.io/en/latest/)! + + +### Testing + +Run tests with `pytest` from the root directory: + +```bash +pytest tests +``` + +### Known Bugs + + +#### Bugs installing PyTorch Geometric (PyG) + +Installing `PyG` via `Conda` seems to update Torch itself. We have found that this update introduces some bugs with `torchrl`. At this moment, we recommend installing `PyG` with `Pip`: +```bash +pip install torch_geometric +``` + + +## Contributing + +Have a suggestion, request, or found a bug? Feel free to [open an issue](https://github.com/ai4co/rl4co/issues) or [submit a pull request](https://github.com/ai4co/rl4co/pulls). +If you would like to contribute, please check out our contribution guidelines [here](.github/CONTRIBUTING.md). We welcome and look forward to all contributions to RL4CO! + +We are also on [Slack](https://join.slack.com/t/rl4co/shared_invite/zt-1ytz2c1v4-0IkQ8NQH4TRXIX8PrRmDhQ) if you have any questions or would like to discuss RL4CO with us. We are open to collaborations and would love to hear from you 🚀 + +### Contributors + + + + +## Citation +If you find RL4CO valuable for your research or applied projects: + +```bibtex +@article{berto2024rl4co, + title={{RL4CO: an Extensive Reinforcement Learning for Combinatorial Optimization Benchmark}}, + author={Federico Berto and Chuanbo Hua and Junyoung Park and Laurin Luttmann and Yining Ma and Fanchen Bu and Jiarui Wang and Haoran Ye and Minsu Kim and Sanghyeok Choi and Nayeli Gast Zepeda and Andr\'e Hottung and Jianan Zhou and Jieyi Bi and Yu Hu and Fei Liu and Hyeonah Kim and Jiwoo Son and Haeyeon Kim and Davide Angioni and Wouter Kool and Zhiguang Cao and Jie Zhang and Kijung Shin and Cathy Wu and Sungsoo Ahn and Guojie Song and Changhyun Kwon and Lin Xie and Jinkyoo Park}, + year={2024}, + journal={arXiv preprint arXiv:2306.17100}, + note={\url{https://github.com/ai4co/rl4co}} +} +``` + +Note that a [previous version of RL4CO](https://openreview.net/forum?id=YXSJxi8dOV) has been accepted as an oral presentation at the [NeurIPS 2023 GLFrontiers Workshop](https://glfrontiers.github.io/). Since then, the library has greatly evolved and improved! + +--- + + +## Join us +[![Slack](https://img.shields.io/badge/slack-chat-611f69.svg?logo=slack)](https://join.slack.com/t/rl4co/shared_invite/zt-1ytz2c1v4-0IkQ8NQH4TRXIX8PrRmDhQ) + +We invite you to join our AI4CO community, an open research group in Artificial Intelligence (AI) for Combinatorial Optimization (CO)! + + +
    + AI4CO Logo +
    + + diff --git a/mkdocs.yml b/mkdocs.yml index 0c332305..398611a8 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -11,16 +11,16 @@ nav: - Home: index.md - Getting Started: - Installation: content/start/installation.md - - Quick Start: examples/1-quickstart.ipynb + - Quick Start: content/examples/1-quickstart.ipynb - Training with Hydra: content/start/hydra.md - NCO Methods: content/api/models/common/__init__ - Tutorials: - - Training a Model: examples/2-full-training.ipynb - - New Environment: examples/3-creating-new-env-model.ipynb - - Decoding Strategies: examples/modeling/1-decoding-strategies - - Transductive Methods: examples/modeling/2-transductive-methods - - Encoder Customization: examples/modeling/3-change-encoder - - Hydra Configuration: examples/advanced/1-hydra-config + - Training a Model: content/examples/2-full-training.ipynb + - New Environment: content/examples/3-creating-new-env-model.ipynb + - Decoding Strategies: content/examples/modeling/1-decoding-strategies + - Transductive Methods: content/examples/modeling/2-transductive-methods + - Encoder Customization: content/examples/modeling/3-change-encoder + - Hydra Configuration: content/examples/advanced/1-hydra-config - RL Algorithms: - Base Algorithms: content/api/algos/base.md - Reinforce: content/api/algos/reinforce.md @@ -134,7 +134,6 @@ plugins: ignore_init_summary: true merge_init_into_class: true show_signature_annotations: true - signature_crossrefs: true docstring_section_style: list heading_level: 1 inherited_members: false @@ -146,7 +145,6 @@ plugins: signature_crossrefs: true summary: true extensions: - - griffe_typingdoc - griffe_inherited_docstrings import: - https://docs.python.org/3/objects.inv @@ -158,8 +156,8 @@ plugins: - mike: alias_type: symlink canonical_version: latest - - mkdocs-jupyter: - include_source: True + # - mkdocs-jupyter: + # include_source: True - search - autorefs - autolinks From b5a2251f0b89447faad6ec894e0fbd8518eeaef0 Mon Sep 17 00:00:00 2001 From: Chuanbo HUA Date: Mon, 22 Jul 2024 15:55:15 +0900 Subject: [PATCH 071/102] [BugFix] Fix the accent color --- docs/stylesheets/extra.css | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/docs/stylesheets/extra.css b/docs/stylesheets/extra.css index 30a7173b..377d9c59 100644 --- a/docs/stylesheets/extra.css +++ b/docs/stylesheets/extra.css @@ -3,6 +3,11 @@ --md-primary-fg-color: #B92B0F; --md-primary-fg-color--light: #F05F42; --md-primary-fg-color--dark: #B92B0F; + + --md-accent-fg-color: #B92B0F; + --md-accent-fg-color--transparent: #B92B0F; + --md-accent-bg-color: #ffffff; + --md-accent-bg-color--light: #B92B0F; } [data-md-color-scheme="aiforco"] { From 2ffe9e7289af289652698ecf0d8841f2976bcf03 Mon Sep 17 00:00:00 2001 From: Federico Berto Date: Mon, 22 Jul 2024 20:05:11 +0900 Subject: [PATCH 072/102] [Docs] add requirements --- docs/requirements.txt | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 docs/requirements.txt diff --git a/docs/requirements.txt b/docs/requirements.txt new file mode 100644 index 00000000..92f16228 --- /dev/null +++ b/docs/requirements.txt @@ -0,0 +1,11 @@ +mkdocs +mkdocs-material +mkdocstrings-python +mike +mkdocs-jupyter +mkdocs-redirects +mkdocs-autolinks-plugin +griffe-typingdoc +griffe-inherited-docstrings +griffe +black # for automatically formatting docstrings \ No newline at end of file From 2afcfb34a5e3bb6391a661afcc11bbded2233289 Mon Sep 17 00:00:00 2001 From: Federico Berto Date: Mon, 22 Jul 2024 23:33:54 +0900 Subject: [PATCH 073/102] [Docs] add assets --- docs/assets/figs/embeddings.png | Bin 0 -> 39019 bytes docs/assets/figs/framework.png | Bin 0 -> 28745 bytes docs/assets/figs/policies.png | Bin 0 -> 78113 bytes 3 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 docs/assets/figs/embeddings.png create mode 100644 docs/assets/figs/framework.png create mode 100644 docs/assets/figs/policies.png diff --git a/docs/assets/figs/embeddings.png b/docs/assets/figs/embeddings.png new file mode 100644 index 0000000000000000000000000000000000000000..bbfc33257f48458e03ae2d828439324c76acdb64 GIT binary patch literal 39019 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,p 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 U>WVFNZ2$lO07*qoM6N<$g7OWY*Z=?k literal 0 HcmV?d00001 diff --git a/docs/assets/figs/framework.png b/docs/assets/figs/framework.png new file mode 100644 index 0000000000000000000000000000000000000000..b47509667bc215456fdb6e2984efc56e377dff3a GIT binary patch literal 28745 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 literal 0 HcmV?d00001 diff --git a/docs/assets/figs/policies.png b/docs/assets/figs/policies.png new file mode 100644 index 0000000000000000000000000000000000000000..862f9eb9c24b79594f96d181e74540f8f5e2a11a GIT binary patch literal 78113 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
    -
    - AI4CO Logo -
    +AI4CO Logo

    PyTorch Lightning -base: TorchRL -config: Hydra [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black) [![Slack](https://img.shields.io/badge/slack-chat-611f69.svg?logo=slack)](https://join.slack.com/t/rl4co/shared_invite/zt-1ytz2c1v4-0IkQ8NQH4TRXIX8PrRmDhQ) -[![License: MIT](https://img.shields.io/badge/License-MIT-red.svg)](https://opensource.org/licenses/MIT) Open In Colab [![PyPI](https://img.shields.io/pypi/v/rl4co?logo=pypi)](https://pypi.org/project/rl4co)[![Codecov](https://codecov.io/github/ai4co/rl4co/tree/main/badge.svg)](https://app.codecov.io/github/ai4co/rl4co/tree/main/rl4co)[![Test](https://github.com/ai4co/rl4co/actions/workflows/tests.yml/badge.svg)](https://github.com/ai4co/rl4co/actions/workflows/tests.yml) +base: TorchRL +config: Hydra +Code style: black +Slack +License: MIT +Open In Colab +PyPI +Codecov +Test + +

    + Documentation | + Getting Started | + Usage | + Contributing | + Paper | + Join Us +

    + -[**Documentation**](https://rl4co.readthedocs.io/) | [**Getting Started**](#getting-started) | [**Usage**](#usage) | [**Contributing**](#contributing) | [**Paper**](https://arxiv.org/abs/2306.17100) | [**Join Us**](#join-us)
    + + An extensive Reinforcement Learning (RL) for Combinatorial Optimization (CO) benchmark. Our goal is to provide a unified framework for RL-based CO algorithms, and to facilitate reproducible research in this field, decoupling the science from the engineering. @@ -27,7 +42,8 @@ RL4CO is built upon: - [PyTorch Lightning](https://github.com/Lightning-AI/lightning): a lightweight PyTorch wrapper for high-performance AI research - [Hydra](https://github.com/facebookresearch/hydra): a framework for elegantly configuring complex applications -![RL4CO-Overview](https://github.com/ai4co/rl4co/assets/48984123/0e409784-05a9-4799-b7aa-6c0f76ecf27f) +RL4CO-Overview + We offer flexible and efficient implementations of the following policies: - **Constructive**: learn to construct a solution from scratch @@ -35,11 +51,13 @@ We offer flexible and efficient implementations of the following policies: - _NonAutoregressive (NAR)_: learn to predict a heuristic, such as a heatmap, to then construct a solution - **Improvement**: learn to improve an pre-existing solution -![RL4CO-Policy-Overview](https://github.com/ai4co/rl4co/assets/48984123/9e1f32f9-9884-49b9-b6cd-364861cc8fe7) +RL4CO-Policy-Overview + We provide several utilities and modularization. For example, we modularize reusable components such as _environment embeddings_ that can easily be swapped to [solve new problems](https://github.com/ai4co/rl4co/blob/main/examples/3-creating-new-env-model.ipynb). -![RL4CO-Env-Embeddings](https://github.com/ai4co/rl4co/assets/48984123/c47a9301-4c9f-43fd-b21f-761abeae9717) + +RL4CO-Env-Embedding From 71b6a544c40e294f5fc6fbc0a1fcb65a5e192d6c Mon Sep 17 00:00:00 2001 From: Federico Berto Date: Mon, 22 Jul 2024 23:34:54 +0900 Subject: [PATCH 075/102] [Docs] update requirements; new extensions --- docs/index.md | 205 ------------------------------------------ docs/requirements.txt | 11 --- mkdocs.yml | 74 +++++++-------- pyproject.toml | 36 ++++++++ 4 files changed, 75 insertions(+), 251 deletions(-) delete mode 100644 docs/index.md delete mode 100644 docs/requirements.txt diff --git a/docs/index.md b/docs/index.md deleted file mode 100644 index c8eb03d3..00000000 --- a/docs/index.md +++ /dev/null @@ -1,205 +0,0 @@ -
    - - -
    - AI4CO Logo -
    - -

    - - -PyTorch -Lightning -base: TorchRL -config: Hydra -Code style: black -Slack -License: MIT -Open In Colab -PyPI -Codecov -Test - -Documentation | -Getting Started | -Usage | -Contributing | -Paper | -Join Us - -
    - -An extensive Reinforcement Learning (RL) for Combinatorial Optimization (CO) benchmark. Our goal is to provide a unified framework for RL-based CO algorithms, and to facilitate reproducible research in this field, decoupling the science from the engineering. - -RL4CO is built upon: - -- [TorchRL](https://github.com/pytorch/rl): official PyTorch framework for RL algorithms and vectorized environments on GPUs -- [TensorDict](https://github.com/pytorch-labs/tensordict): a library to easily handle heterogeneous data such as states, actions and rewards -- [PyTorch Lightning](https://github.com/Lightning-AI/lightning): a lightweight PyTorch wrapper for high-performance AI research -- [Hydra](https://github.com/facebookresearch/hydra): a framework for elegantly configuring complex applications - -RL4CO-Overview - -We offer flexible and efficient implementations of the following policies: - -- **Constructive**: learn to construct a solution from scratch - - * _Autoregressive (AR)_: construct solutions one step at a time via a decoder - * _NonAutoregressive (NAR)_: learn to predict a heuristic, such as a heatmap, to then construct a solution - -- **Improvement**: learn to improve an pre-existing solution - -RL4CO-Policy-Overview - -We provide several utilities and modularization. For example, we modularize reusable components such as _environment embeddings_ that can easily be swapped to [solve new problems](https://github.com/ai4co/rl4co/blob/main/examples/3-creating-new-env-model.ipynb). - -RL4CO-Env-Embedding - - -## Getting started -Open In Colab - -RL4CO is now available for installation on `pip`! -```bash -pip install rl4co -``` - -To get started, we recommend checking out our [quickstart notebook](examples/1-quickstart.ipynb) or the [minimalistic example](#minimalistic-example) below. - -### Install from source -This command installs the bleeding edge `main` version, useful for staying up-to-date with the latest developments - for instance, if a bug has been fixed since the last official release but a new release hasn’t been rolled out yet: - -```bash -pip install -U git+https://github.com/ai4co/rl4co.git -``` - -### Local install and development -If you want to develop RL4CO we recommend you to install it locally with `pip` in editable mode: - -```bash -git clone https://github.com/ai4co/rl4co && cd rl4co -pip install -e . -``` - -We recommend using a virtual environment such as `conda` to install `rl4co` locally. - - - -## Usage - - -Train model with default configuration (AM on TSP environment): -```bash -python run.py -``` - -!!! tip - You may check out [this notebook](examples/advanced/1-hydra-config.ipynb) to get started with Hydra! - -??? note "Change experiment settings" - Train model with chosen experiment configuration from [configs/experiment/](configs/experiment/) - ```bash - python run.py experiment=routing/am env=tsp env.num_loc=50 model.optimizer_kwargs.lr=2e-4 - ``` - Here you may change the environment, e.g. with `env=cvrp` by command line or by modifying the corresponding experiment e.g. [configs/experiment/routing/am.yaml](configs/experiment/routing/am.yaml). - -??? note "Disable logging or callbacks" - Disable logging or callbacks by using Hydra's `~` operator: - ```bash - python run.py experiment=routing/am logger=none '~callbacks.learning_rate_monitor' - ``` - -??? note "Create a sweep over hyperparameters" - Create a sweep over hyperparameters (-m for multirun): - ```bash - python run.py -m experiment=routing/am model.optimizer.lr=1e-3,1e-4,1e-5 - ``` - - - - -### Minimalistic Example - -Here is a minimalistic example training the Attention Model with greedy rollout baseline on TSP in less than 30 lines of code: - -```python -from rl4co.envs.routing import TSPEnv, TSPGenerator -from rl4co.models import AttentionModelPolicy, POMO -from rl4co.utils import RL4COTrainer - -# Instantiate generator and environment -generator = TSPGenerator(num_loc=50, loc_distribution="uniform") -env = TSPEnv(generator) - -# Create policy and RL model -policy = AttentionModelPolicy(env_name=env.name, num_encoder_layers=6) -model = POMO(env, policy, batch_size=64, optimizer_kwargs={"lr": 1e-4}) - -# Instantiate Trainer and fit -trainer = RL4COTrainer(max_epochs=10, accelerator="gpu", precision="16-mixed") -trainer.fit(model) -``` - -Other examples can be found on the [documentation](https://rl4co.readthedocs.io/en/latest/)! - - -### Testing - -Run tests with `pytest` from the root directory: - -```bash -pytest tests -``` - -### Known Bugs - - -#### Bugs installing PyTorch Geometric (PyG) - -Installing `PyG` via `Conda` seems to update Torch itself. We have found that this update introduces some bugs with `torchrl`. At this moment, we recommend installing `PyG` with `Pip`: -```bash -pip install torch_geometric -``` - - -## Contributing - -Have a suggestion, request, or found a bug? Feel free to [open an issue](https://github.com/ai4co/rl4co/issues) or [submit a pull request](https://github.com/ai4co/rl4co/pulls). -If you would like to contribute, please check out our contribution guidelines [here](.github/CONTRIBUTING.md). We welcome and look forward to all contributions to RL4CO! - -We are also on [Slack](https://join.slack.com/t/rl4co/shared_invite/zt-1ytz2c1v4-0IkQ8NQH4TRXIX8PrRmDhQ) if you have any questions or would like to discuss RL4CO with us. We are open to collaborations and would love to hear from you 🚀 - -### Contributors - - - - -## Citation -If you find RL4CO valuable for your research or applied projects: - -```bibtex -@article{berto2024rl4co, - title={{RL4CO: an Extensive Reinforcement Learning for Combinatorial Optimization Benchmark}}, - author={Federico Berto and Chuanbo Hua and Junyoung Park and Laurin Luttmann and Yining Ma and Fanchen Bu and Jiarui Wang and Haoran Ye and Minsu Kim and Sanghyeok Choi and Nayeli Gast Zepeda and Andr\'e Hottung and Jianan Zhou and Jieyi Bi and Yu Hu and Fei Liu and Hyeonah Kim and Jiwoo Son and Haeyeon Kim and Davide Angioni and Wouter Kool and Zhiguang Cao and Jie Zhang and Kijung Shin and Cathy Wu and Sungsoo Ahn and Guojie Song and Changhyun Kwon and Lin Xie and Jinkyoo Park}, - year={2024}, - journal={arXiv preprint arXiv:2306.17100}, - note={\url{https://github.com/ai4co/rl4co}} -} -``` - -Note that a [previous version of RL4CO](https://openreview.net/forum?id=YXSJxi8dOV) has been accepted as an oral presentation at the [NeurIPS 2023 GLFrontiers Workshop](https://glfrontiers.github.io/). Since then, the library has greatly evolved and improved! - ---- - - -## Join us -[![Slack](https://img.shields.io/badge/slack-chat-611f69.svg?logo=slack)](https://join.slack.com/t/rl4co/shared_invite/zt-1ytz2c1v4-0IkQ8NQH4TRXIX8PrRmDhQ) - -We invite you to join our AI4CO community, an open research group in Artificial Intelligence (AI) for Combinatorial Optimization (CO)! - - -
    - AI4CO Logo -
    - - diff --git a/docs/requirements.txt b/docs/requirements.txt deleted file mode 100644 index 92f16228..00000000 --- a/docs/requirements.txt +++ /dev/null @@ -1,11 +0,0 @@ -mkdocs -mkdocs-material -mkdocstrings-python -mike -mkdocs-jupyter -mkdocs-redirects -mkdocs-autolinks-plugin -griffe-typingdoc -griffe-inherited-docstrings -griffe -black # for automatically formatting docstrings \ No newline at end of file diff --git a/mkdocs.yml b/mkdocs.yml index 398611a8..f8b8681d 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -5,46 +5,46 @@ repo_url: https://github.com/ai4co/rl4co/ edit_uri: edit/main/docs site_description: Official documentation for RL4CO copyright: Made with ❤️ by AI4CO contributors -docs_dir: docs +docs_dir: . nav: - - Home: index.md + - Home: README.md - Getting Started: - - Installation: content/start/installation.md - - Quick Start: content/examples/1-quickstart.ipynb - - Training with Hydra: content/start/hydra.md - - NCO Methods: content/api/models/common/__init__ + - Installation: docs/content/start/installation.md + - Quick Start: docs/content/examples/1-quickstart.ipynb + - Training with Hydra: docs/content/start/hydra.md + - NCO Methods: docs/content/api/models/common/__init__ - Tutorials: - - Training a Model: content/examples/2-full-training.ipynb - - New Environment: content/examples/3-creating-new-env-model.ipynb - - Decoding Strategies: content/examples/modeling/1-decoding-strategies - - Transductive Methods: content/examples/modeling/2-transductive-methods - - Encoder Customization: content/examples/modeling/3-change-encoder - - Hydra Configuration: content/examples/advanced/1-hydra-config + - Training a Model: examples/2-full-training.ipynb + - New Environment: examples/3-creating-new-env-model.ipynb + - Decoding Strategies: examples/modeling/1-decoding-strategies.ipynb + - Transductive Methods: examples/modeling/2-transductive-methods.ipynb + - Encoder Customization: examples/modeling/3-change-encoder.ipynb + - Hydra Configuration: examples/advanced/1-hydra-config.ipynb - RL Algorithms: - - Base Algorithms: content/api/algos/base.md - - Reinforce: content/api/algos/reinforce.md - - PPO: content/api/algos/ppo.md - - A2C: content/api/algos/a2c.md + - Base Algorithms: docs/content/api/algos/base.md + - Reinforce: docs/content/api/algos/reinforce.md + - PPO: docs/content/api/algos/ppo.md + - A2C: docs/content/api/algos/a2c.md - Environments: - - Basic Environments: content/api/envs/base.md - - EDA Problems: content/api/envs/eda.md - - Routing Problems: content/api/envs/routing.md - - Scheduling Problems: content/api/envs/scheduling.md + - Basic Environments: docs/content/api/envs/base.md + - EDA Problems: docs/content/api/envs/eda.md + - Routing Problems: docs/content/api/envs/routing.md + - Scheduling Problems: docs/content/api/envs/scheduling.md - Networks: - - Neural Network Modules: content/api/models/nn.md - - Environment Embeddings: content/api/models/env_embeddings.md + - Neural Network Modules: docs/content/api/models/nn.md + - Environment Embeddings: docs/content/api/models/env_embeddings.md - Base NCO Methods: - - Constructive Policies: content/api/models/common/zoo/constructive.md - - Improvement Policies: content/api/models/common/zoo/improvement.md - - Transductive Models: content/api/models/common/zoo/transductive.md + - Constructive Policies: docs/content/api/models/common/zoo/constructive.md + - Improvement Policies: docs/content/api/models/common/zoo/improvement.md + - Transductive Models: docs/content/api/models/common/zoo/transductive.md - Additional APIs: - - Train and Evaluation: content/api/tasks.md - - Decoding Strategies: content/api/decoding.md - - Data: content/api/data.md + - Train and Evaluation: docs/content/api/tasks.md + - Decoding Strategies: docs/content/api/decoding.md + - Data: docs/content/api/data.md - Other: - - Contributing to RL4CO: content/general/contribute.md - - FAQ: content/general/faq.md + - Contributing to RL4CO: docs/content/general/contribute.md + - FAQ: docs/content/general/faq.md extra: social: @@ -57,8 +57,8 @@ extra: theme: name: material - logo: assets/figs/rl4co-logo.svg - favicon: assets/figs/rl4co-logo.svg + logo: docs/assets/figs/rl4co-logo.svg + favicon: docs/assets/figs/rl4co-logo.svg primary: red features: - announce.dismiss @@ -107,8 +107,8 @@ theme: code: Fira Code extra_css: - - stylesheets/extra.css # Our custom CSS - - stylesheets/mkdocstrings.css # mkdocstrings CSS + - docs/stylesheets/extra.css # Our custom CSS + - docs/stylesheets/mkdocstrings.css # mkdocstrings CSS - https://unpkg.com/katex@0/dist/katex.min.css # Latex math rendering extra_javascript: @@ -152,7 +152,6 @@ plugins: - https://pytorch.org/tensordict/stable/objects.inv - https://pytorch.org/docs/stable/objects.inv - https://lightning.ai/docs/pytorch/stable/objects.inv - - mike: alias_type: symlink canonical_version: latest @@ -161,6 +160,7 @@ plugins: - search - autorefs - autolinks + - same-dir hooks: - docs/hooks.py @@ -190,3 +190,7 @@ markdown_extensions: - attr_list - md_in_html - def_list + - mdx_truly_sane_lists + - mdx_breakless_lists + - gfm_admonition + diff --git a/pyproject.toml b/pyproject.toml index 3d17b497..5f99c7e5 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -61,6 +61,7 @@ classifiers = [ "Tracker" = "https://github.com/ai4co/rl4co/issues" [tool.poetry.dependencies] +# Required dependencies python = ">=3.8" einops = "*" hydra-core = "*" @@ -75,19 +76,54 @@ scipy = "*" tensordict = ">=0.4.0" torchrl = ">=0.4.0" wandb = "*" +# Dev dependencies black = { version = "*", optional = true } pre-commit = { version = ">=3.3.3", optional = true } ruff = { version = "*", optional = true } pytest = { version = "*", optional = true } pytest-cov = { version = "*", optional = true } +# Graph torch_geometric = { version = "*", optional = true } +# Routing numba = { version = ">=0.58.1", optional = true } pyvrp = { version = ">=0.8.2", optional = true } +# Docs +mkdocs = { version = "*", optional = true } +mkdocs-material = { version = "*", optional = true } +mkdocstrings-python = { version = "*", optional = true } +mike = { version = "*", optional = true } +mkdocs-jupyter = { version = "*", optional = true } +mkdocs-redirects = { version = "*", optional = true } +mkdocs-autolinks-plugin = { version = "*", optional = true } +griffe-typingdoc = { version = "*", optional = true } +griffe-inherited-docstrings = { version = "*", optional = true } +griffe = { version = "*", optional = true } +mkdocs-same-dir = { version = "*", optional = true } +mdx-breakless-lists = { version = "*", optional = true } +mdx-truly-sane-lists = { version = "*", optional = true } +markdown-gfm-admonition = { version = "*", optional = true } [tool.poetry.extras] dev = ["black", "pre-commit", "ruff", "pytest", "pytest-cov"] graph = ["torch_geometric"] routing = ["numba", "pyvrp"] +docs = [ + "mkdocs", + "mkdocs-material", + "mkdocstrings-python", + "mike", + "mkdocs-jupyter", + "mkdocs-redirects", + "mkdocs-autolinks-plugin", + "griffe-typingdoc", + "griffe-inherited-docstrings", + "griffe", + "black", # for formatting docstrings + "mkdocs-same-dir", + "mdx-breakless-lists", + "mdx-truly-sane-lists", + "markdown-gfm-admonition", +] [tool.black] line-length = 90 From 525730aaadf5aea5517d438f0c3f7f564968a244 Mon Sep 17 00:00:00 2001 From: Federico Berto Date: Mon, 22 Jul 2024 23:35:13 +0900 Subject: [PATCH 076/102] [Docs] document hooks usage --- docs/README.md | 15 +++++++-------- docs/hooks.py | 12 +----------- 2 files changed, 8 insertions(+), 19 deletions(-) diff --git a/docs/README.md b/docs/README.md index 139bdb50..169ab0e3 100644 --- a/docs/README.md +++ b/docs/README.md @@ -4,19 +4,18 @@ We use [MkDocs](https://www.mkdocs.org/) to generate the documentation with the ## Development -From root directory - install RL4CO locally: +From the root directory: + +1. Install RL4CO locally ```bash -pip install -e ".[dev,graph,routing]" +pip install -e ".[dev,graph,routing,docs]" ``` -Then, install the dependencies: +note that `docs` is the extra requirement for the documentation. -```bash -pip install -r docs/requirements.txt -``` -To build the documentation, run: +2. To build the documentation, run: ```bash mkdocs serve @@ -24,4 +23,4 @@ mkdocs serve ### Hooks -You may have noticed that we do not have an `index.md` file. This is because we are using [hooks.py](hooks.py) to copy the root `README.md` to `index.md`. We are also copying the examples folder and deleting it upon stopping the server. +We are using the [hooks.py](hooks.py) for additional modifications. MkDocs for instance cannot detect files that are not in the same directory as an `__init__.py` (as described [here](https://stackoverflow.com/questions/75232397/mkdocs-unable-to-find-modules)) so we are automatically creating and deleting such files with our script diff --git a/docs/hooks.py b/docs/hooks.py index 0dfb1daa..42954393 100644 --- a/docs/hooks.py +++ b/docs/hooks.py @@ -1,6 +1,5 @@ import logging import os -import shutil log = logging.getLogger("mkdocs") @@ -9,11 +8,6 @@ def on_startup(*args, **kwargs): - log.info("Copying examples directory to docs") - shutil.copytree("examples", "docs/examples", dirs_exist_ok=True) - log.info("Copying README.md to docs as index.md") - shutil.copyfile("README.md", "docs/index.md") - log.info("Creating missing __init__.py files in rl4co package") for subdir, dirs, files in os.walk("rl4co"): if "__init__.py" not in files: @@ -25,11 +19,7 @@ def on_startup(*args, **kwargs): def on_shutdown(*args, **kwargs): - log.info("Removing copied examples and index.md") - shutil.rmtree("docs/examples") - os.remove("docs/index.md") - log.info(f"Removing {len(created_files)} created __init__.py files") for file_path in created_files: if os.path.exists(file_path): - os.remove(file_path) + os.remove(file_path) \ No newline at end of file From b26a951b619a2fa7e62b55512c470c1c066894fd Mon Sep 17 00:00:00 2001 From: Federico Berto Date: Tue, 23 Jul 2024 00:23:02 +0900 Subject: [PATCH 077/102] [Docs] remove Home via custom styling --- docs/hooks.py | 29 ++++++++++++++++++++++++++++- mkdocs.yml | 2 +- 2 files changed, 29 insertions(+), 2 deletions(-) diff --git a/docs/hooks.py b/docs/hooks.py index 42954393..bf305b97 100644 --- a/docs/hooks.py +++ b/docs/hooks.py @@ -1,5 +1,7 @@ import logging import os +import shutil +from textwrap import dedent log = logging.getLogger("mkdocs") @@ -17,9 +19,34 @@ def on_startup(*args, **kwargs): created_files.append(init_file_path) log.info(f"{len(created_files)} __init__.py files created") + log.info("Copying README.md to docs/index.md and adding custom CSS") + shutil.copyfile("README.md", "docs/index.md") + + def append_css_to_readme(file_path): + css_content = dedent(""" + + """) + if not os.path.exists(file_path): + print(f"Error: The file {file_path} does not exist.") + return + with open(file_path, 'a') as file: + file.write(css_content) + print(f"CSS content has been appended to {file_path}") + + append_css_to_readme("docs/index.md") + def on_shutdown(*args, **kwargs): log.info(f"Removing {len(created_files)} created __init__.py files") for file_path in created_files: if os.path.exists(file_path): - os.remove(file_path) \ No newline at end of file + os.remove(file_path) + + log.info("Removing docs/index.md") + if os.path.exists("docs/index.md"): + os.remove("docs/index.md") \ No newline at end of file diff --git a/mkdocs.yml b/mkdocs.yml index f8b8681d..f404c803 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -8,7 +8,7 @@ copyright: Made with ❤️ by AI4CO contributors docs_dir: . nav: - - Home: README.md + - Home: docs/index.md - Getting Started: - Installation: docs/content/start/installation.md - Quick Start: docs/content/examples/1-quickstart.ipynb From 365ed5d3ef114e6a18f526c80032b7ef93543ac5 Mon Sep 17 00:00:00 2001 From: Federico Berto Date: Tue, 23 Jul 2024 02:24:29 +0900 Subject: [PATCH 078/102] [Docs] add several tricks --- README.md | 17 ++++++++-------- docs/hooks.py | 43 +++++++++++++++++++++++++--------------- docs/overrides/main.html | 12 +++++++++++ mkdocs.yml | 14 +++++++------ 4 files changed, 56 insertions(+), 30 deletions(-) create mode 100644 docs/overrides/main.html diff --git a/README.md b/README.md index b915728a..0b2e4a7d 100644 --- a/README.md +++ b/README.md @@ -42,8 +42,9 @@ RL4CO is built upon: - [PyTorch Lightning](https://github.com/Lightning-AI/lightning): a lightweight PyTorch wrapper for high-performance AI research - [Hydra](https://github.com/facebookresearch/hydra): a framework for elegantly configuring complex applications -RL4CO-Overview - +
    + RL4CO-Overview +
    We offer flexible and efficient implementations of the following policies: - **Constructive**: learn to construct a solution from scratch @@ -51,14 +52,16 @@ We offer flexible and efficient implementations of the following policies: - _NonAutoregressive (NAR)_: learn to predict a heuristic, such as a heatmap, to then construct a solution - **Improvement**: learn to improve an pre-existing solution -RL4CO-Policy-Overview - +
    + RL4CO-Policy-Overview +
    We provide several utilities and modularization. For example, we modularize reusable components such as _environment embeddings_ that can easily be swapped to [solve new problems](https://github.com/ai4co/rl4co/blob/main/examples/3-creating-new-env-model.ipynb). -RL4CO-Env-Embedding - +
    + RL4CO-Env-Embedding +
    ## Getting started @@ -219,5 +222,3 @@ We invite you to join our AI4CO community, an open research group in Artificial
    AI4CO Logo
    - - diff --git a/docs/hooks.py b/docs/hooks.py index bf305b97..240c514f 100644 --- a/docs/hooks.py +++ b/docs/hooks.py @@ -19,26 +19,38 @@ def on_startup(*args, **kwargs): created_files.append(init_file_path) log.info(f"{len(created_files)} __init__.py files created") - log.info("Copying README.md to docs/index.md and adding custom CSS") - shutil.copyfile("README.md", "docs/index.md") - + # huge trick: we save a backup of README.md and append CSS content to hide some elements + log.info("Saving backup of README.md and appending CSS content") + shutil.copyfile("README.md", "README_backup.md") + # warning: don't touch any of the following. you have been warned :) def append_css_to_readme(file_path): css_content = dedent(""" - - """) + --- + hide: + - navigation + - toc + --- + +
    + +
    + + """)[1:] # remove "\n" from the beginning if not os.path.exists(file_path): print(f"Error: The file {file_path} does not exist.") return - with open(file_path, 'a') as file: - file.write(css_content) + with open(file_path, 'r') as original: + data = original.read() + with open(file_path, 'w') as modified: + modified.write(css_content + data) print(f"CSS content has been appended to {file_path}") - append_css_to_readme("docs/index.md") + append_css_to_readme("README.md") def on_shutdown(*args, **kwargs): @@ -47,6 +59,5 @@ def on_shutdown(*args, **kwargs): if os.path.exists(file_path): os.remove(file_path) - log.info("Removing docs/index.md") - if os.path.exists("docs/index.md"): - os.remove("docs/index.md") \ No newline at end of file + log.info("Replace README.md with README_backup.md") + shutil.move("README_backup.md", "README.md") \ No newline at end of file diff --git a/docs/overrides/main.html b/docs/overrides/main.html new file mode 100644 index 00000000..9114c614 --- /dev/null +++ b/docs/overrides/main.html @@ -0,0 +1,12 @@ +{% extends "base.html" %} + +{% block content %} +{% if page.nb_url %} + + {% include ".icons/material/download.svg" %} + + +{% endif %} + +{{ super() }} +{% endblock content %} diff --git a/mkdocs.yml b/mkdocs.yml index f404c803..f39bc198 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -8,10 +8,10 @@ copyright: Made with ❤️ by AI4CO contributors docs_dir: . nav: - - Home: docs/index.md + - Home: README.md - Getting Started: - Installation: docs/content/start/installation.md - - Quick Start: docs/content/examples/1-quickstart.ipynb + - Quick Start: examples/1-quickstart.ipynb - Training with Hydra: docs/content/start/hydra.md - NCO Methods: docs/content/api/models/common/__init__ - Tutorials: @@ -59,6 +59,7 @@ theme: name: material logo: docs/assets/figs/rl4co-logo.svg favicon: docs/assets/figs/rl4co-logo.svg + custom_dir: docs/overrides primary: red features: - announce.dismiss @@ -77,7 +78,6 @@ theme: - navigation.top - navigation.tracking - navigation.tabs # horizontal tabs for navigation - - navigation.tabs.sticky # tabs do not scroll out of view - search.suggest - search.highlight - search.share @@ -112,7 +112,8 @@ extra_css: - https://unpkg.com/katex@0/dist/katex.min.css # Latex math rendering extra_javascript: - - js/katex.js # Latex math rendering + - docs/js/katex.js # Latex math rendering + - docs/js/particles.min.js - https://unpkg.com/katex@0/dist/katex.min.js # Latex math rendering - https://unpkg.com/katex@0/dist/contrib/auto-render.min.js # Latex math rendering @@ -155,8 +156,9 @@ plugins: - mike: alias_type: symlink canonical_version: latest - # - mkdocs-jupyter: - # include_source: True + - mkdocs-jupyter: + include_source: True + include: ["*ipynb"] - search - autorefs - autolinks From c26305dc22d491d7cfecc3ba6302f3c901daa764 Mon Sep 17 00:00:00 2001 From: Federico Berto Date: Wed, 24 Jul 2024 00:04:14 +0900 Subject: [PATCH 079/102] [Docs] your usual tricks --- docs/stylesheets/mkdocstrings.css | 67 ++++++++++++++++++++----------- mkdocs.yml | 2 +- 2 files changed, 45 insertions(+), 24 deletions(-) diff --git a/docs/stylesheets/mkdocstrings.css b/docs/stylesheets/mkdocstrings.css index b82fd1b8..e1774fb6 100644 --- a/docs/stylesheets/mkdocstrings.css +++ b/docs/stylesheets/mkdocstrings.css @@ -1,23 +1,44 @@ -.doc-symbol-parameter::after { - content: "P"; - } - - .doc-symbol-attribute::after { - content: "A"; - } - - .doc-symbol-function::after { - content: "F"; - } - - .doc-symbol-method::after { - content: "M"; - } - - .doc-symbol-class::after { - content: "C"; - } - - .doc-symbol-module::after { - content: "M"; - } +/* Indentation. */ +div.doc-contents:not(.first) { + padding-left: 15px; + border-left: .05rem solid var(--md-typeset-table-color); +} + + +/* Fancier color for operators such as * and |. */ +.doc-signature .o { + color: var(--md-code-hl-special-color); +} + +/* Fancier color for constants such as None, True, and False. */ +.doc-signature .kc { + color: var(--md-code-hl-constant-color); +} + +/* Fancier color for built-in types (only useful when cross-references are used). */ +.doc-signature .n > a[href^="https://docs.python.org/"][href*="/functions.html#"], +.doc-signature .n > a[href^="https://docs.python.org/"][href*="/stdtypes.html#"] { + color: var(--md-code-hl-constant-color); +} + + +/* Nice names only in TOC */ +.doc-symbol-toc.doc-symbol-method::after { + content: "F"; +} + +.doc-symbol-toc.doc-symbol-class::after { + content: "C"; +} + +.doc-symbol-toc.doc-symbol-module::after { + content: "M"; +} + +.doc-symbol-toc.doc-symbol-attribute::after { + content: "A"; +} + +.doc-symbol-toc.doc-symbol-parameter::after { + content: "P"; +} \ No newline at end of file diff --git a/mkdocs.yml b/mkdocs.yml index f39bc198..bcda7621 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -65,6 +65,7 @@ theme: - announce.dismiss - content.code.copy - content.code.annotate + - content.code.select - content.tabs.link - content.tooltips - navigation.expand @@ -82,7 +83,6 @@ theme: - search.highlight - search.share - toc.follow - - toc.integrate palette: - media: "(prefers-color-scheme)" toggle: From e19d3cd95eb17f0c960fae1f23a85c6ea5008099 Mon Sep 17 00:00:00 2001 From: Federico Berto Date: Wed, 24 Jul 2024 02:27:49 +0900 Subject: [PATCH 080/102] [Docs] add tsparticles :sparkles: --- docs/hooks.py | 29 +++++++++-------------------- docs/js/tsparticles.js | 2 ++ 2 files changed, 11 insertions(+), 20 deletions(-) create mode 100644 docs/js/tsparticles.js diff --git a/docs/hooks.py b/docs/hooks.py index 240c514f..24d6640b 100644 --- a/docs/hooks.py +++ b/docs/hooks.py @@ -23,34 +23,23 @@ def on_startup(*args, **kwargs): log.info("Saving backup of README.md and appending CSS content") shutil.copyfile("README.md", "README_backup.md") # warning: don't touch any of the following. you have been warned :) - def append_css_to_readme(file_path): - css_content = dedent(""" - --- - hide: - - navigation - - toc - --- - -
    - -
    - - """)[1:] # remove "\n" from the beginning + def append_tricks_to_readme(file_path): + # read the tricks from docs/overrides/fancylogo.txt + # and put them at the beginning of the file + with open("docs/overrides/fancylogo.txt", 'r') as fancylogo: + tricks = fancylogo.read() if not os.path.exists(file_path): print(f"Error: The file {file_path} does not exist.") return with open(file_path, 'r') as original: data = original.read() + # remove first 33 lines. yeah, it's a hack to remove unneded stuff lol + data = '\n'.join(data.split('\n')[33:]) with open(file_path, 'w') as modified: - modified.write(css_content + data) + modified.write(tricks + data) print(f"CSS content has been appended to {file_path}") - append_css_to_readme("README.md") + append_tricks_to_readme("README.md") def on_shutdown(*args, **kwargs): diff --git a/docs/js/tsparticles.js b/docs/js/tsparticles.js new file mode 100644 index 00000000..bf96e09b --- /dev/null +++ b/docs/js/tsparticles.js @@ -0,0 +1,2 @@ +/*! For license information please see tsparticles.bundle.min.js.LICENSE.txt */ +!function(t,e){if("object"==typeof exports&&"object"==typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var i=e();for(var s in i)("object"==typeof exports?exports:t)[s]=i[s]}}(this,(()=>(()=>{"use strict";var t={d:(e,i)=>{for(var s in i)t.o(i,s)&&!t.o(e,s)&&Object.defineProperty(e,s,{enumerable:!0,get:i[s]})},o:(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r:t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}},e={};t.r(e),t.d(e,{AnimatableColor:()=>Se,AnimationOptions:()=>Me,AnimationValueWithRandom:()=>Ee,Background:()=>le,BackgroundMask:()=>de,BackgroundMaskCover:()=>he,Circle:()=>yi,ClickEvent:()=>pe,Collisions:()=>Fe,CollisionsAbsorb:()=>De,CollisionsOverlap:()=>Te,ColorAnimation:()=>Pe,DivEvent:()=>fe,Events:()=>ge,ExternalInteractorBase:()=>Si,FullScreen:()=>ue,HoverEvent:()=>ye,HslAnimation:()=>Oe,HslColorManager:()=>Pi,Interactivity:()=>we,ManualParticle:()=>xe,Modes:()=>be,Move:()=>Xe,MoveAngle:()=>qe,MoveAttract:()=>He,MoveCenter:()=>Ve,MoveGravity:()=>Ue,MovePath:()=>We,MoveTrail:()=>je,Opacity:()=>Ze,OpacityAnimation:()=>Ye,Options:()=>li,OptionsColor:()=>ce,OutModes:()=>Ge,Parallax:()=>ve,ParticlesBounce:()=>Ae,ParticlesBounceFactor:()=>Le,ParticlesDensity:()=>Qe,ParticlesInteractorBase:()=>Di,ParticlesNumber:()=>Ke,ParticlesNumberLimit:()=>Je,ParticlesOptions:()=>ai,Point:()=>pi,Range:()=>fi,RangedAnimationOptions:()=>Ce,RangedAnimationValueWithRandom:()=>Ie,Rectangle:()=>vi,ResizeEvent:()=>me,Responsive:()=>_e,RgbColorManager:()=>Oi,Shadow:()=>ti,Shape:()=>ei,Size:()=>si,SizeAnimation:()=>ii,Spin:()=>Ne,Stroke:()=>oi,Theme:()=>ze,ThemeDefault:()=>ke,ValueWithRandom:()=>Re,Vector:()=>y,Vector3d:()=>v,ZIndex:()=>ni,addColorManager:()=>Pt,addEasing:()=>b,alterHsl:()=>se,areBoundsInside:()=>et,arrayRandomIndex:()=>J,calcExactPositionOrRandomFromSize:()=>B,calcExactPositionOrRandomFromSizeRanged:()=>q,calcPositionFromSize:()=>L,calcPositionOrRandomFromSize:()=>A,calcPositionOrRandomFromSizeRanged:()=>F,calculateBounds:()=>it,circleBounce:()=>lt,circleBounceDataFromParticle:()=>ct,clamp:()=>k,clear:()=>Zt,collisionVelocity:()=>I,colorMix:()=>Vt,colorToHsl:()=>Tt,colorToRgb:()=>Dt,deepExtend:()=>st,divMode:()=>rt,divModeExecute:()=>nt,drawEffect:()=>Jt,drawLine:()=>Nt,drawParticle:()=>Qt,drawParticlePlugin:()=>ie,drawPlugin:()=>ee,drawShape:()=>Kt,drawShapeAfterDraw:()=>te,errorPrefix:()=>f,executeOnSingleOrMultiple:()=>dt,findItemFromSingleOrMultiple:()=>pt,generatedAttribute:()=>i,getDistance:()=>T,getDistances:()=>D,getEasing:()=>w,getHslAnimationFromHsl:()=>jt,getHslFromAnimation:()=>$t,getLinkColor:()=>Ut,getLinkRandomColor:()=>Wt,getLogger:()=>W,getParticleBaseVelocity:()=>E,getParticleDirectionAngle:()=>R,getPosition:()=>yt,getRandom:()=>_,getRandomRgbColor:()=>Bt,getRangeMax:()=>O,getRangeMin:()=>P,getRangeValue:()=>C,getSize:()=>mt,getStyleFromHsl:()=>Ht,getStyleFromRgb:()=>qt,hasMatchMedia:()=>G,hslToRgb:()=>At,hslaToRgba:()=>Ft,initParticleNumericAnimationValue:()=>ft,isArray:()=>kt,isBoolean:()=>gt,isDivModeEnabled:()=>ot,isFunction:()=>xt,isInArray:()=>Z,isNumber:()=>wt,isObject:()=>_t,isPointInside:()=>tt,isSsr:()=>j,isString:()=>bt,itemFromArray:()=>K,itemFromSingleOrMultiple:()=>ut,loadFont:()=>Q,loadFull:()=>gn,loadOptions:()=>ri,loadParticlesOptions:()=>ci,loadSlim:()=>an,mix:()=>z,mouseDownEvent:()=>s,mouseLeaveEvent:()=>n,mouseMoveEvent:()=>r,mouseOutEvent:()=>a,mouseUpEvent:()=>o,paintBase:()=>Xt,paintImage:()=>Yt,parseAlpha:()=>H,randomInRange:()=>M,rangeColorToHsl:()=>Rt,rangeColorToRgb:()=>St,rectBounce:()=>ht,resizeEvent:()=>u,rgbToHsl:()=>Et,safeIntersectionObserver:()=>X,safeMatchMedia:()=>N,safeMutationObserver:()=>Y,setLogger:()=>U,setRandom:()=>x,setRangeValue:()=>S,singleDivModeExecute:()=>at,stringToAlpha:()=>It,stringToRgb:()=>Lt,touchCancelEvent:()=>d,touchEndEvent:()=>l,touchMoveEvent:()=>h,touchStartEvent:()=>c,tsParticles:()=>Ti,visibilityChangeEvent:()=>p});const i="generated",s="pointerdown",o="pointerup",n="pointerleave",a="pointerout",r="pointermove",c="touchstart",l="touchend",h="touchmove",d="touchcancel",u="resize",p="visibilitychange",f="tsParticles - Error";class v{constructor(t,e,i){if(this._updateFromAngle=(t,e)=>{this.x=Math.cos(t)*e,this.y=Math.sin(t)*e},!wt(t)&&t){this.x=t.x,this.y=t.y;const e=t;this.z=e.z?e.z:0}else{if(void 0===t||void 0===e)throw new Error(`${f} Vector3d not initialized correctly`);this.x=t,this.y=e,this.z=i??0}}static get origin(){return v.create(0,0,0)}get angle(){return Math.atan2(this.y,this.x)}set angle(t){this._updateFromAngle(t,this.length)}get length(){return Math.sqrt(this.getLengthSq())}set length(t){this._updateFromAngle(this.angle,t)}static clone(t){return v.create(t.x,t.y,t.z)}static create(t,e,i){return new v(t,e,i)}add(t){return v.create(this.x+t.x,this.y+t.y,this.z+t.z)}addTo(t){this.x+=t.x,this.y+=t.y,this.z+=t.z}copy(){return v.clone(this)}distanceTo(t){return this.sub(t).length}distanceToSq(t){return this.sub(t).getLengthSq()}div(t){return v.create(this.x/t,this.y/t,this.z/t)}divTo(t){this.x/=t,this.y/=t,this.z/=t}getLengthSq(){return this.x**2+this.y**2}mult(t){return v.create(this.x*t,this.y*t,this.z*t)}multTo(t){this.x*=t,this.y*=t,this.z*=t}normalize(){const t=this.length;0!=t&&this.multTo(1/t)}rotate(t){return v.create(this.x*Math.cos(t)-this.y*Math.sin(t),this.x*Math.sin(t)+this.y*Math.cos(t),0)}setTo(t){this.x=t.x,this.y=t.y;const e=t;this.z=e.z?e.z:0}sub(t){return v.create(this.x-t.x,this.y-t.y,this.z-t.z)}subFrom(t){this.x-=t.x,this.y-=t.y,this.z-=t.z}}class y extends v{constructor(t,e){super(t,e,0)}static get origin(){return y.create(0,0)}static clone(t){return y.create(t.x,t.y)}static create(t,e){return new y(t,e)}}let m=Math.random;const g=new Map;function b(t,e){g.get(t)||g.set(t,e)}function w(t){return g.get(t)||(t=>t)}function x(t=Math.random){m=t}function _(){return k(m(),0,1-1e-16)}function k(t,e,i){return Math.min(Math.max(t,e),i)}function z(t,e,i,s){return Math.floor((t*i+e*s)/(i+s))}function M(t){const e=O(t);let i=P(t);return e===i&&(i=0),_()*(e-i)+i}function C(t){return wt(t)?t:M(t)}function P(t){return wt(t)?t:t.min}function O(t){return wt(t)?t:t.max}function S(t,e){if(t===e||void 0===e&&wt(t))return t;const i=P(t),s=O(t);return void 0!==e?{min:Math.min(i,e),max:Math.max(s,e)}:S(i,s)}function D(t,e){const i=t.x-e.x,s=t.y-e.y;return{dx:i,dy:s,distance:Math.sqrt(i**2+s**2)}}function T(t,e){return D(t,e).distance}function R(t,e,i){if(wt(t))return t*Math.PI/180;switch(t){case"top":return.5*-Math.PI;case"top-right":return.25*-Math.PI;case"right":return 0;case"bottom-right":return.25*Math.PI;case"bottom":return.5*Math.PI;case"bottom-left":return.75*Math.PI;case"left":return Math.PI;case"top-left":return.75*-Math.PI;case"inside":return Math.atan2(i.y-e.y,i.x-e.x);case"outside":return Math.atan2(e.y-i.y,e.x-i.x);default:return _()*Math.PI*2}}function E(t){const e=y.origin;return e.length=1,e.angle=t,e}function I(t,e,i,s){return y.create(t.x*(i-s)/(i+s)+2*e.x*s/(i+s),t.y)}function L(t){return t.position&&void 0!==t.position.x&&void 0!==t.position.y?{x:t.position.x*t.size.width/100,y:t.position.y*t.size.height/100}:void 0}function A(t){return{x:(t.position?.x??100*_())*t.size.width/100,y:(t.position?.y??100*_())*t.size.height/100}}function F(t){const e={x:void 0!==t.position?.x?C(t.position.x):void 0,y:void 0!==t.position?.y?C(t.position.y):void 0};return A({size:t.size,position:e})}function B(t){return{x:t.position?.x??_()*t.size.width,y:t.position?.y??_()*t.size.height}}function q(t){const e={x:void 0!==t.position?.x?C(t.position.x):void 0,y:void 0!==t.position?.y?C(t.position.y):void 0};return B({size:t.size,position:e})}function H(t){return t?t.endsWith("%")?parseFloat(t)/100:parseFloat(t):1}const V={debug:console.debug,error:console.error,info:console.info,log:console.log,verbose:console.log,warning:console.warn};function U(t){V.debug=t.debug||V.debug,V.error=t.error||V.error,V.info=t.info||V.info,V.log=t.log||V.log,V.verbose=t.verbose||V.verbose,V.warning=t.warning||V.warning}function W(){return V}function $(t){const e={bounced:!1},{pSide:i,pOtherSide:s,rectSide:o,rectOtherSide:n,velocity:a,factor:r}=t;return s.minn.max||s.maxn.max||(i.max>=o.min&&i.max<=.5*(o.max+o.min)&&a>0||i.min<=o.max&&i.min>.5*(o.max+o.min)&&a<0)&&(e.velocity=a*-r,e.bounced=!0),e}function j(){return"undefined"==typeof window||!window||void 0===window.document||!window.document}function G(){return!j()&&"undefined"!=typeof matchMedia}function N(t){if(G())return matchMedia(t)}function X(t){if(!j()&&"undefined"!=typeof IntersectionObserver)return new IntersectionObserver(t)}function Y(t){if(!j()&&"undefined"!=typeof MutationObserver)return new MutationObserver(t)}function Z(t,e){return t===e||kt(e)&&e.indexOf(t)>-1}async function Q(t,e){try{await document.fonts.load(`${e??"400"} 36px '${t??"Verdana"}'`)}catch{}}function J(t){return Math.floor(_()*t.length)}function K(t,e,i=!0){return t[void 0!==e&&i?e%t.length:J(t)]}function tt(t,e,i,s,o){return et(it(t,s??0),e,i,o)}function et(t,e,i,s){let o=!0;return s&&"bottom"!==s||(o=t.topi.x),!o||s&&"right"!==s||(o=t.lefti.y),o}function it(t,e){return{bottom:t.y+e,left:t.x-e,right:t.x+e,top:t.y-e}}function st(t,...e){for(const i of e){if(null==i)continue;if(!_t(i)){t=i;continue}const e=Array.isArray(i);!e||!_t(t)&&t&&Array.isArray(t)?e||!_t(t)&&t&&!Array.isArray(t)||(t={}):t=[];for(const e in i){if("__proto__"===e)continue;const s=i[e],o=t;o[e]=_t(s)&&Array.isArray(s)?s.map((t=>st(o[e],t))):st(o[e],s)}}return t}function ot(t,e){return!!pt(e,(e=>e.enable&&Z(t,e.mode)))}function nt(t,e,i){dt(e,(e=>{const s=e.mode;e.enable&&Z(t,s)&&at(e,i)}))}function at(t,e){dt(t.selectors,(i=>{e(i,t)}))}function rt(t,e){if(e&&t)return pt(t,(t=>function(t,e){const i=dt(e,(e=>t.matches(e)));return kt(i)?i.some((t=>t)):i}(e,t.selectors)))}function ct(t){return{position:t.getPosition(),radius:t.getRadius(),mass:t.getMass(),velocity:t.velocity,factor:y.create(C(t.options.bounce.horizontal.value),C(t.options.bounce.vertical.value))}}function lt(t,e){const{x:i,y:s}=t.velocity.sub(e.velocity),[o,n]=[t.position,e.position],{dx:a,dy:r}=D(n,o);if(i*a+s*r<0)return;const c=-Math.atan2(r,a),l=t.mass,h=e.mass,d=t.velocity.rotate(c),u=e.velocity.rotate(c),p=I(d,u,l,h),f=I(u,d,l,h),v=p.rotate(-c),y=f.rotate(-c);t.velocity.x=v.x*t.factor.x,t.velocity.y=v.y*t.factor.y,e.velocity.x=y.x*e.factor.x,e.velocity.y=y.y*e.factor.y}function ht(t,e){const i=it(t.getPosition(),t.getRadius()),s=t.options.bounce,o=$({pSide:{min:i.left,max:i.right},pOtherSide:{min:i.top,max:i.bottom},rectSide:{min:e.left,max:e.right},rectOtherSide:{min:e.top,max:e.bottom},velocity:t.velocity.x,factor:C(s.horizontal.value)});o.bounced&&(void 0!==o.velocity&&(t.velocity.x=o.velocity),void 0!==o.position&&(t.position.x=o.position));const n=$({pSide:{min:i.top,max:i.bottom},pOtherSide:{min:i.left,max:i.right},rectSide:{min:e.top,max:e.bottom},rectOtherSide:{min:e.left,max:e.right},velocity:t.velocity.y,factor:C(s.vertical.value)});n.bounced&&(void 0!==n.velocity&&(t.velocity.y=n.velocity),void 0!==n.position&&(t.position.y=n.position))}function dt(t,e){return kt(t)?t.map(((t,i)=>e(t,i))):e(t,0)}function ut(t,e,i){return kt(t)?K(t,e,i):t}function pt(t,e){return kt(t)?t.find(((t,i)=>e(t,i))):e(t,0)?t:void 0}function ft(t,e){const i=t.value,s=t.animation,o={delayTime:1e3*C(s.delay),enable:s.enable,value:C(t.value)*e,max:O(i)*e,min:P(i)*e,loops:0,maxLoops:C(s.count),time:0};if(s.enable){switch(o.decay=1-C(s.decay),s.mode){case"increase":o.status="increasing";break;case"decrease":o.status="decreasing";break;case"random":o.status=_()>=.5?"increasing":"decreasing"}const t="auto"===s.mode;switch(s.startValue){case"min":o.value=o.min,t&&(o.status="increasing");break;case"max":o.value=o.max,t&&(o.status="decreasing");break;default:o.value=M(o),t&&(o.status=_()>=.5?"increasing":"decreasing")}}return o.initialValue=o.value,o}function vt(t,e){if(!("percent"===t.mode)){const{mode:e,...i}=t;return i}return"x"in t?{x:t.x/100*e.width,y:t.y/100*e.height}:{width:t.width/100*e.width,height:t.height/100*e.height}}function yt(t,e){return vt(t,e)}function mt(t,e){return vt(t,e)}function gt(t){return"boolean"==typeof t}function bt(t){return"string"==typeof t}function wt(t){return"number"==typeof t}function xt(t){return"function"==typeof t}function _t(t){return"object"==typeof t&&null!==t}function kt(t){return Array.isArray(t)}const zt="random",Mt="mid",Ct=new Map;function Pt(t){Ct.set(t.key,t)}function Ot(t){for(const[,e]of Ct)if(t.startsWith(e.stringPrefix))return e.parseString(t);const e=t.replace(/^#?([a-f\d])([a-f\d])([a-f\d])([a-f\d])?$/i,((t,e,i,s,o)=>e+e+i+i+s+s+(void 0!==o?o+o:""))),i=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})?$/i.exec(e);return i?{a:void 0!==i[4]?parseInt(i[4],16)/255:1,b:parseInt(i[3],16),g:parseInt(i[2],16),r:parseInt(i[1],16)}:void 0}function St(t,e,i=!0){if(!t)return;const s=bt(t)?{value:t}:t;if(bt(s.value))return Dt(s.value,e,i);if(kt(s.value))return St({value:K(s.value,e,i)});for(const[,t]of Ct){const e=t.handleRangeColor(s);if(e)return e}}function Dt(t,e,i=!0){if(!t)return;const s=bt(t)?{value:t}:t;if(bt(s.value))return s.value===zt?Bt():Lt(s.value);if(kt(s.value))return Dt({value:K(s.value,e,i)});for(const[,t]of Ct){const e=t.handleColor(s);if(e)return e}}function Tt(t,e,i=!0){const s=Dt(t,e,i);return s?Et(s):void 0}function Rt(t,e,i=!0){const s=St(t,e,i);return s?Et(s):void 0}function Et(t){const e=t.r/255,i=t.g/255,s=t.b/255,o=Math.max(e,i,s),n=Math.min(e,i,s),a={h:0,l:.5*(o+n),s:0};return o!==n&&(a.s=a.l<.5?(o-n)/(o+n):(o-n)/(2-o-n),a.h=e===o?(i-s)/(o-n):a.h=i===o?2+(s-e)/(o-n):4+(e-i)/(o-n)),a.l*=100,a.s*=100,a.h*=60,a.h<0&&(a.h+=360),a.h>=360&&(a.h-=360),a}function It(t){return Ot(t)?.a}function Lt(t){return Ot(t)}function At(t){const e=(t.h%360+360)%360,i=Math.max(0,Math.min(100,t.s)),s=e/360,o=i/100,n=Math.max(0,Math.min(100,t.l))/100;if(0===i){const t=Math.round(255*n);return{r:t,g:t,b:t}}const a=(t,e,i)=>(i<0&&(i+=1),i>1&&(i-=1),6*i<1?t+6*(e-t)*i:2*i<1?e:3*i<2?t+(e-t)*(2/3-i)*6:t),r=n<.5?n*(1+o):n+o-n*o,c=2*n-r,l=Math.min(255,255*a(c,r,s+1/3)),h=Math.min(255,255*a(c,r,s)),d=Math.min(255,255*a(c,r,s-1/3));return{r:Math.round(l),g:Math.round(h),b:Math.round(d)}}function Ft(t){const e=At(t);return{a:t.a,b:e.b,g:e.g,r:e.r}}function Bt(t){const e=t??0;return{b:Math.floor(M(S(e,256))),g:Math.floor(M(S(e,256))),r:Math.floor(M(S(e,256)))}}function qt(t,e){return`rgba(${t.r}, ${t.g}, ${t.b}, ${e??1})`}function Ht(t,e){return`hsla(${t.h}, ${t.s}%, ${t.l}%, ${e??1})`}function Vt(t,e,i,s){let o=t,n=e;return void 0===o.r&&(o=At(t)),void 0===n.r&&(n=At(e)),{b:z(o.b,n.b,i,s),g:z(o.g,n.g,i,s),r:z(o.r,n.r,i,s)}}function Ut(t,e,i){if(i===zt)return Bt();if(i!==Mt)return i;{const i=t.getFillColor()??t.getStrokeColor(),s=e?.getFillColor()??e?.getStrokeColor();if(i&&s&&e)return Vt(i,s,t.getRadius(),e.getRadius());{const t=i??s;if(t)return At(t)}}}function Wt(t,e,i){const s=bt(t)?t:t.value;return s===zt?i?St({value:s}):e?zt:Mt:s===Mt?Mt:St({value:s})}function $t(t){return void 0!==t?{h:t.h.value,s:t.s.value,l:t.l.value}:void 0}function jt(t,e,i){const s={h:{enable:!1,value:t.h},s:{enable:!1,value:t.s},l:{enable:!1,value:t.l}};return e&&(Gt(s.h,e.h,i),Gt(s.s,e.s,i),Gt(s.l,e.l,i)),s}function Gt(t,e,i){t.enable=e.enable,t.enable?(t.velocity=C(e.speed)/100*i,t.decay=1-C(e.decay),t.status="increasing",t.loops=0,t.maxLoops=C(e.count),t.time=0,t.delayTime=1e3*C(e.delay),e.sync||(t.velocity*=_(),t.value*=_()),t.initialValue=t.value):t.velocity=0}function Nt(t,e,i){t.beginPath(),t.moveTo(e.x,e.y),t.lineTo(i.x,i.y),t.closePath()}function Xt(t,e,i){t.fillStyle=i??"rgba(0,0,0,0)",t.fillRect(0,0,e.width,e.height)}function Yt(t,e,i,s){i&&(t.globalAlpha=s,t.drawImage(i,0,0,e.width,e.height),t.globalAlpha=1)}function Zt(t,e){t.clearRect(0,0,e.width,e.height)}function Qt(t){const{container:e,context:i,particle:s,delta:o,colorStyles:n,backgroundMask:a,composite:r,radius:c,opacity:l,shadow:h,transform:d}=t,u=s.getPosition(),p=s.rotation+(s.pathRotation?s.velocity.angle:0),f=Math.sin(p),v=Math.cos(p),y={a:v*(d.a??1),b:f*(d.b??1),c:-f*(d.c??1),d:v*(d.d??1)};i.setTransform(y.a,y.b,y.c,y.d,u.x,u.y),a&&(i.globalCompositeOperation=r);const m=s.shadowColor;h.enable&&m&&(i.shadowBlur=h.blur,i.shadowColor=qt(m),i.shadowOffsetX=h.offset.x,i.shadowOffsetY=h.offset.y),n.fill&&(i.fillStyle=n.fill);const g=s.strokeWidth??0;i.lineWidth=g,n.stroke&&(i.strokeStyle=n.stroke);const b={container:e,context:i,particle:s,radius:c,opacity:l,delta:o,transformData:y};i.beginPath(),Kt(b),s.shapeClose&&i.closePath(),g>0&&i.stroke(),s.shapeFill&&i.fill(),te(b),Jt(b),i.globalCompositeOperation="source-over",i.setTransform(1,0,0,1,0,0)}function Jt(t){const{container:e,context:i,particle:s,radius:o,opacity:n,delta:a,transformData:r}=t;if(!s.effect)return;const c=e.effectDrawers.get(s.effect);c&&c.draw({context:i,particle:s,radius:o,opacity:n,delta:a,pixelRatio:e.retina.pixelRatio,transformData:{...r}})}function Kt(t){const{container:e,context:i,particle:s,radius:o,opacity:n,delta:a,transformData:r}=t;if(!s.shape)return;const c=e.shapeDrawers.get(s.shape);c&&c.draw({context:i,particle:s,radius:o,opacity:n,delta:a,pixelRatio:e.retina.pixelRatio,transformData:{...r}})}function te(t){const{container:e,context:i,particle:s,radius:o,opacity:n,delta:a,transformData:r}=t;if(!s.shape)return;const c=e.shapeDrawers.get(s.shape);c&&c.afterDraw&&c.afterDraw({context:i,particle:s,radius:o,opacity:n,delta:a,pixelRatio:e.retina.pixelRatio,transformData:{...r}})}function ee(t,e,i){e.draw&&e.draw(t,i)}function ie(t,e,i,s){e.drawParticle&&e.drawParticle(t,i,s)}function se(t,e,i){return{h:t.h,s:t.s,l:t.l+("darken"===e?-1:1)*i}}function oe(t,e,i){const s=e[i];void 0!==s&&(t[i]=(t[i]??1)*s)}class ne{constructor(t){this.container=t,this._applyPostDrawUpdaters=t=>{for(const e of this._postDrawUpdaters)e.afterDraw&&e.afterDraw(t)},this._applyPreDrawUpdaters=(t,e,i,s,o,n)=>{for(const a of this._preDrawUpdaters){if(a.getColorStyles){const{fill:n,stroke:r}=a.getColorStyles(e,t,i,s);n&&(o.fill=n),r&&(o.stroke=r)}if(a.getTransformValues){const t=a.getTransformValues(e);for(const e in t)oe(n,t,e)}a.beforeDraw&&a.beforeDraw(e)}},this._applyResizePlugins=()=>{for(const t of this._resizePlugins)t.resize&&t.resize()},this._getPluginParticleColors=t=>{let e,i;for(const s of this._colorPlugins)if(!e&&s.particleFillColor&&(e=Rt(s.particleFillColor(t))),!i&&s.particleStrokeColor&&(i=Rt(s.particleStrokeColor(t))),e&&i)break;return[e,i]},this._initCover=()=>{const t=this.container.actualOptions.backgroundMask.cover,e=St(t.color);if(e){const i={...e,a:t.opacity};this._coverColorStyle=qt(i,i.a)}},this._initStyle=()=>{const t=this.element,e=this.container.actualOptions;if(t){this._fullScreen?(this._originalStyle=st({},t.style),this._setFullScreenStyle()):this._resetOriginalStyle();for(const i in e.style){if(!i||!e.style)continue;const s=e.style[i];s&&t.style.setProperty(i,s,"important")}}},this._initTrail=async()=>{const t=this.container.actualOptions,e=t.particles.move.trail,i=e.fill;if(e.enable)if(i.color){const e=St(i.color);if(!e)return;const s=t.particles.move.trail;this._trailFill={color:{...e},opacity:1/s.length}}else await new Promise(((t,s)=>{if(!i.image)return;const o=document.createElement("img");o.addEventListener("load",(()=>{this._trailFill={image:o,opacity:1/e.length},t()})),o.addEventListener("error",(t=>{s(t.error)})),o.src=i.image}))},this._paintBase=t=>{this.draw((e=>Xt(e,this.size,t)))},this._paintImage=(t,e)=>{this.draw((i=>Yt(i,this.size,t,e)))},this._repairStyle=()=>{const t=this.element;t&&(this._safeMutationObserver((t=>t.disconnect())),this._initStyle(),this.initBackground(),this._safeMutationObserver((e=>e.observe(t,{attributes:!0}))))},this._resetOriginalStyle=()=>{const t=this.element,e=this._originalStyle;if(!t||!e)return;const i=t.style;i.position=e.position,i.zIndex=e.zIndex,i.top=e.top,i.left=e.left,i.width=e.width,i.height=e.height},this._safeMutationObserver=t=>{this._mutationObserver&&t(this._mutationObserver)},this._setFullScreenStyle=()=>{const t=this.element;if(!t)return;const e="important",i=t.style;i.setProperty("position","fixed",e),i.setProperty("z-index",this.container.actualOptions.fullScreen.zIndex.toString(10),e),i.setProperty("top","0",e),i.setProperty("left","0",e),i.setProperty("width","100%",e),i.setProperty("height","100%",e)},this.size={height:0,width:0},this._context=null,this._generated=!1,this._preDrawUpdaters=[],this._postDrawUpdaters=[],this._resizePlugins=[],this._colorPlugins=[]}get _fullScreen(){return this.container.actualOptions.fullScreen.enable}clear(){const t=this.container.actualOptions,e=t.particles.move.trail,i=this._trailFill;t.backgroundMask.enable?this.paint():e.enable&&e.length>0&&i?i.color?this._paintBase(qt(i.color,i.opacity)):i.image&&this._paintImage(i.image,i.opacity):t.clear&&this.draw((t=>{Zt(t,this.size)}))}destroy(){if(this.stop(),this._generated){const t=this.element;t&&t.remove()}else this._resetOriginalStyle();this._preDrawUpdaters=[],this._postDrawUpdaters=[],this._resizePlugins=[],this._colorPlugins=[]}draw(t){const e=this._context;if(e)return t(e)}drawParticle(t,e){if(t.spawning||t.destroyed)return;const i=t.getRadius();if(i<=0)return;const s=t.getFillColor(),o=t.getStrokeColor()??s;let[n,a]=this._getPluginParticleColors(t);n||(n=s),a||(a=o),(n||a)&&this.draw((s=>{const o=this.container,r=o.actualOptions,c=t.options.zIndex,l=(1-t.zIndexFactor)**c.opacityRate,h=t.bubble.opacity??t.opacity?.value??1,d=h*l,u=(t.strokeOpacity??h)*l,p={},f={fill:n?Ht(n,d):void 0};f.stroke=a?Ht(a,u):f.fill,this._applyPreDrawUpdaters(s,t,i,d,f,p),Qt({container:o,context:s,particle:t,delta:e,colorStyles:f,backgroundMask:r.backgroundMask.enable,composite:r.backgroundMask.composite,radius:i*(1-t.zIndexFactor)**c.sizeRate,opacity:d,shadow:t.options.shadow,transform:p}),this._applyPostDrawUpdaters(t)}))}drawParticlePlugin(t,e,i){this.draw((s=>ie(s,t,e,i)))}drawPlugin(t,e){this.draw((i=>ee(i,t,e)))}async init(){this._safeMutationObserver((t=>t.disconnect())),this._mutationObserver=Y((t=>{for(const e of t)"attributes"===e.type&&"style"===e.attributeName&&this._repairStyle()})),this.resize(),this._initStyle(),this._initCover();try{await this._initTrail()}catch(t){W().error(t)}this.initBackground(),this._safeMutationObserver((t=>{this.element&&t.observe(this.element,{attributes:!0})})),this.initUpdaters(),this.initPlugins(),this.paint()}initBackground(){const t=this.container.actualOptions.background,e=this.element;if(!e)return;const i=e.style;if(i){if(t.color){const e=St(t.color);i.backgroundColor=e?qt(e,t.opacity):""}else i.backgroundColor="";i.backgroundImage=t.image||"",i.backgroundPosition=t.position||"",i.backgroundRepeat=t.repeat||"",i.backgroundSize=t.size||""}}initPlugins(){this._resizePlugins=[];for(const[,t]of this.container.plugins)t.resize&&this._resizePlugins.push(t),(t.particleFillColor||t.particleStrokeColor)&&this._colorPlugins.push(t)}initUpdaters(){this._preDrawUpdaters=[],this._postDrawUpdaters=[];for(const t of this.container.particles.updaters)t.afterDraw&&this._postDrawUpdaters.push(t),(t.getColorStyles||t.getTransformValues||t.beforeDraw)&&this._preDrawUpdaters.push(t)}loadCanvas(t){this._generated&&this.element&&this.element.remove(),this._generated=t.dataset&&i in t.dataset?"true"===t.dataset[i]:this._generated,this.element=t,this.element.ariaHidden="true",this._originalStyle=st({},this.element.style),this.size.height=t.offsetHeight,this.size.width=t.offsetWidth,this._context=this.element.getContext("2d"),this._safeMutationObserver((t=>{this.element&&t.observe(this.element,{attributes:!0})})),this.container.retina.init(),this.initBackground()}paint(){const t=this.container.actualOptions;this.draw((e=>{t.backgroundMask.enable&&t.backgroundMask.cover?(Zt(e,this.size),this._paintBase(this._coverColorStyle)):this._paintBase()}))}resize(){if(!this.element)return!1;const t=this.container,e=t.retina.pixelRatio,i=t.canvas.size,s=this.element.offsetWidth*e,o=this.element.offsetHeight*e;if(o===i.height&&s===i.width&&o===this.element.height&&s===this.element.width)return!1;const n={...i};return this.element.width=i.width=this.element.offsetWidth*e,this.element.height=i.height=this.element.offsetHeight*e,this.container.started&&t.particles.setResizeFactor({width:i.width/n.width,height:i.height/n.height}),!0}stop(){this._safeMutationObserver((t=>t.disconnect())),this._mutationObserver=void 0,this.draw((t=>Zt(t,this.size)))}async windowResize(){if(!this.element||!this.resize())return;const t=this.container,e=t.updateActualOptions();t.particles.setDensity(),this._applyResizePlugins(),e&&await t.refresh()}}function ae(t,e,i,s,o){if(s){let s={passive:!0};gt(o)?s.capture=o:void 0!==o&&(s=o),t.addEventListener(e,i,s)}else{const s=o;t.removeEventListener(e,i,s)}}class re{constructor(t){this.container=t,this._doMouseTouchClick=t=>{const e=this.container,i=e.actualOptions;if(this._canPush){const t=e.interactivity.mouse,s=t.position;if(!s)return;t.clickPosition={...s},t.clickTime=(new Date).getTime();dt(i.interactivity.events.onClick.mode,(t=>this.container.handleClickMode(t)))}"touchend"===t.type&&setTimeout((()=>this._mouseTouchFinish()),500)},this._handleThemeChange=t=>{const e=t,i=this.container,s=i.options,o=s.defaultThemes,n=e.matches?o.dark:o.light,a=s.themes.find((t=>t.name===n));a&&a.default.auto&&i.loadTheme(n)},this._handleVisibilityChange=()=>{const t=this.container,e=t.actualOptions;this._mouseTouchFinish(),e.pauseOnBlur&&(document&&document.hidden?(t.pageHidden=!0,t.pause()):(t.pageHidden=!1,t.getAnimationStatus()?t.play(!0):t.draw(!0)))},this._handleWindowResize=async()=>{this._resizeTimeout&&(clearTimeout(this._resizeTimeout),delete this._resizeTimeout),this._resizeTimeout=setTimeout((async()=>{const t=this.container.canvas;t&&await t.windowResize()}),1e3*this.container.actualOptions.interactivity.events.resize.delay)},this._manageInteractivityListeners=(t,e)=>{const i=this._handlers,n=this.container,a=n.actualOptions,u=n.interactivity.element;if(!u)return;const p=u,f=n.canvas.element;f&&(f.style.pointerEvents=p===f?"initial":"none"),(a.interactivity.events.onHover.enable||a.interactivity.events.onClick.enable)&&(ae(u,r,i.mouseMove,e),ae(u,c,i.touchStart,e),ae(u,h,i.touchMove,e),a.interactivity.events.onClick.enable?(ae(u,l,i.touchEndClick,e),ae(u,o,i.mouseUp,e),ae(u,s,i.mouseDown,e)):ae(u,l,i.touchEnd,e),ae(u,t,i.mouseLeave,e),ae(u,d,i.touchCancel,e))},this._manageListeners=t=>{const e=this._handlers,i=this.container,s=i.actualOptions.interactivity.detectsOn,o=i.canvas.element;let r=n;"window"===s?(i.interactivity.element=window,r=a):i.interactivity.element="parent"===s&&o?o.parentElement??o.parentNode:o,this._manageMediaMatch(t),this._manageResize(t),this._manageInteractivityListeners(r,t),document&&ae(document,p,e.visibilityChange,t,!1)},this._manageMediaMatch=t=>{const e=this._handlers,i=N("(prefers-color-scheme: dark)");i&&(void 0===i.addEventListener?void 0!==i.addListener&&(t?i.addListener(e.oldThemeChange):i.removeListener(e.oldThemeChange)):ae(i,"change",e.themeChange,t))},this._manageResize=t=>{const e=this._handlers,i=this.container;if(!i.actualOptions.interactivity.events.resize)return;if("undefined"==typeof ResizeObserver)return void ae(window,u,e.resize,t);const s=i.canvas.element;this._resizeObserver&&!t?(s&&this._resizeObserver.unobserve(s),this._resizeObserver.disconnect(),delete this._resizeObserver):!this._resizeObserver&&t&&s&&(this._resizeObserver=new ResizeObserver((async t=>{t.find((t=>t.target===s))&&await this._handleWindowResize()})),this._resizeObserver.observe(s))},this._mouseDown=()=>{const{interactivity:t}=this.container;if(!t)return;const{mouse:e}=t;e.clicking=!0,e.downPosition=e.position},this._mouseTouchClick=t=>{const e=this.container,i=e.actualOptions,{mouse:s}=e.interactivity;s.inside=!0;let o=!1;const n=s.position;if(n&&i.interactivity.events.onClick.enable){for(const[,t]of e.plugins)if(t.clickPositionValid&&(o=t.clickPositionValid(n),o))break;o||this._doMouseTouchClick(t),s.clicking=!1}},this._mouseTouchFinish=()=>{const t=this.container.interactivity;if(!t)return;const e=t.mouse;delete e.position,delete e.clickPosition,delete e.downPosition,t.status=n,e.inside=!1,e.clicking=!1},this._mouseTouchMove=t=>{const e=this.container,i=e.actualOptions,s=e.interactivity,o=e.canvas.element;if(!s||!s.element)return;let n;if(s.mouse.inside=!0,t.type.startsWith("pointer")){this._canPush=!0;const e=t;if(s.element===window){if(o){const t=o.getBoundingClientRect();n={x:e.clientX-t.left,y:e.clientY-t.top}}}else if("parent"===i.interactivity.detectsOn){const t=e.target,i=e.currentTarget;if(t&&i&&o){const s=t.getBoundingClientRect(),a=i.getBoundingClientRect(),r=o.getBoundingClientRect();n={x:e.offsetX+2*s.left-(a.left+r.left),y:e.offsetY+2*s.top-(a.top+r.top)}}else n={x:e.offsetX??e.clientX,y:e.offsetY??e.clientY}}else e.target===o&&(n={x:e.offsetX??e.clientX,y:e.offsetY??e.clientY})}else if(this._canPush="touchmove"!==t.type,o){const e=t,i=e.touches[e.touches.length-1],s=o.getBoundingClientRect();n={x:i.clientX-(s.left??0),y:i.clientY-(s.top??0)}}const a=e.retina.pixelRatio;n&&(n.x*=a,n.y*=a),s.mouse.position=n,s.status=r},this._touchEnd=t=>{const e=t,i=Array.from(e.changedTouches);for(const t of i)this._touches.delete(t.identifier);this._mouseTouchFinish()},this._touchEndClick=t=>{const e=t,i=Array.from(e.changedTouches);for(const t of i)this._touches.delete(t.identifier);this._mouseTouchClick(t)},this._touchStart=t=>{const e=t,i=Array.from(e.changedTouches);for(const t of i)this._touches.set(t.identifier,performance.now());this._mouseTouchMove(t)},this._canPush=!0,this._touches=new Map,this._handlers={mouseDown:()=>this._mouseDown(),mouseLeave:()=>this._mouseTouchFinish(),mouseMove:t=>this._mouseTouchMove(t),mouseUp:t=>this._mouseTouchClick(t),touchStart:t=>this._touchStart(t),touchMove:t=>this._mouseTouchMove(t),touchEnd:t=>this._touchEnd(t),touchCancel:t=>this._touchEnd(t),touchEndClick:t=>this._touchEndClick(t),visibilityChange:()=>this._handleVisibilityChange(),themeChange:t=>this._handleThemeChange(t),oldThemeChange:t=>this._handleThemeChange(t),resize:()=>{this._handleWindowResize()}}}addListeners(){this._manageListeners(!0)}removeListeners(){this._manageListeners(!1)}}class ce{constructor(){this.value=""}static create(t,e){const i=new ce;return i.load(t),void 0!==e&&(bt(e)||kt(e)?i.load({value:e}):i.load(e)),i}load(t){void 0!==t?.value&&(this.value=t.value)}}class le{constructor(){this.color=new ce,this.color.value="",this.image="",this.position="",this.repeat="",this.size="",this.opacity=1}load(t){t&&(void 0!==t.color&&(this.color=ce.create(this.color,t.color)),void 0!==t.image&&(this.image=t.image),void 0!==t.position&&(this.position=t.position),void 0!==t.repeat&&(this.repeat=t.repeat),void 0!==t.size&&(this.size=t.size),void 0!==t.opacity&&(this.opacity=t.opacity))}}class he{constructor(){this.color=new ce,this.color.value="#fff",this.opacity=1}load(t){t&&(void 0!==t.color&&(this.color=ce.create(this.color,t.color)),void 0!==t.opacity&&(this.opacity=t.opacity))}}class de{constructor(){this.composite="destination-out",this.cover=new he,this.enable=!1}load(t){if(t){if(void 0!==t.composite&&(this.composite=t.composite),void 0!==t.cover){const e=t.cover,i=bt(t.cover)?{color:t.cover}:t.cover;this.cover.load(void 0!==e.color?e:{color:i})}void 0!==t.enable&&(this.enable=t.enable)}}}class ue{constructor(){this.enable=!0,this.zIndex=0}load(t){t&&(void 0!==t.enable&&(this.enable=t.enable),void 0!==t.zIndex&&(this.zIndex=t.zIndex))}}class pe{constructor(){this.enable=!1,this.mode=[]}load(t){t&&(void 0!==t.enable&&(this.enable=t.enable),void 0!==t.mode&&(this.mode=t.mode))}}class fe{constructor(){this.selectors=[],this.enable=!1,this.mode=[],this.type="circle"}load(t){t&&(void 0!==t.selectors&&(this.selectors=t.selectors),void 0!==t.enable&&(this.enable=t.enable),void 0!==t.mode&&(this.mode=t.mode),void 0!==t.type&&(this.type=t.type))}}class ve{constructor(){this.enable=!1,this.force=2,this.smooth=10}load(t){t&&(void 0!==t.enable&&(this.enable=t.enable),void 0!==t.force&&(this.force=t.force),void 0!==t.smooth&&(this.smooth=t.smooth))}}class ye{constructor(){this.enable=!1,this.mode=[],this.parallax=new ve}load(t){t&&(void 0!==t.enable&&(this.enable=t.enable),void 0!==t.mode&&(this.mode=t.mode),this.parallax.load(t.parallax))}}class me{constructor(){this.delay=.5,this.enable=!0}load(t){void 0!==t&&(void 0!==t.delay&&(this.delay=t.delay),void 0!==t.enable&&(this.enable=t.enable))}}class ge{constructor(){this.onClick=new pe,this.onDiv=new fe,this.onHover=new ye,this.resize=new me}load(t){if(!t)return;this.onClick.load(t.onClick);const e=t.onDiv;void 0!==e&&(this.onDiv=dt(e,(t=>{const e=new fe;return e.load(t),e}))),this.onHover.load(t.onHover),this.resize.load(t.resize)}}class be{constructor(t,e){this._engine=t,this._container=e}load(t){if(!t)return;if(!this._container)return;const e=this._engine.interactors.get(this._container);if(e)for(const i of e)i.loadModeOptions&&i.loadModeOptions(this,t)}}class we{constructor(t,e){this.detectsOn="window",this.events=new ge,this.modes=new be(t,e)}load(t){if(!t)return;const e=t.detectsOn;void 0!==e&&(this.detectsOn=e),this.events.load(t.events),this.modes.load(t.modes)}}class xe{load(t){t&&(t.position&&(this.position={x:t.position.x??50,y:t.position.y??50,mode:t.position.mode??"percent"}),t.options&&(this.options=st({},t.options)))}}class _e{constructor(){this.maxWidth=1/0,this.options={},this.mode="canvas"}load(t){t&&(void 0!==t.maxWidth&&(this.maxWidth=t.maxWidth),void 0!==t.mode&&("screen"===t.mode?this.mode="screen":this.mode="canvas"),void 0!==t.options&&(this.options=st({},t.options)))}}class ke{constructor(){this.auto=!1,this.mode="any",this.value=!1}load(t){t&&(void 0!==t.auto&&(this.auto=t.auto),void 0!==t.mode&&(this.mode=t.mode),void 0!==t.value&&(this.value=t.value))}}class ze{constructor(){this.name="",this.default=new ke}load(t){t&&(void 0!==t.name&&(this.name=t.name),this.default.load(t.default),void 0!==t.options&&(this.options=st({},t.options)))}}class Me{constructor(){this.count=0,this.enable=!1,this.speed=1,this.decay=0,this.delay=0,this.sync=!1}load(t){t&&(void 0!==t.count&&(this.count=S(t.count)),void 0!==t.enable&&(this.enable=t.enable),void 0!==t.speed&&(this.speed=S(t.speed)),void 0!==t.decay&&(this.decay=S(t.decay)),void 0!==t.delay&&(this.delay=S(t.delay)),void 0!==t.sync&&(this.sync=t.sync))}}class Ce extends Me{constructor(){super(),this.mode="auto",this.startValue="random"}load(t){super.load(t),t&&(void 0!==t.mode&&(this.mode=t.mode),void 0!==t.startValue&&(this.startValue=t.startValue))}}class Pe extends Me{constructor(){super(),this.offset=0,this.sync=!0}load(t){super.load(t),t&&void 0!==t.offset&&(this.offset=S(t.offset))}}class Oe{constructor(){this.h=new Pe,this.s=new Pe,this.l=new Pe}load(t){t&&(this.h.load(t.h),this.s.load(t.s),this.l.load(t.l))}}class Se extends ce{constructor(){super(),this.animation=new Oe}static create(t,e){const i=new Se;return i.load(t),void 0!==e&&(bt(e)||kt(e)?i.load({value:e}):i.load(e)),i}load(t){if(super.load(t),!t)return;const e=t.animation;void 0!==e&&(void 0!==e.enable?this.animation.h.load(e):this.animation.load(t.animation))}}class De{constructor(){this.speed=2}load(t){t&&void 0!==t.speed&&(this.speed=t.speed)}}class Te{constructor(){this.enable=!0,this.retries=0}load(t){t&&(void 0!==t.enable&&(this.enable=t.enable),void 0!==t.retries&&(this.retries=t.retries))}}class Re{constructor(){this.value=0}load(t){t&&void 0!==t.value&&(this.value=S(t.value))}}class Ee extends Re{constructor(){super(),this.animation=new Me}load(t){if(super.load(t),!t)return;const e=t.animation;void 0!==e&&this.animation.load(e)}}class Ie extends Ee{constructor(){super(),this.animation=new Ce}load(t){super.load(t)}}class Le extends Re{constructor(){super(),this.value=1}}class Ae{constructor(){this.horizontal=new Le,this.vertical=new Le}load(t){t&&(this.horizontal.load(t.horizontal),this.vertical.load(t.vertical))}}class Fe{constructor(){this.absorb=new De,this.bounce=new Ae,this.enable=!1,this.maxSpeed=50,this.mode="bounce",this.overlap=new Te}load(t){t&&(this.absorb.load(t.absorb),this.bounce.load(t.bounce),void 0!==t.enable&&(this.enable=t.enable),void 0!==t.maxSpeed&&(this.maxSpeed=S(t.maxSpeed)),void 0!==t.mode&&(this.mode=t.mode),this.overlap.load(t.overlap))}}class Be{constructor(){this.close=!0,this.fill=!0,this.options={},this.type=[]}load(t){if(!t)return;const e=t.options;if(void 0!==e)for(const t in e){const i=e[t];i&&(this.options[t]=st(this.options[t]??{},i))}void 0!==t.close&&(this.close=t.close),void 0!==t.fill&&(this.fill=t.fill),void 0!==t.type&&(this.type=t.type)}}class qe{constructor(){this.offset=0,this.value=90}load(t){t&&(void 0!==t.offset&&(this.offset=S(t.offset)),void 0!==t.value&&(this.value=S(t.value)))}}class He{constructor(){this.distance=200,this.enable=!1,this.rotate={x:3e3,y:3e3}}load(t){if(t&&(void 0!==t.distance&&(this.distance=S(t.distance)),void 0!==t.enable&&(this.enable=t.enable),t.rotate)){const e=t.rotate.x;void 0!==e&&(this.rotate.x=e);const i=t.rotate.y;void 0!==i&&(this.rotate.y=i)}}}class Ve{constructor(){this.x=50,this.y=50,this.mode="percent",this.radius=0}load(t){t&&(void 0!==t.x&&(this.x=t.x),void 0!==t.y&&(this.y=t.y),void 0!==t.mode&&(this.mode=t.mode),void 0!==t.radius&&(this.radius=t.radius))}}class Ue{constructor(){this.acceleration=9.81,this.enable=!1,this.inverse=!1,this.maxSpeed=50}load(t){t&&(void 0!==t.acceleration&&(this.acceleration=S(t.acceleration)),void 0!==t.enable&&(this.enable=t.enable),void 0!==t.inverse&&(this.inverse=t.inverse),void 0!==t.maxSpeed&&(this.maxSpeed=S(t.maxSpeed)))}}class We{constructor(){this.clamp=!0,this.delay=new Re,this.enable=!1,this.options={}}load(t){t&&(void 0!==t.clamp&&(this.clamp=t.clamp),this.delay.load(t.delay),void 0!==t.enable&&(this.enable=t.enable),this.generator=t.generator,t.options&&(this.options=st(this.options,t.options)))}}class $e{load(t){t&&(void 0!==t.color&&(this.color=ce.create(this.color,t.color)),void 0!==t.image&&(this.image=t.image))}}class je{constructor(){this.enable=!1,this.length=10,this.fill=new $e}load(t){t&&(void 0!==t.enable&&(this.enable=t.enable),void 0!==t.fill&&this.fill.load(t.fill),void 0!==t.length&&(this.length=t.length))}}class Ge{constructor(){this.default="out"}load(t){t&&(void 0!==t.default&&(this.default=t.default),this.bottom=t.bottom??t.default,this.left=t.left??t.default,this.right=t.right??t.default,this.top=t.top??t.default)}}class Ne{constructor(){this.acceleration=0,this.enable=!1}load(t){t&&(void 0!==t.acceleration&&(this.acceleration=S(t.acceleration)),void 0!==t.enable&&(this.enable=t.enable),t.position&&(this.position=st({},t.position)))}}class Xe{constructor(){this.angle=new qe,this.attract=new He,this.center=new Ve,this.decay=0,this.distance={},this.direction="none",this.drift=0,this.enable=!1,this.gravity=new Ue,this.path=new We,this.outModes=new Ge,this.random=!1,this.size=!1,this.speed=2,this.spin=new Ne,this.straight=!1,this.trail=new je,this.vibrate=!1,this.warp=!1}load(t){if(!t)return;this.angle.load(wt(t.angle)?{value:t.angle}:t.angle),this.attract.load(t.attract),this.center.load(t.center),void 0!==t.decay&&(this.decay=S(t.decay)),void 0!==t.direction&&(this.direction=t.direction),void 0!==t.distance&&(this.distance=wt(t.distance)?{horizontal:t.distance,vertical:t.distance}:{...t.distance}),void 0!==t.drift&&(this.drift=S(t.drift)),void 0!==t.enable&&(this.enable=t.enable),this.gravity.load(t.gravity);const e=t.outModes;void 0!==e&&(_t(e)?this.outModes.load(e):this.outModes.load({default:e})),this.path.load(t.path),void 0!==t.random&&(this.random=t.random),void 0!==t.size&&(this.size=t.size),void 0!==t.speed&&(this.speed=S(t.speed)),this.spin.load(t.spin),void 0!==t.straight&&(this.straight=t.straight),this.trail.load(t.trail),void 0!==t.vibrate&&(this.vibrate=t.vibrate),void 0!==t.warp&&(this.warp=t.warp)}}class Ye extends Ce{constructor(){super(),this.destroy="none",this.speed=2}load(t){super.load(t),t&&void 0!==t.destroy&&(this.destroy=t.destroy)}}class Ze extends Ie{constructor(){super(),this.animation=new Ye,this.value=1}load(t){if(!t)return;super.load(t);const e=t.animation;void 0!==e&&this.animation.load(e)}}class Qe{constructor(){this.enable=!1,this.width=1920,this.height=1080}load(t){if(!t)return;void 0!==t.enable&&(this.enable=t.enable);const e=t.width;void 0!==e&&(this.width=e);const i=t.height;void 0!==i&&(this.height=i)}}class Je{constructor(){this.mode="delete",this.value=0}load(t){t&&(void 0!==t.mode&&(this.mode=t.mode),void 0!==t.value&&(this.value=t.value))}}class Ke{constructor(){this.density=new Qe,this.limit=new Je,this.value=0}load(t){t&&(this.density.load(t.density),this.limit.load(t.limit),void 0!==t.value&&(this.value=t.value))}}class ti{constructor(){this.blur=0,this.color=new ce,this.enable=!1,this.offset={x:0,y:0},this.color.value="#000"}load(t){t&&(void 0!==t.blur&&(this.blur=t.blur),this.color=ce.create(this.color,t.color),void 0!==t.enable&&(this.enable=t.enable),void 0!==t.offset&&(void 0!==t.offset.x&&(this.offset.x=t.offset.x),void 0!==t.offset.y&&(this.offset.y=t.offset.y)))}}class ei{constructor(){this.close=!0,this.fill=!0,this.options={},this.type="circle"}load(t){if(!t)return;const e=t.options;if(void 0!==e)for(const t in e){const i=e[t];i&&(this.options[t]=st(this.options[t]??{},i))}void 0!==t.close&&(this.close=t.close),void 0!==t.fill&&(this.fill=t.fill),void 0!==t.type&&(this.type=t.type)}}class ii extends Ce{constructor(){super(),this.destroy="none",this.speed=5}load(t){super.load(t),t&&void 0!==t.destroy&&(this.destroy=t.destroy)}}class si extends Ie{constructor(){super(),this.animation=new ii,this.value=3}load(t){if(super.load(t),!t)return;const e=t.animation;void 0!==e&&this.animation.load(e)}}class oi{constructor(){this.width=0}load(t){t&&(void 0!==t.color&&(this.color=Se.create(this.color,t.color)),void 0!==t.width&&(this.width=S(t.width)),void 0!==t.opacity&&(this.opacity=S(t.opacity)))}}class ni extends Re{constructor(){super(),this.opacityRate=1,this.sizeRate=1,this.velocityRate=1}load(t){super.load(t),t&&(void 0!==t.opacityRate&&(this.opacityRate=t.opacityRate),void 0!==t.sizeRate&&(this.sizeRate=t.sizeRate),void 0!==t.velocityRate&&(this.velocityRate=t.velocityRate))}}class ai{constructor(t,e){this._engine=t,this._container=e,this.bounce=new Ae,this.collisions=new Fe,this.color=new Se,this.color.value="#fff",this.effect=new Be,this.groups={},this.move=new Xe,this.number=new Ke,this.opacity=new Ze,this.reduceDuplicates=!1,this.shadow=new ti,this.shape=new ei,this.size=new si,this.stroke=new oi,this.zIndex=new ni}load(t){if(!t)return;if(void 0!==t.groups)for(const e of Object.keys(t.groups)){if(!Object.hasOwn(t.groups,e))continue;const i=t.groups[e];void 0!==i&&(this.groups[e]=st(this.groups[e]??{},i))}void 0!==t.reduceDuplicates&&(this.reduceDuplicates=t.reduceDuplicates),this.bounce.load(t.bounce),this.color.load(Se.create(this.color,t.color)),this.effect.load(t.effect),this.move.load(t.move),this.number.load(t.number),this.opacity.load(t.opacity),this.shape.load(t.shape),this.size.load(t.size),this.shadow.load(t.shadow),this.zIndex.load(t.zIndex),this.collisions.load(t.collisions),void 0!==t.interactivity&&(this.interactivity=st({},t.interactivity));const e=t.stroke;if(e&&(this.stroke=dt(e,(t=>{const e=new oi;return e.load(t),e}))),this._container){const e=this._engine.updaters.get(this._container);if(e)for(const i of e)i.loadOptions&&i.loadOptions(this,t);const i=this._engine.interactors.get(this._container);if(i)for(const e of i)e.loadParticlesOptions&&e.loadParticlesOptions(this,t)}}}function ri(t,...e){for(const i of e)t.load(i)}function ci(t,e,...i){const s=new ai(t,e);return ri(s,...i),s}class li{constructor(t,e){this._findDefaultTheme=t=>this.themes.find((e=>e.default.value&&e.default.mode===t))??this.themes.find((t=>t.default.value&&"any"===t.default.mode)),this._importPreset=t=>{this.load(this._engine.getPreset(t))},this._engine=t,this._container=e,this.autoPlay=!0,this.background=new le,this.backgroundMask=new de,this.clear=!0,this.defaultThemes={},this.delay=0,this.fullScreen=new ue,this.detectRetina=!0,this.duration=0,this.fpsLimit=120,this.interactivity=new we(t,e),this.manualParticles=[],this.particles=ci(this._engine,this._container),this.pauseOnBlur=!0,this.pauseOnOutsideViewport=!0,this.responsive=[],this.smooth=!1,this.style={},this.themes=[],this.zLayers=100}load(t){if(!t)return;void 0!==t.preset&&dt(t.preset,(t=>this._importPreset(t))),void 0!==t.autoPlay&&(this.autoPlay=t.autoPlay),void 0!==t.clear&&(this.clear=t.clear),void 0!==t.name&&(this.name=t.name),void 0!==t.delay&&(this.delay=S(t.delay));const e=t.detectRetina;void 0!==e&&(this.detectRetina=e),void 0!==t.duration&&(this.duration=S(t.duration));const i=t.fpsLimit;void 0!==i&&(this.fpsLimit=i),void 0!==t.pauseOnBlur&&(this.pauseOnBlur=t.pauseOnBlur),void 0!==t.pauseOnOutsideViewport&&(this.pauseOnOutsideViewport=t.pauseOnOutsideViewport),void 0!==t.zLayers&&(this.zLayers=t.zLayers),this.background.load(t.background);const s=t.fullScreen;gt(s)?this.fullScreen.enable=s:this.fullScreen.load(s),this.backgroundMask.load(t.backgroundMask),this.interactivity.load(t.interactivity),t.manualParticles&&(this.manualParticles=t.manualParticles.map((t=>{const e=new xe;return e.load(t),e}))),this.particles.load(t.particles),this.style=st(this.style,t.style),this._engine.loadOptions(this,t),void 0!==t.smooth&&(this.smooth=t.smooth);const o=this._engine.interactors.get(this._container);if(o)for(const e of o)e.loadOptions&&e.loadOptions(this,t);if(void 0!==t.responsive)for(const e of t.responsive){const t=new _e;t.load(e),this.responsive.push(t)}if(this.responsive.sort(((t,e)=>t.maxWidth-e.maxWidth)),void 0!==t.themes)for(const e of t.themes){const t=this.themes.find((t=>t.name===e.name));if(t)t.load(e);else{const t=new ze;t.load(e),this.themes.push(t)}}this.defaultThemes.dark=this._findDefaultTheme("dark")?.name,this.defaultThemes.light=this._findDefaultTheme("light")?.name}setResponsive(t,e,i){this.load(i);const s=this.responsive.find((i=>"screen"===i.mode&&screen?i.maxWidth>screen.availWidth:i.maxWidth*e>t));return this.load(s?.options),s?.maxWidth}setTheme(t){if(t){const e=this.themes.find((e=>e.name===t));e&&this.load(e.options)}else{const t=N("(prefers-color-scheme: dark)"),e=t&&t.matches,i=this._findDefaultTheme(e?"dark":"light");i&&this.load(i.options)}}}class hi{constructor(t,e){this.container=e,this._engine=t,this._interactors=t.getInteractors(this.container,!0),this._externalInteractors=[],this._particleInteractors=[]}async externalInteract(t){for(const e of this._externalInteractors)e.isEnabled()&&await e.interact(t)}handleClickMode(t){for(const e of this._externalInteractors)e.handleClickMode&&e.handleClickMode(t)}init(){this._externalInteractors=[],this._particleInteractors=[];for(const t of this._interactors){switch(t.type){case"external":this._externalInteractors.push(t);break;case"particles":this._particleInteractors.push(t)}t.init()}}async particlesInteract(t,e){for(const i of this._externalInteractors)i.clear(t,e);for(const i of this._particleInteractors)i.isEnabled(t)&&await i.interact(t,e)}async reset(t){for(const e of this._externalInteractors)e.isEnabled()&&e.reset(t);for(const e of this._particleInteractors)e.isEnabled(t)&&e.reset(t)}}function di(t){if(!Z(t.outMode,t.checkModes))return;const e=2*t.radius;t.coord>t.maxCoord-e?t.setCb(-t.radius):t.coord{for(const[,s]of t.plugins){const t=void 0!==s.particlePosition?s.particlePosition(e,this):void 0;if(t)return v.create(t.x,t.y,i)}const o=B({size:t.canvas.size,position:e}),n=v.create(o.x,o.y,i),a=this.getRadius(),r=this.options.move.outModes,c=e=>{di({outMode:e,checkModes:["bounce","bounce-horizontal"],coord:n.x,maxCoord:t.canvas.size.width,setCb:t=>n.x+=t,radius:a})},l=e=>{di({outMode:e,checkModes:["bounce","bounce-vertical"],coord:n.y,maxCoord:t.canvas.size.height,setCb:t=>n.y+=t,radius:a})};return c(r.left??r.default),c(r.right??r.default),l(r.top??r.default),l(r.bottom??r.default),this._checkOverlap(n,s)?this._calcPosition(t,void 0,i,s+1):n},this._calculateVelocity=()=>{const t=E(this.direction).copy(),e=this.options.move;if("inside"===e.direction||"outside"===e.direction)return t;const i=Math.PI/180*C(e.angle.value),s=Math.PI/180*C(e.angle.offset),o={left:s-.5*i,right:s+.5*i};return e.straight||(t.angle+=M(S(o.left,o.right))),e.random&&"number"==typeof e.speed&&(t.length*=_()),t},this._checkOverlap=(t,e=0)=>{const i=this.options.collisions,s=this.getRadius();if(!i.enable)return!1;const o=i.overlap;if(o.enable)return!1;const n=o.retries;if(n>=0&&e>n)throw new Error(`${f} particle is overlapping and can't be placed`);return!!this.container.particles.find((e=>T(t,e.position){if(!t||!this.roll||!this.backColor&&!this.roll.alter)return t;const e=this.roll.horizontal&&this.roll.vertical?2:1,i=this.roll.horizontal?.5*Math.PI:0;return Math.floor(((this.roll.angle??0)+i)/(Math.PI/e))%2?this.backColor?this.backColor:this.roll.alter?se(t,this.roll.alter.type,this.roll.alter.value):t:t},this._initPosition=t=>{const e=this.container,i=C(this.options.zIndex.value);this.position=this._calcPosition(e,t,k(i,0,e.zLayers)),this.initialPosition=this.position.copy();const s=e.canvas.size;switch(this.moveCenter={...yt(this.options.move.center,s),radius:this.options.move.center.radius??0,mode:this.options.move.center.mode??"percent"},this.direction=R(this.options.move.direction,this.position,this.moveCenter),this.options.move.direction){case"inside":this.outType="inside";break;case"outside":this.outType="outside"}this.offset=y.origin},this._engine=t,this.init(e,s,o,n)}destroy(t){if(this.unbreakable||this.destroyed)return;this.destroyed=!0,this.bubble.inRange=!1,this.slow.inRange=!1;const e=this.container,i=this.pathGenerator,s=e.shapeDrawers.get(this.shape);s&&s.particleDestroy&&s.particleDestroy(this);for(const[,i]of e.plugins)i.particleDestroyed&&i.particleDestroyed(this,t);for(const i of e.particles.updaters)i.particleDestroyed&&i.particleDestroyed(this,t);i&&i.reset(this),this._engine.dispatchEvent("particleDestroyed",{container:this.container,data:{particle:this}})}draw(t){const e=this.container,i=e.canvas;for(const[,s]of e.plugins)i.drawParticlePlugin(s,this,t);i.drawParticle(this,t)}getFillColor(){return this._getRollColor(this.bubble.color??$t(this.color))}getMass(){return this.getRadius()**2*Math.PI*.5}getPosition(){return{x:this.position.x+this.offset.x,y:this.position.y+this.offset.y,z:this.position.z}}getRadius(){return this.bubble.radius??this.size.value}getStrokeColor(){return this._getRollColor(this.bubble.color??$t(this.strokeColor))}init(t,e,i,s){const o=this.container,n=this._engine;this.id=t,this.group=s,this.effectClose=!0,this.effectFill=!0,this.shapeClose=!0,this.shapeFill=!0,this.pathRotation=!1,this.lastPathTime=0,this.destroyed=!1,this.unbreakable=!1,this.rotation=0,this.misplaced=!1,this.retina={maxDistance:{}},this.outType="normal",this.ignoresResizeRatio=!0;const a=o.retina.pixelRatio,r=o.actualOptions,c=ci(this._engine,o,r.particles),l=c.effect.type,h=c.shape.type,{reduceDuplicates:d}=c;this.effect=ut(l,this.id,d),this.shape=ut(h,this.id,d);const u=c.effect,p=c.shape;if(i){if(i.effect&&i.effect.type){const t=ut(i.effect.type,this.id,d);t&&(this.effect=t,u.load(i.effect))}if(i.shape&&i.shape.type){const t=ut(i.shape.type,this.id,d);t&&(this.shape=t,p.load(i.shape))}}this.effectData=function(t,e,i,s){const o=e.options[t];if(o)return st({close:e.close,fill:e.fill},ut(o,i,s))}(this.effect,u,this.id,d),this.shapeData=function(t,e,i,s){const o=e.options[t];if(o)return st({close:e.close,fill:e.fill},ut(o,i,s))}(this.shape,p,this.id,d),c.load(i);const f=this.effectData;f&&c.load(f.particles);const v=this.shapeData;v&&c.load(v.particles);const y=new we(n,o);y.load(o.actualOptions.interactivity),y.load(c.interactivity),this.interactivity=y,this.effectFill=f?.fill??c.effect.fill,this.effectClose=f?.close??c.effect.close,this.shapeFill=v?.fill??c.shape.fill,this.shapeClose=v?.close??c.shape.close,this.options=c;const m=this.options.move.path;this.pathDelay=1e3*C(m.delay.value),m.generator&&(this.pathGenerator=this._engine.getPathGenerator(m.generator),this.pathGenerator&&o.addPath(m.generator,this.pathGenerator)&&this.pathGenerator.init(o)),o.retina.initParticle(this),this.size=ft(this.options.size,a),this.bubble={inRange:!1},this.slow={inRange:!1,factor:1},this._initPosition(e),this.initialVelocity=this._calculateVelocity(),this.velocity=this.initialVelocity.copy(),this.moveDecay=1-C(this.options.move.decay);const g=o.particles;g.setLastZIndex(this.position.z),this.zIndexFactor=this.position.z/o.zLayers,this.sides=24;let b=o.effectDrawers.get(this.effect);b||(b=this._engine.getEffectDrawer(this.effect),b&&o.effectDrawers.set(this.effect,b)),b&&b.loadEffect&&b.loadEffect(this);let w=o.shapeDrawers.get(this.shape);w||(w=this._engine.getShapeDrawer(this.shape),w&&o.shapeDrawers.set(this.shape,w)),w&&w.loadShape&&w.loadShape(this);const x=w?.getSidesCount;x&&(this.sides=x(this)),this.spawning=!1,this.shadowColor=St(this.options.shadow.color);for(const t of g.updaters)t.init(this);for(const t of g.movers)t.init&&t.init(this);b&&b.particleInit&&b.particleInit(o,this),w&&w.particleInit&&w.particleInit(o,this);for(const[,t]of o.plugins)t.particleCreated&&t.particleCreated(this)}isInsideCanvas(){const t=this.getRadius(),e=this.container.canvas.size,i=this.position;return i.x>=-t&&i.y>=-t&&i.y<=e.height+t&&i.x<=e.width+t}isVisible(){return!this.destroyed&&!this.spawning&&this.isInsideCanvas()}reset(){for(const t of this.container.particles.updaters)t.reset&&t.reset(this)}}class pi{constructor(t,e){this.position=t,this.particle=e}}class fi{constructor(t,e){this.position={x:t,y:e}}}class vi extends fi{constructor(t,e,i,s){super(t,e),this.size={height:s,width:i}}contains(t){const e=this.size.width,i=this.size.height,s=this.position;return t.x>=s.x&&t.x<=s.x+e&&t.y>=s.y&&t.y<=s.y+i}intersects(t){t instanceof yi&&t.intersects(this);const e=this.size.width,i=this.size.height,s=this.position,o=t.position,n=t instanceof vi?t.size:{width:0,height:0},a=n.width,r=n.height;return o.xs.x&&o.ys.y}}class yi extends fi{constructor(t,e,i){super(t,e),this.radius=i}contains(t){return T(t,this.position)<=this.radius}intersects(t){const e=this.position,i=t.position,s=Math.abs(i.x-e.x),o=Math.abs(i.y-e.y),n=this.radius;if(t instanceof yi){return n+t.radius>Math.sqrt(s**2+o**2)}if(t instanceof vi){const{width:e,height:i}=t.size;return Math.pow(s-e,2)+Math.pow(o-i,2)<=n**2||s<=n+e&&o<=n+i||s<=e||o<=i}return!1}}class mi{constructor(t,e){this.rectangle=t,this.capacity=e,this._subdivide=()=>{const{x:t,y:e}=this.rectangle.position,{width:i,height:s}=this.rectangle.size,{capacity:o}=this;for(let n=0;n<4;n++)this._subs.push(new mi(new vi(t+.5*i*(n%2),e+.5*s*(Math.round(.5*n)-n%2),.5*i,.5*s),o));this._divided=!0},this._points=[],this._divided=!1,this._subs=[]}insert(t){return!!this.rectangle.contains(t.position)&&(this._points.lengthe.insert(t)))))}query(t,e,i){const s=i||[];if(!t.intersects(this.rectangle))return[];for(const i of this._points)!t.contains(i.position)&&T(t.position,i.position)>i.particle.getRadius()&&(!e||e(i.particle))||s.push(i.particle);if(this._divided)for(const i of this._subs)i.query(t,e,s);return s}queryCircle(t,e,i){return this.query(new yi(t.x,t.y,e),i)}queryRectangle(t,e,i){return this.query(new vi(t.x,t.y,e.width,e.height),i)}}const gi=t=>{const{height:e,width:i}=t;return new vi(-.25*i,-.25*e,1.5*i,1.5*e)};class bi{constructor(t,e){this._addToPool=(...t)=>{for(const e of t)this._pool.push(e)},this._applyDensity=(t,e,i)=>{const s=t.number;if(!t.number.density?.enable)return void(void 0===i?this._limit=s.limit.value:s.limit&&this._groupLimits.set(i,s.limit.value));const o=this._initDensityFactor(s.density),n=s.value,a=s.limit.value>0?s.limit.value:n,r=Math.min(n,a)*o+e,c=Math.min(this.count,this.filter((t=>t.group===i)).length);void 0===i?this._limit=s.limit.value*o:this._groupLimits.set(i,s.limit.value*o),cr&&this.removeQuantity(c-r,i)},this._initDensityFactor=t=>{const e=this._container;if(!e.canvas.element||!t.enable)return 1;const i=e.canvas.element,s=e.retina.pixelRatio;return i.width*i.height/(t.height*t.width*s**2)},this._pushParticle=(t,e,i,s)=>{try{let o=this._pool.pop();o?o.init(this._nextId,t,e,i):o=new ui(this._engine,this._nextId,this._container,t,e,i);let n=!0;if(s&&(n=s(o)),!n)return;return this._array.push(o),this._zArray.push(o),this._nextId++,this._engine.dispatchEvent("particleAdded",{container:this._container,data:{particle:o}}),o}catch(t){return void W().warning(`${f} adding particle: ${t}`)}},this._removeParticle=(t,e,i)=>{const s=this._array[t];if(!s||s.group!==e)return!1;const o=this._zArray.indexOf(s);return this._array.splice(t,1),this._zArray.splice(o,1),s.destroy(i),this._engine.dispatchEvent("particleRemoved",{container:this._container,data:{particle:s}}),this._addToPool(s),!0},this._engine=t,this._container=e,this._nextId=0,this._array=[],this._zArray=[],this._pool=[],this._limit=0,this._groupLimits=new Map,this._needsSort=!1,this._lastZIndex=0,this._interactionManager=new hi(t,e);const i=e.canvas.size;this.quadTree=new mi(gi(i),4),this.movers=this._engine.getMovers(e,!0),this.updaters=this._engine.getUpdaters(e,!0)}get count(){return this._array.length}addManualParticles(){const t=this._container,e=t.actualOptions;for(const i of e.manualParticles)this.addParticle(i.position?yt(i.position,t.canvas.size):void 0,i.options)}addParticle(t,e,i,s){const o=this._container.actualOptions.particles.number.limit,n=void 0===i?this._limit:this._groupLimits.get(i)??this._limit,a=this.count;if(n>0)if("delete"===o.mode){const t=a+1-n;t>0&&this.removeQuantity(t)}else if("wait"===o.mode&&a>=n)return;return this._pushParticle(t,e,i,s)}clear(){this._array=[],this._zArray=[]}destroy(){this._array=[],this._zArray=[],this.movers=[],this.updaters=[]}async draw(t){const e=this._container,i=e.canvas;i.clear(),await this.update(t);for(const[,s]of e.plugins)i.drawPlugin(s,t);for(const e of this._zArray)e.draw(t)}filter(t){return this._array.filter(t)}find(t){return this._array.find(t)}get(t){return this._array[t]}handleClickMode(t){this._interactionManager.handleClickMode(t)}init(){const t=this._container,e=t.actualOptions;this._lastZIndex=0,this._needsSort=!1;let i=!1;this.updaters=this._engine.getUpdaters(t,!0),this._interactionManager.init();for(const[,e]of t.plugins)if(void 0!==e.particlesInitialization&&(i=e.particlesInitialization()),i)break;this._interactionManager.init();for(const[,e]of t.pathGenerators)e.init(t);if(this.addManualParticles(),!i){const t=e.particles,i=t.groups;for(const e in i){const s=i[e];for(let i=this.count,o=0;othis.count)return;let o=0;for(let n=t;o!i.has(t);this._array=this.filter(t),this._zArray=this._zArray.filter(t);for(const t of i)this._engine.dispatchEvent("particleRemoved",{container:this._container,data:{particle:t}});this._addToPool(...i)}await this._interactionManager.externalInteract(t);for(const e of this._array){for(const i of this.updaters)i.update(e,t);e.destroyed||e.spawning||await this._interactionManager.particlesInteract(e,t)}if(delete this._resizeFactor,this._needsSort){const t=this._zArray;t.sort(((t,e)=>e.position.z-t.position.z||t.id-e.id)),this._lastZIndex=t[t.length-1].position.z,this._needsSort=!1}}}class wi{constructor(t){this.container=t,this.pixelRatio=1,this.reduceFactor=1}init(){const t=this.container,e=t.actualOptions;this.pixelRatio=!e.detectRetina||j()?1:window.devicePixelRatio,this.reduceFactor=1;const i=this.pixelRatio,s=t.canvas;if(s.element){const t=s.element;s.size.width=t.offsetWidth*i,s.size.height=t.offsetHeight*i}const o=e.particles,n=o.move;this.maxSpeed=C(n.gravity.maxSpeed)*i,this.sizeAnimationSpeed=C(o.size.animation.speed)*i}initParticle(t){const e=t.options,i=this.pixelRatio,s=e.move,o=s.distance,n=t.retina;n.moveDrift=C(s.drift)*i,n.moveSpeed=C(s.speed)*i,n.sizeAnimationSpeed=C(e.size.animation.speed)*i;const a=n.maxDistance;a.horizontal=void 0!==o.horizontal?o.horizontal*i:void 0,a.vertical=void 0!==o.vertical?o.vertical*i:void 0,n.maxSpeed=C(s.gravity.maxSpeed)*i}}function xi(t){return t&&!t.destroyed}function _i(t,e,...i){const s=new li(t,e);return ri(s,...i),s}class ki{constructor(t,e,i){this._intersectionManager=t=>{if(xi(this)&&this.actualOptions.pauseOnOutsideViewport)for(const e of t)e.target===this.interactivity.element&&(e.isIntersecting?this.play:this.pause)()},this._nextFrame=async t=>{try{if(!this._smooth&&void 0!==this._lastFrameTime&&t1e3)return void this.draw(!1);if(await this.particles.draw(e),!this.alive())return void this.destroy();this.getAnimationStatus()&&this.draw(!1)}catch(t){W().error(`${f} in animation loop`,t)}},this._engine=t,this.id=Symbol(e),this.fpsLimit=120,this._smooth=!1,this._delay=0,this._duration=0,this._lifeTime=0,this._firstStart=!0,this.started=!1,this.destroyed=!1,this._paused=!0,this._lastFrameTime=0,this.zLayers=100,this.pageHidden=!1,this._sourceOptions=i,this._initialSourceOptions=i,this.retina=new wi(this),this.canvas=new ne(this),this.particles=new bi(this._engine,this),this.pathGenerators=new Map,this.interactivity={mouse:{clicking:!1,inside:!1}},this.plugins=new Map,this.effectDrawers=new Map,this.shapeDrawers=new Map,this._options=_i(this._engine,this),this.actualOptions=_i(this._engine,this),this._eventListeners=new re(this),this._intersectionObserver=X((t=>this._intersectionManager(t))),this._engine.dispatchEvent("containerBuilt",{container:this})}get options(){return this._options}get sourceOptions(){return this._sourceOptions}addClickHandler(t){if(!xi(this))return;const e=this.interactivity.element;if(!e)return;const i=(e,i,s)=>{if(!xi(this))return;const o=this.retina.pixelRatio,n={x:i.x*o,y:i.y*o},a=this.particles.quadTree.queryCircle(n,s*o);t(e,a)};let s=!1,o=!1;e.addEventListener("click",(t=>{if(!xi(this))return;const e=t,s={x:e.offsetX||e.clientX,y:e.offsetY||e.clientY};i(t,s,1)})),e.addEventListener("touchstart",(()=>{xi(this)&&(s=!0,o=!1)})),e.addEventListener("touchmove",(()=>{xi(this)&&(o=!0)})),e.addEventListener("touchend",(t=>{if(xi(this)){if(s&&!o){const e=t;let s=e.touches[e.touches.length-1];if(!s&&(s=e.changedTouches[e.changedTouches.length-1],!s))return;const o=this.canvas.element,n=o?o.getBoundingClientRect():void 0,a={x:s.clientX-(n?n.left:0),y:s.clientY-(n?n.top:0)};i(t,a,Math.max(s.radiusX,s.radiusY))}s=!1,o=!1}})),e.addEventListener("touchcancel",(()=>{xi(this)&&(s=!1,o=!1)}))}addLifeTime(t){this._lifeTime+=t}addPath(t,e,i=!1){return!(!xi(this)||!i&&this.pathGenerators.has(t))&&(this.pathGenerators.set(t,e),!0)}alive(){return!this._duration||this._lifeTime<=this._duration}destroy(){if(!xi(this))return;this.stop(),this.particles.destroy(),this.canvas.destroy();for(const[,t]of this.effectDrawers)t.destroy&&t.destroy(this);for(const[,t]of this.shapeDrawers)t.destroy&&t.destroy(this);for(const t of this.effectDrawers.keys())this.effectDrawers.delete(t);for(const t of this.shapeDrawers.keys())this.shapeDrawers.delete(t);this._engine.clearPlugins(this),this.destroyed=!0;const t=this._engine.dom(),e=t.findIndex((t=>t===this));e>=0&&t.splice(e,1),this._engine.dispatchEvent("containerDestroyed",{container:this})}draw(t){if(!xi(this))return;let e=t;this._drawAnimationFrame=requestAnimationFrame((async t=>{e&&(this._lastFrameTime=void 0,e=!1),await this._nextFrame(t)}))}async export(t,e={}){for(const[,i]of this.plugins){if(!i.export)continue;const s=await i.export(t,e);if(s.supported)return s.blob}W().error(`${f} - Export plugin with type ${t} not found`)}getAnimationStatus(){return!this._paused&&!this.pageHidden&&xi(this)}handleClickMode(t){if(xi(this)){this.particles.handleClickMode(t);for(const[,e]of this.plugins)e.handleClickMode&&e.handleClickMode(t)}}async init(){if(!xi(this))return;const t=this._engine.getSupportedEffects();for(const e of t){const t=this._engine.getEffectDrawer(e);t&&this.effectDrawers.set(e,t)}const e=this._engine.getSupportedShapes();for(const t of e){const e=this._engine.getShapeDrawer(t);e&&this.shapeDrawers.set(t,e)}this._options=_i(this._engine,this,this._initialSourceOptions,this.sourceOptions),this.actualOptions=_i(this._engine,this,this._options);const i=this._engine.getAvailablePlugins(this);for(const[t,e]of i)this.plugins.set(t,e);this.retina.init(),await this.canvas.init(),this.updateActualOptions(),this.canvas.initBackground(),this.canvas.resize(),this.zLayers=this.actualOptions.zLayers,this._duration=1e3*C(this.actualOptions.duration),this._delay=1e3*C(this.actualOptions.delay),this._lifeTime=0,this.fpsLimit=this.actualOptions.fpsLimit>0?this.actualOptions.fpsLimit:120,this._smooth=this.actualOptions.smooth;for(const[,t]of this.effectDrawers)t.init&&await t.init(this);for(const[,t]of this.shapeDrawers)t.init&&await t.init(this);for(const[,t]of this.plugins)t.init&&await t.init();this._engine.dispatchEvent("containerInit",{container:this}),this.particles.init(),this.particles.setDensity();for(const[,t]of this.plugins)t.particlesSetup&&t.particlesSetup();this._engine.dispatchEvent("particlesSetup",{container:this})}async loadTheme(t){xi(this)&&(this._currentTheme=t,await this.refresh())}pause(){if(xi(this)&&(void 0!==this._drawAnimationFrame&&(cancelAnimationFrame(this._drawAnimationFrame),delete this._drawAnimationFrame),!this._paused)){for(const[,t]of this.plugins)t.pause&&t.pause();this.pageHidden||(this._paused=!0),this._engine.dispatchEvent("containerPaused",{container:this})}}play(t){if(!xi(this))return;const e=this._paused||t;if(!this._firstStart||this.actualOptions.autoPlay){if(this._paused&&(this._paused=!1),e)for(const[,t]of this.plugins)t.play&&t.play();this._engine.dispatchEvent("containerPlay",{container:this}),this.draw(e||!1)}else this._firstStart=!1}async refresh(){if(xi(this))return this.stop(),this.start()}async reset(){if(xi(this))return this._initialSourceOptions=void 0,this._options=_i(this._engine,this),this.actualOptions=_i(this._engine,this,this._options),this.refresh()}async start(){xi(this)&&!this.started&&(await this.init(),this.started=!0,await new Promise((t=>{this._delayTimeout=setTimeout((async()=>{this._eventListeners.addListeners(),this.interactivity.element instanceof HTMLElement&&this._intersectionObserver&&this._intersectionObserver.observe(this.interactivity.element);for(const[,t]of this.plugins)t.start&&await t.start();this._engine.dispatchEvent("containerStarted",{container:this}),this.play(),t()}),this._delay)})))}stop(){if(xi(this)&&this.started){this._delayTimeout&&(clearTimeout(this._delayTimeout),delete this._delayTimeout),this._firstStart=!0,this.started=!1,this._eventListeners.removeListeners(),this.pause(),this.particles.clear(),this.canvas.stop(),this.interactivity.element instanceof HTMLElement&&this._intersectionObserver&&this._intersectionObserver.unobserve(this.interactivity.element);for(const[,t]of this.plugins)t.stop&&t.stop();for(const t of this.plugins.keys())this.plugins.delete(t);this._sourceOptions=this._options,this._engine.dispatchEvent("containerStopped",{container:this})}}updateActualOptions(){this.actualOptions.responsive=[];const t=this.actualOptions.setResponsive(this.canvas.size.width,this.retina.pixelRatio,this._options);return this.actualOptions.setTheme(this._currentTheme),this._responsiveMaxWidth!==t&&(this._responsiveMaxWidth=t,!0)}}class zi{constructor(){this._listeners=new Map}addEventListener(t,e){this.removeEventListener(t,e);let i=this._listeners.get(t);i||(i=[],this._listeners.set(t,i)),i.push(e)}dispatchEvent(t,e){const i=this._listeners.get(t);i&&i.forEach((t=>t(e)))}hasEventListener(t){return!!this._listeners.get(t)}removeAllEventListeners(t){t?this._listeners.delete(t):this._listeners=new Map}removeEventListener(t,e){const i=this._listeners.get(t);if(!i)return;const s=i.length,o=i.indexOf(e);o<0||(1===s?this._listeners.delete(t):i.splice(o,1))}}function Mi(t,e,i,s=!1){let o=e.get(t);return o&&!s||(o=[...i.values()].map((e=>e(t))),e.set(t,o)),o}class Ci{constructor(){this._configs=new Map,this._domArray=[],this._eventDispatcher=new zi,this._initialized=!1,this.plugins=[],this._initializers={interactors:new Map,movers:new Map,updaters:new Map},this.interactors=new Map,this.movers=new Map,this.updaters=new Map,this.presets=new Map,this.effectDrawers=new Map,this.shapeDrawers=new Map,this.pathGenerators=new Map}get configs(){const t={};for(const[e,i]of this._configs)t[e]=i;return t}get version(){return"3.0.2"}addConfig(t){const e=t.name??"default";this._configs.set(e,t),this._eventDispatcher.dispatchEvent("configAdded",{data:{name:e,config:t}})}async addEffect(t,e,i=!0){dt(t,(t=>{!this.getEffectDrawer(t)&&this.effectDrawers.set(t,e)})),await this.refresh(i)}addEventListener(t,e){this._eventDispatcher.addEventListener(t,e)}async addInteractor(t,e,i=!0){this._initializers.interactors.set(t,e),await this.refresh(i)}async addMover(t,e,i=!0){this._initializers.movers.set(t,e),await this.refresh(i)}async addParticleUpdater(t,e,i=!0){this._initializers.updaters.set(t,e),await this.refresh(i)}async addPathGenerator(t,e,i=!0){!this.getPathGenerator(t)&&this.pathGenerators.set(t,e),await this.refresh(i)}async addPlugin(t,e=!0){!this.getPlugin(t.id)&&this.plugins.push(t),await this.refresh(e)}async addPreset(t,e,i=!1,s=!0){(i||!this.getPreset(t))&&this.presets.set(t,e),await this.refresh(s)}async addShape(t,e,i=!0){dt(t,(t=>{!this.getShapeDrawer(t)&&this.shapeDrawers.set(t,e)})),await this.refresh(i)}clearPlugins(t){this.updaters.delete(t),this.movers.delete(t),this.interactors.delete(t)}dispatchEvent(t,e){this._eventDispatcher.dispatchEvent(t,e)}dom(){return this._domArray}domItem(t){const e=this.dom(),i=e[t];if(i&&!i.destroyed)return i;e.splice(t,1)}getAvailablePlugins(t){const e=new Map;for(const i of this.plugins)i.needsPlugin(t.actualOptions)&&e.set(i.id,i.getPlugin(t));return e}getEffectDrawer(t){return this.effectDrawers.get(t)}getInteractors(t,e=!1){return Mi(t,this.interactors,this._initializers.interactors,e)}getMovers(t,e=!1){return Mi(t,this.movers,this._initializers.movers,e)}getPathGenerator(t){return this.pathGenerators.get(t)}getPlugin(t){return this.plugins.find((e=>e.id===t))}getPreset(t){return this.presets.get(t)}getShapeDrawer(t){return this.shapeDrawers.get(t)}getSupportedEffects(){return this.effectDrawers.keys()}getSupportedShapes(){return this.shapeDrawers.keys()}getUpdaters(t,e=!1){return Mi(t,this.updaters,this._initializers.updaters,e)}init(){this._initialized||(this._initialized=!0)}async load(t){const e=t.id??`tsparticles${Math.floor(1e4*_())}`,{index:s,url:o}=t,n=o?await async function(t){const e=ut(t.url,t.index);if(!e)return t.fallback;const i=await fetch(e);return i.ok?i.json():(W().error(`${f} ${i.status} while retrieving config file`),t.fallback)}({fallback:t.options,url:o,index:s}):t.options;let a=t.element??document.getElementById(e);a||(a=document.createElement("div"),a.id=e,document.body.append(a));const r=ut(n,s),c=this.dom(),l=c.findIndex((t=>t.id.description===e));if(l>=0){const t=this.domItem(l);t&&!t.destroyed&&(t.destroy(),c.splice(l,1))}let h;if("canvas"===a.tagName.toLowerCase())h=a,h.dataset[i]="false";else{const t=a.getElementsByTagName("canvas");t.length?(h=t[0],h.dataset[i]="false"):(h=document.createElement("canvas"),h.dataset[i]="true",a.appendChild(h))}h.style.width||(h.style.width="100%"),h.style.height||(h.style.height="100%");const d=new ki(this,e,r);return l>=0?c.splice(l,0,d):c.push(d),d.canvas.loadCanvas(h),await d.start(),d}loadOptions(t,e){for(const i of this.plugins)i.loadOptions(t,e)}loadParticlesOptions(t,e,...i){const s=this.updaters.get(t);if(s)for(const t of s)t.loadOptions&&t.loadOptions(e,...i)}async refresh(t=!0){t&&this.dom().forEach((t=>t.refresh()))}removeEventListener(t,e){this._eventDispatcher.removeEventListener(t,e)}setOnClickHandler(t){const e=this.dom();if(!e.length)throw new Error(`${f} can only set click handlers after calling tsParticles.load()`);for(const i of e)i.addClickHandler(t)}}class Pi{constructor(){this.key="hsl",this.stringPrefix="hsl"}handleColor(t){const e=t.value.hsl??t.value;if(void 0!==e.h&&void 0!==e.s&&void 0!==e.l)return At(e)}handleRangeColor(t){const e=t.value.hsl??t.value;if(void 0!==e.h&&void 0!==e.l)return At({h:C(e.h),l:C(e.l),s:C(e.s)})}parseString(t){if(!t.startsWith("hsl"))return;const e=/hsla?\(\s*(\d+)\s*,\s*(\d+)%\s*,\s*(\d+)%\s*(,\s*([\d.%]+)\s*)?\)/i.exec(t);return e?Ft({a:e.length>4?H(e[5]):1,h:parseInt(e[1],10),l:parseInt(e[3],10),s:parseInt(e[2],10)}):void 0}}class Oi{constructor(){this.key="rgb",this.stringPrefix="rgb"}handleColor(t){const e=t.value.rgb??t.value;if(void 0!==e.r)return e}handleRangeColor(t){const e=t.value.rgb??t.value;if(void 0!==e.r)return{r:C(e.r),g:C(e.g),b:C(e.b)}}parseString(t){if(!t.startsWith(this.stringPrefix))return;const e=/rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(,\s*([\d.%]+)\s*)?\)/i.exec(t);return e?{a:e.length>4?H(e[5]):1,b:parseInt(e[3],10),g:parseInt(e[2],10),r:parseInt(e[1],10)}:void 0}}class Si{constructor(t){this.container=t,this.type="external"}}class Di{constructor(t){this.container=t,this.type="particles"}}const Ti=function(){const t=new Oi,e=new Pi;Pt(t),Pt(e);const i=new Ci;return i.init(),i}();j()||(window.tsParticles=Ti);class Ri{constructor(){this.radius=0,this.mass=0}load(t){t&&(void 0!==t.mass&&(this.mass=t.mass),void 0!==t.radius&&(this.radius=t.radius))}}class Ei extends Re{constructor(){super(),this.density=5,this.value=50,this.limit=new Ri}load(t){t&&(super.load(t),void 0!==t.density&&(this.density=t.density),wt(t.limit)?this.limit.radius=t.limit:this.limit.load(t.limit))}}class Ii{constructor(){this.color=new ce,this.color.value="#000000",this.draggable=!1,this.opacity=1,this.destroy=!0,this.orbits=!1,this.size=new Ei}load(t){void 0!==t&&(void 0!==t.color&&(this.color=ce.create(this.color,t.color)),void 0!==t.draggable&&(this.draggable=t.draggable),this.name=t.name,void 0!==t.opacity&&(this.opacity=t.opacity),void 0!==t.position&&(this.position={},void 0!==t.position.x&&(this.position.x=S(t.position.x)),void 0!==t.position.y&&(this.position.y=S(t.position.y))),void 0!==t.size&&this.size.load(t.size),void 0!==t.destroy&&(this.destroy=t.destroy),void 0!==t.orbits&&(this.orbits=t.orbits))}}class Li{constructor(t,e,i,s){this.absorbers=t,this.container=e,this._calcPosition=()=>{const t=F({size:this.container.canvas.size,position:this.options.position});return y.create(t.x,t.y)},this._updateParticlePosition=(t,e)=>{if(t.destroyed)return;const i=this.container,s=i.canvas.size;if(t.needsNewPosition){const e=A({size:s});t.position.setTo(e),t.velocity.setTo(t.initialVelocity),t.absorberOrbit=void 0,t.needsNewPosition=!1}if(this.options.orbits){if(void 0===t.absorberOrbit&&(t.absorberOrbit=y.create(0,0),t.absorberOrbit.length=T(t.getPosition(),this.position),t.absorberOrbit.angle=_()*Math.PI*2),t.absorberOrbit.length<=this.size&&!this.options.destroy){const e=Math.min(s.width,s.height);t.absorberOrbit.length=e*(.2*_()-.1+1)}void 0===t.absorberOrbitDirection&&(t.absorberOrbitDirection=t.velocity.x>=0?"clockwise":"counter-clockwise");const o=t.absorberOrbit.length,n=t.absorberOrbit.angle,a=t.absorberOrbitDirection;t.velocity.setTo(y.origin);const r={x:"clockwise"===a?Math.cos:Math.sin,y:"clockwise"===a?Math.sin:Math.cos};t.position.x=this.position.x+o*r.x(n),t.position.y=this.position.y+o*r.y(n),t.absorberOrbit.length-=e.length,t.absorberOrbit.angle+=(t.retina.moveSpeed??0)*i.retina.pixelRatio/100*i.retina.reduceFactor}else{const i=y.origin;i.length=e.length,i.angle=e.angle,t.velocity.addTo(i)}},this.initialPosition=s?y.create(s.x,s.y):void 0,i instanceof Ii?this.options=i:(this.options=new Ii,this.options.load(i)),this.dragging=!1,this.name=this.options.name,this.opacity=this.options.opacity,this.size=C(this.options.size.value)*e.retina.pixelRatio,this.mass=this.size*this.options.size.density*e.retina.reduceFactor;const o=this.options.size.limit;this.limit={radius:o.radius*e.retina.pixelRatio*e.retina.reduceFactor,mass:o.mass},this.color=St(this.options.color)??{b:0,g:0,r:0},this.position=this.initialPosition?.copy()??this._calcPosition()}attract(t){const e=this.container,i=this.options;if(i.draggable){const t=e.interactivity.mouse;if(t.clicking&&t.downPosition){T(this.position,t.downPosition)<=this.size&&(this.dragging=!0)}else this.dragging=!1;this.dragging&&t.position&&(this.position.x=t.position.x,this.position.y=t.position.y)}const s=t.getPosition(),{dx:o,dy:n,distance:a}=D(this.position,s),r=y.create(o,n);if(r.length=this.mass/Math.pow(a,2)*e.retina.reduceFactor,at.getRadius()&&avoid 0===t||wt(t)?this.array[t||0]:this.array.find((e=>e.name===t)),t.addAbsorber=(t,e)=>this.addAbsorber(t,e)}addAbsorber(t,e){const i=new Li(this,this.container,t,e);return this.array.push(i),i}draw(t){for(const e of this.array)e.draw(t)}handleClickMode(t){const e=this.absorbers,i=this.interactivityAbsorbers;if("absorber"===t){const t=ut(i)??ut(e),s=this.container.interactivity.mouse.clickPosition;this.addAbsorber(t,s)}}async init(){this.absorbers=this.container.actualOptions.absorbers,this.interactivityAbsorbers=this.container.actualOptions.interactivity.modes.absorbers,dt(this.absorbers,(t=>{this.addAbsorber(t)}))}particleUpdate(t){for(const e of this.array)if(e.attract(t),t.destroyed)break}removeAbsorber(t){const e=this.array.indexOf(t);e>=0&&this.array.splice(e,1)}resize(){for(const t of this.array)t.resize()}stop(){this.array=[]}}class Fi{constructor(){this.id="absorbers"}getPlugin(t){return new Ai(t)}loadOptions(t,e){(this.needsPlugin(t)||this.needsPlugin(e))&&(e?.absorbers&&(t.absorbers=dt(e.absorbers,(t=>{const e=new Ii;return e.load(t),e}))),t.interactivity.modes.absorbers=dt(e?.interactivity?.modes?.absorbers,(t=>{const e=new Ii;return e.load(t),e})))}needsPlugin(t){if(!t)return!1;const e=t.absorbers;return kt(e)?!!e.length:!!e||!(!t.interactivity?.events?.onClick?.mode||!Z("absorber",t.interactivity.events.onClick.mode))}}class Bi{load(t){t&&(void 0!==t.bottom&&(this.bottom=S(t.bottom)),void 0!==t.left&&(this.left=S(t.left)),void 0!==t.right&&(this.right=S(t.right)),void 0!==t.top&&(this.top=S(t.top)))}}class qi extends Re{constructor(){super(),this.value=3}}class Hi extends Re{constructor(){super(),this.value={min:4,max:9}}}class Vi{constructor(){this.count=1,this.factor=new qi,this.rate=new Hi,this.sizeOffset=!0}load(t){t&&(void 0!==t.color&&(this.color=ce.create(this.color,t.color)),void 0!==t.count&&(this.count=t.count),this.factor.load(t.factor),this.rate.load(t.rate),this.particles=dt(t.particles,(t=>st({},t))),void 0!==t.sizeOffset&&(this.sizeOffset=t.sizeOffset),t.colorOffset&&(this.colorOffset=this.colorOffset??{},void 0!==t.colorOffset.h&&(this.colorOffset.h=t.colorOffset.h),void 0!==t.colorOffset.s&&(this.colorOffset.s=t.colorOffset.s),void 0!==t.colorOffset.l&&(this.colorOffset.l=t.colorOffset.l)))}}class Ui{constructor(){this.bounds=new Bi,this.mode="none",this.split=new Vi}load(t){t&&(t.mode&&(this.mode=t.mode),t.bounds&&this.bounds.load(t.bounds),this.split.load(t.split))}}function Wi(t,e,i,s){const o=i.options.destroy;if(!o)return;const n=o.split,a=ci(t,e,i.options),r=C(n.factor.value),c=i.getFillColor();n.color?a.color.load(n.color):n.colorOffset&&c?a.color.load({value:{hsl:{h:c.h+C(n.colorOffset.h??0),s:c.s+C(n.colorOffset.s??0),l:c.l+C(n.colorOffset.l??0)}}}):a.color.load({value:{hsl:i.getFillColor()}}),a.move.load({center:{x:i.position.x,y:i.position.y,mode:"precise"}}),wt(a.size.value)?a.size.value/=r:(a.size.value.min/=r,a.size.value.max/=r),a.load(s);const l=n.sizeOffset?S(-i.size.value,i.size.value):0,h={x:i.position.x+M(l),y:i.position.y+M(l)};return e.particles.addParticle(h,a,i.group,(t=>!(t.size.value<.5)&&(t.velocity.length=M(S(i.velocity.length,t.velocity.length)),t.splitCount=(i.splitCount??0)+1,t.unbreakable=!0,setTimeout((()=>{t.unbreakable=!1}),500),!0)))}class $i{constructor(t,e){this.engine=t,this.container=e}init(t){const e=this.container,i=t.options.destroy;if(!i)return;t.splitCount=0;const s=i.bounds;t.destroyBounds||(t.destroyBounds={});const{bottom:o,left:n,right:a,top:r}=s,{destroyBounds:c}=t,l=e.canvas.size;o&&(c.bottom=C(o)*l.height/100),n&&(c.left=C(n)*l.width/100),a&&(c.right=C(a)*l.width/100),r&&(c.top=C(r)*l.height/100)}isEnabled(t){return!t.destroyed}loadOptions(t,...e){t.destroy||(t.destroy=new Ui);for(const i of e)t.destroy.load(i?.destroy)}particleDestroyed(t,e){if(e)return;const i=t.options.destroy;i&&"split"===i.mode&&function(t,e,i){const s=i.options.destroy;if(!s)return;const o=s.split;if(o.count>=0&&(void 0===i.splitCount||i.splitCount++>o.count))return;const n=C(o.rate.value),a=ut(o.particles);for(let s=0;s=i.bottom||void 0!==i.left&&e.x<=i.left||void 0!==i.right&&e.x>=i.right||void 0!==i.top&&e.y<=i.top)&&t.destroy()}}class ji{constructor(){this.wait=!1}load(t){t&&(void 0!==t.count&&(this.count=t.count),void 0!==t.delay&&(this.delay=S(t.delay)),void 0!==t.duration&&(this.duration=S(t.duration)),void 0!==t.wait&&(this.wait=t.wait))}}class Gi{constructor(){this.quantity=1,this.delay=.1}load(t){void 0!==t&&(void 0!==t.quantity&&(this.quantity=S(t.quantity)),void 0!==t.delay&&(this.delay=S(t.delay)))}}class Ni{constructor(){this.color=!1,this.opacity=!1}load(t){t&&(void 0!==t.color&&(this.color=t.color),void 0!==t.opacity&&(this.opacity=t.opacity))}}class Xi{constructor(){this.options={},this.replace=new Ni,this.type="square"}load(t){t&&(void 0!==t.options&&(this.options=st({},t.options??{})),this.replace.load(t.replace),void 0!==t.type&&(this.type=t.type))}}class Yi{constructor(){this.mode="percent",this.height=0,this.width=0}load(t){void 0!==t&&(void 0!==t.mode&&(this.mode=t.mode),void 0!==t.height&&(this.height=t.height),void 0!==t.width&&(this.width=t.width))}}class Zi{constructor(){this.autoPlay=!0,this.fill=!0,this.life=new ji,this.rate=new Gi,this.shape=new Xi,this.startCount=0}load(t){t&&(void 0!==t.autoPlay&&(this.autoPlay=t.autoPlay),void 0!==t.size&&(this.size||(this.size=new Yi),this.size.load(t.size)),void 0!==t.direction&&(this.direction=t.direction),this.domId=t.domId,void 0!==t.fill&&(this.fill=t.fill),this.life.load(t.life),this.name=t.name,this.particles=dt(t.particles,(t=>st({},t))),this.rate.load(t.rate),this.shape.load(t.shape),void 0!==t.position&&(this.position={},void 0!==t.position.x&&(this.position.x=S(t.position.x)),void 0!==t.position.y&&(this.position.y=S(t.position.y))),void 0!==t.spawnColor&&(void 0===this.spawnColor&&(this.spawnColor=new Se),this.spawnColor.load(t.spawnColor)),void 0!==t.startCount&&(this.startCount=t.startCount))}}function Qi(t,e){t.color?t.color.value=e:t.color={value:e}}class Ji{constructor(t,e,i,s,o){this.emitters=e,this.container=i,this._destroy=()=>{this._mutationObserver?.disconnect(),this._mutationObserver=void 0,this._resizeObserver?.disconnect(),this._resizeObserver=void 0,this.emitters.removeEmitter(this),this._engine.dispatchEvent("emitterDestroyed",{container:this.container,data:{emitter:this}})},this._prepareToDie=()=>{if(this._paused)return;const t=void 0!==this.options.life?.duration?C(this.options.life.duration):void 0;this.container.retina.reduceFactor&&(this._lifeCount>0||this._immortal)&&void 0!==t&&t>0&&(this._duration=1e3*t)},this._setColorAnimation=(t,e,i)=>{const s=this.container;if(!t.enable)return e;const o=M(t.offset),n=1e3*C(this.options.rate.delay)/s.retina.reduceFactor;return(e+C(t.speed??0)*s.fpsLimit/n+3.6*o)%i},this._engine=t,this._currentDuration=0,this._currentEmitDelay=0,this._currentSpawnDelay=0,this._initialPosition=o,s instanceof Zi?this.options=s:(this.options=new Zi,this.options.load(s)),this._spawnDelay=1e3*C(this.options.life.delay??0)/this.container.retina.reduceFactor,this.position=this._initialPosition??this._calcPosition(),this.name=this.options.name,this.fill=this.options.fill,this._firstSpawn=!this.options.life.wait,this._startParticlesAdded=!1;let n=st({},this.options.particles);if(n??={},n.move??={},n.move.direction??=this.options.direction,this.options.spawnColor&&(this.spawnColor=Rt(this.options.spawnColor)),this._paused=!this.options.autoPlay,this._particlesOptions=n,this._size=this._calcSize(),this.size=mt(this._size,this.container.canvas.size),this._lifeCount=this.options.life.count??-1,this._immortal=this._lifeCount<=0,this.options.domId){const t=document.getElementById(this.options.domId);t&&(this._mutationObserver=new MutationObserver((()=>{this.resize()})),this._resizeObserver=new ResizeObserver((()=>{this.resize()})),this._mutationObserver.observe(t,{attributes:!0,attributeFilter:["style","width","height"]}),this._resizeObserver.observe(t))}const a=this.options.shape,r=this._engine.emitterShapeManager?.getShapeGenerator(a.type);r&&(this._shape=r.generate(this.position,this.size,this.fill,a.options)),this._engine.dispatchEvent("emitterCreated",{container:i,data:{emitter:this}}),this.play()}externalPause(){this._paused=!0,this.pause()}externalPlay(){this._paused=!1,this.play()}async init(){await(this._shape?.init())}pause(){this._paused||delete this._emitDelay}play(){if(!this._paused&&this.container.retina.reduceFactor&&(this._lifeCount>0||this._immortal||!this.options.life.count)&&(this._firstSpawn||this._currentSpawnDelay>=(this._spawnDelay??0))){if(void 0===this._emitDelay){const t=C(this.options.rate.delay);this._emitDelay=1e3*t/this.container.retina.reduceFactor}(this._lifeCount>0||this._immortal)&&this._prepareToDie()}}resize(){const t=this._initialPosition;this.position=t&&tt(t,this.container.canvas.size,y.origin)?t:this._calcPosition(),this._size=this._calcSize(),this.size=mt(this._size,this.container.canvas.size),this._shape?.resize(this.position,this.size)}async update(t){this._paused||(this._firstSpawn&&(this._firstSpawn=!1,this._currentSpawnDelay=this._spawnDelay??0,this._currentEmitDelay=this._emitDelay??0),this._startParticlesAdded||(this._startParticlesAdded=!0,await this._emitParticles(this.options.startCount)),void 0!==this._duration&&(this._currentDuration+=t.value,this._currentDuration>=this._duration&&(this.pause(),void 0!==this._spawnDelay&&delete this._spawnDelay,this._immortal||this._lifeCount--,this._lifeCount>0||this._immortal?(this.position=this._calcPosition(),this._shape?.resize(this.position,this.size),this._spawnDelay=1e3*C(this.options.life.delay??0)/this.container.retina.reduceFactor):this._destroy(),this._currentDuration-=this._duration,delete this._duration)),void 0!==this._spawnDelay&&(this._currentSpawnDelay+=t.value,this._currentSpawnDelay>=this._spawnDelay&&(this._engine.dispatchEvent("emitterPlay",{container:this.container}),this.play(),this._currentSpawnDelay-=this._currentSpawnDelay,delete this._spawnDelay)),void 0!==this._emitDelay&&(this._currentEmitDelay+=t.value,this._currentEmitDelay>=this._emitDelay&&(this._emit(),this._currentEmitDelay-=this._emitDelay)))}_calcPosition(){if(this.options.domId){const t=this.container,e=document.getElementById(this.options.domId);if(e){const i=e.getBoundingClientRect();return{x:(i.x+i.width/2)*t.retina.pixelRatio,y:(i.y+i.height/2)*t.retina.pixelRatio}}}return F({size:this.container.canvas.size,position:this.options.position})}_calcSize(){const t=this.container;if(this.options.domId){const e=document.getElementById(this.options.domId);if(e){const i=e.getBoundingClientRect();return{width:i.width*t.retina.pixelRatio,height:i.height*t.retina.pixelRatio,mode:"precise"}}}return this.options.size??(()=>{const t=new Yi;return t.load({height:0,mode:"percent",width:0}),t})()}async _emit(){if(this._paused)return;const t=C(this.options.rate.quantity);await this._emitParticles(t)}async _emitParticles(t){const e=ut(this._particlesOptions);for(let i=0;ivoid 0===t||wt(t)?this.array[t||0]:this.array.find((e=>e.name===t)),e.addEmitter=async(t,e)=>this.addEmitter(t,e),e.removeEmitter=t=>{const i=e.getEmitter(t);i&&this.removeEmitter(i)},e.playEmitter=t=>{const i=e.getEmitter(t);i&&i.externalPlay()},e.pauseEmitter=t=>{const i=e.getEmitter(t);i&&i.externalPause()}}async addEmitter(t,e){const i=new Zi;i.load(t);const s=new Ji(this._engine,this,this.container,i,e);return await s.init(),this.array.push(s),s}handleClickMode(t){const e=this.emitters,i=this.interactivityEmitters;if("emitter"!==t)return;let s;if(i&&kt(i.value))if(i.value.length>0&&i.random.enable){s=[];const t=[];for(let e=0;e{this.addEmitter(t,n)}))}async init(){if(this.emitters=this.container.actualOptions.emitters,this.interactivityEmitters=this.container.actualOptions.interactivity.modes.emitters,this.emitters)if(kt(this.emitters))for(const t of this.emitters)await this.addEmitter(t);else await this.addEmitter(this.emitters)}pause(){for(const t of this.array)t.pause()}play(){for(const t of this.array)t.play()}removeEmitter(t){const e=this.array.indexOf(t);e>=0&&this.array.splice(e,1)}resize(){for(const t of this.array)t.resize()}stop(){this.array=[]}async update(t){for(const e of this.array)await e.update(t)}}const ts=new Map;class es{constructor(t){this._engine=t}addShapeGenerator(t,e){this.getShapeGenerator(t)||ts.set(t,e)}getShapeGenerator(t){return ts.get(t)}getSupportedShapeGenerators(){return ts.keys()}}class is{constructor(t,e,i,s){this.position=t,this.size=e,this.fill=i,this.options=s}resize(t,e){this.position=t,this.size=e}}class ss{constructor(t){this._engine=t,this.id="emitters"}getPlugin(t){return new Ki(this._engine,t)}loadOptions(t,e){if(!this.needsPlugin(t)&&!this.needsPlugin(e))return;e?.emitters&&(t.emitters=dt(e.emitters,(t=>{const e=new Zi;return e.load(t),e})));const i=e?.interactivity?.modes?.emitters;if(i)if(kt(i))t.interactivity.modes.emitters={random:{count:1,enable:!0},value:i.map((t=>{const e=new Zi;return e.load(t),e}))};else{const e=i;if(void 0!==e.value)if(kt(e.value))t.interactivity.modes.emitters={random:{count:e.random.count??1,enable:e.random.enable??!1},value:e.value.map((t=>{const e=new Zi;return e.load(t),e}))};else{const i=new Zi;i.load(e.value),t.interactivity.modes.emitters={random:{count:e.random.count??1,enable:e.random.enable??!1},value:i}}else{(t.interactivity.modes.emitters={random:{count:1,enable:!1},value:new Zi}).value.load(i)}}}needsPlugin(t){if(!t)return!1;const e=t.emitters;return kt(e)&&!!e.length||void 0!==e||!!t.interactivity?.events?.onClick?.mode&&Z("emitter",t.interactivity.events.onClick.mode)}}class os extends is{constructor(t,e,i,s){super(t,e,i,s)}async init(){}async randomPosition(){const t=this.size,e=this.fill,i=this.position,[s,o]=[t.width/2,t.height/2],n=((t,e)=>{const i=_()/4,s=Math.atan(e/t*Math.tan(2*Math.PI*i)),o=_();return o<.25?s:o<.5?Math.PI-s:o<.75?Math.PI+s:-s})(s,o),a=(h=n,(c=s)*(l=o)/Math.sqrt((l*Math.cos(h))**2+(c*Math.sin(h))**2)),r=e?a*Math.sqrt(_()):a;var c,l,h;return{position:{x:i.x+r*Math.cos(n),y:i.y+r*Math.sin(n)}}}}class ns{generate(t,e,i,s){return new os(t,e,i,s)}}function as(t,e){return t+e*(_()-.5)}class rs extends is{constructor(t,e,i,s){super(t,e,i,s)}async init(){}async randomPosition(){const t=this.fill,e=this.position,i=this.size;if(t)return{position:{x:as(e.x,i.width),y:as(e.y,i.height)}};{const t=i.width/2,s=i.height/2,o=Math.floor(4*_()),n=2*(_()-.5);switch(o){case 0:return{position:{x:e.x+n*t,y:e.y-s}};case 1:return{position:{x:e.x-t,y:e.y+n*s}};case 2:return{position:{x:e.x+n*t,y:e.y+s}};default:return{position:{x:e.x+t,y:e.y+n*s}}}}}}class cs{generate(t,e,i,s){return new rs(t,e,i,s)}}class ls{constructor(){this.delay=1,this.pauseOnStop=!1,this.quantity=1}load(t){t&&(void 0!==t.delay&&(this.delay=t.delay),void 0!==t.quantity&&(this.quantity=t.quantity),void 0!==t.particles&&(this.particles=st({},t.particles)),void 0!==t.pauseOnStop&&(this.pauseOnStop=t.pauseOnStop))}}const hs="trail";class ds extends Si{constructor(t){super(t),this._delay=0}clear(){}init(){}async interact(t){const e=this.container,{interactivity:i}=e;if(!e.retina.reduceFactor)return;const s=e.actualOptions.interactivity.modes.trail;if(!s)return;const o=1e3*s.delay/this.container.retina.reduceFactor;if(this._delay=.5?"darken":"enlighten";t.roll.alter={type:i,value:C("darken"===i?e.darken.value:e.enlighten.value)}}else e.darken.enable?t.roll.alter={type:"darken",value:C(e.darken.value)}:e.enlighten.enable&&(t.roll.alter={type:"enlighten",value:C(e.enlighten.value)});else t.roll={enable:!1,horizontal:!1,vertical:!1,angle:0,speed:0}}(t)}isEnabled(t){const e=t.options.roll;return!t.destroyed&&!t.spawning&&!!e?.enable}loadOptions(t,...e){t.roll||(t.roll=new ps);for(const i of e)t.roll.load(i?.roll)}update(t,e){this.isEnabled(t)&&function(t,e){const i=t.options.roll,s=t.roll;if(!s||!i?.enable)return;const o=s.speed*e.factor,n=2*Math.PI;s.angle+=o,s.angle>n&&(s.angle-=n)}(t,e)}}function vs(t,e,i,s,o,n){!function(t,e){const i=t.options,s=i.move.path;if(!s.enable)return;if(t.lastPathTime<=t.pathDelay)return void(t.lastPathTime+=e.value);const o=t.pathGenerator?.generate(t,e);o&&t.velocity.addTo(o);s.clamp&&(t.velocity.x=k(t.velocity.x,-1,1),t.velocity.y=k(t.velocity.y,-1,1));t.lastPathTime-=t.pathDelay}(t,n);const a=t.gravity,r=a?.enable&&a.inverse?-1:1;o&&i&&(t.velocity.x+=o*n.factor/(60*i)),a?.enable&&i&&(t.velocity.y+=r*(a.acceleration*n.factor)/(60*i));const c=t.moveDecay;t.velocity.multTo(c);const l=t.velocity.mult(i);a?.enable&&s>0&&(!a.inverse&&l.y>=0&&l.y>=s||a.inverse&&l.y<=0&&l.y<=-s)&&(l.y=r*s,i&&(t.velocity.y=l.y/i));const h=t.options.zIndex,d=(1-t.zIndexFactor)**h.velocityRate;l.multTo(d);const{position:u}=t;u.addTo(l),e.vibrate&&(u.x+=Math.sin(u.x*Math.cos(u.y)),u.y+=Math.cos(u.y*Math.sin(u.x)))}class ys{constructor(){this._initSpin=t=>{const e=t.container,i=t.options.move.spin;if(!i.enable)return;const s=i.position??{x:50,y:50},o={x:.01*s.x*e.canvas.size.width,y:.01*s.y*e.canvas.size.height},n=T(t.getPosition(),o),a=C(i.acceleration);t.retina.spinAcceleration=a*e.retina.pixelRatio,t.spin={center:o,direction:t.velocity.x>=0?"clockwise":"counter-clockwise",angle:t.velocity.angle,radius:n,acceleration:t.retina.spinAcceleration}}}init(t){const e=t.options.move.gravity;t.gravity={enable:e.enable,acceleration:C(e.acceleration),inverse:e.inverse},this._initSpin(t)}isEnabled(t){return!t.destroyed&&t.options.move.enable}move(t,e){const i=t.options,s=i.move;if(!s.enable)return;const o=t.container,n=o.retina.pixelRatio,a=function(t){return t.slow.inRange?t.slow.factor:1}(t),r=(t.retina.moveSpeed??=C(s.speed)*n)*o.retina.reduceFactor,c=t.retina.moveDrift??=C(t.options.move.drift)*n,l=O(i.size.value)*n,h=r*(s.size?t.getRadius()/l:1)*a*(e.factor||1)/2,d=t.retina.maxSpeed??o.retina.maxSpeed;s.spin.enable?function(t,e){const i=t.container;if(!t.spin)return;const s={x:"clockwise"===t.spin.direction?Math.cos:Math.sin,y:"clockwise"===t.spin.direction?Math.sin:Math.cos};t.position.x=t.spin.center.x+t.spin.radius*s.x(t.spin.angle),t.position.y=t.spin.center.y+t.spin.radius*s.y(t.spin.angle),t.spin.radius+=t.spin.acceleration;const o=Math.max(i.canvas.size.width,i.canvas.size.height),n=.5*o;t.spin.radius>n?(t.spin.radius=n,t.spin.acceleration*=-1):t.spin.radius<0&&(t.spin.radius=0,t.spin.acceleration*=-1),t.spin.angle+=.01*e*(1-t.spin.radius/o)}(t,h):vs(t,s,h,d,c,e),function(t){const e=t.initialPosition,{dx:i,dy:s}=D(e,t.position),o=Math.abs(i),n=Math.abs(s),{maxDistance:a}=t.retina,r=a.horizontal,c=a.vertical;if(r||c)if((r&&o>=r||c&&n>=c)&&!t.misplaced)t.misplaced=!!r&&o>r||!!c&&n>c,r&&(t.velocity.x=.5*t.velocity.y-t.velocity.x),c&&(t.velocity.y=.5*t.velocity.x-t.velocity.y);else if((!r||oe.x&&s.x>0)&&(s.x*=-_()),c&&(i.ye.y&&s.y>0)&&(s.y*=-_())}}(t)}}class ms{draw(t){const{context:e,particle:i,radius:s}=t;i.circleRange||(i.circleRange={min:0,max:2*Math.PI});const o=i.circleRange;e.arc(0,0,s,o.min,o.max,!1)}getSidesCount(){return 12}particleInit(t,e){const i=e.shapeData,s=i?.angle??{max:360,min:0};e.circleRange=_t(s)?{min:s.min*Math.PI/180,max:s.max*Math.PI/180}:{min:0,max:s*Math.PI/180}}}function gs(t,e,i,s,o){if(!e||!i.enable||(e.maxLoops??0)>0&&(e.loops??0)>(e.maxLoops??0))return;if(e.time||(e.time=0),(e.delayTime??0)>0&&e.time<(e.delayTime??0)&&(e.time+=t.value),(e.delayTime??0)>0&&e.time<(e.delayTime??0))return;const n=M(i.offset),a=(e.velocity??0)*t.factor+3.6*n,r=e.decay??1;o&&"increasing"!==e.status?(e.value-=a,e.value<0&&(e.loops||(e.loops=0),e.loops++,e.status="increasing",e.value+=e.value)):(e.value+=a,e.value>s&&(e.loops||(e.loops=0),e.loops++,o&&(e.status="decreasing",e.value-=e.value%s))),e.velocity&&1!==r&&(e.velocity*=r),e.value>s&&(e.value%=s)}class bs{constructor(t){this.container=t}init(t){const e=Rt(t.options.color,t.id,t.options.reduceDuplicates);e&&(t.color=jt(e,t.options.color.animation,this.container.retina.reduceFactor))}isEnabled(t){const{h:e,s:i,l:s}=t.options.color.animation,{color:o}=t;return!t.destroyed&&!t.spawning&&(void 0!==o?.h.value&&e.enable||void 0!==o?.s.value&&i.enable||void 0!==o?.l.value&&s.enable)}update(t,e){!function(t,e){const{h:i,s,l:o}=t.options.color.animation,{color:n}=t;if(!n)return;const{h:a,s:r,l:c}=n;a&&gs(e,a,i,360,!1),r&&gs(e,r,s,100,!0),c&&gs(e,c,o,100,!0)}(t,e)}}class ws{constructor(t){this.container=t}init(t){const e=t.options.opacity;t.opacity=ft(e,1);const i=e.animation;i.enable&&(t.opacity.velocity=C(i.speed)/100*this.container.retina.reduceFactor,i.sync||(t.opacity.velocity*=_()))}isEnabled(t){return!t.destroyed&&!t.spawning&&!!t.opacity&&t.opacity.enable&&((t.opacity.maxLoops??0)<=0||(t.opacity.maxLoops??0)>0&&(t.opacity.loops??0)<(t.opacity.maxLoops??0))}reset(t){t.opacity&&(t.opacity.time=0,t.opacity.loops=0)}update(t,e){this.isEnabled(t)&&function(t,e){const i=t.opacity;if(t.destroyed||!i?.enable||(i.maxLoops??0)>0&&(i.loops??0)>(i.maxLoops??0))return;const s=i.min,o=i.max,n=i.decay??1;if(i.time||(i.time=0),(i.delayTime??0)>0&&i.time<(i.delayTime??0)&&(i.time+=e.value),!((i.delayTime??0)>0&&i.time<(i.delayTime??0))){switch(i.status){case"increasing":i.value>=o?(i.status="decreasing",i.loops||(i.loops=0),i.loops++):i.value+=(i.velocity??0)*e.factor;break;case"decreasing":i.value<=s?(i.status="increasing",i.loops||(i.loops=0),i.loops++):i.value-=(i.velocity??0)*e.factor}i.velocity&&1!==i.decay&&(i.velocity*=n),function(t,e,i,s){switch(t.options.opacity.animation.destroy){case"max":e>=s&&t.destroy();break;case"min":e<=i&&t.destroy()}}(t,i.value,s,o),t.destroyed||(i.value=k(i.value,s,o))}}(t,e)}}class xs{constructor(t){this.container=t,this.modes=["bounce","bounce-vertical","bounce-horizontal","bounceVertical","bounceHorizontal","split"]}update(t,e,i,s){if(!this.modes.includes(s))return;const o=this.container;let n=!1;for(const[,s]of o.plugins)if(void 0!==s.particleBounce&&(n=s.particleBounce(t,i,e)),n)break;if(n)return;const a=t.getPosition(),r=t.offset,c=t.getRadius(),l=it(a,c),h=o.canvas.size;!function(t){if("bounce"!==t.outMode&&"bounce-horizontal"!==t.outMode&&"bounceHorizontal"!==t.outMode&&"split"!==t.outMode||"left"!==t.direction&&"right"!==t.direction)return;t.bounds.right<0&&"left"===t.direction?t.particle.position.x=t.size+t.offset.x:t.bounds.left>t.canvasSize.width&&"right"===t.direction&&(t.particle.position.x=t.canvasSize.width-t.size-t.offset.x);const e=t.particle.velocity.x;let i=!1;if("right"===t.direction&&t.bounds.right>=t.canvasSize.width&&e>0||"left"===t.direction&&t.bounds.left<=0&&e<0){const e=C(t.particle.options.bounce.horizontal.value);t.particle.velocity.x*=-e,i=!0}if(!i)return;const s=t.offset.x+t.size;t.bounds.right>=t.canvasSize.width&&"right"===t.direction?t.particle.position.x=t.canvasSize.width-s:t.bounds.left<=0&&"left"===t.direction&&(t.particle.position.x=s),"split"===t.outMode&&t.particle.destroy()}({particle:t,outMode:s,direction:e,bounds:l,canvasSize:h,offset:r,size:c}),function(t){if("bounce"!==t.outMode&&"bounce-vertical"!==t.outMode&&"bounceVertical"!==t.outMode&&"split"!==t.outMode||"bottom"!==t.direction&&"top"!==t.direction)return;t.bounds.bottom<0&&"top"===t.direction?t.particle.position.y=t.size+t.offset.y:t.bounds.top>t.canvasSize.height&&"bottom"===t.direction&&(t.particle.position.y=t.canvasSize.height-t.size-t.offset.y);const e=t.particle.velocity.y;let i=!1;if("bottom"===t.direction&&t.bounds.bottom>=t.canvasSize.height&&e>0||"top"===t.direction&&t.bounds.top<=0&&e<0){const e=C(t.particle.options.bounce.vertical.value);t.particle.velocity.y*=-e,i=!0}if(!i)return;const s=t.offset.y+t.size;t.bounds.bottom>=t.canvasSize.height&&"bottom"===t.direction?t.particle.position.y=t.canvasSize.height-s:t.bounds.top<=0&&"top"===t.direction&&(t.particle.position.y=s),"split"===t.outMode&&t.particle.destroy()}({particle:t,outMode:s,direction:e,bounds:l,canvasSize:h,offset:r,size:c})}}class _s{constructor(t){this.container=t,this.modes=["destroy"]}update(t,e,i,s){if(!this.modes.includes(s))return;const o=this.container;switch(t.outType){case"normal":case"outside":if(tt(t.position,o.canvas.size,y.origin,t.getRadius(),e))return;break;case"inside":{const{dx:e,dy:i}=D(t.position,t.moveCenter),{x:s,y:o}=t.velocity;if(s<0&&e>t.moveCenter.radius||o<0&&i>t.moveCenter.radius||s>=0&&e<-t.moveCenter.radius||o>=0&&i<-t.moveCenter.radius)return;break}}o.particles.remove(t,void 0,!0)}}class ks{constructor(t){this.container=t,this.modes=["none"]}update(t,e,i,s){if(!this.modes.includes(s))return;if(t.options.move.distance.horizontal&&("left"===e||"right"===e)||t.options.move.distance.vertical&&("top"===e||"bottom"===e))return;const o=t.options.move.gravity,n=this.container,a=n.canvas.size,r=t.getRadius();if(o.enable){const i=t.position;(!o.inverse&&i.y>a.height+r&&"bottom"===e||o.inverse&&i.y<-r&&"top"===e)&&n.particles.remove(t)}else{if(t.velocity.y>0&&t.position.y<=a.height+r||t.velocity.y<0&&t.position.y>=-r||t.velocity.x>0&&t.position.x<=a.width+r||t.velocity.x<0&&t.position.x>=-r)return;tt(t.position,n.canvas.size,y.origin,r,e)||n.particles.remove(t)}}}class zs{constructor(t){this.container=t,this.modes=["out"]}update(t,e,i,s){if(!this.modes.includes(s))return;const o=this.container;switch(t.outType){case"inside":{const{x:e,y:i}=t.velocity,s=y.origin;s.length=t.moveCenter.radius,s.angle=t.velocity.angle+Math.PI,s.addTo(y.create(t.moveCenter));const{dx:n,dy:a}=D(t.position,s);if(e<=0&&n>=0||i<=0&&a>=0||e>=0&&n<=0||i>=0&&a<=0)return;t.position.x=Math.floor(M({min:0,max:o.canvas.size.width})),t.position.y=Math.floor(M({min:0,max:o.canvas.size.height}));const{dx:r,dy:c}=D(t.position,t.moveCenter);t.direction=Math.atan2(-c,-r),t.velocity.angle=t.direction;break}default:if(tt(t.position,o.canvas.size,y.origin,t.getRadius(),e))return;switch(t.outType){case"outside":{t.position.x=Math.floor(M({min:-t.moveCenter.radius,max:t.moveCenter.radius}))+t.moveCenter.x,t.position.y=Math.floor(M({min:-t.moveCenter.radius,max:t.moveCenter.radius}))+t.moveCenter.y;const{dx:e,dy:i}=D(t.position,t.moveCenter);t.moveCenter.radius&&(t.direction=Math.atan2(i,e),t.velocity.angle=t.direction);break}case"normal":{const i=t.options.move.warp,s=o.canvas.size,n={bottom:s.height+t.getRadius()+t.offset.y,left:-t.getRadius()-t.offset.x,right:s.width+t.getRadius()+t.offset.x,top:-t.getRadius()-t.offset.y},a=t.getRadius(),r=it(t.position,a);"right"===e&&r.left>s.width+t.offset.x?(t.position.x=n.left,t.initialPosition.x=t.position.x,i||(t.position.y=_()*s.height,t.initialPosition.y=t.position.y)):"left"===e&&r.right<-t.offset.x&&(t.position.x=n.right,t.initialPosition.x=t.position.x,i||(t.position.y=_()*s.height,t.initialPosition.y=t.position.y)),"bottom"===e&&r.top>s.height+t.offset.y?(i||(t.position.x=_()*s.width,t.initialPosition.x=t.position.x),t.position.y=n.top,t.initialPosition.y=t.position.y):"top"===e&&r.bottom<-t.offset.y&&(i||(t.position.x=_()*s.width,t.initialPosition.x=t.position.x),t.position.y=n.bottom,t.initialPosition.y=t.position.y);break}}}}}class Ms{constructor(t){this.container=t,this._updateOutMode=(t,e,i,s)=>{for(const o of this.updaters)o.update(t,s,e,i)},this.updaters=[new xs(t),new _s(t),new zs(t),new ks(t)]}init(){}isEnabled(t){return!t.destroyed&&!t.spawning}update(t,e){const i=t.options.move.outModes;this._updateOutMode(t,e,i.bottom??i.default,"bottom"),this._updateOutMode(t,e,i.left??i.default,"left"),this._updateOutMode(t,e,i.right??i.default,"right"),this._updateOutMode(t,e,i.top??i.default,"top")}}class Cs{init(t){const e=t.container,i=t.options.size.animation;i.enable&&(t.size.velocity=(t.retina.sizeAnimationSpeed??e.retina.sizeAnimationSpeed)/100*e.retina.reduceFactor,i.sync||(t.size.velocity*=_()))}isEnabled(t){return!t.destroyed&&!t.spawning&&t.size.enable&&((t.size.maxLoops??0)<=0||(t.size.maxLoops??0)>0&&(t.size.loops??0)<(t.size.maxLoops??0))}reset(t){t.size.loops=0}update(t,e){this.isEnabled(t)&&function(t,e){const i=t.size;if(t.destroyed||!i||!i.enable||(i.maxLoops??0)>0&&(i.loops??0)>(i.maxLoops??0))return;const s=(i.velocity??0)*e.factor,o=i.min,n=i.max,a=i.decay??1;if(i.time||(i.time=0),(i.delayTime??0)>0&&i.time<(i.delayTime??0)&&(i.time+=e.value),!((i.delayTime??0)>0&&i.time<(i.delayTime??0))){switch(i.status){case"increasing":i.value>=n?(i.status="decreasing",i.loops||(i.loops=0),i.loops++):i.value+=s;break;case"decreasing":i.value<=o?(i.status="increasing",i.loops||(i.loops=0),i.loops++):i.value-=s}i.velocity&&1!==a&&(i.velocity*=a),function(t,e,i,s){switch(t.options.size.animation.destroy){case"max":e>=s&&t.destroy();break;case"min":e<=i&&t.destroy()}}(t,i.value,o,n),t.destroyed||(i.value=k(i.value,o,n))}}(t,e)}}async function Ps(t,e=!0){await async function(t,e=!0){await t.addMover("base",(()=>new ys),e)}(t,!1),await async function(t,e=!0){await t.addShape("circle",new ms,e)}(t,!1),await async function(t,e=!0){await t.addParticleUpdater("color",(t=>new bs(t)),e)}(t,!1),await async function(t,e=!0){await t.addParticleUpdater("opacity",(t=>new ws(t)),e)}(t,!1),await async function(t,e=!0){await t.addParticleUpdater("outModes",(t=>new Ms(t)),e)}(t,!1),await async function(t,e=!0){await t.addParticleUpdater("size",(()=>new Cs),e)}(t,!1),await t.refresh(e)}const Os=["emoji"],Ss='"Twemoji Mozilla", Apple Color Emoji, "Segoe UI Emoji", "Noto Color Emoji", "EmojiOne Color"';class Ds{constructor(){this._emojiShapeDict=new Map}destroy(){for(const[,t]of this._emojiShapeDict)t instanceof ImageBitmap&&t?.close()}draw(t){const{context:e,particle:i,radius:s,opacity:o}=t,n=i.emojiData;n&&(e.globalAlpha=o,e.drawImage(n,-s,-s,2*s,2*s),e.globalAlpha=1)}async init(t){const e=t.actualOptions;if(Os.find((t=>Z(t,e.particles.shape.type)))){const t=[Q(Ss)],i=Os.map((t=>e.particles.shape.options[t])).find((t=>!!t));i&&dt(i,(e=>{e.font&&t.push(Q(e.font))})),await Promise.all(t)}}particleDestroy(t){delete t.emojiData}particleInit(t,e){if(!e.emojiData){const t=e.shapeData;if(!t?.value)return;const i=ut(t.value,e.randomIndexData),s=t.font??Ss;if(!i)return;const o=`${i}_${s}`,n=this._emojiShapeDict.get(o);if(n)return void(e.emojiData=n);const a=2*O(e.size.value);let r;if("undefined"!=typeof OffscreenCanvas){const t=new OffscreenCanvas(a,a),o=t.getContext("2d");if(!o)return;o.font=`400 ${2*O(e.size.value)}px ${s}`,o.textBaseline="middle",o.textAlign="center",o.fillText(i,O(e.size.value),O(e.size.value)),r=t.transferToImageBitmap()}else{const t=document.createElement("canvas");t.width=a,t.height=a;const o=t.getContext("2d");if(!o)return;o.font=`400 ${2*O(e.size.value)}px ${s}`,o.textBaseline="middle",o.textAlign="center",o.fillText(i,O(e.size.value),O(e.size.value)),r=t}this._emojiShapeDict.set(o,r),e.emojiData=r}}}class Ts{constructor(){this.distance=200,this.duration=.4,this.easing="ease-out-quad",this.factor=1,this.maxSpeed=50,this.speed=1}load(t){t&&(void 0!==t.distance&&(this.distance=t.distance),void 0!==t.duration&&(this.duration=t.duration),void 0!==t.easing&&(this.easing=t.easing),void 0!==t.factor&&(this.factor=t.factor),void 0!==t.maxSpeed&&(this.maxSpeed=t.maxSpeed),void 0!==t.speed&&(this.speed=t.speed))}}const Rs="attract";class Es extends Si{constructor(t,e){super(e),this._clickAttract=()=>{const t=this.container;t.attract||(t.attract={particles:[]});const{attract:e}=t;if(e.finish||(e.count||(e.count=0),e.count++,e.count===t.particles.count&&(e.finish=!0)),e.clicking){const e=t.interactivity.mouse.clickPosition,i=t.retina.attractModeDistance;if(!i||i<0||!e)return;this._processAttract(e,i,new yi(e.x,e.y,i))}else!1===e.clicking&&(e.particles=[])},this._hoverAttract=()=>{const t=this.container,e=t.interactivity.mouse.position,i=t.retina.attractModeDistance;!i||i<0||!e||this._processAttract(e,i,new yi(e.x,e.y,i))},this._processAttract=(t,e,i)=>{const s=this.container,o=s.actualOptions.interactivity.modes.attract;if(!o)return;const n=s.particles.quadTree.query(i,(t=>this.isEnabled(t)));for(const i of n){const{dx:s,dy:n,distance:a}=D(i.position,t),r=o.speed*o.factor,c=k(w(o.easing)(1-a/e)*r,0,o.maxSpeed),l=y.create(0===a?r:s/a*c,0===a?r:n/a*c);i.position.subFrom(l)}},this._engine=t,e.attract||(e.attract={particles:[]}),this.handleClickMode=t=>{const i=this.container.actualOptions.interactivity.modes.attract;if(i&&t===Rs){e.attract||(e.attract={particles:[]}),e.attract.clicking=!0,e.attract.count=0;for(const t of e.attract.particles)this.isEnabled(t)&&t.velocity.setTo(t.initialVelocity);e.attract.particles=[],e.attract.finish=!1,setTimeout((()=>{e.destroyed||(e.attract||(e.attract={particles:[]}),e.attract.clicking=!1)}),1e3*i.duration)}}}clear(){}init(){const t=this.container,e=t.actualOptions.interactivity.modes.attract;e&&(t.retina.attractModeDistance=e.distance*t.retina.pixelRatio)}async interact(){const t=this.container,e=t.actualOptions,i=t.interactivity.status===r,s=e.interactivity.events,o=s.onHover.enable,n=s.onHover.mode,a=s.onClick.enable,c=s.onClick.mode;i&&o&&Z(Rs,n)?this._hoverAttract():a&&Z(Rs,c)&&this._clickAttract()}isEnabled(t){const e=this.container,i=e.actualOptions,s=e.interactivity.mouse,o=(t?.interactivity??i.interactivity).events;if(!(s.position&&o.onHover.enable||s.clickPosition&&o.onClick.enable))return!1;const n=o.onHover.mode,a=o.onClick.mode;return Z(Rs,n)||Z(Rs,a)}loadModeOptions(t,...e){t.attract||(t.attract=new Ts);for(const i of e)t.attract.load(i?.attract)}reset(){}}class Is{constructor(){this.distance=200}load(t){t&&void 0!==t.distance&&(this.distance=t.distance)}}const Ls="bounce";class As extends Si{constructor(t){super(t),this._processBounce=(t,e,i)=>{const s=this.container.particles.quadTree.query(i,(t=>this.isEnabled(t)));for(const o of s)i instanceof yi?lt(ct(o),{position:t,radius:e,mass:e**2*Math.PI/2,velocity:y.origin,factor:y.origin}):i instanceof vi&&ht(o,it(t,e))},this._processMouseBounce=()=>{const t=this.container,e=10*t.retina.pixelRatio,i=t.interactivity.mouse.position,s=t.retina.bounceModeDistance;!s||s<0||!i||this._processBounce(i,s,new yi(i.x,i.y,s+e))},this._singleSelectorBounce=(t,e)=>{const i=this.container,s=document.querySelectorAll(t);s.length&&s.forEach((t=>{const s=t,o=i.retina.pixelRatio,n={x:(s.offsetLeft+s.offsetWidth/2)*o,y:(s.offsetTop+s.offsetHeight/2)*o},a=s.offsetWidth/2*o,r=10*o,c="circle"===e.type?new yi(n.x,n.y,a+r):new vi(s.offsetLeft*o-r,s.offsetTop*o-r,s.offsetWidth*o+2*r,s.offsetHeight*o+2*r);this._processBounce(n,a,c)}))}}clear(){}init(){const t=this.container,e=t.actualOptions.interactivity.modes.bounce;e&&(t.retina.bounceModeDistance=e.distance*t.retina.pixelRatio)}async interact(){const t=this.container,e=t.actualOptions.interactivity.events,i=t.interactivity.status===r,s=e.onHover.enable,o=e.onHover.mode,n=e.onDiv;i&&s&&Z(Ls,o)?this._processMouseBounce():nt(Ls,n,((t,e)=>this._singleSelectorBounce(t,e)))}isEnabled(t){const e=this.container,i=e.actualOptions,s=e.interactivity.mouse,o=(t?.interactivity??i.interactivity).events,n=o.onDiv;return s.position&&o.onHover.enable&&Z(Ls,o.onHover.mode)||ot(Ls,n)}loadModeOptions(t,...e){t.bounce||(t.bounce=new Is);for(const i of e)t.bounce.load(i?.bounce)}reset(){}}class Fs{constructor(){this.distance=200,this.duration=.4,this.mix=!1}load(t){if(t){if(void 0!==t.distance&&(this.distance=t.distance),void 0!==t.duration&&(this.duration=t.duration),void 0!==t.mix&&(this.mix=t.mix),void 0!==t.opacity&&(this.opacity=t.opacity),void 0!==t.color){const e=kt(this.color)?void 0:this.color;this.color=dt(t.color,(t=>ce.create(e,t)))}void 0!==t.size&&(this.size=t.size)}}}class Bs extends Fs{constructor(){super(),this.selectors=[]}load(t){super.load(t),t&&void 0!==t.selectors&&(this.selectors=t.selectors)}}class qs extends Fs{load(t){super.load(t),t&&(this.divs=dt(t.divs,(t=>{const e=new Bs;return e.load(t),e})))}}function Hs(t,e,i,s){if(e>=i){return k(t+(e-i)*s,t,e)}if(e{const t=this.container,e=t.actualOptions,i=t.interactivity.mouse.clickPosition,s=e.interactivity.modes.bubble;if(!s||!i)return;t.bubble||(t.bubble={});const o=t.retina.bubbleModeDistance;if(!o||o<0)return;const n=t.particles.quadTree.queryCircle(i,o,(t=>this.isEnabled(t))),{bubble:a}=t;for(const e of n){if(!a.clicking)continue;e.bubble.inRange=!a.durationEnd;const n=T(e.getPosition(),i),r=((new Date).getTime()-(t.interactivity.mouse.clickTime||0))/1e3;r>s.duration&&(a.durationEnd=!0),r>2*s.duration&&(a.clicking=!1,a.durationEnd=!1);const c={bubbleObj:{optValue:t.retina.bubbleModeSize,value:e.bubble.radius},particlesObj:{optValue:O(e.options.size.value)*t.retina.pixelRatio,value:e.size.value},type:"size"};this._process(e,n,r,c);const l={bubbleObj:{optValue:s.opacity,value:e.bubble.opacity},particlesObj:{optValue:O(e.options.opacity.value),value:e.opacity?.value??1},type:"opacity"};this._process(e,n,r,l),!a.durationEnd&&n<=o?this._hoverBubbleColor(e,n):delete e.bubble.color}},this._hoverBubble=()=>{const t=this.container,e=t.interactivity.mouse.position,i=t.retina.bubbleModeDistance;if(!i||i<0||void 0===e)return;const s=t.particles.quadTree.queryCircle(e,i,(t=>this.isEnabled(t)));for(const o of s){o.bubble.inRange=!0;const s=T(o.getPosition(),e),a=1-s/i;s<=i?a>=0&&t.interactivity.status===r&&(this._hoverBubbleSize(o,a),this._hoverBubbleOpacity(o,a),this._hoverBubbleColor(o,a)):this.reset(o),t.interactivity.status===n&&this.reset(o)}},this._hoverBubbleColor=(t,e,i)=>{const s=this.container.actualOptions,o=i??s.interactivity.modes.bubble;if(o){if(!t.bubble.finalColor){const e=o.color;if(!e)return;const i=ut(e);t.bubble.finalColor=Rt(i)}if(t.bubble.finalColor)if(o.mix){t.bubble.color=void 0;const i=t.getFillColor();t.bubble.color=i?Et(Vt(i,t.bubble.finalColor,1-e,e)):t.bubble.finalColor}else t.bubble.color=t.bubble.finalColor}},this._hoverBubbleOpacity=(t,e,i)=>{const s=this.container.actualOptions,o=i?.opacity??s.interactivity.modes.bubble?.opacity;if(!o)return;const n=t.options.opacity.value,a=Hs(t.opacity?.value??1,o,O(n),e);void 0!==a&&(t.bubble.opacity=a)},this._hoverBubbleSize=(t,e,i)=>{const s=this.container,o=i?.size?i.size*s.retina.pixelRatio:s.retina.bubbleModeSize;if(void 0===o)return;const n=O(t.options.size.value)*s.retina.pixelRatio,a=Hs(t.size.value,o,n,e);void 0!==a&&(t.bubble.radius=a)},this._process=(t,e,i,s)=>{const o=this.container,n=s.bubbleObj.optValue,a=o.actualOptions.interactivity.modes.bubble;if(!a||void 0===n)return;const r=a.duration,c=o.retina.bubbleModeDistance,l=s.particlesObj.optValue,h=s.bubbleObj.value,d=s.particlesObj.value||0,u=s.type;if(c&&!(c<0)&&n!==l)if(o.bubble||(o.bubble={}),o.bubble.durationEnd)h&&("size"===u&&delete t.bubble.radius,"opacity"===u&&delete t.bubble.opacity);else if(e<=c){if((h??d)!==n){const e=d-i*(d-n)/r;"size"===u&&(t.bubble.radius=e),"opacity"===u&&(t.bubble.opacity=e)}}else"size"===u&&delete t.bubble.radius,"opacity"===u&&delete t.bubble.opacity},this._singleSelectorHover=(t,e,i)=>{const s=this.container,o=document.querySelectorAll(e),n=s.actualOptions.interactivity.modes.bubble;n&&o.length&&o.forEach((e=>{const o=e,a=s.retina.pixelRatio,r={x:(o.offsetLeft+o.offsetWidth/2)*a,y:(o.offsetTop+o.offsetHeight/2)*a},c=o.offsetWidth/2*a,l="circle"===i.type?new yi(r.x,r.y,c):new vi(o.offsetLeft*a,o.offsetTop*a,o.offsetWidth*a,o.offsetHeight*a),h=s.particles.quadTree.query(l,(t=>this.isEnabled(t)));for(const e of h){if(!l.contains(e.getPosition()))continue;e.bubble.inRange=!0;const i=rt(n.divs,o);e.bubble.div&&e.bubble.div===o||(this.clear(e,t,!0),e.bubble.div=o),this._hoverBubbleSize(e,1,i),this._hoverBubbleOpacity(e,1,i),this._hoverBubbleColor(e,1,i)}}))},t.bubble||(t.bubble={}),this.handleClickMode=e=>{e===Vs&&(t.bubble||(t.bubble={}),t.bubble.clicking=!0)}}clear(t,e,i){t.bubble.inRange&&!i||(delete t.bubble.div,delete t.bubble.opacity,delete t.bubble.radius,delete t.bubble.color)}init(){const t=this.container,e=t.actualOptions.interactivity.modes.bubble;e&&(t.retina.bubbleModeDistance=e.distance*t.retina.pixelRatio,void 0!==e.size&&(t.retina.bubbleModeSize=e.size*t.retina.pixelRatio))}async interact(t){const e=this.container.actualOptions.interactivity.events,i=e.onHover,s=e.onClick,o=i.enable,n=i.mode,a=s.enable,r=s.mode,c=e.onDiv;o&&Z(Vs,n)?this._hoverBubble():a&&Z(Vs,r)?this._clickBubble():nt(Vs,c,((e,i)=>this._singleSelectorHover(t,e,i)))}isEnabled(t){const e=this.container,i=e.actualOptions,s=e.interactivity.mouse,o=(t?.interactivity??i.interactivity).events,{onClick:n,onDiv:a,onHover:r}=o,c=ot(Vs,a);return!!(c||r.enable&&s.position||n.enable&&s.clickPosition)&&(Z(Vs,r.mode)||Z(Vs,n.mode)||c)}loadModeOptions(t,...e){t.bubble||(t.bubble=new qs);for(const i of e)t.bubble.load(i?.bubble)}reset(t){t.bubble.inRange=!1}}class Ws{constructor(){this.opacity=.5}load(t){t&&void 0!==t.opacity&&(this.opacity=t.opacity)}}class $s{constructor(){this.distance=80,this.links=new Ws,this.radius=60}load(t){t&&(void 0!==t.distance&&(this.distance=t.distance),this.links.load(t.links),void 0!==t.radius&&(this.radius=t.radius))}}function js(t,e,i,s){const o=t.actualOptions.interactivity.modes.connect;if(o)return function(t,e,i,s){const o=Math.floor(i.getRadius()/e.getRadius()),n=e.getFillColor(),a=i.getFillColor();if(!n||!a)return;const r=e.getPosition(),c=i.getPosition(),l=Vt(n,a,e.getRadius(),i.getRadius()),h=t.createLinearGradient(r.x,r.y,c.x,c.y);return h.addColorStop(0,Ht(n,s)),h.addColorStop(o>1?1:o,qt(l,s)),h.addColorStop(1,Ht(a,s)),h}(e,i,s,o.links.opacity)}function Gs(t,e,i){t.canvas.draw((s=>{const o=js(t,s,e,i);if(!o)return;const n=e.getPosition(),a=i.getPosition();!function(t,e,i,s,o){Nt(t,s,o),t.lineWidth=e,t.strokeStyle=i,t.stroke()}(s,e.retina.linksWidth??0,o,n,a)}))}class Ns extends Si{constructor(t){super(t)}clear(){}init(){const t=this.container,e=t.actualOptions.interactivity.modes.connect;e&&(t.retina.connectModeDistance=e.distance*t.retina.pixelRatio,t.retina.connectModeRadius=e.radius*t.retina.pixelRatio)}async interact(){const t=this.container;if(t.actualOptions.interactivity.events.onHover.enable&&"pointermove"===t.interactivity.status){const e=t.interactivity.mouse.position;if(!t.retina.connectModeDistance||t.retina.connectModeDistance<0||!t.retina.connectModeRadius||t.retina.connectModeRadius<0||!e)return;const i=Math.abs(t.retina.connectModeRadius),s=t.particles.quadTree.queryCircle(e,i,(t=>this.isEnabled(t)));let o=0;for(const e of s){const i=e.getPosition();for(const n of s.slice(o+1)){const s=n.getPosition(),o=Math.abs(t.retina.connectModeDistance),a=Math.abs(i.x-s.x),r=Math.abs(i.y-s.y);a{const n=e.getPosition();!function(t,e,i,s,o,n){Nt(t,i,s),t.strokeStyle=qt(o,n),t.lineWidth=e,t.stroke()}(t,e.retina.linksWidth??0,n,o,i,s)}))}class Qs extends Si{constructor(t){super(t)}clear(){}init(){const t=this.container,e=t.actualOptions.interactivity.modes.grab;e&&(t.retina.grabModeDistance=e.distance*t.retina.pixelRatio)}async interact(){const t=this.container,e=t.actualOptions.interactivity;if(!e.modes.grab||!e.events.onHover.enable||t.interactivity.status!==r)return;const i=t.interactivity.mouse.position;if(!i)return;const s=t.retina.grabModeDistance;if(!s||s<0)return;const o=t.particles.quadTree.queryCircle(i,s,(t=>this.isEnabled(t)));for(const n of o){const o=T(n.getPosition(),i);if(o>s)continue;const a=e.modes.grab.links,r=a.opacity,c=r-o*r/s;if(c<=0)continue;const l=a.color??n.options.links?.color;if(!t.particles.grabLineColor&&l){const i=e.modes.grab.links;t.particles.grabLineColor=Wt(l,i.blink,i.consent)}const h=Ut(n,void 0,t.particles.grabLineColor);h&&Zs(t,n,h,c,i)}}isEnabled(t){const e=this.container,i=e.interactivity.mouse,s=(t?.interactivity??e.actualOptions.interactivity).events;return s.onHover.enable&&!!i.position&&Z("grab",s.onHover.mode)}loadModeOptions(t,...e){t.grab||(t.grab=new Ys);for(const i of e)t.grab.load(i?.grab)}reset(){}}class Js extends Si{constructor(t){super(t),this.handleClickMode=t=>{if("pause"!==t)return;const e=this.container;e.getAnimationStatus()?e.pause():e.play()}}clear(){}init(){}async interact(){}isEnabled(){return!0}reset(){}}class Ks{constructor(){this.default=!0,this.groups=[],this.quantity=4}load(t){if(!t)return;void 0!==t.default&&(this.default=t.default),void 0!==t.groups&&(this.groups=t.groups.map((t=>t))),this.groups.length||(this.default=!0);const e=t.quantity;void 0!==e&&(this.quantity=S(e))}}class to extends Si{constructor(t){super(t),this.handleClickMode=t=>{if("push"!==t)return;const e=this.container,i=e.actualOptions.interactivity.modes.push;if(!i)return;const s=C(i.quantity);if(s<=0)return;const o=K([void 0,...i.groups]),n=void 0!==o?e.actualOptions.particles.groups[o]:void 0;e.particles.push(s,e.interactivity.mouse,n,o)}}clear(){}init(){}async interact(){}isEnabled(){return!0}loadModeOptions(t,...e){t.push||(t.push=new Ks);for(const i of e)t.push.load(i?.push)}reset(){}}class eo{constructor(){this.quantity=2}load(t){if(!t)return;const e=t.quantity;void 0!==e&&(this.quantity=S(e))}}class io extends Si{constructor(t){super(t),this.handleClickMode=t=>{const e=this.container,i=e.actualOptions;if(!i.interactivity.modes.remove||"remove"!==t)return;const s=C(i.interactivity.modes.remove.quantity);e.particles.removeQuantity(s)}}clear(){}init(){}async interact(){}isEnabled(){return!0}loadModeOptions(t,...e){t.remove||(t.remove=new eo);for(const i of e)t.remove.load(i?.remove)}reset(){}}class so{constructor(){this.distance=200,this.duration=.4,this.factor=100,this.speed=1,this.maxSpeed=50,this.easing="ease-out-quad"}load(t){t&&(void 0!==t.distance&&(this.distance=t.distance),void 0!==t.duration&&(this.duration=t.duration),void 0!==t.easing&&(this.easing=t.easing),void 0!==t.factor&&(this.factor=t.factor),void 0!==t.speed&&(this.speed=t.speed),void 0!==t.maxSpeed&&(this.maxSpeed=t.maxSpeed))}}class oo extends so{constructor(){super(),this.selectors=[]}load(t){super.load(t),t&&void 0!==t.selectors&&(this.selectors=t.selectors)}}class no extends so{load(t){super.load(t),t&&(this.divs=dt(t.divs,(t=>{const e=new oo;return e.load(t),e})))}}const ao="repulse";class ro extends Si{constructor(t,e){super(e),this._clickRepulse=()=>{const t=this.container,e=t.actualOptions.interactivity.modes.repulse;if(!e)return;const i=t.repulse||{particles:[]};if(i.finish||(i.count||(i.count=0),i.count++,i.count===t.particles.count&&(i.finish=!0)),i.clicking){const s=t.retina.repulseModeDistance;if(!s||s<0)return;const o=Math.pow(s/6,3),n=t.interactivity.mouse.clickPosition;if(void 0===n)return;const a=new yi(n.x,n.y,o),r=t.particles.quadTree.query(a,(t=>this.isEnabled(t)));for(const t of r){const{dx:s,dy:a,distance:r}=D(n,t.position),c=r**2,l=-o*e.speed/c;if(c<=o){i.particles.push(t);const e=y.create(s,a);e.length=l,t.velocity.setTo(e)}}}else if(!1===i.clicking){for(const t of i.particles)t.velocity.setTo(t.initialVelocity);i.particles=[]}},this._hoverRepulse=()=>{const t=this.container,e=t.interactivity.mouse.position,i=t.retina.repulseModeDistance;!i||i<0||!e||this._processRepulse(e,i,new yi(e.x,e.y,i))},this._processRepulse=(t,e,i,s)=>{const o=this.container,n=o.particles.quadTree.query(i,(t=>this.isEnabled(t))),a=o.actualOptions.interactivity.modes.repulse;if(!a)return;const{easing:r,speed:c,factor:l,maxSpeed:h}=a,d=w(r),u=(s?.speed??c)*l;for(const i of n){const{dx:s,dy:o,distance:n}=D(i.position,t),a=k(d(1-n/e)*u,0,h),r=y.create(0===n?u:s/n*a,0===n?u:o/n*a);i.position.addTo(r)}},this._singleSelectorRepulse=(t,e)=>{const i=this.container,s=i.actualOptions.interactivity.modes.repulse;if(!s)return;const o=document.querySelectorAll(t);o.length&&o.forEach((t=>{const o=t,n=i.retina.pixelRatio,a={x:(o.offsetLeft+o.offsetWidth/2)*n,y:(o.offsetTop+o.offsetHeight/2)*n},r=o.offsetWidth/2*n,c="circle"===e.type?new yi(a.x,a.y,r):new vi(o.offsetLeft*n,o.offsetTop*n,o.offsetWidth*n,o.offsetHeight*n),l=rt(s.divs,o);this._processRepulse(a,r,c,l)}))},this._engine=t,e.repulse||(e.repulse={particles:[]}),this.handleClickMode=t=>{const i=this.container.actualOptions.interactivity.modes.repulse;if(!i||t!==ao)return;e.repulse||(e.repulse={particles:[]});const s=e.repulse;s.clicking=!0,s.count=0;for(const t of e.repulse.particles)this.isEnabled(t)&&t.velocity.setTo(t.initialVelocity);s.particles=[],s.finish=!1,setTimeout((()=>{e.destroyed||(s.clicking=!1)}),1e3*i.duration)}}clear(){}init(){const t=this.container,e=t.actualOptions.interactivity.modes.repulse;e&&(t.retina.repulseModeDistance=e.distance*t.retina.pixelRatio)}async interact(){const t=this.container,e=t.actualOptions,i=t.interactivity.status===r,s=e.interactivity.events,o=s.onHover,n=o.enable,a=o.mode,c=s.onClick,l=c.enable,h=c.mode,d=s.onDiv;i&&n&&Z(ao,a)?this._hoverRepulse():l&&Z(ao,h)?this._clickRepulse():nt(ao,d,((t,e)=>this._singleSelectorRepulse(t,e)))}isEnabled(t){const e=this.container,i=e.actualOptions,s=e.interactivity.mouse,o=(t?.interactivity??i.interactivity).events,n=o.onDiv,a=o.onHover,r=o.onClick,c=ot(ao,n);if(!(c||a.enable&&s.position||r.enable&&s.clickPosition))return!1;const l=a.mode,h=r.mode;return Z(ao,l)||Z(ao,h)||c}loadModeOptions(t,...e){t.repulse||(t.repulse=new no);for(const i of e)t.repulse.load(i?.repulse)}reset(){}}class co{constructor(){this.factor=3,this.radius=200}load(t){t&&(void 0!==t.factor&&(this.factor=t.factor),void 0!==t.radius&&(this.radius=t.radius))}}class lo extends Si{constructor(t){super(t)}clear(t,e,i){t.slow.inRange&&!i||(t.slow.factor=1)}init(){const t=this.container,e=t.actualOptions.interactivity.modes.slow;e&&(t.retina.slowModeRadius=e.radius*t.retina.pixelRatio)}async interact(){}isEnabled(t){const e=this.container,i=e.interactivity.mouse,s=(t?.interactivity??e.actualOptions.interactivity).events;return s.onHover.enable&&!!i.position&&Z("slow",s.onHover.mode)}loadModeOptions(t,...e){t.slow||(t.slow=new co);for(const i of e)t.slow.load(i?.slow)}reset(t){t.slow.inRange=!1;const e=this.container,i=e.actualOptions,s=e.interactivity.mouse.position,o=e.retina.slowModeRadius,n=i.interactivity.modes.slow;if(!n||!o||o<0||!s)return;const a=T(s,t.getPosition()),r=a/o,c=n.factor,{slow:l}=t;a>o||(l.inRange=!0,l.factor=r/c)}}const ho=[0,4,2,1],uo=[8,8,4,2];class po{constructor(t){this.pos=0,this.data=new Uint8ClampedArray(t)}getString(t){const e=this.data.slice(this.pos,this.pos+t);return this.pos+=e.length,e.reduce(((t,e)=>t+String.fromCharCode(e)),"")}nextByte(){return this.data[this.pos++]}nextTwoBytes(){return this.pos+=2,this.data[this.pos-2]+(this.data[this.pos-1]<<8)}readSubBlocks(){let t="",e=0;do{e=this.data[this.pos++];for(let i=e;--i>=0;t+=String.fromCharCode(this.data[this.pos++]));}while(0!==e);return t}readSubBlocksBin(){let t=0,e=0;for(let i=0;0!==(t=this.data[this.pos+i]);i+=t+1)e+=t;const i=new Uint8Array(e);for(let e=0;0!==(t=this.data[this.pos++]);)for(let s=t;--s>=0;i[e++]=this.data[this.pos++]);return i}skipSubBlocks(){for(;0!==this.data[this.pos];this.pos+=this.data[this.pos]+1);this.pos++}}function fo(t,e){const i=[];for(let s=0;s>>3;const h=1<<1+(7&r);c&&(a.localColorTable=fo(t,h));const d=t=>{const{r:s,g:n,b:r}=(c?a.localColorTable:e.globalColorTable)[t];return{r:s,g:n,b:r,a:t===o(null)?i?~~((s+n+r)/3):0:255}},u=(()=>{try{return new ImageData(a.width,a.height,{colorSpace:"srgb"})}catch(t){if(t instanceof DOMException&&"IndexSizeError"===t.name)return null;throw t}})();if(null==u)throw new EvalError("GIF frame size is to large");const p=t.nextByte(),f=t.readSubBlocksBin(),v=1<{const i=t>>>3,s=7&t;return(f[i]+(f[i+1]<<8)+(f[i+2]<<16)&(1<>>s};if(l){for(let i=0,o=p+1,r=0,c=[[0]],l=0;l<4;l++){if(ho[l]=c.length?c.push(c[s].concat(c[s][0])):s!==v&&c.push(c[s].concat(c[i][0]));for(let s=0;s=a.height))break}n?.(t.pos/(t.data.length-1),s(!1)+1,u,{x:a.left,y:a.top},{width:e.width,height:e.height})}a.image=u,a.bitmap=await createImageBitmap(u)}else{for(let t=0,e=p+1,i=0,s=[[0]],o=-4;;){const n=t;if(t=y(i,e),i+=e,t===v){e=p+1,s.length=v+2;for(let t=0;t=s.length?s.push(s[n].concat(s[n][0])):n!==v&&s.push(s[n].concat(s[t][0]));for(let e=0;e=1<>>5,o.disposalMethod=(28&n)>>>2,o.userInputDelayFlag=2==(2&n);const a=1==(1&n);o.delayTime=10*t.nextTwoBytes();const r=t.nextByte();a&&s(r),t.pos++;break}case 255:{t.pos++;const i={identifier:t.getString(8),authenticationCode:t.getString(3),data:t.readSubBlocksBin()};e.applicationExtensions.push(i);break}case 254:e.comments.push([i(!1),t.readSubBlocks()]);break;case 1:if(0===e.globalColorTable.length)throw new EvalError("plain text extension without global color table");t.pos++,e.frames[i(!1)].plainTextData={left:t.nextTwoBytes(),top:t.nextTwoBytes(),width:t.nextTwoBytes(),height:t.nextTwoBytes(),charSize:{width:t.nextTwoBytes(),height:t.nextTwoBytes()},foregroundColor:t.nextByte(),backgroundColor:t.nextByte(),text:t.readSubBlocks()};break;default:t.skipSubBlocks()}}(t,e,s,o);break;default:throw new EvalError("undefined block found")}return!1}const yo=/(#(?:[0-9a-f]{2}){2,4}|(#[0-9a-f]{3})|(rgb|hsl)a?\((-?\d+%?[,\s]+){2,3}\s*[\d.]+%?\))|currentcolor/gi;async function mo(t){return new Promise((e=>{t.loading=!0;const i=new Image;t.element=i,i.addEventListener("load",(()=>{t.loading=!1,e()})),i.addEventListener("error",(()=>{t.element=void 0,t.error=!0,t.loading=!1,W().error(`${f} loading image: ${t.source}`),e()})),i.src=t.source}))}async function go(t){if("gif"===t.type){t.loading=!0;try{t.gifData=await async function(t,e,i){i||(i=!1);const s=await fetch(t);if(!s.ok&&404===s.status)throw new EvalError("file not found");const o=await s.arrayBuffer(),n={width:0,height:0,totalTime:0,colorRes:0,pixelAspectRatio:0,frames:[],sortFlag:!1,globalColorTable:[],backgroundImage:new ImageData(1,1,{colorSpace:"srgb"}),comments:[],applicationExtensions:[]},a=new po(new Uint8ClampedArray(o));if("GIF89a"!==a.getString(6))throw new Error("not a supported GIF file");n.width=a.nextTwoBytes(),n.height=a.nextTwoBytes();const r=a.nextByte(),c=128==(128&r);n.colorRes=(112&r)>>>4,n.sortFlag=8==(8&r);const l=1<<1+(7&r),h=a.nextByte();n.pixelAspectRatio=a.nextByte(),0!==n.pixelAspectRatio&&(n.pixelAspectRatio=(n.pixelAspectRatio+15)/64),c&&(n.globalColorTable=fo(a,l));const d=(()=>{try{return new ImageData(n.width,n.height,{colorSpace:"srgb"})}catch(t){if(t instanceof DOMException&&"IndexSizeError"===t.name)return null;throw t}})();if(null==d)throw new Error("GIF frame size is to large");const{r:u,g:p,b:f}=n.globalColorTable[h];d.data.set(c?[u,p,f,255]:[0,0,0,0]);for(let t=4;t(t&&(y=!0),v),b=t=>(null!=t&&(m=t),m);try{do{y&&(n.frames.push({left:0,top:0,width:0,height:0,disposalMethod:0,image:new ImageData(1,1,{colorSpace:"srgb"}),plainTextData:null,userInputDelayFlag:!1,delayTime:0,sortFlag:!1,localColorTable:[],reserved:0,GCreserved:0}),v++,m=-1,y=!1)}while(!await vo(a,n,i,g,b,e));n.frames.length--;for(const t of n.frames){if(t.userInputDelayFlag&&0===t.delayTime){n.totalTime=1/0;break}n.totalTime+=t.delayTime}return n}catch(t){if(t instanceof EvalError)throw new Error(`error while parsing frame ${v} "${t.message}"`);throw t}}(t.source),t.gifLoopCount=function(t){for(const e of t.applicationExtensions)if(e.identifier+e.authenticationCode==="NETSCAPE2.0")return e.data[1]+(e.data[2]<<8);return NaN}(t.gifData)??0,0===t.gifLoopCount&&(t.gifLoopCount=1/0)}catch{t.error=!0}t.loading=!1}else await mo(t)}async function bo(t){if("svg"!==t.type)return void await mo(t);t.loading=!0;const e=await fetch(t.source);e.ok?t.svgData=await e.text():(W().error(`${f} Image not found`),t.error=!0),t.loading=!1}function wo(t,e,i,s){const o=function(t,e,i){const{svgData:s}=t;if(!s)return"";const o=Ht(e,i);if(s.includes("fill"))return s.replace(yo,(()=>o));const n=s.indexOf(">");return`${s.substring(0,n)} fill="${o}"${s.substring(n)}`}(t,i,s.opacity?.value??1),n={color:i,gif:e.gif,data:{...t,svgData:o},loaded:!1,ratio:e.width/e.height,replaceColor:e.replaceColor,source:e.src};return new Promise((e=>{const i=new Blob([o],{type:"image/svg+xml"}),s=URL||window.URL||window.webkitURL||window,a=s.createObjectURL(i),r=new Image;r.addEventListener("load",(()=>{n.loaded=!0,n.element=r,e(n),s.revokeObjectURL(a)})),r.addEventListener("error",(async()=>{s.revokeObjectURL(a);const i={...t,error:!1,loading:!0};await mo(i),n.loaded=!0,n.element=i.element,e(n)})),r.src=a}))}class xo{constructor(t){this.loadImageShape=async t=>{if(!this._engine.loadImage)throw new Error(`${f} image shape not initialized`);await this._engine.loadImage({gif:t.gif,name:t.name,replaceColor:t.replaceColor??!1,src:t.src})},this._engine=t}addImage(t){this._engine.images||(this._engine.images=[]),this._engine.images.push(t)}draw(t){const{context:e,radius:i,particle:s,opacity:o,delta:n}=t,a=s.image,r=a?.element;if(a){if(e.globalAlpha=o,a.gif&&a.gifData){const t=new OffscreenCanvas(a.gifData.width,a.gifData.height),o=t.getContext("2d");if(!o)throw new Error("could not create offscreen canvas context");o.imageSmoothingQuality="low",o.imageSmoothingEnabled=!1,o.clearRect(0,0,t.width,t.height),void 0===s.gifLoopCount&&(s.gifLoopCount=a.gifLoopCount??0);let r=s.gifFrame??0;const c={x:.5*-a.gifData.width,y:.5*-a.gifData.height},l=a.gifData.frames[r];if(void 0===s.gifTime&&(s.gifTime=0),!l.bitmap)return;switch(e.scale(i/a.gifData.width,i/a.gifData.height),l.disposalMethod){case 4:case 5:case 6:case 7:case 0:o.drawImage(l.bitmap,l.left,l.top),e.drawImage(t,c.x,c.y),o.clearRect(0,0,t.width,t.height);break;case 1:o.drawImage(l.bitmap,l.left,l.top),e.drawImage(t,c.x,c.y);break;case 2:o.drawImage(l.bitmap,l.left,l.top),e.drawImage(t,c.x,c.y),o.clearRect(0,0,t.width,t.height),0===a.gifData.globalColorTable.length?o.putImageData(a.gifData.frames[0].image,c.x+l.left,c.y+l.top):o.putImageData(a.gifData.backgroundImage,c.x,c.y);break;case 3:{const i=o.getImageData(0,0,t.width,t.height);o.drawImage(l.bitmap,l.left,l.top),e.drawImage(t,c.x,c.y),o.clearRect(0,0,t.width,t.height),o.putImageData(i,0,0)}}if(s.gifTime+=n.value,s.gifTime>l.delayTime){if(s.gifTime-=l.delayTime,++r>=a.gifData.frames.length){if(--s.gifLoopCount<=0)return;r=0,o.clearRect(0,0,t.width,t.height)}s.gifFrame=r}e.scale(a.gifData.width/i,a.gifData.height/i)}else if(r){const t=a.ratio,s={x:-i,y:-i},o=2*i;e.drawImage(r,s.x,s.y,o,o/t)}e.globalAlpha=1}}getSidesCount(){return 12}async init(t){const e=t.actualOptions;if(e.preload&&this._engine.loadImage)for(const t of e.preload)await this._engine.loadImage(t)}loadShape(t){if("image"!==t.shape&&"images"!==t.shape)return;this._engine.images||(this._engine.images=[]);const e=t.shapeData;if(!e)return;this._engine.images.find((t=>t.name===e.name||t.source===e.src))||this.loadImageShape(e).then((()=>{this.loadShape(t)}))}particleInit(t,e){if("image"!==e.shape&&"images"!==e.shape)return;this._engine.images||(this._engine.images=[]);const i=this._engine.images,s=e.shapeData;if(!s)return;const o=e.getFillColor(),n=i.find((t=>t.name===s.name||t.source===s.src));if(!n)return;const a=s.replaceColor??n.replaceColor;n.loading?setTimeout((()=>{this.particleInit(t,e)})):(async()=>{let t;t=n.svgData&&o?await wo(n,s,o,e):{color:o,data:n,element:n.element,gif:n.gif,gifData:n.gifData,gifLoopCount:n.gifLoopCount,loaded:!0,ratio:s.width&&s.height?s.width/s.height:n.ratio??1,replaceColor:a,source:s.src},t.ratio||(t.ratio=1);const i={image:t,fill:s.fill??e.shapeFill,close:s.close??e.shapeClose};e.image=i.image,e.shapeFill=i.fill,e.shapeClose=i.close})()}}class _o{constructor(){this.src="",this.gif=!1}load(t){t&&(void 0!==t.gif&&(this.gif=t.gif),void 0!==t.height&&(this.height=t.height),void 0!==t.name&&(this.name=t.name),void 0!==t.replaceColor&&(this.replaceColor=t.replaceColor),void 0!==t.src&&(this.src=t.src),void 0!==t.width&&(this.width=t.width))}}class ko{constructor(t){this.id="imagePreloader",this._engine=t}getPlugin(){return{}}loadOptions(t,e){if(!e||!e.preload)return;t.preload||(t.preload=[]);const i=t.preload;for(const t of e.preload){const e=i.find((e=>e.name===t.name||e.src===t.src));if(e)e.load(t);else{const e=new _o;e.load(t),i.push(e)}}}needsPlugin(){return!0}}async function zo(t,e=!0){!function(t){t.loadImage||(t.loadImage=async e=>{if(!e.name&&!e.src)throw new Error(`${f} no image source provided`);if(t.images||(t.images=[]),!t.images.find((t=>t.name===e.name||t.source===e.src)))try{const i={gif:e.gif??!1,name:e.name??e.src,source:e.src,type:e.src.substring(e.src.length-3),error:!1,loading:!0,replaceColor:e.replaceColor,ratio:e.width&&e.height?e.width/e.height:void 0};t.images.push(i);const s=e.gif?go:e.replaceColor?bo:mo;await s(i)}catch{throw new Error(`${f} ${e.name??e.src} not found`)}})}(t);const i=new ko(t);await t.addPlugin(i,e),await t.addShape(["image","images"],new xo(t),e)}class Mo extends Re{constructor(){super(),this.sync=!1}load(t){t&&(super.load(t),void 0!==t.sync&&(this.sync=t.sync))}}class Co extends Re{constructor(){super(),this.sync=!1}load(t){t&&(super.load(t),void 0!==t.sync&&(this.sync=t.sync))}}class Po{constructor(){this.count=0,this.delay=new Mo,this.duration=new Co}load(t){t&&(void 0!==t.count&&(this.count=t.count),this.delay.load(t.delay),this.duration.load(t.duration))}}class Oo{constructor(t){this.container=t}init(t){const e=this.container,i=t.options.life;i&&(t.life={delay:e.retina.reduceFactor?C(i.delay.value)*(i.delay.sync?1:_())/e.retina.reduceFactor*1e3:0,delayTime:0,duration:e.retina.reduceFactor?C(i.duration.value)*(i.duration.sync?1:_())/e.retina.reduceFactor*1e3:0,time:0,count:i.count},t.life.duration<=0&&(t.life.duration=-1),t.life.count<=0&&(t.life.count=-1),t.life&&(t.spawning=t.life.delay>0))}isEnabled(t){return!t.destroyed}loadOptions(t,...e){t.life||(t.life=new Po);for(const i of e)t.life.load(i?.life)}update(t,e){if(!this.isEnabled(t)||!t.life)return;const i=t.life;let s=!1;if(t.spawning){if(i.delayTime+=e.value,!(i.delayTime>=t.life.delay))return;s=!0,t.spawning=!1,i.delayTime=0,i.time=0}if(-1===i.duration)return;if(t.spawning)return;if(s?i.time=0:i.time+=e.value,i.time0&&t.life.count--,0===t.life.count)return void t.destroy();const o=this.container.canvas.size,n=S(0,o.width),a=S(0,o.width);t.position.x=M(n),t.position.y=M(a),t.spawning=!0,i.delayTime=0,i.time=0,t.reset();const r=t.options.life;r&&(i.delay=1e3*C(r.delay.value),i.duration=1e3*C(r.duration.value))}}class So{draw(t){const{context:e,particle:i,radius:s}=t,o=i.shapeData;e.moveTo(-s/2,0),e.lineTo(s/2,0),e.lineCap=o?.cap??"butt"}getSidesCount(){return 1}}class Do{init(){}isEnabled(t){return!j()&&!t.destroyed&&t.container.actualOptions.interactivity.events.onHover.parallax.enable}move(t){const e=t.container,i=e.actualOptions.interactivity.events.onHover.parallax;if(j()||!i.enable)return;const s=i.force,o=e.interactivity.mouse.position;if(!o)return;const n=e.canvas.size,a=.5*n.width,r=.5*n.height,c=i.smooth,l=t.getRadius()/s,h=(o.x-a)*l,d=(o.y-r)*l,{offset:u}=t;u.x+=(h-u.x)/c,u.y+=(d-u.y)/c}}class To extends Di{constructor(t){super(t)}clear(){}init(){}async interact(t){const e=this.container;void 0===t.attractDistance&&(t.attractDistance=C(t.options.move.attract.distance)*e.retina.pixelRatio);const i=t.attractDistance,s=t.getPosition(),o=e.particles.quadTree.queryCircle(s,i);for(const e of o){if(t===e||!e.options.move.attract.enable||e.destroyed||e.spawning)continue;const i=e.getPosition(),{dx:o,dy:n}=D(s,i),a=t.options.move.attract.rotate,r=o/(1e3*a.x),c=n/(1e3*a.y),l=e.size.value/t.size.value,h=1/l;t.velocity.x-=r*l,t.velocity.y-=c*l,e.velocity.x+=r*h,e.velocity.y+=c*h}}isEnabled(t){return t.options.move.attract.enable}reset(){}}function Ro(t,e,i,s,o,n){const a=k(t.options.collisions.absorb.speed*o.factor/10,0,s);t.size.value+=a/2,i.size.value-=a,s<=n&&(i.size.value=0,i.destroy())}const Eo=t=>{void 0===t.collisionMaxSpeed&&(t.collisionMaxSpeed=C(t.options.collisions.maxSpeed)),t.velocity.length>t.collisionMaxSpeed&&(t.velocity.length=t.collisionMaxSpeed)};function Io(t,e){lt(ct(t),ct(e)),Eo(t),Eo(e)}function Lo(t,e,i,s){switch(t.options.collisions.mode){case"absorb":!function(t,e,i,s){const o=t.getRadius(),n=e.getRadius();void 0===o&&void 0!==n?t.destroy():void 0!==o&&void 0===n?e.destroy():void 0!==o&&void 0!==n&&(o>=n?Ro(t,0,e,n,i,s):Ro(e,0,t,o,i,s))}(t,e,i,s);break;case"bounce":Io(t,e);break;case"destroy":!function(t,e){t.unbreakable||e.unbreakable||Io(t,e),void 0===t.getRadius()&&void 0!==e.getRadius()?t.destroy():void 0!==t.getRadius()&&void 0===e.getRadius()?e.destroy():void 0!==t.getRadius()&&void 0!==e.getRadius()&&(t.getRadius()>=e.getRadius()?e:t).destroy()}(t,e)}}class Ao extends Di{constructor(t){super(t)}clear(){}init(){}async interact(t,e){if(t.destroyed||t.spawning)return;const i=this.container,s=t.getPosition(),o=t.getRadius(),n=i.particles.quadTree.queryCircle(s,2*o);for(const a of n){if(t===a||!a.options.collisions.enable||t.options.collisions.mode!==a.options.collisions.mode||a.destroyed||a.spawning)continue;const n=a.getPosition(),r=a.getRadius();if(Math.abs(Math.round(s.z)-Math.round(n.z))>o+r)continue;T(s,n)>o+r||Lo(t,a,e,i.retina.pixelRatio)}}isEnabled(t){return t.options.collisions.enable}reset(){}}class Fo extends yi{constructor(t,e,i,s){super(t,e,i),this.canvasSize=s,this.canvasSize={...s}}contains(t){const{width:e,height:i}=this.canvasSize,{x:s,y:o}=t;return super.contains(t)||super.contains({x:s-e,y:o})||super.contains({x:s-e,y:o-i})||super.contains({x:s,y:o-i})}intersects(t){if(super.intersects(t))return!0;const e=t,i=t,s={x:t.position.x-this.canvasSize.width,y:t.position.y-this.canvasSize.height};if(void 0!==i.radius){const t=new yi(s.x,s.y,2*i.radius);return super.intersects(t)}if(void 0!==e.size){const t=new vi(s.x,s.y,2*e.size.width,2*e.size.height);return super.intersects(t)}return!1}}class Bo{constructor(){this.blur=5,this.color=new ce,this.color.value="#000",this.enable=!1}load(t){t&&(void 0!==t.blur&&(this.blur=t.blur),this.color=ce.create(this.color,t.color),void 0!==t.enable&&(this.enable=t.enable))}}class qo{constructor(){this.enable=!1,this.frequency=1}load(t){t&&(void 0!==t.color&&(this.color=ce.create(this.color,t.color)),void 0!==t.enable&&(this.enable=t.enable),void 0!==t.frequency&&(this.frequency=t.frequency),void 0!==t.opacity&&(this.opacity=t.opacity))}}class Ho{constructor(){this.blink=!1,this.color=new ce,this.color.value="#fff",this.consent=!1,this.distance=100,this.enable=!1,this.frequency=1,this.opacity=1,this.shadow=new Bo,this.triangles=new qo,this.width=1,this.warp=!1}load(t){t&&(void 0!==t.id&&(this.id=t.id),void 0!==t.blink&&(this.blink=t.blink),this.color=ce.create(this.color,t.color),void 0!==t.consent&&(this.consent=t.consent),void 0!==t.distance&&(this.distance=t.distance),void 0!==t.enable&&(this.enable=t.enable),void 0!==t.frequency&&(this.frequency=t.frequency),void 0!==t.opacity&&(this.opacity=t.opacity),this.shadow.load(t.shadow),this.triangles.load(t.triangles),void 0!==t.width&&(this.width=t.width),void 0!==t.warp&&(this.warp=t.warp))}}function Vo(t,e,i,s,o){const{dx:n,dy:a,distance:r}=D(t,e);if(!o||r<=i)return r;const c={x:Math.abs(n),y:Math.abs(a)},l=Math.min(c.x,s.width-c.x),h=Math.min(c.y,s.height-c.y);return Math.sqrt(l**2+h**2)}class Uo extends Di{constructor(t){super(t),this._setColor=t=>{if(!t.options.links)return;const e=this.linkContainer,i=t.options.links;let s=void 0===i.id?e.particles.linksColor:e.particles.linksColors.get(i.id);if(s)return;s=Wt(i.color,i.blink,i.consent),void 0===i.id?e.particles.linksColor=s:e.particles.linksColors.set(i.id,s)},this.linkContainer=t}clear(){}init(){this.linkContainer.particles.linksColor=void 0,this.linkContainer.particles.linksColors=new Map}async interact(t){if(!t.options.links)return;t.links=[];const e=t.getPosition(),i=this.container,s=i.canvas.size;if(e.x<0||e.y<0||e.x>s.width||e.y>s.height)return;const o=t.options.links,n=o.opacity,a=t.retina.linksDistance??0,r=o.warp,c=r?new Fo(e.x,e.y,a,s):new yi(e.x,e.y,a),l=i.particles.quadTree.query(c);for(const i of l){const c=i.options.links;if(t===i||!c?.enable||o.id!==c.id||i.spawning||i.destroyed||!i.links||t.links.some((t=>t.destination===i))||i.links.some((e=>e.destination===t)))continue;const l=i.getPosition();if(l.x<0||l.y<0||l.x>s.width||l.y>s.height)continue;const h=Vo(e,l,a,s,r&&c.warp);if(h>a)continue;const d=(1-h/a)*n;this._setColor(t),t.links.push({destination:i,opacity:d})}}isEnabled(t){return!!t.options.links?.enable}loadParticlesOptions(t,...e){t.links||(t.links=new Ho);for(const i of e)t.links.load(i?.links)}reset(){}}function Wo(t,e){const i=((s=t.map((t=>t.id))).sort(((t,e)=>t-e)),s.join("_"));var s;let o=e.get(i);return void 0===o&&(o=_(),e.set(i,o)),o}class $o{constructor(t){this.container=t,this._drawLinkLine=(t,e)=>{const i=t.options.links;if(!i?.enable)return;const s=this.container,o=s.actualOptions,n=e.destination,a=t.getPosition(),r=n.getPosition();let c=e.opacity;s.canvas.draw((e=>{let l;const h=t.options.twinkle?.lines;if(h?.enable){const t=h.frequency,e=St(h.color);_(){const s=t.options.links;if(!s?.enable)return;const o=s.triangles;if(!o.enable)return;const n=this.container,a=n.actualOptions,r=e.destination,c=i.destination,l=o.opacity??(e.opacity+i.opacity)/2;l<=0||n.canvas.draw((e=>{const i=t.getPosition(),h=r.getPosition(),d=c.getPosition(),u=t.retina.linksDistance??0;if(T(i,h)>u||T(d,h)>u||T(d,i)>u)return;let p=St(o.color);if(!p){const e=void 0!==s.id?n.particles.linksColors.get(s.id):n.particles.linksColor;p=Ut(t,r,e)}p&&function(t){const{context:e,pos1:i,pos2:s,pos3:o,backgroundMask:n,colorTriangle:a,opacityTriangle:r}=t;!function(t,e,i,s){t.beginPath(),t.moveTo(e.x,e.y),t.lineTo(i.x,i.y),t.lineTo(s.x,s.y),t.closePath()}(e,i,s,o),n.enable&&(e.globalCompositeOperation=n.composite),e.fillStyle=qt(a,r),e.fill()}({context:e,pos1:i,pos2:h,pos3:d,backgroundMask:a.backgroundMask,colorTriangle:p,opacityTriangle:l})}))},this._drawTriangles=(t,e,i,s)=>{const o=i.destination;if(!t.links?.triangles.enable||!o.options.links?.triangles.enable)return;const n=o.links?.filter((t=>{const e=this._getLinkFrequency(o,t.destination);return o.options.links&&e<=o.options.links.frequency&&s.findIndex((e=>e.destination===t.destination))>=0}));if(n?.length)for(const s of n){const n=s.destination;this._getTriangleFrequency(e,o,n)>t.links.triangles.frequency||this._drawLinkTriangle(e,i,s)}},this._getLinkFrequency=(t,e)=>Wo([t,e],this._freqs.links),this._getTriangleFrequency=(t,e,i)=>Wo([t,e,i],this._freqs.triangles),this._freqs={links:new Map,triangles:new Map}}drawParticle(t,e){const{links:i,options:s}=e;if(!i||i.length<=0)return;const o=i.filter((t=>s.links&&this._getLinkFrequency(e,t.destination)<=s.links.frequency));for(const t of o)this._drawTriangles(s,e,t,o),t.opacity>0&&(e.retina.linksWidth??0)>0&&this._drawLinkLine(e,t)}async init(){this._freqs.links=new Map,this._freqs.triangles=new Map}particleCreated(t){if(t.links=[],!t.options.links)return;const e=this.container.retina.pixelRatio,{retina:i}=t,{distance:s,width:o}=t.options.links;i.linksDistance=s*e,i.linksWidth=o*e}particleDestroyed(t){t.links=[]}}class jo{constructor(){this.id="links"}getPlugin(t){return new $o(t)}loadOptions(){}needsPlugin(){return!0}}async function Go(t,e=!0){await async function(t,e=!0){await t.addInteractor("particlesLinks",(t=>new Uo(t)),e)}(t,e),await async function(t,e=!0){const i=new jo;await t.addPlugin(i,e)}(t,e)}class No{draw(t){const{context:e,particle:i,radius:s}=t,o=this.getCenter(i,s),n=this.getSidesData(i,s),a=n.count.numerator*n.count.denominator,r=n.count.numerator/n.count.denominator,c=180*(r-2)/r,l=Math.PI-Math.PI*c/180;if(e){e.beginPath(),e.translate(o.x,o.y),e.moveTo(0,0);for(let t=0;t0?"counter-clockwise":"clockwise"}switch(i){case"counter-clockwise":case"counterClockwise":t.rotate.status="decreasing";break;case"clockwise":t.rotate.status="increasing"}const s=e.animation;s.enable&&(t.rotate.decay=1-C(s.decay),t.rotate.velocity=C(s.speed)/360*this.container.retina.reduceFactor,s.sync||(t.rotate.velocity*=_())),t.rotation=t.rotate.value}isEnabled(t){const e=t.options.rotate;return!!e&&(!t.destroyed&&!t.spawning&&e.animation.enable&&!e.path)}loadOptions(t,...e){t.rotate||(t.rotate=new Jo);for(const i of e)t.rotate.load(i?.rotate)}update(t,e){this.isEnabled(t)&&(!function(t,e){const i=t.rotate,s=t.options.rotate;if(!i||!s)return;const o=s.animation,n=(i.velocity??0)*e.factor,a=2*Math.PI,r=i.decay??1;o.enable&&("increasing"===i.status?(i.value+=n,i.value>a&&(i.value-=a)):(i.value-=n,i.value<0&&(i.value+=a)),i.velocity&&1!==r&&(i.velocity*=r))}(t,e),t.rotation=t.rotate?.value??0)}}const tn=Math.sqrt(2);class en{draw(t){const{context:e,radius:i}=t,s=i/tn,o=2*s;e.rect(-s,-s,o,o)}getSidesCount(){return 4}}class sn{draw(t){const{context:e,particle:i,radius:s}=t,o=i.sides,n=i.starInset??2;e.moveTo(0,0-s);for(let t=0;t0&&(e.loops??0)>(e.maxLoops??0))return;if(e.time||(e.time=0),(e.delayTime??0)>0&&e.time<(e.delayTime??0)&&(e.time+=t.value),(e.delayTime??0)>0&&e.time<(e.delayTime??0))return;const n=M(i.offset),a=(e.velocity??0)*t.factor+3.6*n,r=e.decay??1;o&&"increasing"!==e.status?(e.value-=a,e.value<0&&(e.loops||(e.loops=0),e.loops++,e.status="increasing",e.value+=e.value)):(e.value+=a,e.value>s&&(e.loops||(e.loops=0),e.loops++,o&&(e.status="decreasing",e.value-=e.value%s))),e.velocity&&1!==r&&(e.velocity*=r),e.value>s&&(e.value%=s)}class nn{constructor(t){this.container=t}init(t){const e=this.container,i=t.options,s=ut(i.stroke,t.id,i.reduceDuplicates);t.strokeWidth=C(s.width)*e.retina.pixelRatio,t.strokeOpacity=C(s.opacity??1),t.strokeAnimation=s.color?.animation;const o=Rt(s.color)??t.getFillColor();o&&(t.strokeColor=jt(o,t.strokeAnimation,e.retina.reduceFactor))}isEnabled(t){const e=t.strokeAnimation,{strokeColor:i}=t;return!t.destroyed&&!t.spawning&&!!e&&(void 0!==i?.h.value&&i.h.enable||void 0!==i?.s.value&&i.s.enable||void 0!==i?.l.value&&i.l.enable)}update(t,e){this.isEnabled(t)&&function(t,e){if(!t.strokeColor||!t.strokeAnimation)return;const{h:i,s,l:o}=t.strokeColor,{h:n,s:a,l:r}=t.strokeAnimation;i&&on(e,i,n,360,!1),s&&on(e,s,a,100,!0),o&&on(e,o,r,100,!0)}(t,e)}}async function an(t,e=!0){await async function(t,e=!0){await t.addMover("parallax",(()=>new Do),e)}(t,!1),await async function(t,e=!0){await t.addInteractor("externalAttract",(e=>new Es(t,e)),e)}(t,!1),await async function(t,e=!0){await t.addInteractor("externalBounce",(t=>new As(t)),e)}(t,!1),await async function(t,e=!0){await t.addInteractor("externalBubble",(t=>new Us(t)),e)}(t,!1),await async function(t,e=!0){await t.addInteractor("externalConnect",(t=>new Ns(t)),e)}(t,!1),await async function(t,e=!0){await t.addInteractor("externalGrab",(t=>new Qs(t)),e)}(t,!1),await async function(t,e=!0){await t.addInteractor("externalPause",(t=>new Js(t)),e)}(t,!1),await async function(t,e=!0){await t.addInteractor("externalPush",(t=>new to(t)),e)}(t,!1),await async function(t,e=!0){await t.addInteractor("externalRemove",(t=>new io(t)),e)}(t,!1),await async function(t,e=!0){await t.addInteractor("externalRepulse",(e=>new ro(t,e)),e)}(t,!1),await async function(t,e=!0){await t.addInteractor("externalSlow",(t=>new lo(t)),e)}(t,!1),await async function(t,e=!0){await t.addInteractor("particlesAttract",(t=>new To(t)),e)}(t,!1),await async function(t,e=!0){await t.addInteractor("particlesCollisions",(t=>new Ao(t)),e)}(t,!1),await Go(t,!1),await async function(){b("ease-in-quad",(t=>t**2)),b("ease-out-quad",(t=>1-(1-t)**2)),b("ease-in-out-quad",(t=>t<.5?2*t**2:1-(-2*t+2)**2/2))}(),await async function(t,e=!0){await t.addShape(Os,new Ds,e)}(t,!1),await zo(t,!1),await async function(t,e=!0){await t.addShape("line",new So,e)}(t,!1),await Zo(t,!1),await async function(t,e=!0){await t.addShape(["edge","square"],new en,e)}(t,!1),await async function(t,e=!0){await t.addShape("star",new sn,e)}(t,!1),await async function(t,e=!0){await t.addParticleUpdater("life",(t=>new Oo(t)),e)}(t,!1),await async function(t,e=!0){await t.addParticleUpdater("rotate",(t=>new Ko(t)),e)}(t,!1),await async function(t,e=!0){await t.addParticleUpdater("strokeColor",(t=>new nn(t)),e)}(t,!1),await Ps(t,e)}const rn=["text","character","char","multiline-text"];class cn{constructor(){this._drawLine=(t,e,i,s,o,n)=>{const a={x:-(e.length*i/2),y:i/2},r=2*i;n?t.fillText(e,a.x,a.y+r*o):t.strokeText(e,a.x,a.y+r*o)}}draw(t){const{context:e,particle:i,radius:s,opacity:o}=t,n=i.shapeData;if(!n)return;const a=n.value;if(void 0===a)return;void 0===i.text&&(i.text=ut(a,i.randomIndexData));const r=i.text,c=n.style??"",l=n.weight??"400",h=2*Math.round(s),d=n.font??"Verdana",u=i.shapeFill,p=r?.split("\n");if(p){e.font=`${c} ${l} ${h}px "${d}"`,e.globalAlpha=o;for(let t=0;tZ(t,e.particles.shape.type)))){const t=rn.map((t=>e.particles.shape.options[t])).find((t=>!!t)),i=[];dt(t,(t=>{i.push(Q(t.font,t.weight))})),await Promise.all(i)}}particleInit(t,e){if(!e.shape||!rn.includes(e.shape))return;const i=e.shapeData;if(void 0===i)return;const s=i.value;void 0!==s&&(e.text=ut(s,e.randomIndexData))}}class ln{constructor(){this.enable=!1,this.speed=0,this.decay=0,this.sync=!1}load(t){t&&(void 0!==t.enable&&(this.enable=t.enable),void 0!==t.speed&&(this.speed=S(t.speed)),void 0!==t.decay&&(this.decay=S(t.decay)),void 0!==t.sync&&(this.sync=t.sync))}}class hn extends Re{constructor(){super(),this.animation=new ln,this.direction="clockwise",this.enable=!1,this.value=0}load(t){super.load(t),t&&(this.animation.load(t.animation),void 0!==t.direction&&(this.direction=t.direction),void 0!==t.enable&&(this.enable=t.enable))}}class dn{constructor(t){this.container=t}getTransformValues(t){const e=t.tilt?.enable&&t.tilt;return{b:e?Math.cos(e.value)*e.cosDirection:void 0,c:e?Math.sin(e.value)*e.sinDirection:void 0}}init(t){const e=t.options.tilt;if(!e)return;t.tilt={enable:e.enable,value:C(e.value)*Math.PI/180,sinDirection:_()>=.5?1:-1,cosDirection:_()>=.5?1:-1};let i=e.direction;if("random"===i){i=Math.floor(2*_())>0?"counter-clockwise":"clockwise"}switch(i){case"counter-clockwise":case"counterClockwise":t.tilt.status="decreasing";break;case"clockwise":t.tilt.status="increasing"}const s=t.options.tilt?.animation;s?.enable&&(t.tilt.decay=1-C(s.decay),t.tilt.velocity=C(s.speed)/360*this.container.retina.reduceFactor,s.sync||(t.tilt.velocity*=_()))}isEnabled(t){const e=t.options.tilt?.animation;return!t.destroyed&&!t.spawning&&!!e?.enable}loadOptions(t,...e){t.tilt||(t.tilt=new hn);for(const i of e)t.tilt.load(i?.tilt)}update(t,e){this.isEnabled(t)&&function(t,e){if(!t.tilt||!t.options.tilt)return;const i=t.options.tilt.animation,s=(t.tilt.velocity??0)*e.factor,o=2*Math.PI,n=t.tilt.decay??1;i.enable&&("increasing"===t.tilt.status?(t.tilt.value+=s,t.tilt.value>o&&(t.tilt.value-=o)):(t.tilt.value-=s,t.tilt.value<0&&(t.tilt.value+=o)),t.tilt.velocity&&1!==n&&(t.tilt.velocity*=n))}(t,e)}}class un{constructor(){this.enable=!1,this.frequency=.05,this.opacity=1}load(t){t&&(void 0!==t.color&&(this.color=ce.create(this.color,t.color)),void 0!==t.enable&&(this.enable=t.enable),void 0!==t.frequency&&(this.frequency=t.frequency),void 0!==t.opacity&&(this.opacity=S(t.opacity)))}}class pn{constructor(){this.lines=new un,this.particles=new un}load(t){t&&(this.lines.load(t.lines),this.particles.load(t.particles))}}class fn{getColorStyles(t,e,i,s){const o=t.options.twinkle;if(!o)return{};const n=o.particles,a=n.enable&&_()a&&(s.angle-=a),r.x+=n*Math.cos(s.angle),r.y+=n*Math.abs(Math.sin(s.angle))}(t,e)}}async function gn(t,e=!0){await async function(t,e=!0){await t.addParticleUpdater("destroy",(e=>new $i(t,e)),e)}(t,!1),await async function(t,e=!0){await t.addParticleUpdater("roll",(()=>new fs),e)}(t,!1),await async function(t,e=!0){await t.addParticleUpdater("tilt",(t=>new dn(t)),e)}(t,!1),await async function(t,e=!0){await t.addParticleUpdater("twinkle",(()=>new fn),e)}(t,!1),await async function(t,e=!0){await t.addParticleUpdater("wobble",(t=>new mn(t)),e)}(t,!1),await async function(t,e=!0){await t.addShape(rn,new cn,e)}(t,!1),await async function(t,e=!0){await t.addInteractor("externalTrail",(t=>new ds(t)),e)}(t,!1),await async function(t,e=!0){await t.addPlugin(new Fi,e)}(t,!1),await async function(t,e=!0){t.emitterShapeManager||(t.emitterShapeManager=new es(t)),t.addEmitterShapeGenerator||(t.addEmitterShapeGenerator=(e,i)=>{t.emitterShapeManager?.addShapeGenerator(e,i)});const i=new ss(t);await t.addPlugin(i,e)}(t,!1),await async function(t,e=!0){const i=t;i.addEmitterShapeGenerator&&i.addEmitterShapeGenerator("circle",new ns),await i.refresh(e)}(t,!1),await async function(t,e=!0){const i=t;i.addEmitterShapeGenerator&&i.addEmitterShapeGenerator("square",new cs),await i.refresh(e)}(t,!1),await an(t,e)}return gn(Ti),e})())); \ No newline at end of file From bd45f21e45b1d3b58498473380cdb94908741311 Mon Sep 17 00:00:00 2001 From: Chuanbo Hua Date: Wed, 24 Jul 2024 04:12:39 +0900 Subject: [PATCH 081/102] [Docs] Update doc contents --- docs/content/api/algos/a2c.md | 10 +- docs/content/api/algos/ppo.md | 12 +- docs/content/api/algos/reinforce.md | 19 +-- docs/content/api/data.md | 24 +--- docs/content/api/decoding.md | 6 +- docs/content/api/envs/base.md | 16 +-- docs/content/api/envs/eda.md | 24 +--- docs/content/api/envs/routing.md | 112 +++--------------- docs/content/api/envs/scheduling.md | 24 +--- .../content/api/models/common/constructive.md | 43 ++----- .../content/api/models/common/transductive.md | 12 +- docs/content/api/models/env_embeddings.md | 20 +--- docs/content/api/models/nn.md | 42 ++----- docs/content/api/tasks.md | 15 +-- 14 files changed, 59 insertions(+), 320 deletions(-) diff --git a/docs/content/api/algos/a2c.md b/docs/content/api/algos/a2c.md index 731f48bc..6429879c 100644 --- a/docs/content/api/algos/a2c.md +++ b/docs/content/api/algos/a2c.md @@ -1,9 +1 @@ -# A2C - -## A2C (Advantage Actor Critic) - -```{eval-rst} -.. automodule:: rl4co.models.rl.a2c.a2c - :members: - :undoc-members: -``` +:::models.rl.a2c.a2c diff --git a/docs/content/api/algos/ppo.md b/docs/content/api/algos/ppo.md index d99fd1d3..2e7c4767 100644 --- a/docs/content/api/algos/ppo.md +++ b/docs/content/api/algos/ppo.md @@ -1,11 +1 @@ -# PPO - - -## PPO (Proximal Policy Optimization) - - -```{eval-rst} -.. automodule:: rl4co.models.rl.ppo.ppo - :members: - :undoc-members: -``` \ No newline at end of file +:::models.rl.ppo.ppo \ No newline at end of file diff --git a/docs/content/api/algos/reinforce.md b/docs/content/api/algos/reinforce.md index ea8070b1..954a22f0 100644 --- a/docs/content/api/algos/reinforce.md +++ b/docs/content/api/algos/reinforce.md @@ -1,17 +1,2 @@ -# Reinforce - -## REINFORCE - -```{eval-rst} -.. automodule:: rl4co.models.rl.reinforce.reinforce - :members: - :undoc-members: -``` - -## Baselines - -```{eval-rst} -.. automodule:: rl4co.models.rl.reinforce.baselines - :members: - :undoc-members: -``` \ No newline at end of file +:::models.rl.reinforce.reinforce +:::models.rl.reinforce.baselines diff --git a/docs/content/api/data.md b/docs/content/api/data.md index 87690422..508e6142 100644 --- a/docs/content/api/data.md +++ b/docs/content/api/data.md @@ -2,32 +2,16 @@ ## Datasets -```{eval-rst} -.. automodule:: rl4co.data.dataset - :members: - :undoc-members: -``` +:::data.dataset ## Data Generation -```{eval-rst} -.. automodule:: rl4co.data.generate_data - :members: - :undoc-members: -``` +:::data.generate_data ## Transforms -```{eval-rst} -.. automodule:: rl4co.data.transforms - :members: - :undoc-members: -``` +:::data.transforms ## Utils -```{eval-rst} -.. automodule:: rl4co.data.utils - :members: - :undoc-members: -``` \ No newline at end of file +:::data.utils \ No newline at end of file diff --git a/docs/content/api/decoding.md b/docs/content/api/decoding.md index 1ba9470b..34d751ca 100644 --- a/docs/content/api/decoding.md +++ b/docs/content/api/decoding.md @@ -1,7 +1,3 @@ # Decoding Strategies -```{eval-rst} -.. automodule:: rl4co.utils.decoding - :members: - :undoc-members: -``` +:::utils.decoding diff --git a/docs/content/api/envs/base.md b/docs/content/api/envs/base.md index 5c5fa415..fe44eb80 100644 --- a/docs/content/api/envs/base.md +++ b/docs/content/api/envs/base.md @@ -1,24 +1,12 @@ # Base Environment -## `RL4COEnvBase` - This is the base wrapper around TorchRL's `EnvBase`, with additional functionality. -::: rl4co.envs.common.base.RL4COEnvBase - +::: envs.common.base.RL4COEnvBase -```{eval-rst} -.. automodule:: rl4co.envs.common.base - :members: - :undoc-members: -``` ## Utilities These contain utilities such as the base `Generator` class and `get_sampler`. -```{eval-rst} -.. automodule:: rl4co.envs.common.utils - :members: - :undoc-members: -``` \ No newline at end of file +:::envs.common.utils \ No newline at end of file diff --git a/docs/content/api/envs/eda.md b/docs/content/api/envs/eda.md index d89568b1..7f48989f 100644 --- a/docs/content/api/envs/eda.md +++ b/docs/content/api/envs/eda.md @@ -3,28 +3,12 @@ Environment for Electronic Design Automation (EDA) problems ## Decap Placement Problem (DPP) -```{eval-rst} -.. automodule:: rl4co.envs.eda.dpp.env - :members: - :undoc-members: -``` +:::envs.eda.dpp.env -```{eval-rst} -.. automodule:: rl4co.envs.eda.dpp.generator - :members: - :undoc-members: -``` +:::envs.eda.dpp.generator ## Multi-port Decap Placement Problem (mDPP) -```{eval-rst} -.. automodule:: rl4co.envs.eda.mdpp.env - :members: - :undoc-members: -``` +:::envs.eda.mdpp.env -```{eval-rst} -.. automodule:: rl4co.envs.eda.mdpp.generator - :members: - :undoc-members: -``` +:::envs.eda.mdpp.generator diff --git a/docs/content/api/envs/routing.md b/docs/content/api/envs/routing.md index 2ee370cb..294a34f3 100644 --- a/docs/content/api/envs/routing.md +++ b/docs/content/api/envs/routing.md @@ -2,138 +2,62 @@ See also the [Multi-Task VRP](#Multi-Task-Vehicle-Routing-Problem-(MTVRP)) at the bottom of this page, that includes 16 variants! - - ## Asymmetric Traveling Salesman Problem (ATSP) -```{eval-rst} -.. automodule:: rl4co.envs.routing.atsp.env - :members: - :undoc-members: -``` +:::envs.routing.atsp.env -```{eval-rst} -.. automodule:: rl4co.envs.routing.atsp.generator - :members: - :undoc-members: -``` +:::envs.routing.atsp.generator ## Capacitated Vehicle Routing Problem (CVRP) -```{eval-rst} -.. automodule:: rl4co.envs.routing.cvrp.env - :members: - :undoc-members: -``` +:::envs.routing.cvrp.env -```{eval-rst} -.. automodule:: rl4co.envs.routing.cvrp.generator - :members: - :undoc-members: -``` +:::envs.routing.cvrp.generator ## Multiple Traveling Salesman Problem (mTSP) -```{eval-rst} -.. automodule:: rl4co.envs.routing.mtsp.env - :members: - :undoc-members: -``` +:::envs.routing.mtsp.env -```{eval-rst} -.. automodule:: rl4co.envs.routing.mtsp.generator - :members: - :undoc-members: -``` +:::envs.routing.mtsp.generator ## Orienteering Problem (OP) -```{eval-rst} -.. automodule:: rl4co.envs.routing.op.env - :members: - :undoc-members: -``` +:::envs.routing.op.env -```{eval-rst} -.. automodule:: rl4co.envs.routing.op.generator - :members: - :undoc-members: -``` +:::envs.routing.op.generator ## Pickup and Delivery Problem (PDP) -```{eval-rst} -.. automodule:: rl4co.envs.routing.pdp.env - :members: - :undoc-members: -``` +:::envs.routing.pdp.env -```{eval-rst} -.. automodule:: rl4co.envs.routing.pdp.generator - :members: - :undoc-members: -``` +:::envs.routing.pdp.generator ## Prize Collecting Traveling Salesman Problem (PCTSP) -```{eval-rst} -.. automodule:: rl4co.envs.routing.pctsp.env - :members: - :undoc-members: -``` +:::envs.routing.pctsp.env -```{eval-rst} -.. automodule:: rl4co.envs.routing.pctsp.generator - :members: - :undoc-members: -``` +:::envs.routing.pctsp.generator ## Split Delivery Vehicle Routing Problem (SDVRP) -```{eval-rst} -.. automodule:: rl4co.envs.routing.sdvrp.env - :members: - :undoc-members: -``` -``` +:::envs.routing.sdvrp.env ## Stochastic Prize Collecting Traveling Salesman Problem (SPCTSP) -```{eval-rst} -.. automodule:: rl4co.envs.routing.spctsp.env - :members: - :undoc-members: -``` -``` +:::envs.routing.spctsp.env ## Traveling Salesman Problem (TSP) -```{eval-rst} -.. automodule:: rl4co.envs.routing.tsp.env - :members: - :undoc-members: -``` +:::envs.routing.tsp.env -```{eval-rst} -.. automodule:: rl4co.envs.routing.tsp.generator - :members: - :undoc-members: -``` +:::envs.routing.tsp.generator --- - ## Multi-Task Vehicle Routing Problem (MTVRP) +:::envs.routing.mtvrp.env -```{eval-rst} -.. automodule:: rl4co.envs.routing.mtvrp.env - :members: - :undoc-members: - -.. automodule:: rl4co.envs.routing.mtvrp.generator - :members: - :undoc-members: -``` \ No newline at end of file +:::envs.routing.mtvrp.generator \ No newline at end of file diff --git a/docs/content/api/envs/scheduling.md b/docs/content/api/envs/scheduling.md index 46edb20d..b7747fb4 100644 --- a/docs/content/api/envs/scheduling.md +++ b/docs/content/api/envs/scheduling.md @@ -2,28 +2,12 @@ ## Flexible Flow Shop Problem (FFSP) -```{eval-rst} -.. automodule:: rl4co.envs.scheduling.ffsp.env - :members: - :undoc-members: -``` +:::envs.scheduling.ffsp.env -```{eval-rst} -.. automodule:: rl4co.envs.scheduling.ffsp.generator - :members: - :undoc-members: -``` +:::envs.scheduling.ffsp.generator ## Single Machine Total Weighted Tardiness Problem (SMTWTP) -```{eval-rst} -.. automodule:: rl4co.envs.scheduling.smtwtp.env - :members: - :undoc-members: -``` +:::envs.scheduling.smtwtp.env -```{eval-rst} -.. automodule:: rl4co.envs.scheduling.smtwtp.generator - :members: - :undoc-members: -``` \ No newline at end of file +:::envs.scheduling.smtwtp.generator \ No newline at end of file diff --git a/docs/content/api/models/common/constructive.md b/docs/content/api/models/common/constructive.md index 4b3d0e82..2e6ccf39 100644 --- a/docs/content/api/models/common/constructive.md +++ b/docs/content/api/models/common/constructive.md @@ -21,51 +21,22 @@ where _embeddings_ transfer information from feature space to embedding space. ### Constructive Policy Base Classes -```{eval-rst} -.. automodule:: rl4co.models.common.constructive.base - :members: - :undoc-members: -``` +:::models.common.constructive.base ### Autoregressive Policies Base Classes -```{eval-rst} -.. automodule:: rl4co.models.common.constructive.autoregressive.encoder - :members: - :undoc-members: -``` +:::models.common.constructive.autoregressive.encoder -```{eval-rst} -.. automodule:: rl4co.models.common.constructive.autoregressive.decoder - :members: - :undoc-members: -``` +:::models.common.constructive.autoregressive.decoder -```{eval-rst} -.. automodule:: rl4co.models.common.constructive.autoregressive.policy - :members: - :undoc-members: -``` +:::models.common.constructive.autoregressive.policy ### Nonautoregressive Policies Base Classes +:::models.common.constructive.nonautoregressive.encoder -```{eval-rst} -.. automodule:: rl4co.models.common.constructive.nonautoregressive.encoder - :members: - :undoc-members: -``` +:::models.common.constructive.nonautoregressive.decoder -```{eval-rst} -.. automodule:: rl4co.models.common.constructive.nonautoregressive.decoder - :members: - :undoc-members: -``` - -```{eval-rst} -.. automodule:: rl4co.models.common.constructive.nonautoregressive.policy - :members: - :undoc-members: -``` +:::models.common.constructive.nonautoregressive.policy diff --git a/docs/content/api/models/common/transductive.md b/docs/content/api/models/common/transductive.md index 6c14c036..b9be41f3 100644 --- a/docs/content/api/models/common/transductive.md +++ b/docs/content/api/models/common/transductive.md @@ -4,16 +4,10 @@ Transductive models are learning algorithms that optimize on a specific instance. They improve solutions by updating policy parameters $\theta$_, which means that we are running optimization (backprop) **at test time**. Transductive learning can be performed with different policies: for example EAS updates (a part of) AR policies parameters to obtain better solutions, but I guess there are ways (or papers out there I don't know of) that optimize at test time. -```{eval-rst} -.. tip:: - You may refer to the definition of `inductive vs transductive RL `_. In inductive RL, we train to generalize to new instances. In transductive RL we train (or finetune) to solve only specific ones. -``` +!!! tip + You may refer to the definition of `inductive vs transductive RL `_. In inductive RL, we train to generalize to new instances. In transductive RL we train (or finetune) to solve only specific ones. ## Base Transductive Model -```{eval-rst} -.. automodule:: rl4co.models.common.transductive.base - :members: - :undoc-members: -``` \ No newline at end of file +:::models.common.transductive.base \ No newline at end of file diff --git a/docs/content/api/models/env_embeddings.md b/docs/content/api/models/env_embeddings.md index 9d70ae6b..a93ff81b 100644 --- a/docs/content/api/models/env_embeddings.md +++ b/docs/content/api/models/env_embeddings.md @@ -9,18 +9,12 @@ In autoregressive policies, environment embeddings transfer data from feature sp policy - - ## Context Embeddings The context embedding is used to modify the query embedding of the problem node of the current partial solution. Usually consists of a projection of gathered node embeddings and features to the embedding space. -```{eval-rst} -.. automodule:: rl4co.models.nn.env_embeddings.context - :members: - :undoc-members: -``` +:::models.nn.env_embeddings.context --- @@ -28,11 +22,7 @@ The context embedding is used to modify the query embedding of the problem node The dynamic embedding is used to modify query, key and value vectors of the attention mechanism based on the current state of the environment (which is changing during the rollout). Generally consists of a linear layer that projects the node features to the embedding space. -```{eval-rst} -.. automodule:: rl4co.models.nn.env_embeddings.dynamic - :members: - :undoc-members: -``` +:::models.nn.env_embeddings.dynamic --- @@ -40,8 +30,4 @@ The dynamic embedding is used to modify query, key and value vectors of the atte The init embedding is used to initialize the general embedding of the problem nodes without any solution information. Generally consists of a linear layer that projects the node features to the embedding space. -```{eval-rst} -.. automodule:: rl4co.models.nn.env_embeddings.init - :members: - :undoc-members: -``` \ No newline at end of file +:::models.nn.env_embeddings.init diff --git a/docs/content/api/models/nn.md b/docs/content/api/models/nn.md index ba5fa86b..7904035f 100644 --- a/docs/content/api/models/nn.md +++ b/docs/content/api/models/nn.md @@ -2,59 +2,31 @@ ## Critic Network -```{eval-rst} -.. automodule:: rl4co.models.rl.common.critic - :members: - :undoc-members: -``` +:::models.rl.common.critic ## Graph Neural Networks ### Graph Attention Encoder -```{eval-rst} -.. automodule:: rl4co.models.nn.graph.attnnet - :members: - :undoc-members: -``` +:::models.nn.graph.attnnet ### Graph Convolutional Encoder -```{eval-rst} -.. automodule:: rl4co.models.nn.graph.gcn - :members: - :undoc-members: -``` +:::models.nn.graph.gcn ### Message Passing Encoder -```{eval-rst} -.. automodule:: rl4co.models.nn.graph.mpnn - :members: - :undoc-members: -``` +:::models.nn.graph.mpnn ## rl4co.models.nn.attention -```{eval-rst} -.. automodule:: rl4co.models.nn.attention - :members: - :undoc-members: -``` +:::models.nn.attention ## rl4co.models.nn.mlp -```{eval-rst} -.. automodule:: rl4co.models.nn.mlp - :members: - :undoc-members: -``` +:::models.nn.mlp ## rl4co.models.nn.ops -```{eval-rst} -.. automodule:: rl4co.models.nn.ops - :members: - :undoc-members: -``` \ No newline at end of file +:::models.nn.ops \ No newline at end of file diff --git a/docs/content/api/tasks.md b/docs/content/api/tasks.md index 53bb82a0..0f358ca0 100644 --- a/docs/content/api/tasks.md +++ b/docs/content/api/tasks.md @@ -1,17 +1,6 @@ # Tasks: Train and Evaluate -## Train - -```{eval-rst} -.. automodule:: rl4co.tasks.train - :members: - :undoc-members: -``` +:::tasks.train ## Evaluate - -```{eval-rst} -.. automodule:: rl4co.tasks.eval - :members: - :undoc-members: -``` \ No newline at end of file +:::tasks.eval \ No newline at end of file From c206ad053c58449ab17b8aa8a924f9cfcc46547e Mon Sep 17 00:00:00 2001 From: Chuanbo Hua Date: Wed, 24 Jul 2024 04:12:53 +0900 Subject: [PATCH 082/102] [Docs] Remove useless contents --- docs/content/api/models/zoo/__init__.md | 3 - docs/content/api/models/zoo/constructive.md | 215 -------------------- docs/content/api/models/zoo/improvement.md | 5 - docs/content/api/models/zoo/transductive.md | 31 --- 4 files changed, 254 deletions(-) delete mode 100644 docs/content/api/models/zoo/__init__.md delete mode 100644 docs/content/api/models/zoo/constructive.md delete mode 100644 docs/content/api/models/zoo/improvement.md delete mode 100644 docs/content/api/models/zoo/transductive.md diff --git a/docs/content/api/models/zoo/__init__.md b/docs/content/api/models/zoo/__init__.md deleted file mode 100644 index dee807f8..00000000 --- a/docs/content/api/models/zoo/__init__.md +++ /dev/null @@ -1,3 +0,0 @@ -# Model Zoo - -Models from the literature and contributions are contained in the Model Zoo. \ No newline at end of file diff --git a/docs/content/api/models/zoo/constructive.md b/docs/content/api/models/zoo/constructive.md deleted file mode 100644 index 4a1b1993..00000000 --- a/docs/content/api/models/zoo/constructive.md +++ /dev/null @@ -1,215 +0,0 @@ -# Constructive Methods - -These can be classified into Auto-Regressive (AR) and Non-Auto-Regressive (NAR) policies. These constructive methods also include ad-hoc RL algorithms for constructive policies. - -# AutoRegressive - -## Attention Model (AM) - -```{eval-rst} -.. automodule:: rl4co.models.zoo.am.model - :members: - :undoc-members: -``` - -```{eval-rst} -.. automodule:: rl4co.models.zoo.am.policy - :members: - :undoc-members: -``` - -## Attention Model - PPO (AM-PPO) - -```{eval-rst} -.. automodule:: rl4co.models.zoo.amppo.model - :members: - :undoc-members: -``` - - - -## Heterogeneous Attention Model (HAM) - -```{eval-rst} -.. automodule:: rl4co.models.zoo.ham.model - :members: - :undoc-members: -``` - -```{eval-rst} -.. automodule:: rl4co.models.zoo.ham.policy - :members: - :undoc-members: -``` - -```{eval-rst} -.. automodule:: rl4co.models.zoo.ham.encoder - :members: - :undoc-members: -``` - -```{eval-rst} -.. automodule:: rl4co.models.zoo.ham.attention - :members: - :undoc-members: -``` - - -## Matrix Encoding Network (MatNet) - -```{eval-rst} -.. automodule:: rl4co.models.zoo.matnet.model - :members: - :undoc-members: -``` - -```{eval-rst} -.. automodule:: rl4co.models.zoo.matnet.policy - :members: - :undoc-members: -``` - -```{eval-rst} -.. automodule:: rl4co.models.zoo.matnet.encoder - :members: - :undoc-members: -``` - -```{eval-rst} -.. automodule:: rl4co.models.zoo.matnet.decoder - :members: - :undoc-members: -``` - - -## Multi-Decoder Attention Model (MDAM) - -```{eval-rst} -.. automodule:: rl4co.models.zoo.mdam.model - :members: - :undoc-members: -``` - -```{eval-rst} -.. automodule:: rl4co.models.zoo.mdam.policy - :members: - :undoc-members: -``` - -```{eval-rst} -.. automodule:: rl4co.models.zoo.mdam.encoder - :members: - :undoc-members: -``` - -```{eval-rst} -.. automodule:: rl4co.models.zoo.mdam.decoder - :members: - :undoc-members: -``` - -## POMO - -```{eval-rst} -.. automodule:: rl4co.models.zoo.pomo.model - :members: - :undoc-members: -``` - -## Pointer Network (PtrNet) - -```{eval-rst} -.. automodule:: rl4co.models.zoo.ptrnet.model - :members: - :undoc-members: -``` - -```{eval-rst} -.. automodule:: rl4co.models.zoo.ptrnet.policy - :members: - :undoc-members: -``` - -```{eval-rst} -.. automodule:: rl4co.models.zoo.ptrnet.encoder - :members: - :undoc-members: -``` - -```{eval-rst} -.. automodule:: rl4co.models.zoo.ptrnet.decoder - :members: - :undoc-members: -``` - -```{eval-rst} -.. automodule:: rl4co.models.zoo.ptrnet.critic - :members: - :undoc-members: -``` - -## SymNCO - -```{eval-rst} -.. automodule:: rl4co.models.zoo.symnco.model - :members: - :undoc-members: -``` - -```{eval-rst} -.. automodule:: rl4co.models.zoo.symnco.policy - :members: - :undoc-members: -``` - -```{eval-rst} -.. automodule:: rl4co.models.zoo.symnco.losses - :members: - :undoc-members: -``` - ---- - -# NonAutoregressive - - -## DeepACO - -```{eval-rst} -.. automodule:: rl4co.models.zoo.deepaco.antsystem - :members: - :undoc-members: -``` - -```{eval-rst} -.. automodule:: rl4co.models.zoo.deepaco.model - :members: - :undoc-members: -``` - -```{eval-rst} -.. automodule:: rl4co.models.zoo.deepaco.policy - :members: - :undoc-members: -``` - -```{eval-rst} -.. automodule:: rl4co.models.zoo.deepaco.decoder - :members: - :undoc-members: -``` - - -## NAR-GNN - -```{eval-rst} -.. automodule:: rl4co.models.zoo.nargnn.policy - :members: - :undoc-members: -``` - -```{eval-rst} -.. automodule:: rl4co.models.zoo.nargnn.encoder - :members: - :undoc-members: -``` \ No newline at end of file diff --git a/docs/content/api/models/zoo/improvement.md b/docs/content/api/models/zoo/improvement.md deleted file mode 100644 index eda6ca2c..00000000 --- a/docs/content/api/models/zoo/improvement.md +++ /dev/null @@ -1,5 +0,0 @@ -# Improvement Methods - -These methods are trained to improve existing solutions iteratively, akin to local search algorithms. They focus on refining existing solutions rather than generating them from scratch. - -_coming soon!_ \ No newline at end of file diff --git a/docs/content/api/models/zoo/transductive.md b/docs/content/api/models/zoo/transductive.md deleted file mode 100644 index b4e0bbbb..00000000 --- a/docs/content/api/models/zoo/transductive.md +++ /dev/null @@ -1,31 +0,0 @@ -# Transductive Methods - -These methods update policy parameters during online testing to improve the solutions of a specific instance. - -## Active Search (AS) - -```{eval-rst} -.. automodule:: rl4co.models.zoo.active_search.search - :members: - :undoc-members: -``` - -## Efficent Active Search (EAS) - -```{eval-rst} -.. automodule:: rl4co.models.zoo.eas.search - :members: - :undoc-members: -``` - -```{eval-rst} -.. automodule:: rl4co.models.zoo.eas.decoder - :members: - :undoc-members: -``` - -```{eval-rst} -.. automodule:: rl4co.models.zoo.eas.nn - :members: - :undoc-members: -``` \ No newline at end of file From 03ca9bff457887c4dfe69898123af888e5eb2993 Mon Sep 17 00:00:00 2001 From: Chuanbo Hua Date: Wed, 24 Jul 2024 04:13:10 +0900 Subject: [PATCH 083/102] [Docs] Update the docs structure --- mkdocs.yml | 53 +++++++++++++++++++++++++++-------------------------- 1 file changed, 27 insertions(+), 26 deletions(-) diff --git a/mkdocs.yml b/mkdocs.yml index bcda7621..6e44633e 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -21,28 +21,29 @@ nav: - Transductive Methods: examples/modeling/2-transductive-methods.ipynb - Encoder Customization: examples/modeling/3-change-encoder.ipynb - Hydra Configuration: examples/advanced/1-hydra-config.ipynb - - RL Algorithms: - - Base Algorithms: docs/content/api/algos/base.md - - Reinforce: docs/content/api/algos/reinforce.md - - PPO: docs/content/api/algos/ppo.md - - A2C: docs/content/api/algos/a2c.md - - Environments: - - Basic Environments: docs/content/api/envs/base.md - - EDA Problems: docs/content/api/envs/eda.md - - Routing Problems: docs/content/api/envs/routing.md - - Scheduling Problems: docs/content/api/envs/scheduling.md - - Networks: - - Neural Network Modules: docs/content/api/models/nn.md - - Environment Embeddings: docs/content/api/models/env_embeddings.md - - Base NCO Methods: - - Constructive Policies: docs/content/api/models/common/zoo/constructive.md - - Improvement Policies: docs/content/api/models/common/zoo/improvement.md - - Transductive Models: docs/content/api/models/common/zoo/transductive.md - - Additional APIs: - - Train and Evaluation: docs/content/api/tasks.md - - Decoding Strategies: docs/content/api/decoding.md - - Data: docs/content/api/data.md - - Other: + - API Docs: + - RL Algorithms: + - Base Algorithms: docs/content/api/algos/base.md + - Reinforce: docs/content/api/algos/reinforce.md + - PPO: docs/content/api/algos/ppo.md + - A2C: docs/content/api/algos/a2c.md + - Environments: + - Basic Environments: docs/content/api/envs/base.md + - EDA Problems: docs/content/api/envs/eda.md + - Routing Problems: docs/content/api/envs/routing.md + - Scheduling Problems: docs/content/api/envs/scheduling.md + - Networks: + - Neural Network Modules: docs/content/api/models/nn.md + - Environment Embeddings: docs/content/api/models/env_embeddings.md + - Base NCO Methods: + - Constructive Policies: docs/content/api/models/common/constructive.md + - Improvement Policies: docs/content/api/models/common/improvement.md + - Transductive Models: docs/content/api/models/common/transductive.md + - Additional APIs: + - Train and Evaluation: docs/content/api/tasks.md + - Decoding Strategies: docs/content/api/decoding.md + - Data: docs/content/api/data.md + - About: - Contributing to RL4CO: docs/content/general/contribute.md - FAQ: docs/content/general/faq.md @@ -136,7 +137,7 @@ plugins: merge_init_into_class: true show_signature_annotations: true docstring_section_style: list - heading_level: 1 + heading_level: 2 inherited_members: false show_root_heading: true show_root_full_path: false @@ -156,9 +157,9 @@ plugins: - mike: alias_type: symlink canonical_version: latest - - mkdocs-jupyter: - include_source: True - include: ["*ipynb"] + # - mkdocs-jupyter: + # include_source: True + # include: ["*ipynb"] - search - autorefs - autolinks From 3b1d7b6ad51bad91f4cd75a172b27adbadacb1a5 Mon Sep 17 00:00:00 2001 From: Federico Berto Date: Wed, 24 Jul 2024 15:23:01 +0900 Subject: [PATCH 084/102] [Docs] add tsparticles :sparkles: --- docs/overrides/fancylogo.txt | 243 +++++++++++++++++++++++++++++++++++ 1 file changed, 243 insertions(+) create mode 100644 docs/overrides/fancylogo.txt diff --git a/docs/overrides/fancylogo.txt b/docs/overrides/fancylogo.txt new file mode 100644 index 00000000..5097cf44 --- /dev/null +++ b/docs/overrides/fancylogo.txt @@ -0,0 +1,243 @@ +--- +hide: +- navigation +- toc +--- + +
    + +
    + +
    +
    + +
    + + +
    +
    Loading...
    +
    +
    + AI4CO Logo +
    +
    + + +
    +
    +
    + From bc308e4f1ebacacb36bfeac21e4811e2b3335ef9 Mon Sep 17 00:00:00 2001 From: Federico Berto Date: Wed, 24 Jul 2024 16:19:47 +0900 Subject: [PATCH 085/102] [Docs] add tsparticles :sparkles: --- docs/assets/rl4co_animated_full_tricks.svg | 77 ++++++++++ docs/overrides/fancylogo.txt | 171 ++++++++++++--------- 2 files changed, 175 insertions(+), 73 deletions(-) create mode 100644 docs/assets/rl4co_animated_full_tricks.svg diff --git a/docs/assets/rl4co_animated_full_tricks.svg b/docs/assets/rl4co_animated_full_tricks.svg new file mode 100644 index 00000000..2e1ac249 --- /dev/null +++ b/docs/assets/rl4co_animated_full_tricks.svg @@ -0,0 +1,77 @@ + + + + + + AI4CO + + + Text + + + + R L + 4 + C O + + + + + Style 1-5 + + + + diff --git a/docs/overrides/fancylogo.txt b/docs/overrides/fancylogo.txt index 5097cf44..74f0a1e3 100644 --- a/docs/overrides/fancylogo.txt +++ b/docs/overrides/fancylogo.txt @@ -13,6 +13,15 @@ hide: + +
    @@ -71,13 +80,13 @@ hide:
    Loading...
    - AI4CO Logo + AI4CO Logo
    + + + +
    +
    + +
    + + +
    +
    Loading...
    +
    +
    + AI4CO Logo +
    +
    + + +
    +
    diff --git a/README_backup.md b/README_backup.md new file mode 100644 index 00000000..0b2e4a7d --- /dev/null +++ b/README_backup.md @@ -0,0 +1,224 @@ +
    + + +AI4CO Logo + +

    + + +PyTorch +Lightning +base: TorchRL +config: Hydra +Code style: black +Slack +License: MIT +Open In Colab +PyPI +Codecov +Test + +

    + Documentation | + Getting Started | + Usage | + Contributing | + Paper | + Join Us +

    + + + +
    + + + +An extensive Reinforcement Learning (RL) for Combinatorial Optimization (CO) benchmark. Our goal is to provide a unified framework for RL-based CO algorithms, and to facilitate reproducible research in this field, decoupling the science from the engineering. + + +RL4CO is built upon: +- [TorchRL](https://github.com/pytorch/rl): official PyTorch framework for RL algorithms and vectorized environments on GPUs +- [TensorDict](https://github.com/pytorch-labs/tensordict): a library to easily handle heterogeneous data such as states, actions and rewards +- [PyTorch Lightning](https://github.com/Lightning-AI/lightning): a lightweight PyTorch wrapper for high-performance AI research +- [Hydra](https://github.com/facebookresearch/hydra): a framework for elegantly configuring complex applications + +
    + RL4CO-Overview +
    + +We offer flexible and efficient implementations of the following policies: +- **Constructive**: learn to construct a solution from scratch + - _Autoregressive (AR)_: construct solutions one step at a time via a decoder + - _NonAutoregressive (NAR)_: learn to predict a heuristic, such as a heatmap, to then construct a solution +- **Improvement**: learn to improve an pre-existing solution + +
    + RL4CO-Policy-Overview +
    + +We provide several utilities and modularization. For example, we modularize reusable components such as _environment embeddings_ that can easily be swapped to [solve new problems](https://github.com/ai4co/rl4co/blob/main/examples/3-creating-new-env-model.ipynb). + + +
    + RL4CO-Env-Embedding +
    + + +## Getting started +Open In Colab + +RL4CO is now available for installation on `pip`! +```bash +pip install rl4co +``` + +To get started, we recommend checking out our [quickstart notebook](examples/1-quickstart.ipynb) or the [minimalistic example](#minimalistic-example) below. + +### Install from source +This command installs the bleeding edge `main` version, useful for staying up-to-date with the latest developments - for instance, if a bug has been fixed since the last official release but a new release hasn’t been rolled out yet: + +```bash +pip install -U git+https://github.com/ai4co/rl4co.git +``` + +### Local install and development +If you want to develop RL4CO we recommend you to install it locally with `pip` in editable mode: + +```bash +git clone https://github.com/ai4co/rl4co && cd rl4co +pip install -e . +``` + +We recommend using a virtual environment such as `conda` to install `rl4co` locally. + + + +## Usage + + +Train model with default configuration (AM on TSP environment): +```bash +python run.py +``` + +> [!TIP] +> You may check out [this notebook](examples/advanced/1-hydra-config.ipynb) to get started with Hydra! + +
    + Change experiment settings + +Train model with chosen experiment configuration from [configs/experiment/](configs/experiment/) +```bash +python run.py experiment=routing/am env=tsp env.num_loc=50 model.optimizer_kwargs.lr=2e-4 +``` +Here you may change the environment, e.g. with `env=cvrp` by command line or by modifying the corresponding experiment e.g. [configs/experiment/routing/am.yaml](configs/experiment/routing/am.yaml). + +
    + + + + +
    + Disable logging + +```bash +python run.py experiment=routing/am logger=none '~callbacks.learning_rate_monitor' +``` +Note that `~` is used to disable a callback that would need a logger. + +
    + + +
    + Create a sweep over hyperparameters (-m for multirun) + +```bash +python run.py -m experiment=routing/am model.optimizer.lr=1e-3,1e-4,1e-5 +``` +
    + + + +### Minimalistic Example + +Here is a minimalistic example training the Attention Model with greedy rollout baseline on TSP in less than 30 lines of code: + +```python +from rl4co.envs.routing import TSPEnv, TSPGenerator +from rl4co.models import AttentionModelPolicy, POMO +from rl4co.utils import RL4COTrainer + +# Instantiate generator and environment +generator = TSPGenerator(num_loc=50, loc_distribution="uniform") +env = TSPEnv(generator) + +# Create policy and RL model +policy = AttentionModelPolicy(env_name=env.name, num_encoder_layers=6) +model = POMO(env, policy, batch_size=64, optimizer_kwargs={"lr": 1e-4}) + +# Instantiate Trainer and fit +trainer = RL4COTrainer(max_epochs=10, accelerator="gpu", precision="16-mixed") +trainer.fit(model) +``` + +Other examples can be found on the [documentation](https://rl4co.readthedocs.io/en/latest/)! + + +### Testing + +Run tests with `pytest` from the root directory: + +```bash +pytest tests +``` + +### Known Bugs + + +#### Bugs installing PyTorch Geometric (PyG) + +Installing `PyG` via `Conda` seems to update Torch itself. We have found that this update introduces some bugs with `torchrl`. At this moment, we recommend installing `PyG` with `Pip`: +```bash +pip install torch_geometric +``` + + +## Contributing + +Have a suggestion, request, or found a bug? Feel free to [open an issue](https://github.com/ai4co/rl4co/issues) or [submit a pull request](https://github.com/ai4co/rl4co/pulls). +If you would like to contribute, please check out our contribution guidelines [here](.github/CONTRIBUTING.md). We welcome and look forward to all contributions to RL4CO! + +We are also on [Slack](https://join.slack.com/t/rl4co/shared_invite/zt-1ytz2c1v4-0IkQ8NQH4TRXIX8PrRmDhQ) if you have any questions or would like to discuss RL4CO with us. We are open to collaborations and would love to hear from you 🚀 + +### Contributors + + + + +## Citation +If you find RL4CO valuable for your research or applied projects: + +```bibtex +@article{berto2024rl4co, + title={{RL4CO: an Extensive Reinforcement Learning for Combinatorial Optimization Benchmark}}, + author={Federico Berto and Chuanbo Hua and Junyoung Park and Laurin Luttmann and Yining Ma and Fanchen Bu and Jiarui Wang and Haoran Ye and Minsu Kim and Sanghyeok Choi and Nayeli Gast Zepeda and Andr\'e Hottung and Jianan Zhou and Jieyi Bi and Yu Hu and Fei Liu and Hyeonah Kim and Jiwoo Son and Haeyeon Kim and Davide Angioni and Wouter Kool and Zhiguang Cao and Jie Zhang and Kijung Shin and Cathy Wu and Sungsoo Ahn and Guojie Song and Changhyun Kwon and Lin Xie and Jinkyoo Park}, + year={2024}, + journal={arXiv preprint arXiv:2306.17100}, + note={\url{https://github.com/ai4co/rl4co}} +} +``` + +Note that a [previous version of RL4CO](https://openreview.net/forum?id=YXSJxi8dOV) has been accepted as an oral presentation at the [NeurIPS 2023 GLFrontiers Workshop](https://glfrontiers.github.io/). Since then, the library has greatly evolved and improved! + +--- + + +## Join us +[![Slack](https://img.shields.io/badge/slack-chat-611f69.svg?logo=slack)](https://join.slack.com/t/rl4co/shared_invite/zt-1ytz2c1v4-0IkQ8NQH4TRXIX8PrRmDhQ) + +We invite you to join our AI4CO community, an open research group in Artificial Intelligence (AI) for Combinatorial Optimization (CO)! + + +
    + AI4CO Logo +
    diff --git a/docs/content/api/algos/a2c.md b/docs/content/api/algos/a2c.md index 6429879c..77abe89f 100644 --- a/docs/content/api/algos/a2c.md +++ b/docs/content/api/algos/a2c.md @@ -1 +1 @@ -:::models.rl.a2c.a2c +:::models.rl.a2c.a2c.A2C diff --git a/docs/content/api/algos/base.md b/docs/content/api/algos/base.md index ae859ee7..d4f16435 100644 --- a/docs/content/api/algos/base.md +++ b/docs/content/api/algos/base.md @@ -1 +1 @@ -::: models.rl.common.base \ No newline at end of file +::: models.rl.common.base.RL4COLitModule \ No newline at end of file diff --git a/docs/content/api/algos/ppo.md b/docs/content/api/algos/ppo.md index 2e7c4767..04c9a4bc 100644 --- a/docs/content/api/algos/ppo.md +++ b/docs/content/api/algos/ppo.md @@ -1 +1 @@ -:::models.rl.ppo.ppo \ No newline at end of file +:::models.rl.ppo.ppo.PPO \ No newline at end of file diff --git a/docs/content/api/algos/reinforce.md b/docs/content/api/algos/reinforce.md index 954a22f0..60e25ae7 100644 --- a/docs/content/api/algos/reinforce.md +++ b/docs/content/api/algos/reinforce.md @@ -1,2 +1,10 @@ -:::models.rl.reinforce.reinforce -:::models.rl.reinforce.baselines +:::models.rl.reinforce.reinforce.REINFORCE +:::models.rl.reinforce.baselines.REINFORCEBaseline +:::models.rl.reinforce.baselines.NoBaseline +:::models.rl.reinforce.baselines.SharedBaseline +:::models.rl.reinforce.baselines.ExponentialBaseline +:::models.rl.reinforce.baselines.MeanBaseline +:::models.rl.reinforce.baselines.WarmupBaseline +:::models.rl.reinforce.baselines.CriticBaseline +:::models.rl.reinforce.baselines.RolloutBaseline +:::models.rl.reinforce.baselines.get_reinforce_baseline diff --git a/docs/content/api/data.md b/docs/content/api/data.md index 508e6142..b316c783 100644 --- a/docs/content/api/data.md +++ b/docs/content/api/data.md @@ -1,17 +1,23 @@ -# Data - ## Datasets :::data.dataset + options: + show_root_heading: false ## Data Generation :::data.generate_data + options: + show_root_heading: false ## Transforms :::data.transforms + options: + show_root_heading: false ## Utils -:::data.utils \ No newline at end of file +:::data.utils + options: + show_root_heading: false \ No newline at end of file diff --git a/docs/content/api/decoding.md b/docs/content/api/decoding.md index 34d751ca..0a0b5ec0 100644 --- a/docs/content/api/decoding.md +++ b/docs/content/api/decoding.md @@ -1,3 +1,5 @@ # Decoding Strategies :::utils.decoding + options: + show_root_heading: false diff --git a/docs/content/api/envs/base.md b/docs/content/api/envs/base.md index fe44eb80..fe914cb6 100644 --- a/docs/content/api/envs/base.md +++ b/docs/content/api/envs/base.md @@ -3,10 +3,13 @@ This is the base wrapper around TorchRL's `EnvBase`, with additional functionality. ::: envs.common.base.RL4COEnvBase +::: envs.common.base.ImprovementEnvBase ## Utilities These contain utilities such as the base `Generator` class and `get_sampler`. -:::envs.common.utils \ No newline at end of file +:::envs.common.utils.Generator +:::envs.common.utils.get_sampler +:::envs.common.utils.batch_to_scalar \ No newline at end of file diff --git a/docs/content/api/envs/eda.md b/docs/content/api/envs/eda.md index 7f48989f..c070e0f4 100644 --- a/docs/content/api/envs/eda.md +++ b/docs/content/api/envs/eda.md @@ -3,12 +3,12 @@ Environment for Electronic Design Automation (EDA) problems ## Decap Placement Problem (DPP) -:::envs.eda.dpp.env +:::envs.eda.dpp.env.DPPEnv -:::envs.eda.dpp.generator +:::envs.eda.dpp.generator.DPPGenerator ## Multi-port Decap Placement Problem (mDPP) -:::envs.eda.mdpp.env +:::envs.eda.mdpp.env.MDPPEnv -:::envs.eda.mdpp.generator +:::envs.eda.mdpp.generator.MDPPGenerator diff --git a/docs/content/api/envs/routing.md b/docs/content/api/envs/routing.md index 294a34f3..7c5be49f 100644 --- a/docs/content/api/envs/routing.md +++ b/docs/content/api/envs/routing.md @@ -4,60 +4,58 @@ See also the [Multi-Task VRP](#Multi-Task-Vehicle-Routing-Problem-(MTVRP)) at th ## Asymmetric Traveling Salesman Problem (ATSP) -:::envs.routing.atsp.env +:::envs.routing.atsp.env.ATSPEnv -:::envs.routing.atsp.generator +:::envs.routing.atsp.generator.ATSPGenerator ## Capacitated Vehicle Routing Problem (CVRP) -:::envs.routing.cvrp.env +:::envs.routing.cvrp.env.CVRPEnv -:::envs.routing.cvrp.generator +:::envs.routing.cvrp.generator.CVRPGenerator ## Multiple Traveling Salesman Problem (mTSP) -:::envs.routing.mtsp.env +:::envs.routing.mtsp.env.MTSPEnv -:::envs.routing.mtsp.generator +:::envs.routing.mtsp.generator.MTSPGenerator ## Orienteering Problem (OP) -:::envs.routing.op.env +:::envs.routing.op.env.OPEnv -:::envs.routing.op.generator +:::envs.routing.op.generator.OPGenerator ## Pickup and Delivery Problem (PDP) -:::envs.routing.pdp.env +:::envs.routing.pdp.env.PDPEnv -:::envs.routing.pdp.generator +:::envs.routing.pdp.generator.PDPGenerator ## Prize Collecting Traveling Salesman Problem (PCTSP) -:::envs.routing.pctsp.env +:::envs.routing.pctsp.env.PCTSPEnv -:::envs.routing.pctsp.generator +:::envs.routing.pctsp.generator.PCTSPGenerator ## Split Delivery Vehicle Routing Problem (SDVRP) -:::envs.routing.sdvrp.env +:::envs.routing.sdvrp.env.SDVRPEnv ## Stochastic Prize Collecting Traveling Salesman Problem (SPCTSP) -:::envs.routing.spctsp.env +:::envs.routing.spctsp.env.SPCTSPEnv ## Traveling Salesman Problem (TSP) -:::envs.routing.tsp.env +:::envs.routing.tsp.env.TSPEnv -:::envs.routing.tsp.generator - ---- +:::envs.routing.tsp.generator.TSPGenerator ## Multi-Task Vehicle Routing Problem (MTVRP) -:::envs.routing.mtvrp.env +:::envs.routing.mtvrp.env.MTVRPEnv -:::envs.routing.mtvrp.generator \ No newline at end of file +:::envs.routing.mtvrp.generator.MTVRPGenerator \ No newline at end of file diff --git a/docs/content/api/envs/scheduling.md b/docs/content/api/envs/scheduling.md index b7747fb4..62b172b6 100644 --- a/docs/content/api/envs/scheduling.md +++ b/docs/content/api/envs/scheduling.md @@ -2,12 +2,12 @@ ## Flexible Flow Shop Problem (FFSP) -:::envs.scheduling.ffsp.env +:::envs.scheduling.ffsp.env.FFSPEnv -:::envs.scheduling.ffsp.generator +:::envs.scheduling.ffsp.generator.FFSPGenerator ## Single Machine Total Weighted Tardiness Problem (SMTWTP) -:::envs.scheduling.smtwtp.env +:::envs.scheduling.smtwtp.env.SMTWTPEnv -:::envs.scheduling.smtwtp.generator \ No newline at end of file +:::envs.scheduling.smtwtp.generator.SMTWTPGenerator \ No newline at end of file diff --git a/docs/content/api/models/common/constructive.md b/docs/content/api/models/common/constructive.md index 2e6ccf39..242c9f42 100644 --- a/docs/content/api/models/common/constructive.md +++ b/docs/content/api/models/common/constructive.md @@ -1,11 +1,9 @@ -## Constructive Policies - Constructive NCO policies pre-train a policy to amortize the inference. "Constructive" means that a solution is created from scratch by the model. We can also categorize constructive NCO in two sub-categories depending on the role of encoder and decoder: -#### Autoregressive (AR) +## Autoregressive (AR) Autoregressive approaches **use a learned decoder** that outputs log probabilities for the current solution. These approaches generate a solution step by step, similar to e.g. LLMs. They have an encoder-decoder structure. Some models may not have an encoder at all and just re-encode at each step. -#### NonAutoregressive (NAR) +## NonAutoregressive (NAR) The difference between AR and NAR approaches is that NAR **only an encoder is learnable** (they just encode in one shot) and generate for example a heatmap, which can then be decoded simply by using it as a probability distribution or by using some search method on top. Here is a general structure of a general constructive policy with an encoder-decoder structure: @@ -15,28 +13,38 @@ Here is a general structure of a general constructive policy with an encoder-dec where _embeddings_ transfer information from feature space to embedding space. ---- - -### Constructive Policy Base Classes +## Constructive Policy Base Classes :::models.common.constructive.base + options: + show_root_heading: false - - -### Autoregressive Policies Base Classes +## Autoregressive Policies Base Classes :::models.common.constructive.autoregressive.encoder + options: + show_root_heading: false :::models.common.constructive.autoregressive.decoder + options: + show_root_heading: false :::models.common.constructive.autoregressive.policy + options: + show_root_heading: false -### Nonautoregressive Policies Base Classes +## Nonautoregressive Policies Base Classes :::models.common.constructive.nonautoregressive.encoder + options: + show_root_heading: false :::models.common.constructive.nonautoregressive.decoder + options: + show_root_heading: false :::models.common.constructive.nonautoregressive.policy + options: + show_root_heading: false \ No newline at end of file diff --git a/docs/content/api/models/common/improvement.md b/docs/content/api/models/common/improvement.md index 80543b2a..1a352f58 100644 --- a/docs/content/api/models/common/improvement.md +++ b/docs/content/api/models/common/improvement.md @@ -1,3 +1 @@ -## Improvement Policies - These methods differ w.r.t. constructive NCO since they can obtain better solutions similarly to how local search algorithms work - they can improve the solutions over time. This is different from decoding strategies or similar in constructive methods since these policies are trained for performing improvement operations. diff --git a/docs/content/api/models/common/transductive.md b/docs/content/api/models/common/transductive.md index b9be41f3..d064e683 100644 --- a/docs/content/api/models/common/transductive.md +++ b/docs/content/api/models/common/transductive.md @@ -1,13 +1,12 @@ -# Transductive Models - - -Transductive models are learning algorithms that optimize on a specific instance. They improve solutions by updating policy parameters $\theta$_, which means that we are running optimization (backprop) **at test time**. Transductive learning can be performed with different policies: for example EAS updates (a part of) AR policies parameters to obtain better solutions, but I guess there are ways (or papers out there I don't know of) that optimize at test time. +Transductive models are learning algorithms that optimize on a specific instance. They improve solutions by updating policy parameters $\theta$, which means that we are running optimization (backprop) **at test time**. Transductive learning can be performed with different policies: for example EAS updates (a part of) AR policies parameters to obtain better solutions, but I guess there are ways (or papers out there I don't know of) that optimize at test time. !!! tip - You may refer to the definition of `inductive vs transductive RL `_. In inductive RL, we train to generalize to new instances. In transductive RL we train (or finetune) to solve only specific ones. + You may refer to the definition of `inductive vs transductive RL `. In inductive RL, we train to generalize to new instances. In transductive RL we train (or finetune) to solve only specific ones. ## Base Transductive Model -:::models.common.transductive.base \ No newline at end of file +:::models.common.transductive.base + options: + show_root_heading: false \ No newline at end of file diff --git a/docs/content/api/models/env_embeddings.md b/docs/content/api/models/env_embeddings.md index a93ff81b..5056cb3b 100644 --- a/docs/content/api/models/env_embeddings.md +++ b/docs/content/api/models/env_embeddings.md @@ -13,21 +13,22 @@ In autoregressive policies, environment embeddings transfer data from feature sp The context embedding is used to modify the query embedding of the problem node of the current partial solution. Usually consists of a projection of gathered node embeddings and features to the embedding space. - :::models.nn.env_embeddings.context - ---- + options: + show_root_heading: false ## Dynamic Embeddings The dynamic embedding is used to modify query, key and value vectors of the attention mechanism based on the current state of the environment (which is changing during the rollout). Generally consists of a linear layer that projects the node features to the embedding space. :::models.nn.env_embeddings.dynamic - ---- + options: + show_root_heading: false ## Init Embeddings The init embedding is used to initialize the general embedding of the problem nodes without any solution information. Generally consists of a linear layer that projects the node features to the embedding space. :::models.nn.env_embeddings.init + options: + show_root_heading: false \ No newline at end of file diff --git a/docs/content/api/models/nn.md b/docs/content/api/models/nn.md index 7904035f..66cc5637 100644 --- a/docs/content/api/models/nn.md +++ b/docs/content/api/models/nn.md @@ -2,31 +2,28 @@ ## Critic Network -:::models.rl.common.critic +:::models.rl.common.critic.CriticNetwork ## Graph Neural Networks -### Graph Attention Encoder +:::models.nn.graph.attnnet.MultiHeadAttentionLayer +:::models.nn.graph.attnnet.GraphAttentionNetwork -:::models.nn.graph.attnnet +:::models.nn.graph.gcn.GCNEncoder -### Graph Convolutional Encoder +:::models.nn.graph.mpnn.MessagePassingEncoder -:::models.nn.graph.gcn - -### Message Passing Encoder - -:::models.nn.graph.mpnn - -## rl4co.models.nn.attention +## Attention Mechanisms :::models.nn.attention + options: + show_root_heading: false +## Multi-Layer Perceptron -## rl4co.models.nn.mlp - -:::models.nn.mlp +:::models.nn.mlp.MLP -## rl4co.models.nn.ops +## Operations -:::models.nn.ops \ No newline at end of file +:::models.nn.ops.PositionalEncoding +:::models.nn.ops.RandomEncoding \ No newline at end of file diff --git a/docs/content/api/tasks.md b/docs/content/api/tasks.md index 0f358ca0..37e0ac7e 100644 --- a/docs/content/api/tasks.md +++ b/docs/content/api/tasks.md @@ -1,6 +1,9 @@ -# Tasks: Train and Evaluate - +## Train :::tasks.train + options: + show_root_heading: false ## Evaluate -:::tasks.eval \ No newline at end of file +:::tasks.eval + options: + show_root_heading: false \ No newline at end of file From 000e2a024cff9beb7f0c9274cfd23691ed9da67c Mon Sep 17 00:00:00 2001 From: Chuanbo HUA Date: Wed, 24 Jul 2024 17:26:54 +0900 Subject: [PATCH 092/102] [Docs] Fix doc page titles --- mkdocs.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/mkdocs.yml b/mkdocs.yml index 6e44633e..e0500400 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -140,6 +140,7 @@ plugins: heading_level: 2 inherited_members: false show_root_heading: true + show_root_toc_entry: false show_root_full_path: false show_source: true show_symbol_type_heading: true From bb03f026f3e040f22f88b10934fc9886789393e0 Mon Sep 17 00:00:00 2001 From: Federico Berto Date: Wed, 24 Jul 2024 17:52:24 +0900 Subject: [PATCH 093/102] [Docs] final touches --- README.md | 297 ++---------------- README_backup.md | 224 ------------- .../content/api/models/common/transductive.md | 2 +- docs/stylesheets/mkdocstrings.css | 12 +- 4 files changed, 43 insertions(+), 492 deletions(-) delete mode 100644 README_backup.md diff --git a/README.md b/README.md index 70bf69dc..c62e779d 100644 --- a/README.md +++ b/README.md @@ -1,269 +1,34 @@ ---- -hide: -- navigation -- toc ---- - -
    - -
    +
    + + +AI4CO Logo + +

    + + +PyTorch +Lightning +base: TorchRL +config: Hydra +Code style: black +Slack +License: MIT +Open In Colab +PyPI +Codecov +Test + +

    + Documentation | + Getting Started | + Usage | + Contributing | + Paper | + Join Us +

    + + - - -
    -
    - -
    - - -
    -
    Loading...
    -
    -
    - AI4CO Logo -
    -
    - - -
    -
    @@ -456,4 +221,4 @@ We invite you to join our AI4CO community, an open research group in Artificial
    AI4CO Logo -
    +
    \ No newline at end of file diff --git a/README_backup.md b/README_backup.md deleted file mode 100644 index 0b2e4a7d..00000000 --- a/README_backup.md +++ /dev/null @@ -1,224 +0,0 @@ -
    - - -AI4CO Logo - -

    - - -PyTorch -Lightning -base: TorchRL -config: Hydra -Code style: black -Slack -License: MIT -Open In Colab -PyPI -Codecov -Test - -

    - Documentation | - Getting Started | - Usage | - Contributing | - Paper | - Join Us -

    - - - -
    - - - -An extensive Reinforcement Learning (RL) for Combinatorial Optimization (CO) benchmark. Our goal is to provide a unified framework for RL-based CO algorithms, and to facilitate reproducible research in this field, decoupling the science from the engineering. - - -RL4CO is built upon: -- [TorchRL](https://github.com/pytorch/rl): official PyTorch framework for RL algorithms and vectorized environments on GPUs -- [TensorDict](https://github.com/pytorch-labs/tensordict): a library to easily handle heterogeneous data such as states, actions and rewards -- [PyTorch Lightning](https://github.com/Lightning-AI/lightning): a lightweight PyTorch wrapper for high-performance AI research -- [Hydra](https://github.com/facebookresearch/hydra): a framework for elegantly configuring complex applications - -
    - RL4CO-Overview -
    - -We offer flexible and efficient implementations of the following policies: -- **Constructive**: learn to construct a solution from scratch - - _Autoregressive (AR)_: construct solutions one step at a time via a decoder - - _NonAutoregressive (NAR)_: learn to predict a heuristic, such as a heatmap, to then construct a solution -- **Improvement**: learn to improve an pre-existing solution - -
    - RL4CO-Policy-Overview -
    - -We provide several utilities and modularization. For example, we modularize reusable components such as _environment embeddings_ that can easily be swapped to [solve new problems](https://github.com/ai4co/rl4co/blob/main/examples/3-creating-new-env-model.ipynb). - - -
    - RL4CO-Env-Embedding -
    - - -## Getting started -Open In Colab - -RL4CO is now available for installation on `pip`! -```bash -pip install rl4co -``` - -To get started, we recommend checking out our [quickstart notebook](examples/1-quickstart.ipynb) or the [minimalistic example](#minimalistic-example) below. - -### Install from source -This command installs the bleeding edge `main` version, useful for staying up-to-date with the latest developments - for instance, if a bug has been fixed since the last official release but a new release hasn’t been rolled out yet: - -```bash -pip install -U git+https://github.com/ai4co/rl4co.git -``` - -### Local install and development -If you want to develop RL4CO we recommend you to install it locally with `pip` in editable mode: - -```bash -git clone https://github.com/ai4co/rl4co && cd rl4co -pip install -e . -``` - -We recommend using a virtual environment such as `conda` to install `rl4co` locally. - - - -## Usage - - -Train model with default configuration (AM on TSP environment): -```bash -python run.py -``` - -> [!TIP] -> You may check out [this notebook](examples/advanced/1-hydra-config.ipynb) to get started with Hydra! - -
    - Change experiment settings - -Train model with chosen experiment configuration from [configs/experiment/](configs/experiment/) -```bash -python run.py experiment=routing/am env=tsp env.num_loc=50 model.optimizer_kwargs.lr=2e-4 -``` -Here you may change the environment, e.g. with `env=cvrp` by command line or by modifying the corresponding experiment e.g. [configs/experiment/routing/am.yaml](configs/experiment/routing/am.yaml). - -
    - - - - -
    - Disable logging - -```bash -python run.py experiment=routing/am logger=none '~callbacks.learning_rate_monitor' -``` -Note that `~` is used to disable a callback that would need a logger. - -
    - - -
    - Create a sweep over hyperparameters (-m for multirun) - -```bash -python run.py -m experiment=routing/am model.optimizer.lr=1e-3,1e-4,1e-5 -``` -
    - - - -### Minimalistic Example - -Here is a minimalistic example training the Attention Model with greedy rollout baseline on TSP in less than 30 lines of code: - -```python -from rl4co.envs.routing import TSPEnv, TSPGenerator -from rl4co.models import AttentionModelPolicy, POMO -from rl4co.utils import RL4COTrainer - -# Instantiate generator and environment -generator = TSPGenerator(num_loc=50, loc_distribution="uniform") -env = TSPEnv(generator) - -# Create policy and RL model -policy = AttentionModelPolicy(env_name=env.name, num_encoder_layers=6) -model = POMO(env, policy, batch_size=64, optimizer_kwargs={"lr": 1e-4}) - -# Instantiate Trainer and fit -trainer = RL4COTrainer(max_epochs=10, accelerator="gpu", precision="16-mixed") -trainer.fit(model) -``` - -Other examples can be found on the [documentation](https://rl4co.readthedocs.io/en/latest/)! - - -### Testing - -Run tests with `pytest` from the root directory: - -```bash -pytest tests -``` - -### Known Bugs - - -#### Bugs installing PyTorch Geometric (PyG) - -Installing `PyG` via `Conda` seems to update Torch itself. We have found that this update introduces some bugs with `torchrl`. At this moment, we recommend installing `PyG` with `Pip`: -```bash -pip install torch_geometric -``` - - -## Contributing - -Have a suggestion, request, or found a bug? Feel free to [open an issue](https://github.com/ai4co/rl4co/issues) or [submit a pull request](https://github.com/ai4co/rl4co/pulls). -If you would like to contribute, please check out our contribution guidelines [here](.github/CONTRIBUTING.md). We welcome and look forward to all contributions to RL4CO! - -We are also on [Slack](https://join.slack.com/t/rl4co/shared_invite/zt-1ytz2c1v4-0IkQ8NQH4TRXIX8PrRmDhQ) if you have any questions or would like to discuss RL4CO with us. We are open to collaborations and would love to hear from you 🚀 - -### Contributors - - - - -## Citation -If you find RL4CO valuable for your research or applied projects: - -```bibtex -@article{berto2024rl4co, - title={{RL4CO: an Extensive Reinforcement Learning for Combinatorial Optimization Benchmark}}, - author={Federico Berto and Chuanbo Hua and Junyoung Park and Laurin Luttmann and Yining Ma and Fanchen Bu and Jiarui Wang and Haoran Ye and Minsu Kim and Sanghyeok Choi and Nayeli Gast Zepeda and Andr\'e Hottung and Jianan Zhou and Jieyi Bi and Yu Hu and Fei Liu and Hyeonah Kim and Jiwoo Son and Haeyeon Kim and Davide Angioni and Wouter Kool and Zhiguang Cao and Jie Zhang and Kijung Shin and Cathy Wu and Sungsoo Ahn and Guojie Song and Changhyun Kwon and Lin Xie and Jinkyoo Park}, - year={2024}, - journal={arXiv preprint arXiv:2306.17100}, - note={\url{https://github.com/ai4co/rl4co}} -} -``` - -Note that a [previous version of RL4CO](https://openreview.net/forum?id=YXSJxi8dOV) has been accepted as an oral presentation at the [NeurIPS 2023 GLFrontiers Workshop](https://glfrontiers.github.io/). Since then, the library has greatly evolved and improved! - ---- - - -## Join us -[![Slack](https://img.shields.io/badge/slack-chat-611f69.svg?logo=slack)](https://join.slack.com/t/rl4co/shared_invite/zt-1ytz2c1v4-0IkQ8NQH4TRXIX8PrRmDhQ) - -We invite you to join our AI4CO community, an open research group in Artificial Intelligence (AI) for Combinatorial Optimization (CO)! - - -
    - AI4CO Logo -
    diff --git a/docs/content/api/models/common/transductive.md b/docs/content/api/models/common/transductive.md index d064e683..14e6101d 100644 --- a/docs/content/api/models/common/transductive.md +++ b/docs/content/api/models/common/transductive.md @@ -2,7 +2,7 @@ Transductive models are learning algorithms that optimize on a specific instance !!! tip - You may refer to the definition of `inductive vs transductive RL `. In inductive RL, we train to generalize to new instances. In transductive RL we train (or finetune) to solve only specific ones. + You may refer to the definition of [inductive vs transductive RL](https://en.wikipedia.org/wiki/Transduction_(machine_learning)) . In inductive RL, we train to generalize to new instances. In transductive RL we train (or finetune) to solve only specific ones. ## Base Transductive Model diff --git a/docs/stylesheets/mkdocstrings.css b/docs/stylesheets/mkdocstrings.css index e1774fb6..abea38a6 100644 --- a/docs/stylesheets/mkdocstrings.css +++ b/docs/stylesheets/mkdocstrings.css @@ -24,7 +24,11 @@ div.doc-contents:not(.first) { /* Nice names only in TOC */ .doc-symbol-toc.doc-symbol-method::after { - content: "F"; + content: "m"; +} + +.doc-symbol-toc.doc-symbol-function::after { + content: "f"; } .doc-symbol-toc.doc-symbol-class::after { @@ -41,4 +45,10 @@ div.doc-contents:not(.first) { .doc-symbol-toc.doc-symbol-parameter::after { content: "P"; +} + +/* Line under link as solid */ +.doc-signature .autorefs { + color: inherit; + border-bottom: 1px solid currentcolor; } \ No newline at end of file From 700444d123ba4e791e4a2dc95933f533d051b96b Mon Sep 17 00:00:00 2001 From: Federico Berto Date: Wed, 24 Jul 2024 17:53:45 +0900 Subject: [PATCH 094/102] [Docs] final touches --- mkdocs.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mkdocs.yml b/mkdocs.yml index e0500400..e2562c13 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -158,9 +158,9 @@ plugins: - mike: alias_type: symlink canonical_version: latest - # - mkdocs-jupyter: - # include_source: True - # include: ["*ipynb"] + - mkdocs-jupyter: + include_source: True + include: ["*ipynb"] - search - autorefs - autolinks From 25d2d0638641df43a27b06f0833eb07391dbd4ba Mon Sep 17 00:00:00 2001 From: Federico Berto Date: Thu, 25 Jul 2024 00:52:42 +0900 Subject: [PATCH 095/102] [Docs] overhaul --- docs/content/api/algos/base.md | 1 - docs/content/api/models/common/__init__.md | 54 --------- .../content/api/models/common/constructive.md | 50 -------- docs/content/api/models/common/improvement.md | 1 - docs/content/api/networks/base_policies.md | 42 +++++++ .../{models => networks}/env_embeddings.md | 0 .../api/networks/improvement_policies.md | 7 ++ docs/content/api/{models => networks}/nn.md | 0 docs/content/api/{algos => rl}/a2c.md | 0 .../common/transductive.md => rl/base.md} | 11 +- docs/content/api/{algos => rl}/ppo.md | 0 docs/content/api/{algos => rl}/reinforce.md | 0 docs/content/api/zoo/constructive_ar.md | 113 ++++++++++++++++++ docs/content/api/zoo/constructive_nar.md | 27 +++++ docs/content/api/zoo/improvement.md | 55 +++++++++ docs/content/api/zoo/transductive.md | 23 ++++ docs/content/general/ai4co.md | 14 +++ docs/content/general/faq.md | 9 +- docs/content/intro/environments.md | 28 +++++ docs/content/intro/intro.md | 34 ++++++ docs/content/intro/policies.md | 53 ++++++++ docs/content/intro/rl.md | 43 +++++++ 22 files changed, 456 insertions(+), 109 deletions(-) delete mode 100644 docs/content/api/algos/base.md delete mode 100644 docs/content/api/models/common/__init__.md delete mode 100644 docs/content/api/models/common/constructive.md delete mode 100644 docs/content/api/models/common/improvement.md create mode 100644 docs/content/api/networks/base_policies.md rename docs/content/api/{models => networks}/env_embeddings.md (100%) create mode 100644 docs/content/api/networks/improvement_policies.md rename docs/content/api/{models => networks}/nn.md (100%) rename docs/content/api/{algos => rl}/a2c.md (100%) rename docs/content/api/{models/common/transductive.md => rl/base.md} (74%) rename docs/content/api/{algos => rl}/ppo.md (100%) rename docs/content/api/{algos => rl}/reinforce.md (100%) create mode 100644 docs/content/api/zoo/constructive_ar.md create mode 100644 docs/content/api/zoo/constructive_nar.md create mode 100644 docs/content/api/zoo/improvement.md create mode 100644 docs/content/api/zoo/transductive.md create mode 100644 docs/content/general/ai4co.md create mode 100644 docs/content/intro/environments.md create mode 100644 docs/content/intro/intro.md create mode 100644 docs/content/intro/policies.md create mode 100644 docs/content/intro/rl.md diff --git a/docs/content/api/algos/base.md b/docs/content/api/algos/base.md deleted file mode 100644 index d4f16435..00000000 --- a/docs/content/api/algos/base.md +++ /dev/null @@ -1 +0,0 @@ -::: models.rl.common.base.RL4COLitModule \ No newline at end of file diff --git a/docs/content/api/models/common/__init__.md b/docs/content/api/models/common/__init__.md deleted file mode 100644 index bba01830..00000000 --- a/docs/content/api/models/common/__init__.md +++ /dev/null @@ -1,54 +0,0 @@ -# NCO Methods Overview - - -We categorize NCO approaches (which are in fact not necessarily trained with RL!) into the following: 1) constructive, 2) improvement, 3) transductive. - - - -```{eval-rst} -.. tip:: - Note that in RL4CO we distinguish the RL algorithms and the actors via the following naming: - - * **Model:** Refers to the reinforcement learning algorithm encapsulated within a `LightningModule`. This module is responsible for training the policy. - * **Policy:** Implemented as a `nn.Module`, this neural network (often referred to as the *actor*) takes an instance and outputs a sequence of actions, :math:`\pi = \pi_0, \pi_1, \dots, \pi_N`, which constitutes the solution. - - Here, :math:`\pi_i` represents the action taken at step :math:`i`, forming a sequence that leads to the optimal or near-optimal solution for the given instance. -``` - - -The following table contains the categorization that we follow in RL4CO: - - -```{eval-rst} -.. list-table:: Overview of RL Models and Policies - :widths: 5 5 5 5 25 - :header-rows: 1 - :stub-columns: 1 - - * - Category - - Model or Policy? - - Input - - Output - - Description - * - `Constructive `_ - - Policy - - Instance - - Solution - - Policies trained to generate solutions from scratch. Can be categorized into AutoRegressive (AR) and Non-Autoregressive (NAR). - * - `Improvement `_ - - Policy - - Instance, Current Solution - - Improved Solution - - Policies trained to improve existing solutions iteratively, akin to local search algorithms. They focus on refining *existing* solutions rather than generating them from scratch. - * - `Transductive `_ - - Model - - Instance, (Policy) - - Solution, (Updated Policy) - - Updates policy parameters during online testing to improve solutions of a specific instance. -``` - - - - - - diff --git a/docs/content/api/models/common/constructive.md b/docs/content/api/models/common/constructive.md deleted file mode 100644 index 242c9f42..00000000 --- a/docs/content/api/models/common/constructive.md +++ /dev/null @@ -1,50 +0,0 @@ -Constructive NCO policies pre-train a policy to amortize the inference. "Constructive" means that a solution is created from scratch by the model. We can also categorize constructive NCO in two sub-categories depending on the role of encoder and decoder: - -## Autoregressive (AR) -Autoregressive approaches **use a learned decoder** that outputs log probabilities for the current solution. These approaches generate a solution step by step, similar to e.g. LLMs. They have an encoder-decoder structure. Some models may not have an encoder at all and just re-encode at each step. - -## NonAutoregressive (NAR) -The difference between AR and NAR approaches is that NAR **only an encoder is learnable** (they just encode in one shot) and generate for example a heatmap, which can then be decoded simply by using it as a probability distribution or by using some search method on top. - -Here is a general structure of a general constructive policy with an encoder-decoder structure: - -policy - - -where _embeddings_ transfer information from feature space to embedding space. - - - -## Constructive Policy Base Classes - -:::models.common.constructive.base - options: - show_root_heading: false - -## Autoregressive Policies Base Classes - -:::models.common.constructive.autoregressive.encoder - options: - show_root_heading: false - -:::models.common.constructive.autoregressive.decoder - options: - show_root_heading: false - -:::models.common.constructive.autoregressive.policy - options: - show_root_heading: false - -## Nonautoregressive Policies Base Classes - -:::models.common.constructive.nonautoregressive.encoder - options: - show_root_heading: false - -:::models.common.constructive.nonautoregressive.decoder - options: - show_root_heading: false - -:::models.common.constructive.nonautoregressive.policy - options: - show_root_heading: false \ No newline at end of file diff --git a/docs/content/api/models/common/improvement.md b/docs/content/api/models/common/improvement.md deleted file mode 100644 index 1a352f58..00000000 --- a/docs/content/api/models/common/improvement.md +++ /dev/null @@ -1 +0,0 @@ -These methods differ w.r.t. constructive NCO since they can obtain better solutions similarly to how local search algorithms work - they can improve the solutions over time. This is different from decoding strategies or similar in constructive methods since these policies are trained for performing improvement operations. diff --git a/docs/content/api/networks/base_policies.md b/docs/content/api/networks/base_policies.md new file mode 100644 index 00000000..0d895afb --- /dev/null +++ b/docs/content/api/networks/base_policies.md @@ -0,0 +1,42 @@ + +# Constructive Policies Base Classes + +:::models.common.constructive.base + options: + show_root_heading: false + +## Autoregressive Policies + +:::models.common.constructive.autoregressive.encoder + options: + show_root_heading: false + +:::models.common.constructive.autoregressive.decoder + options: + show_root_heading: false + +:::models.common.constructive.autoregressive.policy + options: + show_root_heading: false + +## Nonautoregressive Policies + +:::models.common.constructive.nonautoregressive.encoder + options: + show_root_heading: false + +:::models.common.constructive.nonautoregressive.decoder + options: + show_root_heading: false + +:::models.common.constructive.nonautoregressive.policy + options: + show_root_heading: false + + +# Improvement Policies (Base Classes) + + +:::models.common.improvement.base + options: + show_root_heading: false \ No newline at end of file diff --git a/docs/content/api/models/env_embeddings.md b/docs/content/api/networks/env_embeddings.md similarity index 100% rename from docs/content/api/models/env_embeddings.md rename to docs/content/api/networks/env_embeddings.md diff --git a/docs/content/api/networks/improvement_policies.md b/docs/content/api/networks/improvement_policies.md new file mode 100644 index 00000000..a4fdc075 --- /dev/null +++ b/docs/content/api/networks/improvement_policies.md @@ -0,0 +1,7 @@ +## Improvement Policies (Base Classes) + + + +:::models.common.improvement.base + options: + show_root_heading: false \ No newline at end of file diff --git a/docs/content/api/models/nn.md b/docs/content/api/networks/nn.md similarity index 100% rename from docs/content/api/models/nn.md rename to docs/content/api/networks/nn.md diff --git a/docs/content/api/algos/a2c.md b/docs/content/api/rl/a2c.md similarity index 100% rename from docs/content/api/algos/a2c.md rename to docs/content/api/rl/a2c.md diff --git a/docs/content/api/models/common/transductive.md b/docs/content/api/rl/base.md similarity index 74% rename from docs/content/api/models/common/transductive.md rename to docs/content/api/rl/base.md index 14e6101d..58ebf0aa 100644 --- a/docs/content/api/models/common/transductive.md +++ b/docs/content/api/rl/base.md @@ -1,3 +1,12 @@ +# RL4COLitModule + +The `RL4COLitModule` is a wrapper around PyTorch Lightning's `LightningModule` that provides additional functionality for RL algorithms. It is the parent class for all RL algorithms in the library. + +::: models.rl.common.base.RL4COLitModule + + +## Transductive Learning + Transductive models are learning algorithms that optimize on a specific instance. They improve solutions by updating policy parameters $\theta$, which means that we are running optimization (backprop) **at test time**. Transductive learning can be performed with different policies: for example EAS updates (a part of) AR policies parameters to obtain better solutions, but I guess there are ways (or papers out there I don't know of) that optimize at test time. @@ -5,8 +14,6 @@ Transductive models are learning algorithms that optimize on a specific instance You may refer to the definition of [inductive vs transductive RL](https://en.wikipedia.org/wiki/Transduction_(machine_learning)) . In inductive RL, we train to generalize to new instances. In transductive RL we train (or finetune) to solve only specific ones. -## Base Transductive Model - :::models.common.transductive.base options: show_root_heading: false \ No newline at end of file diff --git a/docs/content/api/algos/ppo.md b/docs/content/api/rl/ppo.md similarity index 100% rename from docs/content/api/algos/ppo.md rename to docs/content/api/rl/ppo.md diff --git a/docs/content/api/algos/reinforce.md b/docs/content/api/rl/reinforce.md similarity index 100% rename from docs/content/api/algos/reinforce.md rename to docs/content/api/rl/reinforce.md diff --git a/docs/content/api/zoo/constructive_ar.md b/docs/content/api/zoo/constructive_ar.md new file mode 100644 index 00000000..5391eeb1 --- /dev/null +++ b/docs/content/api/zoo/constructive_ar.md @@ -0,0 +1,113 @@ +# Constructive Autoregressive Methods + +## Attention Model (AM) + +:::models.zoo.am.model + options: + show_root_heading: false + +:::models.zoo.am.policy + options: + show_root_heading: false + +## Attention Model - PPO (AM-PPO) + +:::models.zoo.amppo.model + options: + show_root_heading: false + +## Heterogeneous Attention Model (HAM) + +:::models.zoo.ham.model + options: + show_root_heading: false + +:::models.zoo.ham.policy + options: + show_root_heading: false + +:::models.zoo.ham.encoder + options: + show_root_heading: false + +:::models.zoo.ham.attention + options: + show_root_heading: false + +## Matrix Encoding Network (MatNet) + +:::models.zoo.matnet.model + options: + show_root_heading: false + +:::models.zoo.matnet.policy + options: + show_root_heading: false + +:::models.zoo.matnet.encoder + options: + show_root_heading: false + +:::models.zoo.matnet.decoder + options: + show_root_heading: false + +## Multi-Decoder Attention Model (MDAM) + +:::models.zoo.mdam.model + options: + show_root_heading: false + +:::models.zoo.mdam.policy + options: + show_root_heading: false + +:::models.zoo.mdam.encoder + options: + show_root_heading: false + +:::models.zoo.mdam.decoder + options: + show_root_heading: false + +## POMO + +:::models.zoo.pomo.model + options: + show_root_heading: false + +## Pointer Network (PtrNet) + +:::models.zoo.ptrnet.model + options: + show_root_heading: false + +:::models.zoo.ptrnet.policy + options: + show_root_heading: false + +:::models.zoo.ptrnet.encoder + options: + show_root_heading: false + +:::models.zoo.ptrnet.decoder + options: + show_root_heading: false + +:::models.zoo.ptrnet.critic + options: + show_root_heading: false + +## SymNCO + +:::models.zoo.symnco.model + options: + show_root_heading: false + +:::models.zoo.symnco.policy + options: + show_root_heading: false + +:::models.zoo.symnco.losses + options: + show_root_heading: false diff --git a/docs/content/api/zoo/constructive_nar.md b/docs/content/api/zoo/constructive_nar.md new file mode 100644 index 00000000..3e1860ec --- /dev/null +++ b/docs/content/api/zoo/constructive_nar.md @@ -0,0 +1,27 @@ + +# Constructive NonAutoregressive + +## DeepACO + +:::models.zoo.deepaco.antsystem + options: + show_root_heading: false + +:::models.zoo.deepaco.model + options: + show_root_heading: false + +:::models.zoo.deepaco.policy + options: + show_root_heading: false + + +## NAR-GNN + +:::models.zoo.nargnn.policy + options: + show_root_heading: false + +:::models.zoo.nargnn.encoder + options: + show_root_heading: false diff --git a/docs/content/api/zoo/improvement.md b/docs/content/api/zoo/improvement.md new file mode 100644 index 00000000..8ca68c75 --- /dev/null +++ b/docs/content/api/zoo/improvement.md @@ -0,0 +1,55 @@ +# Improvement Methods + +These methods are trained to improve existing solutions iteratively, akin to local search algorithms. They focus on refining existing solutions rather than generating them from scratch. + +### DACT + +:::models.zoo.dact.encoder + options: + show_root_heading: false + +:::models.zoo.dact.decoder + options: + show_root_heading: false + +:::models.zoo.dact.policy + options: + show_root_heading: false + +:::models.zoo.dact.model + options: + show_root_heading: false + + +### N2S + +:::models.zoo.n2s.encoder + options: + show_root_heading: false + +:::models.zoo.n2s.decoder + options: + show_root_heading: false + +:::models.zoo.n2s.policy + options: + show_root_heading: false + +:::models.zoo.n2s.model + options: + show_root_heading: false + + +### NeuOpt + +:::models.zoo.neuopt.decoder + options: + show_root_heading: false + +:::models.zoo.neuopt.policy + options: + show_root_heading: false + +:::models.zoo.neuopt.model + options: + show_root_heading: false \ No newline at end of file diff --git a/docs/content/api/zoo/transductive.md b/docs/content/api/zoo/transductive.md new file mode 100644 index 00000000..1b7281ad --- /dev/null +++ b/docs/content/api/zoo/transductive.md @@ -0,0 +1,23 @@ +## Transductive Methods + +These methods update policy parameters during online testing to improve the solutions of a specific instance. + +### Active Search (AS) + +:::models.zoo.active_search.search + options: + show_root_heading: false + +### Efficent Active Search (EAS) + +:::models.zoo.eas.search + options: + show_root_heading: false + +:::models.zoo.eas.decoder + options: + show_root_heading: false + +:::models.zoo.eas.nn + options: + show_root_heading: false diff --git a/docs/content/general/ai4co.md b/docs/content/general/ai4co.md new file mode 100644 index 00000000..66db67a3 --- /dev/null +++ b/docs/content/general/ai4co.md @@ -0,0 +1,14 @@ +# AI4CO Community + +We invite you to join our AI4CO community, an open and inclusive research group in Artificial Intelligence (AI) for Combinatorial Optimization (CO)! + + +## Links +- [GitHub](https://github.com/ai4co) +- [Slack](https://bit.ly/ai4co-slack) +- [Website](https://ai4co.org) (coming soon!) + + +
    + AI4CO Logo +
    \ No newline at end of file diff --git a/docs/content/general/faq.md b/docs/content/general/faq.md index e16ceaca..c84cb0f6 100644 --- a/docs/content/general/faq.md +++ b/docs/content/general/faq.md @@ -1,4 +1,11 @@ # FAQ -You can submit your questions via GitHub Issues. If asked more than a few times, a question will have its answer added here. If you are looking for collaborations, we would be happy to hear from you on [Slack](https://join.slack.com/t/rl4co/shared_invite/zt-1ytz2c1v4-0IkQ8NQH4TRXIX8PrRmDhQ) 🚀 + + +You can submit your questions via [GitHub Issues](https://github.com/ai4co/rl4co/discussions) or [Discussions](https://github.com/ai4co/rl4co/discussions). You may search for your question in the existing issues or discussions before submitting a new one. + + +If ask more than a few times, we will add it here! + + diff --git a/docs/content/intro/environments.md b/docs/content/intro/environments.md new file mode 100644 index 00000000..4de3c555 --- /dev/null +++ b/docs/content/intro/environments.md @@ -0,0 +1,28 @@ +## Definition + +Given a CO problem instance $\mathbf{x}$, we formulate the solution-generating procedure as a Markov Decision Process (MDP) characterized by a tuple $(\mathcal{S}, \mathcal{A}, \mathcal{T}, \mathcal{R}, \gamma)$ as follows: + +- **State** $\mathcal{S}$ is the space of states that represent the given problem $\mathbf{x}$ and the current partial solution being updated in the MDP. +- **Action** $\mathcal{A}$ is the action space, which includes all feasible actions $a_t$ that can be taken at each step $t$. +- **State Transition** $\mathcal{T}$ is the deterministic state transition function $s_{t+1} = \mathcal{T}(s_t, a_t)$ that updates a state $s_t$ to the next state $s_{t+1}$. +- **Reward** $\mathcal{R}$ is the reward function $\mathcal{R}(s_t, a_t)$ representing the immediate reward received after taking action $a_t$ in state $s_t$. +- **Discount Factor** $\gamma \in [0, 1]$ determines the importance of future rewards. + +Since the state transition is deterministic, we represent the solution for a problem $\mathbf{x}$ as a sequence of $T$ actions $\mathbf{a} = (a_1, \ldots, a_T)$. Then the total return $\sum_{t=1}^T \mathcal{R}(s_t, a_t)$ translates to the negative cost function of the CO problem. + +## Implementation + +Environments in our library fully specify the CO problems and their logic. They are based on the `RL4COEnvBase` class that extends from the [`EnvBase`](https://pytorch.org/rl/stable/reference/generated/torchrl.envs.EnvBase.html#torchrl.envs.EnvBase) in TorchRL. + +Key features: +- A modular `generator` can be provided to the environment. +- The generator provides CO instances to the environment, and different generators can be used to generate different data distributions. +- Static instance data and dynamic variables, such as the current state $s_t$, current solution $\mathbf{a}^k$ for improvement environments, policy actions $a_t$, rewards, and additional information are passed in a *stateless* fashion in a [`TensorDict`](https://pytorch.org/tensordict/stable/reference/generated/tensordict.TensorDict.html?highlight=tensordict#tensordict.TensorDict), that we call `td`, through the environment `reset` and `step` functions. + +Our environment API contains several functions: +- `render` +- `check_solution_validity` +- `select_start_nodes` (i.e., for POMO-based optimization) +- Optional API such as `local_search` for solution improvement + +It's worth noting that our library enhances the efficiency of environments when compared to vanilla TorchRL, by overriding and optimizing some methods in TorchRL [`EnvBase`](https://pytorch.org/rl/stable/reference/generated/torchrl.envs.EnvBase.html#torchrl.envs.EnvBase). For instance, our new `step` method brings a decrease of up to 50% in latency and halves the memory impact by avoiding saving duplicate components in the stateless [`TensorDict`](https://pytorch.org/tensordict/stable/reference/generated/tensordict.TensorDict.html?highlight=tensordict#tensordict.TensorDict). \ No newline at end of file diff --git a/docs/content/intro/intro.md b/docs/content/intro/intro.md new file mode 100644 index 00000000..ea9f6dd2 --- /dev/null +++ b/docs/content/intro/intro.md @@ -0,0 +1,34 @@ +# Introduction + +RL4CO is an extensive Reinforcement Learning (RL) for Combinatorial Optimization (CO) benchmark. Our goal is to provide a unified framework for RL-based CO algorithms, and to facilitate reproducible research in this field, decoupling the science from the engineering. + + + + +## Motivation + +### Why NCO? +Neural Combinatorial Optimization (NCO) is a subfield of AI that aims to solve combinatorial optimization problems using neural networks. NCO has been successfully applied to a wide range of problems, such as the routing problems in logistics, the scheduling problems in manufacturing, and electronic design automation. The key idea behind NCO is to learn a policy that maps the input data to the optimal solution, without the need for hand-crafted heuristics or domain-specific knowledge. + + +### Why RL? +Reinforcement Learning (RL) is a machine learning paradigm that enables agents to learn how to make decisions by interacting with an environment. RL has been successfully applied to a wide range of problems, such as playing games, controlling robots, and optimizing complex systems. The key idea behind RL is to learn a policy that maps the state of the environment to the optimal action, by maximizing a reward signal. Importantly, optimal solutions are not required for training, as RL agents learn from the feedback they receive from the environment. + + + +## Contents + +We explore in other pages the following components: + +- [Environments](environments.md): Markov Decision Process (MDP) for CO problems and base classes for environments. These are based on [TorchRL](https://pytorch.org/rl/stable/index.html). + +- [Policies](policies.md): the neural networks that are used to solve CO problems and their base classes. These are based on [PyTorch](https://pytorch.org/). + +- [RL Algorithms](rl.md): (broadly: "models"), which are the processes used to train the policies and their base classes. These are based on [PyTorch Lightning](https://lightning.ai/docs/pytorch/stable/). + + +
    + RL4CO-Overview +
    + + diff --git a/docs/content/intro/policies.md b/docs/content/intro/policies.md new file mode 100644 index 00000000..9b5ea4ec --- /dev/null +++ b/docs/content/intro/policies.md @@ -0,0 +1,53 @@ +# Policies + +The policies can be categorized into constructive policies, which generate a solution from scratch, and improvement policies, which refine an existing solution. + +## Constructive policies + +A policy $\pi$ is used to construct a solution from scratch for a given problem instance $\mathbf{x}$. It can be further categorized into autoregressive (AR) and non-autoregressive (NAR) policies. + + +### Autoregressive (AR) policies +An AR policy is composed of an encoder $f$ that maps the instance $\mathbf{x}$ into an embedding space $\mathbf{h}=f(\mathbf{x})$ and by a decoder $g$ that iteratively determines a sequence of actions $\mathbf{a}$ as follows: + +$$ +a_t \sim g(a_t | a_{t-1}, ... ,a_0, s_t, \mathbf{h}), \quad +\pi(\mathbf{a}|\mathbf{x}) \triangleq \prod_{t=1}^{T-1} g(a_{t} | a_{t-1}, \ldots ,a_0, s_t, \mathbf{h}). +$$ + +### Non-autoregressive (NAR) policies +A NAR policy encodes a problem $\mathbf{x}$ into a heuristic $\mathcal{H} = f(\mathbf{x}) \in \mathbb{R}^{N}_{+}$, where $N$ is the number of possible assignments across all decision variables. Each number in $\mathcal{H}$ represents a (unnormalized) probability of a particular assignment. To obtain a solution $\mathbf{a}$ from $\mathcal{H}$, one can sample a sequence of assignments from $\mathcal{H}$ while dynamically masking infeasible assignments to meet problem-specific constraints. It can also guide a search process, e.g., Ant Colony Optimization, or be incorporated into hybrid frameworks. Here, the heuristic helps identify promising transitions and improve the efficiency of finding an optimal or near-optimal solution. + + +
    + +
    + + +## Improvement policies + +A policy can be used for improving an initial solution $\mathbf{a}^{0}=(a_{0}^{0},\ldots, a_{T-1}^{0})$ into another one potentially with higher quality, which can be formulated as follows: + +$$ +\mathbf{a}^k \sim g(\mathbf{a}^{0}, \mathbf{h}), \quad\pi(\mathbf{a}^K|\mathbf{a}^0,\mathbf{x}) \triangleq \prod_{k=1}^{K-1} g(\mathbf{a}^k | \mathbf{a}^{k-1}, ... ,\mathbf{a}^0, \mathbf{h}), +$$ + +where $\mathbf{a}^{k}$ is the $k$-th updated solution and $K$ is the budget for number of improvements. This process allows continuous refinement for a long time to enhance the solution quality. + + + + +## Implementation + +Policies in our library are subclasses of PyTorch's [`nn.Module`](https://pytorch.org/docs/stable/generated/torch.nn.Module.html) and contain the encoding-decoding logic and neural network parameters $\theta$. Different policies in the RL4CO "zoo" can inherit from metaclasses like `ConstructivePolicy` or `ImprovementPolicy`. We modularize components to process raw features into the embedding space via a parametrized function $\phi_\omega$, called *feature embeddings*. + +1. *Node Embeddings $\phi_n$*: transform $m_n$ node features of instances $\mathbf{x}$ from the feature space to the embedding space $h$, i.e., $[B, N, m_n] \rightarrow [B, N, h]$. +2. *Edge Embeddings $\phi_e$*: transform $m_e$ edge features of instances $\mathbf{x}$ from the feature space to the embedding space $h$, i.e., $[B, E, m_e] \rightarrow [B, E, h]$, where $E$ is the number of edges. +3. *Context Embeddings $\phi_c$*: capture contextual information by transforming $m_c$ context features from the current decoding step $s_t$ from the feature space to the embedding space $h$, i.e., $[B, m_c] \rightarrow [B, h]$, for nodes or edges. + +
    + +
    + + + Embeddings can be automatically selected by our library at runtime by simply passing the `env_name` to the policy. Additionally, we allow for granular control of any higher-level policy component independently, such as encoders and decoders. \ No newline at end of file diff --git a/docs/content/intro/rl.md b/docs/content/intro/rl.md new file mode 100644 index 00000000..1e4510cf --- /dev/null +++ b/docs/content/intro/rl.md @@ -0,0 +1,43 @@ +# RL Algorithms + + +## Definitions + +The RL objective is to learn a policy $\pi$ that maximizes the expected cumulative reward (or equivalently minimizes the cost) over the distribution of problem instances: + +$$ +\theta^{*} = \underset{\theta}{\text{argmax}} \, \mathbb{E}_{\mathbf{x} \sim P(\mathbf{x})} \left[ \mathbb{E}_{\pi(\mathbf{a}|\mathbf{x})} \left[ \sum_{t=0}^{T-1} \gamma^t \mathcal{R}(s_t, a_t) \right] \right], +$$ + +where $\theta$ is the set of parameters of $\pi$ and $P(\mathbf{x})$ is the distribution of problem instances. + +This equation can be solved using algorithms such as variations of REINFORCE, Advantage Actor-Critic (A2C) methods, or Proximal Policy Optimization (PPO). + +These algorithms are employed to train the policy network $\pi$, by transforming the maximization problem into a minimization problem involving a loss function, which is then optimized using gradient descent algorithms. For instance, the REINFORCE loss function gradient is given by: + +$$ +\nabla_{\theta} \mathcal{L}_a(\theta|\mathbf{x}) = \mathbb{E}_{\pi(\mathbf{a}|\mathbf{x})} \left[(R(\mathbf{a}, \mathbf{x}) - b(\mathbf{x})) \nabla_{\theta}\log \pi(\mathbf{a}|\mathbf{x})\right], +$$ + +where $b(\cdot)$ is a baseline function used to stabilize training and reduce gradient variance. + +We also distinguish between two types of RL (pre)training: + +1. *Inductive RL*: The focus is on learning patterns from the training dataset to generalize to new instances, thus amortizing the inference procedure. +2. *Transductive RL* (or test-time optimization): Optimizes parameters during testing on target instances. + +Typically, a policy $\pi$ is trained using inductive RL, followed by transductive RL for test-time optimization. + +### Implementation + +RL algorithms in our library define the process that takes the `Environment` with its problem instances and the `Policy` to optimize its parameters $\theta$. The parent class of algorithms is the `RL4COLitModule`, inheriting from PyTorch Lightning's [`pl.LightningModule`](https://lightning.ai/docs/pytorch/stable/common/lightning_module.html). This allows for granular support of various methods including the `[train, val, test]_step`, automatic logging with several logging services such as Wandb via `log_metrics`, automatic optimizer configuration via `configure_optimizers` and several useful callbacks for RL methods such as `on_train_epoch_end`. + +RL algorithms are additionally attached to an `RL4COTrainer`, a wrapper we made with additional optimizations around `pl.Trainer`. This module seamlessly supports features of modern training pipelines, including: + +- Logging +- Checkpoint management +- Mixed-precision training +- Various hardware acceleration supports (e.g., CPU, GPU, TPU, and Apple Silicon) +- Multi-device hardware accelerator in distributed settings + +For instance, using mixed-precision training significantly decreases training time without sacrificing much convergence and enables us to leverage recent routines, e.g., FlashAttention. \ No newline at end of file From 1a9925d7cd70e80cf2f734595995717c6ff38d9f Mon Sep 17 00:00:00 2001 From: Federico Berto Date: Thu, 25 Jul 2024 00:53:01 +0900 Subject: [PATCH 096/102] [Docs] overhaul --- mkdocs.yml | 39 +++++++++++++++++++++++---------------- 1 file changed, 23 insertions(+), 16 deletions(-) diff --git a/mkdocs.yml b/mkdocs.yml index e2562c13..aef7c130 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -4,7 +4,7 @@ repo_name: ai4co/rl4co repo_url: https://github.com/ai4co/rl4co/ edit_uri: edit/main/docs site_description: Official documentation for RL4CO -copyright: Made with ❤️ by AI4CO contributors +copyright: Made with ❤️ by AI4CO contributors docs_dir: . nav: @@ -13,7 +13,11 @@ nav: - Installation: docs/content/start/installation.md - Quick Start: examples/1-quickstart.ipynb - Training with Hydra: docs/content/start/hydra.md - - NCO Methods: docs/content/api/models/common/__init__ + - Overview: + - docs/content/intro/intro.md + - docs/content/intro/environments.md + - docs/content/intro/policies.md + - docs/content/intro/rl.md - Tutorials: - Training a Model: examples/2-full-training.ipynb - New Environment: examples/3-creating-new-env-model.ipynb @@ -21,24 +25,26 @@ nav: - Transductive Methods: examples/modeling/2-transductive-methods.ipynb - Encoder Customization: examples/modeling/3-change-encoder.ipynb - Hydra Configuration: examples/advanced/1-hydra-config.ipynb - - API Docs: - - RL Algorithms: - - Base Algorithms: docs/content/api/algos/base.md - - Reinforce: docs/content/api/algos/reinforce.md - - PPO: docs/content/api/algos/ppo.md - - A2C: docs/content/api/algos/a2c.md + - API Reference: - Environments: - - Basic Environments: docs/content/api/envs/base.md - - EDA Problems: docs/content/api/envs/eda.md + - Base Classes: docs/content/api/envs/base.md - Routing Problems: docs/content/api/envs/routing.md - Scheduling Problems: docs/content/api/envs/scheduling.md + - EDA Problems: docs/content/api/envs/eda.md - Networks: - - Neural Network Modules: docs/content/api/models/nn.md - - Environment Embeddings: docs/content/api/models/env_embeddings.md - - Base NCO Methods: - - Constructive Policies: docs/content/api/models/common/constructive.md - - Improvement Policies: docs/content/api/models/common/improvement.md - - Transductive Models: docs/content/api/models/common/transductive.md + - Policy Base Classes: docs/content/api/networks/base_policies.md + - Neural Network Modules: docs/content/api/networks/nn.md + - Environment Embeddings: docs/content/api/networks/env_embeddings.md + - RL Algorithms: + - Base Classes: docs/content/api/rl/base.md + - Reinforce: docs/content/api/rl/reinforce.md + - PPO: docs/content/api/rl/ppo.md + - A2C: docs/content/api/rl/a2c.md + - Zoo: + - Constructive AR Methods: docs/content/api/zoo/constructive_ar.md + - Constructive NAR Methods: docs/content/api/zoo/constructive_nar.md + - Improvement Methods: docs/content/api/zoo/improvement.md + - Transductive Methods: docs/content/api/zoo/transductive.md - Additional APIs: - Train and Evaluation: docs/content/api/tasks.md - Decoding Strategies: docs/content/api/decoding.md @@ -46,6 +52,7 @@ nav: - About: - Contributing to RL4CO: docs/content/general/contribute.md - FAQ: docs/content/general/faq.md + - Join AI4CO: docs/content/general/ai4co.md extra: social: From 229e61e030a3f7b13b366eaea86e6443571ebc87 Mon Sep 17 00:00:00 2001 From: Federico Berto Date: Thu, 25 Jul 2024 01:02:34 +0900 Subject: [PATCH 097/102] [Docs] overhaul tutorials --- mkdocs.yml | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/mkdocs.yml b/mkdocs.yml index aef7c130..d3e064bb 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -19,12 +19,23 @@ nav: - docs/content/intro/policies.md - docs/content/intro/rl.md - Tutorials: - - Training a Model: examples/2-full-training.ipynb - - New Environment: examples/3-creating-new-env-model.ipynb - - Decoding Strategies: examples/modeling/1-decoding-strategies.ipynb - - Transductive Methods: examples/modeling/2-transductive-methods.ipynb - - Encoder Customization: examples/modeling/3-change-encoder.ipynb - - Hydra Configuration: examples/advanced/1-hydra-config.ipynb + - Main: + - Quickstart: examples/1-quickstart.ipynb + - Training a Model: examples/2-full-training.ipynb + - Solving New Problems: examples/3-creating-new-env-model.ipynb + - Modeling: + - Decoding Strategies: examples/modeling/1-decoding-strategies.ipynb + - Transductive Methods: examples/modeling/2-transductive-methods.ipynb + - Encoder Customization: examples/modeling/3-change-encoder.ipynb + - Advanced: + - Hydra Configuration: examples/advanced/1-hydra-config.ipynb + - Local Search: examples/advanced/3-local-search.ipynb + - Routing: + - Multi-Task VRP: examples/other/1-mtvrp.ipynb + - TSPLib: examples/datasets/1-test-on-tsplib.ipynb + - CVRPLib: examples/datasets/2-test-on-cvrplib.ipynb + - Scheduling: + - Flexible Job Shop Scheduling: examples/other/2-scheduling.ipynb - API Reference: - Environments: - Base Classes: docs/content/api/envs/base.md From 81e54596810e0f097871c4e776207e29104e6458 Mon Sep 17 00:00:00 2001 From: Federico Berto Date: Thu, 25 Jul 2024 01:35:00 +0900 Subject: [PATCH 098/102] [Docs] ReadTheDocs config update --- .readthedocs.yaml | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/.readthedocs.yaml b/.readthedocs.yaml index 08445568..f3f4df9d 100644 --- a/.readthedocs.yaml +++ b/.readthedocs.yaml @@ -1,22 +1,28 @@ -# Read the Docs configuration file for Sphinx projects +# Read the Docs configuration file for MkDocs projects # See https://docs.readthedocs.io/en/stable/config-file/v2.html for details # Required version: 2 -# Set the OS, Python version and other tools you might need +# Set the OS, Python version, and other tools you might need build: os: ubuntu-lts-latest tools: python: "3.11" -# Build documentation in the "docs/" directory with Sphinx -sphinx: - configuration: docs/conf.py +# Build documentation with MkDocs +mkdocs: + configuration: mkdocs.yml # Optional but recommended, declare the Python requirements required # to build your documentation # See https://docs.readthedocs.io/en/stable/guides/reproducible-builds.html python: - install: - - requirements: docs/requirements.txt \ No newline at end of file + install: + - method: pip + path: . + extra_requirements: + - dev + - graph + - routing + - docs From f897f680fc9455976a2e85e50343759841e4bc94 Mon Sep 17 00:00:00 2001 From: Federico Berto Date: Thu, 1 Aug 2024 16:27:34 +0900 Subject: [PATCH 099/102] [Feat] compatibility with tensordict>=0.5.0 --- rl4co/data/dataset.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/rl4co/data/dataset.py b/rl4co/data/dataset.py index fa876757..f3519ada 100644 --- a/rl4co/data/dataset.py +++ b/rl4co/data/dataset.py @@ -1,10 +1,18 @@ from typing import Union +import tensordict import torch +from packaging import version from tensordict.tensordict import TensorDict from torch.utils.data import Dataset +# Checks were removed in tensordict 0.5.0, so we should not pass the kwargs +if version.parse(tensordict.__version__) <= version.parse("0.4.0"): + td_kwargs = {"_run_checks": False} +else: + td_kwargs = {} + class FastTdDataset(Dataset): """ @@ -63,7 +71,7 @@ def collate_fn(batch: Union[dict, TensorDict]): return TensorDict( {key: torch.stack([b[key] for b in batch]) for key in batch[0].keys()}, batch_size=torch.Size([len(batch)]), - _run_checks=False, + **td_kwargs, ) @@ -113,7 +121,7 @@ def __getitems__(self, index): return TensorDict( {key: item[index] for key, item in self.data.items()}, batch_size=torch.Size([len(index)]), - _run_checks=False, # faster this way + **td_kwargs, ) def add_key(self, key, value): From 5b3bc16868862ab958121e1e63cd2f89270427cc Mon Sep 17 00:00:00 2001 From: Federico Berto Date: Thu, 1 Aug 2024 16:34:40 +0900 Subject: [PATCH 100/102] [Version] add Python 3.12 --- .github/workflows/tests.yml | 2 +- pyproject.toml | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 972bc9dc..cdc8734d 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -11,7 +11,7 @@ jobs: # Apple Silicon runner: https://github.com/actions/runner-images/issues/9254 # Note we disable MPS for training os: [ubuntu-latest, macos-latest, windows-latest] - python-version: ['3.9', '3.10', '3.11'] + python-version: ['3.9', '3.10', '3.11', '3.12'] defaults: run: shell: bash diff --git a/pyproject.toml b/pyproject.toml index 5f99c7e5..39c55371 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "rl4co" -version = "0.5.0.dev1" +version = "0.5.0.dev2" description = "RL4CO: an Extensive Reinforcement Learning for Combinatorial Optimization Benchmark" authors = [ "Federico Berto ", @@ -49,6 +49,7 @@ classifiers = [ "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", "License :: OSI Approved :: MIT License", "Development Status :: 4 - Beta", "Intended Audience :: Developers", From f6030f330da7f01b6599f8e4509a1821c0c156d5 Mon Sep 17 00:00:00 2001 From: Federico Berto Date: Thu, 1 Aug 2024 19:15:31 +0900 Subject: [PATCH 101/102] [BugFix] action return --- rl4co/tasks/eval.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/rl4co/tasks/eval.py b/rl4co/tasks/eval.py index 10dda554..7580d374 100644 --- a/rl4co/tasks/eval.py +++ b/rl4co/tasks/eval.py @@ -51,17 +51,17 @@ def __call__(self, policy, dataloader, **kwargs): actions_list.append(actions) rewards = torch.cat(rewards_list) - + # Padding: pad actions to the same length with zeros - max_length = max(action.size(-1) for action in actions) + max_length = max(action.size(-1) for action in actions_list) actions = torch.cat( [ torch.nn.functional.pad(action, (0, max_length - action.size(-1))) - for action in actions + for action in actions_list ], 0, ) - + inference_time = time.time() - start tqdm.write(f"Mean reward for {self.name}: {rewards.mean():.4f}") From 80d4265ee0ac8ee31643aaf0b76095be8887b703 Mon Sep 17 00:00:00 2001 From: Federico Berto Date: Thu, 1 Aug 2024 19:29:28 +0900 Subject: [PATCH 102/102] [Workflow] automatic doc deployment --- .github/workflows/deploy-docs.yaml | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 .github/workflows/deploy-docs.yaml diff --git a/.github/workflows/deploy-docs.yaml b/.github/workflows/deploy-docs.yaml new file mode 100644 index 00000000..2d598682 --- /dev/null +++ b/.github/workflows/deploy-docs.yaml @@ -0,0 +1,29 @@ +name: Deploy MkDocs to GitHub Pages + +on: + push: + branches: + - main + +permissions: + contents: write + +jobs: + deploy: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: '3.12' + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install -e ".[dev,graph,routing,docs]" + + - name: Deploy MkDocs + run: | + mkdocs gh-deploy --force \ No newline at end of file

    P?eD9c(T?l`ned_{6u-G$wZDMBX^eS3iJ}vX%!u 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 z z#0(1Fa52iJAE$l)*165aHFU~{>fMQ1N-j%}l=RJ*Am_}(nm${A({SC z=$9K0;KK{3MLG1*30k)hiQT;sGd0m7iW~M5XUKH_vOCz|)X(kzwz9%}t3bRb+$Y0) z_pNmJ?cYj7W)`m}?@Q*ljq(+in39oi1O?K)Kt9MIWY$jNV|!MR9BH&R3UJ$}A06HM zA|C-}pff{H`CZtippjbpAd9@�BIW&WTe6p2oODl9O(q!|C%WCPZF;VZC0LDLyYe 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 Date: Mon, 22 Jul 2024 23:34:23 +0900 Subject: [PATCH 074/102] [Docs] update README for compatibility with MkDocs --- README.md | 38 ++++++++++++++++++++++++++++---------- 1 file changed, 28 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 550a19ff..b915728a 100644 --- a/README.md +++ b/README.md @@ -1,23 +1,38 @@